pax_global_header00006660000000000000000000000064132363460700014516gustar00rootroot0000000000000052 comment=7619b5c86f107eec0e60d3c9b0d28649b01ff5cf sdoc-1.0.0/000077500000000000000000000000001323634607000124445ustar00rootroot00000000000000sdoc-1.0.0/.gitignore000066400000000000000000000001111323634607000144250ustar00rootroot00000000000000*.gem .bundle pkg doc /test.rb Gemfile.lock /.rake_tasks~ /*.gem /rails/ sdoc-1.0.0/.travis.yml000066400000000000000000000010361323634607000145550ustar00rootroot00000000000000language: ruby cache: bundler before_install: - gem install bundler rvm: - 1.9.3 - 2.0.0 - 2.1.0 - 2.2.9 - 2.3.6 - 2.4.2 - 2.5.0 - ruby-head - jruby-head matrix: allow_failures: - env: rdoc=master - rvm: jruby-head include: - { rvm: 2.2.9, env: rdoc=master } - { rvm: 2.3.6, env: rdoc=master } - { rvm: 2.4.2, env: rdoc=master } - { rvm: 2.5.0, env: rdoc=master } - { rvm: ruby-head, env: rdoc=master } - { rvm: jruby-head, env: rdoc=master } notifications: email: - mail@zzak.io sdoc-1.0.0/CHANGELOG.md000066400000000000000000000017271323634607000142640ustar00rootroot000000000000000.4.2 ===== [Compare v0.4.1...v0.4.2](https://github.com/voloko/sdoc/compare/v0.4.1...v0.4.2) 0.4.1 ===== [Compare v0.4.0...v0.4.1](https://github.com/voloko/sdoc/compare/v0.4.0...v0.4.1) Breaking Changes ---------------- None. Enhancements ------------ - 65e46cb2 Unordered lists inside ordered ones render ordered - SDoc::VERSION - 2fe1a7b8 Move version to separate file, remove require_relative from gemspec - 97e1eda8 Push ./lib to $LOAD_PATH for require SDoc::VERSION - ad0a7e1e Initialize SDoc namespace in main file Bug Fixes --------- - 926ff732 Remove redundany < 5.0 from rdoc dependency specification - db99e402 Remove code tags styling under pre elements - a1d7e211 Follow up of #68 - bffc93ef Relax JSON dependency to ~> 1.7, >= 1.7.7 - 404dceb9 GH-72: Extra `

` tags appear in results snippet 0.4.0 ===== [Compare v0.3.20...v0.4.0](https://github.com/voloko/sdoc/compare/v0.3.20...v0.4.0) No friendly log for this version yet, but PRs are welcome! sdoc-1.0.0/Gemfile000066400000000000000000000002311323634607000137330ustar00rootroot00000000000000source "https://rubygems.org" gemspec gem "rake", "< 11" gem "minitest" gem "hoe" if ENV["rdoc"] == "master" gem "rdoc", :github => "ruby/rdoc" end sdoc-1.0.0/LICENSE000066400000000000000000000120461323634607000134540ustar00rootroot00000000000000Copyright (c) 2014 Vladimir Kolesnikov, and Nathan Broadbent Copyright (c) 2014-2017 Zachary Scott Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Darkfish RDoc HTML Generator Copyright (c) 2007, 2008, Michael Granger. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author/s, nor the names of the project's contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. RDoc is copyrighted free software. You can redistribute it and/or modify it under either the terms of the GPL version 2 (see the file GPL), or the conditions below: 1. You may make and give away verbatim copies of the source form of the software without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may modify your copy of the software in any way, provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or by allowing the author to include your modifications in the software. b) use the modified software only within your corporation or organization. c) give non-standard binaries non-standard names, with instructions on where to get the original software distribution. d) make other distribution arrangements with the author. 3. You may distribute the software in object code or binary form, provided that you do at least ONE of the following: a) distribute the binaries and library files of the software, together with instructions (in the manual page or equivalent) on where to get the original distribution. b) accompany the distribution with the machine-readable source of the software. c) give non-standard binaries non-standard names, with instructions on where to get the original software distribution. d) make other distribution arrangements with the author. 4. You may modify and include the part of the software into any other software (possibly commercial). But some files in the distribution are not written by the author, so that they are not under these terms. For the list of those files and their copying conditions, see the file LEGAL. 5. The scripts and library files supplied as input to or produced as output from the software do not automatically fall under the copyright of the software, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this software. 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. sdoc-1.0.0/README.md000066400000000000000000000063431323634607000137310ustar00rootroot00000000000000# SDoc [![Build Status](https://travis-ci.org/zzak/sdoc.png?branch=master)](https://travis-ci.org/zzak/sdoc) **Powering http://api.rubyonrails.org/** ### What is sdoc? SDoc is an HTML template built on top of the RDoc documentation generator for Ruby code. Provided are two command-line tools you get when you installing the gem: * `sdoc` - command line tool to run rdoc with `generator=shtml` (searchable HTML) * `sdoc-merge` - command line tool to merge multiple sdoc folders into a single documentation site ### Getting Started ```bash # Install the gem gem install sdoc # Generate documentation for 'projectdir' sdoc projectdir ``` ### sdoc `sdoc` is simply a wrapper for the `rdoc` command line tool. See `sdoc --help` for more details. When using the `sdoc` command, `--fmt` is set to `shtml` by default. The default template (or `-T` option) is set to `shtml`, but you can also use the `direct` template when generating documentation. Example: ```bash sdoc -o doc/rails -T direct rails ``` ### sdoc-merge `sdoc-merge` is useful tool for combining multiple projects documentation into one HTML website. See `sdoc-merge --help` for more details. ``` Usage: sdoc-merge [options] directories -n, --names [NAMES] Names of merged repositories. Comma separated -o, --op [DIRECTORY] Set the output directory -t, --title [TITLE] Set the title of merged file ``` Example: ```bash sdoc-merge --title "Ruby v1.9, Rails v2.3.2.1" --op merged --names "Ruby,Rails" ruby-v1.9 rails-v2.3.2.1 ``` ### Rake Task If you want, you can setup a task in your `Rakefile` for generating your project's documentation via the `rake rdoc` command. ```ruby # Rakefile require 'sdoc' # and use your RDoc task the same way you used it before require 'rdoc/task' # ensure this file is also required in order to use `RDoc::Task` RDoc::Task.new do |rdoc| rdoc.rdoc_dir = 'doc/rdoc' # name of output directory rdoc.generator = 'sdoc' # explictly set the sdoc generator rdoc.template = 'rails' # template used on api.rubyonrails.org end ``` NOTE: If you don't set `template` the default "sdoc" template is chosen, with a lighter color scheme. Now you can execute this command with `rake rdoc`, to compile the documentation for the current project directory. Alternatively you can pass this command a path to the project you wish to compile: `rake rdoc path/to/project`. ### RDoc As mentioned before, SDoc is built on top of the RDoc project. If you notice any bugs in the output of your documentation, it may be RDoc's fault and should be [reported upstream](https://github.com/rdoc/rdoc/issues/new). An example of an SDoc bug would be: * Exception is raised when merging project documentation (ala `sdoc-merge`) * Error or warning in JavaScript or HTML found in your browser * Generation fails with some exception (likely due to incompatibility with RDoc) Please feel free to still report issues here for both projects, especially if you aren't sure. As maintainer of both projects, I'll see if I can identify the root of the cause :bow: :bow: :bow: ### Who? * Vladimir Kolesnikov ([voloko](https://github.com/voloko)) * Nathan Broadbent ([ndbroadbent](https://github.com/ndbroadbent)) * Zachary Scott ([zzak](https://github.com/zzak)) sdoc-1.0.0/Rakefile000066400000000000000000000010711323634607000141100ustar00rootroot00000000000000require 'bundler' Bundler::GemHelper.install_tasks require 'rake/testtask' Rake::TestTask.new do |t| t.pattern = "spec/*_spec.rb" t.libs << "spec" end task :default => :test task :spec => :test require 'sdoc' require 'rdoc/task' rails = File.expand_path "rails" directory rails do sh "git clone --depth=1 https://github.com/rails/rails" end namespace :test do task :rails => rails RDoc::Task.new(:rails) do |rdoc| rdoc.rdoc_dir = 'doc/rails' rdoc.generator = 'sdoc' rdoc.template = 'rails' rdoc.rdoc_files.include("rails/") end end sdoc-1.0.0/bin/000077500000000000000000000000001323634607000132145ustar00rootroot00000000000000sdoc-1.0.0/bin/sdoc000077500000000000000000000011221323634607000140660ustar00rootroot00000000000000#!/usr/bin/env ruby -KU require 'sdoc' begin ARGV.unshift('--format=sdoc') if ARGV.grep(/\A(-f|--fmt|--format|-r|-R|--ri|--ri-site)\b/).empty? r = RDoc::RDoc.new r.document ARGV rescue SystemExit raise rescue Exception => e if $DEBUG_RDOC then $stderr.puts e.message $stderr.puts "#{e.backtrace.join "\n\t"}" $stderr.puts elsif Interrupt === e then $stderr.puts $stderr.puts 'Interrupted' else $stderr.puts "uh-oh! RDoc had a problem:" $stderr.puts e.message $stderr.puts $stderr.puts "run with --debug for full backtrace" end exit 1 end sdoc-1.0.0/bin/sdoc-merge000077500000000000000000000007611323634607000151730ustar00rootroot00000000000000#!/usr/bin/env ruby -KU require File.dirname(__FILE__) + '/../lib/sdoc' # add extensions require 'sdoc/merge' begin m = SDoc::Merge.new m.merge(ARGV) rescue SystemExit raise rescue Exception => e if $DEBUG_RDOC then $stderr.puts e.message $stderr.puts "#{e.backtrace.join "\n\t"}" $stderr.puts elsif Interrupt === e then $stderr.puts $stderr.puts 'Interrupted' else $stderr.puts "uh-oh! SDoc merge had a problem:" $stderr.puts e.message end exit 1 end sdoc-1.0.0/lib/000077500000000000000000000000001323634607000132125ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/000077500000000000000000000000001323634607000141415ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/discover.rb000066400000000000000000000001571323634607000163070ustar00rootroot00000000000000begin gem 'rdoc', '~> 5.0' require File.join(File.dirname(__FILE__), '/../sdoc') rescue Gem::LoadError end sdoc-1.0.0/lib/rdoc/generator/000077500000000000000000000000001323634607000161275ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/000077500000000000000000000000001323634607000177425ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/merge/000077500000000000000000000000001323634607000210415ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/merge/index.rhtml000066400000000000000000000005141323634607000232200ustar00rootroot00000000000000 <%= @title %> sdoc-1.0.0/lib/rdoc/generator/template/rails/000077500000000000000000000000001323634607000210545ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/rails/_context.rhtml000066400000000000000000000147641323634607000237630ustar00rootroot00000000000000

<% unless (description = context.description).empty? %>
<%= description %>
<% end %> <% unless context.requires.empty? %>
Required Files
<% end %> <% sections = context.sections.select { |s| s.title }.sort_by{ |s| s.title.to_s } %> <% unless sections.empty? then %>
Sections
<% end %> <% unless context.classes_and_modules.empty? %>
Namespace
<% end %> <% unless context.method_list.empty? %>
Methods
<% each_letter_group(context.method_list) do |group| %>
<%= group[:name] %>
    <% group[:methods].each_with_index do |method, i| %> <% comma = group[:methods].size == i+1 ? '' : ',' %>
  • <%= h method.name %><%= comma %>
  • <% end %>
<% end %>
<% end %> <% unless context.includes.empty? %>
Included Modules
<% end %> <% context.each_section do |section, constants, attributes| %> <% if section.title then %>
<%= h section.title %>
<% end %> <% if section.comment then %>
<%= section.description %>
<% end %> <% unless constants.empty? %>
Constants
<% constants.each do |const| %> <% if const.comment %> <% end %> <% end %>
<%= h const.name %> = <%= h const.value %>
  <%= const.description.strip %>
<% end %> <% unless attributes.empty? %>
Attributes
<% attributes.each do |attrib| %> <% end %>
[<%= attrib.rw %>] <%= h attrib.name %> <%= attrib.description.strip %>
<% end %> <% context.methods_by_type(section).each do |type, visibilities| next if visibilities.empty? visibilities.each do |visibility, methods| next if methods.empty? %>
<%= type.capitalize %> <%= visibility.to_s.capitalize %> methods
<% methods.each do |method| %>
<% if method.call_seq %> <%= method.call_seq.gsub(/->/, '→').gsub(/\n(.)/, '
\1') %>
<% else %> <%= h method.name %><%= h method.params %> <% end %> " name="<%= method.aref %>" class="permalink">Link
<% if method.comment %>
<%= method.description.strip %>
<% end %> <% unless method.aliases.empty? %>
Also aliased as: <%= method.aliases.map do |aka| if aka.parent then # HACK lib/rexml/encodings %{#{h aka.name}} else h aka.name end end.join ", " %>
<% end %> <% if method.is_alias_for then %> <% end %> <% if method.token_stream %> <% markup = method.markup_code %>
<% # generate github link github = if options.github if markup =~ /File\s(\S+), line (\d+)/ path = $1 line = $2.to_i end path && github_url(path) else false end %>
<%= markup %>
<% end %>
<% end %><%# methods.each %> <% end %><%# visibilities.each %> <% end %><%# context.methods_by_type %> <% end %><%# context.each_section %>
sdoc-1.0.0/lib/rdoc/generator/template/rails/_head.rhtml000066400000000000000000000011501323634607000231610ustar00rootroot00000000000000" type="text/css" media="screen" /> " type="text/css" media="screen" /> " type="text/css" media="screen" /> sdoc-1.0.0/lib/rdoc/generator/template/rails/class.rhtml000066400000000000000000000036201323634607000232320ustar00rootroot00000000000000 <%= h klass.full_name %> <%= include_template '_head.rhtml', {:rel_prefix => rel_prefix} %> <% unless (description = klass.description).empty? %> <% human_desc = truncate(strip_tags(description.gsub("\n", " ").strip)) %> <% end %> <% unless klass.method_list.empty? %> "> <% end %>
<%= include_template '_context.rhtml', {:context => klass, :rel_prefix => rel_prefix} %>
sdoc-1.0.0/lib/rdoc/generator/template/rails/file.rhtml000066400000000000000000000021161323634607000230430ustar00rootroot00000000000000 <%= h file.name %> <%= include_template '_head.rhtml', {:rel_prefix => rel_prefix} %>
<%= include_template '_context.rhtml', {:context => file, :rel_prefix => rel_prefix} %>
sdoc-1.0.0/lib/rdoc/generator/template/rails/index.rhtml000066400000000000000000000005511323634607000232340ustar00rootroot00000000000000 <%= @options.title %> sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/000077500000000000000000000000001323634607000230665ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/apple-touch-icon.png000066400000000000000000002506571323634607000267620ustar00rootroot00000000000000PNG  IHDRxtEXtSoftwareAdobe ImageReadyqe<QQIDATx}EorMBB =tDFy6TP|]Ay ؞qgr|è 8T:Wxɱ}pD9D\hPYV?ae+SsS%JL~$X&7rt"rbUcY^~@U_p2:z I6O5M z< q?m!, :1 uPeu7'@7\<٨=nx/f5I"PCCW[}lg%JґX&ױ2Vzt4a8Ȁ|Sib|/qps x1禂sg<͕ :ݍ^b 2D@D:-QV WV u'l㮦gr[+XYr+*DxFVA#4 ,9 !4=Ml] n\fvqDnt1ˋYKj"dG[` 9Eۖ"w7ϴˇ`jXY-(QDI,eU6sOSʁ0!/fZ8[-c-} Ao2cXRuE5kHn@"pڡVfX"\'I5.u]mV-hʱ!&4ZSbخSB0%JX&X͚`OMep _lip[ Z"4v@=m v=>D79^f2:8n! r/zVlwV@%Q!Q֯f[#[(#. <)#<S8 B @e?ñ98w" ǰB;&!Vr_C+jHw:+-J:#$>>feGPDg sg!":H(1"P!?GP]bD7'm 'Ii! !"$,8Z1KV~᫹(M|ԏXy [{>L?NU;7[G\f|Qmw$H̢yڤ$jO Bth+\$a&m M1HJЉ~>b\ `e[ǔ@%m)9Qo`HXGG@''`etb |ӇP޻x;P> ޹ ; Z"~lafrmyC0^n(aơɇ$rx 3\n Cpoc-;Kgk{A;*}'w :JLwg6aQ(-?.%;Y*+kPDI;LM;bM(lXo-؆ЇXH>>cIկHeg3s#3o2ܒy܉y,ǜVt}r9A&y<80" v݆2"JϤH˞?'I˝wI7+ ~'PDI bXN\/ny'ckQؼu \/X/[)ۨf\ ?Ty?~qFFQ޽7S3jL<:t>xtX[LJ~6vB(TdfD=#zK>9O< މEy1z\g p-A$$@"Zd@ӕEvtsz>,ᄢoISVE,;sZb8ܯrnT#DAqTn=g@*X'ryݏ)Ė(`?veۄY})*| 4"JD=ڠM `?.?p}M;zܚf52ꆒTlΰ1x!zBy ]Voa 0 /A&< 8vy a.#|SpASlHӲ/8Rߓ!e@_ŀ-\.@(iO&GrPg@7aa?1zmo[@u03?:%AkuWn{;wXC*cd#-n=:N8 }{;^d/@~R;;Qڽds^Û׈0^ƥ`$`f$dET6}_hj^9{ً5~\ uCn@&&h:.Eh8p XϳeAfAeP}k'Ve -bj#&q GiHxd2k)K>+A[.B߹!sB3};!+ƒLzA{1t~~AV`~R 3Ǥ^B(tpM>ZHiZ_$8uXŎj%R.%J$={=r?0t_14u &={- ucHZ$U?NԐPP6Fhɼ⮝(e1}1ߗm~x HI`\l$L70@~s$@wA87@HGKr>jnor(QDVzmaM7 SN z[6C+t0ggM"T`DחhC}`; <;wF{p8)IvFc~hV?^Gt)GHH:G̓O1 >fs&*$g {hK7&3>Jh!(Q:; M| O3a/1|͘|aehd=$Z F۠Yҩ=ڿ貨$W>C</b? TĊ(Q*2\[0?a;fL]Y@cHPG~0wݶ%iڜ3QѮޅ{:V>ʤ"J)xXy)DzXB嬬S@֗Xy+oe? (1fM(IuS:XR rx])6;Gz:P$vB,џZS*h]g!;L0ƧI65i?H~E0A@]ߏ/uS(@ Zȱ^ OJ$h9d, QdEĈj $8nPDĩP$r +ogYhGiVlW0pVž 3'p~HR4 ` 4p fZ4 u1~ۿ3Ɓ_S<|QܽҸ+„>8M0z dD0vtb0$ j$_6 :M K7I5qo:4%Jˑ6s?&ͧݯb1E&d$5{{* wܸ`1Cs8Bw'ߏ<>u9}#4I/Z' 0ڥ@2YLc|lzlnV^>+_PϝsGI#FB&)ilǦ&RD,"з@4g{*sA}Hsc`hBdXtkqvYOϧ曙FXBfOOKn'iK@˹DWWNwO ?;CYLl SyU&0cv^,Y`KhsOO/kج"yh? L|mzv ɬ%Hg&+a yE{A}?)}h,z#HԳTT2 =z6#BsҠ#͞k N# @G0oDPs1̳,+ yk2=3h.;\[` SS4S@2A$ι!(ćUfyWHI=EYV&~Pخ[[__}O*!D2 6DZB7CW]U( {8w {СRHiw݆Kfp5 k!π~lv >SCCL, g^?LԴp߿_D|?<|HG@탊(5e>Oӗ Al7ԖкXߞ`8FDD . 99 1@G XOˮ~_Fco p @`ubb.si?rهsŀE`w"8@Ddű~㮀PD,|+'XǼw?Ư}uxZ8I-6VER: jT4?'ks}hJdX8Fnu|Oߏ?MO(pNǔ?Tc Ĵ@[/"M WJVd&{+&3k, c~E9|Z}LM_~d7+,VsݰrlL>,JfyƖ:M*6}(6x~5XP(6w!]% #*O@#Fzt=/9'? %a𖿡qu3tt(1srLc ϵ>#_g/pR8#/E\v}gX TҮ3{>$ ?0 z#]?NO]ۨG 嫏k-!Lc66ӒS˚_-f'c-7^]{L'' &58 O΍ T`ZdCǶ?zYTQ@L>)X90Fu_: ?8<h$ l A@$ sA-4;4|g c0CCEsK@N3: 7_B킜4"2Uim`vR@ɬVzlowا>T2ߛ,;@VKrQ;@ʹ $ ;@` ap0P;R{>Ta9`tQİ։A, ks2 G\DJ+!gB$;@/ b"t~QC}d*""JU{z+_IM0mͻ߂o>>f&!Y8S㬙 Q? Hkl;@D^*tc݌OK/ƙ?N#0&@K% ek?,I$1ĐƉ#QL- MK%4tr}`\y_"0j@#Q?p<*@S F(i"+z=_wTĵ GDՏ1t>ٺyD7=jTCjx ;]rPj/v^u4PE;=.W5ˌKo%B_,|ucA (b*K Dl*X&Q\A)IΗ`{aCM%լ(iUZl%VXs{1[-Kt*AG9?6xMo0pz辆ǽB?0"p #ukJu)w=r+0 IJ n\0fb9X['r|B'O-|(? @$"LB0G0Ps(iEe'6N+ݯz'FC|~@^h!NhM4\5m[F%wq }< /uE<>O$ rP@Sp-c& L0bP0 ( CJHDQ2i8Ec>1G?`+v :HʌqLae Hw[;c `؇'a4ϝ}q5}RSgFLQ xWA2f8R}oFN>/z{X;0|` ~"J]xV߳/ɇ]%I$0z g0w@LP; Jl; y#}cMɗ /?券f$S49!(%6Y(ɚ|"?}݇x}"m?av.+KPҮg +R yG?_X`p"&KCCR$-+Pw@$ 2Y}xi<g_?iVp`M~*/Yk҃Lq^HTd()i4$QiX;HLx"JQNRZp+Ǯ9v'AjA`D%`#6gZhv$ ~Pڶǂ7,{f\M1A?H@V˰bz +q@]`L"u1A”iCy$@%-|:_>ϡQ4眍{03, I@;Y@w0C&sqAzd"$B2MHxҠZ`縘b Frt02Е%kemϳ%V]ѳs"Axiŀi Eu[O>D@JS^ f퀨Ń{oZ'{q{i+qju&Re6uO"dR{. _ڵ}Z>3ig#ŠO| >uuWA` ^?=2)eG,*4y@|$JD?t|VV) V n= ^w@[%!Zl,Y-ch;X{9po#42>k;{S!Wofg#ဝ%*4f``D$%Bjmv̟~;8_H1oxm0-c$s~VzQbd(ꌏ'"K/EqpJm;@"m0 4&OLc*N8 K]~눕g xw@u8nvEoZw\6¯*DqL_Z){n-s~էou߳lej\n19лhOY3~Gy^iP(SP^bb{ߎkk$Kv #ƵF"r>q$OXrTҢFD>0; xP6S@ej/N?MD62[7 cw~uVDB[qE4B^ʵ"ywcr>d{%m!K@>FZG,z% 0H]R'k  Ժbd`=jX D-̙?+} <$#3oL#L\z"J!f^r~*`ukMA#/fq&Z&ZB&v!eKې]rp%-b /0W@_# ߇ 'Dw,űQ?d wc֕#˂h3#,'5ǼvNeQ%i^/ݍ5~4PH7. hVF`&\֐ g T/O@lK- iZU3}MK7PӾY_X.`-[ۋc㴷s?y_b{r1+_;ߋ՗^+@S; ) <;Q r@1h6;F ł92|Od:uzp o1.עP;oݔߏ57 X(o7=Q0zR]? S{oLq25^; DD} v084` n:ޑv 'aMcs3GלNí7lF߄pl(KgF?މ2;lw(:I@ҲuroQXY‚-up~vbh?6b%{ ?u 4vq NbA0Ġ/Z.^^b]ػegېVzA?`bݦ$_/!J>^' dXIӀ2g'ݨI*2`H}~!Z5|ha!ؓ/T_rtwwU0<44hX{*LvP"+S~8{vb{lIX@z|2 Of_YcXT@Ip?/YyVeEaϷb 7[~Μ` h%w $~KkSwL^#D ;Jv~X>`!/=T݉ցCAW sC]~JAst wT''NDu+<ߗq9<]sـ5~IHLUx T@ cXkGp;_JH@}TjMRO#+ ͑$@78 t? 疷?if#laQ.a9WjNEM ,#źu;0[4}0m4 鲭P@WNe;nŊ ߈{!>6Ew;48Zu<9Z$fHc$(ǟ$~zōX!5hfwF=FmJa9?|oY`^!E?O{!xlN L ۀJOAsPXLzݯq{/@qx!$  &]/@a Iw symDiv\/7_!  Bܥ囬i4e]ngG'o؋{FA3S? +|<{{ѣu_~*R[|G:Ru%q{LwQq wUۿݹD 8oAaA-2G.GGVîIs}XҠk9:Ojj|8u"W>ދ!IIl $lc uhAG)OCvbqK7 ra·Gn#Dï^-`X ngfWr%{)0-V]Y=膭 }fL_}f%`4HwH'egC=ºtv&i{q u `Tn7\f#* ~Mzk_^D}lʻ*+v|#V\t {} ~ZL߬L j[ikq2qۜ;@H0td{΋bH([@leP;Cl{\؍҅"kyFO|]-;gKtђffF7mwclpxA=;@e$UI7]=>w8}x?=hY;_eYo?- ^گ{5~2t7Q6ۇ ?iFҘ ?Wˊl!}beO^}a: &kj;@Z/wf 98y2NG@4e3eh.O>>NtqF/;ˣ#S®r5@#"cMh}AlYXyIeņ/=ܛ'm4~`Rm[z?Ⲿ6zI(N 4 "*ޣ`Y>ɵ+aLMBE½z;!I[Yb:[7 Ґgi۸^h4/ ~@)G{VQY>?}}?Mf4YVX# G75yO$\TB~?PynL=VwK+d(lpAnK>s@^CBNZ!I&DUmNWW࡫Aujِ$j Vv4@@g j t/Eا}3#՝0t$=QIzaH P ftD 3]w6Rh WQa] g IkYw?mtDtx+Y;(s}}/רN|QHf= 'n 2?']=CMu߷\ٟ̓Sld _qmj)fH+Y܊ qI˾'y&ڝܳW'=h۱ i` X5@Ŭ|VK5nVن ?OXNB Yv[L wו$O??w֭qhY⥦M9NӤ˂GN.NsVߎ?_ΰ{Yfv(AV{NssTƒ$txI@ltggܪ+v3;m˷_ވ~~.}~3;&}~LЗ~D`W9 6IQ2H`\@CmV䲓|W~p^ ?gmC"1 IPBK:H@@}#Vi!9/bc+`53>J× FT;f  0s3/h}nCXpP8[fp&u6]i<_HIO?\!$. 9g#}u_9Wd:ay}=+Zy㌿Z9`2o-w te#Ym ,ΤA9_GB0h/!jC,UPG,pK@Q}q9􏿘7|= @v|}ԠVW-[$`G(@hiF,d'sOO5ftbC<@ç| f<;4O@ވT,<1VMbh2`L(^hTB/`g7R 2Ą4? ˆ++XE V=7L/";*3]؇g\Xw( YWаoVFDGi}ˬd#:)20!.'kehqYY9ݹ^5(Z5M'x#$0PKpŜ%#w C3Oկ߷Ml,1xD"rٿQq؞Β"+|&>.k5{ d&wD %Ϸ !>ޢ.޳]v %gO>}^죴z ؟h5  LbF")|F?>1Ε~]"`$ H@܃hw$qKǏ3Ka2zN:}?_}BcLGI|îNdg/Ȗ"AI {Eq䷬,p|k9OZhk݃x% ;Ykm߀l<FSS Z󓌿 TqͿ_X78P䟖?XPՄG [--%Uuxgsz@baAD2׾Yx{va5|`OM u=@k!im6|* 00*քΒ3_65"w ﲦ̑Di߇p>1;c% hS6={< oֈ4Ӧ4<-q+И{ĵД +s"\aXȊArYSwj4|>m4{Zɹ@%, vӹ5`StU|t ɬ)Yj@ ,V|z7Ll݌{s>6nA'}z ~[[UoJb3 66|ί;nV``<< >za=럘$!>MYEk2Z>@)r"=]:2cKY_4䷆_G18"&܂-V0w|0:zTі pvLw@íN;s_1.J8"Ԝcٿ خg W^*QP`zoS5Jc};WH,($@ᅂh`Y^C[XEНض/ێqp<ѰR>"Кϳf c-NBK?+?e?|/cc|_@> 1+;(98,z`b#[{?|N-4|A[FÏ8' \D 3[l2ƃX&Njch,2W~OAcg,) hi3ww!f="_LwO0 к%PO ͘0lx+ ^|H@g8YHC %1\YW&Ag6>~r0H J; qI@pÓ 6 t{8Sp? xͰr-~*?r``YV#UQ~AGy'+'6n/pń)~g)\f% @-9?_x`5]ZZSOR1 >yf n1!hi@x ``h/i:l7uM~: r ;"Y6{w_NFF" 4ˬz۔;-HtR Q ,zбC+l_Gt~~2o~t~34xr- CHЬ?imRrS{wc{ކ CXN0m}{*Q@`-s!{0uF>Y5^JÏ %)88f1(@&k_3cAmԧ&qމ=wߏ\$5m3J@tf=wDqBm_7o/|gWQ&K#iş}QZW)1-ap`+?f?g3W }GXNY}Շ&iIss%) h=hew@+߃;A$ ; Q1=/$:hz|r vfdA?C!(22vVt=0}t } \Vo} };;<3V(w@ $H@w@ZCLnXzE/Zzͅ0tf?dX5k=eF lF0iP3;z1@z3|Vi~584ށbw@>)hdt4$j;.;V T+:,};rJLQMOu̽6t4&: |\j0,`3XHҠfe'8T %rfXʏzIW@7Z;m$`Z5j=Ix$t@O|{;`a:3oa<ײ8Ƌ hpQ6eEґae;"'qފC1Ѧjqhw@Y] 1H!#.Hw8Ѿ\L o] {DN S@7e"T`R7yEnVu:5ڶ @LqL@ZmIfCN"@Yogsʻ1a=d9FlpVEL#ΐlC%U2>A!ϵ ̑[ (9 J`X~AT5/l_-?;S w͊o95 .X$@b`B|2'jw*R5p?/!ۛo/ A93߷M I,%䩁Z&<sbY7Ɉa@r9+*׿ƴ@ f3IHd Wk) C}1lK0Tnzt~y:VrteQEjA:O/U> ®o}W~3Oߵ9R̀ & Ht܀1@8ŢWs:tϝx l*^8"6k} ~uxn>iy 1mP'Ci%ˠeP ׇUߺ|BFƑLov?m34$Cg=$C9dSucec&u-o1dt7|*\i#տ=5Vɲ@mCH?}r+.CnvM5wܓJ* 0@A{> ӥگOc;^2CWS! ؇ӣ>T/#g;M@#?{5W )~ޜW|]i1 h m;<m{#Ͳ pn/OWcچV,=v^t~¡x _ޢexee^%t2ޒI9.]lW<"cYyCG5<#3Lr4|ȳVi[Zz؝[f&Q@Phf1[kbt>,pH:H@FLjZ$r?(v/ šޗ/r >Ii̴= նڗ9wjvh9ߩ_5?4hQv m㰔F\g?[q`#' ~a7p5zYy iߪؔaRg p!Tyy3+6L܆{>^'&)Krpbzu%x ?}!\N3eLMOќpkHstN><\q "|X5 طz-r$q6H@K6v_f=Q 9s~Ե{Bt~ȭo2G=Ez }ޜekRIy+G6VB-Aր\i[#XLkBpYƊpb'?Y>J"mh ׶Vv%E-cD5Id;̓3,:>Hx^75pdi۲v oK,k{7_qdwRƐ&=U4fZZ1Y'c{bsw% j}[o71L08< ŮL^ueQ[py&+6G59v $=K,gD,y\Mr0gc.OiMN`U^o-죾<8523yVdXp/V+7ZvU⏾<>}w Y'0}~$iR$ HOstwv8e1 ;tw_"6\w#sSTf G0Tħ G?<Z.都?I@-i5a]EYP rwW/~."KcS$@VA>|Kuu]cJG;3ߧ$-֋fp Lhh?N٧_TOq(qzXX;`C[n&ѧ(z; }R )Jo{g8~W0e_eW~#CYV]`#7 1 Y6<- ¶5v M=0Xwԛ:\ׇ?CZ}/HiDS ~f= 0 ;W*1t{{N1o!T0G Ü+Fn 'P|hݠL5uMUL-EJ ؚ}h2ʎF)Զݽ.H "OkH> /Ȳo$c1,59:Wlx߭#Iz3! b.0HLytus^/LڏLg&p@pGS;^GԫXdE@^; sEmfѷ냷!g+QhFhxTs>mu;\m;.M$ZpiSK@C@w7|u{n; {r}Ce^oVr߳ZfP6#@Q{qldZN+'sΕ0с;+p+wpH paaWrLW@'eKD{h"ӑʼnt,\?cd4ymJ=p ?Gs? Z9)IpwjКŖ'];N~=nWOe&[֣ι_3tr,)nkD?43@ꇹBj 5*wr>OJ}b󟅣/D4rpjlN[#"^ !ܟ%B &AҴd_]*}X t! Z-ZMZa``S%(QS?Md{zSɝ;0>[k&tezU9E%Nird"xA )Ɍk҅ui4)3_hPe|Xc-:tr2D',Ps$<~>ܶ=sp@N@H6z"R  87Pu}Hs&YLW*omZ=RzGO7h9@%z/yHPޤ*Οr9{4<#z4zm#?㊬g*bғ{ ;t;>cbq;CYu s٫m:֋ɸRR4fIO $sҟTIǤQ# K4m7LzOg{Tdp ~uAT(Mhp罉& IFudgRx=F{S Ԡ[5x|%sVnXԦ[N8Eـ<@I#Ci;WIDw9@%) 4s~#13N# {yZqߌmH>s@&#훥T%e ^.( E~s?- @27 l~`ÓZDꌳȊ΂Di8PfD>C.ӌWPn6EV_kh\'^=_:jfJZ5JyCX&0p:|6zor=V{٪8-5?MhDg/jZ ljraZ84@*|FG0ez}0/d0߮#Z8?Ǜ` vd lx yap,EC1vzk@W>!S>`4FMٟrg<Bqc@c@ ~!@(*&`(No8S_O/Tn TuAys, l__*Kp{-#`7zm,/eKH F`%g#*@ #7G3q{OxߚЄJ!,5+.x8sʸg\_ e~9x$gCsՄ6Fည2㗸~k&qG> dckDŽR'K@* iT,@G0@u`8i3ѳznl^.4=[Zd6dSP=0br?U-cw}/th&j9 eY,"GL竒]ϒgQVp2uͽ A"CN!! Lh>g,oS3.zt^4@ ճ_l9+7{JIY}$?/ oP5nƃ{*g`޿Y4-S-2*ebOކܾěHBC;u 8"ۊ:St1f-$2M~,YȾqKS,K#}n˹/k7Bԟy?$Lh;^*@2`uDŸT\N]o5˜ˎZeٛp?槪DO$~DU2Pwcdg{줿pއ?g-u B(mDyE?f[<~vT.wHĈhLH%&TR~aY2_*e1o^{qg?7nd8npF@Sdyl}=.05&K/ h0i5b 3.jc-;BlQO R @Z@Гe )cH4>״J `~~۷|菈AĥȠF@.+!|@5Ԩa>ø-,ӎԥOS_Z 9LNѪ;BjA|x 9!2fiF`` uЍQv3,EE9nĵ8pVǂ +Hq&c0 ,u2ؑa= 7981 ͙)F:hg/? 7gf1~506[ՋԼy`~G&-k.EipL=~eZL qE[q8yFHF@ք3  8`^sHJS_6c0P$ &(3˩Q\~q-_P^XjMfvDcҀX We"rOn&͸c_@mrۿ`yNt?XHưQ[;2#1ܰ@Ydꏒ׍RKx:9}_L{y%q"E:1(0cH(`)ZWO~'"0s30tkI&LPOyK6hWQ睋;Nj 0\6@UL߲m+ v|38Ȟ @G6 e[!U(osQkĪ'b/o*pka:)㗹bzm_jOEWFnad' uz:~k+z;$rE{< 7Ӭ߇t%E;aruStv[` [~az'󿄗K .j@X2F %t + St ~! n<؞5Xv"$Z!e J$-zpJ. WX̮Ś|"7~UHw#cEUTx"@!QfWn9 ~hZ-AﴼGYMsF* :uiblJ|2vkNv4cuY2#0V{&=S5Z 8phLrOp@0ʜEXω~9kq'up g8PziIQc!,֨cg`/kPϙdRBhgB`m/^ ptfq>?Uye*^Ceep03M@ `r;k'qǯs_h k/Bݧ`('U+okӦ.pa*p-IQA >빑{?-SeW&Y{Po%OeE0m;Apဴɠ@_OR'~p\Oa8R~dc-?1Vw$~"Uy_>%#-v}T!$Lgsa{ f];h!L꣹gM]Uc Fe@].ӂ-&*SGݫ ꟿO]TV ȕ%|  Ȝ~+4"ɯȱ ̧O|zSLjȽۉ~ )*SKgh:59;;}="f@In^@N!_(2Ny`T9mT~۽ m˖C[oh7IV\> J1 Os74R (?p@0w|Z~sn>0i: c-8fm 3Cr zp*\X@ 4Hd˯ /T(P8h`?l_)- AP5V)2j|DQW@I#! sZjCh'UyH 7Mqo_K>/hY'w\܄[G$"598cXqW@%I4neo@l#@er碚=LɊw*wdYqT9x?ڱ8M#kr ~LQm) s >Bp1Oqѧֺf_|7غiyvFNn*a,dzD> ǬGDgS ks 7,`'ݲkTa`=/W'XTUGw۝hL`Z+Nd&Y"^Oh2FH %nߙ1m72f(~ .ҿ`7hٷ0wli_TC? ׅ Dd Du2 v7[5,;j-ݿ]Y"`/+}؀wj/ CBUrW,b恵^T:O?~f5F$PbΞaPHѧTpFʅ~w@ tvQ,;\oXFYu1b-`ayG^^1_- įjX}Qsv[`@# iGcͰv M,ncO3+'2[4b}wގmcNGSi =#@ZGPXl 90s9Qkp'(6qHa]nXi^!PG0CQ~U6(C9uvhh>A&Ipd|%IDCl[L˭*1jCH;8.j0v#@0BۅN("*=6c֮_^aLy.h^4i.YG3bC1 50rc0xDW AKo'Nw 8Be˞:?L??[fpS,7l_Dm}',E@_\HG "#@Pİìsf.?aݣSƧyNFixj2 dEIJ&,#`nj(h ܏JK|)JzW-H!l1h?:~ FUsQ7E@H H~]r=l~{NE,p̶kX8Nޞ8ՏkkTL/3Jy] 6އ*y}mȁXr_Ϟg2%EviH? 2vOeD E.*jE'*Ao*\vWя?^m (zYƂX@OED~2VVp\)0 I=F_S M8TS!F?ˢ`bmƦ~;燨7k.pyNmoV'K y٢! k$j,p@a +qg}8Oq`7A|,ެ~dH"L_-fq5ўm.,ˁu*%SD0GB(^p-Ӻy =29O^O~g?#[Qk+X'q.nL[#FyWeCy uFcv?O/} ~j:>g@ 3_:1.r"iZNH׬ûkb,W$Hӌ1"uJ%eu1X[LP3쌾>>o ;AS߆wP|8*`$@ętVaHTPQ89` Z>il|sם@ꎾ?M2i_AR9.j:Y].q Tx?o$AfP3`{*ҡV?g߷x"Ɓn^@oӎx} gc~02lʼnB!pDүkWO}G?|Ô ]k~LIU*<Ҭi LLH96Ê5+PoXsI3siJ)! $A͘ ? O5ovRjvoHbw w6>N|w#(ĥM1௟c (qT`O&BDq:N\bccO[|9]g:b'uJ<3bāѥXf wRi jGJ tE?0WUBx4R뜘` ͚[ۑ?gm8@N8 kp(Hܮd,u8u+q t38M^.kWPXj헸f*jJ?$!r: EU=Ns: a:07I_L?p/ZXsC]'cw␔}%\Bd8(@(m2vj\<7 a߰g4y9~ra`c^H_?~y۰CLD(K;@2"Hmc ,V?@c D/+؆厑# '`?Ѕ{a5 DBf$ J (0u>&+\4O:"P<\cggu[pm"u8q$bOM d]$X1[&d$=00Xzwre{OqȀҘiPKXO 垱*v0y^:eVxZM5WYM<@݆@n Y _/&@q'?2N@2P0C؝Xu֩vV]7c;5@-X{߬Ya](&us@8r\ESs?Liy_Iґʤ?U!6w^|:o?J41_a2 ?¡[~^GC2e=߬C\U"CA5 B@ 0q㒏^M'g]}ߡ{oBYTz6"0!@W*zCk|7U Sn hT*~QOm ~ WZi_Oٷ^soJ |ݯY`C^B O\ahq!*:ɀh]K>Pr?e9G} r.Лݵ7ŕd:5+kB$ † Ď)=0? Iy;PE"p+S2>b9EA5`O^0u 0f/[zO K$y {TNހ}C՝d򘀢]@܁~y۪btg|k2ןgwx Ze)ΠY{P,CE~t@\>=v~Uc)g9V.' y* }gY0u Ka^nba_ta%D:%!'-L8٩:BFbC"ؓ-p@Qo T -m8ڏ޽y= \{4yZf~c[Ag?0iq<[3"GJehc3 @YM7_)cè/ZoK o_]@0{,.ʬ==1ۡ7 Hq/w /-Lz)PY>y#<U0UQ I#Ph{Яpa( 2Lw|Ѹ蚏c㓞~}nn|43M+/IQDݐnDքlmi"B?U򇒵ji­}=DеWـ"^|cYߐEsPMJdCg' g\ N,X8TR@S$$p byဲ@,/#C_2o/#O S7/3Vo m8CtO4yQ#"iC~hY.dcM,A38*q8a/IJ6F7z11 ٲ5bq *8.gZ[61) _F߿# "?sZ@¼a#e'x$2wi/<F_6q 'MSaS%Z9/!D(7`zCm|"s{GwwnyvhI:;rZGNhܣNy}G%ůJfYc csf:nJi%!$kRs᧭_3owXcJ-E M ,<|?9Z͑N,?t71MxFr <&% 2#sKaF@xGHLjSp@]Ub`?AwAv² CQk]/ȷgo*tw6M.&*1K [kok/A+^&$F@&2\;I{E[k_vYcO|<ɹo5ԣy$6{HRNx̣ 7O>IF|rD=[t%DY XIΙiU&j5~O:PaaG82E_]~C/;m2+tvni4@,K>sVu;zL>q4E)0J䤅I+ pc f Ҙb>Q/d jedΑts6T.v[{ޙ_ʳ]oa>~_MӼo*R]3o h/Qc~Zff3 o))ǒ5k5PXh#PUJB^aҟ6|aXbn B9ϖv LYRCh "jaJ0 I 6@h,;rZf41P P䧤;!Q8N8 l8PV'ҏ|c6r&cXS39+LNk %D7@rAҾHڄnD4#C_ќrƈ<-{] ?kxٸ976Fp MGS@\z Wg Ppic]D DŽ Ci 踔 .K3-8^ q_4}=V'ir逿[#M}2f}Ju-B(R.ݧ374M>IBFQ,D_C ?"sH=cX׶6=`o? [?^M'6ɜ\.ƾzdcI/@eXX .(O"/,؛<)V?O׷m~vçXb aϿ+/\@,w\b.{l#vl.[sXQ\c+S%{̋MW'`̯fmFi7],?ם 5' ppFЪ9e ) $H 0kK؈l[WCdp2?MLuA!.>QOq3 h@R``Dpd@^4~OV8,Kp оMWjB!2BpqԺzqۮr\0+p}|¹B@ ,s1Xmx$"Kxá_ HO+۰NjÃ0X8 XEFI>="q{BँzH^\u"\8*BM0+ /+'eL9Ri0qe)/ 1&ln`OL' @J\EY ~0jNaG ˙tF,. t-TQ xX3>f?Y 1h͂vv34 I:*.e{ZCi pAwg $A*8*v Lw 5JO"lR*#O¥<_1n6{K- 6/°&%=6RL3DՂع?660` 6)Yef' bAt:l١b#*RmYD|&ZݽP$;Р!vR_QVk.d762vƁqh%(D@ w}Wn¡UYFcX'\bbB읷➫ ml<"C;ϒ%)519FEjRt{Uொ=P?>yѤ?*X0^ϡY!~{oQ.Y p3ѠOv>|{NX.' 2CcТ4B@] E~gJ_,ƽKtCkF$K$<TJ;'xa;9l&+Mh5M$'dJ T"w"X59mgD˲Z}’}(چ,> " ^lX6;(y@\a$@h r5$E<}N@Wp9 $%ᱮym=E 0WA8@hF@YycSe4/lS,\v~vKxo0P*KeLu4Y>mhwy­fQ1^1R֋a*;5tP܏y:Ś ,m΀IDHa;ql"0x. Yw-O^hJ?&8F͈\D؊2%^.#1lskSZM\[vp^oI.-S~|:4el%%\ǰZD䀫}{?7jN` I ?p.Z,h:8OzP~C 7!ϓȄ+# % 'gF{An!qDPĭ((Kad4 ͸†+~[xC=X D$Q${ƣ0+nƽk˾$ yݬ4p\,AiB0m `""+B.[INh,:gY^A s@{)q-ͲA7 _7\z}A$5]޿m(GsIͅ2Eu t'SeN~U5OۣOE(&9Vʭ|C׼ס?WO<+BdyߑT4L*E9K>^U\+X c:%QA( 0\T 5=@ѲN,K q7@xx/*D]@X]2O ~/NQBht#(ؤx{Uy@ b<ΑGw6r)А'n7;̚8"]V\G U)K󠴴˩e'h&g(/E+gfM5(bFG @Q,%~F;f쀏;W50|C (~޴ l0!<ȅ_ 0cD2BBH ,"C{FGRu;3N|G?r7 ;9Ԗ-sLF3Odꓦ/q@^GF7tXF Ά_옕'VC쳎, V @؏L_b'QE^/ӳ$z#c޹_<Zj\t,%ĕ5#e`/ yà (j$z%tX?=W_'&cf:KiORs 7xp@-ub16Pz<#OXQ[gO_EX F W@8RB )3B@C|&TPV9<ѓ`B3 G<z~k,D=;Hop2 'vQ!N~q 21f$qڋ_n'ɂ_BO.s*]Y40u `ǂͪ"7ru 6$kZBI(Io|k\h}nxҀets$9F"mrK#|wA%!c (U Je" 0sdo\\~ǰK/z6oqp[4u)ٺZv1ߴX3{iQ mS Up~Q1){nowT2<YhʹdsÚt}PDI2XUx}Tu[?wbWsqܱDQ"(1FBYOwll'@МAHR ! $NPrRҠYP^Ka*4w, F@qGǰc^S'>C w*״@i":$_G<,?(}~a1P=).'C]0,Nt}_b7vzYx5oL pA>[í 40'^!p({Pph$%'L֦ eF@q쬲ֽ:.xq+5Vxcw2(:ŕFs&ІF( B^ws8`}{&L?!H?ƠcZ_홦$tPEUNEߏ8YbiDA}4!Nsv'fh7CmUI5t3 <\kqԅz㾷fzC9z`w<>#},W]- on6஀ђx|)]XR_Q=CA@RU׻ʃ8ha4AM%Q?o4z_>f%c$c]~{:ER( E}Y*lu垷j/"K%ŏM1]gC!i~2* I&KWuH9oR84:ܝ&{ӼzOVGSHxѱ~AvtQtlHAk!1L@ h x:׿ p;ї=Θ~kǯqB:`>mMU!裂A@mת2: d'}?RHf{0@e * V>>|Oͩ&xys(~QB-~H$o5ٶXb t'^8 RE}ǻŴc m=j`O/:.3D;p?ä|W׽[^7h,[^ο~1vWP/M|SIŁ;uWYGJIIy~$x257֋nL#uw}{0FC:>4=PAs'=H/U ySIC5?=´=-ηp2D8e yeK]7v~k'GY`:wjgBIDhڟ8y{K]P5[Yo;-Jϣ扜p^t7/H{ҭCh":W*-Rs]yDB͚Ic@ u fp@Hb Xr?=vɟG+l T?SXGi)W5q=ƺ0Wk؈FxdK۟ޣ\1 Ukkl.nR3X ~&pؤj$ G[ s KpsfX}mN~ړp[ߋg=J Tn}sp'?Am r,`3!|%(n E ?eχIkd=~mlWy|@/k0?ԅ3Y`N446cNǮq0Ɵ `$tN7;`p{w'+M$4&4, {^?@)v 1p4h8P `'?%]*Q[i.{;p_e÷߂-;thd zL*zG@LUR@$ws*w`׃{g<iV76a˖pf>Qin^2(g JHQGj m@6uOS]E>@y(p8 ='A?G`HT$#vX7 |{٫P\-{]:W49w'F{ WX0_ro9?%Q . `&uGۉLM~9 >H~c5B'z>HQ&M}) !}.?<[ DAq賨@)(@(y g<XsY'_waCk\F@=信Ģ[7wS#7iJKs~JoB_oTqf raYS4N۷68XDpMI.G:$)TKbL Qq9{q(`Gs[ sI ΁^ւ@8 Ywl\┧Q%/~w~ZC^I"?R]`/W$ >1t•{Tǟ~Y럃3X~@S 3&kt;0 b6q pLZ1vPvۉψ~R ,c˥i L: p8O>IH } ZAsDdXVӿص8e/b[ww#P/겿IL"~L_ XķQ kWOMh9;K+` uC%\K]vh߀ Z-weo3B/f0$[ҠgD%ON㮂u\p&HF>NIfēD~\?CΟIာ Aۨ>ģ^ \jy+O\͜mmלP/m.Uq:h{+K\oח`dz~1c*vZ%HIo XrwèN܌>Kh-?BJg./rW4a?/0 Mٛ8j?"0Z@CDW8r+8T62 OCk5F@}du\ f}~PܟV|5LX3hf88ӷZ Z-$hr ^ '~oЛ:hu;{;=2c}?  'M:Q$;9{ &vk=p{\'uT „xm\H806Ħ h$!%_#r%ōnSڰT\7g>Z^~M4~#Pc)"WP7V".Ty35&-z~d2D`dz}4kb忐1M <`M݇ c'oh-^ $Ћ;%vޣ ՜x3."1Sm;CctΎ#x/we.!>Pw ^q_[^R4W߇[E߄6pGex#h~ok󷭸d=lâ; `.B2#0,/qȶ 'W-UI >T'И0g' 0}X~;ˏA{wL.3=:z(w-΁P,ߏSo,otB c)gulpm{β WN.Xw}>_ L+[ #{(_\w^| e^@"hh q规zS}580ЇEN{n N8 Bw;Y[J0@=>'r AHo8dg𻀋scm"~8>8rH9Dz 9 9ѯ3Gјq<u8悋2܋Gv&[}P/ rqT9?Goh{pa>Q|8£Ա4=KHb,o[۩>wq߼ ^zE_փ77s1{b?EK%D"_C+n؀7IQK$u1'~ȁg'+`Z׷:55G㒗'Γj}XpӋ[O4SPx%A|6]OJe~. @*\O}=go#.gЄv4;0on z:_Fv//䯞pޣLf.B%|@pœÂ> c#IB61j떣wK '=Z'/΁6c"!0 0_-]oV@xV,ctAЖ&Er܀j0ihtl`:5VcG/)P>xp: c5H ܽv!uExV]r(MbnLߓWѳ^ L{8/ 'K\vXK,?@&$~ vxOw;wK?-kt|́ij8ЇrR; 0}7Oxu8vJHBOoEg04Nm{z3^tNZ82`ΈZf hWM< Ѱ_t;\iO{.{kqŗh&?z ~7; z,Ŵhr7SVE'R獘{1>--z0/xca`iP0~2:D3Ә.[!0|(:wF`A;?AB^?I95vIM>,K d1~O ȍ0-Lj)V`L5˰? [^lࢁN֦i~=onFҘ\ˆd,\ݞN$y큋yj߼c 7ɿwKӶ~ϼ8l_0@7 Z2  ASC8,󖁰}k b,O7/Ac̋^鹧ǰfjZa`:pB4ܻ&d>@B8!ABC$Bj`X8폟s/0v}謹=f|F&Id!x#PW 겿r#Ԩ7Rᶹd(JC_ʀpq+ w V9t 3X9RL+Q#kC{\zk:d2هEIyP3yY`ys`R`ԓwLQ|3"șzaw^[< )"7,;Tа _6 Kh3?qōr BX^O}N<G]i0ckRNg?@[ƌ>4}q &v\H^@V=c5VԎ:DZӟ8qZklt!;XavWef׼aFUfxG@=@TXP7c.}YEFH鯿w\#5?X~ϣr_XwR\vi 8'g>뷜M%T.~ l}زjbCŒV^Ōi%KCsXF>A\ OXwEXO? ր8 dDDDx9a#Jfz>"8o$K u7?UXe}](&?!69ۖipdy $c\ PZT z CCrY*MunC&/o_Ё]9*9 @𓜒>OxzLWq^D gG>j=Z3?V<ϡ-[l_j`pdĴsI}PS#1q Ahwl'O| 6=X{-㓚TcX?fFX),){Q̘Ԟx1B  ~#PWlA 5Oԁ0Zb_ik8)=ID8 l7H&TH[g'jRˣk tعMdN:+1s-<C%iV9-mm]_p@+ Nx.-i:X iPmͯn%r5T\19b?Qy?@9\2Łnjރu֓؅9D[A$num7 ŀ[oF?o;^_-7EP5K#:D̈́\d2Sdrs5{]|[kceon2CtHY֥8.ģ #GB];$$$P{ݮw1ѣ>Kף%wlcimGusp̓,П8~P<&F;1mgϏjm˩!uYd:FSLbֈjGPW40Agbe*O3;6\oy0wO`:}E5Xhs,~s:{w;}}O[C! 0@ 51a`Pǎ?OŚG?$,#轜$o^3I3}]8l.QogH_g훕γ@0t15fb0JS ?ߟr?ca 5"e0-D~Oـs0 uZ}cv{/e؇c hw"-C`;4^_/kSQL17& X?Ua kѰ@~cEa.@cuS" u@yu Oe †i61Vf\>Hu;fmmC &z$XJ-W!7\Rsr3 ?c@wĚ2@z7ŏ`}ZyO-m:G`2J?FwV 95Am-T\NgIie 㧝I 엝w-}}3hv{hX ?󴮐1Áim [H,@Et0o 'UUԗ4^9hYU_Q8b- ܃_OPJ` '=#ݷ3?V3Slz 7u MBgv,<z[)hwjx?"Rc8ySGYݶs}VFs <Ln9z<+WUtLĞ~mT<*2ͬ/f}[O `(6ƀfwpXfy*t UG;ou& BWI9fk4S9Hɟ v^@6|qo;˝#B.}-eV2^uzFg.tvn,O2y:)Af4jw@?6n*mڌYIe0|7>`A>E9#x|zIh&tvΛ{_9,S/=C`Cm]̈́CJ F@=֒luV>ekG+]zfYq< nLdPu m`y-[z{_~mرMcPlPXrc%DXB !%8xvs^p}gsU}oU5j9w{uV]k}nQaS|Wl. \&W?"L a'\@8\$0uC9Ixuaw9л|?k;/ +AҼy~x &cAm>N g@@8N*7]o2E0( lA›Zh]ߑ"n/ٜ bb6AU#U {m(?1)epƿI="$ukd)~N9i&-C z>}'E`py $ JtAvҜ|;/ 'JBȠ{8{E.#4oHj ^gIg$]Xg(@@斸\ڰ pW3 ~ ۔?aAB ֠]WOA$@A;sP!UX'?O7%wv&>Q)2/h(|^* hEpF ~}5 {?_\TX#9^[<iyJS`HD!(}+PJmJo 7_j5H} @tW WhA-KCK,v-  s9h슟٪6B XGm 6?R%;\[Rqx[__aA#_E7$XZJ2R܅ԭ'jdό$X[ds_~R4HX35=T_T4<`]8r9VAa0J5n%e 62\z~uPeQ(pѧ[ I, ~C,֖|z,% Я&D`mYCbd%@}X%HY%_ hr9 +B·Jp?7~/ E|1د^I^̵W+ U>24.@kbҁqoɗX&)=]+!&x@BYLMgf 8l ,ZjCm");gY6>8wO \ ﷌{ ݯ^( y a֘U)јsxtR?/g9H R_GHȹ`}5K uk{o yPYΏ_.X;  |3.shL`a)EgZ^WF3aFk+a(ahxh ԝoC Um6e TԐx(up3pq֏ ڮLUfT vga}gObʌ282:[0&|?(5nƮtY)ǯ& 8ՙkIAո 仌92*X-Ms lA%RCٚ|r\wJ"/vʟn#@XXcZ?IjW ' /d~8_$* K`4,~^;,>kG9E9g(J@O <^gQcyWݕ"rFPgp73u9"2]X"`)dW }QE+A &!  p*Njn\^?&` UZlt^x!/%d8c[oހ3=ocUʽjӽ@B/n ~}i̯I?{r ͘ Xf0P,2!c<aJZߛ0 1aZ;6/9O Lz> '-L۶D$Zot x`0k_oS/? 7xP<4l |+ 2 H@4;C8zmĪ}OB@>+w̌tA@e 0r!ƚ$H m7;qKsoY Iz?vϏ{! kr3d{؛P-jO</<_{?g ^kx$1TJ2}PTla,G B ϾvWls]\m.kXd酑}S$ *}!$u|2ݯ;36OȎG`O &4qRlpuD%m=8Cq'֟`xZΗ绯X._A 3oql i\`;/g5k+@sf4`UkJP"> E"%\;e 6QQ K Rb 4/p˿cC%J@8܇ɒKFp#2mM,ef}PE*^(W?=T)(q}T#v2ʭe?-ͺʎc9ׄthfTsrE/\6ܚD?͊Oo.4mV,I: /8( 瀲\ -W~-EhPSAO2$AgPDHc/)"d~:,\ʫ BH!p^dqQlTWX”e-N, S/6b]SD?dİ"Ap{ihkXXH У D#F n~gfK85p4)JMKuv&uv~[A"j̬r[a0;;"04E PuI1/ʅHjV>`l91Dk7h7n+  2-\K;N(\9ae^-!`7@i>L#_ϱ)璎#£JrrO3x{?#R [,1+s..4X72$ZX \?|''64[ `#lG{c'2,{*Z'\)|~&ꀿ>L՞BS D4~ &wXmLn/3:&ޅ?«B" ;y(|qh ^m'*q D:Zfn0>LbEQ5~>cwvdDl3gfQ&Z7Ȳ (^`  %q^~;UidK6~lbi @ar&@*@Y,e r#*nl£>ݰs:r%*WUS 9GmNi?Jڰ* !IPj5YJ3<{pZ>9=X(%@k( gQSGg&؅Ga`'yfAOXm^Կ/#$h._۠,7^rKO/}ʵ&7C{0σ{ݟxG~HPeX :oΥ,Պ]*)31oUQC9O snX|ܜRљ݅%XkaC "|Lqzŗ}K2*5$,}>?SX`QFy.n"F ={T|)' p\VUQ;O݄I;-n3fR1<>>;@@VsKwt?s :z˄?e-,k6'cjfW*ָ&" N`w_4, 1Vݢyu? iL 2ΐ@cNg:ȅ$'{OLg%{]@ng05lʉ pZ`u`P32:BˊUց׀U`dfW7 oaL}ĕ{ hB&_x`f~G3_-;TD_$Eԓ*@4PO |,~C^?PRAL= D(2>. 8yp 6TOcj}Y>֝kpkɣX]2Ju]2ѴZ>=u#6Mik}>"{@>1&}֣^yPT˜GtS<{wK-=esut*߾mi%Ti)B ;>Cgg_Nk>PeW0XX 7X ˪y%(C"Q* \\B'R1BMe*Tp׋Mq-ZV*f/9p|W ?) xOío(0+i*v=KN|<]AM-i݀ta#_^zg R:uMLжc]۾i,0T.܉.#ow6R| %MlO2 NWm> LN _*0ÖsԣįnSWGwt9L@?A LWx=g a)/3Oomm,c2 "DZXC4U.9oAQTہyW/WVM@-pX$o`\%0sBFA_DH|xXC|{p &ǓL|jd`4Uu]78eg,bU8n )eɖ LC aXX3̦kaPkӤWu8 +$Vc_x ?&\{\z9]@"-/ !7xԆve~|.칃t[x~&5&%Է5%1Y" 'vKj\ 'ˈFb%pVZmND$2ǝ&Ě 3?2XAbMZӷ}vGVPh 5g,}X3e׭!=:q Y`}aL+/V(}MQE@T !ۏֻQ\8:9oGgo[ -:痁;h/g6sbiGH`1ó+߸/ X7&*oOlM&|aOL4ݚ غ42ͳ2iӀ-)[`grY$1 dy͞ɭvO] P c?bj O^K:]TS΃iZނ РF_OlMPO<=i=ue}{P+vnUu )s@,*r8 Hm2&6}BTck.(D?݇Cz@eU&&cxv YZ7gOHAdC뗨oI,p_Dzn[`u"0TYx5a?EtGӎ߅o$| +AY}#VR[FH8#+ߌ5Blx|}m ~~e>YTor)Bڞym)@J .qlc]Rg39d2UO/Tϓ 0`RO߯p5fJ4N [~L묧 \h&4 ,->mԣKB/:CpFkzMtfDb\b *kx%o#[;sVSgh^l o>wD)09Кz?w^OʠdlQ¤ڃk@⧍8,WEm_ۚkQ>"w)0ŕΆ#ņ{jy:1 _Y<ɀ?X¶c?ʍtjtȑLm8 pLapo `m7erYa/xм^l!]Zۈ|ނv32A`YFlh.+Oڀ pYIrAַ`<qjv&R xz)Y+@ِ ;6.dٲ`ڲ} 5; V LlV_ind\T&K(3BAnj$-T@GS%iOn JlP*x )|S:jFT'x<3.AzD[gX!4oc1 E2Yad2n- ~BuqR6+<`2`޷U& ߐ,_L~l~jS=8; VЌ`_C__NN^.}l6u9OB!On#!`?݁CO/Q8e UV"(0'.#H)A{t)x0W6)F&X--"d򟎗0溁O$VFB?+| Ah*OSN\%iNOb&N&8@:u|]"Lelj/ :pt Gp4#GzSxZLY,U=Prs&\Mu̮mM0x^gW? Vmq{ z~KӋLzXj\Y>s~WQ'RgB&x|\ox׌u&4e(|EB_'>ǪfVEn@gKvJ@?J_?,kT0^V{]* `UOyyWK'=?'~8$=>vk7 ֤ 6M337 xzOtx)7 e_G?ȉBuNewt+tivopǥ/3` '׃hAelSGMt•}cU+ @S2S5@T<{x|5XnJ=TD(µ:ߒeӄe[ Xf$~yl=K _2wYO>2pC[-3TTW:HMc.I b` /_FP =H|D/DkXztuoo_I ?>4u&\|En_,gCШd 6No@!zf-0!o|(J}:ѓ3Vh";v 7VT~Oy@8Y561ұ0ff{s\ɽkAeRLLt} \x"jT7^{&N1:l>[B} it6|O*қWXįVFe d EhHd>m27A6TҊYܷۦo6_'pWAB9h~wࡋ0ab*}RA +Y1ݾ ,JH6ΏΠ7M`|:Ýl`, `\ Q} ݶ 2W F\6rD,XMɟ4>Hu"C ƚ.73k!eʃ͋c&DnY 6Re2f<!.C8>_Lf@|sM @Uvp MN~k"O *G*M')psB8rB#e뢔mrͨ)@c@p>eñb}؍=&} @6&Ju4Vc@`: J lNe>RSMhpgf@ {th ۭ!F࿋>;wnT5vm_wXƬi6Ƣ ̍E^Q;AoD!AΖBxȞdm* Ӗ/I=?Oj#ۗ@*Vhz{C4/#UCmt 8?lr9WhΕA ~Vg vnr~z\3Ÿ3(e^ |إ}.(}Y`7p. $V q^cVW>@̵#rȼ'*7OʟkS:EAB,”P5xodi&/Pd&mp ID#uv^7 8 Of 0U= ׌Kj_]H~9ps.}^yL5 4 dbD3ͻ5@@]P OpN#ieu AF}| V⇚6rV(HYˆb'\eP`׫b^ZNDa:|~e/#IW(@B 1lN]:B`x\g]]*75Մygpʨh}eT6T=j4z0k%8M$r/`Ĺظ`cʭ rLl7]A/oÂi&_Tb|nZXD%>=d.,ׄFkpdb<7 Sô 4ϏP ~W?ky*ΥhR9@*q{3ٗiP0T\;3}Qo0ZisQ`UJ _"Aƌh^uevDÅs '6z+k ^.o91oDf_|~]td%:g nkی`4`k!$$%R za@"@x ә+$1E/K ri2 bɃ]96(;JW#@:c(m0\fv 2p3yeͮ5吼Jj K}r sU1,OWE ~Pd=70wx Y7)̎ml|cw Pܮ<k{ a.NG41!iP qqK5v?6X.Р2`Zkpq.9+Meb,. ˅&R + t(dM7U ,;#.,K_Js(ߗ!iI3rm]L 7] !lҘ]{ܟݰޡG[7=L])_B"y 7Wxfa|0O S%M4 ˔܇ !;jv tߏafui>6NJLКMU9 Lۄ+B2'i~EЗc>rʁIXn-<]y5q ؉Z8}(\EWx6|Y(Pfe_бCef<ϴ:6K/{'[%Okh>_ m@1܇b[ `88_4ЏY|S5Zot ˈi&@cLlPnSSvt~EkHLa/G> aei>&VHB! EQ 1)&NMȟw<^!x.35CdתM8T=YyXn8k7ٔ׵xWmPY eZA Kw+&ו! D! luYàͻ]6&&+ٜGSz3D!e6QBn%%#_WpkVm)o5cGwW\'!mBg f/ 1G1 Z) p3my~_^P(5.|p ˦?MFPi&=mtf\' >ZXah<x Ěx6e6"E[Vu5~ \LKڀ#Tt 4C&T\)͹֗4ր.|~c_F|sn _υS8 -axwL{ (r\u~#KuA=y{#7"BIL8a,ixu~51 ( ?H[rB@Z{6b!ƦNIswS‰/ R2u XCd r;"mM.IԽw.Y@F0K<*} hѣVh@+mФ$4̶ E0h]Bjۿ>nzH>e9fA3)`ӆ rK JA_=܅`ľ؈DoXY,j#Ngna ,x0xjr6I'lB(VY_嚲]ퟵ~OMF-0rc 7_U7*P^~.;?4Bҁ7(b#ۣyU& liMuK N&K}8lY,Ճ ?Wv/emlHy&WY>]vM&Dh2YQsMNcϯP5D?8؁!e,L m26wVr\̏1n@.:(;x{uqx+E@M%60I d<āePݳ7WE86=~8S=B˴i?|  a0x}>e\R/]TTpq3EJ8-%QThؤEz`ÑJp5޴^ewA=I?4WԆF;6 %̃hT4-ic=}{4r7=+~ƔAh/C8&OQ&@iƢsZB<3kIv-Ǔ y]9/[|v.i#mUHHQ^0m1^C,Ӷ:l: ʴ4V_4]mUɏ"cWz6f @p7ѽ甪ƵxER-2_5 @' Vgsf< djhѣFwKT7k#mmJ-"JWfB&iBn ;0uwM 9G@K߇ֿIZg @6 >OB_ .IE4 (XPjzkUjJ"d{L}8 n# `0ut ʜƴ@D1eo ڦ&_ڍdI>\dTtIՊ~.N7-M_w ԇ;^m2sd.К7nnl91fԁ֍>xy@"P?W%Iߩ8eh|ξ xk1iU#c*0EQ?momp%nف2.5}y4h3?WvHM`_[*s(l XuDz 3P_o UBFIi7~| g6?Cǁ7g7=ϑduMj̱iX?JP"tQJ5*~ Dg9>e 9FZ0XA؇!8C F5me+_yDw` MԌ|~i6Ldü߲\:h~ C]"U~u套)C7oۿ υg4M63_W,I@YwMߛs^RlJ*M6KMhiǔ 2c 1l<>,:Mn^`?[Mg܋:/} Pba)2X!闂s]W> R7ȇ 0,\T Orև)hj q2`o@UBDB`m|Di3pQeqWiv;:@TWaWi%)}6.~>?(x-6. ޙR\5]{A EIF  EqQa5媽e6O9}uK'T+wklM- ~%d@U4~PT/KH2+0r\t AQ `3[ZY.2˛iWԦ &# :s~[  |S!t5f=SkC&#_kLV@*,~JpFB*(Bk&ȯ=o?YX%URU@Bze2{Xh?38K/y45n i }{M<܁sha.BBA>uA߿? ۋyoBׂjZCyZ@݃plN !Y@7`3U;s}ڇDh ]@O7 W>Ժ2_1(" ۾k<}Wy&HqY5 7یUwB5GCoo >|~ ц1qBp~ 0.$OsL0" e@ePGM_wGXF(\X-OyTa9t]v4VbU[5fS0^xnVV I&77UQ&\<|e#,ͅS l\BNG2x(݆[yGwʦ +3[mǕ\4&C_kٛY?r]P|`,&R.W]^LF!3jo@5lL;nG(`X)XhҨ7x{Ѝj9Y^2kQG0H7+o_¡zaWks82O~L1& Mk€}YL])ycڷ:7, E eԘOGŅ2m@X7}+ym5i/sws6Ǜ _"MWl}0q?4 4}5 == Pћ*DQ?}pbRjj0Pou-N#~jUkw"(/,~E]޾UMi [elX _;sv 95y}pǒG.| %_gfPFyHcWDF-8[՟ьKU93m !|-<\-->0 :Ne Yf})lJ/W DI⫆u^+0C܀MۧaZCPӐxTWgNۤ7ȃX+ ~~4~)h[2S 5~K7M4xput&| oΦ0:8N}Jz=(~_Qoɛ^WW(ICj@ڈt`^ꋇ/xjkQyF[Y/|.Fuu|~EW MvCyN ?H#2"X|ͮM`1mχ[VGV-{]5mk ߅8 MCh> ߴDoӆ;WvmRe}P a_ esO׬Sp*7屫Xʊǂ$'JO]g΢ Hca_%EB@`:/jPc[jLo(8&j࿮GA~\Q7,_[ui}mTewL77J6?$ +ۮ^_tnČE:xЫpYYŅU0))~_\ƭ[bjLj#7o.ӦVO}(||~S_@X9_Ǧ>Ujۆ*Ұ|3A_x;>>>yuǿ{\d>ג*) kX_Ҵ_v-̙yI8̮Р_mZRnVoӢVVjX'B|˒_چob>[i̅Bq>w{) b9J,9ykSO[]|mLyX4@a0SɸTo#W=QFTa79b BC}S8K|~I;/\h$X/2n1_%o`π)?r=,L~ew>~6 V\mD ͑h|  3Y7Qu䜱`r0D42yC͌4hfZ]/r`v~ ?_$4M_``>ֿy+ˎ!ف}GXMP[pK\ ukܧ8' ׊ >-6j3e4@*i6tl>26xr1ML1%6{9kS_}7Fx`,;/:pÅO jC0 EE~ojtX8`](ʭ*VnI6.IEx+׹E4%OOl7G.yO'!`c^;;3 b`0?I@E(WҜJ5B58 yN''~Bdc̻(D];AS^RմaSEWi=7oV`iC- gI1@X8Y>Nbm/[ߑK뮕>wYW%lڤ]t/ԌP93顧?Li+z0IhdqiFj)$-iA'VևNO_3q kqv]~ɓUY&2ڭ3]!ht4!:GX8 %:ot'"pDK3o3:]CnheMB#b\Q`P~_d` GCfFj 36tr'f6Ūe}/HuDdW_!_+'.M\bzΠG& 6|bk1.ʠ?=e>p`9g"K4z4  8D9M&Y @k%m7G]%?Ze߀ icQCȕ+:b)kkڌˁ\v"G`SE1]uŔX!㱍7|9r aB_LĆ^u?˂OupYBaRcl/nMǫ_46̀_j@*]e\Ӛ<+ :+4P|y+OfB} ]7&trs|ou7Z&19G?YLZ2|< m8r@5p})$4O6 ߯Z'FXiIV4jx5;6Ee h~pg ҕ-A *c)[0帲Tf M D>2A]W_y޷ K+q)p}M@;|q3+ɚ0~2; RV@AP) / ڞ@YX mȇT#6^_|QmI1%[d`ݧ"Aů-M෩%%w</ PBaVf$A_P@a8^'²MU?ÕHBZWk.5؊0}sZǟ܍OCK[JdwV4RB.ا1D F:t&U$?" DQ [d 2k- ܆>y>L}_XL6:l 9tڨJ_m3  0^1l@m\]oq 5 Ф * аt"0 "j)(8) !^ ]V|sॄ  Do\>?4_Hgp t /M +H(Ya~ F;3ƙ|deVlKo(> _ȑx0"f\c2/:bF113{S>k"#HϦ Eł6$ #K8*a `6.k]^WioH>u.b_uK2 *7߆ǓY)Wr,€t]VSTإ_#rl/N .-> b69uv\w(kq_;Mm l}fYʶ~|P968YT:EAXl 8aϘȊ1 Bw9iI=BA%h17R] 9 ],PTC/ ?@T=;M҂dq]y%ˮ_{̥3Wh6t7u4kaR#I]k΀q ,^CVvMn r_8'4ΙNp35IІ~E>rN|~)KVddB~%O:2 Q@w[3mW\s`|,loVs3n4M)lr57Կ{0 ddݤr@!(Tƍ- ЉE> 0t04B$*dTC 1UWT7 0IK0`o7\\tF/] /"r.suX`؝,qz7on ˸]RKS +z# >M)^S6i!Ha:A1 dY aB #7u @\UpD>?|~.^H~~냯s'@YlN=/]ADK~p `gl11&]f6ZrF=v-/dz47}Ё+%V.-dƾrx"(a$ M9ܻ|n+b I1x}$l$yI`33PTi9pg*Эo3EP"k+0 K޾'2BbAD ?J,#/IkZP\=W4T큝*E $m<[ߤ4qR%'~vS m5C|'NdQĂeQ VB+&B.nIZ8fbN@@uo.{8]ݿW/}-~\Hx|8.B^ux ~ǥ"q M_Ku'lcץaK4_;_ e_MHw&_vV1!n_@炰#ڎL݀+/eCa8,&>!+AuF~ot7F _ϸa!A$f`̞(`&$3ը_=-X6|;_oi`߾ff 6w0 8SA(F n0F%0apEؓQ Y2;L, ϻkW# _|NDYCuT!R~?;\d(x>p*w QC=7ڼ\o85n[~ӫl '=b3| an yZQgUUX 8S2wKn{F-SH㒪+&ww5qpϿwD!Z hn-`C>2I3C(9`B? ecGK_,nn9 Ͱl^Ic]Pm e$LN 6twDn'"vx?)Nzȕ+׍2)}(ŠC uw~ _/>~ y}PW m*+M[}fho3Oydsmlu󲼀5xŢwpa]3]t;i5+δ1,WU'nyv8Sd'DУH1 {(P 读rOВ h{G~@^I'=?l7}1 P?Жg_M/{.z8fKh\Ce+u\*an;\ѻOp yhU\4 umg]>%pw aTUXi\G7/<q{.8ר!Wrt)v?>p+gTw@Vj\}`4p??'|߿5p?}Un< OfOۋ @~tgx0/~??B"&+M @"$hs_M(DA}xZg_?>G$) Oq`i"qVJJ90=YwS \to0j8lwmrsx㯃0#b4<-띺_җ\L0u ɂ@Dlh5Y. _]x&ݲ@-gcaǫG0_mZ: ^0*R<":E ~3!gwܟ ]'{zvrp?@|āѫWp^m~o{/ ɜ;%F+.`M}~N)@pwmX<ߍ`AhӦiM:`3Eu%[J8DLɹOiS!Lk{iN\`pDžad:\{q"Їreۻ;~]wFK{wF0]<|>_3wcs:=G#a=H*&1gGS:΃P{G)v;o2 >[M 5}]Tx;}ooe-/Sb wy$w+$v\(iI!bn̢G` A8Xb`N=+ΣOG]G{놇Oϕ:<¯Ylq"6GE,~iszlogۋ#KMb^S~ m/9tSj|bf9?1S\$<89t*Cm(v{}?hnW5v6mKS|׃ȃA}jMtؼ^࿩oIJTj\ljI& 6pxϸ~*ƽ zoĜx|OC׸q@^r  Ost2c{5~v]n)OLWbN_RZY&&2=_B𼿲8/jM ?xY $ ?_]~?|0W #!Jf@>2/rMyS 3Ҹ9G{;i_~I<}*E퇻; HF$}:-GkDX D`[95dQz `ݶ@G Cw2O{ ׺;ԕ!΁eU׬@W5g7}VO Cvq*cGkeUOwZkw{:9\GcdƁ;`rMO8eysfO%dpLd3 ߋMy>tl=B)Sjh'&9NO=ʤ2*M[Svn\HŸqg_w;~ 2!R}Y#d%?YPJ@?Z>?z<MGVv"h$}}59wzs`yvy@< wu) 7uHa#"E&!2OH;9}mlZ9>MO,_=CA] 9 ~HG y+4^V&/+9P^3_F @g&]I^GwOeR9(Ob1F \~28`ϿǏx2vDk';|>d?!0;/FtC;D Olݶ@,7)S`vﺟXǸ00L 1AÏf`á !eM^hxd&}2scpLRy`C@N8PS|!x߷|~9mP.lC4wqp'2)DZnnmmiM82na -=8\e7"֣{cG #)X ,b kÆOȎ rرlc=3]sj<=vl9sR{&V[ܯT/acnCV(.Rja|[~t'3U1]Kmbk9~Io (m[^AĎ7q r[522\JdެX7*+>zk5S ]\3&#ᇥ&ԭ/A~ڻ%U摤Ps | ;4TSg+G%11%;sAFĬJƂ8nu{|S#ٵ9f DݤjsmdQm_j nXdx-nFy3q_ /TkA|0K[?o_=Qp3wM-G,b8;XYM?k #kWO _ZgIa$M+[7|}X/A몛o# 皪64ŁnȘ'[Eys/$v h\!mU Uɿ}FƹwD 39/a4^a*ם*wo`;+p3Om^%oOVvqx}Sv5KAն}NßF|+0,хˉ^ v19 fg'|-K>@ _Au#6FOKNWD3 b51w3P.=rYԨPfBe-'}S%Wt9EOrԵMO*)$?XzLk.Sa: =(t7 rz6{;z"߫3 3$~fA rGd遐"&R>wb|_ű{J # gL'TEvcsL<QA {\ nUۘEal(a?sgFj^ˮ&iA9mv:͞IA4 xO0bAp/=so}=MnX,ySV>zd\MH'|SX\ !h]Iu^ */ pre .comment, pre .template_comment, pre .diff .header, pre .javadoc { color: #998; font-style: italic } pre .keyword, pre .css .rule .keyword, pre .winutils, pre .javascript .title, pre .lisp .title, pre .subst { color: #000; font-weight: bold } pre .number, pre .hexcolor { color: #40a070 } pre .string, pre .tag .value, pre .phpdoc, pre .tex .formula { color: #d14 } pre .title, pre .id { color: #900; font-weight: bold } pre .javascript .title, pre .lisp .title, pre .subst { font-weight: normal } pre .class .title, pre .haskell .label, pre .tex .command { color: #458; font-weight: bold } pre .tag, pre .tag .title, pre .rules .property, pre .django .tag .keyword { color: #000080; font-weight: normal } pre .attribute, pre .variable, pre .instancevar, pre .lisp .body { color: #008080 } pre .regexp { color: #009926 } pre .class { color: #458; font-weight: bold } pre .symbol, pre .ruby .symbol .string, pre .ruby .symbol .keyword, pre .ruby .symbol .keymethods, pre .lisp .keyword, pre .tex .special, pre .input_number { color: #990073 } pre .builtin, pre .built_in, pre .lisp .title { color: #0086b3 } pre .preprocessor, pre .pi, pre .doctype, pre .shebang, pre .cdata { color: #999; font-weight: bold } pre .deletion { background: #fdd } pre .addition { background: #dfd } pre .diff .change { background: #0086b3 } pre .chunk { color: #aaa } pre .tex .formula { opacity: 0.5; } sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/css/main.css000066400000000000000000000113401323634607000253130ustar00rootroot00000000000000body { font-family: "Helvetica Neue", Arial, sans-serif; background: #FFF; color: #3B3B3B; margin: 0px; font-size: 15px; line-height: 1.25em; } a:link, a:active, a:visited, a:hover { color: #CC0000; text-decoration: none; } a:hover { color: #990000; text-decoration: underline; } .banner a:hover { color: white; } h1 a, h2 a, .banner a { color: #fff; } h1 a:hover, h2 a:hover { color: #fff; } p { margin-bottom: 1em; text-align: justify; } h1 { font-size: 2.1em; font-weight: normal; line-height: 1.2em; margin: 1.4em 0 0.7em 0; } h2 { font-size: 1.6em; margin: 1.8em 0 0.8em 0; font-weight: normal; line-height: 1.2em; } h3 { font-size: 1.4em; color:#555; margin: 1.4em 0 0.7em 0; font-weight: normal; } h4 { margin: 1.4em 0 0.5em 0; font-size: 1em; } table { margin-bottom: 1em; } td, th { padding: 0 0.7em 0.3em 0; } th { font-weight: bold; } .clear { clear: both; width: 0; height: 0; } dt { margin-bottom: 0.3em; font-weight: bold; } dd { margin-left: 2em; margin-bottom: 1em; } dd p { margin-top: 0.6em; } li { margin: 0 0 0.5em 2em; } ul li { list-style: disc; } ol li { list-style: decimal; } .banner { background: #B61D1D; color: #FFF; border-bottom: 1px solid #9b281c; padding: 1em; box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2); } .banner h1 { font-size: 1.2em; margin: 0; } .banner h1 .type { font-size: 0.833em; display:block; } .banner h1 .type, .banner h1 .parent { color: #CCC; } .banner ul { margin-top: 0.3em; margin-bottom: 0; font-size: 0.85em; } .banner li { list-style: none; margin-left: 0; margin-bottom: 0; } .banner .github_url { color: #CCC; } pre { margin-bottom: 1em; } .methods dt { width: 1em; font-size: 1.5em; color:#AAA; position: absolute; font-weight: normal; margin: 0; } .methods dd { margin-left: 2.5em; min-height: 1.8em; -height: 1.8em; padding-bottom: 0.8em; } .methods ul li { margin-right: 0.7em; margin-left: 0; list-style: none; display: inline; } #content { margin: 2em; margin-left: 3.5em; margin-right: 3.5em; max-width: 980px; } .sectiontitle { margin-top: 2em; margin-bottom: 1.3em; margin-left: -1.2em; font-size: 1.2em; padding: 0 0 0.25em 0; font-weight: bold; border-bottom: 1px solid #000; } .contenttitle { margin-top: 4em; margin-bottom: 1.3em; margin-left: -0.9em; font-size: 1.6em; padding: 0 0 0.25em 0; font-weight: bold; } .attr-rw { padding-right: 1em; text-align: center; color: #055; } .attr-name { font-weight: bold; padding-right: 1em; } .attr-desc { } tt { font-size: 1.15em; } .attr-value { font-family: monospace; padding-left: 1em; font-size: 1.15em; } .dyn-source { display: none; background: #fffde8; color: #000; border: #ffe0bb dotted 1px; margin: 0.5em 2em 0.5em 0; padding: 0.5em; } .dyn-source .cmt { color: #00F; font-style: italic; } .dyn-source .kw { color: #070; font-weight: bold; } .description pre { padding: 0.5em; background: #EEEEEE; font-size: 15px; overflow-x: scroll; } .method { margin-bottom: 2em; } .method .description, .method .sourcecode { margin-left: 1.2em; } .method h4 { border-bottom: 1px dotted #999; padding: 0 0 0.2em 0; margin-bottom: 0.8em; font-size: 1.1em; color:#333; } .method .method-title { border-bottom: 1px dotted #666; padding: 0 0 0.15em 0; margin: 0 0 0.5em 0; font-size: 1.2em; line-height: 1.25em; position: relative; } .method .method-title a.permalink { position: absolute; font-size: 0.75em; right: 0; } .method .sourcecode p.source-link { text-indent: 0em; margin-top: 0.5em; } .method .aka { margin-top: 0.3em; margin-left: 1em; font-style: italic; text-indent: 2em; } .method .source-link { font-size: 0.85em; } .ruby-constant { color: teal; } .ruby-keyword { color: #000; font-weight: bold } .ruby-title { color: #900; font-weight: bold; } .ruby-ivar { color: teal; } .ruby-operator { color: #000; font-weight: bold } .ruby-identifier { color: #000; } .ruby-string, .ruby-node { color: #D14; } .ruby-comment { color: #998; font-style: italic; } .ruby-regexp { color: #009926; } .ruby-value { color: #990073; } .ruby-number { color: #40A070; } @keyframes highlight { from { background-color: yellow; } to { background-color: white; } } .highlight { animation-name: highlight; animation-duration: 1s; } p code { background: #eeeeee; border-radius: 2px; border: 1px solid #dddddd; font-family: Consolas, Menlo, Courier, monospace; font-size: 14px; margin-bottom: 1px; padding: 0 5px; } sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/css/panel.css000066400000000000000000000164331323634607000254760ustar00rootroot00000000000000/* Panel (begin) */ .panel { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background: #FFF; z-index: 2; font-family: "Helvetica Neue", "Arial", sans-serif; overflow-x: hidden; } .panel_tree .results, .panel_results .tree { display: none; } /* Header with search box (begin) */ .panel .header { background: white url(../i/search.svg) no-repeat; background-position: 5px; box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2); height: 40px; width: 100%; position: absolute; left: 0; top: 0; z-index: 300; } .panel .header input { border: 0; box-sizing: border-box; display: inline-block; font-size: 14px; height: 40px; width: 100%; padding: 0 5px; margin: 0; margin-left: 25px; outline: none; } /* Header with search box (end) */ /* Results (begin) */ .panel .result { position: absolute; top: 40px; bottom: 0; left: 0; width: 100%; overflow-y: scroll; overflow-x: hidden; z-index: 2; } .panel .result ul { font-size: 0.8em; width: 100%; } .panel .result ul li { height: 46px; overflow: hidden; padding: 4px 10px 0 10px; cursor: pointer; } .panel .result ul li:nth-child(2n) { background: #F0EFEF; } .panel .result ul li h1 { font-size: 13px; font-weight: normal; color: #333; margin-bottom: 2px; white-space: nowrap; } .panel .result ul li p { font-size: 11px; color: #333; margin-bottom: 2px; white-space: nowrap; } .panel .result ul li h1 i, .panel .result ul li p.snippet { color: #777; } .panel .result ul li b { color: #000; } .panel .result ul li.current { background: #B61D1D; } .panel .result ul li.current h1, .panel .result ul li.current p { color: #D9D9D9; } .panel .result ul li.current h1 i, .panel .result ul li.current p.snippet { color: #ACACAC; } .panel .result ul li.current b { color: #FFF; } .panel .result ul li:hover, .panel .result ul li.selected { background: #d0d0d0; } .panel .result ul li.current:hover { background: #B61D1D; } .panel .result ul li .badge { margin-right: 0.4em; margin-left: -0.2em; padding: 0 0.2em; color: #000; border-radius: 3px; } .panel .result ul li .badge_1 { background: #ACDBF4; } .panel .result ul li.current .badge_1 { background: #97BFD7; } .panel .result ul li .badge_2 { background: #ACF3C3; } .panel .result ul li.current .badge_2 { background: #98D7AC; } .panel .result ul li .badge_3 { background: #E0F3AC; } .panel .result ul li.current .badge_3 { background: #C4D798; } .panel .result ul li .badge_4 { background: #D7CA98; } .panel .result ul li.current .badge_4 { background: #A6B0AC; } .panel .result ul li .badge_5 { background: #F3C8AC; } .panel .result ul li.current .badge_5 { background: #D7B198; } .panel .result ul li .badge_6 { background: #F3ACC3; } .panel .result ul li.current .badge_6 { background: #D798AB; } /* Results (end) */ /* Tree (begin) */ /**/ .panel .tree { background: white; position: absolute; top: 40px; bottom: 0; left: 0; width: 100%; overflow-y: scroll; overflow-x: hidden; z-index: 30; } .panel .tree ul:first-child { background: url(../i/tree_bg.svg); background-size: 1px 60px; } .panel .tree li { cursor: pointer; overflow: hidden; height: 30px; line-height: 100%; } .panel .tree li .content { padding-left: 18px; padding-top: 5px; height: 18px; overflow: hidden; position: relative; } .panel .tree li .icon { width: 10px; height: 9px; background: url(../i/arrow-down.svg); background-size: 10px; position: absolute; left: 1px; top: 8px; cursor: default; } .panel .tree li.closed .icon { background: url(../i/arrow-right.svg); background-size: 10px; } .panel .tree ul li h1 { font-size: 13px; font-weight: normal; color: #000; margin-bottom: 2px; white-space: nowrap; } .panel .tree ul li p { font-size: 11px; color: #666; margin-bottom: 2px; white-space: nowrap; } .panel .tree ul li h1 i { color: #999; font-style: normal; } .panel .tree ul li.current h1 i { color: #CCC; } .panel .tree ul li.empty { cursor: text; } .panel .tree ul li.empty h1, .panel .tree ul li.empty p { color: #666; font-style: italic; } .panel .tree ul li.current { background: #B61D1D; } .panel .tree ul li.current .icon { background: url(../i/arrow-right.svg); background-size: 10px; } .panel .tree ul li.current.closed .icon { background: url(../i/arrow-down.svg); background-size: 10px; } .panel .tree ul li.current h1 { color: #FFF; } .panel .tree ul li.current p { color: #CCC; } .panel .tree ul li.current.empty h1, .panel .tree ul li.current.empty p { color: #999; } .panel .tree ul li:hover { background: #d0d0d0; } .panel .tree ul li.current:hover { background: #B61D1D; } .panel .tree .stopper { display: none; } /* Tree (end) */ /**/ /* Panel (end) */ sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/css/reset.css000066400000000000000000000016661323634607000255230ustar00rootroot00000000000000/* http://meyerweb.com/eric/tools/css/reset/ */ /* v1.0 | 20080212 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } /* remember to highlight inserts somehow! */ ins { text-decoration: none; } del { text-decoration: line-through; } /* tables still need 'cellspacing="0"' in the markup */ table { border-collapse: collapse; border-spacing: 0; }sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/favicon.ico000066400000000000000000000021761323634607000252150ustar00rootroot00000000000000 h(  #.#.        s!b*R!4@       #)"(:.       +< !;9      !MHWnVv/D     `0F rfr'nsy! $2Ub$5$&  z  XjWs?]  2=    h '    w?M.= coʺ @T+'   ~ wӯ z)   .: ci ~nuĂ䃋( PioParNe<ey ic c.aleri.tsdoc-1.0.0/lib/rdoc/generator/template/rails/resources/i/000077500000000000000000000000001323634607000233165ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/i/arrow-down.svg000066400000000000000000000005641323634607000261430ustar00rootroot00000000000000 sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/i/arrow-right.svg000066400000000000000000000005641323634607000263110ustar00rootroot00000000000000 sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/i/search.svg000066400000000000000000000016351323634607000253110ustar00rootroot00000000000000 search Created with Sketch. sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/i/tree_bg.svg000066400000000000000000000005411323634607000254460ustar00rootroot00000000000000 sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/js/000077500000000000000000000000001323634607000235025ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/js/highlight.pack.js000066400000000000000000000376521323634607000267410ustar00rootroot00000000000000var hljs=new function(){function l(o){return o.replace(/&/gm,"&").replace(/"}while(x.length||y.length){var u=t().splice(0,1)[0];v+=l(w.substr(q,u.offset-q));q=u.offset;if(u.event=="start"){v+=r(u.node);s.push(u.node)}else{if(u.event=="stop"){var p=s.length;do{p--;var o=s[p];v+=("")}while(o!=u.node);s.splice(p,1);while(p'+l(K[0])+""}else{M+=l(K[0])}O=N.lR.lastIndex;K=N.lR.exec(L)}M+=l(L.substr(O,L.length-O));return M}function J(r,L){if(L.sL&&d[L.sL]){var K=f(L.sL,r);s+=K.keyword_count;return K.value}else{return E(r,L)}}function H(L,r){var K=L.cN?'':"";if(L.rB){p+=K;L.buffer=""}else{if(L.eB){p+=l(r)+K;L.buffer=""}else{p+=K;L.buffer=r}}B.push(L);A+=L.r}function D(N,K,P){var Q=B[B.length-1];if(P){p+=J(Q.buffer+N,Q);return false}var L=y(K,Q);if(L){p+=J(Q.buffer+N,Q);H(L,K);return L.rB}var r=v(B.length-1,K);if(r){var M=Q.cN?"":"";if(Q.rE){p+=J(Q.buffer+N,Q)+M}else{if(Q.eE){p+=J(Q.buffer+N,Q)+M+l(K)}else{p+=J(Q.buffer+N+K,Q)+M}}while(r>1){M=B[B.length-2].cN?"":"";p+=M;r--;B.length--}var O=B[B.length-1];B.length--;B[B.length-1].buffer="";if(O.starts){H(O.starts,"")}return Q.rE}if(w(K,Q)){throw"Illegal"}}var G=d[I];var B=[G.dM];var A=0;var s=0;var p="";try{var u=0;G.dM.buffer="";do{var x=q(C,u);var t=D(x[0],x[1],x[2]);u+=x[0].length;if(!t){u+=x[1].length}}while(!x[2]);if(B.length>1){throw"Illegal"}return{language:I,r:A,keyword_count:s,value:p}}catch(F){if(F=="Illegal"){return{language:null,r:0,keyword_count:0,value:l(C)}}else{throw F}}}function h(){function o(t,s,u){if(t.compiled){return}if(!u){t.bR=c(s,t.b?t.b:"\\B|\\b");if(!t.e&&!t.eW){t.e="\\B|\\b"}if(t.e){t.eR=c(s,t.e)}}if(t.i){t.iR=c(s,t.i)}if(t.r==undefined){t.r=1}if(t.k){t.lR=c(s,t.l||hljs.IR,true)}for(var r in t.k){if(!t.k.hasOwnProperty(r)){continue}if(t.k[r] instanceof Object){t.kG=t.k}else{t.kG={keyword:t.k}}break}if(!t.c){t.c=[]}t.compiled=true;for(var q=0;qx.keyword_count+x.r){x=u}if(u.keyword_count+u.r>w.keyword_count+w.r){x=w;w=u}}}var s=t.className;if(!s.match(w.language)){s=s?(s+" "+w.language):w.language}var o=b(t);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=k(o,b(q),A)}if(y){w.value=w.value.replace(/^((<[^>]+>|\t)+)/gm,function(B,E,D,C){return E.replace(/\t/g,y)})}if(p){w.value=w.value.replace(/\n/g,"
")}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){var q=t.parentNode;var v=document.createElement("div");v.innerHTML="
"+w.value+"
";t=v.firstChild.firstChild;v.firstChild.cN=q.cN;q.parentNode.replaceChild(v.firstChild,q)}else{t.innerHTML=w.value}t.className=s;t.dataset={};t.dataset.result={language:w.language,kw:w.keyword_count,re:w.r};if(x&&x.language){t.dataset.second_best={language:x.language,kw:x.keyword_count,re:x.r}}}function j(){if(j.called){return}j.called=true;e();var q=document.getElementsByTagName("pre");for(var o=0;o|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.inherit=function(o,r){var q={};for(var p in o){q[p]=o[p]}if(r){for(var p in r){q[p]=r[p]}}return q}}();hljs.LANGUAGES.ruby=function(){var g="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var a="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var n={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,yield:1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,"eval":1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1,"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}};var h={cN:"yardoctag",b:"@[A-Za-z]+"};var d={cN:"comment",b:"#",e:"$",c:[h]};var c={cN:"comment",b:"^\\=begin",e:"^\\=end",c:[h],r:10};var b={cN:"comment",b:"^__END__",e:"\\n$"};var u={cN:"subst",b:"#\\{",e:"}",l:g,k:n};var p=[hljs.BE,u];var s={cN:"string",b:"'",e:"'",c:p,r:0};var r={cN:"string",b:'"',e:'"',c:p,r:0};var q={cN:"string",b:"%[qw]?\\(",e:"\\)",c:p,r:10};var o={cN:"string",b:"%[qw]?\\[",e:"\\]",c:p,r:10};var m={cN:"string",b:"%[qw]?{",e:"}",c:p,r:10};var l={cN:"string",b:"%[qw]?<",e:">",c:p,r:10};var k={cN:"string",b:"%[qw]?/",e:"/",c:p,r:10};var j={cN:"string",b:"%[qw]?%",e:"%",c:p,r:10};var i={cN:"string",b:"%[qw]?-",e:"-",c:p,r:10};var t={cN:"string",b:"%[qw]?\\|",e:"\\|",c:p,r:10};var e={cN:"function",b:"\\bdef\\s+",e:" |$|;",l:g,k:n,c:[{cN:"title",b:a,l:g,k:n},{cN:"params",b:"\\(",e:"\\)",l:g,k:n},d,c,b]};var f={cN:"identifier",b:g,l:g,k:n,r:0};var v=[d,c,b,s,r,q,o,m,l,k,j,i,t,{cN:"class",b:"\\b(class|module)\\b",e:"$|;",k:{"class":1,module:1},c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+hljs.IR+"::)?"+hljs.IR}]},d,c,b]},e,{cN:"constant",b:"(::)?([A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[s,r,q,o,m,l,k,j,i,t,f],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},f,{b:"("+hljs.RSR+")\\s*",c:[d,c,b,{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[hljs.BE]}],r:0}];u.c=v;e.c[1].c=v;return{dM:{l:g,k:n,c:v}}}();hljs.LANGUAGES.javascript={dM:{k:{keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"var":1,"new":1,"function":1,"do":1,"return":1,"void":1,"else":1,"break":1,"catch":1,"instanceof":1,"with":1,"throw":1,"case":1,"default":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1},literal:{"true":1,"false":1,"null":1}},c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,hljs.CNM,{b:"("+hljs.RSR+"|case|return|throw)\\s*",k:{"return":1,"throw":1,"case":1},c:[hljs.CLCM,hljs.CBLCLM,{cN:"regexp",b:"/.*?[^\\\\/]/[gim]*"}],r:0},{cN:"function",b:"\\bfunction\\b",e:"{",k:{"function":1},c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM]}]}]}};hljs.LANGUAGES.css=function(){var a={cN:"function",b:hljs.IR+"\\(",e:"\\)",c:[{eW:true,eE:true,c:[hljs.NM,hljs.ASM,hljs.QSM]}]};return{cI:true,dM:{i:"[=/|']",c:[hljs.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@font-face",l:"[a-z-]+",k:{"font-face":1}},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:{"import":1,page:1,media:1,charset:1},c:[a,hljs.ASM,hljs.QSM,hljs.NM]},{cN:"tag",b:hljs.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[hljs.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[a,hljs.NM,hljs.QSM,hljs.ASM,hljs.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.xml=function(){var b="[A-Za-z0-9\\._:-]+";var a={eW:true,c:[{cN:"attribute",b:b,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,dM:{c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"",k:{title:{style:1}},c:[a],starts:{cN:"css",e:"",rE:true,sL:"css"}},{cN:"tag",b:"",k:{title:{script:1}},c:[a],starts:{cN:"javascript",e:"<\/script>",rE:true,sL:"javascript"}},{cN:"vbscript",b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},a]}]}}}();hljs.LANGUAGES.cpp=function(){var b={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};var a={cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b.built_in,r:10};a.c=[a];return{dM:{k:b,i:")[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); /* * Sizzle CSS Selector Engine - v0.9.3 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="
";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/js/main.js000066400000000000000000000011151323634607000247620ustar00rootroot00000000000000function toggleSource(id) { var src = $('#' + id).toggle(); var isVisible = src.is(':visible'); $('#l_' + id).html(isVisible ? 'hide' : 'show'); } window.highlight = function(url) { var hash = url.match(/#([^#]+)$/); if (hash) { var parent = document.querySelector('a[name=' + hash[1] + ']').parentElement; parent.classList.add('highlight'); setTimeout(function() { parent.classList.remove('highlight'); }, 1000); } }; $(function() { highlight('#' + location.hash); $('.description pre').each(function() { hljs.highlightBlock(this); }); }); sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/js/searchdoc.js000066400000000000000000000344561323634607000260070ustar00rootroot00000000000000Searchdoc = {}; // navigation.js ------------------------------------------ Searchdoc.Navigation = new function() { this.initNavigation = function() { var _this = this; $(document).keydown(function(e) { _this.onkeydown(e); }).keyup(function(e) { _this.onkeyup(e); }); this.navigationActive = true; }; this.setNavigationActive = function(state) { this.navigationActive = state; this.clearMoveTimeout(); }; this.onkeyup = function(e) { if (!this.navigationActive) return; switch (e.keyCode) { case 37: //Event.KEY_LEFT: case 38: //Event.KEY_UP: case 39: //Event.KEY_RIGHT: case 40: //Event.KEY_DOWN: case 73: // i - qwerty case 74: // j case 75: // k case 76: // l case 67: // c - dvorak case 72: // h case 84: // t case 78: // n this.clearMoveTimeout(); break; } }; this.onkeydown = function(e) { if (!this.navigationActive) return; switch (e.keyCode) { case 37: //Event.KEY_LEFT: case 74: // j (qwerty) case 72: // h (dvorak) if (this.moveLeft()) e.preventDefault(); break; case 38: //Event.KEY_UP: case 73: // i (qwerty) case 67: // c (dvorak) if (e.keyCode == 38 || e.ctrlKey) { if (this.moveUp()) e.preventDefault(); this.startMoveTimeout(false); } break; case 39: //Event.KEY_RIGHT: case 76: // l (qwerty) case 78: // n (dvorak) if (this.moveRight()) e.preventDefault(); break; case 40: //Event.KEY_DOWN: case 75: // k (qwerty) case 84: // t (dvorak) if (e.keyCode == 40 || e.ctrlKey) { if (this.moveDown()) e.preventDefault(); this.startMoveTimeout(true); } break; case 9: //Event.KEY_TAB: case 13: //Event.KEY_RETURN: if (this.$current) this.select(this.$current); break; case 83: // s (qwerty) case 79: // o (dvorak) if (e.ctrlKey) { $('#search').focus(); e.preventDefault(); } break; } if (e.ctrlKey && e.shiftKey) this.select(this.$current); }; this.clearMoveTimeout = function() { clearTimeout(this.moveTimeout); this.moveTimeout = null; }; this.startMoveTimeout = function(isDown) { if (!$.browser.mozilla && !$.browser.opera) return; if (this.moveTimeout) this.clearMoveTimeout(); var _this = this; var go = function() { if (!_this.moveTimeout) return; _this[isDown ? 'moveDown' : 'moveUp'](); _this.moveTimout = setTimeout(go, 100); }; this.moveTimeout = setTimeout(go, 200); }; this.moveRight = function() {}; this.moveLeft = function() {}; this.move = function(isDown) {}; this.moveUp = function() { return this.move(false); }; this.moveDown = function() { return this.move(true); }; }; // scrollIntoView.js -------------------------------------- function scrollIntoView(element, view) { var offset, viewHeight, viewScroll, height; offset = element.offsetTop; height = element.offsetHeight; viewHeight = view.offsetHeight; viewScroll = view.scrollTop; if (offset - viewScroll + height > viewHeight) { view.scrollTop = offset - viewHeight + height; } if (offset < viewScroll) { view.scrollTop = offset; } } // panel.js ----------------------------------------------- Searchdoc.Panel = function(element, data, tree, frame) { this.$element = $(element); this.$input = $('input', element).eq(0); this.$result = $('.result ul', element).eq(0); this.frame = frame; this.$current = null; this.$view = this.$result.parent(); this.data = data; this.searcher = new Searcher(data.index); this.tree = new Searchdoc.Tree($('.tree', element), tree, this); this.init(); }; Searchdoc.Panel.prototype = $.extend({}, Searchdoc.Navigation, new function() { var suid = 1; this.init = function() { var _this = this; var observer = function() { _this.search(_this.$input[0].value); }; this.$input.keyup(observer); this.$input.click(observer); // mac's clear field this.searcher.ready(function(results, isLast) { _this.addResults(results, isLast); }); this.$result.click(function(e) { _this.$current.removeClass('current'); _this.$current = $(e.target).closest('li').addClass('current'); _this.select(); _this.$input.focus(); }); this.initNavigation(); this.setNavigationActive(false); }; this.search = function(value, selectFirstMatch) { value = jQuery.trim(value).toLowerCase(); this.selectFirstMatch = selectFirstMatch; if (value) { this.$element.removeClass('panel_tree').addClass('panel_results'); this.tree.setNavigationActive(false); this.setNavigationActive(true); } else { this.$element.addClass('panel_tree').removeClass('panel_results'); this.tree.setNavigationActive(true); this.setNavigationActive(false); } if (value != this.lastQuery) { this.lastQuery = value; this.firstRun = true; this.searcher.find(value); } }; this.addResults = function(results, isLast) { var target = this.$result.get(0); if (this.firstRun && (results.length > 0 || isLast)) { this.$current = null; this.$result.empty(); } for (var i = 0, l = results.length; i < l; i++) { target.appendChild(renderItem.call(this, results[i])); } if (this.firstRun && results.length > 0) { this.firstRun = false; this.$current = $(target.firstChild); this.$current.addClass('current'); if (this.selectFirstMatch) this.select(); scrollIntoView(this.$current[0], this.$view[0]); } if (jQuery.browser.msie) this.$element[0].className += ''; }; this.open = function(src) { this.frame.location.href = '../' + src; if (this.frame.highlight) this.frame.highlight(src); }; this.select = function() { this.open(this.$current.data('path')); }; this.move = function(isDown) { if (!this.$current) return; var $next = this.$current[isDown ? 'next' : 'prev'](); if ($next.length) { this.$current.removeClass('current'); $next.addClass('current'); scrollIntoView($next[0], this.$view[0]); this.$current = $next; } return true; }; function renderItem(result) { var li = document.createElement('li'), html = '', badge = result.badge; html += '

' + hlt(result.title); if (result.params) html += '' + result.params + ''; html += '

'; html += '

'; if (typeof badge != 'undefined') { html += '' + stripHTML(this.data.badges[badge] || 'unknown') + ''; } html += hlt(result.namespace) + '

'; if (result.snippet) html += '

' + stripHTML(result.snippet) + '

'; li.innerHTML = html; jQuery.data(li, 'path', result.path); return li; } function hlt(html) { return escapeHTML(html).replace(/\u0001/g, '').replace(/\u0002/g, ''); } function escapeHTML(html) { return html.replace(/[&<>]/g, function(c) { return '&#' + c.charCodeAt(0) + ';'; }); } function stripHTML(html) { var in_tag = false; var output = ""; for (var i = 0; i < html.length; i++) { if (html[i] == '<'){ in_tag = true; } else if (html[i] == '>') { in_tag = false; i++; } if (!in_tag && i < html.length) output += html[i]; } return output; } }); // tree.js ------------------------------------------------ Searchdoc.Tree = function(element, tree, panel) { this.$element = $(element); this.$list = $('ul', element); this.tree = tree; this.panel = panel; this.init(); }; Searchdoc.Tree.prototype = $.extend({}, Searchdoc.Navigation, new function() { this.init = function() { var stopper = document.createElement('li'); stopper.className = 'stopper'; this.$list[0].appendChild(stopper); for (var i = 0, l = this.tree.length; i < l; i++) { buildAndAppendItem.call(this, this.tree[i], 0, stopper); } var _this = this; this.$list.click(function(e) { var $target = $(e.target), $li = $target.closest('li'); if ($target.hasClass('icon')) { _this.toggle($li); } else { _this.select($li); } }); this.initNavigation(); if (jQuery.browser.msie) document.body.className += ''; }; this.select = function($li) { this.highlight($li); var path = $li[0].searchdoc_tree_data.path; if (path) this.panel.open(path); }; this.highlight = function($li) { if (this.$current) this.$current.removeClass('current'); this.$current = $li.addClass('current'); }; this.toggle = function($li) { var closed = !$li.hasClass('closed'), children = $li[0].searchdoc_tree_data.children; $li.toggleClass('closed'); for (var i = 0, l = children.length; i < l; i++) { toggleVis.call(this, $(children[i].li), !closed); } }; this.moveRight = function() { if (!this.$current) { this.highlight(this.$list.find('li:first')); return; } if (this.$current.hasClass('closed')) { this.toggle(this.$current); } }; this.moveLeft = function() { if (!this.$current) { this.highlight(this.$list.find('li:first')); return; } if (!this.$current.hasClass('closed')) { this.toggle(this.$current); } else { var level = this.$current[0].searchdoc_tree_data.level; if (level === 0) return; var $next = this.$current.prevAll('li.level_' + (level - 1) + ':visible:first'); this.$current.removeClass('current'); $next.addClass('current'); scrollIntoView($next[0], this.$element[0]); this.$current = $next; } }; this.move = function(isDown) { if (!this.$current) { this.highlight(this.$list.find('li:first')); return true; } var next = this.$current[0]; if (isDown) { do { next = next.nextSibling; if (next && next.style && next.style.display != 'none') break; } while (next); } else { do { next = next.previousSibling; if (next && next.style && next.style.display != 'none') break; } while (next); } if (next && next.className.indexOf('stopper') == -1) { this.$current.removeClass('current'); $(next).addClass('current'); scrollIntoView(next, this.$element[0]); this.$current = $(next); } return true; }; function toggleVis($li, show) { var closed = $li.hasClass('closed'), children = $li[0].searchdoc_tree_data.children; $li.css('display', show ? '' : 'none'); if (!show && this.$current && $li[0] == this.$current[0]) { this.$current.removeClass('current'); this.$current = null; } for (var i = 0, l = children.length; i < l; i++) { toggleVis.call(this, $(children[i].li), show && !closed); } } function buildAndAppendItem(item, level, before) { var li = renderItem(item, level), list = this.$list[0]; item.li = li; list.insertBefore(li, before); for (var i = 0, l = item[3].length; i < l; i++) { buildAndAppendItem.call(this, item[3][i], level + 1, before); } return li; } function renderItem(item, level) { var li = document.createElement('li'), cnt = document.createElement('div'), h1 = document.createElement('h1'), p = document.createElement('p'), icon, i; li.appendChild(cnt); li.style.paddingLeft = getOffset(level); cnt.className = 'content'; if (!item[1]) li.className = 'empty '; cnt.appendChild(h1); // cnt.appendChild(p); h1.appendChild(document.createTextNode(item[0])); // p.appendChild(document.createTextNode(item[4])); if (item[2]) { i = document.createElement('i'); i.appendChild(document.createTextNode(item[2])); h1.appendChild(i); } if (item[3].length > 0) { icon = document.createElement('div'); icon.className = 'icon'; cnt.appendChild(icon); } // user direct assignement instead of $() // it's 8x faster // $(li).data('path', item[1]) // .data('children', item[3]) // .data('level', level) // .css('display', level == 0 ? '' : 'none') // .addClass('level_' + level) // .addClass('closed'); li.searchdoc_tree_data = { path: item[1], children: item[3], level: level }; li.style.display = level === 0 ? '' : 'none'; li.className += 'level_' + level + ' closed'; return li; } function getOffset(level) { return 5 + 18 * level + 'px'; } }); sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/panel/000077500000000000000000000000001323634607000241655ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/rails/resources/panel/index.html000066400000000000000000000030271323634607000261640ustar00rootroot00000000000000 search index
index sdoc-1.0.0/lib/rdoc/generator/template/rails/search_index.rhtml000066400000000000000000000002621323634607000245600ustar00rootroot00000000000000 File index <% @files.each do |file| %> <%= file.relative_name %> <% end %> sdoc-1.0.0/lib/rdoc/generator/template/sdoc/000077500000000000000000000000001323634607000206725ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/sdoc/_context.rhtml000066400000000000000000000147731323634607000236010ustar00rootroot00000000000000
<% unless (description = context.description).empty? %>
<%= description %>
<% end %> <% unless context.requires.empty? %>
Required Files
    <% context.requires.each do |req| %>
  • <%= h req.name %>
  • <% end %>
<% end %> <% sections = context.sections.select { |s| s.title }.sort_by{ |s| s.title.to_s } %> <% unless sections.empty? then %>
Sections
<% end %> <% unless context.classes_and_modules.empty? %>
Namespace
    <% (context.modules.sort + context.classes.sort).each do |mod| %>
  • <%= mod.type.upcase %> <%= mod.full_name %>
  • <% end %>
<% end %> <% unless context.method_list.empty? %>
Methods
<% each_letter_group(context.method_list) do |group| %>
<%= group[:name] %>
    <% group[:methods].each_with_index do |method, i| %> <% comma = group[:methods].size == i+1 ? '' : ',' %>
  • <%= h method.name %><%= comma %>
  • <% end %>
<% end %>
<% end %> <% unless context.includes.empty? %>
Included Modules
<% end %> <% context.each_section do |section, constants, attributes| %> <% if section.title then %>
<%= h section.title %>
<% end %> <% if section.comment then %>
<%= section.description %>
<% end %> <% unless constants.empty? %>
Constants
<% context.each_constant do |const| %> <% if const.comment %> <% end %> <% end %>
<%= h const.name %> = <%= h const.value %>
  <%= const.description.strip %>
<% end %> <% unless attributes.empty? %>
Attributes
<% attributes.each do |attrib| %> <% end %>
[<%= attrib.rw %>] <%= h attrib.name %> <%= attrib.description.strip %>
<% end %> <% context.methods_by_type(section).each do |type, visibilities| next if visibilities.empty? visibilities.each do |visibility, methods| next if methods.empty? %>
<%= type.capitalize %> <%= visibility.to_s.capitalize %> methods
<% methods.each do |method| %>
<% if method.call_seq %> <%= method.call_seq.gsub(/->/, '→').gsub(/\n(.)/, '
\1') %>
<% else %> <%= h method.name %><%= h method.params %> <% end %> " name="<%= method.aref %>" class="permalink">Link
<% if method.comment %>
<%= method.description.strip %>
<% end %> <% unless method.aliases.empty? %>
Also aliased as: <%= method.aliases.map do |aka| if aka.parent then # HACK lib/rexml/encodings %{#{h aka.name}} else h aka.name end end.join ", " %>
<% end %> <% if method.is_alias_for then %> <% end %> <% if method.token_stream %> <% markup = method.markup_code %>
<% # generate github link github = if options.github if markup =~ /File\s(\S+), line (\d+)/ path = $1 line = $2.to_i end path && github_url(path) else false end %>
<%= markup %>
<% end %>
<% end %><%# methods.each %> <% end %><%# visibilities.each %> <% end %><%# context.methods_by_type %> <% end %><%# context.each_section %>
sdoc-1.0.0/lib/rdoc/generator/template/sdoc/_head.rhtml000066400000000000000000000011501323634607000227770ustar00rootroot00000000000000" type="text/css" media="screen" /> " type="text/css" media="screen" /> " type="text/css" media="screen" /> sdoc-1.0.0/lib/rdoc/generator/template/sdoc/class.rhtml000066400000000000000000000042051323634607000230500ustar00rootroot00000000000000 <%= h klass.full_name %> <%= include_template '_head.rhtml', {:rel_prefix => rel_prefix} %> <% unless (description = klass.description).empty? %> <% human_desc = truncate(strip_tags(description.gsub("\n", " ").strip)) %> <% end %> <% unless klass.method_list.empty? %> "> <% end %>
<%= include_template '_context.rhtml', {:context => klass, :rel_prefix => rel_prefix} %>
sdoc-1.0.0/lib/rdoc/generator/template/sdoc/file.rhtml000066400000000000000000000020441323634607000226610ustar00rootroot00000000000000 <%= h file.name %> <%= include_template '_head.rhtml', {:rel_prefix => rel_prefix} %>
<%= include_template '_context.rhtml', {:context => file, :rel_prefix => rel_prefix} %>
sdoc-1.0.0/lib/rdoc/generator/template/sdoc/index.rhtml000066400000000000000000000010671323634607000230550ustar00rootroot00000000000000 <%= @options.title %> sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/000077500000000000000000000000001323634607000227045ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/apple-touch-icon.png000066400000000000000000002506571323634607000266000ustar00rootroot00000000000000PNG  IHDRxtEXtSoftwareAdobe ImageReadyqe<QQIDATx}EorMBB =tDFy6TP|]Ay ؞qgr|è 8T:Wxɱ}pD9D\hPYV?ae+SsS%JL~$X&7rt"rbUcY^~@U_p2:z I6O5M z< q?m!, :1 uPeu7'@7\<٨=nx/f5I"PCCW[}lg%JґX&ױ2Vzt4a8Ȁ|Sib|/qps x1禂sg<͕ :ݍ^b 2D@D:-QV WV u'l㮦gr[+XYr+*DxFVA#4 ,9 !4=Ml] n\fvqDnt1ˋYKj"dG[` 9Eۖ"w7ϴˇ`jXY-(QDI,eU6sOSʁ0!/fZ8[-c-} Ao2cXRuE5kHn@"pڡVfX"\'I5.u]mV-hʱ!&4ZSbخSB0%JX&X͚`OMep _lip[ Z"4v@=m v=>D79^f2:8n! r/zVlwV@%Q!Q֯f[#[(#. <)#<S8 B @e?ñ98w" ǰB;&!Vr_C+jHw:+-J:#$>>feGPDg sg!":H(1"P!?GP]bD7'm 'Ii! !"$,8Z1KV~᫹(M|ԏXy [{>L?NU;7[G\f|Qmw$H̢yڤ$jO Bth+\$a&m M1HJЉ~>b\ `e[ǔ@%m)9Qo`HXGG@''`etb |ӇP޻x;P> ޹ ; Z"~lafrmyC0^n(aơɇ$rx 3\n Cpoc-;Kgk{A;*}'w :JLwg6aQ(-?.%;Y*+kPDI;LM;bM(lXo-؆ЇXH>>cIկHeg3s#3o2ܒy܉y,ǜVt}r9A&y<80" v݆2"JϤH˞?'I˝wI7+ ~'PDI bXN\/ny'ckQؼu \/X/[)ۨf\ ?Ty?~qFFQ޽7S3jL<:t>xtX[LJ~6vB(TdfD=#zK>9O< މEy1z\g p-A$$@"Zd@ӕEvtsz>,ᄢoISVE,;sZb8ܯrnT#DAqTn=g@*X'ryݏ)Ė(`?veۄY})*| 4"JD=ڠM `?.?p}M;zܚf52ꆒTlΰ1x!zBy ]Voa 0 /A&< 8vy a.#|SpASlHӲ/8Rߓ!e@_ŀ-\.@(iO&GrPg@7aa?1zmo[@u03?:%AkuWn{;wXC*cd#-n=:N8 }{;^d/@~R;;Qڽds^Û׈0^ƥ`$`f$dET6}_hj^9{ً5~\ uCn@&&h:.Eh8p XϳeAfAeP}k'Ve -bj#&q GiHxd2k)K>+A[.B߹!sB3};!+ƒLzA{1t~~AV`~R 3Ǥ^B(tpM>ZHiZ_$8uXŎj%R.%J$={=r?0t_14u &={- ucHZ$U?NԐPP6Fhɼ⮝(e1}1ߗm~x HI`\l$L70@~s$@wA87@HGKr>jnor(QDVzmaM7 SN z[6C+t0ggM"T`DחhC}`; <;wF{p8)IvFc~hV?^Gt)GHH:G̓O1 >fs&*$g {hK7&3>Jh!(Q:; M| O3a/1|͘|aehd=$Z F۠Yҩ=ڿ貨$W>C</b? TĊ(Q*2\[0?a;fL]Y@cHPG~0wݶ%iڜ3QѮޅ{:V>ʤ"J)xXy)DzXB嬬S@֗Xy+oe? (1fM(IuS:XR rx])6;Gz:P$vB,џZS*h]g!;L0ƧI65i?H~E0A@]ߏ/uS(@ Zȱ^ OJ$h9d, QdEĈj $8nPDĩP$r +ogYhGiVlW0pVž 3'p~HR4 ` 4p fZ4 u1~ۿ3Ɓ_S<|QܽҸ+„>8M0z dD0vtb0$ j$_6 :M K7I5qo:4%Jˑ6s?&ͧݯb1E&d$5{{* wܸ`1Cs8Bw'ߏ<>u9}#4I/Z' 0ڥ@2YLc|lzlnV^>+_PϝsGI#FB&)ilǦ&RD,"з@4g{*sA}Hsc`hBdXtkqvYOϧ曙FXBfOOKn'iK@˹DWWNwO ?;CYLl SyU&0cv^,Y`KhsOO/kج"yh? L|mzv ɬ%Hg&+a yE{A}?)}h,z#HԳTT2 =z6#BsҠ#͞k N# @G0oDPs1̳,+ yk2=3h.;\[` SS4S@2A$ι!(ćUfyWHI=EYV&~Pخ[[__}O*!D2 6DZB7CW]U( {8w {СRHiw݆Kfp5 k!π~lv >SCCL, g^?LԴp߿_D|?<|HG@탊(5e>Oӗ Al7ԖкXߞ`8FDD . 99 1@G XOˮ~_Fco p @`ubb.si?rهsŀE`w"8@Ddű~㮀PD,|+'XǼw?Ư}uxZ8I-6VER: jT4?'ks}hJdX8Fnu|Oߏ?MO(pNǔ?Tc Ĵ@[/"M WJVd&{+&3k, c~E9|Z}LM_~d7+,VsݰrlL>,JfyƖ:M*6}(6x~5XP(6w!]% #*O@#Fzt=/9'? %a𖿡qu3tt(1srLc ϵ>#_g/pR8#/E\v}gX TҮ3{>$ ?0 z#]?NO]ۨG 嫏k-!Lc66ӒS˚_-f'c-7^]{L'' &58 O΍ T`ZdCǶ?zYTQ@L>)X90Fu_: ?8<h$ l A@$ sA-4;4|g c0CCEsK@N3: 7_B킜4"2Uim`vR@ɬVzlowا>T2ߛ,;@VKrQ;@ʹ $ ;@` ap0P;R{>Ta9`tQİ։A, ks2 G\DJ+!gB$;@/ b"t~QC}d*""JU{z+_IM0mͻ߂o>>f&!Y8S㬙 Q? Hkl;@D^*tc݌OK/ƙ?N#0&@K% ek?,I$1ĐƉ#QL- MK%4tr}`\y_"0j@#Q?p<*@S F(i"+z=_wTĵ GDՏ1t>ٺyD7=jTCjx ;]rPj/v^u4PE;=.W5ˌKo%B_,|ucA (b*K Dl*X&Q\A)IΗ`{aCM%լ(iUZl%VXs{1[-Kt*AG9?6xMo0pz辆ǽB?0"p #ukJu)w=r+0 IJ n\0fb9X['r|B'O-|(? @$"LB0G0Ps(iEe'6N+ݯz'FC|~@^h!NhM4\5m[F%wq }< /uE<>O$ rP@Sp-c& L0bP0 ( CJHDQ2i8Ec>1G?`+v :HʌqLae Hw[;c `؇'a4ϝ}q5}RSgFLQ xWA2f8R}oFN>/z{X;0|` ~"J]xV߳/ɇ]%I$0z g0w@LP; Jl; y#}cMɗ /?券f$S49!(%6Y(ɚ|"?}݇x}"m?av.+KPҮg +R yG?_X`p"&KCCR$-+Pw@$ 2Y}xi<g_?iVp`M~*/Yk҃Lq^HTd()i4$QiX;HLx"JQNRZp+Ǯ9v'AjA`D%`#6gZhv$ ~Pڶǂ7,{f\M1A?H@V˰bz +q@]`L"u1A”iCy$@%-|:_>ϡQ4眍{03, I@;Y@w0C&sqAzd"$B2MHxҠZ`縘b Frt02Е%kemϳ%V]ѳs"Axiŀi Eu[O>D@JS^ f퀨Ń{oZ'{q{i+qju&Re6uO"dR{. _ڵ}Z>3ig#ŠO| >uuWA` ^?=2)eG,*4y@|$JD?t|VV) V n= ^w@[%!Zl,Y-ch;X{9po#42>k;{S!Wofg#ဝ%*4f``D$%Bjmv̟~;8_H1oxm0-c$s~VzQbd(ꌏ'"K/EqpJm;@"m0 4&OLc*N8 K]~눕g xw@u8nvEoZw\6¯*DqL_Z){n-s~էou߳lej\n19лhOY3~Gy^iP(SP^bb{ߎkk$Kv #ƵF"r>q$OXrTҢFD>0; xP6S@ej/N?MD62[7 cw~uVDB[qE4B^ʵ"ywcr>d{%m!K@>FZG,z% 0H]R'k  Ժbd`=jX D-̙?+} <$#3oL#L\z"J!f^r~*`ukMA#/fq&Z&ZB&v!eKې]rp%-b /0W@_# ߇ 'Dw,űQ?d wc֕#˂h3#,'5ǼvNeQ%i^/ݍ5~4PH7. hVF`&\֐ g T/O@lK- iZU3}MK7PӾY_X.`-[ۋc㴷s?y_b{r1+_;ߋ՗^+@S; ) <;Q r@1h6;F ł92|Od:uzp o1.עP;oݔߏ57 X(o7=Q0zR]? S{oLq25^; DD} v084` n:ޑv 'aMcs3GלNí7lF߄pl(KgF?މ2;lw(:I@ҲuroQXY‚-up~vbh?6b%{ ?u 4vq NbA0Ġ/Z.^^b]ػegېVzA?`bݦ$_/!J>^' dXIӀ2g'ݨI*2`H}~!Z5|ha!ؓ/T_rtwwU0<44hX{*LvP"+S~8{vb{lIX@z|2 Of_YcXT@Ip?/YyVeEaϷb 7[~Μ` h%w $~KkSwL^#D ;Jv~X>`!/=T݉ցCAW sC]~JAst wT''NDu+<ߗq9<]sـ5~IHLUx T@ cXkGp;_JH@}TjMRO#+ ͑$@78 t? 疷?if#laQ.a9WjNEM ,#źu;0[4}0m4 鲭P@WNe;nŊ ߈{!>6Ew;48Zu<9Z$fHc$(ǟ$~zōX!5hfwF=FmJa9?|oY`^!E?O{!xlN L ۀJOAsPXLzݯq{/@qx!$  &]/@a Iw symDiv\/7_!  Bܥ囬i4e]ngG'o؋{FA3S? +|<{{ѣu_~*R[|G:Ru%q{LwQq wUۿݹD 8oAaA-2G.GGVîIs}XҠk9:Ojj|8u"W>ދ!IIl $lc uhAG)OCvbqK7 ra·Gn#Dï^-`X ngfWr%{)0-V]Y=膭 }fL_}f%`4HwH'egC=ºtv&i{q u `Tn7\f#* ~Mzk_^D}lʻ*+v|#V\t {} ~ZL߬L j[ikq2qۜ;@H0td{΋bH([@leP;Cl{\؍҅"kyFO|]-;gKtђffF7mwclpxA=;@e$UI7]=>w8}x?=hY;_eYo?- ^گ{5~2t7Q6ۇ ?iFҘ ?Wˊl!}beO^}a: &kj;@Z/wf 98y2NG@4e3eh.O>>NtqF/;ˣ#S®r5@#"cMh}AlYXyIeņ/=ܛ'm4~`Rm[z?Ⲿ6zI(N 4 "*ޣ`Y>ɵ+aLMBE½z;!I[Yb:[7 Ґgi۸^h4/ ~@)G{VQY>?}}?Mf4YVX# G75yO$\TB~?PynL=VwK+d(lpAnK>s@^CBNZ!I&DUmNWW࡫Aujِ$j Vv4@@g j t/Eا}3#՝0t$=QIzaH P ftD 3]w6Rh WQa] g IkYw?mtDtx+Y;(s}}/רN|QHf= 'n 2?']=CMu߷\ٟ̓Sld _qmj)fH+Y܊ qI˾'y&ڝܳW'=h۱ i` X5@Ŭ|VK5nVن ?OXNB Yv[L wו$O??w֭qhY⥦M9NӤ˂GN.NsVߎ?_ΰ{Yfv(AV{NssTƒ$txI@ltggܪ+v3;m˷_ވ~~.}~3;&}~LЗ~D`W9 6IQ2H`\@CmV䲓|W~p^ ?gmC"1 IPBK:H@@}#Vi!9/bc+`53>J× FT;f  0s3/h}nCXpP8[fp&u6]i<_HIO?\!$. 9g#}u_9Wd:ay}=+Zy㌿Z9`2o-w te#Ym ,ΤA9_GB0h/!jC,UPG,pK@Q}q9􏿘7|= @v|}ԠVW-[$`G(@hiF,d'sOO5ftbC<@ç| f<;4O@ވT,<1VMbh2`L(^hTB/`g7R 2Ą4? ˆ++XE V=7L/";*3]؇g\Xw( YWаoVFDGi}ˬd#:)20!.'kehqYY9ݹ^5(Z5M'x#$0PKpŜ%#w C3Oկ߷Ml,1xD"rٿQq؞Β"+|&>.k5{ d&wD %Ϸ !>ޢ.޳]v %gO>}^죴z ؟h5  LbF")|F?>1Ε~]"`$ H@܃hw$qKǏ3Ka2zN:}?_}BcLGI|îNdg/Ȗ"AI {Eq䷬,p|k9OZhk݃x% ;Ykm߀l<FSS Z󓌿 TqͿ_X78P䟖?XPՄG [--%Uuxgsz@baAD2׾Yx{va5|`OM u=@k!im6|* 00*քΒ3_65"w ﲦ̑Di߇p>1;c% hS6={< oֈ4Ӧ4<-q+И{ĵД +s"\aXȊArYSwj4|>m4{Zɹ@%, vӹ5`StU|t ɬ)Yj@ ,V|z7Ll݌{s>6nA'}z ~[[UoJb3 66|ί;nV``<< >za=럘$!>MYEk2Z>@)r"=]:2cKY_4䷆_G18"&܂-V0w|0:zTі pvLw@íN;s_1.J8"Ԝcٿ خg W^*QP`zoS5Jc};WH,($@ᅂh`Y^C[XEНض/ێqp<ѰR>"Кϳf c-NBK?+?e?|/cc|_@> 1+;(98,z`b#[{?|N-4|A[FÏ8' \D 3[l2ƃX&Njch,2W~OAcg,) hi3ww!f="_LwO0 к%PO ͘0lx+ ^|H@g8YHC %1\YW&Ag6>~r0H J; qI@pÓ 6 t{8Sp? xͰr-~*?r``YV#UQ~AGy'+'6n/pń)~g)\f% @-9?_x`5]ZZSOR1 >yf n1!hi@x ``h/i:l7uM~: r ;"Y6{w_NFF" 4ˬz۔;-HtR Q ,zбC+l_Gt~~2o~t~34xr- CHЬ?imRrS{wc{ކ CXN0m}{*Q@`-s!{0uF>Y5^JÏ %)88f1(@&k_3cAmԧ&qމ=wߏ\$5m3J@tf=wDqBm_7o/|gWQ&K#iş}QZW)1-ap`+?f?g3W }GXNY}Շ&iIss%) h=hew@+߃;A$ ; Q1=/$:hz|r vfdA?C!(22vVt=0}t } \Vo} };;<3V(w@ $H@w@ZCLnXzE/Zzͅ0tf?dX5k=eF lF0iP3;z1@z3|Vi~584ށbw@>)hdt4$j;.;V T+:,};rJLQMOu̽6t4&: |\j0,`3XHҠfe'8T %rfXʏzIW@7Z;m$`Z5j=Ix$t@O|{;`a:3oa<ײ8Ƌ hpQ6eEґae;"'qފC1Ѧjqhw@Y] 1H!#.Hw8Ѿ\L o] {DN S@7e"T`R7yEnVu:5ڶ @LqL@ZmIfCN"@Yogsʻ1a=d9FlpVEL#ΐlC%U2>A!ϵ ̑[ (9 J`X~AT5/l_-?;S w͊o95 .X$@b`B|2'jw*R5p?/!ۛo/ A93߷M I,%䩁Z&<sbY7Ɉa@r9+*׿ƴ@ f3IHd Wk) C}1lK0Tnzt~y:VrteQEjA:O/U> ®o}W~3Oߵ9R̀ & Ht܀1@8ŢWs:tϝx l*^8"6k} ~uxn>iy 1mP'Ci%ˠeP ׇUߺ|BFƑLov?m34$Cg=$C9dSucec&u-o1dt7|*\i#տ=5Vɲ@mCH?}r+.CnvM5wܓJ* 0@A{> ӥگOc;^2CWS! ؇ӣ>T/#g;M@#?{5W )~ޜW|]i1 h m;<m{#Ͳ pn/OWcچV,=v^t~¡x _ޢexee^%t2ޒI9.]lW<"cYyCG5<#3Lr4|ȳVi[Zz؝[f&Q@Phf1[kbt>,pH:H@FLjZ$r?(v/ šޗ/r >Ii̴= նڗ9wjvh9ߩ_5?4hQv m㰔F\g?[q`#' ~a7p5zYy iߪؔaRg p!Tyy3+6L܆{>^'&)Krpbzu%x ?}!\N3eLMOќpkHstN><\q "|X5 طz-r$q6H@K6v_f=Q 9s~Ե{Bt~ȭo2G=Ez }ޜekRIy+G6VB-Aր\i[#XLkBpYƊpb'?Y>J"mh ׶Vv%E-cD5Id;̓3,:>Hx^75pdi۲v oK,k{7_qdwRƐ&=U4fZZ1Y'c{bsw% j}[o71L08< ŮL^ueQ[py&+6G59v $=K,gD,y\Mr0gc.OiMN`U^o-죾<8523yVdXp/V+7ZvU⏾<>}w Y'0}~$iR$ HOstwv8e1 ;tw_"6\w#sSTf G0Tħ G?<Z.都?I@-i5a]EYP rwW/~."KcS$@VA>|Kuu]cJG;3ߧ$-֋fp Lhh?N٧_TOq(qzXX;`C[n&ѧ(z; }R )Jo{g8~W0e_eW~#CYV]`#7 1 Y6<- ¶5v M=0Xwԛ:\ׇ?CZ}/HiDS ~f= 0 ;W*1t{{N1o!T0G Ü+Fn 'P|hݠL5uMUL-EJ ؚ}h2ʎF)Զݽ.H "OkH> /Ȳo$c1,59:Wlx߭#Iz3! b.0HLytus^/LڏLg&p@pGS;^GԫXdE@^; sEmfѷ냷!g+QhFhxTs>mu;\m;.M$ZpiSK@C@w7|u{n; {r}Ce^oVr߳ZfP6#@Q{qldZN+'sΕ0с;+p+wpH paaWrLW@'eKD{h"ӑʼnt,\?cd4ymJ=p ?Gs? Z9)IpwjКŖ'];N~=nWOe&[֣ι_3tr,)nkD?43@ꇹBj 5*wr>OJ}b󟅣/D4rpjlN[#"^ !ܟ%B &AҴd_]*}X t! Z-ZMZa``S%(QS?Md{zSɝ;0>[k&tezU9E%Nird"xA )Ɍk҅ui4)3_hPe|Xc-:tr2D',Ps$<~>ܶ=sp@N@H6z"R  87Pu}Hs&YLW*omZ=RzGO7h9@%z/yHPޤ*Οr9{4<#z4zm#?㊬g*bғ{ ;t;>cbq;CYu s٫m:֋ɸRR4fIO $sҟTIǤQ# K4m7LzOg{Tdp ~uAT(Mhp罉& IFudgRx=F{S Ԡ[5x|%sVnXԦ[N8Eـ<@I#Ci;WIDw9@%) 4s~#13N# {yZqߌmH>s@&#훥T%e ^.( E~s?- @27 l~`ÓZDꌳȊ΂Di8PfD>C.ӌWPn6EV_kh\'^=_:jfJZ5JyCX&0p:|6zor=V{٪8-5?MhDg/jZ ljraZ84@*|FG0ez}0/d0߮#Z8?Ǜ` vd lx yap,EC1vzk@W>!S>`4FMٟrg<Bqc@c@ ~!@(*&`(No8S_O/Tn TuAys, l__*Kp{-#`7zm,/eKH F`%g#*@ #7G3q{OxߚЄJ!,5+.x8sʸg\_ e~9x$gCsՄ6Fည2㗸~k&qG> dckDŽR'K@* iT,@G0@u`8i3ѳznl^.4=[Zd6dSP=0br?U-cw}/th&j9 eY,"GL竒]ϒgQVp2uͽ A"CN!! Lh>g,oS3.zt^4@ ճ_l9+7{JIY}$?/ oP5nƃ{*g`޿Y4-S-2*ebOކܾěHBC;u 8"ۊ:St1f-$2M~,YȾqKS,K#}n˹/k7Bԟy?$Lh;^*@2`uDŸT\N]o5˜ˎZeٛp?槪DO$~DU2Pwcdg{줿pއ?g-u B(mDyE?f[<~vT.wHĈhLH%&TR~aY2_*e1o^{qg?7nd8npF@Sdyl}=.05&K/ h0i5b 3.jc-;BlQO R @Z@Гe )cH4>״J `~~۷|菈AĥȠF@.+!|@5Ԩa>ø-,ӎԥOS_Z 9LNѪ;BjA|x 9!2fiF`` uЍQv3,EE9nĵ8pVǂ +Hq&c0 ,u2ؑa= 7981 ͙)F:hg/? 7gf1~506[ՋԼy`~G&-k.EipL=~eZL qE[q8yFHF@ք3  8`^sHJS_6c0P$ &(3˩Q\~q-_P^XjMfvDcҀX We"rOn&͸c_@mrۿ`yNt?XHưQ[;2#1ܰ@Ydꏒ׍RKx:9}_L{y%q"E:1(0cH(`)ZWO~'"0s30tkI&LPOyK6hWQ睋;Nj 0\6@UL߲m+ v|38Ȟ @G6 e[!U(osQkĪ'b/o*pka:)㗹bzm_jOEWFnad' uz:~k+z;$rE{< 7Ӭ߇t%E;aruStv[` [~az'󿄗K .j@X2F %t + St ~! n<؞5Xv"$Z!e J$-zpJ. WX̮Ś|"7~UHw#cEUTx"@!QfWn9 ~hZ-AﴼGYMsF* :uiblJ|2vkNv4cuY2#0V{&=S5Z 8phLrOp@0ʜEXω~9kq'up g8PziIQc!,֨cg`/kPϙdRBhgB`m/^ ptfq>?Uye*^Ceep03M@ `r;k'qǯs_h k/Bݧ`('U+okӦ.pa*p-IQA >빑{?-SeW&Y{Po%OeE0m;Apဴɠ@_OR'~p\Oa8R~dc-?1Vw$~"Uy_>%#-v}T!$Lgsa{ f];h!L꣹gM]Uc Fe@].ӂ-&*SGݫ ꟿO]TV ȕ%|  Ȝ~+4"ɯȱ ̧O|zSLjȽۉ~ )*SKgh:59;;}="f@In^@N!_(2Ny`T9mT~۽ m˖C[oh7IV\> J1 Os74R (?p@0w|Z~sn>0i: c-8fm 3Cr zp*\X@ 4Hd˯ /T(P8h`?l_)- AP5V)2j|DQW@I#! sZjCh'UyH 7Mqo_K>/hY'w\܄[G$"598cXqW@%I4neo@l#@er碚=LɊw*wdYqT9x?ڱ8M#kr ~LQm) s >Bp1Oqѧֺf_|7غiyvFNn*a,dzD> ǬGDgS ks 7,`'ݲkTa`=/W'XTUGw۝hL`Z+Nd&Y"^Oh2FH %nߙ1m72f(~ .ҿ`7hٷ0wli_TC? ׅ Dd Du2 v7[5,;j-ݿ]Y"`/+}؀wj/ CBUrW,b恵^T:O?~f5F$PbΞaPHѧTpFʅ~w@ tvQ,;\oXFYu1b-`ayG^^1_- įjX}Qsv[`@# iGcͰv M,ncO3+'2[4b}wގmcNGSi =#@ZGPXl 90s9Qkp'(6qHa]nXi^!PG0CQ~U6(C9uvhh>A&Ipd|%IDCl[L˭*1jCH;8.j0v#@0BۅN("*=6c֮_^aLy.h^4i.YG3bC1 50rc0xDW AKo'Nw 8Be˞:?L??[fpS,7l_Dm}',E@_\HG "#@Pİìsf.?aݣSƧyNFixj2 dEIJ&,#`nj(h ܏JK|)JzW-H!l1h?:~ FUsQ7E@H H~]r=l~{NE,p̶kX8Nޞ8ՏkkTL/3Jy] 6އ*y}mȁXr_Ϟg2%EviH? 2vOeD E.*jE'*Ao*\vWя?^m (zYƂX@OED~2VVp\)0 I=F_S M8TS!F?ˢ`bmƦ~;燨7k.pyNmoV'K y٢! k$j,p@a +qg}8Oq`7A|,ެ~dH"L_-fq5ўm.,ˁu*%SD0GB(^p-Ӻy =29O^O~g?#[Qk+X'q.nL[#FyWeCy uFcv?O/} ~j:>g@ 3_:1.r"iZNH׬ûkb,W$Hӌ1"uJ%eu1X[LP3쌾>>o ;AS߆wP|8*`$@ętVaHTPQ89` Z>il|sם@ꎾ?M2i_AR9.j:Y].q Tx?o$AfP3`{*ҡV?g߷x"Ɓn^@oӎx} gc~02lʼnB!pDүkWO}G?|Ô ]k~LIU*<Ҭi LLH96Ê5+PoXsI3siJ)! $A͘ ? O5ovRjvoHbw w6>N|w#(ĥM1௟c (qT`O&BDq:N\bccO[|9]g:b'uJ<3bāѥXf wRi jGJ tE?0WUBx4R뜘` ͚[ۑ?gm8@N8 kp(Hܮd,u8u+q t38M^.kWPXj헸f*jJ?$!r: EU=Ns: a:07I_L?p/ZXsC]'cw␔}%\Bd8(@(m2vj\<7 a߰g4y9~ra`c^H_?~y۰CLD(K;@2"Hmc ,V?@c D/+؆厑# '`?Ѕ{a5 DBf$ J (0u>&+\4O:"P<\cggu[pm"u8q$bOM d]$X1[&d$=00Xzwre{OqȀҘiPKXO 垱*v0y^:eVxZM5WYM<@݆@n Y _/&@q'?2N@2P0C؝Xu֩vV]7c;5@-X{߬Ya](&us@8r\ESs?Liy_Iґʤ?U!6w^|:o?J41_a2 ?¡[~^GC2e=߬C\U"CA5 B@ 0q㒏^M'g]}ߡ{oBYTz6"0!@W*zCk|7U Sn hT*~QOm ~ WZi_Oٷ^soJ |ݯY`C^B O\ahq!*:ɀh]K>Pr?e9G} r.Лݵ7ŕd:5+kB$ † Ď)=0? Iy;PE"p+S2>b9EA5`O^0u 0f/[zO K$y {TNހ}C՝d򘀢]@܁~y۪btg|k2ןgwx Ze)ΠY{P,CE~t@\>=v~Uc)g9V.' y* }gY0u Ka^nba_ta%D:%!'-L8٩:BFbC"ؓ-p@Qo T -m8ڏ޽y= \{4yZf~c[Ag?0iq<[3"GJehc3 @YM7_)cè/ZoK o_]@0{,.ʬ==1ۡ7 Hq/w /-Lz)PY>y#<U0UQ I#Ph{Яpa( 2Lw|Ѹ蚏c㓞~}nn|43M+/IQDݐnDքlmi"B?U򇒵ji­}=DеWـ"^|cYߐEsPMJdCg' g\ N,X8TR@S$$p byဲ@,/#C_2o/#O S7/3Vo m8CtO4yQ#"iC~hY.dcM,A38*q8a/IJ6F7z11 ٲ5bq *8.gZ[61) _F߿# "?sZ@¼a#e'x$2wi/<F_6q 'MSaS%Z9/!D(7`zCm|"s{GwwnyvhI:;rZGNhܣNy}G%ůJfYc csf:nJi%!$kRs᧭_3owXcJ-E M ,<|?9Z͑N,?t71MxFr <&% 2#sKaF@xGHLjSp@]Ub`?AwAv² CQk]/ȷgo*tw6M.&*1K [kok/A+^&$F@&2\;I{E[k_vYcO|<ɹo5ԣy$6{HRNx̣ 7O>IF|rD=[t%DY XIΙiU&j5~O:PaaG82E_]~C/;m2+tvni4@,K>sVu;zL>q4E)0J䤅I+ pc f Ҙb>Q/d jedΑts6T.v[{ޙ_ʳ]oa>~_MӼo*R]3o h/Qc~Zff3 o))ǒ5k5PXh#PUJB^aҟ6|aXbn B9ϖv LYRCh "jaJ0 I 6@h,;rZf41P P䧤;!Q8N8 l8PV'ҏ|c6r&cXS39+LNk %D7@rAҾHڄnD4#C_ќrƈ<-{] ?kxٸ976Fp MGS@\z Wg Ppic]D DŽ Ci 踔 .K3-8^ q_4}=V'ir逿[#M}2f}Ju-B(R.ݧ374M>IBFQ,D_C ?"sH=cX׶6=`o? [?^M'6ɜ\.ƾzdcI/@eXX .(O"/,؛<)V?O׷m~vçXb aϿ+/\@,w\b.{l#vl.[sXQ\c+S%{̋MW'`̯fmFi7],?ם 5' ppFЪ9e ) $H 0kK؈l[WCdp2?MLuA!.>QOq3 h@R``Dpd@^4~OV8,Kp оMWjB!2BpqԺzqۮr\0+p}|¹B@ ,s1Xmx$"Kxá_ HO+۰NjÃ0X8 XEFI>="q{BँzH^\u"\8*BM0+ /+'eL9Ri0qe)/ 1&ln`OL' @J\EY ~0jNaG ˙tF,. t-TQ xX3>f?Y 1h͂vv34 I:*.e{ZCi pAwg $A*8*v Lw 5JO"lR*#O¥<_1n6{K- 6/°&%=6RL3DՂع?660` 6)Yef' bAt:l١b#*RmYD|&ZݽP$;Р!vR_QVk.d762vƁqh%(D@ w}Wn¡UYFcX'\bbB읷➫ ml<"C;ϒ%)519FEjRt{Uொ=P?>yѤ?*X0^ϡY!~{oQ.Y p3ѠOv>|{NX.' 2CcТ4B@] E~gJ_,ƽKtCkF$K$<TJ;'xa;9l&+Mh5M$'dJ T"w"X59mgD˲Z}’}(چ,> " ^lX6;(y@\a$@h r5$E<}N@Wp9 $%ᱮym=E 0WA8@hF@YycSe4/lS,\v~vKxo0P*KeLu4Y>mhwy­fQ1^1R֋a*;5tP܏y:Ś ,m΀IDHa;ql"0x. Yw-O^hJ?&8F͈\D؊2%^.#1lskSZM\[vp^oI.-S~|:4el%%\ǰZD䀫}{?7jN` I ?p.Z,h:8OzP~C 7!ϓȄ+# % 'gF{An!qDPĭ((Kad4 ͸†+~[xC=X D$Q${ƣ0+nƽk˾$ yݬ4p\,AiB0m `""+B.[INh,:gY^A s@{)q-ͲA7 _7\z}A$5]޿m(GsIͅ2Eu t'SeN~U5OۣOE(&9Vʭ|C׼ס?WO<+BdyߑT4L*E9K>^U\+X c:%QA( 0\T 5=@ѲN,K q7@xx/*D]@X]2O ~/NQBht#(ؤx{Uy@ b<ΑGw6r)А'n7;̚8"]V\G U)K󠴴˩e'h&g(/E+gfM5(bFG @Q,%~F;f쀏;W50|C (~޴ l0!<ȅ_ 0cD2BBH ,"C{FGRu;3N|G?r7 ;9Ԗ-sLF3Odꓦ/q@^GF7tXF Ά_옕'VC쳎, V @؏L_b'QE^/ӳ$z#c޹_<Zj\t,%ĕ5#e`/ yà (j$z%tX?=W_'&cf:KiORs 7xp@-ub16Pz<#OXQ[gO_EX F W@8RB )3B@C|&TPV9<ѓ`B3 G<z~k,D=;Hop2 'vQ!N~q 21f$qڋ_n'ɂ_BO.s*]Y40u `ǂͪ"7ru 6$kZBI(Io|k\h}nxҀets$9F"mrK#|wA%!c (U Je" 0sdo\\~ǰK/z6oqp[4u)ٺZv1ߴX3{iQ mS Up~Q1){nowT2<YhʹdsÚt}PDI2XUx}Tu[?wbWsqܱDQ"(1FBYOwll'@МAHR ! $NPrRҠYP^Ka*4w, F@qGǰc^S'>C w*״@i":$_G<,?(}~a1P=).'C]0,Nt}_b7vzYx5oL pA>[í 40'^!p({Pph$%'L֦ eF@q쬲ֽ:.xq+5Vxcw2(:ŕFs&ІF( B^ws8`}{&L?!H?ƠcZ_홦$tPEUNEߏ8YbiDA}4!Nsv'fh7CmUI5t3 <\kqԅz㾷fzC9z`w<>#},W]- on6஀ђx|)]XR_Q=CA@RU׻ʃ8ha4AM%Q?o4z_>f%c$c]~{:ER( E}Y*lu垷j/"K%ŏM1]gC!i~2* I&KWuH9oR84:ܝ&{ӼzOVGSHxѱ~AvtQtlHAk!1L@ h x:׿ p;ї=Θ~kǯqB:`>mMU!裂A@mת2: d'}?RHf{0@e * V>>|Oͩ&xys(~QB-~H$o5ٶXb t'^8 RE}ǻŴc m=j`O/:.3D;p?ä|W׽[^7h,[^ο~1vWP/M|SIŁ;uWYGJIIy~$x257֋nL#uw}{0FC:>4=PAs'=H/U ySIC5?=´=-ηp2D8e yeK]7v~k'GY`:wjgBIDhڟ8y{K]P5[Yo;-Jϣ扜p^t7/H{ҭCh":W*-Rs]yDB͚Ic@ u fp@Hb Xr?=vɟG+l T?SXGi)W5q=ƺ0Wk؈FxdK۟ޣ\1 Ukkl.nR3X ~&pؤj$ G[ s KpsfX}mN~ړp[ߋg=J Tn}sp'?Am r,`3!|%(n E ?eχIkd=~mlWy|@/k0?ԅ3Y`N446cNǮq0Ɵ `$tN7;`p{w'+M$4&4, {^?@)v 1p4h8P `'?%]*Q[i.{;p_e÷߂-;thd zL*zG@LUR@$ws*w`׃{g<iV76a˖pf>Qin^2(g JHQGj m@6uOS]E>@y(p8 ='A?G`HT$#vX7 |{٫P\-{]:W49w'F{ WX0_ro9?%Q . `&uGۉLM~9 >H~c5B'z>HQ&M}) !}.?<[ DAq賨@)(@(y g<XsY'_waCk\F@=信Ģ[7wS#7iJKs~JoB_oTqf raYS4N۷68XDpMI.G:$)TKbL Qq9{q(`Gs[ sI ΁^ւ@8 Ywl\┧Q%/~w~ZC^I"?R]`/W$ >1t•{Tǟ~Y럃3X~@S 3&kt;0 b6q pLZ1vPvۉψ~R ,c˥i L: p8O>IH } ZAsDdXVӿص8e/b[ww#P/겿IL"~L_ XķQ kWOMh9;K+` uC%\K]vh߀ Z-weo3B/f0$[ҠgD%ON㮂u\p&HF>NIfēD~\?CΟIာ Aۨ>ģ^ \jy+O\͜mmלP/m.Uq:h{+K\oח`dz~1c*vZ%HIo XrwèN܌>Kh-?BJg./rW4a?/0 Mٛ8j?"0Z@CDW8r+8T62 OCk5F@}du\ f}~PܟV|5LX3hf88ӷZ Z-$hr ^ '~oЛ:hu;{;=2c}?  'M:Q$;9{ &vk=p{\'uT „xm\H806Ħ h$!%_#r%ōnSڰT\7g>Z^~M4~#Pc)"WP7V".Ty35&-z~d2D`dz}4kb忐1M <`M݇ c'oh-^ $Ћ;%vޣ ՜x3."1Sm;CctΎ#x/we.!>Pw ^q_[^R4W߇[E߄6pGex#h~ok󷭸d=lâ; `.B2#0,/qȶ 'W-UI >T'И0g' 0}X~;ˏA{wL.3=:z(w-΁P,ߏSo,otB c)gulpm{β WN.Xw}>_ L+[ #{(_\w^| e^@"hh q规zS}580ЇEN{n N8 Bw;Y[J0@=>'r AHo8dg𻀋scm"~8>8rH9Dz 9 9ѯ3Gјq<u8悋2܋Gv&[}P/ rqT9?Goh{pa>Q|8£Ա4=KHb,o[۩>wq߼ ^zE_փ77s1{b?EK%D"_C+n؀7IQK$u1'~ȁg'+`Z׷:55G㒗'Γj}XpӋ[O4SPx%A|6]OJe~. @*\O}=go#.gЄv4;0on z:_Fv//䯞pޣLf.B%|@pœÂ> c#IB61j떣wK '=Z'/΁6c"!0 0_-]oV@xV,ctAЖ&Er܀j0ihtl`:5VcG/)P>xp: c5H ܽv!uExV]r(MbnLߓWѳ^ L{8/ 'K\vXK,?@&$~ vxOw;wK?-kt|́ij8ЇrR; 0}7Oxu8vJHBOoEg04Nm{z3^tNZ82`ΈZf hWM< Ѱ_t;\iO{.{kqŗh&?z ~7; z,Ŵhr7SVE'R獘{1>--z0/xca`iP0~2:D3Ә.[!0|(:wF`A;?AB^?I95vIM>,K d1~O ȍ0-Lj)V`L5˰? [^lࢁN֦i~=onFҘ\ˆd,\ݞN$y큋yj߼c 7ɿwKӶ~ϼ8l_0@7 Z2  ASC8,󖁰}k b,O7/Ac̋^鹧ǰfjZa`:pB4ܻ&d>@B8!ABC$Bj`X8폟s/0v}謹=f|F&Id!x#PW 겿r#Ԩ7Rᶹd(JC_ʀpq+ w V9t 3X9RL+Q#kC{\zk:d2هEIyP3yY`ys`R`ԓwLQ|3"șzaw^[< )"7,;Tа _6 Kh3?qōr BX^O}N<G]i0ckRNg?@[ƌ>4}q &v\H^@V=c5VԎ:DZӟ8qZklt!;XavWef׼aFUfxG@=@TXP7c.}YEFH鯿w\#5?X~ϣr_XwR\vi 8'g>뷜M%T.~ l}زjbCŒV^Ōi%KCsXF>A\ OXwEXO? ր8 dDDDx9a#Jfz>"8o$K u7?UXe}](&?!69ۖipdy $c\ PZT z CCrY*MunC&/o_Ё]9*9 @𓜒>OxzLWq^D gG>j=Z3?V<ϡ-[l_j`pdĴsI}PS#1q Ahwl'O| 6=X{-㓚TcX?fFX),){Q̘Ԟx1B  ~#PWlA 5Oԁ0Zb_ik8)=ID8 l7H&TH[g'jRˣk tعMdN:+1s-<C%iV9-mm]_p@+ Nx.-i:X iPmͯn%r5T\19b?Qy?@9\2Łnjރu֓؅9D[A$num7 ŀ[oF?o;^_-7EP5K#:D̈́\d2Sdrs5{]|[kceon2CtHY֥8.ģ #GB];$$$P{ݮw1ѣ>Kף%wlcimGusp̓,П8~P<&F;1mgϏjm˩!uYd:FSLbֈjGPW40Agbe*O3;6\oy0wO`:}E5Xhs,~s:{w;}}O[C! 0@ 51a`Pǎ?OŚG?$,#轜$o^3I3}]8l.QogH_g훕γ@0t15fb0JS ?ߟr?ca 5"e0-D~Oـs0 uZ}cv{/e؇c hw"-C`;4^_/kSQL17& X?Ua kѰ@~cEa.@cuS" u@yu Oe †i61Vf\>Hu;fmmC &z$XJ-W!7\Rsr3 ?c@wĚ2@z7ŏ`}ZyO-m:G`2J?FwV 95Am-T\NgIie 㧝I 엝w-}}3hv{hX ?󴮐1Áim [H,@Et0o 'UUԗ4^9hYU_Q8b- ܃_OPJ` '=#ݷ3?V3Slz 7u MBgv,<z[)hwjx?"Rc8ySGYݶs}VFs <Ln9z<+WUtLĞ~mT<*2ͬ/f}[O `(6ƀfwpXfy*t UG;ou& BWI9fk4S9Hɟ v^@6|qo;˝#B.}-eV2^uzFg.tvn,O2y:)Af4jw@?6n*mڌYIe0|7>`A>E9#x|zIh&tvΛ{_9,S/=C`Cm]̈́CJ F@=֒luV>ekG+]zfYq< nLdPu m`y-[z{_~mرMcPlPXrc%DXB !%8xvs^p}gsU}oU5j9w{uV]k}nQaS|Wl. \&W?"L a'\@8\$0uC9Ixuaw9л|?k;/ +AҼy~x &cAm>N g@@8N*7]o2E0( lA›Zh]ߑ"n/ٜ bb6AU#U {m(?1)epƿI="$ukd)~N9i&-C z>}'E`py $ JtAvҜ|;/ 'JBȠ{8{E.#4oHj ^gIg$]Xg(@@斸\ڰ pW3 ~ ۔?aAB ֠]WOA$@A;sP!UX'?O7%wv&>Q)2/h(|^* hEpF ~}5 {?_\TX#9^[<iyJS`HD!(}+PJmJo 7_j5H} @tW WhA-KCK,v-  s9h슟٪6B XGm 6?R%;\[Rqx[__aA#_E7$XZJ2R܅ԭ'jdό$X[ds_~R4HX35=T_T4<`]8r9VAa0J5n%e 62\z~uPeQ(pѧ[ I, ~C,֖|z,% Я&D`mYCbd%@}X%HY%_ hr9 +B·Jp?7~/ E|1د^I^̵W+ U>24.@kbҁqoɗX&)=]+!&x@BYLMgf 8l ,ZjCm");gY6>8wO \ ﷌{ ݯ^( y a֘U)јsxtR?/g9H R_GHȹ`}5K uk{o yPYΏ_.X;  |3.shL`a)EgZ^WF3aFk+a(ahxh ԝoC Um6e TԐx(up3pq֏ ڮLUfT vga}gObʌ282:[0&|?(5nƮtY)ǯ& 8ՙkIAո 仌92*X-Ms lA%RCٚ|r\wJ"/vʟn#@XXcZ?IjW ' /d~8_$* K`4,~^;,>kG9E9g(J@O <^gQcyWݕ"rFPgp73u9"2]X"`)dW }QE+A &!  p*Njn\^?&` UZlt^x!/%d8c[oހ3=ocUʽjӽ@B/n ~}i̯I?{r ͘ Xf0P,2!c<aJZߛ0 1aZ;6/9O Lz> '-L۶D$Zot x`0k_oS/? 7xP<4l |+ 2 H@4;C8zmĪ}OB@>+w̌tA@e 0r!ƚ$H m7;qKsoY Iz?vϏ{! kr3d{؛P-jO</<_{?g ^kx$1TJ2}PTla,G B ϾvWls]\m.kXd酑}S$ *}!$u|2ݯ;36OȎG`O &4qRlpuD%m=8Cq'֟`xZΗ绯X._A 3oql i\`;/g5k+@sf4`UkJP"> E"%\;e 6QQ K Rb 4/p˿cC%J@8܇ɒKFp#2mM,ef}PE*^(W?=T)(q}T#v2ʭe?-ͺʎc9ׄthfTsrE/\6ܚD?͊Oo.4mV,I: /8( 瀲\ -W~-EhPSAO2$AgPDHc/)"d~:,\ʫ BH!p^dqQlTWX”e-N, S/6b]SD?dİ"Ap{ihkXXH У D#F n~gfK85p4)JMKuv&uv~[A"j̬r[a0;;"04E PuI1/ʅHjV>`l91Dk7h7n+  2-\K;N(\9ae^-!`7@i>L#_ϱ)璎#£JrrO3x{?#R [,1+s..4X72$ZX \?|''64[ `#lG{c'2,{*Z'\)|~&ꀿ>L՞BS D4~ &wXmLn/3:&ޅ?«B" ;y(|qh ^m'*q D:Zfn0>LbEQ5~>cwvdDl3gfQ&Z7Ȳ (^`  %q^~;UidK6~lbi @ar&@*@Y,e r#*nl£>ݰs:r%*WUS 9GmNi?Jڰ* !IPj5YJ3<{pZ>9=X(%@k( gQSGg&؅Ga`'yfAOXm^Կ/#$h._۠,7^rKO/}ʵ&7C{0σ{ݟxG~HPeX :oΥ,Պ]*)31oUQC9O snX|ܜRљ݅%XkaC "|Lqzŗ}K2*5$,}>?SX`QFy.n"F ={T|)' p\VUQ;O݄I;-n3fR1<>>;@@VsKwt?s :z˄?e-,k6'cjfW*ָ&" N`w_4, 1Vݢyu? iL 2ΐ@cNg:ȅ$'{OLg%{]@ng05lʉ pZ`u`P32:BˊUց׀U`dfW7 oaL}ĕ{ hB&_x`f~G3_-;TD_$Eԓ*@4PO |,~C^?PRAL= D(2>. 8yp 6TOcj}Y>֝kpkɣX]2Ju]2ѴZ>=u#6Mik}>"{@>1&}֣^yPT˜GtS<{wK-=esut*߾mi%Ti)B ;>Cgg_Nk>PeW0XX 7X ˪y%(C"Q* \\B'R1BMe*Tp׋Mq-ZV*f/9p|W ?) xOío(0+i*v=KN|<]AM-i݀ta#_^zg R:uMLжc]۾i,0T.܉.#ow6R| %MlO2 NWm> LN _*0ÖsԣįnSWGwt9L@?A LWx=g a)/3Oomm,c2 "DZXC4U.9oAQTہyW/WVM@-pX$o`\%0sBFA_DH|xXC|{p &ǓL|jd`4Uu]78eg,bU8n )eɖ LC aXX3̦kaPkӤWu8 +$Vc_x ?&\{\z9]@"-/ !7xԆve~|.칃t[x~&5&%Է5%1Y" 'vKj\ 'ˈFb%pVZmND$2ǝ&Ě 3?2XAbMZӷ}vGVPh 5g,}X3e׭!=:q Y`}aL+/V(}MQE@T !ۏֻQ\8:9oGgo[ -:痁;h/g6sbiGH`1ó+߸/ X7&*oOlM&|aOL4ݚ غ42ͳ2iӀ-)[`grY$1 dy͞ɭvO] P c?bj O^K:]TS΃iZނ РF_OlMPO<=i=ue}{P+vnUu )s@,*r8 Hm2&6}BTck.(D?݇Cz@eU&&cxv YZ7gOHAdC뗨oI,p_Dzn[`u"0TYx5a?EtGӎ߅o$| +AY}#VR[FH8#+ߌ5Blx|}m ~~e>YTor)Bڞym)@J .qlc]Rg39d2UO/Tϓ 0`RO߯p5fJ4N [~L묧 \h&4 ,->mԣKB/:CpFkzMtfDb\b *kx%o#[;sVSgh^l o>wD)09Кz?w^OʠdlQ¤ڃk@⧍8,WEm_ۚkQ>"w)0ŕΆ#ņ{jy:1 _Y<ɀ?X¶c?ʍtjtȑLm8 pLapo `m7erYa/xм^l!]Zۈ|ނv32A`YFlh.+Oڀ pYIrAַ`<qjv&R xz)Y+@ِ ;6.dٲ`ڲ} 5; V LlV_ind\T&K(3BAnj$-T@GS%iOn JlP*x )|S:jFT'x<3.AzD[gX!4oc1 E2Yad2n- ~BuqR6+<`2`޷U& ߐ,_L~l~jS=8; VЌ`_C__NN^.}l6u9OB!On#!`?݁CO/Q8e UV"(0'.#H)A{t)x0W6)F&X--"d򟎗0溁O$VFB?+| Ah*OSN\%iNOb&N&8@:u|]"Lelj/ :pt Gp4#GzSxZLY,U=Prs&\Mu̮mM0x^gW? Vmq{ z~KӋLzXj\Y>s~WQ'RgB&x|\ox׌u&4e(|EB_'>ǪfVEn@gKvJ@?J_?,kT0^V{]* `UOyyWK'=?'~8$=>vk7 ֤ 6M337 xzOtx)7 e_G?ȉBuNewt+tivopǥ/3` '׃hAelSGMt•}cU+ @S2S5@T<{x|5XnJ=TD(µ:ߒeӄe[ Xf$~yl=K _2wYO>2pC[-3TTW:HMc.I b` /_FP =H|D/DkXztuoo_I ?>4u&\|En_,gCШd 6No@!zf-0!o|(J}:ѓ3Vh";v 7VT~Oy@8Y561ұ0ff{s\ɽkAeRLLt} \x"jT7^{&N1:l>[B} it6|O*қWXįVFe d EhHd>m27A6TҊYܷۦo6_'pWAB9h~wࡋ0ab*}RA +Y1ݾ ,JH6ΏΠ7M`|:Ýl`, `\ Q} ݶ 2W F\6rD,XMɟ4>Hu"C ƚ.73k!eʃ͋c&DnY 6Re2f<!.C8>_Lf@|sM @Uvp MN~k"O *G*M')psB8rB#e뢔mrͨ)@c@p>eñb}؍=&} @6&Ju4Vc@`: J lNe>RSMhpgf@ {th ۭ!F࿋>;wnT5vm_wXƬi6Ƣ ̍E^Q;AoD!AΖBxȞdm* Ӗ/I=?Oj#ۗ@*Vhz{C4/#UCmt 8?lr9WhΕA ~Vg vnr~z\3Ÿ3(e^ |إ}.(}Y`7p. $V q^cVW>@̵#rȼ'*7OʟkS:EAB,”P5xodi&/Pd&mp ID#uv^7 8 Of 0U= ׌Kj_]H~9ps.}^yL5 4 dbD3ͻ5@@]P OpN#ieu AF}| V⇚6rV(HYˆb'\eP`׫b^ZNDa:|~e/#IW(@B 1lN]:B`x\g]]*75Մygpʨh}eT6T=j4z0k%8M$r/`Ĺظ`cʭ rLl7]A/oÂi&_Tb|nZXD%>=d.,ׄFkpdb<7 Sô 4ϏP ~W?ky*ΥhR9@*q{3ٗiP0T\;3}Qo0ZisQ`UJ _"Aƌh^uevDÅs '6z+k ^.o91oDf_|~]td%:g nkی`4`k!$$%R za@"@x ә+$1E/K ri2 bɃ]96(;JW#@:c(m0\fv 2p3yeͮ5吼Jj K}r sU1,OWE ~Pd=70wx Y7)̎ml|cw Pܮ<k{ a.NG41!iP qqK5v?6X.Р2`Zkpq.9+Meb,. ˅&R + t(dM7U ,;#.,K_Js(ߗ!iI3rm]L 7] !lҘ]{ܟݰޡG[7=L])_B"y 7Wxfa|0O S%M4 ˔܇ !;jv tߏafui>6NJLКMU9 Lۄ+B2'i~EЗc>rʁIXn-<]y5q ؉Z8}(\EWx6|Y(Pfe_бCef<ϴ:6K/{'[%Okh>_ m@1܇b[ `88_4ЏY|S5Zot ˈi&@cLlPnSSvt~EkHLa/G> aei>&VHB! EQ 1)&NMȟw<^!x.35CdתM8T=YyXn8k7ٔ׵xWmPY eZA Kw+&ו! D! luYàͻ]6&&+ٜGSz3D!e6QBn%%#_WpkVm)o5cGwW\'!mBg f/ 1G1 Z) p3my~_^P(5.|p ˦?MFPi&=mtf\' >ZXah<x Ěx6e6"E[Vu5~ \LKڀ#Tt 4C&T\)͹֗4ր.|~c_F|sn _υS8 -axwL{ (r\u~#KuA=y{#7"BIL8a,ixu~51 ( ?H[rB@Z{6b!ƦNIswS‰/ R2u XCd r;"mM.IԽw.Y@F0K<*} hѣVh@+mФ$4̶ E0h]Bjۿ>nzH>e9fA3)`ӆ rK JA_=܅`ľ؈DoXY,j#Ngna ,x0xjr6I'lB(VY_嚲]ퟵ~OMF-0rc 7_U7*P^~.;?4Bҁ7(b#ۣyU& liMuK N&K}8lY,Ճ ?Wv/emlHy&WY>]vM&Dh2YQsMNcϯP5D?8؁!e,L m26wVr\̏1n@.:(;x{uqx+E@M%60I d<āePݳ7WE86=~8S=B˴i?|  a0x}>e\R/]TTpq3EJ8-%QThؤEz`ÑJp5޴^ewA=I?4WԆF;6 %̃hT4-ic=}{4r7=+~ƔAh/C8&OQ&@iƢsZB<3kIv-Ǔ y]9/[|v.i#mUHHQ^0m1^C,Ӷ:l: ʴ4V_4]mUɏ"cWz6f @p7ѽ甪ƵxER-2_5 @' Vgsf< djhѣFwKT7k#mmJ-"JWfB&iBn ;0uwM 9G@K߇ֿIZg @6 >OB_ .IE4 (XPjzkUjJ"d{L}8 n# `0ut ʜƴ@D1eo ڦ&_ڍdI>\dTtIՊ~.N7-M_w ԇ;^m2sd.К7nnl91fԁ֍>xy@"P?W%Iߩ8eh|ξ xk1iU#c*0EQ?momp%nف2.5}y4h3?WvHM`_[*s(l XuDz 3P_o UBFIi7~| g6?Cǁ7g7=ϑduMj̱iX?JP"tQJ5*~ Dg9>e 9FZ0XA؇!8C F5me+_yDw` MԌ|~i6Ldü߲\:h~ C]"U~u套)C7oۿ υg4M63_W,I@YwMߛs^RlJ*M6KMhiǔ 2c 1l<>,:Mn^`?[Mg܋:/} Pba)2X!闂s]W> R7ȇ 0,\T Orև)hj q2`o@UBDB`m|Di3pQeqWiv;:@TWaWi%)}6.~>?(x-6. ޙR\5]{A EIF  EqQa5媽e6O9}uK'T+wklM- ~%d@U4~PT/KH2+0r\t AQ `3[ZY.2˛iWԦ &# :s~[  |S!t5f=SkC&#_kLV@*,~JpFB*(Bk&ȯ=o?YX%URU@Bze2{Xh?38K/y45n i }{M<܁sha.BBA>uA߿? ۋyoBׂjZCyZ@݃plN !Y@7`3U;s}ڇDh ]@O7 W>Ժ2_1(" ۾k<}Wy&HqY5 7یUwB5GCoo >|~ ц1qBp~ 0.$OsL0" e@ePGM_wGXF(\X-OyTa9t]v4VbU[5fS0^xnVV I&77UQ&\<|e#,ͅS l\BNG2x(݆[yGwʦ +3[mǕ\4&C_kٛY?r]P|`,&R.W]^LF!3jo@5lL;nG(`X)XhҨ7x{Ѝj9Y^2kQG0H7+o_¡zaWks82O~L1& Mk€}YL])ycڷ:7, E eԘOGŅ2m@X7}+ym5i/sws6Ǜ _"MWl}0q?4 4}5 == Pћ*DQ?}pbRjj0Pou-N#~jUkw"(/,~E]޾UMi [elX _;sv 95y}pǒG.| %_gfPFyHcWDF-8[՟ьKU93m !|-<\-->0 :Ne Yf})lJ/W DI⫆u^+0C܀MۧaZCPӐxTWgNۤ7ȃX+ ~~4~)h[2S 5~K7M4xput&| oΦ0:8N}Jz=(~_Qoɛ^WW(ICj@ڈt`^ꋇ/xjkQyF[Y/|.Fuu|~EW MvCyN ?H#2"X|ͮM`1mχ[VGV-{]5mk ߅8 MCh> ߴDoӆ;WvmRe}P a_ esO׬Sp*7屫Xʊǂ$'JO]g΢ Hca_%EB@`:/jPc[jLo(8&j࿮GA~\Q7,_[ui}mTewL77J6?$ +ۮ^_tnČE:xЫpYYŅU0))~_\ƭ[bjLj#7o.ӦVO}(||~S_@X9_Ǧ>Ujۆ*Ұ|3A_x;>>>yuǿ{\d>ג*) kX_Ҵ_v-̙yI8̮Р_mZRnVoӢVVjX'B|˒_چob>[i̅Bq>w{) b9J,9ykSO[]|mLyX4@a0SɸTo#W=QFTa79b BC}S8K|~I;/\h$X/2n1_%o`π)?r=,L~ew>~6 V\mD ͑h|  3Y7Qu䜱`r0D42yC͌4hfZ]/r`v~ ?_$4M_``>ֿy+ˎ!ف}GXMP[pK\ ukܧ8' ׊ >-6j3e4@*i6tl>26xr1ML1%6{9kS_}7Fx`,;/:pÅO jC0 EE~ojtX8`](ʭ*VnI6.IEx+׹E4%OOl7G.yO'!`c^;;3 b`0?I@E(WҜJ5B58 yN''~Bdc̻(D];AS^RմaSEWi=7oV`iC- gI1@X8Y>Nbm/[ߑK뮕>wYW%lڤ]t/ԌP93顧?Li+z0IhdqiFj)$-iA'VևNO_3q kqv]~ɓUY&2ڭ3]!ht4!:GX8 %:ot'"pDK3o3:]CnheMB#b\Q`P~_d` GCfFj 36tr'f6Ūe}/HuDdW_!_+'.M\bzΠG& 6|bk1.ʠ?=e>p`9g"K4z4  8D9M&Y @k%m7G]%?Ze߀ icQCȕ+:b)kkڌˁ\v"G`SE1]uŔX!㱍7|9r aB_LĆ^u?˂OupYBaRcl/nMǫ_46̀_j@*]e\Ӛ<+ :+4P|y+OfB} ]7&trs|ou7Z&19G?YLZ2|< m8r@5p})$4O6 ߯Z'FXiIV4jx5;6Ee h~pg ҕ-A *c)[0帲Tf M D>2A]W_y޷ K+q)p}M@;|q3+ɚ0~2; RV@AP) / ڞ@YX mȇT#6^_|QmI1%[d`ݧ"Aů-M෩%%w</ PBaVf$A_P@a8^'²MU?ÕHBZWk.5؊0}sZǟ܍OCK[JdwV4RB.ا1D F:t&U$?" DQ [d 2k- ܆>y>L}_XL6:l 9tڨJ_m3  0^1l@m\]oq 5 Ф * аt"0 "j)(8) !^ ]V|sॄ  Do\>?4_Hgp t /M +H(Ya~ F;3ƙ|deVlKo(> _ȑx0"f\c2/:bF113{S>k"#HϦ Eł6$ #K8*a `6.k]^WioH>u.b_uK2 *7߆ǓY)Wr,€t]VSTإ_#rl/N .-> b69uv\w(kq_;Mm l}fYʶ~|P968YT:EAXl 8aϘȊ1 Bw9iI=BA%h17R] 9 ],PTC/ ?@T=;M҂dq]y%ˮ_{̥3Wh6t7u4kaR#I]k΀q ,^CVvMn r_8'4ΙNp35IІ~E>rN|~)KVddB~%O:2 Q@w[3mW\s`|,loVs3n4M)lr57Կ{0 ddݤr@!(Tƍ- ЉE> 0t04B$*dTC 1UWT7 0IK0`o7\\tF/] /"r.suX`؝,qz7on ˸]RKS +z# >M)^S6i!Ha:A1 dY aB #7u @\UpD>?|~.^H~~냯s'@YlN=/]ADK~p `gl11&]f6ZrF=v-/dz47}Ё+%V.-dƾrx"(a$ M9ܻ|n+b I1x}$l$yI`33PTi9pg*Эo3EP"k+0 K޾'2BbAD ?J,#/IkZP\=W4T큝*E $m<[ߤ4qR%'~vS m5C|'NdQĂeQ VB+&B.nIZ8fbN@@uo.{8]ݿW/}-~\Hx|8.B^ux ~ǥ"q M_Ku'lcץaK4_;_ e_MHw&_vV1!n_@炰#ڎL݀+/eCa8,&>!+AuF~ot7F _ϸa!A$f`̞(`&$3ը_=-X6|;_oi`߾ff 6w0 8SA(F n0F%0apEؓQ Y2;L, ϻkW# _|NDYCuT!R~?;\d(x>p*w QC=7ڼ\o85n[~ӫl '=b3| an yZQgUUX 8S2wKn{F-SH㒪+&ww5qpϿwD!Z hn-`C>2I3C(9`B? ecGK_,nn9 Ͱl^Ic]Pm e$LN 6twDn'"vx?)Nzȕ+׍2)}(ŠC uw~ _/>~ y}PW m*+M[}fho3Oydsmlu󲼀5xŢwpa]3]t;i5+δ1,WU'nyv8Sd'DУH1 {(P 读rOВ h{G~@^I'=?l7}1 P?Жg_M/{.z8fKh\Ce+u\*an;\ѻOp yhU\4 umg]>%pw aTUXi\G7/<q{.8ר!Wrt)v?>p+gTw@Vj\}`4p??'|߿5p?}Un< OfOۋ @~tgx0/~??B"&+M @"$hs_M(DA}xZg_?>G$) Oq`i"qVJJ90=YwS \to0j8lwmrsx㯃0#b4<-띺_җ\L0u ɂ@Dlh5Y. _]x&ݲ@-gcaǫG0_mZ: ^0*R<":E ~3!gwܟ ]'{zvrp?@|āѫWp^m~o{/ ɜ;%F+.`M}~N)@pwmX<ߍ`AhӦiM:`3Eu%[J8DLɹOiS!Lk{iN\`pDžad:\{q"Їreۻ;~]wFK{wF0]<|>_3wcs:=G#a=H*&1gGS:΃P{G)v;o2 >[M 5}]Tx;}ooe-/Sb wy$w+$v\(iI!bn̢G` A8Xb`N=+ΣOG]G{놇Oϕ:<¯Ylq"6GE,~iszlogۋ#KMb^S~ m/9tSj|bf9?1S\$<89t*Cm(v{}?hnW5v6mKS|׃ȃA}jMtؼ^࿩oIJTj\ljI& 6pxϸ~*ƽ zoĜx|OC׸q@^r  Ost2c{5~v]n)OLWbN_RZY&&2=_B𼿲8/jM ?xY $ ?_]~?|0W #!Jf@>2/rMyS 3Ҹ9G{;i_~I<}*E퇻; HF$}:-GkDX D`[95dQz `ݶ@G Cw2O{ ׺;ԕ!΁eU׬@W5g7}VO Cvq*cGkeUOwZkw{:9\GcdƁ;`rMO8eysfO%dpLd3 ߋMy>tl=B)Sjh'&9NO=ʤ2*M[Svn\HŸqg_w;~ 2!R}Y#d%?YPJ@?Z>?z<MGVv"h$}}59wzs`yvy@< wu) 7uHa#"E&!2OH;9}mlZ9>MO,_=CA] 9 ~HG y+4^V&/+9P^3_F @g&]I^GwOeR9(Ob1F \~28`ϿǏx2vDk';|>d?!0;/FtC;D Olݶ@,7)S`vﺟXǸ00L 1AÏf`á !eM^hxd&}2scpLRy`C@N8PS|!x߷|~9mP.lC4wqp'2)DZnnmmiM82na -=8\e7"֣{cG #)X ,b kÆOȎ rرlc=3]sj<=vl9sR{&V[ܯT/acnCV(.Rja|[~t'3U1]Kmbk9~Io (m[^AĎ7q r[522\JdެX7*+>zk5S ]\3&#ᇥ&ԭ/A~ڻ%U摤Ps | ;4TSg+G%11%;sAFĬJƂ8nu{|S#ٵ9f DݤjsmdQm_j nXdx-nFy3q_ /TkA|0K[?o_=Qp3wM-G,b8;XYM?k #kWO _ZgIa$M+[7|}X/A몛o# 皪64ŁnȘ'[Eys/$v h\!mU Uɿ}FƹwD 39/a4^a*ם*wo`;+p3Om^%oOVvqx}Sv5KAն}NßF|+0,хˉ^ v19 fg'|-K>@ _Au#6FOKNWD3 b51w3P.=rYԨPfBe-'}S%Wt9EOrԵMO*)$?XzLk.Sa: =(t7 rz6{;z"߫3 3$~fA rGd遐"&R>wb|_ű{J # gL'TEvcsL<QA {\ nUۘEal(a?sgFj^ˮ&iA9mv:͞IA4 xO0bAp/=so}=MnX,ySV>zd\MH'|SX\ !h]Iu^ */ pre .comment, pre .template_comment, pre .diff .header, pre .javadoc { color: #998; font-style: italic } pre .keyword, pre .css .rule .keyword, pre .winutils, pre .javascript .title, pre .lisp .title, pre .subst { color: #000; font-weight: bold } pre .number, pre .hexcolor { color: #40a070 } pre .string, pre .tag .value, pre .phpdoc, pre .tex .formula { color: #d14 } pre .title, pre .id { color: #900; font-weight: bold } pre .javascript .title, pre .lisp .title, pre .subst { font-weight: normal } pre .class .title, pre .haskell .label, pre .tex .command { color: #458; font-weight: bold } pre .tag, pre .tag .title, pre .rules .property, pre .django .tag .keyword { color: #000080; font-weight: normal } pre .attribute, pre .variable, pre .instancevar, pre .lisp .body { color: #008080 } pre .regexp { color: #009926 } pre .class { color: #458; font-weight: bold } pre .symbol, pre .ruby .symbol .string, pre .ruby .symbol .keyword, pre .ruby .symbol .keymethods, pre .lisp .keyword, pre .tex .special, pre .input_number { color: #990073 } pre .builtin, pre .built_in, pre .lisp .title { color: #0086b3 } pre .preprocessor, pre .pi, pre .doctype, pre .shebang, pre .cdata { color: #999; font-weight: bold } pre .deletion { background: #fdd } pre .addition { background: #dfd } pre .diff .change { background: #0086b3 } pre .chunk { color: #aaa } pre .tex .formula { opacity: 0.5; } sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/css/main.css000066400000000000000000000102241323634607000251310ustar00rootroot00000000000000body { font-family: "Helvetica Neue", Arial, sans-serif; background: #FFF; color: #000; margin: 0px; font-size: 0.82em; line-height: 1.25em; } a { color: #00F; text-decoration: none; } a:hover { color: #333; background: #FE8; } p { margin-bottom: 1em; } h1 { font-size: 2.1em; font-weight: normal; line-height: 1.2em; margin: 1.4em 0 0.7em 0; } h2 { font-size: 1.6em; margin: 1.8em 0 0.8em 0; font-weight: normal; line-height: 1.2em; } h3 { font-size: 1.4em; color:#555; margin: 1.4em 0 0.7em 0; font-weight: normal; } h4 { margin: 1.4em 0 0.5em 0; font-size: 1em; } table { margin-bottom: 1em; } td, th { padding: 0 0.7em 0.3em 0; } th { font-weight: bold; } .clear { clear: both; width: 0; height: 0; } dt { margin-bottom: 0.3em; font-weight: bold; } dd { margin-left: 2em; margin-bottom: 1em; } dd p { margin-top: 0.6em; } li { margin: 0 0 0.5em 2em; } .banner { background: #EDF3FE; border-bottom: 1px solid #ccc; padding: 1em 2em 0.5em 2em; } .banner h1 { font-size: 1.2em; margin: 0; } .banner h1 .type { font-size: 0.833em; display:block; } .banner h1 .type, .banner h1 .parent { color: #666; } .banner ul { margin-top: 0.3em; margin-bottom: 0; font-size: 0.85em; } .banner li { list-style: none; margin-left: 0; margin-bottom: 0; } pre { margin-bottom: 1em; } .methods dt { width: 1em; font-size: 1.5em; color:#AAA; position: absolute; font-weight: normal; margin: 0; } .methods dd { margin-left: 2.5em; min-height: 1.8em; -height: 1.8em; padding-bottom: 0.8em; } .methods ul li { margin-right: 0.7em; margin-left: 0; list-style: none; display: inline; } #content { margin: 2em; margin-left: 3.5em; margin-right: 3.5em; } .sectiontitle { margin-top: 2em; margin-bottom: 1.3em; margin-left: -1.2em; font-size: 1.2em; padding: 0 0 0.25em 0; font-weight: bold; border-bottom: 1px solid #000; } .contenttitle { margin-top: 4em; margin-bottom: 1.3em; margin-left: -0.9em; font-size: 1.6em; padding: 0 0 0.25em 0; font-weight: bold; } .attr-rw { padding-right: 1em; text-align: center; color: #055; } .attr-name { font-weight: bold; padding-right: 1em; } .attr-desc { } tt { font-size: 1.15em; } .attr-value { font-family: monospace; padding-left: 1em; font-size: 1.15em; } .dyn-source { display: none; background: #fffde8; color: #000; border: #ffe0bb dotted 1px; margin: 0.5em 2em 0.5em 0; padding: 0.5em; } .dyn-source .cmt { color: #00F; font-style: italic; } .dyn-source .kw { color: #070; font-weight: bold; } .description pre { padding: 0.5em; border: #ffe0bb dotted 1px; background: #fffde8; } .method { margin-bottom: 2em; } .method .description, .method .sourcecode { margin-left: 1.2em; } .method h4 { border-bottom: 1px dotted #999; padding: 0 0 0.2em 0; margin-bottom: 0.8em; font-size: 1.1em; color:#333; } .method .method-title { border-bottom: 1px dotted #666; padding: 0 0 0.15em 0; margin: 0 0 0.5em 0; font-size: 1.2em; line-height: 1.25em; position: relative; } .method .method-title a.permalink { position: absolute; font-size: 0.75em; right: 0; } .method .sourcecode p.source-link { text-indent: 0em; margin-top: 0.5em; } .method .aka { margin-top: 0.3em; margin-left: 1em; font-style: italic; text-indent: 2em; } .method .source-link { font-size: 0.85em; } .ruby-constant { color: teal; } .ruby-keyword { color: #000; font-weight: bold } .ruby-title { color: #900; font-weight: bold; } .ruby-ivar { color: teal; } .ruby-operator { color: #000; font-weight: bold } .ruby-identifier { color: #000; } .ruby-string, .ruby-node { color: #D14; } .ruby-comment { color: #998; font-style: italic; } .ruby-regexp { color: #009926; } .ruby-value { color: #990073; } .ruby-number { color: #40A070; } @keyframes highlight { from { background-color: yellow; } to { background-color: white; } } .highlight { animation-name: highlight; animation-duration: 1s; } sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/css/panel.css000066400000000000000000000200661323634607000253110ustar00rootroot00000000000000/* Panel (begin) */ .panel { position: absolute; width: 100%; height: 100%; top: 0; left: 0; background: #FFF; z-index: 2; font-family: "Helvetica Neue", "Arial", sans-serif; //zoom: 1; } .panel_tree .results, .panel_results .tree { display: none; } /* Header with search box (begin) */ .panel .header { width: 100%; height: 29px; border-bottom: 1px solid #666; position: relative; left: 0; top: 0; background: #e8e8e8; } .panel .header div { margin: 0 7px; } .panel .header table { height: 29px; width: 100%; } .panel .header table td { vertical-align: middle; text-align: middle; } .panel .header label { position: absolute; font-size: 12px; line-height: 29px; margin-left: 3px; color: #999; cursor: text; } .panel .header table input { width: 100%; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; display: inline-block; -webkit-appearance: searchfield; height: 22px; //height: auto; } /* Header with search box (end) */ /* Results and tree (begin) */ .panel .result ul li a, .panel .tree ul li a { display: block; text-decoration: none; } /* Results and tree (end) */ /* Results (begin) */ .panel .result { position: absolute; top: 30px; bottom: 0; left: 0; width: 100%; //height: expression((this.parentNode.offsetHeight - 31)); overflow-y: scroll; overflow-x: hidden; -overflow-y: hidden; background: #EDF3FE url(../i/results_bg.png); z-index: 2; //zoom:1; } .panel .result ul { font-size: 0.8em; width: 100%; background: #EDF3FE url(../i/results_bg.png); //zoom:1; } .panel .result ul li { overflow: hidden; padding: 4px 10px 0 10px; cursor: pointer; height: 46px; } .panel .result ul li a { font-size: 13px; font-weight: normal; color: #333; white-space: nowrap; margin-bottom: 2px; } .panel .result ul li p { font-size: 11px; color: #333; margin-bottom: 2px; white-space: nowrap; } .panel .result ul li a i, .panel .result ul li p.snippet { color: #999; } .panel .result ul li b { color: #000; } .panel .result ul li.current { background: #3875D7; } .panel .result ul li.current a, .panel .result ul li.current p { color: #DDD; } .panel .result ul li.current a i, .panel .result ul li.current p.snippet { color: #AAA; } .panel .result ul li.current b { color: #FFF; } .panel .result ul li:hover, .panel .result ul li.selected { background: #d0d0d0; } .panel .result ul li.current:hover { background: #2965C0; } .panel .result ul li .badge { margin-right: 0.4em; margin-left: -0.2em; padding: 0 0.2em; color: #000; border-radius: 3px; } .panel .result ul li .badge_1 { background: #ACDBF4; } .panel .result ul li.current .badge_1 { background: #97BFD7; } .panel .result ul li .badge_2 { background: #ACF3C3; } .panel .result ul li.current .badge_2 { background: #98D7AC; } .panel .result ul li .badge_3 { background: #E0F3AC; } .panel .result ul li.current .badge_3 { background: #C4D798; } .panel .result ul li .badge_4 { background: #D7CA98; } .panel .result ul li.current .badge_4 { background: #A6B0AC; } .panel .result ul li .badge_5 { background: #F3C8AC; } .panel .result ul li.current .badge_5 { background: #D7B198; } .panel .result ul li .badge_6 { background: #F3ACC3; } .panel .result ul li.current .badge_6 { background: #D798AB; } /* Results (end) */ /* Tree (begin) */ /**/ .panel .tree { position: absolute; top: 30px; bottom: 0; left: 0; width: 100%; //zoom: 1; //height: expression((this.parentNode.offsetHeight - 31)); overflow-y: scroll; overflow-x: hidden; -overflow-y: hidden; background: #EDF3FE url(../i/tree_bg.png); z-index: 30; } .panel .tree ul { background: #EDF3FE url(../i/tree_bg.png); } .panel .tree ul li { cursor: pointer; overflow: hidden; height: 23px; line-height: 23px; } .panel .tree ul li .content { padding-left: 18px; overflow: hidden; position: relative; } .panel .tree ul li .icon { width: 10px; height: 9px; background: url(../i/arrows.png); background-position: 0 -9px; position: absolute; left: 1px; top: 8px; cursor: default; } .panel .tree ul li.closed .icon { background-position: 0 0; } .panel .tree ul li a { font-size: 13px; font-weight: normal; color: #000; white-space: nowrap; } .panel .tree ul li p { font-size: 11px; color: #666; margin-bottom: 2px; white-space: nowrap; } .panel .tree ul li a i { color: #999; font-style: normal; } .panel .tree ul li.empty { cursor: text; } .panel .tree ul li.empty a, .panel .tree ul li.empty p { color: #666; font-style: italic; } .panel .tree ul li.current { background: #3875D7; } .panel .tree ul li.current .icon { background-position: -10px -9px; } .panel .tree ul li.current.closed .icon { background-position: -10px 0; } .panel .tree ul li.current a { color: #FFF; } .panel .tree ul li.current p { color: #CCC; } .panel .tree ul li.current.empty a, .panel .tree ul li.current.empty p { color: #999; } .panel .tree ul li:hover { background: #d0d0d0; } .panel .tree ul li.current:hover { background: #2965C0; } .panel .tree .stopper { display: none; } /* Tree (end) */ /**/ /* Panel (end) */sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/css/reset.css000066400000000000000000000016661323634607000253410ustar00rootroot00000000000000/* http://meyerweb.com/eric/tools/css/reset/ */ /* v1.0 | 20080212 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } /* remember to highlight inserts somehow! */ ins { text-decoration: none; } del { text-decoration: line-through; } /* tables still need 'cellspacing="0"' in the markup */ table { border-collapse: collapse; border-spacing: 0; }sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/favicon.ico000066400000000000000000000021761323634607000250330ustar00rootroot00000000000000 h(  #.#.        s!b*R!4@       #)"(:.       +< !;9      !MHWnVv/D     `0F rfr'nsy! $2Ub$5$&  z  XjWs?]  2=    h '    w?M.= coʺ @T+'   ~ wӯ z)   .: ci ~nuĂ䃋( PioParNe<ey ic c.aleri.tsdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/i/000077500000000000000000000000001323634607000231345ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/i/arrows.png000066400000000000000000000007351323634607000251640ustar00rootroot00000000000000PNG  IHDR[sBIT|d pHYs B4tEXtSoftwareAdobe Fireworks CS3FtEXtCreation Time3/14/09Y>6IDAT8q0EzR@: f;n͐ Nt`*lي/_͗$2,W$kw_DNR-3I{% BMtNqf֌Z='x6'isu\3cah1S-nPBQi m{B&9K/2w?ӆ5먪-(~ZY@uUUwnϲph#S-r@|`._J{n!w.sfј_9pC/ֱ$MrOK0e$IENDB`sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/i/results_bg.png000066400000000000000000000012701323634607000260130ustar00rootroot00000000000000PNG  IHDRd9sBIT|d pHYs B4tEXtSoftwareAdobe Fireworks CS3FtEXtCreation Time3/12/092aHIDATxA 0CKh=3@A :t0` @A :t0` @A :t0` @A :t0` @A :t0` @A :t0``U؂uIENDB`sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/i/tree_bg.png000066400000000000000000000003171323634607000252520ustar00rootroot00000000000000PNG  IHDR.sBIT|d pHYstEXtSoftwareAdobe Fireworks CS3FtEXtCreation Time3/14/09Y>(IDAT(c4.0*81;G #\HvX OάIENDB`sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/js/000077500000000000000000000000001323634607000233205ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/js/highlight.pack.js000066400000000000000000000376521323634607000265570ustar00rootroot00000000000000var hljs=new function(){function l(o){return o.replace(/&/gm,"&").replace(/"}while(x.length||y.length){var u=t().splice(0,1)[0];v+=l(w.substr(q,u.offset-q));q=u.offset;if(u.event=="start"){v+=r(u.node);s.push(u.node)}else{if(u.event=="stop"){var p=s.length;do{p--;var o=s[p];v+=("")}while(o!=u.node);s.splice(p,1);while(p'+l(K[0])+""}else{M+=l(K[0])}O=N.lR.lastIndex;K=N.lR.exec(L)}M+=l(L.substr(O,L.length-O));return M}function J(r,L){if(L.sL&&d[L.sL]){var K=f(L.sL,r);s+=K.keyword_count;return K.value}else{return E(r,L)}}function H(L,r){var K=L.cN?'':"";if(L.rB){p+=K;L.buffer=""}else{if(L.eB){p+=l(r)+K;L.buffer=""}else{p+=K;L.buffer=r}}B.push(L);A+=L.r}function D(N,K,P){var Q=B[B.length-1];if(P){p+=J(Q.buffer+N,Q);return false}var L=y(K,Q);if(L){p+=J(Q.buffer+N,Q);H(L,K);return L.rB}var r=v(B.length-1,K);if(r){var M=Q.cN?"":"";if(Q.rE){p+=J(Q.buffer+N,Q)+M}else{if(Q.eE){p+=J(Q.buffer+N,Q)+M+l(K)}else{p+=J(Q.buffer+N+K,Q)+M}}while(r>1){M=B[B.length-2].cN?"":"";p+=M;r--;B.length--}var O=B[B.length-1];B.length--;B[B.length-1].buffer="";if(O.starts){H(O.starts,"")}return Q.rE}if(w(K,Q)){throw"Illegal"}}var G=d[I];var B=[G.dM];var A=0;var s=0;var p="";try{var u=0;G.dM.buffer="";do{var x=q(C,u);var t=D(x[0],x[1],x[2]);u+=x[0].length;if(!t){u+=x[1].length}}while(!x[2]);if(B.length>1){throw"Illegal"}return{language:I,r:A,keyword_count:s,value:p}}catch(F){if(F=="Illegal"){return{language:null,r:0,keyword_count:0,value:l(C)}}else{throw F}}}function h(){function o(t,s,u){if(t.compiled){return}if(!u){t.bR=c(s,t.b?t.b:"\\B|\\b");if(!t.e&&!t.eW){t.e="\\B|\\b"}if(t.e){t.eR=c(s,t.e)}}if(t.i){t.iR=c(s,t.i)}if(t.r==undefined){t.r=1}if(t.k){t.lR=c(s,t.l||hljs.IR,true)}for(var r in t.k){if(!t.k.hasOwnProperty(r)){continue}if(t.k[r] instanceof Object){t.kG=t.k}else{t.kG={keyword:t.k}}break}if(!t.c){t.c=[]}t.compiled=true;for(var q=0;qx.keyword_count+x.r){x=u}if(u.keyword_count+u.r>w.keyword_count+w.r){x=w;w=u}}}var s=t.className;if(!s.match(w.language)){s=s?(s+" "+w.language):w.language}var o=b(t);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=k(o,b(q),A)}if(y){w.value=w.value.replace(/^((<[^>]+>|\t)+)/gm,function(B,E,D,C){return E.replace(/\t/g,y)})}if(p){w.value=w.value.replace(/\n/g,"
")}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){var q=t.parentNode;var v=document.createElement("div");v.innerHTML="
"+w.value+"
";t=v.firstChild.firstChild;v.firstChild.cN=q.cN;q.parentNode.replaceChild(v.firstChild,q)}else{t.innerHTML=w.value}t.className=s;t.dataset={};t.dataset.result={language:w.language,kw:w.keyword_count,re:w.r};if(x&&x.language){t.dataset.second_best={language:x.language,kw:x.keyword_count,re:x.r}}}function j(){if(j.called){return}j.called=true;e();var q=document.getElementsByTagName("pre");for(var o=0;o|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.inherit=function(o,r){var q={};for(var p in o){q[p]=o[p]}if(r){for(var p in r){q[p]=r[p]}}return q}}();hljs.LANGUAGES.ruby=function(){var g="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var a="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var n={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,yield:1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,"eval":1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1,"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}};var h={cN:"yardoctag",b:"@[A-Za-z]+"};var d={cN:"comment",b:"#",e:"$",c:[h]};var c={cN:"comment",b:"^\\=begin",e:"^\\=end",c:[h],r:10};var b={cN:"comment",b:"^__END__",e:"\\n$"};var u={cN:"subst",b:"#\\{",e:"}",l:g,k:n};var p=[hljs.BE,u];var s={cN:"string",b:"'",e:"'",c:p,r:0};var r={cN:"string",b:'"',e:'"',c:p,r:0};var q={cN:"string",b:"%[qw]?\\(",e:"\\)",c:p,r:10};var o={cN:"string",b:"%[qw]?\\[",e:"\\]",c:p,r:10};var m={cN:"string",b:"%[qw]?{",e:"}",c:p,r:10};var l={cN:"string",b:"%[qw]?<",e:">",c:p,r:10};var k={cN:"string",b:"%[qw]?/",e:"/",c:p,r:10};var j={cN:"string",b:"%[qw]?%",e:"%",c:p,r:10};var i={cN:"string",b:"%[qw]?-",e:"-",c:p,r:10};var t={cN:"string",b:"%[qw]?\\|",e:"\\|",c:p,r:10};var e={cN:"function",b:"\\bdef\\s+",e:" |$|;",l:g,k:n,c:[{cN:"title",b:a,l:g,k:n},{cN:"params",b:"\\(",e:"\\)",l:g,k:n},d,c,b]};var f={cN:"identifier",b:g,l:g,k:n,r:0};var v=[d,c,b,s,r,q,o,m,l,k,j,i,t,{cN:"class",b:"\\b(class|module)\\b",e:"$|;",k:{"class":1,module:1},c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+hljs.IR+"::)?"+hljs.IR}]},d,c,b]},e,{cN:"constant",b:"(::)?([A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[s,r,q,o,m,l,k,j,i,t,f],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},f,{b:"("+hljs.RSR+")\\s*",c:[d,c,b,{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[hljs.BE]}],r:0}];u.c=v;e.c[1].c=v;return{dM:{l:g,k:n,c:v}}}();hljs.LANGUAGES.javascript={dM:{k:{keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"var":1,"new":1,"function":1,"do":1,"return":1,"void":1,"else":1,"break":1,"catch":1,"instanceof":1,"with":1,"throw":1,"case":1,"default":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1},literal:{"true":1,"false":1,"null":1}},c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,hljs.CNM,{b:"("+hljs.RSR+"|case|return|throw)\\s*",k:{"return":1,"throw":1,"case":1},c:[hljs.CLCM,hljs.CBLCLM,{cN:"regexp",b:"/.*?[^\\\\/]/[gim]*"}],r:0},{cN:"function",b:"\\bfunction\\b",e:"{",k:{"function":1},c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM]}]}]}};hljs.LANGUAGES.css=function(){var a={cN:"function",b:hljs.IR+"\\(",e:"\\)",c:[{eW:true,eE:true,c:[hljs.NM,hljs.ASM,hljs.QSM]}]};return{cI:true,dM:{i:"[=/|']",c:[hljs.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@font-face",l:"[a-z-]+",k:{"font-face":1}},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:{"import":1,page:1,media:1,charset:1},c:[a,hljs.ASM,hljs.QSM,hljs.NM]},{cN:"tag",b:hljs.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[hljs.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[a,hljs.NM,hljs.QSM,hljs.ASM,hljs.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.xml=function(){var b="[A-Za-z0-9\\._:-]+";var a={eW:true,c:[{cN:"attribute",b:b,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,dM:{c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"",k:{title:{style:1}},c:[a],starts:{cN:"css",e:"",rE:true,sL:"css"}},{cN:"tag",b:"",k:{title:{script:1}},c:[a],starts:{cN:"javascript",e:"<\/script>",rE:true,sL:"javascript"}},{cN:"vbscript",b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},a]}]}}}();hljs.LANGUAGES.cpp=function(){var b={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};var a={cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b.built_in,r:10};a.c=[a];return{dM:{k:b,i:")[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); /* * Sizzle CSS Selector Engine - v0.9.3 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="
";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/js/main.js000066400000000000000000000013001323634607000245740ustar00rootroot00000000000000function toggleSource(id) { var src = $('#' + id).toggle(); var isVisible = src.is(':visible'); $('#l_' + id).html(isVisible ? 'hide' : 'show'); if (!src.data('syntax-higlighted')) { src.data('syntax-higlighted', 1); hljs.highlightBlock(src[0]); } } window.highlight = function(url) { var hash = url.match(/#([^#]+)$/); if (hash) { var parent = document.querySelector('a[name=' + hash[1] + ']').parentElement; parent.classList.add('highlight'); setTimeout(function() { parent.classList.remove('highlight'); }, 1000); } }; $(function() { highlight('#' + location.hash); $('.description pre').each(function() { hljs.highlightBlock(this); }); }); sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/js/searchdoc.js000066400000000000000000000346631323634607000256250ustar00rootroot00000000000000Searchdoc = {}; // navigation.js ------------------------------------------ Searchdoc.Navigation = new function() { this.initNavigation = function() { var _this = this; $(document).keydown(function(e) { _this.onkeydown(e); }).keyup(function(e) { _this.onkeyup(e); }); this.navigationActive = true; }; this.setNavigationActive = function(state) { this.navigationActive = state; this.clearMoveTimeout(); }; this.onkeyup = function(e) { if (!this.navigationActive) return; switch (e.keyCode) { case 37: //Event.KEY_LEFT: case 38: //Event.KEY_UP: case 39: //Event.KEY_RIGHT: case 40: //Event.KEY_DOWN: case 73: // i - qwerty case 74: // j case 75: // k case 76: // l case 67: // c - dvorak case 72: // h case 84: // t case 78: // n this.clearMoveTimeout(); break; } }; this.onkeydown = function(e) { if (!this.navigationActive) return; switch (e.keyCode) { case 37: //Event.KEY_LEFT: case 74: // j (qwerty) case 72: // h (dvorak) if (this.moveLeft()) e.preventDefault(); break; case 38: //Event.KEY_UP: case 73: // i (qwerty) case 67: // c (dvorak) if (e.keyCode == 38 || e.ctrlKey) { if (this.moveUp()) e.preventDefault(); this.startMoveTimeout(false); } break; case 39: //Event.KEY_RIGHT: case 76: // l (qwerty) case 78: // n (dvorak) if (this.moveRight()) e.preventDefault(); break; case 40: //Event.KEY_DOWN: case 75: // k (qwerty) case 84: // t (dvorak) if (e.keyCode == 40 || e.ctrlKey) { if (this.moveDown()) e.preventDefault(); this.startMoveTimeout(true); } break; case 9: //Event.KEY_TAB: case 13: //Event.KEY_RETURN: if (this.$current) this.select(this.$current); break; case 83: // s (qwerty) case 79: // o (dvorak) if (e.ctrlKey) { $('#search').focus(); e.preventDefault(); } break; } if (e.ctrlKey && e.shiftKey) this.select(this.$current); }; this.clearMoveTimeout = function() { clearTimeout(this.moveTimeout); this.moveTimeout = null; }; this.startMoveTimeout = function(isDown) { if (!$.browser.mozilla && !$.browser.opera) return; if (this.moveTimeout) this.clearMoveTimeout(); var _this = this; var go = function() { if (!_this.moveTimeout) return; _this[isDown ? 'moveDown' : 'moveUp'](); _this.moveTimout = setTimeout(go, 100); }; this.moveTimeout = setTimeout(go, 200); }; this.moveRight = function() {}; this.moveLeft = function() {}; this.move = function(isDown) {}; this.moveUp = function() { return this.move(false); }; this.moveDown = function() { return this.move(true); }; }; // scrollIntoView.js -------------------------------------- function scrollIntoView(element, view) { var offset, viewHeight, viewScroll, height; offset = element.offsetTop; height = element.offsetHeight; viewHeight = view.offsetHeight; viewScroll = view.scrollTop; if (offset - viewScroll + height > viewHeight) { view.scrollTop = offset - viewHeight + height; } if (offset < viewScroll) { view.scrollTop = offset; } } // panel.js ----------------------------------------------- Searchdoc.Panel = function(element, data, tree, frame) { this.$element = $(element); this.$input = $('input', element).eq(0); this.$result = $('.result ul', element).eq(0); this.frame = frame; this.$current = null; this.$view = this.$result.parent(); this.data = data; this.searcher = new Searcher(data.index); this.tree = new Searchdoc.Tree($('.tree', element), tree, this); this.init(); }; Searchdoc.Panel.prototype = $.extend({}, Searchdoc.Navigation, new function() { var suid = 1; this.init = function() { var _this = this; var observer = function() { _this.search(_this.$input[0].value); }; this.$input.keyup(observer); this.$input.click(observer); // mac's clear field this.searcher.ready(function(results, isLast) { _this.addResults(results, isLast); }); this.$result.click(function(e) { e.preventDefault(); _this.$current.removeClass('current'); _this.$current = $(e.target).closest('li').addClass('current'); _this.select(); _this.$input.focus(); }); this.initNavigation(); this.setNavigationActive(false); }; this.search = function(value, selectFirstMatch) { value = jQuery.trim(value).toLowerCase(); this.selectFirstMatch = selectFirstMatch; if (value) { this.$element.removeClass('panel_tree').addClass('panel_results'); this.tree.setNavigationActive(false); this.setNavigationActive(true); } else { this.$element.addClass('panel_tree').removeClass('panel_results'); this.tree.setNavigationActive(true); this.setNavigationActive(false); } if (value != this.lastQuery) { this.lastQuery = value; this.firstRun = true; this.searcher.find(value); } }; this.addResults = function(results, isLast) { var target = this.$result.get(0); if (this.firstRun && (results.length > 0 || isLast)) { this.$current = null; this.$result.empty(); } for (var i = 0, l = results.length; i < l; i++) { target.appendChild(renderItem.call(this, results[i])); } if (this.firstRun && results.length > 0) { this.firstRun = false; this.$current = $(target.firstChild); this.$current.addClass('current'); if (this.selectFirstMatch) this.select(); scrollIntoView(this.$current[0], this.$view[0]); } if (jQuery.browser.msie) this.$element[0].className += ''; }; this.open = function(src) { this.frame.location.href = '../' + src; if (this.frame.highlight) this.frame.highlight(src); }; this.select = function() { this.open(this.$current.data('path')); }; this.move = function(isDown) { if (!this.$current) return; var $next = this.$current[isDown ? 'next' : 'prev'](); if ($next.length) { this.$current.removeClass('current'); $next.addClass('current'); scrollIntoView($next[0], this.$view[0]); this.$current = $next; } return true; }; function renderItem(result) { var li = document.createElement('li'), html = '', badge = result.badge; html += '' + hlt(result.title); if (result.params) html += '' + result.params + ''; html += ''; html += '

'; if (typeof badge != 'undefined') { html += '' + stripHTML(this.data.badges[badge] || 'unknown') + ''; } html += hlt(result.namespace) + '

'; if (result.snippet) html += '

' + stripHTML(result.snippet.replace(/^

/, '')) + '

'; li.innerHTML = html; jQuery.data(li, 'path', result.path); return li; } function hlt(html) { return escapeHTML(html).replace(/\u0001/g, '').replace(/\u0002/g, ''); } function escapeHTML(html) { return html.replace(/[&<>]/g, function(c) { return '&#' + c.charCodeAt(0) + ';'; }); } function stripHTML(html) { var in_tag = false; var output = ""; for (var i = 0; i < html.length; i++) { if (html[i] == '<'){ in_tag = true; } else if (html[i] == '>') { in_tag = false; i++; } if (!in_tag && i < html.length) output += html[i]; } return output; } }); // tree.js ------------------------------------------------ Searchdoc.Tree = function(element, tree, panel) { this.$element = $(element); this.$list = $('ul', element); this.tree = tree; this.panel = panel; this.init(); }; Searchdoc.Tree.prototype = $.extend({}, Searchdoc.Navigation, new function() { this.init = function() { var stopper = document.createElement('li'); stopper.className = 'stopper'; this.$list[0].appendChild(stopper); for (var i = 0, l = this.tree.length; i < l; i++) { buildAndAppendItem.call(this, this.tree[i], 0, stopper); } var _this = this; this.$list.click(function(e) { e.preventDefault(); var $target = $(e.target), $li = $target.closest('li'); if ($target.hasClass('icon')) { _this.toggle($li); } else { _this.select($li); } }); this.initNavigation(); if (jQuery.browser.msie) document.body.className += ''; }; this.select = function($li) { this.highlight($li); var path = $li[0].searchdoc_tree_data.path; if (path) this.panel.open(path); }; this.highlight = function($li) { if (this.$current) this.$current.removeClass('current'); this.$current = $li.addClass('current'); }; this.toggle = function($li) { var closed = !$li.hasClass('closed'), children = $li[0].searchdoc_tree_data.children; $li.toggleClass('closed'); for (var i = 0, l = children.length; i < l; i++) { toggleVis.call(this, $(children[i].li), !closed); } }; this.moveRight = function() { if (!this.$current) { this.highlight(this.$list.find('li:first')); return; } if (this.$current.hasClass('closed')) { this.toggle(this.$current); } }; this.moveLeft = function() { if (!this.$current) { this.highlight(this.$list.find('li:first')); return; } if (!this.$current.hasClass('closed')) { this.toggle(this.$current); } else { var level = this.$current[0].searchdoc_tree_data.level; if (level === 0) return; var $next = this.$current.prevAll('li.level_' + (level - 1) + ':visible:first'); this.$current.removeClass('current'); $next.addClass('current'); scrollIntoView($next[0], this.$element[0]); this.$current = $next; } }; this.move = function(isDown) { if (!this.$current) { this.highlight(this.$list.find('li:first')); return true; } var next = this.$current[0]; if (isDown) { do { next = next.nextSibling; if (next && next.style && next.style.display != 'none') break; } while (next); } else { do { next = next.previousSibling; if (next && next.style && next.style.display != 'none') break; } while (next); } if (next && next.className.indexOf('stopper') == -1) { this.$current.removeClass('current'); $(next).addClass('current'); scrollIntoView(next, this.$element[0]); this.$current = $(next); } return true; }; function toggleVis($li, show) { var closed = $li.hasClass('closed'), children = $li[0].searchdoc_tree_data.children; $li.css('display', show ? '' : 'none'); if (!show && this.$current && $li[0] == this.$current[0]) { this.$current.removeClass('current'); this.$current = null; } for (var i = 0, l = children.length; i < l; i++) { toggleVis.call(this, $(children[i].li), show && !closed); } } function buildAndAppendItem(item, level, before) { var li = renderItem(item, level), list = this.$list[0]; item.li = li; list.insertBefore(li, before); for (var i = 0, l = item[3].length; i < l; i++) { buildAndAppendItem.call(this, item[3][i], level + 1, before); } return li; } function renderItem(item, level) { var li = document.createElement('li'), cnt = document.createElement('div'), a = document.createElement('a'), p = document.createElement('p'), icon, i; a.href = '../' + item[1]; li.appendChild(cnt); li.style.paddingLeft = getOffset(level); cnt.className = 'content'; if (!item[1]) li.className = 'empty '; cnt.appendChild(a); // cnt.appendChild(p); a.appendChild(document.createTextNode(item[0])); // p.appendChild(document.createTextNode(item[4])); if (item[2]) { i = document.createElement('i'); i.appendChild(document.createTextNode(item[2])); a.appendChild(i); } if (item[3].length > 0) { icon = document.createElement('div'); icon.className = 'icon'; cnt.appendChild(icon); } // user direct assignement instead of $() // it's 8x faster // $(li).data('path', item[1]) // .data('children', item[3]) // .data('level', level) // .css('display', level == 0 ? '' : 'none') // .addClass('level_' + level) // .addClass('closed'); li.searchdoc_tree_data = { path: item[1], children: item[3], level: level }; li.style.display = level === 0 ? '' : 'none'; li.className += 'level_' + level + ' closed'; return li; } function getOffset(level) { return 5 + 18 * level + 'px'; } }); sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/panel/000077500000000000000000000000001323634607000240035ustar00rootroot00000000000000sdoc-1.0.0/lib/rdoc/generator/template/sdoc/resources/panel/index.html000066400000000000000000000042671323634607000260110ustar00rootroot00000000000000 search index
index sdoc-1.0.0/lib/rdoc/generator/template/sdoc/search_index.rhtml000066400000000000000000000002621323634607000243760ustar00rootroot00000000000000 File index <% @files.each do |file| %> <%= file.relative_name %> <% end %> sdoc-1.0.0/lib/sdoc.rb000066400000000000000000000000671323634607000144720ustar00rootroot00000000000000gem 'rdoc' module SDoc; end require 'sdoc/generator' sdoc-1.0.0/lib/sdoc/000077500000000000000000000000001323634607000141425ustar00rootroot00000000000000sdoc-1.0.0/lib/sdoc/generator.rb000066400000000000000000000152731323634607000164650ustar00rootroot00000000000000require 'erb' require 'pathname' require 'fileutils' require 'json' require 'sdoc/github' require 'sdoc/templatable' require 'sdoc/helpers' require 'rdoc' class RDoc::ClassModule def with_documentation? document_self_or_methods || classes_and_modules.any?{ |c| c.with_documentation? } end end class RDoc::Options attr_accessor :github attr_accessor :search_index end class RDoc::Generator::SDoc RDoc::RDoc.add_generator self DESCRIPTION = 'Searchable HTML documentation' include ERB::Util include SDoc::GitHub include SDoc::Templatable include SDoc::Helpers GENERATOR_DIRS = [File.join('sdoc', 'generator')] TREE_FILE = File.join 'panel', 'tree.js' SEARCH_INDEX_FILE = File.join 'js', 'search_index.js' FILE_DIR = 'files' CLASS_DIR = 'classes' RESOURCES_DIR = File.join('resources', '.') attr_reader :base_dir attr_reader :options ## # The RDoc::Store that is the source of the generated content attr_reader :store def self.setup_options(options) opt = options.option_parser opt.separator nil opt.separator "SDoc generator options:" opt.separator nil opt.on("--github", "-g", "Generate links to github.") do |value| options.github = true end opt.separator nil end def initialize(store, options) @store = store @options = options if @options.respond_to?('diagram=') @options.diagram = false end @options.pipe = true @github_url_cache = {} @template_dir = Pathname.new(options.template_dir) @base_dir = Pathname.pwd.expand_path @json_index = RDoc::Generator::JsonIndex.new self, options end def generate @outputdir = Pathname.new(@options.op_dir).expand_path(@base_dir) @files = @store.all_files.sort @classes = @store.all_classes_and_modules.sort # Now actually write the output copy_resources @json_index.generate @json_index.generate_gzipped generate_search_index generate_class_tree generate_index_file generate_file_files generate_class_files end def class_dir CLASS_DIR end def file_dir FILE_DIR end protected ### Output progress information if debugging is enabled def debug_msg( *msg ) return unless $DEBUG_RDOC $stderr.puts( *msg ) end ### Create index.html with frameset def generate_index_file debug_msg "Generating index file in #@outputdir" templatefile = @template_dir + 'index.rhtml' outfile = @outputdir + 'index.html' self.render_template( templatefile, binding(), outfile ) unless @options.dry_run end ### Generate a documentation file for each class def generate_class_files debug_msg "Generating class documentation in #@outputdir" templatefile = @template_dir + 'class.rhtml' @classes.each do |klass| debug_msg " working on %s (%s)" % [ klass.full_name, klass.path ] outfile = @outputdir + klass.path rel_prefix = @outputdir.relative_path_from( outfile.dirname ) debug_msg " rendering #{outfile}" self.render_template( templatefile, binding(), outfile ) unless @options.dry_run end end ### Generate a documentation file for each file def generate_file_files debug_msg "Generating file documentation in #@outputdir" templatefile = @template_dir + 'file.rhtml' @files.each do |file| outfile = @outputdir + file.path debug_msg " working on %s (%s)" % [ file.full_name, outfile ] rel_prefix = @outputdir.relative_path_from( outfile.dirname ) debug_msg " rendering #{outfile}" self.render_template( templatefile, binding(), outfile ) unless @options.dry_run end end ### Generate file with links for the search engine def generate_search_index debug_msg "Generating search engine index in #@outputdir" templatefile = @template_dir + 'search_index.rhtml' outfile = @outputdir + 'panel/links.html' self.render_template( templatefile, binding(), outfile ) unless @options.dry_run end ### Create class tree structure and write it as json def generate_class_tree debug_msg "Generating class tree" topclasses = @classes.select {|klass| !(RDoc::ClassModule === klass.parent) } tree = generate_file_tree + generate_class_tree_level(topclasses) debug_msg " writing class tree to %s" % TREE_FILE File.open(TREE_FILE, "w", 0644) do |f| f.write('var tree = '); f.write(tree.to_json(:max_nesting => 0)) end unless @options.dry_run end ### Recursivly build class tree structure def generate_class_tree_level(classes, visited = {}) tree = [] classes.select do |klass| !visited[klass] && klass.with_documentation? end.sort.each do |klass| visited[klass] = true item = [ klass.name, klass.document_self_or_methods ? klass.path : '', klass.module? ? '' : (klass.superclass ? " < #{String === klass.superclass ? klass.superclass : klass.superclass.full_name}" : ''), generate_class_tree_level(klass.classes_and_modules, visited) ] tree << item end tree end ### Determines index path based on @options.main_page (or lack thereof) def index_path # Break early to avoid a big if block when no main page is specified default = @files.first.path return default unless @options.main_page # Transform class name to file path if @options.main_page.include?("::") slashed = @options.main_page.sub(/^::/, "").gsub("::", "/") "%s/%s.html" % [ class_dir, slashed ] elsif file = @files.find { |f| f.full_name == @options.main_page } file.path else default end end ### Copy all the resource files to output dir def copy_resources resources_path = @template_dir + RESOURCES_DIR debug_msg "Copying #{resources_path}/** to #{@outputdir}/**" FileUtils.cp_r resources_path.to_s, @outputdir.to_s unless @options.dry_run end class FilesTree attr_reader :children def add(path, url) path = path.split(File::SEPARATOR) unless Array === path @children ||= {} if path.length == 1 @children[path.first] = url else @children[path.first] ||= FilesTree.new @children[path.first].add(path[1, path.length], url) end end end def generate_file_tree if @files.length > 1 @files_tree = FilesTree.new @files.each do |file| @files_tree.add(file.relative_name, file.path) end [['', '', 'files', generate_file_tree_level(@files_tree)]] else [] end end def generate_file_tree_level(tree) tree.children.keys.sort.map do |name| child = tree.children[name] if String === child [name, child, '', []] else ['', '', name, generate_file_tree_level(child)] end end end end sdoc-1.0.0/lib/sdoc/github.rb000066400000000000000000000026761323634607000157640ustar00rootroot00000000000000module SDoc::GitHub def github_url(path) return false unless have_git? unless @github_url_cache.has_key? path @github_url_cache[path] = false file = @store.find_file_named(path) if file base_url = repository_url(path) if base_url relative_url = path_relative_to_repository(path) @github_url_cache[path] = "#{base_url}#{last_commit_sha1}#{relative_url}" end end end @github_url_cache[path] end protected def have_git? @have_git = system('git --version > /dev/null 2>&1') if @have_git.nil? @have_git end def last_commit_sha1 return @sha1 if defined?(@sha1) @sha1 = Dir.chdir(base_dir) do `git rev-parse HEAD`.chomp end end def repository_url(path) return @repository_url if defined?(@repository_url) s = Dir.chdir(File.join(base_dir, File.dirname(path))) do `git config --get remote.origin.url` end m = s.match(%r{github.com[/:](.*)\.git$}) @repository_url = m ? "https://github.com/#{m[1]}/blob/" : false end def path_relative_to_repository(path) absolute_path = File.join(base_dir, path) root = path_to_git_dir(File.dirname(absolute_path)) absolute_path[root.size..absolute_path.size] end def path_to_git_dir(path) while !path.empty? && path != '.' if (File.exists? File.join(path, '.git')) return path end path = File.dirname(path) end '' end end sdoc-1.0.0/lib/sdoc/helpers.rb000066400000000000000000000022241323634607000161310ustar00rootroot00000000000000module SDoc::Helpers def each_letter_group(methods, &block) group = {:name => '', :methods => []} methods.sort{ |a, b| a.name <=> b.name }.each do |method| gname = group_name method.name if gname != group[:name] yield group unless group[:methods].size == 0 group = { :name => gname, :methods => [] } end group[:methods].push(method) end yield group unless group[:methods].size == 0 end # Strips out HTML tags from a given string. # # Example: # # strip_tags("Hello world") => "Hello world" def strip_tags(text) text.gsub(%r{]+?>}, "") end # Truncates a given string. It tries to take whole sentences to have # a meaningful description for SEO tags. # # The only available option is +:length+ which defaults to 200. def truncate(text, options = {}) if text length = options.fetch(:length, 200) stop = text.rindex(".", length - 1) || length "#{text[0, stop]}." end end protected def group_name name if match = name.match(/^([a-z])/i) match[1].upcase else '#' end end end sdoc-1.0.0/lib/sdoc/merge.rb000066400000000000000000000135531323634607000155750ustar00rootroot00000000000000require 'optparse' require 'pathname' require 'fileutils' require 'json' require 'sdoc/templatable' class SDoc::Merge include SDoc::Templatable FLAG_FILE = "created.rid" def initialize() @names = [] @urls = [] @op_dir = 'doc' @title = '' @directories = [] end def merge(options) parse_options options @outputdir = Pathname.new( @op_dir ) check_directories setup_output_dir setup_names copy_files copy_docs if @urls.empty? merge_search_index merge_tree generate_index_file end def parse_options(options) opts = OptionParser.new do |opt| opt.banner = "Usage: sdoc-merge [options] directories" opt.on("-n", "--names [NAMES]", "Names of merged repositories. Comma separated") do |v| @names = v.split(',').map{|name| name.strip } end opt.on("-o", "--op [DIRECTORY]", "Set the output directory") do |v| @op_dir = v end opt.on("-t", "--title [TITLE]", "Set the title of merged file") do |v| @title = v end opt.on("-u", "--urls [URLS]", "Paths to merged docs. If you", "set this files and classes won't be actualy", "copied to merged build") do |v| @urls = v.split(' ').map{|name| name.strip } end end opts.parse! options @template_dir = Pathname.new(RDoc::Options.new.template_dir_for 'merge') @directories = options.dup end def merge_tree tree = [] @directories.each_with_index do |dir, i| name = @names[i] url = @urls.empty? ? name : @urls[i] filename = File.join dir, RDoc::Generator::SDoc::TREE_FILE data = open(filename).read.sub(/var tree =\s*/, '') subtree = JSON.parse(data, :max_nesting => 0) item = [ name, url + '/' + extract_index_path(dir), '', append_path(subtree, url) ] tree << item end dst = File.join @op_dir, RDoc::Generator::SDoc::TREE_FILE FileUtils.mkdir_p File.dirname(dst) File.open(dst, "w", 0644) do |f| f.write('var tree = '); f.write(tree.to_json(:max_nesting => 0)) end end def append_path subtree, path subtree.map do |item| item[1] = path + '/' + item[1] unless item[1].empty? item[3] = append_path item[3], path item end end def merge_search_index items = [] @indexes = {} @directories.each_with_index do |dir, i| name = @names[i] url = @urls.empty? ? name : @urls[i] filename = File.join dir, RDoc::Generator::SDoc::SEARCH_INDEX_FILE data = open(filename).read.sub(/var search_data =\s*/, '') subindex = JSON.parse(data, :max_nesting => 0) @indexes[name] = subindex searchIndex = subindex["index"]["searchIndex"] longSearchIndex = subindex["index"]["longSearchIndex"] subindex["index"]["info"].each_with_index do |info, j| info[2] = url + '/' + info[2] info[6] = i items << { :info => info, :searchIndex => searchIndex[j], :longSearchIndex => name + ' ' + longSearchIndex[j] } end end items.sort! do |a, b| # type (class/method/file) or name or doc part or namespace [a[:info][5], a[:info][0], a[:info][6], a[:info][1]] <=> [b[:info][5], b[:info][0], b[:info][6], b[:info][1]] end index = { :searchIndex => items.map{|item| item[:searchIndex]}, :longSearchIndex => items.map{|item| item[:longSearchIndex]}, :info => items.map{|item| item[:info]} } search_data = { :index => index, :badges => @names } dst = File.join @op_dir, RDoc::Generator::SDoc::SEARCH_INDEX_FILE FileUtils.mkdir_p File.dirname(dst) File.open(dst, "w", 0644) do |f| f.write('var search_data = '); f.write(search_data.to_json(:max_nesting => 0)) end end def extract_index_path dir filename = File.join dir, 'index.html' content = File.open(filename) { |f| f.read } match = content.match(/ 0 @directories.each do |dir| name = File.basename dir name = File.basename File.dirname(dir) if name == 'doc' @names << name end end end def copy_docs @directories.each_with_index do |dir, i| name = @names[i] index_dir = File.dirname(RDoc::Generator::SDoc::TREE_FILE) FileUtils.mkdir_p(File.join(@op_dir, name)) Dir.new(dir).each do |item| if File.directory?(File.join(dir, item)) && item != '.' && item != '..' && item != index_dir FileUtils.cp_r File.join(dir, item), File.join(@op_dir, name, item), :preserve => true end end end end def copy_files dir = @directories.first Dir.new(dir).each do |item| if item != '.' && item != '..' && item != RDoc::Generator::SDoc::FILE_DIR && item != RDoc::Generator::SDoc::CLASS_DIR FileUtils.cp_r File.join(dir, item), @op_dir, :preserve => true end end end def setup_output_dir if File.exists? @op_dir error "#{@op_dir} already exists" end FileUtils.mkdir_p @op_dir end def check_directories @directories.each do |dir| unless File.exists?(File.join(dir, FLAG_FILE)) && File.exists?(File.join(dir, RDoc::Generator::SDoc::TREE_FILE)) && File.exists?(File.join(dir, RDoc::Generator::SDoc::SEARCH_INDEX_FILE)) error "#{dir} does not seem to be an sdoc directory" end end end ## # Report an error message and exit def error(msg) raise RDoc::Error, msg end end sdoc-1.0.0/lib/sdoc/templatable.rb000066400000000000000000000041021323634607000167560ustar00rootroot00000000000000require 'erb' module SDoc::Templatable ### Load and render the erb template in the given +templatefile+ within the ### specified +context+ (a Binding object) and return output ### Both +templatefile+ and +outfile+ should be Pathname-like objects. def eval_template(templatefile, context) template_src = templatefile.read template = ERB.new( template_src, nil, '<>' ) template.filename = templatefile.to_s begin template.result( context ) rescue NoMethodError => err raise RDoc::Error, "Error while evaluating %s: %s (at %p)" % [ templatefile.to_s, err.message, eval( "_erbout[-50,50]", context ) ], err.backtrace end end ### Load and render the erb template with the given +template_name+ within ### current context. Adds all +local_assigns+ to context def include_template(template_name, local_assigns = {}) source = local_assigns.keys.map { |key| "#{key} = local_assigns[:#{key}];" }.join templatefile = @template_dir + template_name eval("#{source};eval_template(templatefile, binding)") end ### Load and render the erb template in the given +templatefile+ within the ### specified +context+ (a Binding object) and write it out to +outfile+. ### Both +templatefile+ and +outfile+ should be Pathname-like objects. def render_template( templatefile, context, outfile ) output = eval_template(templatefile, context) # TODO delete this dirty hack when documentation for example for GeneratorMethods will not be cutted off by