diff --git a/.gitignore b/.gitignore index b844b143..243eb9ab 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ Gemfile.lock +.bundle/ +vendor/ +benchmark/ +lib/linguist/samples.json diff --git a/.travis.yml b/.travis.yml index 943c1b12..1f4c61e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,10 @@ -before_install: +before_install: + - git fetch origin master:master + - git fetch origin v2.0.0:v2.0.0 - sudo apt-get install libicu-dev -y - - gem update --system 2.1.11 rvm: - - 1.8.7 - - 1.9.2 - 1.9.3 - 2.0.0 - - ree + - 2.1.1 notifications: disabled: true diff --git a/Gemfile b/Gemfile index 3df9dcfc..851fabc2 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,2 @@ source 'https://rubygems.org' gemspec - -if RUBY_VERSION < "1.9.3" - # escape_utils 1.0.0 requires 1.9.3 and above - gem "escape_utils", "0.3.2" -end diff --git a/README.md b/README.md index 1ff2ed8f..a51dc919 100644 --- a/README.md +++ b/README.md @@ -102,12 +102,50 @@ We try to only add languages once they have some usage on GitHub, so please note Almost all bug fixes or new language additions should come with some additional code samples. Just drop them under [`samples/`](https://github.com/github/linguist/tree/master/samples) in the correct subdirectory and our test suite will automatically test them. In most cases you shouldn't need to add any new assertions. -To update the `samples.json` after adding new files to [`samples/`](https://github.com/github/linguist/tree/master/samples): +### A note on language extensions - bundle exec rake samples +Linguist has a number of methods available to it for identifying the language of a particular file. The initial lookup is based upon the extension of the file, possible file extensions are defined in an array called `extensions`. Take a look at this example for example for `Perl`: + +``` +Perl: + type: programming + ace_mode: perl + color: "#0298c3" + extensions: + - .pl + - .PL + - .perl + - .ph + - .plx + - .pm + - .pod + - .psgi + interpreters: + - perl +``` +Any of the extensions defined are valid but the first in this array should be the most popular. ### Testing Sometimes getting the tests running can be too much work, especially if you don't have much Ruby experience. It's okay: be lazy and let our build bot [Travis](http://travis-ci.org/#!/github/linguist) run the tests for you. Just open a pull request and the bot will start cranking away. Here's our current build status, which is hopefully green: [![Build Status](https://secure.travis-ci.org/github/linguist.png?branch=master)](http://travis-ci.org/github/linguist) + +### Releasing + +If you are the current maintainer of this gem: + + 0. Create a branch for the release: `git checkout -b cut-release-vxx.xx.xx` + 0. Make sure your local dependencies are up to date: `bundle install` + 0. Ensure that samples are updated: `bundle exec rake samples` + 0. Ensure that tests are green: `bundle exec rake test` + 0. Bump gem version in `lib/linguist/version.rb`. For example, [like this](https://github.com/github/linguist/commit/8d2ea90a5ba3b2fe6e1508b7155aa4632eea2985). + 0. Make a PR to github/linguist. For example, [#1238](https://github.com/github/linguist/pull/1238). + 0. Build a local gem: `gem build github-linguist.gemspec` + 0. Testing: + 0. Bump the Gemfile and Gemfile.lock versions for an app which relies on this gem + 0. Install the new gem locally + 0. Test behavior locally, branch deploy, whatever needs to happen + 0. Merge github/linguist PR + 0. Tag and push: `git tag vx.xx.xx; git push --tags` + 0. Push to rubygems.org -- `gem push github-linguist-3.0.0.gem` diff --git a/Rakefile b/Rakefile index e89e75a9..60e3565a 100644 --- a/Rakefile +++ b/Rakefile @@ -2,11 +2,22 @@ require 'json' require 'rake/clean' require 'rake/testtask' require 'yaml' +require 'pry' task :default => :test Rake::TestTask.new +# Extend test task to check for samples +task :test => :check_samples + +desc "Check that we have samples.json generated" +task :check_samples do + unless File.exist?('lib/linguist/samples.json') + Rake::Task[:samples].invoke + end +end + task :samples do require 'linguist/samples' require 'yajl' @@ -15,13 +26,74 @@ task :samples do File.open('lib/linguist/samples.json', 'w') { |io| io.write json } end -task :build_gem do +task :build_gem => :samples do languages = YAML.load_file("lib/linguist/languages.yml") File.write("lib/linguist/languages.json", JSON.dump(languages)) `gem build github-linguist.gemspec` File.delete("lib/linguist/languages.json") end +namespace :benchmark do + benchmark_path = "benchmark/results" + + # $ bundle exec rake benchmark:generate CORPUS=path/to/samples + desc "Generate results for" + task :generate do + ref = `git rev-parse HEAD`.strip[0,8] + + corpus = File.expand_path(ENV["CORPUS"] || "samples") + + require 'linguist/language' + + results = Hash.new + Dir.glob("#{corpus}/**/*").each do |file| + next unless File.file?(file) + filename = file.gsub("#{corpus}/", "") + results[filename] = Linguist::FileBlob.new(file).language + end + + # Ensure results directory exists + FileUtils.mkdir_p("benchmark/results") + + # Write results + if `git status`.include?('working directory clean') + result_filename = "benchmark/results/#{File.basename(corpus)}-#{ref}.json" + else + result_filename = "benchmark/results/#{File.basename(corpus)}-#{ref}-unstaged.json" + end + + File.write(result_filename, results.to_json) + puts "wrote #{result_filename}" + end + + # $ bundle exec rake benchmark:compare REFERENCE=path/to/reference.json CANDIDATE=path/to/candidate.json + desc "Compare results" + task :compare do + reference_file = ENV["REFERENCE"] + candidate_file = ENV["CANDIDATE"] + + reference = JSON.parse(File.read(reference_file)) + reference_counts = Hash.new(0) + reference.each { |filename, language| reference_counts[language] += 1 } + + candidate = JSON.parse(File.read(candidate_file)) + candidate_counts = Hash.new(0) + candidate.each { |filename, language| candidate_counts[language] += 1 } + + changes = diff(reference_counts, candidate_counts) + + if changes.any? + changes.each do |language, (before, after)| + before_percent = 100 * before / reference.size.to_f + after_percent = 100 * after / candidate.size.to_f + puts "%s changed from %.1f%% to %.1f%%" % [language || 'unknown', before_percent, after_percent] + end + else + puts "No changes" + end + end +end + namespace :classifier do LIMIT = 1_000 @@ -37,7 +109,7 @@ namespace :classifier do next if file_language.nil? || file_language == 'Text' begin data = open(file_url).read - guessed_language, score = Linguist::Classifier.classify(Linguist::Samples::DATA, data).first + guessed_language, score = Linguist::Classifier.classify(Linguist::Samples.cache, data).first total += 1 guessed_language == file_language ? correct += 1 : incorrect += 1 @@ -71,3 +143,10 @@ namespace :classifier do end end end + + +def diff(a, b) + (a.keys | b.keys).each_with_object({}) do |key, diff| + diff[key] = [a[key], b[key]] unless a[key] == b[key] + end +end diff --git a/bin/linguist b/bin/linguist index 2cfa8064..6ac8f0a7 100755 --- a/bin/linguist +++ b/bin/linguist @@ -4,7 +4,9 @@ # usage: linguist [<--breakdown>] require 'linguist/file_blob' +require 'linguist/language' require 'linguist/repository' +require 'rugged' path = ARGV[0] || Dir.pwd @@ -18,7 +20,8 @@ ARGV.shift breakdown = true if ARGV[0] == "--breakdown" if File.directory?(path) - repo = Linguist::Repository.from_directory(path) + rugged = Rugged::Repository.new(path) + repo = Linguist::Repository.new(rugged, rugged.head.target_id) repo.languages.sort_by { |_, size| size }.reverse.each do |language, size| percentage = ((size / repo.size.to_f) * 100) percentage = sprintf '%.2f' % percentage @@ -28,7 +31,7 @@ if File.directory?(path) puts file_breakdown = repo.breakdown_by_file file_breakdown.each do |lang, files| - puts "#{lang}:" + puts "#{lang}:" files.each do |file| puts file end diff --git a/github-linguist.gemspec b/github-linguist.gemspec index f10f8d1f..382b6cae 100644 --- a/github-linguist.gemspec +++ b/github-linguist.gemspec @@ -1,6 +1,8 @@ +require File.expand_path('../lib/linguist/version', __FILE__) + Gem::Specification.new do |s| s.name = 'github-linguist' - s.version = '2.10.11' + s.version = Linguist::VERSION s.summary = "GitHub Language detection" s.description = 'We use this library at GitHub to detect blob languages, highlight code, ignore binary files, suppress generated files in diffs, and generate language breakdown graphs.' @@ -11,13 +13,15 @@ Gem::Specification.new do |s| s.files = Dir['lib/**/*'] s.executables << 'linguist' - s.add_dependency 'charlock_holmes', '~> 0.6.6' - s.add_dependency 'escape_utils', '>= 0.3.1' + s.add_dependency 'charlock_holmes', '~> 0.7.3' + s.add_dependency 'escape_utils', '~> 1.0.1' s.add_dependency 'mime-types', '~> 1.19' - s.add_dependency 'pygments.rb', '~> 0.5.4' + s.add_dependency 'pygments.rb', '~> 0.6.0' + s.add_dependency 'rugged', '~> 0.21.0' s.add_development_dependency 'json' s.add_development_dependency 'mocha' + s.add_development_dependency 'pry' s.add_development_dependency 'rake' s.add_development_dependency 'yajl-ruby' end diff --git a/lib/linguist.rb b/lib/linguist.rb index ad8337c8..3714b5a0 100644 --- a/lib/linguist.rb +++ b/lib/linguist.rb @@ -4,3 +4,4 @@ require 'linguist/heuristics' require 'linguist/language' require 'linguist/repository' require 'linguist/samples' +require 'linguist/version' diff --git a/lib/linguist/blob_helper.rb b/lib/linguist/blob_helper.rb index 37793a36..84aa2281 100644 --- a/lib/linguist/blob_helper.rb +++ b/lib/linguist/blob_helper.rb @@ -1,6 +1,4 @@ require 'linguist/generated' -require 'linguist/language' - require 'charlock_holmes' require 'escape_utils' require 'mime/types' @@ -112,6 +110,12 @@ module Linguist end end + def ruby_encoding + if hash = detect_encoding + hash[:ruby_encoding] + end + end + # Try to guess the encoding # # Returns: a Hash, with :encoding, :confidence, :type @@ -241,7 +245,31 @@ module Linguist def lines @lines ||= if viewable? && data - data.split(/\r\n|\r|\n/, -1) + # `data` is usually encoded as ASCII-8BIT even when the content has + # been detected as a different encoding. However, we are not allowed + # to change the encoding of `data` because we've made the implicit + # guarantee that each entry in `lines` is encoded the same way as + # `data`. + # + # Instead, we re-encode each possible newline sequence as the + # detected encoding, then force them back to the encoding of `data` + # (usually a binary encoding like ASCII-8BIT). This means that the + # byte sequence will match how newlines are likely encoded in the + # file, but we don't have to change the encoding of `data` as far as + # Ruby is concerned. This allows us to correctly parse out each line + # without changing the encoding of `data`, and + # also--importantly--without having to duplicate many (potentially + # large) strings. + begin + encoded_newlines = ["\r\n", "\r", "\n"]. + map { |nl| nl.encode(ruby_encoding, "ASCII-8BIT").force_encoding(data.encoding) } + + data.split(Regexp.union(encoded_newlines), -1) + rescue Encoding::ConverterNotFoundError + # The data is not splittable in the detected encoding. Assume it's + # one big line. + [data] + end else [] end @@ -283,15 +311,7 @@ module Linguist # # Returns a Language or nil if none is detected def language - return @language if defined? @language - - if defined?(@data) && @data.is_a?(String) - data = @data - else - data = lambda { (binary_mime_type? || binary?) ? "" : self.data } - end - - @language = Language.detect(name.to_s, data, mode) + @language ||= Language.detect(self) end # Internal: Get the lexer of the blob. diff --git a/lib/linguist/file_blob.rb b/lib/linguist/file_blob.rb index 7e7f1acd..bc475023 100644 --- a/lib/linguist/file_blob.rb +++ b/lib/linguist/file_blob.rb @@ -52,5 +52,20 @@ module Linguist def size File.size(@path) end + + # Public: Get file extension. + # + # Returns a String. + def extension + # File.extname returns nil if the filename is an extension. + extension = File.extname(name) + basename = File.basename(name) + # Checks if the filename is an extension. + if extension.empty? && basename[0] == "." + basename + else + extension + end + end end end diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index 14c64444..0f911c45 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -54,7 +54,7 @@ module Linguist name == 'Gemfile.lock' || minified_files? || compiled_coffeescript? || - xcode_project_file? || + xcode_file? || generated_parser? || generated_net_docfile? || generated_net_designer_file? || @@ -62,17 +62,20 @@ module Linguist generated_protocol_buffer? || generated_jni_header? || composer_lock? || - node_modules? + node_modules? || + godeps? || + vcr_cassette? || + generated_by_zephir? end - # Internal: Is the blob an XCode project file? + # Internal: Is the blob an Xcode file? # - # Generated if the file extension is an XCode project + # Generated if the file extension is an Xcode # file extension. # # Returns true of false. - def xcode_project_file? - ['.xib', '.nib', '.storyboard', '.pbxproj', '.xcworkspacedata', '.xcuserstate'].include?(extname) + def xcode_file? + ['.nib', '.xcworkspacedata', '.xcuserstate'].include?(extname) end # Internal: Is the blob minified files? @@ -229,11 +232,37 @@ module Linguist !!name.match(/node_modules\//) end + # Internal: Is the blob part of Godeps/, + # which are not meant for humans in pull requests. + # + # Returns true or false. + def godeps? + !!name.match(/Godeps\//) + end + # Internal: Is the blob a generated php composer lock file? # # Returns true or false. def composer_lock? - !!name.match(/composer.lock/) + !!name.match(/composer\.lock/) + end + + # Internal: Is the blob a generated by Zephir + # + # Returns true or false. + def generated_by_zephir? + !!name.match(/.\.zep\.(?:c|h|php)$/) + end + + # Is the blob a VCR Cassette file? + # + # Returns true or false + def vcr_cassette? + return false unless extname == '.yml' + return false unless lines.count > 2 + # VCR Cassettes have "recorded_with: VCR" in the second last line. + return lines[-2].include?("recorded_with: VCR") end end end + diff --git a/lib/linguist/heuristics.rb b/lib/linguist/heuristics.rb index 95232f9b..4c1bf295 100644 --- a/lib/linguist/heuristics.rb +++ b/lib/linguist/heuristics.rb @@ -1,7 +1,7 @@ module Linguist # A collection of simple heuristics that can be used to better analyze languages. class Heuristics - ACTIVE = false + ACTIVE = true # Public: Given an array of String language names, # apply heuristics against the given data and return an array @@ -13,28 +13,23 @@ module Linguist # Returns an array of Languages or [] def self.find_by_heuristics(data, languages) if active? - if languages.all? { |l| ["Objective-C", "C++"].include?(l) } - disambiguate_c(data, languages) - end if languages.all? { |l| ["Perl", "Prolog"].include?(l) } - disambiguate_pl(data, languages) + result = disambiguate_pl(data, languages) end if languages.all? { |l| ["ECL", "Prolog"].include?(l) } - disambiguate_ecl(data, languages) + result = disambiguate_ecl(data, languages) end if languages.all? { |l| ["IDL", "Prolog"].include?(l) } - disambiguate_pro(data, languages) - end - if languages.all? { |l| ["TypeScript", "XML"].include?(l) } - disambiguate_ts(data, languages) + result = disambiguate_pro(data, languages) end if languages.all? { |l| ["Common Lisp", "OpenCL"].include?(l) } - disambiguate_cl(data, languages) + result = disambiguate_cl(data, languages) end + return result end end - # .h extensions are ambigious between C, C++, and Objective-C. + # .h extensions are ambiguous between C, C++, and Objective-C. # We want to shortcut look for Objective-C _and_ now C++ too! # # Returns an array of Languages or [] @@ -86,6 +81,13 @@ module Linguist matches end + def self.disambiguate_r(data, languages) + matches = [] + matches << Language["Rebol"] if /\bRebol\b/i.match(data) + matches << Language["R"] if data.include?("<-") + matches + end + def self.active? !!ACTIVE end diff --git a/lib/linguist/language.rb b/lib/linguist/language.rb index bb91d126..9c53eb9d 100644 --- a/lib/linguist/language.rb +++ b/lib/linguist/language.rb @@ -9,6 +9,8 @@ end require 'linguist/classifier' require 'linguist/heuristics' require 'linguist/samples' +require 'linguist/file_blob' +require 'linguist/blob_helper' module Linguist # Language names that are recognizable by GitHub. Defined languages @@ -24,7 +26,6 @@ module Linguist @extension_index = Hash.new { |h,k| h[k] = [] } @interpreter_index = Hash.new { |h,k| h[k] = [] } @filename_index = Hash.new { |h,k| h[k] = [] } - @primary_extension_index = {} # Valid Languages types TYPES = [:data, :markup, :programming, :prose] @@ -80,12 +81,6 @@ module Linguist @extension_index[extension] << language end - if @primary_extension_index.key?(language.primary_extension) - raise ArgumentError, "Duplicate primary extension: #{language.primary_extension}" - end - - @primary_extension_index[language.primary_extension] = language - language.interpreters.each do |interpreter| @interpreter_index[interpreter] << language end @@ -99,18 +94,25 @@ module Linguist # Public: Detects the Language of the blob. # - # name - String filename - # data - String blob data. A block also maybe passed in for lazy - # loading. This behavior is deprecated and you should always - # pass in a String. - # mode - Optional String mode (defaults to nil) + # blob - an object that includes the Linguist `BlobHelper` interface; + # see Linguist::LazyBlob and Linguist::FileBlob for examples # # Returns Language or nil. - def self.detect(name, data, mode = nil) + def self.detect(blob) + name = blob.name.to_s + + # Check if the blob is possibly binary and bail early; this is a cheap + # test that uses the extension name to guess a binary binary mime type. + # + # We'll perform a more comprehensive test later which actually involves + # looking for binary characters in the blob + return nil if blob.likely_binary? || blob.binary? + # A bit of an elegant hack. If the file is executable but extensionless, # append a "magic" extension so it can be classified with other # languages that have shebang scripts. - if File.extname(name).empty? && mode && (mode.to_i(8) & 05) == 05 + extension = FileBlob.new(name).extension + if extension.empty? && blob.mode && (blob.mode.to_i(8) & 05) == 05 name += ".script!" end @@ -121,10 +123,10 @@ module Linguist # extension at all, in the case of extensionless scripts), we need to continue # our detection work if possible_languages.length > 1 - data = data.call() if data.respond_to?(:call) + data = blob.data possible_language_names = possible_languages.map(&:name) - # Don't bother with emptiness + # Don't bother with binary contents or an empty file if data.nil? || data == "" nil # Check if there's a shebang line and use that as authoritative @@ -133,8 +135,8 @@ module Linguist # No shebang. Still more work to do. Try to find it with our heuristics. elsif (determined = Heuristics.find_by_heuristics(data, possible_language_names)) && !determined.empty? determined.first - # Lastly, fall back to the probablistic classifier. - elsif classified = Classifier.classify(Samples::DATA, data, possible_language_names ).first + # Lastly, fall back to the probabilistic classifier. + elsif classified = Classifier.classify(Samples.cache, data, possible_language_names).first # Return the actual Language object based of the string language name (i.e., first element of `#classify`) Language[classified[0]] end @@ -190,9 +192,9 @@ module Linguist # # Returns all matching Languages or [] if none were found. def self.find_by_filename(filename) - basename, extname = File.basename(filename), File.extname(filename) - langs = [@primary_extension_index[extname]] + - @filename_index[basename] + + basename = File.basename(filename) + extname = FileBlob.new(filename).extension + langs = @filename_index[basename] + @extension_index[extname] langs.compact.uniq end @@ -299,15 +301,6 @@ module Linguist @interpreters = attributes[:interpreters] || [] @filenames = attributes[:filenames] || [] - unless @primary_extension = attributes[:primary_extension] - raise ArgumentError, "#{@name} is missing primary extension" - end - - # Prepend primary extension unless its already included - if primary_extension && !extensions.include?(primary_extension) - @extensions = [primary_extension] + extensions - end - # Set popular, and searchable flags @popular = attributes.key?(:popular) ? attributes[:popular] : false @searchable = attributes.key?(:searchable) ? attributes[:searchable] : true @@ -395,20 +388,6 @@ module Linguist # Returns the extensions Array attr_reader :extensions - # Deprecated: Get primary extension - # - # Defaults to the first extension but can be overridden - # in the languages.yml. - # - # The primary extension can not be nil. Tests should verify this. - # - # This attribute is only used by app/helpers/gists_helper.rb for - # creating the language dropdown. It really should be using `name` - # instead. Would like to drop primary extension. - # - # Returns the extension String. - attr_reader :primary_extension - # Public: Get interpreters # # Examples @@ -427,6 +406,27 @@ module Linguist # Returns the extensions Array attr_reader :filenames + # Public: Return all possible extensions for language + def all_extensions + (extensions + [primary_extension]).uniq + end + + # Deprecated: Get primary extension + # + # Defaults to the first extension but can be overridden + # in the languages.yml. + # + # The primary extension can not be nil. Tests should verify this. + # + # This method is only used by app/helpers/gists_helper.rb for creating + # the language dropdown. It really should be using `name` instead. + # Would like to drop primary extension. + # + # Returns the extension String. + def primary_extension + extensions.first + end + # Public: Get URL escaped name. # # Examples @@ -485,7 +485,7 @@ module Linguist # # Returns html String def colorize(text, options = {}) - lexer.highlight(text, options = {}) + lexer.highlight(text, options) end # Public: Return name as String representation @@ -510,9 +510,9 @@ module Linguist end end - extensions = Samples::DATA['extnames'] - interpreters = Samples::DATA['interpreters'] - filenames = Samples::DATA['filenames'] + extensions = Samples.cache['extnames'] + interpreters = Samples.cache['interpreters'] + filenames = Samples.cache['filenames'] popular = YAML.load_file(File.expand_path("../popular.yml", __FILE__)) languages_yml = File.expand_path("../languages.yml", __FILE__) @@ -532,6 +532,7 @@ module Linguist if extnames = extensions[name] extnames.each do |extname| if !options['extensions'].include?(extname) + warn "#{name} has a sample with extension (#{extname}) that isn't explicitly defined in languages.yml" unless extname == '.script!' options['extensions'] << extname end end @@ -568,9 +569,8 @@ module Linguist :group_name => options['group'], :searchable => options.key?('searchable') ? options['searchable'] : true, :search_term => options['search_term'], - :extensions => options['extensions'].sort, + :extensions => [options['extensions'].first] + options['extensions'][1..-1].sort, :interpreters => options['interpreters'].sort, - :primary_extension => options['primary_extension'], :filenames => options['filenames'], :popular => popular.include?(name) ) diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index fcc42188..b3548762 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -3,18 +3,15 @@ # All languages have an associated lexer for syntax highlighting. It # defaults to name.downcase, which covers most cases. # -# type - Either data, programming, markup, or nil +# type - Either data, programming, markup, prose, or nil # lexer - An explicit lexer String (defaults to name) # aliases - An Array of additional aliases (implicitly # includes name.downcase) # ace_mode - A String name of Ace Mode (if available) # wrap - Boolean wrap to enable line wrapping (default: false) -# extension - An Array of associated extensions -# interpreter - An Array of associated interpreters -# primary_extension - A String for the main extension associated with -# the language. Must be unique. Used when a Language is picked -# from a dropdown and we need to automatically choose an -# extension. +# extensions - An Array of associated extensions (the first one is +# considered the primary extension) +# interpreters - An Array of associated interpreters # searchable - Boolean flag to enable searching (defaults to true) # search_term - Deprecated: Some languages maybe indexed under a # different alias. Avoid defining new exceptions. @@ -28,13 +25,31 @@ ABAP: type: programming lexer: ABAP - primary_extension: .abap + extensions: + - .abap + +AGS Script: + type: programming + lexer: C++ + color: "#B9D9FF" + aliases: + - ags + extensions: + - .asc + - .ash ANTLR: type: programming color: "#9DC3FF" lexer: ANTLR - primary_extension: .g4 + extensions: + - .g4 + +APL: + type: programming + color: "#8a0707" + extensions: + - .apl ASP: type: programming @@ -44,8 +59,8 @@ ASP: aliases: - aspx - aspx-vb - primary_extension: .asp extensions: + - .asp - .asax - .ascx - .ashx @@ -56,11 +71,11 @@ ASP: ATS: type: programming color: "#1ac620" - primary_extension: .dats lexer: OCaml aliases: - ats2 extensions: + - .dats - .atxt - .hats - .sats @@ -72,37 +87,48 @@ ActionScript: search_term: as3 aliases: - as3 - primary_extension: .as + extensions: + - .as Ada: type: programming color: "#02f88c" - primary_extension: .adb extensions: + - .adb - .ads Agda: type: programming color: "#467C91" - primary_extension: .agda + extensions: + - .agda + +Alloy: + type: programming # 'modeling' would be more appropiate + lexer: Alloy + color: "#cc5c24" + extensions: + - .als ApacheConf: type: markup aliases: - apache - primary_extension: .apacheconf + extensions: + - .apacheconf Apex: type: programming - lexer: Text only - primary_extension: .cls + lexer: Java + extensions: + - .cls AppleScript: type: programming aliases: - osascript - primary_extension: .applescript extensions: + - .applescript - .scpt interpreters: - osascript @@ -111,24 +137,33 @@ Arc: type: programming color: "#ca2afe" lexer: Text only - primary_extension: .arc + extensions: + - .arc Arduino: type: programming color: "#bd79d1" lexer: C++ - primary_extension: .ino + extensions: + - .ino AsciiDoc: type: prose lexer: Text only ace_mode: asciidoc wrap: true - primary_extension: .asciidoc extensions: + - .asciidoc - .adoc - .asc +AspectJ: + type: programming + lexer: AspectJ + color: "#1957b0" + extensions: + - .aj + Assembly: type: programming lexer: NASM @@ -136,11 +171,13 @@ Assembly: search_term: nasm aliases: - nasm - primary_extension: .asm + extensions: + - .asm Augeas: type: programming - primary_extension: .aug + extensions: + - .aug AutoHotkey: type: programming @@ -148,7 +185,8 @@ AutoHotkey: color: "#6594b9" aliases: - ahk - primary_extension: .ahk + extensions: + - .ahk AutoIt: type: programming @@ -157,13 +195,14 @@ AutoIt: - au3 - AutoIt3 - AutoItScript - primary_extension: .au3 + extensions: + - .au3 Awk: type: programming lexer: Awk - primary_extension: .awk extensions: + - .awk - .auk - .gawk - .mawk @@ -180,66 +219,75 @@ Batchfile: search_term: bat aliases: - bat - primary_extension: .bat extensions: + - .bat - .cmd Befunge: - primary_extension: .befunge + extensions: + - .befunge BlitzBasic: type: programming aliases: - blitzplus - blitz3d - primary_extension: .bb extensions: + - .bb - .decls BlitzMax: - primary_extension: .bmx + type: programming + color: "#cd6400" + extensions: + - .bmx Bluespec: type: programming lexer: verilog - primary_extension: .bsv + extensions: + - .bsv Boo: type: programming color: "#d4bec1" - primary_extension: .boo + extensions: + - .boo Brainfuck: - primary_extension: .b extensions: + - .b - .bf Brightscript: type: programming lexer: Text only - primary_extension: .brs + extensions: + - .brs Bro: type: programming - primary_extension: .bro + extensions: + - .bro C: type: programming color: "#555" - primary_extension: .c extensions: + - .c - .cats + - .h - .w C#: type: programming ace_mode: csharp search_term: csharp - color: "#5a25a2" + color: "#178600" aliases: - csharp - primary_extension: .cs extensions: + - .cs - .cshtml - .csx @@ -250,23 +298,28 @@ C++: color: "#f34b7d" aliases: - cpp - primary_extension: .cpp extensions: + - .cpp - .C - .c++ + - .cc - .cxx - .H + - .h - .h++ - .hh - .hpp - .hxx + - .inl - .tcc - .tpp + - .ipp C-ObjDump: type: data lexer: c-objdump - primary_extension: .c-objdump + extensions: + - .c-objdump C2hs Haskell: type: programming @@ -274,24 +327,26 @@ C2hs Haskell: group: Haskell aliases: - c2hs - primary_extension: .chs + extensions: + - .chs CLIPS: type: programming lexer: Text only - primary_extension: .clp + extensions: + - .clp CMake: - primary_extension: .cmake extensions: - - .cmake.in + - .cmake + - .in filenames: - CMakeLists.txt COBOL: type: programming - primary_extension: .cob extensions: + - .cob - .cbl - .ccp - .cobol @@ -299,48 +354,58 @@ COBOL: CSS: ace_mode: css - color: "#1f085e" - primary_extension: .css + color: "#563d7c" + extensions: + - .css Ceylon: type: programming lexer: Ceylon - primary_extension: .ceylon + extensions: + - .ceylon + +Chapel: + type: programming + color: "#8dc63f" + aliases: + - chpl + extensions: + - .chpl ChucK: lexer: Java - primary_extension: .ck + extensions: + - .ck Cirru: type: programming color: "#aaaaff" - primary_extension: .cirru - # ace_mode: cirru - # lexer: Cirru - lexer: Text only + ace_mode: cirru + lexer: Cirru extensions: - - .cr + - .cirru Clean: type: programming color: "#3a81ad" lexer: Text only - primary_extension: .icl extensions: + - .icl - .dcl Clojure: type: programming ace_mode: clojure color: "#db5855" - primary_extension: .clj extensions: + - .clj - .cl2 - .cljc - .cljs - .cljscm - .cljx - .hic + - .hl filenames: - riemann.config @@ -351,8 +416,8 @@ CoffeeScript: aliases: - coffee - coffee-script - primary_extension: .coffee extensions: + - .coffee - ._coffee - .cson - .iced @@ -363,13 +428,26 @@ CoffeeScript: ColdFusion: type: programming + group: ColdFusion lexer: Coldfusion HTML ace_mode: coldfusion color: "#ed2cd6" search_term: cfm aliases: - cfm - primary_extension: .cfm + - cfml + extensions: + - .cfm + +ColdFusion CFC: + type: programming + group: ColdFusion + lexer: Coldfusion CFC + ace_mode: coldfusion + color: "#ed2cd6" + search_term: cfc + aliases: + - cfc extensions: - .cfc @@ -378,8 +456,8 @@ Common Lisp: color: "#3fb68b" aliases: - lisp - primary_extension: .lisp extensions: + - .lisp - .asd - .cl - .lsp @@ -392,15 +470,25 @@ Common Lisp: - clisp - ecl +Component Pascal: + type: programming + lexer: Delphi + color: "#b0ce4e" + extensions: + - .cp + - .cps + Coq: type: programming - primary_extension: .coq + extensions: + - .coq + - .v Cpp-ObjDump: type: data lexer: cpp-objdump - primary_extension: .cppobjdump extensions: + - .cppobjdump - .c++objdump - .cxx-objdump @@ -408,139 +496,182 @@ Creole: type: prose lexer: Text only wrap: true - primary_extension: .creole + extensions: + - .creole Crystal: type: programming lexer: Ruby - primary_extension: .cr + extensions: + - .cr ace_mode: ruby Cucumber: lexer: Gherkin - primary_extension: .feature + extensions: + - .feature Cuda: + type: programming lexer: CUDA - primary_extension: .cu extensions: + - .cu - .cuh +Cycript: + type: programming + lexer: JavaScript + extensions: + - .cy + Cython: type: programming group: Python - primary_extension: .pyx extensions: + - .pyx - .pxd - .pxi D: type: programming color: "#fcd46d" - primary_extension: .d extensions: + - .d - .di D-ObjDump: type: data lexer: d-objdump - primary_extension: .d-objdump + extensions: + - .d-objdump DM: type: programming color: "#075ff1" lexer: C++ - primary_extension: .dm + extensions: + - .dm aliases: - byond DOT: - type: programming + type: data lexer: Text only - primary_extension: .dot extensions: + - .dot - .gv Darcs Patch: search_term: dpatch aliases: - dpatch - primary_extension: .darcspatch extensions: + - .darcspatch - .dpatch Dart: type: programming color: "#98BAD6" - primary_extension: .dart - -DCPU-16 ASM: - type: programming - lexer: dasm16 - primary_extension: .dasm16 extensions: - - .dasm - aliases: - - dasm16 + - .dart Diff: - primary_extension: .diff + extensions: + - .diff + - .patch + +Dogescript: + type: programming + lexer: Text only + color: "#cca760" + extensions: + - .djs Dylan: type: programming color: "#3ebc27" - primary_extension: .dylan + extensions: + - .dylan + - .intr + - .lid + +E: + type: programming + color: "#ccce35" + lexer: Text only + extensions: + - .E Ecere Projects: type: data group: JavaScript lexer: JSON - primary_extension: .epj + extensions: + - .epj ECL: type: programming color: "#8a1267" - primary_extension: .ecl lexer: ECL extensions: + - .ecl - .eclxml +Eagle: + type: markup + color: "#3994bc" + lexer: XML + extensions: + - .sch + - .brd + Eiffel: type: programming - lexer: Text only + lexer: Eiffel color: "#946d57" - primary_extension: .e + extensions: + - .e Elixir: type: programming color: "#6e4a7e" - primary_extension: .ex extensions: + - .ex - .exs Elm: type: programming lexer: Haskell - primary_extension: .elm + extensions: + - .elm Emacs Lisp: type: programming - lexer: Scheme + lexer: Common Lisp color: "#c065db" aliases: - elisp - emacs - primary_extension: .el filenames: - .emacs extensions: + - .el - .emacs +EmberScript: + type: programming + color: "#f64e3e" + lexer: CoffeeScript + extensions: + - .em + - .emberscript + Erlang: type: programming color: "#0faf8d" - primary_extension: .erl extensions: + - .erl + - .escript - .hrl F#: @@ -550,17 +681,25 @@ F#: search_term: fsharp aliases: - fsharp - primary_extension: .fs extensions: + - .fs - .fsi - .fsx +FLUX: + type: programming + color: "#33CCFF" + lexer: Text only + extensions: + - .fx + - .flux + FORTRAN: type: programming lexer: Fortran color: "#4d41b1" - primary_extension: .f90 extensions: + - .f90 - .F - .F03 - .F08 @@ -580,7 +719,8 @@ FORTRAN: Factor: type: programming color: "#636746" - primary_extension: .factor + extensions: + - .factor filenames: - .factor-rc - .factor-boot-rc @@ -588,8 +728,8 @@ Factor: Fancy: type: programming color: "#7b9db4" - primary_extension: .fy extensions: + - .fy - .fancypack filenames: - Fakefile @@ -597,76 +737,163 @@ Fancy: Fantom: type: programming color: "#dbded5" - primary_extension: .fan + extensions: + - .fan Forth: type: programming - primary_extension: .fth color: "#341708" lexer: Text only extensions: + - .fth - .4th + - .forth + +Frege: + type: programming + color: "#00cafe" + lexer: Haskell + extensions: + - .fr + +G-code: + type: data + lexer: Text only + extensions: + - .g + - .gco + - .gcode + +Game Maker Language: + type: programming + color: "#8ad353" + lexer: JavaScript + extensions: + - .gml + +GAMS: + type: programming + lexer: Text only + extensions: + - .gms + +GAP: + type: programming + lexer: Text only + extensions: + - .g + - .gap + - .gd + - .gi GAS: type: programming group: Assembly - primary_extension: .s extensions: + - .s - .S +GDScript: + type: programming + lexer: Text only + extensions: + - .gd + GLSL: group: C type: programming - primary_extension: .glsl extensions: + - .glsl - .fp - .frag + - .frg + - .fshader - .geom - .glslv + - .gshader - .shader - .vert + - .vrx + - .vshader Genshi: - primary_extension: .kid + extensions: + - .kid Gentoo Ebuild: group: Shell lexer: Bash - primary_extension: .ebuild + extensions: + - .ebuild Gentoo Eclass: group: Shell lexer: Bash - primary_extension: .eclass + extensions: + - .eclass Gettext Catalog: search_term: pot searchable: false aliases: - pot - primary_extension: .po extensions: + - .po - .pot Glyph: type: programming color: "#e4cc98" lexer: Tcl - primary_extension: .glf + extensions: + - .glf + +Gnuplot: + type: programming + color: "#f0a9f0" + lexer: Gnuplot + extensions: + - .gp + - .gnu + - .gnuplot + - .plot + - .plt Go: type: programming - color: "#a89b4d" - primary_extension: .go + color: "#375eab" + extensions: + - .go Gosu: type: programming color: "#82937f" - primary_extension: .gs + extensions: + - .gs + - .gst + - .gsx + - .vark + +Grace: + type: programming + lexer: Text only + extensions: + - .grace + +Grammatical Framework: + type: programming + lexer: Haskell + aliases: + - gf + wrap: false + extensions: + - .gf + searchable: true + color: "#ff0000" Groff: - primary_extension: .man extensions: + - .man - '.1' - '.2' - '.3' @@ -679,7 +906,12 @@ Groovy: type: programming ace_mode: groovy color: "#e69f56" - primary_extension: .groovy + extensions: + - .groovy + - .gradle + - .grt + - .gtpl + - .gvy interpreters: - groovy @@ -688,26 +920,27 @@ Groovy Server Pages: lexer: Java Server Page aliases: - gsp - primary_extension: .gsp + extensions: + - .gsp HTML: type: markup ace_mode: html aliases: - xhtml - primary_extension: .html extensions: + - .html - .htm + - .st - .xhtml HTML+Django: type: markup group: HTML lexer: HTML+Django/Jinja - primary_extension: .mustache # TODO: This is incorrect extensions: - - .jinja - .mustache + - .jinja HTML+ERB: type: markup @@ -715,71 +948,78 @@ HTML+ERB: lexer: RHTML aliases: - erb - primary_extension: .erb extensions: - - .erb.deface - - .html.erb - - .html.erb.deface + - .erb + - .deface HTML+PHP: type: markup group: HTML - primary_extension: .phtml + extensions: + - .phtml HTTP: type: data - primary_extension: .http + extensions: + - .http Haml: group: HTML type: markup - primary_extension: .haml extensions: - - .haml.deface - - .html.haml.deface + - .haml + - .deface Handlebars: type: markup - lexer: Text only - primary_extension: .handlebars + lexer: Handlebars extensions: + - .handlebars - .hbs - - .html.handlebars - - .html.hbs Harbour: type: programming lexer: Text only color: "#0e60e3" - primary_extension: .hb + extensions: + - .hb Haskell: type: programming color: "#29b544" - primary_extension: .hs extensions: + - .hs - .hsc Haxe: type: programming ace_mode: haxe - color: "#346d51" - primary_extension: .hx + color: "#f7941e" extensions: + - .hx - .hxsl Hy: type: programming - lexer: Clojure + lexer: Hy ace_mode: clojure color: "#7891b1" - primary_extension: .hy + extensions: + - .hy IDL: type: programming - lexer: Text only + lexer: IDL color: "#e3592c" - primary_extension: .pro + extensions: + - .pro + - .dlm + +IGOR Pro: + type: programming + lexer: Igor + extensions: + - .ipf INI: type: data @@ -787,17 +1027,30 @@ INI: - .ini - .prefs - .properties - primary_extension: .ini + +Inno Setup: + extensions: + - .iss + lexer: Text only Idris: type: programming - lexer: Text only - primary_extension: .idr + lexer: Idris extensions: + - .idr - .lidr +Inform 7: + type: programming + lexer: Inform 7 + wrap: true + extensions: + - .ni + - .i7x + Inno Setup: - primary_extension: .iss + extensions: + - .iss lexer: Text only IRC log: @@ -805,39 +1058,50 @@ IRC log: search_term: irc aliases: - irc - primary_extension: .irclog extensions: + - .irclog - .weechatlog Io: type: programming color: "#a9188d" - primary_extension: .io + extensions: + - .io Ioke: type: programming color: "#078193" - primary_extension: .ik + extensions: + - .ik + +Isabelle: + type: programming + lexer: Text only + color: "#fdcd00" + extensions: + - .thy J: type: programming lexer: Text only - primary_extension: .ijs + extensions: + - .ijs JSON: type: data group: JavaScript ace_mode: json searchable: false - primary_extension: .json extensions: + - .json + - .lock - .sublime-keymap - - .sublime_metrics - .sublime-mousemap - .sublime-project - - .sublime_session - .sublime-settings - .sublime-workspace + - .sublime_metrics + - .sublime_session filenames: - .jshintrc - composer.lock @@ -845,25 +1109,36 @@ JSON: JSON5: type: data lexer: JavaScript - primary_extension: .json5 + extensions: + - .json5 JSONLD: type: data group: JavaScript ace_mode: json lexer: JavaScript - primary_extension: .jsonld + extensions: + - .jsonld + +JSONiq: + type: programming + ace_mode: jsoniq + lexer: XQuery + extensions: + - .jq Jade: group: HTML type: markup - primary_extension: .jade + extensions: + - .jade Java: type: programming ace_mode: java color: "#b07219" - primary_extension: .java + extensions: + - .java Java Server Pages: group: Java @@ -871,21 +1146,24 @@ Java Server Pages: search_term: jsp aliases: - jsp - primary_extension: .jsp + extensions: + - .jsp JavaScript: type: programming ace_mode: javascript - color: "#f15501" + color: "#f1e05a" aliases: - js - node - primary_extension: .js extensions: + - .js - ._js - .bones - .es6 + - .frag - .jake + - .jsb - .jsfl - .jsm - .jss @@ -894,61 +1172,110 @@ JavaScript: - .pac - .sjs - .ssjs + - .xsjs + - .xsjslib filenames: - Jakefile + interpreters: + - node Julia: type: programming - primary_extension: .jl + extensions: + - .jl color: "#a270ba" KRL: lexer: Text only type: programming color: "#f5c800" - primary_extension: .krl + extensions: + - .krl + +Kit: + type: markup + lexer: HTML + ace_mode: html + extensions: + - .kit Kotlin: type: programming - primary_extension: .kt extensions: + - .kt - .ktm - .kts LFE: type: programming - primary_extension: .lfe + extensions: + - .lfe color: "#004200" lexer: Common Lisp group: Erlang LLVM: - primary_extension: .ll + extensions: + - .ll + +LSL: + type: programming + lexer: LSL + ace_mode: lsl + extensions: + - .lsl + interpreters: + - lsl + color: '#3d9970' + +LabVIEW: + type: programming + lexer: Text only + extensions: + - .lvproj Lasso: type: programming lexer: Lasso color: "#2584c3" - primary_extension: .lasso + extensions: + - .lasso + - .las + - .lasso9 + - .ldml + +Latte: + type: markup + color: "#A8FF97" + group: HTML + lexer: Smarty + extensions: + - .latte Less: type: markup group: CSS lexer: CSS - primary_extension: .less + extensions: + - .less LilyPond: lexer: Text only - primary_extension: .ly extensions: + - .ly - .ily +Liquid: + type: markup + lexer: Text only + extensions: + - .liquid + Literate Agda: type: programming group: Agda - primary_extension: .lagda extensions: - - .lagda + - .lagda Literate CoffeeScript: type: programming @@ -959,7 +1286,8 @@ Literate CoffeeScript: search_term: litcoffee aliases: - litcoffee - primary_extension: .litcoffee + extensions: + - .litcoffee Literate Haskell: type: programming @@ -967,7 +1295,8 @@ Literate Haskell: search_term: lhs aliases: - lhs - primary_extension: .lhs + extensions: + - .lhs LiveScript: type: programming @@ -975,29 +1304,39 @@ LiveScript: color: "#499886" aliases: - ls - primary_extension: .ls extensions: + - .ls - ._ls filenames: - Slakefile Logos: type: programming - primary_extension: .xm + extensions: + - .xm Logtalk: type: programming - primary_extension: .lgt extensions: + - .lgt - .logtalk +LookML: + type: programming + lexer: YAML + ace_mode: yaml + color: "#652B81" + extensions: + - .lookml + Lua: type: programming ace_mode: lua color: "#fa1fa1" - primary_extension: .lua extensions: + - .lua - .nse + - .pd_lua - .rbxs interpreters: - lua @@ -1007,17 +1346,23 @@ M: lexer: Common Lisp aliases: - mumps - primary_extension: .mumps extensions: + - .mumps - .m +MTML: + type: markup + lexer: HTML + color: "#0095d9" + extensions: + - .mtml + Makefile: aliases: - make extensions: - .mak - .mk - primary_extension: .mak filenames: - makefile - Makefile @@ -1026,8 +1371,8 @@ Makefile: - make Mako: - primary_extension: .mako extensions: + - .mako - .mao Markdown: @@ -1035,17 +1380,36 @@ Markdown: lexer: Text only ace_mode: markdown wrap: true - primary_extension: .md extensions: + - .md - .markdown - .mkd + - .mkdn - .mkdown - .ron +Mask: + type: markup + lexer: SCSS + color: "#f97732" + ace_mode: scss + extensions: + - .mask + +Mathematica: + type: programming + extensions: + - .mathematica + - .m + - .nb + lexer: Mathematica + Matlab: type: programming color: "#bb92ac" - primary_extension: .matlab + extensions: + - .matlab + - .m Max: type: programming @@ -1055,8 +1419,8 @@ Max: - max/msp - maxmsp search_term: max/msp - primary_extension: .maxpat extensions: + - .maxpat - .maxhelp - .maxproj - .mxt @@ -1066,19 +1430,30 @@ MediaWiki: type: prose lexer: Text only wrap: true - primary_extension: .mediawiki + extensions: + - .mediawiki + +Mercury: + type: programming + color: "#abcdef" + lexer: Prolog + ace_mode: prolog + extensions: + - .m + - .moo MiniD: # Legacy searchable: false - primary_extension: .minid # Dummy extension + extensions: + - .minid # Dummy extension Mirah: type: programming lexer: Ruby - search_term: ruby + search_term: mirah color: "#c7a938" - primary_extension: .druby extensions: + - .druby - .duby - .mir - .mirah @@ -1086,59 +1461,83 @@ Mirah: Monkey: type: programming lexer: Monkey - primary_extension: .monkey + extensions: + - .monkey Moocode: + type: programming lexer: MOOCode - primary_extension: .moo + extensions: + - .moo MoonScript: type: programming - primary_extension: .moon + extensions: + - .moon Myghty: - primary_extension: .myt + extensions: + - .myt NSIS: - primary_extension: .nsi + extensions: + - .nsi + - .nsh Nemerle: type: programming color: "#0d3c6e" - primary_extension: .n + extensions: + - .n NetLogo: type: programming lexer: Common Lisp color: "#ff2b2b" - primary_extension: .nlogo + extensions: + - .nlogo Nginx: type: markup lexer: Nginx configuration file - primary_extension: .nginxconf + extensions: + - .nginxconf Nimrod: type: programming color: "#37775b" - primary_extension: .nim extensions: + - .nim - .nimrod +Nit: + type: programming + lexer: Text only + color: "#0d8921" + extensions: + - .nit + +Nix: + type: programming + lexer: Nix + extensions: + - .nix + Nu: type: programming lexer: Scheme color: "#c9df40" aliases: - nush - primary_extension: .nu + extensions: + - .nu filenames: - Nukefile NumPy: group: Python - primary_extension: .numpy extensions: + - .numpy - .numpyw - .numsc @@ -1146,8 +1545,9 @@ OCaml: type: programming ace_mode: ocaml color: "#3be133" - primary_extension: .ml extensions: + - .ml + - .eliom - .eliomi - .ml4 - .mli @@ -1157,7 +1557,8 @@ OCaml: ObjDump: type: data lexer: objdump - primary_extension: .objdump + extensions: + - .objdump Objective-C: type: programming @@ -1165,7 +1566,16 @@ Objective-C: aliases: - obj-c - objc - primary_extension: .m + extensions: + - .m + - .h + +Objective-C++: + type: programming + color: "#4886FC" + aliases: + - obj-c++ + - objc++ extensions: - .mm @@ -1174,26 +1584,35 @@ Objective-J: color: "#ff0c5a" aliases: - obj-j - primary_extension: .j extensions: + - .j - .sj Omgrofl: type: programming - primary_extension: .omgrofl + extensions: + - .omgrofl color: "#cabbff" lexer: Text only Opa: type: programming - primary_extension: .opa + extensions: + - .opa + +Opal: + type: programming + color: "#f7ede0" + lexer: Text only + extensions: + - .opal OpenCL: type: programming group: C lexer: C - primary_extension: .cl extensions: + - .cl - .opencl OpenEdge ABL: @@ -1202,46 +1621,76 @@ OpenEdge ABL: - progress - openedge - abl - primary_extension: .p + extensions: + - .p + - .cls + +OpenSCAD: + type: programming + lexer: Text only + extensions: + - .scad Org: type: prose lexer: Text only wrap: true - primary_extension: .org + extensions: + - .org + +Ox: + type: programming + lexer: Text only + extensions: + - .ox + - .oxh + - .oxo Oxygene: type: programming lexer: Text only color: "#5a63a3" - primary_extension: .oxygene + extensions: + - .oxygene PAWN: type: programming lexer: C++ color: "#dbb284" - primary_extension: .pwn + extensions: + - .pwn PHP: type: programming ace_mode: php - color: "#6e03c1" - primary_extension: .php + color: "#4F5D95" extensions: + - .php - .aw - .ctp + - .module - .php3 - .php4 - .php5 - .phpt filenames: - Phakefile + interpreters: + - php + +Pan: + type: programming + lexer: Pan + color: '#cc0000' + extensions: + - .pan Parrot: type: programming color: "#f3ca0a" lexer: Text only - primary_extension: .parrot # Dummy extension + extensions: + - .parrot # Dummy extension Parrot Internal Representation: group: Parrot @@ -1249,7 +1698,8 @@ Parrot Internal Representation: lexer: Text only aliases: - pir - primary_extension: .pir + extensions: + - .pir Parrot Assembly: group: Parrot @@ -1257,38 +1707,44 @@ Parrot Assembly: lexer: Text only aliases: - pasm - primary_extension: .pasm + extensions: + - .pasm Pascal: type: programming lexer: Delphi color: "#b0ce4e" - primary_extension: .pas extensions: + - .pas - .dfm + - .dpr - .lpr + - .pp Perl: type: programming ace_mode: perl color: "#0298c3" - primary_extension: .pl extensions: + - .pl - .PL + - .cgi + - .fcgi - .perl - .ph - .plx - .pm - .pod - .psgi + - .t interpreters: - perl Perl6: type: programming color: "#0298c3" - primary_extension: .p6 extensions: + - .p6 - .6pl - .6pm - .nqp @@ -1297,12 +1753,19 @@ Perl6: - .pl6 - .pm6 +PigLatin: + type: programming + color: "#fcd7de" + lexer: Text only + extensions: + - .pig + Pike: type: programming color: "#066ab2" - lexer: C - primary_extension: .pike + lexer: Pike extensions: + - .pike - .pmod Pod: @@ -1310,18 +1773,20 @@ Pod: lexer: Text only ace_mode: perl wrap: true - primary_extension: .pod + extensions: + - .pod PogoScript: type: programming color: "#d80074" lexer: Text only - primary_extension: .pogo + extensions: + - .pogo PostScript: type: markup - primary_extension: .ps extensions: + - .ps - .eps PowerShell: @@ -1329,8 +1794,8 @@ PowerShell: ace_mode: powershell aliases: - posh - primary_extension: .ps1 extensions: + - .ps1 - .psd1 - .psm1 @@ -1338,28 +1803,37 @@ Processing: type: programming lexer: Java color: "#2779ab" - primary_extension: .pde + extensions: + - .pde Prolog: type: programming + lexer: Logtalk color: "#74283c" - primary_extension: .prolog extensions: - - .ecl - .pl + - .ecl - .pro + - .prolog + +Propeller Spin: + type: programming + lexer: Text only + color: "#2b446d" + extensions: + - .spin Protocol Buffer: type: markup aliases: - protobuf - Protocol Buffers - primary_extension: .proto + extensions: + - .proto Puppet: type: programming color: "#cc5555" - primary_extension: .pp extensions: - .pp filenames: @@ -1369,16 +1843,27 @@ Pure Data: type: programming color: "#91de79" lexer: Text only - primary_extension: .pd + extensions: + - .pd + +PureScript: + type: programming + color: "#bcdc53" + lexer: Haskell + extensions: + - .purs Python: type: programming ace_mode: python color: "#3581ba" - primary_extension: .py extensions: + - .py + - .cgi - .gyp - .lmi + - .pyde + - .pyp - .pyt - .pyw - .wsgi @@ -1395,12 +1880,20 @@ Python traceback: group: Python lexer: Python Traceback searchable: false - primary_extension: .pytb + extensions: + - .pytb QML: type: markup color: "#44a51c" - primary_extension: .qml + extensions: + - .qml + +QMake: + lexer: Text only + extensions: + - .pro + - .pri R: type: programming @@ -1408,9 +1901,12 @@ R: lexer: S aliases: - R - primary_extension: .r + - Rscript extensions: + - .r - .R + - .Rd + - .rd - .rsx filenames: - .Rprofile @@ -1419,16 +1915,17 @@ R: RDoc: type: prose - lexer: Text only + lexer: Rd ace_mode: rdoc wrap: true - primary_extension: .rdoc + extensions: + - .rdoc REALbasic: type: programming lexer: VB.net - primary_extension: .rbbas extensions: + - .rbbas - .rbfrm - .rbmnu - .rbres @@ -1438,54 +1935,69 @@ REALbasic: RHTML: type: markup group: HTML - primary_extension: .rhtml + extensions: + - .rhtml RMarkdown: type: prose lexer: Text only wrap: true ace_mode: markdown - primary_extension: .rmd extensions: + - .rmd - .Rmd Racket: type: programming lexer: Racket color: "#ae17ff" - primary_extension: .rkt extensions: + - .rkt - .rktd - .rktl + - .scrbl Ragel in Ruby Host: type: programming lexer: Ragel in Ruby Host color: "#ff9c2e" - primary_extension: .rl + extensions: + - .rl Raw token data: search_term: raw aliases: - raw - primary_extension: .raw + extensions: + - .raw Rebol: type: programming lexer: REBOL color: "#358a5b" - primary_extension: .rebol extensions: + - .reb + - .r - .r2 - .r3 + - .rebol + +Red: + type: programming + lexer: Text only + color: "#ee0000" + extensions: + - .red + - .reds Redcode: - primary_extension: .cw + extensions: + - .cw RobotFramework: type: programming - primary_extension: .robot - # extensions: + extensions: + - .robot # - .txt Rouge: @@ -1493,7 +2005,8 @@ Rouge: lexer: Clojure ace_mode: clojure color: "#cc0088" - primary_extension: .rg + extensions: + - .rg Ruby: type: programming @@ -1505,14 +2018,17 @@ Ruby: - rake - rb - rbx - primary_extension: .rb extensions: + - .rb - .builder - .gemspec - .god - .irbrc - .mspec + - .pluginspec - .podspec + - .rabl + - .rake - .rbuild - .rbw - .rbx @@ -1522,62 +2038,103 @@ Ruby: interpreters: - ruby filenames: + - .pryrc - Appraisals - Berksfile + - Buildfile - Gemfile + - Gemfile.lock - Guardfile + - Jarfile + - Mavenfile - Podfile + - Puppetfile - Thorfile - Vagrantfile + - buildfile Rust: type: programming color: "#dea584" - primary_extension: .rs + extensions: + - .rs + +SAS: + type: programming + color: "#1E90FF" + lexer: Text only + extensions: + - .sas SCSS: type: markup group: CSS ace_mode: scss - primary_extension: .scss + extensions: + - .scss + +SQF: + type: programming + color: "#FFCB1F" + lexer: C++ + extensions: + - .sqf + - .hqf SQL: type: data ace_mode: sql - searchable: false - primary_extension: .sql + extensions: + - .sql + - .prc + - .tab + - .udf + - .viw + +STON: + type: data + group: Smalltalk + lexer: JSON + extensions: + - .ston Sage: type: programming lexer: Python group: Python - primary_extension: .sage + extensions: + - .sage Sass: type: markup group: CSS - primary_extension: .sass + extensions: + - .sass + - .scss Scala: type: programming ace_mode: scala color: "#7dd3b0" - primary_extension: .scala extensions: + - .scala + - .sbt - .sc Scaml: group: HTML type: markup - primary_extension: .scaml + extensions: + - .scaml Scheme: type: programming color: "#1e4aec" - primary_extension: .scm extensions: + - .scm - .sld - .sls + - .sps - .ss interpreters: - guile @@ -1587,13 +2144,17 @@ Scheme: Scilab: type: programming - primary_extension: .sci + extensions: + - .sci + - .sce + - .tst Self: type: programming color: "#0579aa" lexer: Text only - primary_extension: .self + extensions: + - .self Shell: type: programming @@ -1604,10 +2165,13 @@ Shell: - sh - bash - zsh - primary_extension: .sh extensions: + - .sh + - .bash - .bats + - .cgi - .tmux + - .zsh interpreters: - bash - sh @@ -1615,66 +2179,134 @@ Shell: filenames: - Dockerfile +ShellSession: + type: programming + lexer: Bash Session + extensions: + - .sh-session + +Shen: + type: programming + color: "#120F14" + lexer: Text only + extensions: + - .shen + Slash: type: programming color: "#007eff" - primary_extension: .sl + extensions: + - .sl + +Slim: + group: HTML + type: markup + lexer: Slim + color: "#ff8877" + extensions: + - .slim Smalltalk: type: programming color: "#596706" - primary_extension: .st + extensions: + - .st Smarty: - primary_extension: .tpl + extensions: + - .tpl + +SourcePawn: + type: programming + color: "#f69e1d" + aliases: + - sourcemod + extensions: + - .sp Squirrel: type: programming lexer: C++ - primary_extension: .nut + extensions: + - .nut Standard ML: type: programming color: "#dc566d" aliases: - sml - primary_extension: .sml extensions: + - .ML - .fun + - .sig + - .sml + +Stata: + type: programming + lexer: Text only + extensions: + - .do + - .ado + - .doh + - .ihlp + - .mata + - .matah + - .sthlp Stylus: type: markup group: CSS lexer: Text only - primary_extension: .styl + extensions: + - .styl SuperCollider: type: programming color: "#46390b" lexer: Text only - primary_extension: .scd + extensions: + - .scd + +Swift: + type: programming + lexer: Swift + color: "#ffac45" + extensions: + - .swift + +SystemVerilog: + type: programming + color: "#343761" + lexer: systemverilog + extensions: + - .sv + - .svh + - .vh TOML: type: data - primary_extension: .toml + extensions: + - .toml TXL: type: programming lexer: Text only - primary_extension: .txl + extensions: + - .txl Tcl: type: programming color: "#e4cc98" - primary_extension: .tcl extensions: + - .tcl - .adp + - .tm Tcsh: type: programming group: Shell - primary_extension: .tcsh extensions: + - .tcsh - .csh TeX: @@ -1684,13 +2316,16 @@ TeX: wrap: true aliases: - latex - primary_extension: .tex extensions: + - .tex - .aux + - .bbx - .bib + - .cbx - .cls - .dtx - .ins + - .lbx - .ltx - .mkii - .mkiv @@ -1700,35 +2335,39 @@ TeX: Tea: type: markup - primary_extension: .tea + extensions: + - .tea Textile: type: prose lexer: Text only ace_mode: textile wrap: true - primary_extension: .textile + extensions: + - .textile Turing: type: programming color: "#45f715" lexer: Text only - primary_extension: .t extensions: + - .t - .tu Twig: type: markup group: PHP lexer: HTML+Django/Jinja - primary_extension: .twig + extensions: + - .twig TypeScript: type: programming color: "#31859c" aliases: - ts - primary_extension: .ts + extensions: + - .ts Unified Parallel C: type: programming @@ -1736,20 +2375,30 @@ Unified Parallel C: lexer: C ace_mode: c_cpp color: "#755223" - primary_extension: .upc + extensions: + - .upc UnrealScript: type: programming color: "#a54c4d" lexer: Java - primary_extension: .uc + extensions: + - .uc + +VCL: + type: programming + lexer: Perl + ace_mode: perl + color: "#0298c3" + extensions: + - .vcl VHDL: type: programming lexer: vhdl color: "#543978" - primary_extension: .vhdl extensions: + - .vhdl - .vhd - .vhf - .vhi @@ -1761,16 +2410,16 @@ VHDL: Vala: type: programming color: "#ee7d06" - primary_extension: .vala extensions: + - .vala - .vapi Verilog: type: programming lexer: verilog color: "#848bf3" - primary_extension: .v extensions: + - .v - .veo VimL: @@ -1779,7 +2428,8 @@ VimL: search_term: vim aliases: - vim - primary_extension: .vim + extensions: + - .vim filenames: - .vimrc - vimrc @@ -1789,9 +2439,10 @@ Visual Basic: type: programming lexer: VB.net color: "#945db7" - primary_extension: .vb extensions: + - .vb - .bas + - .cls - .frm - .frx - .vba @@ -1802,12 +2453,14 @@ Volt: type: programming lexer: D color: "#0098db" - primary_extension: .volt + extensions: + - .volt XC: type: programming lexer: C - primary_extension: .xc + extensions: + - .xc XML: type: markup @@ -1816,21 +2469,30 @@ XML: - rss - xsd - wsdl - primary_extension: .xml extensions: + - .xml + - .ant - .axml - .ccxml - .clixml - .cproject + - .csproj + - .ct - .dita - .ditamap - .ditaval + - .filters + - .fsproj - .glade - .grxml + - .ivy - .jelly - .kml - .launch - .mxml + - .nproj + - .nuspec + - .osm - .plist - .pluginspec - .ps1xml @@ -1841,6 +2503,7 @@ XML: - .scxml - .srdf - .svg + - .targets - .tmCommand - .tmLanguage - .tmPreferences @@ -1849,6 +2512,8 @@ XML: - .tml - .ui - .urdf + - .vbproj + - .vcxproj - .vxml - .wsdl - .wxi @@ -1871,15 +2536,15 @@ XML: XProc: type: programming lexer: XML - primary_extension: .xpl extensions: + - .xpl - .xproc XQuery: type: programming color: "#2700e2" - primary_extension: .xquery extensions: + - .xquery - .xq - .xql - .xqm @@ -1887,35 +2552,63 @@ XQuery: XS: lexer: C - primary_extension: .xs + extensions: + - .xs XSLT: type: programming aliases: - xsl - primary_extension: .xslt extensions: - - .xsl + - .xslt + - .xsl + +Xojo: + type: programming + lexer: VB.net + extensions: + - .xojo_code + - .xojo_menu + - .xojo_report + - .xojo_script + - .xojo_toolbar + - .xojo_window Xtend: type: programming - primary_extension: .xtend + extensions: + - .xtend YAML: type: data aliases: - yml - primary_extension: .yml extensions: + - .yml - .reek - .rviz - .yaml +Zephir: + type: programming + lexer: PHP + color: "#118f9e" + extensions: + - .zep + +Zimpl: + type: programming + lexer: Text only + extensions: + - .zimpl + - .zmpl + - .zpl + eC: type: programming search_term: ec - primary_extension: .ec extensions: + - .ec - .eh edn: @@ -1923,28 +2616,34 @@ edn: lexer: Clojure ace_mode: clojure color: "#db5855" - primary_extension: .edn + extensions: + - .edn fish: type: programming group: Shell lexer: Text only - primary_extension: .fish + extensions: + - .fish mupad: lexer: MuPAD - primary_extension: .mu + extensions: + - .mu nesC: type: programming color: "#ffce3b" - primary_extension: .nc + lexer: nesC + extensions: + - .nc ooc: type: programming lexer: Ooc color: "#b0b77e" - primary_extension: .ooc + extensions: + - .ooc reStructuredText: type: prose @@ -1952,8 +2651,8 @@ reStructuredText: search_term: rst aliases: - rst - primary_extension: .rst extensions: + - .rst - .rest wisp: @@ -1961,10 +2660,12 @@ wisp: lexer: Clojure ace_mode: clojure color: "#7582D1" - primary_extension: .wisp + extensions: + - .wisp xBase: type: programming lexer: Text only color: "#3a4040" - primary_extension: .prg + extensions: + - .prg diff --git a/lib/linguist/lazy_blob.rb b/lib/linguist/lazy_blob.rb new file mode 100644 index 00000000..bb262241 --- /dev/null +++ b/lib/linguist/lazy_blob.rb @@ -0,0 +1,37 @@ +require 'linguist/blob_helper' +require 'rugged' + +module Linguist + class LazyBlob + include BlobHelper + + MAX_SIZE = 128 * 1024 + + attr_reader :repository + attr_reader :oid + attr_reader :name + attr_reader :mode + + def initialize(repo, oid, name, mode = nil) + @repository = repo + @oid = oid + @name = name + @mode = mode + end + + def data + load_blob! + @data + end + + def size + load_blob! + @size + end + + protected + def load_blob! + @data, @size = Rugged::Blob.to_buffer(repository, oid, MAX_SIZE) if @data.nil? + end + end +end diff --git a/lib/linguist/repository.rb b/lib/linguist/repository.rb index a62bf281..a89c81e6 100644 --- a/lib/linguist/repository.rb +++ b/lib/linguist/repository.rb @@ -1,4 +1,5 @@ -require 'linguist/file_blob' +require 'linguist/lazy_blob' +require 'rugged' module Linguist # A Repository is an abstraction of a Grit::Repo or a basic file @@ -7,100 +8,146 @@ module Linguist # Its primary purpose is for gathering language statistics across # the entire project. class Repository - # Public: Initialize a new Repository from a File directory - # - # base_path - A path String - # - # Returns a Repository - def self.from_directory(base_path) - new Dir["#{base_path}/**/*"]. - select { |f| File.file?(f) }. - map { |path| FileBlob.new(path, base_path) } + attr_reader :repository + + # Public: Create a new Repository based on the stats of + # an existing one + def self.incremental(repo, commit_oid, old_commit_oid, old_stats) + repo = self.new(repo, commit_oid) + repo.load_existing_stats(old_commit_oid, old_stats) + repo end - # Public: Initialize a new Repository + # Public: Initialize a new Repository to be analyzed for language + # data # - # enum - Enumerator that responds to `each` and - # yields Blob objects + # repo - a Rugged::Repository object + # commit_oid - the sha1 of the commit that will be analyzed; + # this is usually the master branch # # Returns a Repository - def initialize(enum) - @enum = enum - @computed_stats = false - @language = @size = nil - @sizes = Hash.new { 0 } - @file_breakdown = Hash.new { |h,k| h[k] = Array.new } + def initialize(repo, commit_oid) + @repository = repo + @commit_oid = commit_oid + + raise TypeError, 'commit_oid must be a commit SHA1' unless commit_oid.is_a?(String) + end + + # Public: Load the results of a previous analysis on this repository + # to speed up the new scan. + # + # The new analysis will be performed incrementally as to only take + # into account the file changes since the last time the repository + # was scanned + # + # old_commit_oid - the sha1 of the commit that was previously analyzed + # old_stats - the result of the previous analysis, obtained by calling + # Repository#cache on the old repository + # + # Returns nothing + def load_existing_stats(old_commit_oid, old_stats) + @old_commit_oid = old_commit_oid + @old_stats = old_stats + nil end # Public: Returns a breakdown of language stats. # # Examples # - # # => { Language['Ruby'] => 46319, - # Language['JavaScript'] => 258 } + # # => { 'Ruby' => 46319, + # 'JavaScript' => 258 } # - # Returns a Hash of Language keys and Integer size values. + # Returns a Hash of language names and Integer size values. def languages - compute_stats - @sizes + @sizes ||= begin + sizes = Hash.new { 0 } + cache.each do |_, (language, size)| + sizes[language] += size + end + sizes + end end # Public: Get primary Language of repository. # - # Returns a Language + # Returns a language name def language - compute_stats - @language + @language ||= begin + primary = languages.max_by { |(_, size)| size } + primary && primary[0] + end end # Public: Get the total size of the repository. # # Returns a byte size Integer def size - compute_stats - @size + @size ||= languages.inject(0) { |s,(_,v)| s + v } end # Public: Return the language breakdown of this repository by file + # + # Returns a map of language names => [filenames...] def breakdown_by_file - compute_stats - @file_breakdown + @file_breakdown ||= begin + breakdown = Hash.new { |h,k| h[k] = Array.new } + cache.each do |filename, (language, _)| + breakdown[language] << filename + end + breakdown + end end - # Internal: Compute language breakdown for each blob in the Repository. + # Public: Return the cached results of the analysis # - # Returns nothing - def compute_stats - return if @computed_stats + # This is a per-file breakdown that can be passed to other instances + # of Linguist::Repository to perform incremental scans + # + # Returns a map of filename => [language, size] + def cache + @cache ||= begin + if @old_commit_oid == @commit_oid + @old_stats + else + compute_stats(@old_commit_oid, @commit_oid, @old_stats) + end + end + end - @enum.each do |blob| - # Skip files that are likely binary - next if blob.likely_binary? + protected + def compute_stats(old_commit_oid, commit_oid, cache = nil) + file_map = cache ? cache.dup : {} + old_tree = old_commit_oid && Rugged::Commit.lookup(repository, old_commit_oid).tree + new_tree = Rugged::Commit.lookup(repository, commit_oid).tree - # Skip vendored or generated blobs - next if blob.vendored? || blob.generated? || blob.language.nil? + diff = Rugged::Tree.diff(repository, old_tree, new_tree) - # Only include programming languages and acceptable markup languages - if blob.language.type == :programming || Language.detectable_markup.include?(blob.language.name) + diff.each_delta do |delta| + old = delta.old_file[:path] + new = delta.new_file[:path] - # Build up the per-file breakdown stats - @file_breakdown[blob.language.group.name] << blob.name + file_map.delete(old) + next if delta.binary - @sizes[blob.language.group] += blob.size + if [:added, :modified].include? delta.status + # Skip submodules + mode = delta.new_file[:mode] + next if (mode & 040000) != 0 + + blob = Linguist::LazyBlob.new(repository, delta.new_file[:oid], new, mode.to_s(8)) + + # Skip vendored or generated blobs + next if blob.vendored? || blob.generated? || blob.language.nil? + + # Only include programming languages and acceptable markup languages + if blob.language.type == :programming || Language.detectable_markup.include?(blob.language.name) + file_map[new] = [blob.language.group.name, blob.size] + end end end - # Compute total size - @size = @sizes.inject(0) { |s,(_,v)| s + v } - - # Get primary language - if primary = @sizes.max_by { |(_, size)| size } - @language = primary[0] - end - - @computed_stats = true - - nil + file_map end end end diff --git a/lib/linguist/samples.json b/lib/linguist/samples.json deleted file mode 100644 index 67f6e90e..00000000 --- a/lib/linguist/samples.json +++ /dev/null @@ -1,48758 +0,0 @@ -{ - "extnames": { - "ABAP": [ - ".abap" - ], - "Agda": [ - ".agda" - ], - "Apex": [ - ".cls" - ], - "AppleScript": [ - ".applescript" - ], - "Arduino": [ - ".ino" - ], - "AsciiDoc": [ - ".adoc", - ".asc", - ".asciidoc" - ], - "ATS": [ - ".atxt", - ".dats", - ".hats", - ".sats" - ], - "AutoHotkey": [ - ".ahk" - ], - "Awk": [ - ".awk" - ], - "BlitzBasic": [ - ".bb" - ], - "Bluespec": [ - ".bsv" - ], - "Brightscript": [ - ".brs" - ], - "C": [ - ".c", - ".cats", - ".h" - ], - "C#": [ - ".cs", - ".cshtml" - ], - "C++": [ - ".cc", - ".cpp", - ".h", - ".hpp" - ], - "Ceylon": [ - ".ceylon" - ], - "Cirru": [ - ".cirru" - ], - "Clojure": [ - ".cl2", - ".clj", - ".cljc", - ".cljs", - ".cljscm", - ".cljx", - ".hic" - ], - "COBOL": [ - ".cbl", - ".ccp", - ".cob", - ".cpy" - ], - "CoffeeScript": [ - ".coffee" - ], - "Common Lisp": [ - ".lisp" - ], - "Coq": [ - ".v" - ], - "Creole": [ - ".creole" - ], - "CSS": [ - ".css" - ], - "Cuda": [ - ".cu", - ".cuh" - ], - "Dart": [ - ".dart" - ], - "Diff": [ - ".patch" - ], - "DM": [ - ".dm" - ], - "ECL": [ - ".ecl" - ], - "edn": [ - ".edn" - ], - "Elm": [ - ".elm" - ], - "Emacs Lisp": [ - ".el" - ], - "Erlang": [ - ".erl", - ".escript", - ".script!" - ], - "fish": [ - ".fish" - ], - "Forth": [ - ".forth", - ".fth" - ], - "GAS": [ - ".s" - ], - "GLSL": [ - ".fp", - ".glsl" - ], - "Gosu": [ - ".gs", - ".gst", - ".gsx", - ".vark" - ], - "Groovy": [ - ".gradle", - ".script!" - ], - "Groovy Server Pages": [ - ".gsp" - ], - "Haml": [ - ".haml" - ], - "Handlebars": [ - ".handlebars", - ".hbs" - ], - "Hy": [ - ".hy" - ], - "IDL": [ - ".dlm", - ".pro" - ], - "Idris": [ - ".idr" - ], - "Ioke": [ - ".ik" - ], - "Jade": [ - ".jade" - ], - "Java": [ - ".java" - ], - "JavaScript": [ - ".js", - ".script!" - ], - "JSON": [ - ".json", - ".lock" - ], - "JSON5": [ - ".json5" - ], - "JSONLD": [ - ".jsonld" - ], - "Julia": [ - ".jl" - ], - "Kotlin": [ - ".kt" - ], - "KRL": [ - ".krl" - ], - "Lasso": [ - ".las", - ".lasso", - ".lasso9", - ".ldml" - ], - "Less": [ - ".less" - ], - "LFE": [ - ".lfe" - ], - "Literate Agda": [ - ".lagda" - ], - "Literate CoffeeScript": [ - ".litcoffee" - ], - "LiveScript": [ - ".ls" - ], - "Logos": [ - ".xm" - ], - "Logtalk": [ - ".lgt" - ], - "Lua": [ - ".pd_lua" - ], - "M": [ - ".m" - ], - "Makefile": [ - ".script!" - ], - "Markdown": [ - ".md" - ], - "Matlab": [ - ".m" - ], - "Max": [ - ".maxhelp", - ".maxpat", - ".mxt" - ], - "MediaWiki": [ - ".mediawiki" - ], - "Monkey": [ - ".monkey" - ], - "MoonScript": [ - ".moon" - ], - "Nemerle": [ - ".n" - ], - "NetLogo": [ - ".nlogo" - ], - "Nimrod": [ - ".nim" - ], - "NSIS": [ - ".nsh", - ".nsi" - ], - "Nu": [ - ".nu", - ".script!" - ], - "Objective-C": [ - ".h", - ".m" - ], - "OCaml": [ - ".eliom", - ".ml" - ], - "Omgrofl": [ - ".omgrofl" - ], - "Opa": [ - ".opa" - ], - "OpenCL": [ - ".cl" - ], - "OpenEdge ABL": [ - ".cls", - ".p" - ], - "Org": [ - ".org" - ], - "Oxygene": [ - ".oxygene" - ], - "Parrot Assembly": [ - ".pasm" - ], - "Parrot Internal Representation": [ - ".pir" - ], - "Pascal": [ - ".dpr" - ], - "PAWN": [ - ".pwn" - ], - "Perl": [ - ".fcgi", - ".pl", - ".pm", - ".script!", - ".t" - ], - "Perl6": [ - ".p6", - ".pm6" - ], - "PHP": [ - ".module", - ".php", - ".script!" - ], - "Pod": [ - ".pod" - ], - "PogoScript": [ - ".pogo" - ], - "PostScript": [ - ".ps" - ], - "PowerShell": [ - ".ps1", - ".psm1" - ], - "Processing": [ - ".pde" - ], - "Prolog": [ - ".ecl", - ".pl", - ".prolog" - ], - "Protocol Buffer": [ - ".proto" - ], - "Python": [ - ".py", - ".script!" - ], - "R": [ - ".R", - ".rsx", - ".script!" - ], - "Racket": [ - ".scrbl" - ], - "Ragel in Ruby Host": [ - ".rl" - ], - "RDoc": [ - ".rdoc" - ], - "Rebol": [ - ".r" - ], - "RMarkdown": [ - ".rmd" - ], - "RobotFramework": [ - ".robot" - ], - "Ruby": [ - ".pluginspec", - ".rabl", - ".rake", - ".rb", - ".script!" - ], - "Rust": [ - ".rs" - ], - "Sass": [ - ".sass", - ".scss" - ], - "Scala": [ - ".sbt", - ".sc", - ".script!" - ], - "Scaml": [ - ".scaml" - ], - "Scheme": [ - ".sps" - ], - "Scilab": [ - ".sce", - ".sci", - ".tst" - ], - "SCSS": [ - ".scss" - ], - "Shell": [ - ".bash", - ".script!", - ".sh", - ".zsh" - ], - "Slash": [ - ".sl" - ], - "Squirrel": [ - ".nut" - ], - "Standard ML": [ - ".fun", - ".sig", - ".sml" - ], - "Stylus": [ - ".styl" - ], - "SuperCollider": [ - ".scd" - ], - "Tea": [ - ".tea" - ], - "TeX": [ - ".cls" - ], - "Turing": [ - ".t" - ], - "TXL": [ - ".txl" - ], - "TypeScript": [ - ".ts" - ], - "UnrealScript": [ - ".uc" - ], - "Verilog": [ - ".v" - ], - "VHDL": [ - ".vhd" - ], - "Visual Basic": [ - ".cls", - ".vb", - ".vbhtml" - ], - "Volt": [ - ".volt" - ], - "wisp": [ - ".wisp" - ], - "XC": [ - ".xc" - ], - "XML": [ - ".ant", - ".ivy", - ".xml" - ], - "XProc": [ - ".xpl" - ], - "XQuery": [ - ".xqm" - ], - "XSLT": [ - ".xslt" - ], - "Xtend": [ - ".xtend" - ] - }, - "interpreters": { - - }, - "filenames": { - "ApacheConf": [ - ".htaccess", - "apache2.conf", - "httpd.conf" - ], - "INI": [ - ".editorconfig", - ".gitconfig" - ], - "Makefile": [ - "Makefile" - ], - "Nginx": [ - "nginx.conf" - ], - "Perl": [ - "ack" - ], - "Ruby": [ - "Appraisals", - "Capfile", - "Rakefile" - ], - "Shell": [ - ".bash_logout", - ".bash_profile", - ".bashrc", - ".cshrc", - ".login", - ".profile", - ".zlogin", - ".zlogout", - ".zprofile", - ".zshenv", - ".zshrc", - "Dockerfile", - "PKGBUILD", - "bash_logout", - "bash_profile", - "bashrc", - "cshrc", - "login", - "profile", - "zlogin", - "zlogout", - "zprofile", - "zshenv", - "zshrc" - ], - "VimL": [ - ".gvimrc", - ".vimrc" - ], - "YAML": [ - ".gemrc" - ] - }, - "tokens_total": 450519, - "languages_total": 547, - "tokens": { - "ABAP": { - "*/**": 1, - "*": 56, - "The": 2, - "MIT": 2, - "License": 1, - "(": 8, - ")": 8, - "Copyright": 1, - "c": 3, - "Ren": 1, - "van": 1, - "Mil": 1, - "Permission": 1, - "is": 2, - "hereby": 1, - "granted": 1, - "free": 1, - "of": 6, - "charge": 1, - "to": 10, - "any": 1, - "person": 1, - "obtaining": 1, - "a": 1, - "copy": 2, - "this": 2, - "software": 1, - "and": 3, - "associated": 1, - "documentation": 1, - "files": 4, - "the": 10, - "deal": 1, - "in": 3, - "Software": 3, - "without": 2, - "restriction": 1, - "including": 1, - "limitation": 1, - "rights": 1, - "use": 1, - "modify": 1, - "merge": 1, - "publish": 1, - "distribute": 1, - "sublicense": 1, - "and/or": 1, - "sell": 1, - "copies": 2, - "permit": 1, - "persons": 1, - "whom": 1, - "furnished": 1, - "do": 4, - "so": 1, - "subject": 1, - "following": 1, - "conditions": 1, - "above": 1, - "copyright": 1, - "notice": 2, - "permission": 1, - "shall": 1, - "be": 1, - "included": 1, - "all": 1, - "or": 1, - "substantial": 1, - "portions": 1, - "Software.": 1, - "THE": 6, - "SOFTWARE": 2, - "IS": 1, - "PROVIDED": 1, - "WITHOUT": 1, - "WARRANTY": 1, - "OF": 4, - "ANY": 2, - "KIND": 1, - "EXPRESS": 1, - "OR": 7, - "IMPLIED": 1, - "INCLUDING": 1, - "BUT": 1, - "NOT": 1, - "LIMITED": 1, - "TO": 2, - "WARRANTIES": 1, - "MERCHANTABILITY": 1, - "FITNESS": 1, - "FOR": 2, - "A": 1, - "PARTICULAR": 1, - "PURPOSE": 1, - "AND": 1, - "NONINFRINGEMENT.": 1, - "IN": 4, - "NO": 1, - "EVENT": 1, - "SHALL": 1, - "AUTHORS": 1, - "COPYRIGHT": 1, - "HOLDERS": 1, - "BE": 1, - "LIABLE": 1, - "CLAIM": 1, - "DAMAGES": 1, - "OTHER": 2, - "LIABILITY": 1, - "WHETHER": 1, - "AN": 1, - "ACTION": 1, - "CONTRACT": 1, - "TORT": 1, - "OTHERWISE": 1, - "ARISING": 1, - "FROM": 1, - "OUT": 1, - "CONNECTION": 1, - "WITH": 1, - "USE": 1, - "DEALINGS": 1, - "SOFTWARE.": 1, - "*/": 1, - "-": 978, - "CLASS": 2, - "CL_CSV_PARSER": 6, - "DEFINITION": 2, - "class": 2, - "cl_csv_parser": 2, - "definition": 1, - "public": 3, - "inheriting": 1, - "from": 1, - "cl_object": 1, - "final": 1, - "create": 1, - ".": 9, - "section.": 3, - "not": 3, - "include": 3, - "other": 3, - "source": 3, - "here": 3, - "type": 11, - "pools": 1, - "abap": 1, - "methods": 2, - "constructor": 2, - "importing": 1, - "delegate": 1, - "ref": 1, - "if_csv_parser_delegate": 1, - "csvstring": 1, - "string": 1, - "separator": 1, - "skip_first_line": 1, - "abap_bool": 2, - "parse": 2, - "raising": 1, - "cx_csv_parse_error": 2, - "protected": 1, - "private": 1, - "constants": 1, - "_textindicator": 1, - "value": 2, - "IMPLEMENTATION": 2, - "implementation.": 1, - "": 2, - "+": 9, - "|": 7, - "Instance": 2, - "Public": 1, - "Method": 2, - "CONSTRUCTOR": 1, - "[": 5, - "]": 5, - "DELEGATE": 1, - "TYPE": 5, - "REF": 1, - "IF_CSV_PARSER_DELEGATE": 1, - "CSVSTRING": 1, - "STRING": 1, - "SEPARATOR": 1, - "C": 1, - "SKIP_FIRST_LINE": 1, - "ABAP_BOOL": 1, - "": 2, - "method": 2, - "constructor.": 1, - "super": 1, - "_delegate": 1, - "delegate.": 1, - "_csvstring": 2, - "csvstring.": 1, - "_separator": 1, - "separator.": 1, - "_skip_first_line": 1, - "skip_first_line.": 1, - "endmethod.": 2, - "Get": 1, - "lines": 4, - "data": 3, - "is_first_line": 1, - "abap_true.": 2, - "standard": 2, - "table": 3, - "string.": 3, - "_lines": 1, - "field": 1, - "symbols": 1, - "": 3, - "loop": 1, - "at": 2, - "assigning": 1, - "Parse": 1, - "line": 1, - "values": 2, - "_parse_line": 2, - "Private": 1, - "_LINES": 1, - "<": 1, - "RETURNING": 1, - "STRINGTAB": 1, - "_lines.": 1, - "split": 1, - "cl_abap_char_utilities": 1, - "cr_lf": 1, - "into": 6, - "returning.": 1, - "Space": 2, - "concatenate": 4, - "csvvalue": 6, - "csvvalue.": 5, - "else.": 4, - "char": 2, - "endif.": 6, - "This": 1, - "indicates": 1, - "an": 1, - "error": 1, - "CSV": 1, - "formatting": 1, - "text_ended": 1, - "message": 2, - "e003": 1, - "csv": 1, - "msg.": 2, - "raise": 1, - "exception": 1, - "exporting": 1, - "endwhile.": 2, - "append": 2, - "csvvalues.": 2, - "clear": 1, - "pos": 2, - "endclass.": 1 - }, - "Agda": { - "module": 3, - "NatCat": 1, - "where": 2, - "open": 2, - "import": 2, - "Relation.Binary.PropositionalEquality": 1, - "-": 21, - "If": 1, - "you": 2, - "can": 1, - "show": 1, - "that": 1, - "a": 1, - "relation": 1, - "only": 1, - "ever": 1, - "has": 1, - "one": 1, - "inhabitant": 5, - "get": 1, - "the": 1, - "category": 1, - "laws": 1, - "for": 1, - "free": 1, - "EasyCategory": 3, - "(": 36, - "obj": 4, - "Set": 2, - ")": 36, - "_": 6, - "{": 10, - "x": 34, - "y": 28, - "z": 18, - "}": 10, - "id": 9, - "single": 4, - "r": 26, - "s": 29, - "assoc": 2, - "w": 4, - "t": 6, - "Data.Nat": 1, - "same": 5, - ".0": 2, - "n": 14, - "refl": 6, - ".": 5, - "suc": 6, - "m": 6, - "cong": 1, - "trans": 5, - ".n": 1, - "zero": 1, - "Nat": 1 - }, - "ApacheConf": { - "ServerSignature": 1, - "Off": 1, - "RewriteCond": 15, - "%": 48, - "{": 16, - "REQUEST_METHOD": 1, - "}": 16, - "(": 16, - "HEAD": 1, - "|": 80, - "TRACE": 1, - "DELETE": 1, - "TRACK": 1, - ")": 17, - "[": 17, - "NC": 13, - "OR": 14, - "]": 17, - "THE_REQUEST": 1, - "r": 1, - "n": 1, - "A": 6, - "D": 6, - "HTTP_REFERER": 1, - "<|>": 6, - "C": 5, - "E": 5, - "HTTP_COOKIE": 1, - "REQUEST_URI": 1, - "/": 3, - ";": 2, - "<": 1, - ".": 7, - "HTTP_USER_AGENT": 5, - "java": 1, - "curl": 2, - "wget": 2, - "winhttp": 1, - "HTTrack": 1, - "clshttp": 1, - "archiver": 1, - "loader": 1, - "email": 1, - "harvest": 1, - "extract": 1, - "grab": 1, - "miner": 1, - "libwww": 1, - "-": 43, - "perl": 1, - "python": 1, - "nikto": 1, - "scan": 1, - "#Block": 1, - "mySQL": 1, - "injects": 1, - "QUERY_STRING": 5, - ".*": 3, - "*": 1, - "union": 1, - "select": 1, - "insert": 1, - "cast": 1, - "set": 1, - "declare": 1, - "drop": 1, - "update": 1, - "md5": 1, - "benchmark": 1, - "./": 1, - "localhost": 1, - "loopback": 1, - ".0": 2, - ".1": 1, - "a": 1, - "z0": 1, - "RewriteRule": 1, - "index.php": 1, - "F": 1, - "#": 182, - "ServerRoot": 2, - "#Listen": 2, - "Listen": 2, - "LoadModule": 126, - "authn_file_module": 2, - "/usr/lib/apache2/modules/mod_authn_file.so": 1, - "authn_dbm_module": 2, - "/usr/lib/apache2/modules/mod_authn_dbm.so": 1, - "authn_anon_module": 2, - "/usr/lib/apache2/modules/mod_authn_anon.so": 1, - "authn_dbd_module": 2, - "/usr/lib/apache2/modules/mod_authn_dbd.so": 1, - "authn_default_module": 2, - "/usr/lib/apache2/modules/mod_authn_default.so": 1, - "authn_alias_module": 1, - "/usr/lib/apache2/modules/mod_authn_alias.so": 1, - "authz_host_module": 2, - "/usr/lib/apache2/modules/mod_authz_host.so": 1, - "authz_groupfile_module": 2, - "/usr/lib/apache2/modules/mod_authz_groupfile.so": 1, - "authz_user_module": 2, - "/usr/lib/apache2/modules/mod_authz_user.so": 1, - "authz_dbm_module": 2, - "/usr/lib/apache2/modules/mod_authz_dbm.so": 1, - "authz_owner_module": 2, - "/usr/lib/apache2/modules/mod_authz_owner.so": 1, - "authnz_ldap_module": 1, - "/usr/lib/apache2/modules/mod_authnz_ldap.so": 1, - "authz_default_module": 2, - "/usr/lib/apache2/modules/mod_authz_default.so": 1, - "auth_basic_module": 2, - "/usr/lib/apache2/modules/mod_auth_basic.so": 1, - "auth_digest_module": 2, - "/usr/lib/apache2/modules/mod_auth_digest.so": 1, - "file_cache_module": 1, - "/usr/lib/apache2/modules/mod_file_cache.so": 1, - "cache_module": 2, - "/usr/lib/apache2/modules/mod_cache.so": 1, - "disk_cache_module": 2, - "/usr/lib/apache2/modules/mod_disk_cache.so": 1, - "mem_cache_module": 2, - "/usr/lib/apache2/modules/mod_mem_cache.so": 1, - "dbd_module": 2, - "/usr/lib/apache2/modules/mod_dbd.so": 1, - "dumpio_module": 2, - "/usr/lib/apache2/modules/mod_dumpio.so": 1, - "ext_filter_module": 2, - "/usr/lib/apache2/modules/mod_ext_filter.so": 1, - "include_module": 2, - "/usr/lib/apache2/modules/mod_include.so": 1, - "filter_module": 2, - "/usr/lib/apache2/modules/mod_filter.so": 1, - "charset_lite_module": 1, - "/usr/lib/apache2/modules/mod_charset_lite.so": 1, - "deflate_module": 2, - "/usr/lib/apache2/modules/mod_deflate.so": 1, - "ldap_module": 1, - "/usr/lib/apache2/modules/mod_ldap.so": 1, - "log_forensic_module": 2, - "/usr/lib/apache2/modules/mod_log_forensic.so": 1, - "env_module": 2, - "/usr/lib/apache2/modules/mod_env.so": 1, - "mime_magic_module": 2, - "/usr/lib/apache2/modules/mod_mime_magic.so": 1, - "cern_meta_module": 2, - "/usr/lib/apache2/modules/mod_cern_meta.so": 1, - "expires_module": 2, - "/usr/lib/apache2/modules/mod_expires.so": 1, - "headers_module": 2, - "/usr/lib/apache2/modules/mod_headers.so": 1, - "ident_module": 2, - "/usr/lib/apache2/modules/mod_ident.so": 1, - "usertrack_module": 2, - "/usr/lib/apache2/modules/mod_usertrack.so": 1, - "unique_id_module": 2, - "/usr/lib/apache2/modules/mod_unique_id.so": 1, - "setenvif_module": 2, - "/usr/lib/apache2/modules/mod_setenvif.so": 1, - "version_module": 2, - "/usr/lib/apache2/modules/mod_version.so": 1, - "proxy_module": 2, - "/usr/lib/apache2/modules/mod_proxy.so": 1, - "proxy_connect_module": 2, - "/usr/lib/apache2/modules/mod_proxy_connect.so": 1, - "proxy_ftp_module": 2, - "/usr/lib/apache2/modules/mod_proxy_ftp.so": 1, - "proxy_http_module": 2, - "/usr/lib/apache2/modules/mod_proxy_http.so": 1, - "proxy_ajp_module": 2, - "/usr/lib/apache2/modules/mod_proxy_ajp.so": 1, - "proxy_balancer_module": 2, - "/usr/lib/apache2/modules/mod_proxy_balancer.so": 1, - "ssl_module": 4, - "/usr/lib/apache2/modules/mod_ssl.so": 1, - "mime_module": 4, - "/usr/lib/apache2/modules/mod_mime.so": 1, - "dav_module": 2, - "/usr/lib/apache2/modules/mod_dav.so": 1, - "status_module": 2, - "/usr/lib/apache2/modules/mod_status.so": 1, - "autoindex_module": 2, - "/usr/lib/apache2/modules/mod_autoindex.so": 1, - "asis_module": 2, - "/usr/lib/apache2/modules/mod_asis.so": 1, - "info_module": 2, - "/usr/lib/apache2/modules/mod_info.so": 1, - "suexec_module": 1, - "/usr/lib/apache2/modules/mod_suexec.so": 1, - "cgid_module": 3, - "/usr/lib/apache2/modules/mod_cgid.so": 1, - "cgi_module": 2, - "/usr/lib/apache2/modules/mod_cgi.so": 1, - "dav_fs_module": 2, - "/usr/lib/apache2/modules/mod_dav_fs.so": 1, - "dav_lock_module": 1, - "/usr/lib/apache2/modules/mod_dav_lock.so": 1, - "vhost_alias_module": 2, - "/usr/lib/apache2/modules/mod_vhost_alias.so": 1, - "negotiation_module": 2, - "/usr/lib/apache2/modules/mod_negotiation.so": 1, - "dir_module": 4, - "/usr/lib/apache2/modules/mod_dir.so": 1, - "imagemap_module": 2, - "/usr/lib/apache2/modules/mod_imagemap.so": 1, - "actions_module": 2, - "/usr/lib/apache2/modules/mod_actions.so": 1, - "speling_module": 2, - "/usr/lib/apache2/modules/mod_speling.so": 1, - "userdir_module": 2, - "/usr/lib/apache2/modules/mod_userdir.so": 1, - "alias_module": 4, - "/usr/lib/apache2/modules/mod_alias.so": 1, - "rewrite_module": 2, - "/usr/lib/apache2/modules/mod_rewrite.so": 1, - "": 17, - "mpm_netware_module": 2, - "User": 2, - "daemon": 2, - "Group": 2, - "": 17, - "ServerAdmin": 2, - "you@example.com": 2, - "#ServerName": 2, - "www.example.com": 2, - "DocumentRoot": 2, - "": 6, - "Options": 6, - "FollowSymLinks": 4, - "AllowOverride": 6, - "None": 8, - "Order": 10, - "deny": 10, - "allow": 10, - "Deny": 6, - "from": 10, - "all": 10, - "": 6, - "usr": 2, - "share": 1, - "apache2": 1, - "default": 1, - "site": 1, - "htdocs": 1, - "Indexes": 2, - "Allow": 4, - "DirectoryIndex": 2, - "index.html": 2, - "": 2, - "ht": 1, - "Satisfy": 4, - "All": 4, - "": 2, - "ErrorLog": 2, - "/var/log/apache2/error_log": 1, - "LogLevel": 2, - "warn": 2, - "log_config_module": 3, - "LogFormat": 6, - "combined": 4, - "common": 4, - "logio_module": 3, - "combinedio": 2, - "CustomLog": 2, - "/var/log/apache2/access_log": 2, - "#CustomLog": 2, - "ScriptAlias": 1, - "/cgi": 2, - "bin/": 2, - "#Scriptsock": 2, - "/var/run/apache2/cgisock": 1, - "lib": 1, - "cgi": 3, - "bin": 1, - "DefaultType": 2, - "text/plain": 2, - "TypesConfig": 2, - "/etc/apache2/mime.types": 1, - "#AddType": 4, - "application/x": 6, - "gzip": 6, - ".tgz": 6, - "#AddEncoding": 4, - "x": 4, - "compress": 4, - ".Z": 4, - ".gz": 4, - "AddType": 4, - "#AddHandler": 4, - "script": 2, - ".cgi": 2, - "type": 2, - "map": 2, - "var": 2, - "text/html": 2, - ".shtml": 4, - "#AddOutputFilter": 2, - "INCLUDES": 2, - "#MIMEMagicFile": 2, - "/etc/apache2/magic": 1, - "#ErrorDocument": 8, - "/missing.html": 2, - "http": 2, - "//www.example.com/subscription_info.html": 2, - "#EnableMMAP": 2, - "off": 5, - "#EnableSendfile": 2, - "#Include": 17, - "/etc/apache2/extra/httpd": 11, - "mpm.conf": 2, - "multilang": 2, - "errordoc.conf": 2, - "autoindex.conf": 2, - "languages.conf": 2, - "userdir.conf": 2, - "info.conf": 2, - "vhosts.conf": 2, - "manual.conf": 2, - "dav.conf": 2, - "default.conf": 2, - "ssl.conf": 2, - "SSLRandomSeed": 4, - "startup": 2, - "builtin": 4, - "connect": 2, - "libexec/apache2/mod_authn_file.so": 1, - "libexec/apache2/mod_authn_dbm.so": 1, - "libexec/apache2/mod_authn_anon.so": 1, - "libexec/apache2/mod_authn_dbd.so": 1, - "libexec/apache2/mod_authn_default.so": 1, - "libexec/apache2/mod_authz_host.so": 1, - "libexec/apache2/mod_authz_groupfile.so": 1, - "libexec/apache2/mod_authz_user.so": 1, - "libexec/apache2/mod_authz_dbm.so": 1, - "libexec/apache2/mod_authz_owner.so": 1, - "libexec/apache2/mod_authz_default.so": 1, - "libexec/apache2/mod_auth_basic.so": 1, - "libexec/apache2/mod_auth_digest.so": 1, - "libexec/apache2/mod_cache.so": 1, - "libexec/apache2/mod_disk_cache.so": 1, - "libexec/apache2/mod_mem_cache.so": 1, - "libexec/apache2/mod_dbd.so": 1, - "libexec/apache2/mod_dumpio.so": 1, - "reqtimeout_module": 1, - "libexec/apache2/mod_reqtimeout.so": 1, - "libexec/apache2/mod_ext_filter.so": 1, - "libexec/apache2/mod_include.so": 1, - "libexec/apache2/mod_filter.so": 1, - "substitute_module": 1, - "libexec/apache2/mod_substitute.so": 1, - "libexec/apache2/mod_deflate.so": 1, - "libexec/apache2/mod_log_config.so": 1, - "libexec/apache2/mod_log_forensic.so": 1, - "libexec/apache2/mod_logio.so": 1, - "libexec/apache2/mod_env.so": 1, - "libexec/apache2/mod_mime_magic.so": 1, - "libexec/apache2/mod_cern_meta.so": 1, - "libexec/apache2/mod_expires.so": 1, - "libexec/apache2/mod_headers.so": 1, - "libexec/apache2/mod_ident.so": 1, - "libexec/apache2/mod_usertrack.so": 1, - "#LoadModule": 4, - "libexec/apache2/mod_unique_id.so": 1, - "libexec/apache2/mod_setenvif.so": 1, - "libexec/apache2/mod_version.so": 1, - "libexec/apache2/mod_proxy.so": 1, - "libexec/apache2/mod_proxy_connect.so": 1, - "libexec/apache2/mod_proxy_ftp.so": 1, - "libexec/apache2/mod_proxy_http.so": 1, - "proxy_scgi_module": 1, - "libexec/apache2/mod_proxy_scgi.so": 1, - "libexec/apache2/mod_proxy_ajp.so": 1, - "libexec/apache2/mod_proxy_balancer.so": 1, - "libexec/apache2/mod_ssl.so": 1, - "libexec/apache2/mod_mime.so": 1, - "libexec/apache2/mod_dav.so": 1, - "libexec/apache2/mod_status.so": 1, - "libexec/apache2/mod_autoindex.so": 1, - "libexec/apache2/mod_asis.so": 1, - "libexec/apache2/mod_info.so": 1, - "libexec/apache2/mod_cgi.so": 1, - "libexec/apache2/mod_dav_fs.so": 1, - "libexec/apache2/mod_vhost_alias.so": 1, - "libexec/apache2/mod_negotiation.so": 1, - "libexec/apache2/mod_dir.so": 1, - "libexec/apache2/mod_imagemap.so": 1, - "libexec/apache2/mod_actions.so": 1, - "libexec/apache2/mod_speling.so": 1, - "libexec/apache2/mod_userdir.so": 1, - "libexec/apache2/mod_alias.so": 1, - "libexec/apache2/mod_rewrite.so": 1, - "perl_module": 1, - "libexec/apache2/mod_perl.so": 1, - "php5_module": 1, - "libexec/apache2/libphp5.so": 1, - "hfs_apple_module": 1, - "libexec/apache2/mod_hfs_apple.so": 1, - "mpm_winnt_module": 1, - "_www": 2, - "Library": 2, - "WebServer": 2, - "Documents": 1, - "MultiViews": 1, - "Hh": 1, - "Tt": 1, - "Dd": 1, - "Ss": 2, - "_": 1, - "": 1, - "rsrc": 1, - "": 1, - "": 1, - "namedfork": 1, - "": 1, - "ScriptAliasMatch": 1, - "i": 1, - "webobjects": 1, - "/private/var/run/cgisock": 1, - "CGI": 1, - "Executables": 1, - "/private/etc/apache2/mime.types": 1, - "/private/etc/apache2/magic": 1, - "#MaxRanges": 1, - "unlimited": 1, - "TraceEnable": 1, - "Include": 6, - "/private/etc/apache2/extra/httpd": 11, - "/private/etc/apache2/other/*.conf": 1 - }, - "Apex": { - "global": 70, - "class": 7, - "ArrayUtils": 1, - "{": 219, - "static": 83, - "String": 60, - "[": 102, - "]": 102, - "EMPTY_STRING_ARRAY": 1, - "new": 60, - "}": 219, - ";": 308, - "Integer": 34, - "MAX_NUMBER_OF_ELEMENTS_IN_LIST": 5, - "get": 4, - "return": 106, - "List": 71, - "": 30, - "objectToString": 1, - "(": 481, - "": 22, - "objects": 3, - ")": 481, - "strings": 3, - "null": 92, - "if": 91, - "objects.size": 1, - "for": 24, - "Object": 23, - "obj": 3, - "instanceof": 1, - "strings.add": 1, - "reverse": 2, - "anArray": 14, - "i": 55, - "j": 10, - "anArray.size": 2, - "-": 18, - "tmp": 6, - "while": 8, - "+": 75, - "SObject": 19, - "lowerCase": 1, - "strs": 9, - "returnValue": 22, - "strs.size": 3, - "str": 10, - "returnValue.add": 3, - "str.toLowerCase": 1, - "upperCase": 1, - "str.toUpperCase": 1, - "trim": 1, - "str.trim": 3, - "mergex": 2, - "array1": 8, - "array2": 9, - "merged": 6, - "array1.size": 4, - "array2.size": 2, - "<": 32, - "": 19, - "sObj": 4, - "merged.add": 2, - "Boolean": 38, - "isEmpty": 7, - "objectArray": 17, - "true": 12, - "objectArray.size": 6, - "isNotEmpty": 4, - "pluck": 1, - "fieldName": 3, - "||": 12, - "fieldName.trim": 2, - ".length": 2, - "plucked": 3, - ".get": 4, - "toString": 3, - "void": 9, - "assertArraysAreEqual": 2, - "expected": 16, - "actual": 16, - "//check": 2, - "to": 4, - "see": 2, - "one": 2, - "param": 2, - "is": 5, - "but": 2, - "the": 4, - "other": 2, - "not": 3, - "System.assert": 6, - "&&": 46, - "ArrayUtils.toString": 12, - "expected.size": 4, - "actual.size": 2, - "merg": 2, - "list1": 15, - "list2": 9, - "returnList": 11, - "list1.size": 6, - "list2.size": 2, - "throw": 6, - "IllegalArgumentException": 5, - "elmt": 8, - "returnList.add": 8, - "subset": 6, - "aList": 4, - "count": 10, - "startIndex": 9, - "<=>": 2, - "size": 2, - "1": 2, - "list1.get": 2, - "//": 11, - "//LIST/ARRAY": 1, - "SORTING": 1, - "//FOR": 2, - "FORCE.COM": 1, - "PRIMITIVES": 1, - "Double": 1, - "ID": 1, - "etc.": 1, - "qsort": 18, - "theList": 72, - "PrimitiveComparator": 2, - "sortAsc": 24, - "ObjectComparator": 3, - "comparator": 14, - "theList.size": 2, - "SALESFORCE": 1, - "OBJECTS": 1, - "sObjects": 1, - "ISObjectComparator": 3, - "private": 10, - "lo0": 6, - "hi0": 8, - "lo": 42, - "hi": 50, - "else": 25, - "comparator.compare": 12, - "prs": 8, - "pivot": 14, - "/": 4, - "BooleanUtils": 1, - "isFalse": 1, - "bool": 32, - "false": 13, - "isNotFalse": 1, - "isNotTrue": 1, - "isTrue": 1, - "negate": 1, - "toBooleanDefaultIfNull": 1, - "defaultVal": 2, - "toBoolean": 2, - "value": 10, - "strToBoolean": 1, - "StringUtils.equalsIgnoreCase": 1, - "//Converts": 1, - "an": 4, - "int": 1, - "a": 6, - "boolean": 1, - "specifying": 1, - "//the": 2, - "conversion": 1, - "values.": 1, - "//Returns": 1, - "//Throws": 1, - "trueValue": 2, - "falseValue": 2, - "toInteger": 1, - "toStringYesNo": 1, - "toStringYN": 1, - "trueString": 2, - "falseString": 2, - "xor": 1, - "boolArray": 4, - "boolArray.size": 1, - "firstItem": 2, - "EmailUtils": 1, - "sendEmailWithStandardAttachments": 3, - "recipients": 11, - "emailSubject": 10, - "body": 8, - "useHTML": 6, - "": 1, - "attachmentIDs": 2, - "": 2, - "stdAttachments": 4, - "SELECT": 1, - "id": 1, - "name": 2, - "FROM": 1, - "Attachment": 2, - "WHERE": 1, - "Id": 1, - "IN": 1, - "": 3, - "fileAttachments": 5, - "attachment": 1, - "Messaging.EmailFileAttachment": 2, - "fileAttachment": 2, - "fileAttachment.setFileName": 1, - "attachment.Name": 1, - "fileAttachment.setBody": 1, - "attachment.Body": 1, - "fileAttachments.add": 1, - "sendEmail": 4, - "sendTextEmail": 1, - "textBody": 2, - "sendHTMLEmail": 1, - "htmlBody": 2, - "recipients.size": 1, - "Messaging.SingleEmailMessage": 3, - "mail": 2, - "email": 1, - "saved": 1, - "as": 1, - "activity.": 1, - "mail.setSaveAsActivity": 1, - "mail.setToAddresses": 1, - "mail.setSubject": 1, - "mail.setBccSender": 1, - "mail.setUseSignature": 1, - "mail.setHtmlBody": 1, - "mail.setPlainTextBody": 1, - "fileAttachments.size": 1, - "mail.setFileAttachments": 1, - "Messaging.sendEmail": 1, - "isValidEmailAddress": 2, - "split": 5, - "str.split": 1, - "split.size": 2, - ".split": 1, - "isNotValidEmailAddress": 1, - "public": 10, - "GeoUtils": 1, - "generate": 1, - "KML": 1, - "string": 7, - "given": 2, - "page": 1, - "reference": 1, - "call": 1, - "getContent": 1, - "then": 1, - "cleanup": 1, - "output.": 1, - "generateFromContent": 1, - "PageReference": 2, - "pr": 1, - "ret": 7, - "try": 1, - "pr.getContent": 1, - ".toString": 1, - "ret.replaceAll": 4, - "content": 1, - "produces": 1, - "quote": 1, - "chars": 1, - "we": 1, - "need": 1, - "escape": 1, - "these": 2, - "in": 1, - "node": 1, - "catch": 1, - "exception": 1, - "e": 2, - "system.debug": 2, - "must": 1, - "use": 1, - "ALL": 1, - "since": 1, - "many": 1, - "line": 1, - "may": 1, - "also": 1, - "Map": 33, - "": 2, - "geo_response": 1, - "accountAddressString": 2, - "account": 2, - "acct": 1, - "form": 1, - "address": 1, - "object": 1, - "adr": 9, - "acct.billingstreet": 1, - "acct.billingcity": 1, - "acct.billingstate": 1, - "acct.billingpostalcode": 2, - "acct.billingcountry": 2, - "adr.replaceAll": 4, - "testmethod": 1, - "t1": 1, - "pageRef": 3, - "Page.kmlPreviewTemplate": 1, - "Test.setCurrentPage": 1, - "system.assert": 1, - "GeoUtils.generateFromContent": 1, - "Account": 2, - "billingstreet": 1, - "billingcity": 1, - "billingstate": 1, - "billingpostalcode": 1, - "billingcountry": 1, - "insert": 1, - "system.assertEquals": 1, - "LanguageUtils": 1, - "final": 6, - "HTTP_LANGUAGE_CODE_PARAMETER_KEY": 2, - "DEFAULT_LANGUAGE_CODE": 3, - "Set": 6, - "SUPPORTED_LANGUAGE_CODES": 2, - "//Chinese": 2, - "Simplified": 1, - "Traditional": 1, - "//Dutch": 1, - "//English": 1, - "//Finnish": 1, - "//French": 1, - "//German": 1, - "//Italian": 1, - "//Japanese": 1, - "//Korean": 1, - "//Polish": 1, - "//Portuguese": 1, - "Brazilian": 1, - "//Russian": 1, - "//Spanish": 1, - "//Swedish": 1, - "//Thai": 1, - "//Czech": 1, - "//Danish": 1, - "//Hungarian": 1, - "//Indonesian": 1, - "//Turkish": 1, - "": 29, - "DEFAULTS": 1, - "getLangCodeByHttpParam": 4, - "LANGUAGE_CODE_SET": 1, - "getSuppLangCodeSet": 2, - "ApexPages.currentPage": 4, - ".getParameters": 2, - "LANGUAGE_HTTP_PARAMETER": 7, - "StringUtils.lowerCase": 3, - "StringUtils.replaceChars": 2, - "//underscore": 1, - "//dash": 1, - "DEFAULTS.containsKey": 3, - "DEFAULTS.get": 3, - "StringUtils.isNotBlank": 1, - "SUPPORTED_LANGUAGE_CODES.contains": 2, - "getLangCodeByBrowser": 4, - "LANGUAGES_FROM_BROWSER_AS_STRING": 2, - ".getHeaders": 1, - "LANGUAGES_FROM_BROWSER_AS_LIST": 3, - "splitAndFilterAcceptLanguageHeader": 2, - "LANGUAGES_FROM_BROWSER_AS_LIST.size": 1, - "languageFromBrowser": 6, - "getLangCodeByUser": 3, - "UserInfo.getLanguage": 1, - "getLangCodeByHttpParamOrIfNullThenBrowser": 1, - "StringUtils.defaultString": 4, - "getLangCodeByHttpParamOrIfNullThenUser": 1, - "getLangCodeByBrowserOrIfNullThenHttpParam": 1, - "getLangCodeByBrowserOrIfNullThenUser": 1, - "header": 2, - "tokens": 3, - "StringUtils.split": 1, - "token": 7, - "token.contains": 1, - "token.substring": 1, - "token.indexOf": 1, - "StringUtils.length": 1, - "StringUtils.substring": 1, - "langCodes": 2, - "langCode": 3, - "langCodes.add": 1, - "getLanguageName": 1, - "displayLanguageCode": 13, - "languageCode": 2, - "translatedLanguageNames.get": 2, - "filterLanguageCode": 4, - "getAllLanguages": 3, - "translatedLanguageNames.containsKey": 1, - "translatedLanguageNames": 1, - "TwilioAPI": 2, - "MissingTwilioConfigCustomSettingsException": 2, - "extends": 1, - "Exception": 1, - "TwilioRestClient": 5, - "client": 2, - "getDefaultClient": 2, - "TwilioConfig__c": 5, - "twilioCfg": 7, - "getTwilioConfig": 3, - "TwilioAPI.client": 2, - "twilioCfg.AccountSid__c": 3, - "twilioCfg.AuthToken__c": 3, - "TwilioAccount": 1, - "getDefaultAccount": 1, - ".getAccount": 2, - "TwilioCapability": 2, - "createCapability": 1, - "createClient": 1, - "accountSid": 2, - "authToken": 2, - "Test.isRunningTest": 1, - "dummy": 2, - "sid": 1, - "TwilioConfig__c.getOrgDefaults": 1, - "@isTest": 1, - "test_TwilioAPI": 1, - "System.assertEquals": 5, - "TwilioAPI.getTwilioConfig": 2, - ".AccountSid__c": 1, - ".AuthToken__c": 1, - "TwilioAPI.getDefaultClient": 2, - ".getAccountSid": 1, - ".getSid": 2, - "TwilioAPI.getDefaultAccount": 1 - }, - "AppleScript": { - "set": 108, - "windowWidth": 3, - "to": 128, - "windowHeight": 3, - "delay": 3, - "AppleScript": 2, - "s": 3, - "text": 13, - "item": 13, - "delimiters": 1, - "tell": 40, - "application": 16, - "screen_width": 2, - "(": 89, - "do": 4, - "JavaScript": 2, - "in": 13, - "document": 2, - ")": 88, - "screen_height": 2, - "end": 67, - "myFrontMost": 3, - "name": 8, - "of": 72, - "first": 1, - "processes": 2, - "whose": 1, - "frontmost": 1, - "is": 40, - "true": 8, - "{": 32, - "desktopTop": 2, - "desktopLeft": 1, - "desktopRight": 1, - "desktopBottom": 1, - "}": 32, - "bounds": 2, - "desktop": 1, - "try": 10, - "process": 5, - "w": 5, - "h": 4, - "size": 5, - "drawer": 2, - "window": 5, - "on": 18, - "error": 3, - "position": 1, - "-": 57, - "/": 2, - "property": 7, - "type_list": 6, - "extension_list": 6, - "html": 2, - "not": 5, - "currently": 2, - "handled": 2, - "run": 4, - "FinderSelection": 4, - "the": 56, - "selection": 2, - "as": 27, - "alias": 8, - "list": 9, - "FS": 10, - "Ideally": 2, - "this": 2, - "could": 2, - "be": 2, - "passed": 2, - "open": 8, - "handler": 2, - "SelectionCount": 6, - "number": 6, - "count": 10, - "if": 50, - "then": 28, - "userPicksFolder": 6, - "else": 14, - "MyPath": 4, - "path": 6, - "me": 2, - "If": 2, - "I": 2, - "m": 2, - "a": 4, - "double": 2, - "clicked": 2, - "droplet": 2, - "these_items": 18, - "choose": 2, - "file": 6, - "with": 11, - "prompt": 2, - "type": 6, - "thesefiles": 2, - "item_info": 24, - "repeat": 19, - "i": 10, - "from": 9, - "this_item": 14, - "info": 4, - "for": 5, - "folder": 10, - "processFolder": 8, - "false": 9, - "and": 7, - "or": 6, - "extension": 4, - "theFilePath": 8, - "string": 17, - "thePOSIXFilePath": 8, - "POSIX": 4, - "processFile": 8, - "folders": 2, - "theFolder": 6, - "without": 2, - "invisibles": 2, - "&": 63, - "thePOSIXFileName": 6, - "terminalCommand": 6, - "convertCommand": 4, - "newFileName": 4, - "shell": 2, - "script": 2, - "need": 1, - "pass": 1, - "URL": 1, - "Terminal": 1, - "localMailboxes": 3, - "every": 3, - "mailbox": 2, - "greater": 5, - "than": 6, - "messageCountDisplay": 5, - "return": 16, - "my": 3, - "getMessageCountsForMailboxes": 4, - "everyAccount": 2, - "account": 1, - "eachAccount": 3, - "accountMailboxes": 3, - "outputMessage": 2, - "make": 3, - "new": 2, - "outgoing": 2, - "message": 2, - "properties": 2, - "content": 2, - "subject": 1, - "visible": 2, - "font": 2, - "theMailboxes": 2, - "mailboxes": 1, - "returns": 2, - "displayString": 4, - "eachMailbox": 4, - "mailboxName": 2, - "messageCount": 2, - "messages": 1, - "unreadCount": 2, - "unread": 1, - "padString": 3, - "theString": 4, - "fieldLength": 5, - "integer": 3, - "stringLength": 4, - "length": 1, - "paddedString": 5, - "character": 2, - "less": 1, - "equal": 3, - "paddingLength": 2, - "times": 1, - "space": 1, - "lowFontSize": 9, - "highFontSize": 6, - "messageText": 4, - "userInput": 4, - "display": 4, - "dialog": 4, - "default": 4, - "answer": 3, - "buttons": 3, - "button": 4, - "returned": 5, - "minimumFontSize": 4, - "newFontSize": 6, - "result": 2, - "theText": 3, - "exit": 1, - "fontList": 2, - "activate": 3, - "crazyTextMessage": 2, - "eachCharacter": 4, - "characters": 1, - "some": 1, - "random": 4, - "color": 1, - "current": 3, - "pane": 4, - "UI": 1, - "elements": 1, - "enabled": 2, - "tab": 1, - "group": 1, - "click": 1, - "radio": 1, - "get": 1, - "value": 1, - "field": 1, - "isVoiceOverRunning": 3, - "isRunning": 3, - "contains": 1, - "isVoiceOverRunningWithAppleScript": 3, - "isRunningWithAppleScript": 3, - "VoiceOver": 1, - "x": 1, - "vo": 1, - "cursor": 1, - "currentDate": 3, - "date": 1, - "amPM": 4, - "currentHour": 9, - "minutes": 2, - "<": 2, - "below": 1, - "sound": 1, - "nice": 1, - "currentMinutes": 4, - "ensure": 1, - "nn": 2, - "gets": 1, - "AM": 1, - "readjust": 1, - "hour": 1, - "time": 1, - "currentTime": 3, - "day": 1, - "output": 1, - "say": 1 - }, - "Arduino": { - "void": 2, - "setup": 1, - "(": 4, - ")": 4, - "{": 2, - "Serial.begin": 1, - ";": 2, - "}": 2, - "loop": 1, - "Serial.print": 1 - }, - "AsciiDoc": { - "Gregory": 2, - "Rom": 2, - "has": 2, - "written": 2, - "an": 2, - "AsciiDoc": 3, - "plugin": 2, - "for": 2, - "the": 2, - "Redmine": 2, - "project": 2, - "management": 2, - "application.": 2, - "https": 1, - "//github.com/foo": 1, - "-": 4, - "users/foo": 1, - "vicmd": 1, - "gif": 1, - "tag": 1, - "rom": 2, - "[": 2, - "]": 2, - "end": 1, - "berschrift": 1, - "*": 4, - "Codierungen": 1, - "sind": 1, - "verr": 1, - "ckt": 1, - "auf": 1, - "lteren": 1, - "Versionen": 1, - "von": 1, - "Ruby": 1, - "Home": 1, - "Page": 1, - "Example": 1, - "Articles": 1, - "Item": 6, - "Document": 1, - "Title": 1, - "Doc": 1, - "Writer": 1, - "": 1, - "idprefix": 1, - "id_": 1, - "Preamble": 1, - "paragraph.": 4, - "NOTE": 1, - "This": 1, - "is": 1, - "test": 1, - "only": 1, - "a": 1, - "test.": 1, - "Section": 3, - "A": 2, - "*Section": 3, - "A*": 2, - "Subsection": 1, - "B": 2, - "B*": 1, - ".Section": 1, - "list": 1 - }, - "ATS": { - "//": 211, - "#include": 16, - "staload": 25, - "_": 25, - "sortdef": 2, - "ftype": 13, - "type": 30, - "-": 49, - "infixr": 2, - "(": 562, - ")": 567, - "typedef": 10, - "a": 200, - "b": 26, - "": 2, - "functor": 12, - "F": 34, - "{": 142, - "}": 141, - "list0": 9, - "extern": 13, - "val": 95, - "functor_list0": 7, - "implement": 55, - "f": 22, - "lam": 20, - "xs": 82, - "list0_map": 2, - "": 14, - "": 3, - "datatype": 4, - "CoYoneda": 7, - "r": 25, - "of": 59, - "fun": 56, - "CoYoneda_phi": 2, - "CoYoneda_psi": 3, - "ftor": 9, - "fx": 8, - "x": 48, - "int0": 4, - "I": 8, - "int": 2, - "bool": 27, - "True": 7, - "|": 22, - "False": 8, - "boxed": 2, - "boolean": 2, - "bool2string": 4, - "string": 2, - "case": 9, - "+": 20, - "fprint_val": 2, - "": 2, - "out": 8, - "fprint": 3, - "int2bool": 2, - "i": 6, - "let": 34, - "in": 48, - "if": 7, - "then": 11, - "else": 7, - "end": 73, - "myintlist0": 2, - "g0ofg1": 1, - "list": 1, - "myboolist0": 9, - "fprintln": 3, - "stdout_ref": 4, - "main0": 3, - "UN": 3, - "phil_left": 3, - "n": 51, - "phil_right": 3, - "nmod": 1, - "NPHIL": 6, - "randsleep": 6, - "intGte": 1, - "void": 14, - "ignoret": 2, - "sleep": 2, - "UN.cast": 2, - "uInt": 1, - "rand": 1, - "mod": 1, - "phil_think": 3, - "println": 9, - "phil_dine": 3, - "lf": 5, - "rf": 5, - "phil_loop": 10, - "nl": 2, - "nr": 2, - "ch_lfork": 2, - "fork_changet": 5, - "ch_rfork": 2, - "channel_takeout": 4, - "HX": 1, - "try": 1, - "to": 16, - "actively": 1, - "induce": 1, - "deadlock": 2, - "ch_forktray": 3, - "forktray_changet": 4, - "channel_insert": 5, - "[": 49, - "]": 48, - "cleaner_wash": 3, - "fork_get_num": 4, - "cleaner_return": 4, - "ch": 7, - "cleaner_loop": 6, - "f0": 3, - "dynload": 3, - "local": 10, - "mythread_create_cloptr": 6, - "llam": 6, - "while": 1, - "true": 5, - "%": 7, - "#": 7, - "#define": 4, - "nphil": 13, - "natLt": 2, - "absvtype": 2, - "fork_vtype": 3, - "ptr": 2, - "vtypedef": 2, - "fork": 16, - "channel": 11, - "datavtype": 1, - "FORK": 3, - "assume": 2, - "the_forkarray": 2, - "t": 1, - "array_tabulate": 1, - "fopr": 1, - "": 2, - "where": 6, - "channel_create_exn": 2, - "": 2, - "i2sz": 4, - "arrayref_tabulate": 1, - "the_forktray": 2, - "set_vtype": 3, - "t@ype": 2, - "set": 34, - "t0p": 31, - "compare_elt_elt": 4, - "x1": 1, - "x2": 1, - "<": 14, - "linset_nil": 2, - "linset_make_nil": 2, - "linset_sing": 2, - "": 16, - "linset_make_sing": 2, - "linset_make_list": 1, - "List": 1, - "INV": 24, - "linset_is_nil": 2, - "linset_isnot_nil": 2, - "linset_size": 2, - "size_t": 1, - "linset_is_member": 3, - "x0": 22, - "linset_isnot_member": 1, - "linset_copy": 2, - "linset_free": 2, - "linset_insert": 3, - "&": 17, - "linset_takeout": 1, - "res": 9, - "opt": 6, - "endfun": 1, - "linset_takeout_opt": 1, - "Option_vt": 4, - "linset_remove": 2, - "linset_choose": 3, - "linset_choose_opt": 1, - "linset_takeoutmax": 1, - "linset_takeoutmax_opt": 1, - "linset_takeoutmin": 1, - "linset_takeoutmin_opt": 1, - "fprint_linset": 3, - "sep": 1, - "FILEref": 2, - "overload": 1, - "with": 1, - "env": 11, - "vt0p": 2, - "linset_foreach": 3, - "fwork": 3, - "linset_foreach_env": 3, - "linset_listize": 2, - "List0_vt": 5, - "linset_listize1": 2, - "code": 6, - "reuse": 2, - "elt": 2, - "list_vt_nil": 16, - "list_vt_cons": 17, - "list_vt_is_nil": 1, - "list_vt_is_cons": 1, - "list_vt_length": 1, - "aux": 4, - "nat": 4, - ".": 14, - "": 3, - "list_vt": 7, - "sgn": 9, - "false": 6, - "list_vt_copy": 2, - "list_vt_free": 1, - "mynode_cons": 4, - "nx": 22, - "mynode1": 6, - "xs1": 15, - "UN.castvwtp0": 8, - "List1_vt": 5, - "@list_vt_cons": 5, - "xs2": 3, - "prval": 20, - "UN.cast2void": 5, - ";": 4, - "fold@": 8, - "ins": 3, - "tail": 1, - "recursive": 1, - "n1": 4, - "<=>": 1, - "1": 3, - "mynode_make_elt": 4, - "ans": 2, - "is": 26, - "found": 1, - "effmask_all": 3, - "free@": 1, - "xs1_": 3, - "rem": 1, - "*": 2, - "opt_some": 1, - "opt_none": 1, - "list_vt_foreach": 1, - "": 3, - "list_vt_foreach_env": 1, - "mynode_null": 5, - "mynode": 3, - "null": 1, - "the_null_ptr": 1, - "mynode_free": 1, - "nx2": 4, - "mynode_get_elt": 1, - "nx1": 7, - "UN.castvwtp1": 2, - "mynode_set_elt": 1, - "l": 3, - "__assert": 2, - "praxi": 1, - "mynode_getfree_elt": 1, - "linset_takeout_ngc": 2, - "takeout": 3, - "mynode0": 1, - "pf_x": 6, - "view@x": 3, - "pf_xs1": 6, - "view@xs1": 3, - "linset_takeoutmax_ngc": 2, - "xs_": 4, - "@list_vt_nil": 1, - "linset_takeoutmin_ngc": 2, - "unsnoc": 4, - "pos": 1, - "and": 10, - "fold@xs": 1, - "ATS_PACKNAME": 1, - "ATS_STALOADFLAG": 1, - "no": 2, - "static": 1, - "loading": 1, - "at": 2, - "run": 1, - "time": 1, - "castfn": 1, - "linset2list": 1, - "": 1, - "html": 1, - "PUBLIC": 1, - "W3C": 1, - "DTD": 2, - "XHTML": 1, - "EN": 1, - "http": 2, - "www": 1, - "w3": 1, - "org": 1, - "TR": 1, - "xhtml11": 2, - "dtd": 1, - "": 1, - "xmlns=": 1, - "": 1, - "": 1, - "equiv=": 1, - "content=": 1, - "": 1, - "EFFECTIVATS": 1, - "DiningPhil2": 1, - "": 1, - "#patscode_style": 1, - "": 1, - "": 1, - "

": 1, - "Effective": 1, - "ATS": 2, - "Dining": 2, - "Philosophers": 2, - "

": 1, - "In": 2, - "this": 2, - "article": 2, - "present": 1, - "an": 6, - "implementation": 3, - "slight": 1, - "variant": 1, - "the": 30, - "famous": 1, - "problem": 1, - "by": 4, - "Dijkstra": 1, - "that": 8, - "makes": 1, - "simple": 1, - "but": 1, - "convincing": 1, - "use": 1, - "linear": 2, - "types.": 1, - "

": 8, - "The": 8, - "Original": 2, - "Problem": 2, - "

": 8, - "There": 3, - "are": 7, - "five": 1, - "philosophers": 1, - "sitting": 1, - "around": 1, - "table": 3, - "there": 3, - "also": 3, - "forks": 7, - "placed": 1, - "on": 8, - "such": 1, - "each": 2, - "located": 2, - "between": 1, - "left": 3, - "hand": 6, - "philosopher": 5, - "right": 3, - "another": 1, - "philosopher.": 1, - "Each": 4, - "does": 1, - "following": 6, - "routine": 1, - "repeatedly": 1, - "thinking": 1, - "dining.": 1, - "order": 1, - "dine": 1, - "needs": 2, - "first": 2, - "acquire": 1, - "two": 3, - "one": 3, - "his": 4, - "side": 2, - "other": 2, - "side.": 2, - "After": 2, - "finishing": 1, - "dining": 1, - "puts": 2, - "acquired": 1, - "onto": 1, - "A": 6, - "Variant": 1, - "twist": 1, - "added": 1, - "original": 1, - "version": 1, - "

": 1, - "used": 1, - "it": 2, - "becomes": 1, - "be": 9, - "put": 1, - "tray": 2, - "for": 15, - "dirty": 2, - "forks.": 1, - "cleaner": 2, - "who": 1, - "cleans": 1, - "them": 2, - "back": 1, - "table.": 1, - "Channels": 1, - "Communication": 1, - "just": 1, - "shared": 1, - "queue": 1, - "fixed": 1, - "capacity.": 1, - "functions": 1, - "inserting": 1, - "element": 5, - "into": 3, - "taking": 1, - "given": 4, - "

": 7,
-      "class=": 6,
-      "#pats2xhtml_sats": 3,
-      "
": 7, - "If": 2, - "called": 2, - "full": 4, - "caller": 2, - "blocked": 3, - "until": 2, - "taken": 1, - "channel.": 2, - "empty": 1, - "inserted": 1, - "Channel": 2, - "Fork": 3, - "Forks": 1, - "resources": 1, - "type.": 1, - "initially": 1, - "stored": 2, - "which": 2, - "can": 4, - "obtained": 2, - "calling": 2, - "function": 3, - "defined": 1, - "natural": 1, - "numbers": 1, - "less": 1, - "than": 1, - "channels": 4, - "storing": 3, - "chosen": 3, - "capacity": 3, - "reason": 1, - "store": 1, - "most": 1, - "guarantee": 1, - "these": 1, - "never": 2, - "so": 2, - "attempt": 1, - "made": 1, - "send": 1, - "signals": 1, - "awake": 1, - "callers": 1, - "supposedly": 1, - "being": 2, - "due": 1, - "Tray": 1, - "instead": 1, - "become": 1, - "as": 4, - "only": 1, - "total": 1, - "Philosopher": 1, - "Loop": 2, - "implemented": 2, - "loop": 2, - "#pats2xhtml_dats": 3, - "It": 2, - "should": 3, - "straighforward": 2, - "follow": 2, - "Cleaner": 1, - "finds": 1, - "number": 2, - "uses": 1, - "locate": 1, - "fork.": 1, - "Its": 1, - "actual": 1, - "follows": 1, - "now": 1, - "Testing": 1, - "entire": 1, - "files": 1, - "DiningPhil2.sats": 1, - "DiningPhil2.dats": 1, - "DiningPhil2_fork.dats": 1, - "DiningPhil2_thread.dats": 1, - "Makefile": 1, - "available": 1, - "compiling": 1, - "source": 1, - "excutable": 1, - "testing.": 1, - "One": 1, - "able": 1, - "encounter": 1, - "after": 1, - "running": 1, - "simulation": 1, - "while.": 1, - "
": 1, - "size=": 1, - "This": 1, - "written": 1, - "href=": 1, - "Hongwei": 1, - "Xi": 1, - "
": 1, - "": 1, - "": 1, - "main": 1, - "fprint_filsub": 1, - "option0": 3, - "functor_option0": 2, - "option0_map": 1, - "functor_homres": 2, - "c": 3, - "Yoneda_phi": 3, - "Yoneda_psi": 3, - "m": 4, - "mf": 4, - "natrans": 3, - "G": 2, - "Yoneda_phi_nat": 2, - "Yoneda_psi_nat": 2, - "list_t": 1, - "g0ofg1_list": 1, - "Yoneda_bool_list0": 3, - "myboolist1": 2 - }, - "AutoHotkey": { - "MsgBox": 1, - "Hello": 1, - "World": 1 - }, - "Awk": { - "SHEBANG#!awk": 1, - "BEGIN": 1, - "{": 17, - "n": 13, - ";": 55, - "printf": 1, - "network_max_bandwidth_in_byte": 3, - "network_max_packet_per_second": 3, - "last3": 3, - "last4": 3, - "last5": 3, - "last6": 3, - "}": 17, - "if": 14, - "(": 14, - "/Average/": 1, - ")": 14, - "#": 48, - "Skip": 1, - "the": 12, - "Average": 1, - "values": 1, - "next": 1, - "/all/": 1, - "This": 8, - "is": 7, - "cpu": 1, - "info": 7, - "print": 35, - "FILENAME": 35, - "-": 2, - "/eth0/": 1, - "eth0": 1, - "network": 1, - "Total": 9, - "number": 9, - "of": 22, - "packets": 4, - "received": 4, - "per": 14, - "second.": 8, - "else": 4, - "transmitted": 4, - "bytes": 4, - "/proc": 1, - "|": 4, - "cswch": 1, - "tps": 1, - "kbmemfree": 1, - "totsck/": 1, - "/": 2, - "[": 1, - "]": 1, - "proc/s": 1, - "context": 1, - "switches": 1, - "second": 6, - "disk": 1, - "total": 1, - "transfers": 1, - "read": 1, - "requests": 2, - "write": 1, - "block": 2, - "reads": 1, - "writes": 1, - "mem": 1, - "Amount": 7, - "free": 2, - "memory": 6, - "available": 1, - "in": 11, - "kilobytes.": 7, - "used": 8, - "does": 1, - "not": 1, - "take": 1, - "into": 1, - "account": 1, - "by": 4, - "kernel": 3, - "itself.": 1, - "Percentage": 2, - "memory.": 1, - "X": 1, - "shared": 1, - "system": 1, - "Always": 1, - "zero": 1, - "with": 1, - "kernels.": 1, - "as": 1, - "buffers": 1, - "to": 1, - "cache": 1, - "data": 1, - "swap": 3, - "space": 2, - "space.": 1, - "socket": 1, - "sockets.": 1, - "Number": 4, - "TCP": 1, - "sockets": 3, - "currently": 4, - "use.": 4, - "UDP": 1, - "RAW": 1, - "IP": 1, - "fragments": 1, - "END": 1 - }, - "BlitzBasic": { - "Local": 34, - "bk": 3, - "CreateBank": 5, - "(": 125, - ")": 126, - "PokeFloat": 3, - "-": 24, - "Print": 13, - "Bin": 4, - "PeekInt": 4, - "%": 6, - "Shl": 7, - "f": 5, - "ff": 1, - "+": 11, - "Hex": 2, - "FloatToHalf": 3, - "HalfToFloat": 1, - "FToI": 2, - "WaitKey": 2, - "End": 58, - ";": 57, - "Half": 1, - "precision": 2, - "bit": 2, - "arithmetic": 2, - "library": 2, - "Global": 2, - "Half_CBank_": 13, - "Function": 101, - "f#": 3, - "If": 25, - "Then": 18, - "Return": 36, - "HalfToFloat#": 1, - "h": 4, - "signBit": 6, - "exponent": 22, - "fraction": 9, - "fBits": 8, - "And": 8, - "<": 18, - "Shr": 3, - "F": 3, - "FF": 2, - "ElseIf": 1, - "Or": 4, - "PokeInt": 2, - "PeekFloat": 1, - "F800000": 1, - "FFFFF": 1, - "Abs": 1, - "*": 2, - "Sgn": 1, - "Else": 7, - "EndIf": 7, - "HalfAdd": 1, - "l": 84, - "r": 12, - "HalfSub": 1, - "HalfMul": 1, - "HalfDiv": 1, - "HalfLT": 1, - "HalfGT": 1, - "Double": 2, - "DoubleOut": 1, - "[": 2, - "]": 2, - "Double_CBank_": 1, - "DoubleToFloat#": 1, - "d": 1, - "FloatToDouble": 1, - "IntToDouble": 1, - "i": 49, - "SefToDouble": 1, - "s": 12, - "e": 4, - "DoubleAdd": 1, - "DoubleSub": 1, - "DoubleMul": 1, - "DoubleDiv": 1, - "DoubleLT": 1, - "DoubleGT": 1, - "IDEal": 3, - "Editor": 3, - "Parameters": 3, - "F#1A#20#2F": 1, - "C#Blitz3D": 3, - "linked": 2, - "list": 32, - "container": 1, - "class": 1, - "with": 3, - "thanks": 1, - "to": 11, - "MusicianKool": 3, - "for": 3, - "concept": 1, - "and": 9, - "issue": 1, - "fixes": 1, - "Type": 8, - "LList": 3, - "Field": 10, - "head_.ListNode": 1, - "tail_.ListNode": 1, - "ListNode": 8, - "pv_.ListNode": 1, - "nx_.ListNode": 1, - "Value": 37, - "Iterator": 2, - "l_.LList": 1, - "cn_.ListNode": 1, - "cni_": 8, - "Create": 4, - "a": 46, - "new": 4, - "object": 2, - "CreateList.LList": 1, - "l.LList": 20, - "New": 11, - "head_": 35, - "tail_": 34, - "nx_": 33, - "caps": 1, - "pv_": 27, - "These": 1, - "make": 1, - "it": 1, - "more": 1, - "or": 4, - "less": 1, - "safe": 1, - "iterate": 2, - "freely": 1, - "Free": 1, - "all": 3, - "elements": 4, - "not": 4, - "any": 1, - "values": 4, - "FreeList": 1, - "ClearList": 2, - "Delete": 6, - "Remove": 7, - "the": 52, - "from": 15, - "does": 1, - "free": 1, - "n.ListNode": 12, - "While": 7, - "n": 54, - "nx.ListNode": 1, - "nx": 1, - "Wend": 6, - "Count": 1, - "number": 1, - "of": 16, - "in": 4, - "slow": 3, - "ListLength": 2, - "i.Iterator": 6, - "GetIterator": 3, - "elems": 4, - "EachIn": 5, - "True": 4, - "if": 2, - "contains": 1, - "given": 7, - "value": 16, - "ListContains": 1, - "ListFindNode": 2, - "Null": 15, - "intvalues": 1, - "bank": 8, - "ListFromBank.LList": 1, - "CreateList": 2, - "size": 4, - "BankSize": 1, - "p": 7, - "For": 6, - "To": 6, - "Step": 2, - "ListAddLast": 2, - "Next": 7, - "containing": 3, - "ListToBank": 1, - "Swap": 1, - "contents": 1, - "two": 1, - "objects": 1, - "SwapLists": 1, - "l1.LList": 1, - "l2.LList": 1, - "tempH.ListNode": 1, - "l1": 4, - "tempT.ListNode": 1, - "l2": 4, - "tempH": 1, - "tempT": 1, - "same": 1, - "as": 2, - "first": 5, - "CopyList.LList": 1, - "lo.LList": 1, - "ln.LList": 1, - "lo": 1, - "ln": 2, - "Reverse": 1, - "order": 1, - "ReverseList": 1, - "n1.ListNode": 1, - "n2.ListNode": 1, - "tmp.ListNode": 1, - "n1": 5, - "n2": 6, - "tmp": 4, - "Search": 1, - "retrieve": 1, - "node": 8, - "ListFindNode.ListNode": 1, - "Append": 1, - "end": 5, - "fast": 2, - "return": 7, - "ListAddLast.ListNode": 1, - "Attach": 1, - "start": 13, - "ListAddFirst.ListNode": 1, - "occurence": 1, - "ListRemove": 1, - "RemoveListNode": 6, - "element": 4, - "at": 5, - "position": 4, - "backwards": 2, - "negative": 2, - "index": 13, - "ValueAtIndex": 1, - "ListNodeAtIndex": 3, - "invalid": 1, - "ListNodeAtIndex.ListNode": 1, - "Beyond": 1, - "valid": 2, - "Negative": 1, - "count": 1, - "backward": 1, - "Before": 3, - "Replace": 1, - "added": 2, - "by": 3, - "ReplaceValueAtIndex": 1, - "RemoveNodeAtIndex": 1, - "tval": 3, - "Retrieve": 2, - "ListFirst": 1, - "last": 2, - "ListLast": 1, - "its": 2, - "ListRemoveFirst": 1, - "val": 6, - "ListRemoveLast": 1, - "Insert": 3, - "into": 2, - "before": 2, - "specified": 2, - "InsertBeforeNode.ListNode": 1, - "bef.ListNode": 1, - "bef": 7, - "after": 1, - "then": 1, - "InsertAfterNode.ListNode": 1, - "aft.ListNode": 1, - "aft": 7, - "Get": 1, - "an": 4, - "iterator": 4, - "use": 1, - "loop": 2, - "This": 1, - "function": 1, - "means": 1, - "that": 1, - "most": 1, - "programs": 1, - "won": 1, - "available": 1, - "moment": 1, - "l_": 7, - "Exit": 1, - "there": 1, - "wasn": 1, - "t": 1, - "create": 1, - "one": 1, - "cn_": 12, - "No": 1, - "especial": 1, - "reason": 1, - "why": 1, - "this": 2, - "has": 1, - "be": 1, - "anything": 1, - "but": 1, - "meh": 1, - "Use": 1, - "argument": 1, - "over": 1, - "members": 1, - "Still": 1, - "items": 1, - "Disconnect": 1, - "having": 1, - "reached": 1, - "False": 3, - "currently": 1, - "pointed": 1, - "IteratorRemove": 1, - "temp.ListNode": 1, - "temp": 1, - "Call": 1, - "breaking": 1, - "out": 1, - "disconnect": 1, - "IteratorBreak": 1, - "F#5#A#10#18#2A#32#3E#47#4C#58#66#6F#78#8F#9B#A9#B7#BD#C5#CC": 1, - "F#E3#E9#EF#F4#F9#103#10D#11B#12B#13F#152#163": 1, - "result": 4, - "s.Sum3Obj": 2, - "Sum3Obj": 6, - "Handle": 2, - "MilliSecs": 4, - "Sum3_": 2, - "MakeSum3Obj": 2, - "Sum3": 2, - "b": 7, - "c": 7, - "isActive": 4, - "Last": 1, - "Restore": 1, - "label": 1, - "Read": 1, - "foo": 1, - ".label": 1, - "Data": 1, - "a_": 2, - "a.Sum3Obj": 1, - "Object.Sum3Obj": 1, - "return_": 2, - "First": 1 - }, - "Bluespec": { - "package": 2, - "TbTL": 1, - ";": 156, - "import": 1, - "TL": 6, - "*": 1, - "interface": 2, - "Lamp": 3, - "method": 42, - "Bool": 32, - "changed": 2, - "Action": 17, - "show_offs": 2, - "show_ons": 2, - "reset": 2, - "endinterface": 2, - "module": 3, - "mkLamp#": 1, - "(": 158, - "String": 1, - "name": 3, - "lamp": 5, - ")": 163, - "Reg#": 15, - "prev": 5, - "<": 44, - "-": 29, - "mkReg": 15, - "False": 9, - "if": 9, - "&&": 3, - "write": 2, - "+": 7, - "endmethod": 8, - "endmodule": 3, - "mkTest": 1, - "let": 1, - "dut": 2, - "sysTL": 3, - "Bit#": 1, - "ctr": 8, - "carN": 4, - "carS": 2, - "carE": 2, - "carW": 2, - "lamps": 15, - "[": 17, - "]": 17, - "mkLamp": 12, - "dut.lampRedNS": 1, - "dut.lampAmberNS": 1, - "dut.lampGreenNS": 1, - "dut.lampRedE": 1, - "dut.lampAmberE": 1, - "dut.lampGreenE": 1, - "dut.lampRedW": 1, - "dut.lampAmberW": 1, - "dut.lampGreenW": 1, - "dut.lampRedPed": 1, - "dut.lampAmberPed": 1, - "dut.lampGreenPed": 1, - "rule": 10, - "start": 1, - "dumpvars": 1, - "endrule": 10, - "detect_cars": 1, - "dut.set_car_state_N": 1, - "dut.set_car_state_S": 1, - "dut.set_car_state_E": 1, - "dut.set_car_state_W": 1, - "go": 1, - "True": 6, - "<=>": 3, - "12_000": 1, - "ped_button_push": 4, - "stop": 1, - "display": 2, - "finish": 1, - "function": 10, - "do_offs": 2, - "l": 3, - "l.show_offs": 1, - "do_ons": 2, - "l.show_ons": 1, - "do_reset": 2, - "l.reset": 1, - "do_it": 4, - "f": 2, - "action": 3, - "for": 3, - "Integer": 3, - "i": 15, - "endaction": 3, - "endfunction": 7, - "any_changes": 2, - "b": 12, - "||": 7, - ".changed": 1, - "return": 9, - "show": 1, - "time": 1, - "endpackage": 2, - "set_car_state_N": 2, - "x": 8, - "set_car_state_S": 2, - "set_car_state_E": 2, - "set_car_state_W": 2, - "lampRedNS": 2, - "lampAmberNS": 2, - "lampGreenNS": 2, - "lampRedE": 2, - "lampAmberE": 2, - "lampGreenE": 2, - "lampRedW": 2, - "lampAmberW": 2, - "lampGreenW": 2, - "lampRedPed": 2, - "lampAmberPed": 2, - "lampGreenPed": 2, - "typedef": 3, - "enum": 1, - "{": 1, - "AllRed": 4, - "GreenNS": 9, - "AmberNS": 5, - "GreenE": 8, - "AmberE": 5, - "GreenW": 8, - "AmberW": 5, - "GreenPed": 4, - "AmberPed": 3, - "}": 1, - "TLstates": 11, - "deriving": 1, - "Eq": 1, - "Bits": 1, - "UInt#": 2, - "Time32": 9, - "CtrSize": 3, - "allRedDelay": 2, - "amberDelay": 2, - "nsGreenDelay": 2, - "ewGreenDelay": 3, - "pedGreenDelay": 1, - "pedAmberDelay": 1, - "clocks_per_sec": 2, - "state": 21, - "next_green": 8, - "secs": 7, - "ped_button_pushed": 4, - "car_present_N": 3, - "car_present_S": 3, - "car_present_E": 4, - "car_present_W": 4, - "car_present_NS": 3, - "cycle_ctr": 6, - "dec_cycle_ctr": 1, - "Rules": 5, - "low_priority_rule": 2, - "rules": 4, - "inc_sec": 1, - "endrules": 4, - "next_state": 8, - "ns": 4, - "0": 2, - "green_seq": 7, - "case": 2, - "endcase": 2, - "car_present": 4, - "make_from_green_rule": 5, - "green_state": 2, - "delay": 2, - "car_is_present": 2, - "from_green": 1, - "make_from_amber_rule": 5, - "amber_state": 2, - "ng": 2, - "from_amber": 1, - "hprs": 10, - "7": 1, - "1": 1, - "2": 1, - "3": 1, - "4": 1, - "5": 1, - "6": 1, - "fromAllRed": 2, - "else": 4, - "noAction": 1, - "high_priority_rules": 4, - "rJoin": 1, - "addRules": 1, - "preempts": 1 - }, - "Brightscript": { - "**": 17, - "Simple": 1, - "Grid": 2, - "Screen": 2, - "Demonstration": 1, - "App": 1, - "Copyright": 1, - "(": 32, - "c": 1, - ")": 31, - "Roku": 1, - "Inc.": 1, - "All": 3, - "Rights": 1, - "Reserved.": 1, - "************************************************************": 2, - "Sub": 2, - "Main": 1, - "set": 2, - "to": 10, - "go": 1, - "time": 1, - "get": 1, - "started": 1, - "while": 4, - "gridstyle": 7, - "<": 1, - "print": 7, - ";": 10, - "screen": 5, - "preShowGridScreen": 2, - "showGridScreen": 2, - "end": 2, - "End": 4, - "Set": 1, - "the": 17, - "configurable": 1, - "theme": 3, - "attributes": 2, - "for": 10, - "application": 1, - "Configure": 1, - "custom": 1, - "overhang": 1, - "and": 4, - "Logo": 1, - "are": 2, - "artwork": 2, - "colors": 1, - "offsets": 1, - "specific": 1, - "app": 1, - "******************************************************": 4, - "Screens": 1, - "can": 2, - "make": 1, - "slight": 1, - "adjustments": 1, - "default": 1, - "individual": 1, - "attributes.": 1, - "these": 1, - "greyscales": 1, - "theme.GridScreenBackgroundColor": 1, - "theme.GridScreenMessageColor": 1, - "theme.GridScreenRetrievingColor": 1, - "theme.GridScreenListNameColor": 1, - "used": 1, - "in": 3, - "theme.CounterTextLeft": 1, - "theme.CounterSeparator": 1, - "theme.CounterTextRight": 1, - "theme.GridScreenLogoHD": 1, - "theme.GridScreenLogoOffsetHD_X": 1, - "theme.GridScreenLogoOffsetHD_Y": 1, - "theme.GridScreenOverhangHeightHD": 1, - "theme.GridScreenLogoSD": 1, - "theme.GridScreenOverhangHeightSD": 1, - "theme.GridScreenLogoOffsetSD_X": 1, - "theme.GridScreenLogoOffsetSD_Y": 1, - "theme.GridScreenFocusBorderSD": 1, - "theme.GridScreenFocusBorderHD": 1, - "use": 1, - "your": 1, - "own": 1, - "description": 1, - "background": 1, - "theme.GridScreenDescriptionOffsetSD": 1, - "theme.GridScreenDescriptionOffsetHD": 1, - "return": 5, - "Function": 5, - "Perform": 1, - "any": 1, - "startup/initialization": 1, - "stuff": 1, - "prior": 1, - "style": 6, - "as": 2, - "string": 3, - "As": 3, - "Object": 2, - "m.port": 3, - "CreateObject": 2, - "screen.SetMessagePort": 1, - "screen.": 1, - "The": 1, - "will": 3, - "show": 1, - "retreiving": 1, - "categoryList": 4, - "getCategoryList": 1, - "[": 3, - "]": 4, - "+": 1, - "screen.setupLists": 1, - "categoryList.count": 2, - "screen.SetListNames": 1, - "StyleButtons": 3, - "getGridControlButtons": 1, - "screen.SetContentList": 2, - "i": 3, - "-": 15, - "getShowsForCategoryItem": 1, - "screen.Show": 1, - "true": 1, - "msg": 3, - "wait": 1, - "getmessageport": 1, - "does": 1, - "not": 2, - "work": 1, - "on": 1, - "gridscreen": 1, - "type": 2, - "if": 3, - "then": 3, - "msg.GetMessage": 1, - "msg.GetIndex": 3, - "msg.getData": 2, - "msg.isListItemFocused": 1, - "else": 1, - "msg.isListItemSelected": 1, - "row": 2, - "selection": 3, - "yes": 1, - "so": 2, - "we": 3, - "come": 1, - "back": 1, - "with": 2, - "new": 1, - ".Title": 1, - "endif": 1, - "**********************************************************": 1, - "this": 3, - "function": 1, - "passing": 1, - "an": 1, - "roAssociativeArray": 2, - "be": 2, - "sufficient": 1, - "springboard": 2, - "display": 2, - "add": 1, - "code": 1, - "create": 1, - "now": 1, - "do": 1, - "nothing": 1, - "Return": 1, - "list": 1, - "of": 5, - "categories": 1, - "filter": 1, - "all": 1, - "categories.": 1, - "just": 2, - "static": 1, - "data": 2, - "example.": 1, - "********************************************************************": 1, - "ContentMetaData": 1, - "objects": 1, - "shows": 1, - "category.": 1, - "For": 1, - "example": 1, - "cheat": 1, - "but": 2, - "ideally": 1, - "you": 1, - "dynamically": 1, - "content": 2, - "each": 1, - "category": 1, - "is": 1, - "dynamic": 1, - "s": 1, - "one": 3, - "small": 1, - "step": 1, - "a": 4, - "man": 1, - "giant": 1, - "leap": 1, - "mankind.": 1, - "http": 14, - "//upload.wikimedia.org/wikipedia/commons/1/1e/Apollo_11_first_step.jpg": 2, - "I": 2, - "have": 2, - "Dream": 1, - "PG": 1, - "dream": 1, - "that": 1, - "my": 1, - "four": 1, - "little": 1, - "children": 1, - "day": 1, - "live": 1, - "nation": 1, - "where": 1, - "they": 1, - "judged": 1, - "by": 2, - "color": 1, - "their": 2, - "skin": 1, - "character.": 1, - "//upload.wikimedia.org/wikipedia/commons/8/81/Martin_Luther_King_": 2, - "_March_on_Washington.jpg": 2, - "Flat": 6, - "Movie": 2, - "HD": 6, - "x2": 4, - "SD": 5, - "Netflix": 1, - "//upload.wikimedia.org/wikipedia/commons/4/43/Gold_star_on_blue.gif": 2, - "Landscape": 1, - "x3": 6, - "Channel": 1, - "Store": 1, - "//upload.wikimedia.org/wikipedia/commons/thumb/9/96/Dunkery_Hill.jpg/800px": 2, - "Dunkery_Hill.jpg": 2, - "Portrait": 1, - "x4": 1, - "posters": 3, - "//upload.wikimedia.org/wikipedia/commons/9/9f/Kane_George_Gurnett.jpg": 2, - "Square": 1, - "x1": 1, - "//upload.wikimedia.org/wikipedia/commons/thumb/d/de/SQUARE_SHAPE.svg/536px": 2, - "SQUARE_SHAPE.svg.png": 2, - "x9": 1, - "//upload.wikimedia.org/wikipedia/commons/thumb/2/22/": 2, - "%": 8, - "C3": 4, - "cran_TV_plat.svg/200px": 2, - "cran_TV_plat.svg.png": 2, - "}": 1, - "buttons": 1 - }, - "C": { - "#include": 154, - "const": 358, - "char": 530, - "*blob_type": 2, - ";": 5465, - "struct": 360, - "blob": 6, - "*lookup_blob": 2, - "(": 6243, - "unsigned": 140, - "*sha1": 16, - ")": 6245, - "{": 1531, - "object": 41, - "*obj": 9, - "lookup_object": 2, - "sha1": 20, - "if": 1015, - "obj": 48, - "return": 529, - "create_object": 2, - "OBJ_BLOB": 3, - "alloc_blob_node": 1, - "-": 1803, - "type": 36, - "error": 96, - "sha1_to_hex": 8, - "typename": 2, - "NULL": 330, - "}": 1547, - "*": 261, - "int": 446, - "parse_blob_buffer": 2, - "*item": 10, - "void": 288, - "*buffer": 6, - "long": 105, - "size": 120, - "item": 24, - "object.parsed": 4, - "#ifndef": 89, - "BLOB_H": 2, - "#define": 920, - "extern": 38, - "#endif": 243, - "BOOTSTRAP_H": 2, - "": 8, - "__GNUC__": 8, - "typedef": 191, - "*true": 1, - "*false": 1, - "*eof": 1, - "*empty_list": 1, - "*global_enviroment": 1, - "enum": 30, - "obj_type": 1, - "scm_bool": 1, - "scm_empty_list": 1, - "scm_eof": 1, - "scm_char": 1, - "scm_int": 1, - "scm_pair": 1, - "scm_symbol": 1, - "scm_prim_fun": 1, - "scm_lambda": 1, - "scm_str": 1, - "scm_file": 1, - "*eval_proc": 1, - "*maybe_add_begin": 1, - "*code": 2, - "init_enviroment": 1, - "*env": 4, - "eval_err": 1, - "*msg": 7, - "__attribute__": 1, - "noreturn": 1, - "define_var": 1, - "*var": 4, - "*val": 6, - "set_var": 1, - "*get_var": 1, - "*cond2nested_if": 1, - "*cond": 1, - "*let2lambda": 1, - "*let": 1, - "*and2nested_if": 1, - "*and": 1, - "*or2nested_if": 1, - "*or": 1, - "git_cache_init": 1, - "git_cache": 4, - "*cache": 4, - "size_t": 52, - "git_cached_obj_freeptr": 1, - "free_ptr": 2, - "<": 219, - "git__size_t_powerof2": 1, - "cache": 26, - "size_mask": 6, - "lru_count": 1, - "free_obj": 4, - "git_mutex_init": 1, - "&": 442, - "lock": 6, - "nodes": 10, - "git__malloc": 3, - "sizeof": 71, - "git_cached_obj": 5, - "GITERR_CHECK_ALLOC": 3, - "memset": 4, - "git_cache_free": 1, - "i": 410, - "for": 88, - "+": 551, - "[": 601, - "]": 601, - "git_cached_obj_decref": 3, - "git__free": 15, - "*git_cache_get": 1, - "git_oid": 7, - "*oid": 2, - "uint32_t": 144, - "hash": 12, - "*node": 2, - "*result": 1, - "memcpy": 35, - "oid": 17, - "id": 13, - "git_mutex_lock": 2, - "node": 9, - "&&": 248, - "git_oid_cmp": 6, - "git_cached_obj_incref": 3, - "result": 48, - "git_mutex_unlock": 2, - "*git_cache_try_store": 1, - "*_entry": 1, - "*entry": 2, - "_entry": 1, - "entry": 17, - "else": 190, - "save_commit_buffer": 3, - "*commit_type": 2, - "static": 455, - "commit": 59, - "*check_commit": 1, - "quiet": 5, - "OBJ_COMMIT": 5, - "*lookup_commit_reference_gently": 2, - "deref_tag": 1, - "parse_object": 1, - "check_commit": 2, - "*lookup_commit_reference": 2, - "lookup_commit_reference_gently": 1, - "*lookup_commit_or_die": 2, - "*ref_name": 2, - "*c": 69, - "lookup_commit_reference": 2, - "c": 252, - "die": 5, - "_": 3, - "ref_name": 2, - "hashcmp": 2, - "object.sha1": 8, - "warning": 1, - "*lookup_commit": 2, - "alloc_commit_node": 1, - "*lookup_commit_reference_by_name": 2, - "*name": 12, - "*commit": 10, - "get_sha1": 1, - "name": 28, - "||": 141, - "parse_commit": 3, - "parse_commit_date": 2, - "*buf": 10, - "*tail": 2, - "*dateptr": 1, - "buf": 57, - "tail": 12, - "memcmp": 6, - "while": 70, - "dateptr": 2, - "strtoul": 2, - "commit_graft": 13, - "**commit_graft": 1, - "commit_graft_alloc": 4, - "commit_graft_nr": 5, - "commit_graft_pos": 2, - "lo": 6, - "hi": 5, - "mi": 5, - "/": 9, - "*graft": 3, - "cmp": 9, - "graft": 10, - "register_commit_graft": 2, - "ignore_dups": 2, - "pos": 7, - "free": 62, - "alloc_nr": 1, - "xrealloc": 2, - "parse_commit_buffer": 3, - "buffer": 10, - "*bufptr": 1, - "parent": 7, - "commit_list": 35, - "**pptr": 1, - "<=>": 16, - "bufptr": 12, - "46": 1, - "tree": 3, - "5": 1, - "45": 1, - "n": 70, - "bogus": 1, - "s": 154, - "get_sha1_hex": 2, - "lookup_tree": 1, - "pptr": 5, - "parents": 4, - "lookup_commit_graft": 1, - "*new_parent": 2, - "48": 1, - "7": 1, - "47": 1, - "bad": 1, - "in": 11, - "nr_parent": 3, - "grafts_replace_parents": 1, - "continue": 20, - "new_parent": 6, - "lookup_commit": 2, - "commit_list_insert": 2, - "next": 8, - "date": 5, - "object_type": 1, - "ret": 142, - "read_sha1_file": 1, - "find_commit_subject": 2, - "*commit_buffer": 2, - "**subject": 2, - "*eol": 1, - "*p": 9, - "commit_buffer": 1, - "a": 80, - "b_date": 3, - "b": 66, - "a_date": 2, - "*commit_list_get_next": 1, - "*a": 9, - "commit_list_set_next": 1, - "*next": 6, - "commit_list_sort_by_date": 2, - "**list": 5, - "*list": 2, - "llist_mergesort": 1, - "peel_to_type": 1, - "util": 3, - "merge_remote_desc": 3, - "*desc": 1, - "desc": 5, - "xmalloc": 2, - "strdup": 1, - "**commit_list_append": 2, - "**next": 2, - "*new": 1, - "new": 4, - "COMMIT_H": 2, - "*util": 1, - "indegree": 1, - "*parents": 4, - "*tree": 3, - "decoration": 1, - "name_decoration": 3, - "*commit_list_insert": 1, - "commit_list_count": 1, - "*l": 1, - "*commit_list_insert_by_date": 1, - "free_commit_list": 1, - "cmit_fmt": 3, - "CMIT_FMT_RAW": 1, - "CMIT_FMT_MEDIUM": 2, - "CMIT_FMT_DEFAULT": 1, - "CMIT_FMT_SHORT": 1, - "CMIT_FMT_FULL": 1, - "CMIT_FMT_FULLER": 1, - "CMIT_FMT_ONELINE": 1, - "CMIT_FMT_EMAIL": 1, - "CMIT_FMT_USERFORMAT": 1, - "CMIT_FMT_UNSPECIFIED": 1, - "pretty_print_context": 6, - "fmt": 4, - "abbrev": 1, - "*subject": 1, - "*after_subject": 1, - "preserve_subject": 1, - "date_mode": 2, - "date_mode_explicit": 1, - "need_8bit_cte": 2, - "show_notes": 1, - "reflog_walk_info": 1, - "*reflog_info": 1, - "*output_encoding": 2, - "userformat_want": 2, - "notes": 1, - "has_non_ascii": 1, - "*text": 1, - "rev_info": 2, - "*logmsg_reencode": 1, - "*reencode_commit_message": 1, - "**encoding_p": 1, - "get_commit_format": 1, - "*arg": 1, - "*format_subject": 1, - "strbuf": 12, - "*sb": 7, - "*line_separator": 1, - "userformat_find_requirements": 1, - "*fmt": 2, - "*w": 2, - "format_commit_message": 1, - "*format": 2, - "*context": 1, - "pretty_print_commit": 1, - "*pp": 4, - "pp_commit_easy": 1, - "pp_user_info": 1, - "*what": 1, - "*line": 1, - "*encoding": 2, - "pp_title_line": 1, - "**msg_p": 2, - "pp_remainder": 1, - "indent": 1, - "*pop_most_recent_commit": 1, - "mark": 3, - "*pop_commit": 1, - "**stack": 1, - "clear_commit_marks": 1, - "clear_commit_marks_for_object_array": 1, - "object_array": 2, - "sort_in_topological_order": 1, - "**": 6, - "list": 1, - "lifo": 1, - "FLEX_ARRAY": 1, - "*read_graft_line": 1, - "len": 30, - "*lookup_commit_graft": 1, - "*get_merge_bases": 1, - "*rev1": 1, - "*rev2": 1, - "cleanup": 12, - "*get_merge_bases_many": 1, - "*one": 1, - "**twos": 1, - "*get_octopus_merge_bases": 1, - "*in": 1, - "register_shallow": 1, - "unregister_shallow": 1, - "for_each_commit_graft": 1, - "each_commit_graft_fn": 1, - "is_repository_shallow": 1, - "*get_shallow_commits": 1, - "*heads": 2, - "depth": 2, - "shallow_flag": 1, - "not_shallow_flag": 1, - "is_descendant_of": 1, - "in_merge_bases": 1, - "interactive_add": 1, - "argc": 26, - "**argv": 6, - "*prefix": 7, - "patch": 1, - "run_add_interactive": 1, - "*revision": 1, - "*patch_mode": 1, - "**pathspec": 1, - "inline": 3, - "single_parent": 1, - "*reduce_heads": 1, - "commit_extra_header": 7, - "*key": 5, - "*value": 5, - "append_merge_tag_headers": 1, - "***tail": 1, - "commit_tree": 1, - "*ret": 20, - "*author": 2, - "*sign_commit": 2, - "commit_tree_extended": 1, - "*read_commit_extra_headers": 1, - "*read_commit_extra_header_lines": 1, - "free_commit_extra_headers": 1, - "*extra": 1, - "merge_remote_util": 1, - "*get_merge_parent": 1, - "parse_signed_commit": 1, - "*message": 1, - "*signature": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "#ifdef": 66, - "CONFIG_SMP": 1, - "DEFINE_MUTEX": 1, - "cpu_add_remove_lock": 3, - "cpu_maps_update_begin": 9, - "mutex_lock": 5, - "cpu_maps_update_done": 9, - "mutex_unlock": 6, - "RAW_NOTIFIER_HEAD": 1, - "cpu_chain": 4, - "cpu_hotplug_disabled": 7, - "CONFIG_HOTPLUG_CPU": 2, - "task_struct": 5, - "*active_writer": 1, - "mutex": 1, - "refcount": 2, - "cpu_hotplug": 1, - ".active_writer": 1, - ".lock": 1, - "__MUTEX_INITIALIZER": 1, - "cpu_hotplug.lock": 8, - ".refcount": 1, - "get_online_cpus": 2, - "might_sleep": 1, - "cpu_hotplug.active_writer": 6, - "current": 5, - "cpu_hotplug.refcount": 3, - "EXPORT_SYMBOL_GPL": 4, - "put_online_cpus": 2, - "unlikely": 54, - "wake_up_process": 1, - "cpu_hotplug_begin": 4, - "likely": 22, - "break": 244, - "__set_current_state": 1, - "TASK_UNINTERRUPTIBLE": 1, - "schedule": 1, - "cpu_hotplug_done": 4, - "#else": 94, - "__ref": 6, - "register_cpu_notifier": 2, - "notifier_block": 3, - "*nb": 3, - "raw_notifier_chain_register": 1, - "nb": 2, - "__cpu_notify": 6, - "val": 20, - "*v": 3, - "nr_to_call": 2, - "*nr_calls": 1, - "__raw_notifier_call_chain": 1, - "v": 11, - "nr_calls": 9, - "notifier_to_errno": 1, - "cpu_notify": 5, - "cpu_notify_nofail": 4, - "BUG_ON": 4, - "EXPORT_SYMBOL": 8, - "unregister_cpu_notifier": 2, - "raw_notifier_chain_unregister": 1, - "clear_tasks_mm_cpumask": 1, - "cpu": 57, - "WARN_ON": 1, - "cpu_online": 5, - "rcu_read_lock": 1, - "for_each_process": 2, - "p": 60, - "*t": 2, - "t": 32, - "find_lock_task_mm": 1, - "cpumask_clear_cpu": 5, - "mm_cpumask": 1, - "mm": 1, - "task_unlock": 1, - "rcu_read_unlock": 1, - "check_for_tasks": 2, - "write_lock_irq": 1, - "tasklist_lock": 2, - "task_cpu": 1, - "state": 104, - "TASK_RUNNING": 1, - "utime": 1, - "stime": 1, - "printk": 12, - "KERN_WARNING": 3, - "comm": 1, - "task_pid_nr": 1, - "flags": 89, - "write_unlock_irq": 1, - "take_cpu_down_param": 3, - "mod": 13, - "*hcpu": 3, - "take_cpu_down": 2, - "*_param": 1, - "*param": 1, - "_param": 1, - "err": 38, - "__cpu_disable": 1, - "CPU_DYING": 1, - "|": 132, - "param": 2, - "hcpu": 10, - "_cpu_down": 3, - "tasks_frozen": 4, - "CPU_TASKS_FROZEN": 2, - "tcd_param": 2, - ".mod": 1, - ".hcpu": 1, - "num_online_cpus": 2, - "EBUSY": 3, - "EINVAL": 6, - "CPU_DOWN_PREPARE": 1, - "CPU_DOWN_FAILED": 2, - "__func__": 2, - "goto": 159, - "out_release": 3, - "__stop_machine": 1, - "cpumask_of": 1, - "idle_cpu": 1, - "cpu_relax": 1, - "__cpu_die": 1, - "CPU_DEAD": 1, - "CPU_POST_DEAD": 1, - "cpu_down": 2, - "out": 18, - "__cpuinit": 3, - "_cpu_up": 3, - "*idle": 1, - "cpu_present": 1, - "idle": 4, - "idle_thread_get": 1, - "IS_ERR": 1, - "PTR_ERR": 1, - "CPU_UP_PREPARE": 1, - "out_notify": 3, - "__cpu_up": 1, - "CPU_ONLINE": 1, - "CPU_UP_CANCELED": 1, - "cpu_up": 2, - "CONFIG_MEMORY_HOTPLUG": 2, - "nid": 5, - "pg_data_t": 1, - "*pgdat": 1, - "cpu_possible": 1, - "KERN_ERR": 5, - "#if": 92, - "defined": 42, - "CONFIG_IA64": 1, - "cpu_to_node": 1, - "node_online": 1, - "mem_online_node": 1, - "pgdat": 3, - "NODE_DATA": 1, - "ENOMEM": 4, - "node_zonelists": 1, - "_zonerefs": 1, - "zone": 1, - "zonelists_mutex": 2, - "build_all_zonelists": 1, - "CONFIG_PM_SLEEP_SMP": 2, - "cpumask_var_t": 1, - "frozen_cpus": 9, - "__weak": 4, - "arch_disable_nonboot_cpus_begin": 2, - "arch_disable_nonboot_cpus_end": 2, - "disable_nonboot_cpus": 1, - "first_cpu": 3, - "cpumask_first": 1, - "cpu_online_mask": 3, - "cpumask_clear": 2, - "for_each_online_cpu": 1, - "cpumask_set_cpu": 5, - "arch_enable_nonboot_cpus_begin": 2, - "arch_enable_nonboot_cpus_end": 2, - "enable_nonboot_cpus": 1, - "cpumask_empty": 1, - "KERN_INFO": 2, - "for_each_cpu": 1, - "__init": 2, - "alloc_frozen_cpus": 2, - "alloc_cpumask_var": 1, - "GFP_KERNEL": 1, - "__GFP_ZERO": 1, - "core_initcall": 2, - "cpu_hotplug_disable_before_freeze": 2, - "cpu_hotplug_enable_after_thaw": 2, - "cpu_hotplug_pm_callback": 2, - "action": 2, - "*ptr": 1, - "switch": 46, - "case": 273, - "PM_SUSPEND_PREPARE": 1, - "PM_HIBERNATION_PREPARE": 1, - "PM_POST_SUSPEND": 1, - "PM_POST_HIBERNATION": 1, - "default": 33, - "NOTIFY_DONE": 1, - "NOTIFY_OK": 1, - "cpu_hotplug_pm_sync_init": 2, - "pm_notifier": 1, - "notify_cpu_starting": 1, - "CPU_STARTING": 1, - "cpumask_test_cpu": 1, - "CPU_STARTING_FROZEN": 1, - "MASK_DECLARE_1": 3, - "x": 57, - "UL": 1, - "<<": 56, - "MASK_DECLARE_2": 3, - "MASK_DECLARE_4": 3, - "MASK_DECLARE_8": 9, - "cpu_bit_bitmap": 2, - "BITS_PER_LONG": 2, - "BITS_TO_LONGS": 1, - "NR_CPUS": 2, - "DECLARE_BITMAP": 6, - "cpu_all_bits": 2, - "CPU_BITS_ALL": 2, - "CONFIG_INIT_ALL_POSSIBLE": 1, - "cpu_possible_bits": 6, - "CONFIG_NR_CPUS": 5, - "__read_mostly": 5, - "cpumask": 7, - "*const": 4, - "cpu_possible_mask": 2, - "to_cpumask": 15, - "cpu_online_bits": 5, - "cpu_present_bits": 5, - "cpu_present_mask": 2, - "cpu_active_bits": 4, - "cpu_active_mask": 2, - "set_cpu_possible": 1, - "bool": 6, - "possible": 2, - "set_cpu_present": 1, - "present": 2, - "set_cpu_online": 1, - "online": 2, - "set_cpu_active": 1, - "active": 2, - "init_cpu_present": 1, - "*src": 3, - "cpumask_copy": 3, - "src": 16, - "init_cpu_possible": 1, - "init_cpu_online": 1, - "*diff_prefix_from_pathspec": 1, - "git_strarray": 2, - "*pathspec": 2, - "git_buf": 3, - "prefix": 34, - "GIT_BUF_INIT": 3, - "*scan": 2, - "git_buf_common_prefix": 1, - "pathspec": 15, - "scan": 4, - "prefix.ptr": 2, - "git__iswildcard": 1, - "git_buf_truncate": 1, - "prefix.size": 1, - "git_buf_detach": 1, - "git_buf_free": 4, - "diff_pathspec_is_interesting": 2, - "*str": 1, - "count": 17, - "false": 77, - "true": 73, - "str": 162, - "strings": 5, - "diff_path_matches_pathspec": 3, - "git_diff_list": 17, - "*diff": 8, - "*path": 2, - "git_attr_fnmatch": 4, - "*match": 3, - "diff": 93, - "pathspec.length": 1, - "git_vector_foreach": 4, - "match": 16, - "p_fnmatch": 1, - "pattern": 3, - "path": 20, - "FNM_NOMATCH": 1, - "GIT_ATTR_FNMATCH_HASWILD": 1, - "strncmp": 1, - "length": 58, - "GIT_ATTR_FNMATCH_NEGATIVE": 1, - "git_diff_delta": 19, - "*diff_delta__alloc": 1, - "git_delta_t": 5, - "status": 57, - "*delta": 6, - "git__calloc": 3, - "delta": 54, - "old_file.path": 12, - "git_pool_strdup": 3, - "pool": 12, - "new_file.path": 6, - "opts.flags": 8, - "GIT_DIFF_REVERSE": 3, - "GIT_DELTA_ADDED": 4, - "GIT_DELTA_DELETED": 7, - "*diff_delta__dup": 1, - "*d": 1, - "git_pool": 4, - "*pool": 3, - "d": 16, - "fail": 19, - "*diff_delta__merge_like_cgit": 1, - "*b": 6, - "*dup": 1, - "diff_delta__dup": 3, - "dup": 15, - "new_file.oid": 7, - "git_oid_cpy": 5, - "new_file.mode": 4, - "new_file.size": 3, - "new_file.flags": 4, - "old_file.oid": 3, - "GIT_DELTA_UNTRACKED": 5, - "GIT_DELTA_IGNORED": 5, - "GIT_DELTA_UNMODIFIED": 11, - "diff_delta__from_one": 5, - "git_index_entry": 8, - "GIT_DIFF_INCLUDE_IGNORED": 1, - "GIT_DIFF_INCLUDE_UNTRACKED": 1, - "diff_delta__alloc": 2, - "assert": 41, - "GIT_DELTA_MODIFIED": 3, - "old_file.mode": 2, - "mode": 11, - "old_file.size": 1, - "file_size": 6, - "old_file.flags": 2, - "GIT_DIFF_FILE_VALID_OID": 4, - "git_vector_insert": 4, - "deltas": 8, - "diff_delta__from_two": 2, - "*old_entry": 1, - "*new_entry": 1, - "*new_oid": 1, - "GIT_DIFF_INCLUDE_UNMODIFIED": 1, - "*temp": 1, - "old_entry": 5, - "new_entry": 5, - "temp": 11, - "new_oid": 3, - "git_oid_iszero": 2, - "*diff_strdup_prefix": 1, - "strlen": 17, - "git_pool_strcat": 1, - "git_pool_strndup": 1, - "diff_delta__cmp": 3, - "*da": 1, - "*db": 3, - "strcmp": 20, - "da": 2, - "db": 10, - "config_bool": 5, - "git_config": 3, - "*cfg": 2, - "defvalue": 2, - "git_config_get_bool": 1, - "cfg": 6, - "giterr_clear": 1, - "*git_diff_list_alloc": 1, - "git_repository": 7, - "*repo": 7, - "git_diff_options": 7, - "*opts": 6, - "repo": 23, - "git_vector_init": 3, - "git_pool_init": 2, - "git_repository_config__weakptr": 1, - "diffcaps": 13, - "GIT_DIFFCAPS_HAS_SYMLINKS": 2, - "GIT_DIFFCAPS_ASSUME_UNCHANGED": 2, - "GIT_DIFFCAPS_TRUST_EXEC_BIT": 2, - "GIT_DIFFCAPS_TRUST_CTIME": 2, - "opts": 24, - "opts.pathspec": 2, - "opts.old_prefix": 4, - "diff_strdup_prefix": 2, - "old_prefix": 2, - "DIFF_OLD_PREFIX_DEFAULT": 1, - "opts.new_prefix": 4, - "new_prefix": 2, - "DIFF_NEW_PREFIX_DEFAULT": 1, - "*swap": 1, - "swap": 9, - "pathspec.count": 2, - "*pattern": 1, - "pathspec.strings": 1, - "GIT_ATTR_FNMATCH_ALLOWSPACE": 1, - "git_attr_fnmatch__parse": 1, - "GIT_ENOTFOUND": 1, - "git_diff_list_free": 3, - "deltas.contents": 1, - "git_vector_free": 3, - "pathspec.contents": 1, - "git_pool_clear": 2, - "oid_for_workdir_item": 2, - "full_path": 3, - "git_buf_joinpath": 1, - "git_repository_workdir": 1, - "S_ISLNK": 2, - "git_odb__hashlink": 1, - "full_path.ptr": 2, - "git__is_sizet": 1, - "giterr_set": 1, - "GITERR_OS": 1, - "fd": 34, - "git_futils_open_ro": 1, - "git_odb__hashfd": 1, - "GIT_OBJ_BLOB": 1, - "p_close": 1, - "EXEC_BIT_MASK": 3, - "maybe_modified": 2, - "git_iterator": 8, - "*old_iter": 2, - "*oitem": 2, - "*new_iter": 2, - "*nitem": 2, - "noid": 4, - "*use_noid": 1, - "omode": 8, - "oitem": 29, - "nmode": 10, - "nitem": 32, - "GIT_UNUSED": 1, - "old_iter": 8, - "S_ISREG": 1, - "GIT_MODE_TYPE": 3, - "GIT_MODE_PERMS_MASK": 1, - "flags_extended": 2, - "GIT_IDXENTRY_INTENT_TO_ADD": 1, - "GIT_IDXENTRY_SKIP_WORKTREE": 1, - "new_iter": 13, - "GIT_ITERATOR_WORKDIR": 2, - "ctime.seconds": 2, - "mtime.seconds": 2, - "GIT_DIFFCAPS_USE_DEV": 1, - "dev": 2, - "ino": 2, - "uid": 2, - "gid": 2, - "S_ISGITLINK": 1, - "git_submodule": 1, - "*sub": 1, - "GIT_DIFF_IGNORE_SUBMODULES": 1, - "git_submodule_lookup": 1, - "sub": 12, - "ignore": 1, - "GIT_SUBMODULE_IGNORE_ALL": 1, - "use_noid": 2, - "diff_from_iterators": 5, - "**diff_ptr": 1, - "ignore_prefix": 6, - "git_diff_list_alloc": 1, - "old_src": 1, - "new_src": 3, - "git_iterator_current": 2, - "git_iterator_advance": 5, - "delta_type": 8, - "git_buf_len": 1, - "git__prefixcmp": 2, - "git_buf_cstr": 1, - "S_ISDIR": 1, - "GIT_DIFF_RECURSE_UNTRACKED_DIRS": 1, - "git_iterator_current_is_ignored": 2, - "git_buf_sets": 1, - "git_iterator_advance_into_directory": 1, - "git_iterator_free": 4, - "*diff_ptr": 2, - "git_diff_tree_to_tree": 1, - "git_tree": 4, - "*old_tree": 3, - "*new_tree": 1, - "**diff": 4, - "diff_prefix_from_pathspec": 4, - "old_tree": 5, - "new_tree": 2, - "git_iterator_for_tree_range": 4, - "git_diff_index_to_tree": 1, - "git_iterator_for_index_range": 2, - "git_diff_workdir_to_index": 1, - "git_iterator_for_workdir_range": 2, - "git_diff_workdir_to_tree": 1, - "git_diff_merge": 1, - "*onto": 1, - "*from": 1, - "onto_pool": 7, - "git_vector": 1, - "onto_new": 6, - "j": 206, - "onto": 7, - "from": 16, - "deltas.length": 4, - "*o": 8, - "GIT_VECTOR_GET": 2, - "*f": 2, - "f": 184, - "o": 80, - "diff_delta__merge_like_cgit": 1, - "git_vector_swap": 1, - "git_pool_swap": 1, - "ATSHOME_LIBATS_DYNARRAY_CATS": 3, - "": 5, - "atslib_dynarray_memcpy": 1, - "atslib_dynarray_memmove": 1, - "memmove": 2, - "//": 262, - "ifndef": 2, - "git_usage_string": 2, - "git_more_info_string": 2, - "N_": 1, - "startup_info": 3, - "git_startup_info": 2, - "use_pager": 8, - "pager_config": 3, - "*cmd": 5, - "want": 3, - "pager_command_config": 2, - "*data": 12, - "data": 69, - "prefixcmp": 3, - "var": 7, - "cmd": 46, - "git_config_maybe_bool": 1, - "value": 9, - "xstrdup": 2, - "check_pager_config": 3, - "c.cmd": 1, - "c.want": 2, - "c.value": 3, - "pager_program": 1, - "commit_pager_choice": 4, - "setenv": 1, - "setup_pager": 1, - "handle_options": 2, - "***argv": 2, - "*argc": 1, - "*envchanged": 1, - "**orig_argv": 1, - "*argv": 6, - "new_argv": 7, - "option_count": 1, - "alias_command": 4, - "trace_argv_printf": 3, - "*argcp": 4, - "subdir": 3, - "chdir": 2, - "die_errno": 3, - "errno": 20, - "saved_errno": 1, - "git_version_string": 1, - "GIT_VERSION": 1, - "RUN_SETUP": 81, - "RUN_SETUP_GENTLY": 16, - "USE_PAGER": 3, - "NEED_WORK_TREE": 18, - "cmd_struct": 4, - "option": 9, - "run_builtin": 2, - "help": 4, - "stat": 3, - "st": 2, - "argv": 54, - "setup_git_directory": 1, - "nongit_ok": 2, - "setup_git_directory_gently": 1, - "have_repository": 1, - "trace_repo_setup": 1, - "setup_work_tree": 1, - "fn": 5, - "fstat": 1, - "fileno": 1, - "stdout": 5, - "S_ISFIFO": 1, - "st.st_mode": 2, - "S_ISSOCK": 1, - "fflush": 2, - "ferror": 2, - "fclose": 5, - "handle_internal_command": 3, - "commands": 3, - "cmd_add": 2, - "cmd_annotate": 1, - "cmd_apply": 1, - "cmd_archive": 1, - "cmd_bisect__helper": 1, - "cmd_blame": 2, - "cmd_branch": 1, - "cmd_bundle": 1, - "cmd_cat_file": 1, - "cmd_check_attr": 1, - "cmd_check_ref_format": 1, - "cmd_checkout": 1, - "cmd_checkout_index": 1, - "cmd_cherry": 1, - "cmd_cherry_pick": 1, - "cmd_clean": 1, - "cmd_clone": 1, - "cmd_column": 1, - "cmd_commit": 1, - "cmd_commit_tree": 1, - "cmd_config": 1, - "cmd_count_objects": 1, - "cmd_describe": 1, - "cmd_diff": 1, - "cmd_diff_files": 1, - "cmd_diff_index": 1, - "cmd_diff_tree": 1, - "cmd_fast_export": 1, - "cmd_fetch": 1, - "cmd_fetch_pack": 1, - "cmd_fmt_merge_msg": 1, - "cmd_for_each_ref": 1, - "cmd_format_patch": 1, - "cmd_fsck": 2, - "cmd_gc": 1, - "cmd_get_tar_commit_id": 1, - "cmd_grep": 1, - "cmd_hash_object": 1, - "cmd_help": 1, - "cmd_index_pack": 1, - "cmd_init_db": 2, - "cmd_log": 1, - "cmd_ls_files": 1, - "cmd_ls_remote": 2, - "cmd_ls_tree": 1, - "cmd_mailinfo": 1, - "cmd_mailsplit": 1, - "cmd_merge": 1, - "cmd_merge_base": 1, - "cmd_merge_file": 1, - "cmd_merge_index": 1, - "cmd_merge_ours": 1, - "cmd_merge_recursive": 4, - "cmd_merge_tree": 1, - "cmd_mktag": 1, - "cmd_mktree": 1, - "cmd_mv": 1, - "cmd_name_rev": 1, - "cmd_notes": 1, - "cmd_pack_objects": 1, - "cmd_pack_redundant": 1, - "cmd_pack_refs": 1, - "cmd_patch_id": 1, - "cmd_prune": 1, - "cmd_prune_packed": 1, - "cmd_push": 1, - "cmd_read_tree": 1, - "cmd_receive_pack": 1, - "cmd_reflog": 1, - "cmd_remote": 1, - "cmd_remote_ext": 1, - "cmd_remote_fd": 1, - "cmd_replace": 1, - "cmd_repo_config": 1, - "cmd_rerere": 1, - "cmd_reset": 1, - "cmd_rev_list": 1, - "cmd_rev_parse": 1, - "cmd_revert": 1, - "cmd_rm": 1, - "cmd_send_pack": 1, - "cmd_shortlog": 1, - "cmd_show": 1, - "cmd_show_branch": 1, - "cmd_show_ref": 1, - "cmd_status": 1, - "cmd_stripspace": 1, - "cmd_symbolic_ref": 1, - "cmd_tag": 1, - "cmd_tar_tree": 1, - "cmd_unpack_file": 1, - "cmd_unpack_objects": 1, - "cmd_update_index": 1, - "cmd_update_ref": 1, - "cmd_update_server_info": 1, - "cmd_upload_archive": 1, - "cmd_upload_archive_writer": 1, - "cmd_var": 1, - "cmd_verify_pack": 1, - "cmd_verify_tag": 1, - "cmd_version": 1, - "cmd_whatchanged": 1, - "cmd_write_tree": 1, - "ext": 4, - "STRIP_EXTENSION": 1, - "*argv0": 1, - "argv0": 2, - "ARRAY_SIZE": 1, - "exit": 20, - "execv_dashed_external": 2, - "STRBUF_INIT": 1, - "*tmp": 1, - "strbuf_addf": 1, - "tmp": 6, - "cmd.buf": 1, - "run_command_v_opt": 1, - "RUN_SILENT_EXEC_FAILURE": 1, - "RUN_CLEAN_ON_EXIT": 1, - "ENOENT": 3, - "strbuf_release": 1, - "run_argv": 2, - "done_alias": 4, - "argcp": 2, - "handle_alias": 1, - "main": 3, - "git_extract_argv0_path": 1, - "git_setup_gettext": 1, - "printf": 4, - "list_common_cmds_help": 1, - "setup_path": 1, - "done_help": 3, - "was_alias": 3, - "fprintf": 18, - "stderr": 15, - "help_unknown_cmd": 1, - "strerror": 4, - "PPC_SHA1": 1, - "git_hash_ctx": 7, - "SHA_CTX": 3, - "*git_hash_new_ctx": 1, - "*ctx": 5, - "ctx": 16, - "SHA1_Init": 4, - "git_hash_free_ctx": 1, - "git_hash_init": 1, - "git_hash_update": 1, - "SHA1_Update": 3, - "git_hash_final": 1, - "*out": 3, - "SHA1_Final": 3, - "git_hash_buf": 1, - "git_hash_vec": 1, - "git_buf_vec": 1, - "*vec": 1, - "vec": 2, - ".data": 1, - ".len": 3, - "HELLO_H": 2, - "hello": 1, - "": 5, - "": 2, - "": 3, - "": 3, - "": 2, - "ULLONG_MAX": 10, - "MIN": 3, - "HTTP_PARSER_DEBUG": 4, - "SET_ERRNO": 47, - "e": 4, - "do": 21, - "parser": 334, - "http_errno": 11, - "error_lineno": 3, - "__LINE__": 50, - "CALLBACK_NOTIFY_": 3, - "FOR": 11, - "ER": 4, - "HTTP_PARSER_ERRNO": 10, - "HPE_OK": 10, - "settings": 6, - "on_##FOR": 4, - "HPE_CB_##FOR": 2, - "CALLBACK_NOTIFY": 10, - "CALLBACK_NOTIFY_NOADVANCE": 2, - "CALLBACK_DATA_": 4, - "LEN": 2, - "FOR##_mark": 7, - "CALLBACK_DATA": 10, - "CALLBACK_DATA_NOADVANCE": 6, - "MARK": 7, - "PROXY_CONNECTION": 4, - "CONNECTION": 4, - "CONTENT_LENGTH": 4, - "TRANSFER_ENCODING": 4, - "UPGRADE": 4, - "CHUNKED": 4, - "KEEP_ALIVE": 4, - "CLOSE": 4, - "*method_strings": 1, - "XX": 63, - "num": 24, - "string": 18, - "#string": 1, - "HTTP_METHOD_MAP": 3, - "#undef": 7, - "tokens": 5, - "int8_t": 3, - "unhex": 3, - "HTTP_PARSER_STRICT": 5, - "uint8_t": 6, - "normal_url_char": 3, - "T": 3, - "s_dead": 10, - "s_start_req_or_res": 4, - "s_res_or_resp_H": 3, - "s_start_res": 5, - "s_res_H": 3, - "s_res_HT": 4, - "s_res_HTT": 3, - "s_res_HTTP": 3, - "s_res_first_http_major": 3, - "s_res_http_major": 3, - "s_res_first_http_minor": 3, - "s_res_http_minor": 3, - "s_res_first_status_code": 3, - "s_res_status_code": 3, - "s_res_status": 3, - "s_res_line_almost_done": 4, - "s_start_req": 6, - "s_req_method": 4, - "s_req_spaces_before_url": 5, - "s_req_schema": 6, - "s_req_schema_slash": 6, - "s_req_schema_slash_slash": 6, - "s_req_host_start": 8, - "s_req_host_v6_start": 7, - "s_req_host_v6": 7, - "s_req_host_v6_end": 7, - "s_req_host": 8, - "s_req_port_start": 7, - "s_req_port": 6, - "s_req_path": 8, - "s_req_query_string_start": 8, - "s_req_query_string": 7, - "s_req_fragment_start": 7, - "s_req_fragment": 7, - "s_req_http_start": 3, - "s_req_http_H": 3, - "s_req_http_HT": 3, - "s_req_http_HTT": 3, - "s_req_http_HTTP": 3, - "s_req_first_http_major": 3, - "s_req_http_major": 3, - "s_req_first_http_minor": 3, - "s_req_http_minor": 3, - "s_req_line_almost_done": 4, - "s_header_field_start": 12, - "s_header_field": 4, - "s_header_value_start": 4, - "s_header_value": 5, - "s_header_value_lws": 3, - "s_header_almost_done": 6, - "s_chunk_size_start": 4, - "s_chunk_size": 3, - "s_chunk_parameters": 3, - "s_chunk_size_almost_done": 4, - "s_headers_almost_done": 4, - "s_headers_done": 4, - "s_chunk_data": 3, - "s_chunk_data_almost_done": 3, - "s_chunk_data_done": 3, - "s_body_identity": 3, - "s_body_identity_eof": 4, - "s_message_done": 3, - "PARSING_HEADER": 2, - "header_states": 1, - "h_general": 23, - "0": 11, - "h_C": 3, - "h_CO": 3, - "h_CON": 3, - "h_matching_connection": 3, - "h_matching_proxy_connection": 3, - "h_matching_content_length": 3, - "h_matching_transfer_encoding": 3, - "h_matching_upgrade": 3, - "h_connection": 6, - "h_content_length": 5, - "h_transfer_encoding": 5, - "h_upgrade": 4, - "h_matching_transfer_encoding_chunked": 3, - "h_matching_connection_keep_alive": 3, - "h_matching_connection_close": 3, - "h_transfer_encoding_chunked": 4, - "h_connection_keep_alive": 4, - "h_connection_close": 4, - "Macros": 1, - "character": 11, - "classes": 1, - "depends": 1, - "on": 4, - "strict": 2, - "define": 14, - "CR": 18, - "r": 58, - "LF": 21, - "LOWER": 7, - "0x20": 1, - "IS_ALPHA": 5, - "z": 47, - "IS_NUM": 14, - "9": 1, - "IS_ALPHANUM": 3, - "IS_HEX": 2, - "TOKEN": 4, - "IS_URL_CHAR": 6, - "IS_HOST_CHAR": 4, - "0x80": 1, - "endif": 6, - "start_state": 1, - "HTTP_REQUEST": 7, - "cond": 1, - "HPE_STRICT": 1, - "HTTP_STRERROR_GEN": 3, - "#n": 1, - "*description": 1, - "http_strerror_tab": 7, - "HTTP_ERRNO_MAP": 3, - "http_message_needs_eof": 4, - "http_parser": 13, - "*parser": 9, - "parse_url_char": 5, - "ch": 145, - "http_parser_execute": 2, - "http_parser_settings": 5, - "*settings": 2, - "unhex_val": 7, - "*header_field_mark": 1, - "*header_value_mark": 1, - "*url_mark": 1, - "*body_mark": 1, - "message_complete": 7, - "HPE_INVALID_EOF_STATE": 1, - "header_field_mark": 2, - "header_value_mark": 2, - "url_mark": 2, - "nread": 7, - "HTTP_MAX_HEADER_SIZE": 2, - "HPE_HEADER_OVERFLOW": 1, - "reexecute_byte": 7, - "HPE_CLOSED_CONNECTION": 1, - "content_length": 27, - "message_begin": 3, - "HTTP_RESPONSE": 3, - "HPE_INVALID_CONSTANT": 3, - "method": 39, - "HTTP_HEAD": 2, - "index": 58, - "STRICT_CHECK": 15, - "HPE_INVALID_VERSION": 12, - "http_major": 11, - "http_minor": 11, - "HPE_INVALID_STATUS": 3, - "status_code": 8, - "HPE_INVALID_METHOD": 4, - "http_method": 4, - "HTTP_CONNECT": 4, - "HTTP_DELETE": 1, - "HTTP_GET": 1, - "HTTP_LOCK": 1, - "HTTP_MKCOL": 2, - "HTTP_NOTIFY": 1, - "HTTP_OPTIONS": 1, - "HTTP_POST": 2, - "HTTP_REPORT": 1, - "HTTP_SUBSCRIBE": 2, - "HTTP_TRACE": 1, - "HTTP_UNLOCK": 2, - "*matcher": 1, - "matcher": 3, - "method_strings": 2, - "HTTP_CHECKOUT": 1, - "HTTP_COPY": 1, - "HTTP_MOVE": 1, - "HTTP_MERGE": 1, - "HTTP_MSEARCH": 1, - "HTTP_MKACTIVITY": 1, - "HTTP_SEARCH": 1, - "HTTP_PROPFIND": 2, - "HTTP_PUT": 2, - "HTTP_PATCH": 1, - "HTTP_PURGE": 1, - "HTTP_UNSUBSCRIBE": 1, - "HTTP_PROPPATCH": 1, - "url": 4, - "HPE_INVALID_URL": 4, - "HPE_LF_EXPECTED": 1, - "HPE_INVALID_HEADER_TOKEN": 2, - "header_field": 5, - "header_state": 42, - "header_value": 6, - "F_UPGRADE": 3, - "HPE_INVALID_CONTENT_LENGTH": 4, - "uint64_t": 8, - "F_CONNECTION_KEEP_ALIVE": 3, - "F_CONNECTION_CLOSE": 3, - "F_CHUNKED": 11, - "F_TRAILING": 3, - "NEW_MESSAGE": 6, - "upgrade": 3, - "on_headers_complete": 3, - "F_SKIPBODY": 4, - "HPE_CB_headers_complete": 1, - "to_read": 6, - "body": 6, - "body_mark": 2, - "HPE_INVALID_CHUNK_SIZE": 2, - "HPE_INVALID_INTERNAL_STATE": 1, - "1": 2, - "HPE_UNKNOWN": 1, - "Does": 1, - "the": 91, - "need": 5, - "to": 37, - "see": 2, - "an": 2, - "EOF": 26, - "find": 1, - "end": 48, - "of": 44, - "message": 3, - "http_should_keep_alive": 2, - "http_method_str": 1, - "m": 8, - "http_parser_init": 2, - "http_parser_type": 3, - "http_errno_name": 1, - "/sizeof": 4, - ".name": 1, - "http_errno_description": 1, - ".description": 1, - "http_parser_parse_url": 2, - "buflen": 3, - "is_connect": 4, - "http_parser_url": 3, - "*u": 2, - "http_parser_url_fields": 2, - "uf": 14, - "old_uf": 4, - "u": 18, - "port": 7, - "field_set": 5, - "UF_MAX": 3, - "UF_SCHEMA": 2, - "UF_HOST": 3, - "UF_PORT": 5, - "UF_PATH": 2, - "UF_QUERY": 2, - "UF_FRAGMENT": 2, - "field_data": 5, - ".off": 2, - "xffff": 1, - "uint16_t": 12, - "http_parser_pause": 2, - "paused": 3, - "HPE_PAUSED": 2, - "http_parser_h": 2, - "__cplusplus": 20, - "HTTP_PARSER_VERSION_MAJOR": 1, - "HTTP_PARSER_VERSION_MINOR": 1, - "": 2, - "_WIN32": 3, - "__MINGW32__": 1, - "_MSC_VER": 5, - "__int8": 2, - "__int16": 2, - "int16_t": 1, - "__int32": 2, - "int32_t": 112, - "__int64": 3, - "int64_t": 2, - "ssize_t": 1, - "": 1, - "*1024": 4, - "DELETE": 2, - "GET": 2, - "HEAD": 2, - "POST": 2, - "PUT": 2, - "CONNECT": 2, - "OPTIONS": 2, - "TRACE": 2, - "COPY": 2, - "LOCK": 2, - "MKCOL": 2, - "MOVE": 2, - "PROPFIND": 2, - "PROPPATCH": 2, - "SEARCH": 3, - "UNLOCK": 2, - "REPORT": 2, - "MKACTIVITY": 2, - "CHECKOUT": 2, - "MERGE": 2, - "MSEARCH": 1, - "M": 1, - "NOTIFY": 2, - "SUBSCRIBE": 2, - "UNSUBSCRIBE": 2, - "PATCH": 2, - "PURGE": 2, - "HTTP_##name": 1, - "HTTP_BOTH": 1, - "OK": 1, - "CB_message_begin": 1, - "CB_url": 1, - "CB_header_field": 1, - "CB_header_value": 1, - "CB_headers_complete": 1, - "CB_body": 1, - "CB_message_complete": 1, - "INVALID_EOF_STATE": 1, - "HEADER_OVERFLOW": 1, - "CLOSED_CONNECTION": 1, - "INVALID_VERSION": 1, - "INVALID_STATUS": 1, - "INVALID_METHOD": 1, - "INVALID_URL": 1, - "INVALID_HOST": 1, - "INVALID_PORT": 1, - "INVALID_PATH": 1, - "INVALID_QUERY_STRING": 1, - "INVALID_FRAGMENT": 1, - "LF_EXPECTED": 1, - "INVALID_HEADER_TOKEN": 1, - "INVALID_CONTENT_LENGTH": 1, - "INVALID_CHUNK_SIZE": 1, - "INVALID_CONSTANT": 1, - "INVALID_INTERNAL_STATE": 1, - "STRICT": 1, - "PAUSED": 1, - "UNKNOWN": 1, - "HTTP_ERRNO_GEN": 3, - "HPE_##n": 1, - "HTTP_PARSER_ERRNO_LINE": 2, - "short": 6, - "http_cb": 3, - "on_message_begin": 1, - "http_data_cb": 4, - "on_url": 1, - "on_header_field": 1, - "on_header_value": 1, - "on_body": 1, - "on_message_complete": 1, - "off": 8, - "*http_method_str": 1, - "*http_errno_name": 1, - "*http_errno_description": 1, - "": 1, - "_Included_jni_JniLayer": 2, - "JNIEXPORT": 6, - "jlong": 6, - "JNICALL": 6, - "Java_jni_JniLayer_jni_1layer_1initialize": 1, - "JNIEnv": 6, - "jobject": 6, - "jintArray": 1, - "jint": 7, - "Java_jni_JniLayer_jni_1layer_1mainloop": 1, - "Java_jni_JniLayer_jni_1layer_1set_1button": 1, - "Java_jni_JniLayer_jni_1layer_1set_1analog": 1, - "jfloat": 1, - "Java_jni_JniLayer_jni_1layer_1report_1analog_1chg": 1, - "Java_jni_JniLayer_jni_1layer_1kill": 1, - "strncasecmp": 2, - "_strnicmp": 1, - "REF_TABLE_SIZE": 1, - "BUFFER_BLOCK": 5, - "BUFFER_SPAN": 9, - "MKD_LI_END": 1, - "gperf_case_strncmp": 1, - "s1": 6, - "s2": 6, - "GPERF_DOWNCASE": 1, - "GPERF_CASE_STRNCMP": 1, - "link_ref": 2, - "*link": 1, - "*title": 1, - "sd_markdown": 6, - "tag": 1, - "tag_len": 3, - "w": 6, - "is_empty": 4, - "htmlblock_end": 3, - "*curtag": 2, - "*rndr": 4, - "start_of_line": 2, - "tag_size": 3, - "curtag": 8, - "end_tag": 4, - "block_lines": 3, - "htmlblock_end_tag": 1, - "rndr": 25, - "parse_htmlblock": 1, - "*ob": 3, - "do_render": 4, - "tag_end": 7, - "work": 4, - "find_block_tag": 1, - "work.size": 5, - "cb.blockhtml": 6, - "ob": 14, - "opaque": 8, - "parse_table_row": 1, - "columns": 3, - "*col_data": 1, - "header_flag": 3, - "col": 9, - "*row_work": 1, - "cb.table_cell": 3, - "cb.table_row": 2, - "row_work": 4, - "rndr_newbuf": 2, - "cell_start": 5, - "cell_end": 6, - "*cell_work": 1, - "cell_work": 3, - "_isspace": 3, - "parse_inline": 1, - "col_data": 2, - "rndr_popbuf": 2, - "empty_cell": 2, - "parse_table_header": 1, - "*columns": 2, - "**column_data": 1, - "pipes": 23, - "header_end": 7, - "under_end": 1, - "*column_data": 1, - "calloc": 1, - "beg": 10, - "doc_size": 6, - "document": 9, - "UTF8_BOM": 1, - "is_ref": 1, - "md": 18, - "refs": 2, - "expand_tabs": 1, - "text": 22, - "bufputc": 2, - "bufgrow": 1, - "MARKDOWN_GROW": 1, - "cb.doc_header": 2, - "parse_block": 1, - "cb.doc_footer": 2, - "bufrelease": 3, - "free_link_refs": 1, - "work_bufs": 8, - ".size": 2, - "sd_markdown_free": 1, - "*md": 1, - ".asize": 2, - ".item": 2, - "stack_free": 2, - "sd_version": 1, - "*ver_major": 2, - "*ver_minor": 2, - "*ver_revision": 2, - "SUNDOWN_VER_MAJOR": 1, - "SUNDOWN_VER_MINOR": 1, - "SUNDOWN_VER_REVISION": 1, - "": 4, - "": 2, - "": 1, - "": 1, - "": 2, - "__APPLE__": 2, - "TARGET_OS_IPHONE": 1, - "**environ": 1, - "uv__chld": 2, - "EV_P_": 1, - "ev_child*": 1, - "watcher": 4, - "revents": 2, - "rstatus": 1, - "exit_status": 3, - "term_signal": 3, - "uv_process_t": 1, - "*process": 1, - "process": 19, - "child_watcher": 5, - "EV_CHILD": 1, - "ev_child_stop": 2, - "EV_A_": 1, - "WIFEXITED": 1, - "WEXITSTATUS": 2, - "WIFSIGNALED": 2, - "WTERMSIG": 2, - "exit_cb": 3, - "uv__make_socketpair": 2, - "fds": 20, - "SOCK_NONBLOCK": 2, - "fl": 8, - "SOCK_CLOEXEC": 1, - "UV__F_NONBLOCK": 5, - "socketpair": 2, - "AF_UNIX": 2, - "SOCK_STREAM": 2, - "uv__cloexec": 4, - "uv__nonblock": 5, - "uv__make_pipe": 2, - "__linux__": 3, - "UV__O_CLOEXEC": 1, - "UV__O_NONBLOCK": 1, - "uv__pipe2": 1, - "ENOSYS": 1, - "pipe": 1, - "uv__process_init_stdio": 2, - "uv_stdio_container_t*": 4, - "container": 17, - "writable": 8, - "UV_IGNORE": 2, - "UV_CREATE_PIPE": 4, - "UV_INHERIT_FD": 3, - "UV_INHERIT_STREAM": 2, - "data.stream": 7, - "UV_NAMED_PIPE": 2, - "data.fd": 1, - "uv__process_stdio_flags": 2, - "uv_pipe_t*": 1, - "ipc": 1, - "UV_STREAM_READABLE": 2, - "UV_STREAM_WRITABLE": 2, - "uv__process_open_stream": 2, - "child_fd": 3, - "close": 13, - "uv__stream_open": 1, - "uv_stream_t*": 2, - "uv__process_close_stream": 2, - "uv__stream_close": 1, - "uv__process_child_init": 2, - "uv_process_options_t": 2, - "options": 62, - "stdio_count": 7, - "int*": 22, - "options.flags": 4, - "UV_PROCESS_DETACHED": 2, - "setsid": 2, - "close_fd": 2, - "use_fd": 7, - "open": 4, - "O_RDONLY": 1, - "O_RDWR": 2, - "perror": 5, - "_exit": 6, - "dup2": 4, - "options.cwd": 2, - "UV_PROCESS_SETGID": 2, - "setgid": 1, - "options.gid": 1, - "UV_PROCESS_SETUID": 2, - "setuid": 1, - "options.uid": 1, - "environ": 4, - "options.env": 1, - "execvp": 1, - "options.file": 2, - "options.args": 1, - "SPAWN_WAIT_EXEC": 5, - "uv_spawn": 1, - "uv_loop_t*": 1, - "loop": 9, - "uv_process_t*": 3, - "char**": 7, - "save_our_env": 3, - "options.stdio_count": 4, - "malloc": 3, - "signal_pipe": 7, - "pollfd": 1, - "pfd": 2, - "pid_t": 2, - "pid": 13, - "UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS": 1, - "uv__handle_init": 1, - "uv_handle_t*": 1, - "UV_PROCESS": 1, - "counters.process_init": 1, - "uv__handle_start": 1, - "options.exit_cb": 1, - "options.stdio": 3, - "fork": 2, - "pfd.fd": 1, - "pfd.events": 1, - "POLLIN": 1, - "POLLHUP": 1, - "pfd.revents": 1, - "poll": 1, - "EINTR": 1, - "ev_child_init": 1, - "ev_child_start": 1, - "ev": 2, - "child_watcher.data": 1, - "uv__set_sys_error": 2, - "uv_process_kill": 1, - "signum": 4, - "kill": 4, - "uv_err_t": 1, - "uv_kill": 1, - "uv__new_sys_error": 1, - "uv_ok_": 1, - "uv__process_close": 1, - "handle": 10, - "uv__handle_stop": 1, - "VALUE": 13, - "rb_cRDiscount": 4, - "rb_rdiscount_to_html": 2, - "self": 9, - "*res": 2, - "szres": 8, - "encoding": 14, - "rb_funcall": 14, - "rb_intern": 15, - "rb_str_buf_new": 2, - "Check_Type": 2, - "T_STRING": 2, - "rb_rdiscount__get_flags": 3, - "MMIOT": 2, - "*doc": 2, - "mkd_string": 2, - "RSTRING_PTR": 2, - "RSTRING_LEN": 2, - "mkd_compile": 2, - "doc": 6, - "mkd_document": 1, - "res": 4, - "rb_str_cat": 4, - "mkd_cleanup": 2, - "rb_respond_to": 1, - "rb_rdiscount_toc_content": 2, - "mkd_toc": 1, - "ruby_obj": 11, - "MKD_TABSTOP": 1, - "MKD_NOHEADER": 1, - "Qtrue": 10, - "MKD_NOPANTS": 1, - "MKD_NOHTML": 1, - "MKD_TOC": 1, - "MKD_NOIMAGE": 1, - "MKD_NOLINKS": 1, - "MKD_NOTABLES": 1, - "MKD_STRICT": 1, - "MKD_AUTOLINK": 1, - "MKD_SAFELINK": 1, - "MKD_NO_EXT": 1, - "Init_rdiscount": 1, - "rb_define_class": 1, - "rb_cObject": 1, - "rb_define_method": 2, - "READLINE_READLINE_CATS": 3, - "": 1, - "atscntrb_readline_rl_library_version": 1, - "char*": 167, - "rl_library_version": 1, - "atscntrb_readline_rl_readline_version": 1, - "rl_readline_version": 1, - "atscntrb_readline_readline": 1, - "readline": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 2, - "": 1, - "": 1, - "": 3, - "": 1, - "sharedObjectsStruct": 1, - "shared": 1, - "double": 126, - "R_Zero": 2, - "R_PosInf": 2, - "R_NegInf": 2, - "R_Nan": 2, - "redisServer": 1, - "server": 1, - "redisCommand": 6, - "*commandTable": 1, - "redisCommandTable": 5, - "getCommand": 1, - "setCommand": 1, - "noPreloadGetKeys": 6, - "setnxCommand": 1, - "setexCommand": 1, - "psetexCommand": 1, - "appendCommand": 1, - "strlenCommand": 1, - "delCommand": 1, - "existsCommand": 1, - "setbitCommand": 1, - "getbitCommand": 1, - "setrangeCommand": 1, - "getrangeCommand": 2, - "incrCommand": 1, - "decrCommand": 1, - "mgetCommand": 1, - "rpushCommand": 1, - "lpushCommand": 1, - "rpushxCommand": 1, - "lpushxCommand": 1, - "linsertCommand": 1, - "rpopCommand": 1, - "lpopCommand": 1, - "brpopCommand": 1, - "brpoplpushCommand": 1, - "blpopCommand": 1, - "llenCommand": 1, - "lindexCommand": 1, - "lsetCommand": 1, - "lrangeCommand": 1, - "ltrimCommand": 1, - "lremCommand": 1, - "rpoplpushCommand": 1, - "saddCommand": 1, - "sremCommand": 1, - "smoveCommand": 1, - "sismemberCommand": 1, - "scardCommand": 1, - "spopCommand": 1, - "srandmemberCommand": 1, - "sinterCommand": 2, - "sinterstoreCommand": 1, - "sunionCommand": 1, - "sunionstoreCommand": 1, - "sdiffCommand": 1, - "sdiffstoreCommand": 1, - "zaddCommand": 1, - "zincrbyCommand": 1, - "zremCommand": 1, - "zremrangebyscoreCommand": 1, - "zremrangebyrankCommand": 1, - "zunionstoreCommand": 1, - "zunionInterGetKeys": 4, - "zinterstoreCommand": 1, - "zrangeCommand": 1, - "zrangebyscoreCommand": 1, - "zrevrangebyscoreCommand": 1, - "zcountCommand": 1, - "zrevrangeCommand": 1, - "zcardCommand": 1, - "zscoreCommand": 1, - "zrankCommand": 1, - "zrevrankCommand": 1, - "hsetCommand": 1, - "hsetnxCommand": 1, - "hgetCommand": 1, - "hmsetCommand": 1, - "hmgetCommand": 1, - "hincrbyCommand": 1, - "hincrbyfloatCommand": 1, - "hdelCommand": 1, - "hlenCommand": 1, - "hkeysCommand": 1, - "hvalsCommand": 1, - "hgetallCommand": 1, - "hexistsCommand": 1, - "incrbyCommand": 1, - "decrbyCommand": 1, - "incrbyfloatCommand": 1, - "getsetCommand": 1, - "msetCommand": 1, - "msetnxCommand": 1, - "randomkeyCommand": 1, - "selectCommand": 1, - "moveCommand": 1, - "renameCommand": 1, - "renameGetKeys": 2, - "renamenxCommand": 1, - "expireCommand": 1, - "expireatCommand": 1, - "pexpireCommand": 1, - "pexpireatCommand": 1, - "keysCommand": 1, - "dbsizeCommand": 1, - "authCommand": 3, - "pingCommand": 2, - "echoCommand": 2, - "saveCommand": 1, - "bgsaveCommand": 1, - "bgrewriteaofCommand": 1, - "shutdownCommand": 2, - "lastsaveCommand": 1, - "typeCommand": 1, - "multiCommand": 2, - "execCommand": 2, - "discardCommand": 2, - "syncCommand": 1, - "flushdbCommand": 1, - "flushallCommand": 1, - "sortCommand": 1, - "infoCommand": 4, - "monitorCommand": 2, - "ttlCommand": 1, - "pttlCommand": 1, - "persistCommand": 1, - "slaveofCommand": 2, - "debugCommand": 1, - "configCommand": 1, - "subscribeCommand": 2, - "unsubscribeCommand": 2, - "psubscribeCommand": 2, - "punsubscribeCommand": 2, - "publishCommand": 1, - "watchCommand": 2, - "unwatchCommand": 1, - "clusterCommand": 1, - "restoreCommand": 1, - "migrateCommand": 1, - "askingCommand": 1, - "dumpCommand": 1, - "objectCommand": 1, - "clientCommand": 1, - "evalCommand": 1, - "evalShaCommand": 1, - "slowlogCommand": 1, - "scriptCommand": 2, - "timeCommand": 2, - "bitopCommand": 1, - "bitcountCommand": 1, - "redisLogRaw": 3, - "level": 12, - "syslogLevelMap": 2, - "LOG_DEBUG": 1, - "LOG_INFO": 1, - "LOG_NOTICE": 1, - "LOG_WARNING": 1, - "FILE": 3, - "*fp": 3, - "rawmode": 2, - "REDIS_LOG_RAW": 2, - "xff": 3, - "server.verbosity": 4, - "fp": 13, - "server.logfile": 8, - "fopen": 3, - "msg": 10, - "timeval": 4, - "tv": 8, - "gettimeofday": 4, - "strftime": 1, - "localtime": 1, - "tv.tv_sec": 4, - "snprintf": 2, - "tv.tv_usec/1000": 1, - "getpid": 7, - "server.syslog_enabled": 3, - "syslog": 1, - "redisLog": 33, - "...": 127, - "va_list": 3, - "ap": 4, - "REDIS_MAX_LOGMSG_LEN": 1, - "va_start": 3, - "vsnprintf": 1, - "va_end": 3, - "redisLogFromHandler": 2, - "server.daemonize": 5, - "O_APPEND": 2, - "O_CREAT": 2, - "O_WRONLY": 2, - "STDOUT_FILENO": 2, - "ll2string": 3, - "write": 7, - "time": 10, - "oom": 3, - "REDIS_WARNING": 19, - "sleep": 1, - "abort": 1, - "ustime": 7, - "ust": 7, - "*1000000": 1, - "tv.tv_usec": 3, - "mstime": 5, - "/1000": 1, - "exitFromChild": 1, - "retcode": 3, - "COVERAGE_TEST": 1, - "dictVanillaFree": 1, - "*privdata": 8, - "DICT_NOTUSED": 6, - "privdata": 8, - "zfree": 2, - "dictListDestructor": 2, - "listRelease": 1, - "list*": 1, - "dictSdsKeyCompare": 6, - "*key1": 4, - "*key2": 4, - "l1": 4, - "l2": 3, - "sdslen": 14, - "sds": 13, - "key1": 5, - "key2": 5, - "dictSdsKeyCaseCompare": 2, - "strcasecmp": 13, - "dictRedisObjectDestructor": 7, - "decrRefCount": 6, - "dictSdsDestructor": 4, - "sdsfree": 2, - "dictObjKeyCompare": 2, - "robj": 7, - "*o1": 2, - "*o2": 2, - "o1": 7, - "ptr": 18, - "o2": 7, - "dictObjHash": 2, - "key": 9, - "dictGenHashFunction": 5, - "dictSdsHash": 4, - "dictSdsCaseHash": 2, - "dictGenCaseHashFunction": 1, - "dictEncObjKeyCompare": 4, - "robj*": 3, - "REDIS_ENCODING_INT": 4, - "getDecodedObject": 3, - "dictEncObjHash": 4, - "REDIS_ENCODING_RAW": 1, - "dictType": 8, - "setDictType": 1, - "zsetDictType": 1, - "dbDictType": 2, - "keyptrDictType": 2, - "commandTableDictType": 2, - "hashDictType": 1, - "keylistDictType": 4, - "clusterNodesDictType": 1, - "htNeedsResize": 3, - "dict": 11, - "*dict": 5, - "used": 10, - "dictSlots": 3, - "dictSize": 10, - "DICT_HT_INITIAL_SIZE": 2, - "used*100/size": 1, - "REDIS_HT_MINFILL": 1, - "tryResizeHashTables": 2, - "server.dbnum": 8, - "server.db": 23, - ".dict": 9, - "dictResize": 2, - ".expires": 8, - "incrementallyRehash": 2, - "dictIsRehashing": 2, - "dictRehashMilliseconds": 2, - "updateDictResizePolicy": 2, - "server.rdb_child_pid": 12, - "server.aof_child_pid": 10, - "dictEnableResize": 1, - "dictDisableResize": 1, - "activeExpireCycle": 2, - "iteration": 6, - "start": 10, - "timelimit": 5, - "*REDIS_EXPIRELOOKUPS_TIME_PERC/REDIS_HZ/100": 1, - "expired": 4, - "redisDb": 3, - "expires": 3, - "slots": 2, - "now": 5, - "num*100/slots": 1, - "REDIS_EXPIRELOOKUPS_PER_CRON": 2, - "dictEntry": 2, - "*de": 2, - "de": 12, - "dictGetRandomKey": 4, - "dictGetSignedIntegerVal": 1, - "dictGetKey": 4, - "*keyobj": 2, - "createStringObject": 11, - "propagateExpire": 2, - "keyobj": 6, - "dbDelete": 2, - "server.stat_expiredkeys": 3, - "xf": 1, - "REDIS_EXPIRELOOKUPS_PER_CRON/4": 1, - "updateLRUClock": 3, - "server.lruclock": 2, - "server.unixtime/REDIS_LRU_CLOCK_RESOLUTION": 1, - "REDIS_LRU_CLOCK_MAX": 1, - "trackOperationsPerSecond": 2, - "server.ops_sec_last_sample_time": 3, - "ops": 1, - "server.stat_numcommands": 4, - "server.ops_sec_last_sample_ops": 3, - "ops_sec": 3, - "ops*1000/t": 1, - "server.ops_sec_samples": 4, - "server.ops_sec_idx": 4, - "%": 2, - "REDIS_OPS_SEC_SAMPLES": 3, - "getOperationsPerSecond": 2, - "sum": 3, - "clientsCronHandleTimeout": 2, - "redisClient": 12, - "time_t": 4, - "server.unixtime": 10, - "server.maxidletime": 3, - "REDIS_SLAVE": 3, - "REDIS_MASTER": 2, - "REDIS_BLOCKED": 2, - "pubsub_channels": 2, - "listLength": 14, - "pubsub_patterns": 2, - "lastinteraction": 3, - "REDIS_VERBOSE": 3, - "freeClient": 1, - "bpop.timeout": 2, - "addReply": 13, - "shared.nullmultibulk": 2, - "unblockClientWaitingData": 1, - "clientsCronResizeQueryBuffer": 2, - "querybuf_size": 3, - "sdsAllocSize": 1, - "querybuf": 6, - "idletime": 2, - "REDIS_MBULK_BIG_ARG": 1, - "querybuf_size/": 1, - "querybuf_peak": 2, - "sdsavail": 1, - "sdsRemoveFreeSpace": 1, - "clientsCron": 2, - "numclients": 3, - "server.clients": 7, - "iterations": 4, - "numclients/": 1, - "REDIS_HZ*10": 1, - "listNode": 4, - "*head": 1, - "listRotate": 1, - "head": 3, - "listFirst": 2, - "listNodeValue": 3, - "run_with_period": 6, - "_ms_": 2, - "loops": 2, - "/REDIS_HZ": 2, - "serverCron": 2, - "aeEventLoop": 2, - "*eventLoop": 2, - "*clientData": 1, - "server.cronloops": 3, - "REDIS_NOTUSED": 5, - "eventLoop": 2, - "clientData": 1, - "server.watchdog_period": 3, - "watchdogScheduleSignal": 1, - "zmalloc_used_memory": 8, - "server.stat_peak_memory": 5, - "server.shutdown_asap": 3, - "prepareForShutdown": 2, - "REDIS_OK": 23, - "vkeys": 8, - "server.activerehashing": 2, - "server.slaves": 9, - "server.aof_rewrite_scheduled": 4, - "rewriteAppendOnlyFileBackground": 2, - "statloc": 5, - "wait3": 1, - "WNOHANG": 1, - "exitcode": 3, - "bysignal": 4, - "backgroundSaveDoneHandler": 1, - "backgroundRewriteDoneHandler": 1, - "server.saveparamslen": 3, - "saveparam": 1, - "*sp": 1, - "server.saveparams": 2, - "server.dirty": 3, - "sp": 4, - "changes": 2, - "server.lastsave": 3, - "seconds": 2, - "REDIS_NOTICE": 13, - "rdbSaveBackground": 1, - "server.rdb_filename": 4, - "server.aof_rewrite_perc": 3, - "server.aof_current_size": 2, - "server.aof_rewrite_min_size": 2, - "base": 1, - "server.aof_rewrite_base_size": 4, - "growth": 3, - "server.aof_current_size*100/base": 1, - "server.aof_flush_postponed_start": 2, - "flushAppendOnlyFile": 2, - "server.masterhost": 7, - "freeClientsInAsyncFreeQueue": 1, - "replicationCron": 1, - "server.cluster_enabled": 6, - "clusterCron": 1, - "beforeSleep": 2, - "*ln": 3, - "server.unblocked_clients": 4, - "ln": 8, - "redisAssert": 1, - "listDelNode": 1, - "REDIS_UNBLOCKED": 1, - "server.current_client": 3, - "processInputBuffer": 1, - "createSharedObjects": 2, - "shared.crlf": 2, - "createObject": 31, - "REDIS_STRING": 31, - "sdsnew": 27, - "shared.ok": 3, - "shared.err": 1, - "shared.emptybulk": 1, - "shared.czero": 1, - "shared.cone": 1, - "shared.cnegone": 1, - "shared.nullbulk": 1, - "shared.emptymultibulk": 1, - "shared.pong": 2, - "shared.queued": 2, - "shared.wrongtypeerr": 1, - "shared.nokeyerr": 1, - "shared.syntaxerr": 2, - "shared.sameobjecterr": 1, - "shared.outofrangeerr": 1, - "shared.noscripterr": 1, - "shared.loadingerr": 2, - "shared.slowscripterr": 2, - "shared.masterdownerr": 2, - "shared.bgsaveerr": 2, - "shared.roslaveerr": 2, - "shared.oomerr": 2, - "shared.space": 1, - "shared.colon": 1, - "shared.plus": 1, - "REDIS_SHARED_SELECT_CMDS": 1, - "shared.select": 1, - "sdscatprintf": 24, - "sdsempty": 8, - "shared.messagebulk": 1, - "shared.pmessagebulk": 1, - "shared.subscribebulk": 1, - "shared.unsubscribebulk": 1, - "shared.psubscribebulk": 1, - "shared.punsubscribebulk": 1, - "shared.del": 1, - "shared.rpop": 1, - "shared.lpop": 1, - "REDIS_SHARED_INTEGERS": 1, - "shared.integers": 2, - "void*": 135, - "REDIS_SHARED_BULKHDR_LEN": 1, - "shared.mbulkhdr": 1, - "shared.bulkhdr": 1, - "initServerConfig": 2, - "getRandomHexChars": 1, - "server.runid": 3, - "REDIS_RUN_ID_SIZE": 2, - "server.arch_bits": 3, - "server.port": 7, - "REDIS_SERVERPORT": 1, - "server.bindaddr": 2, - "server.unixsocket": 7, - "server.unixsocketperm": 2, - "server.ipfd": 9, - "server.sofd": 9, - "REDIS_DEFAULT_DBNUM": 1, - "REDIS_MAXIDLETIME": 1, - "server.client_max_querybuf_len": 1, - "REDIS_MAX_QUERYBUF_LEN": 1, - "server.loading": 4, - "server.syslog_ident": 2, - "zstrdup": 5, - "server.syslog_facility": 2, - "LOG_LOCAL0": 1, - "server.aof_state": 7, - "REDIS_AOF_OFF": 5, - "server.aof_fsync": 1, - "AOF_FSYNC_EVERYSEC": 1, - "server.aof_no_fsync_on_rewrite": 1, - "REDIS_AOF_REWRITE_PERC": 1, - "REDIS_AOF_REWRITE_MIN_SIZE": 1, - "server.aof_last_fsync": 1, - "server.aof_rewrite_time_last": 2, - "server.aof_rewrite_time_start": 2, - "server.aof_delayed_fsync": 2, - "server.aof_fd": 4, - "server.aof_selected_db": 1, - "server.pidfile": 3, - "server.aof_filename": 3, - "server.requirepass": 4, - "server.rdb_compression": 1, - "server.rdb_checksum": 1, - "server.maxclients": 6, - "REDIS_MAX_CLIENTS": 1, - "server.bpop_blocked_clients": 2, - "server.maxmemory": 6, - "server.maxmemory_policy": 11, - "REDIS_MAXMEMORY_VOLATILE_LRU": 3, - "server.maxmemory_samples": 3, - "server.hash_max_ziplist_entries": 1, - "REDIS_HASH_MAX_ZIPLIST_ENTRIES": 1, - "server.hash_max_ziplist_value": 1, - "REDIS_HASH_MAX_ZIPLIST_VALUE": 1, - "server.list_max_ziplist_entries": 1, - "REDIS_LIST_MAX_ZIPLIST_ENTRIES": 1, - "server.list_max_ziplist_value": 1, - "REDIS_LIST_MAX_ZIPLIST_VALUE": 1, - "server.set_max_intset_entries": 1, - "REDIS_SET_MAX_INTSET_ENTRIES": 1, - "server.zset_max_ziplist_entries": 1, - "REDIS_ZSET_MAX_ZIPLIST_ENTRIES": 1, - "server.zset_max_ziplist_value": 1, - "REDIS_ZSET_MAX_ZIPLIST_VALUE": 1, - "server.repl_ping_slave_period": 1, - "REDIS_REPL_PING_SLAVE_PERIOD": 1, - "server.repl_timeout": 1, - "REDIS_REPL_TIMEOUT": 1, - "server.cluster.configfile": 1, - "server.lua_caller": 1, - "server.lua_time_limit": 1, - "REDIS_LUA_TIME_LIMIT": 1, - "server.lua_client": 1, - "server.lua_timedout": 2, - "resetServerSaveParams": 2, - "appendServerSaveParams": 3, - "*60": 1, - "server.masterauth": 1, - "server.masterport": 2, - "server.master": 3, - "server.repl_state": 6, - "REDIS_REPL_NONE": 1, - "server.repl_syncio_timeout": 1, - "REDIS_REPL_SYNCIO_TIMEOUT": 1, - "server.repl_serve_stale_data": 2, - "server.repl_slave_ro": 2, - "server.repl_down_since": 2, - "server.client_obuf_limits": 9, - "REDIS_CLIENT_LIMIT_CLASS_NORMAL": 3, - ".hard_limit_bytes": 3, - ".soft_limit_bytes": 3, - ".soft_limit_seconds": 3, - "REDIS_CLIENT_LIMIT_CLASS_SLAVE": 3, - "*1024*256": 1, - "*1024*64": 1, - "REDIS_CLIENT_LIMIT_CLASS_PUBSUB": 3, - "*1024*32": 1, - "*1024*8": 1, - "/R_Zero": 2, - "R_Zero/R_Zero": 1, - "server.commands": 1, - "dictCreate": 6, - "populateCommandTable": 2, - "server.delCommand": 1, - "lookupCommandByCString": 3, - "server.multiCommand": 1, - "server.lpushCommand": 1, - "server.slowlog_log_slower_than": 1, - "REDIS_SLOWLOG_LOG_SLOWER_THAN": 1, - "server.slowlog_max_len": 1, - "REDIS_SLOWLOG_MAX_LEN": 1, - "server.assert_failed": 1, - "server.assert_file": 1, - "server.assert_line": 1, - "server.bug_report_start": 1, - "adjustOpenFilesLimit": 2, - "rlim_t": 3, - "maxfiles": 6, - "rlimit": 1, - "limit": 3, - "getrlimit": 1, - "RLIMIT_NOFILE": 2, - "oldlimit": 5, - "limit.rlim_cur": 2, - "limit.rlim_max": 1, - "setrlimit": 1, - "initServer": 2, - "signal": 2, - "SIGHUP": 1, - "SIG_IGN": 2, - "SIGPIPE": 1, - "setupSignalHandlers": 2, - "openlog": 1, - "LOG_PID": 1, - "LOG_NDELAY": 1, - "LOG_NOWAIT": 1, - "listCreate": 6, - "server.clients_to_close": 1, - "server.monitors": 2, - "server.el": 7, - "aeCreateEventLoop": 1, - "zmalloc": 2, - "*server.dbnum": 1, - "anetTcpServer": 1, - "server.neterr": 4, - "ANET_ERR": 2, - "unlink": 3, - "anetUnixServer": 1, - ".blocking_keys": 1, - ".watched_keys": 1, - ".id": 1, - "server.pubsub_channels": 2, - "server.pubsub_patterns": 4, - "listSetFreeMethod": 1, - "freePubsubPattern": 1, - "listSetMatchMethod": 1, - "listMatchPubsubPattern": 1, - "aofRewriteBufferReset": 1, - "server.aof_buf": 3, - "server.rdb_save_time_last": 2, - "server.rdb_save_time_start": 2, - "server.stat_numconnections": 2, - "server.stat_evictedkeys": 3, - "server.stat_starttime": 2, - "server.stat_keyspace_misses": 2, - "server.stat_keyspace_hits": 2, - "server.stat_fork_time": 2, - "server.stat_rejected_conn": 2, - "server.lastbgsave_status": 3, - "server.stop_writes_on_bgsave_err": 2, - "aeCreateTimeEvent": 1, - "aeCreateFileEvent": 2, - "AE_READABLE": 2, - "acceptTcpHandler": 1, - "AE_ERR": 2, - "acceptUnixHandler": 1, - "REDIS_AOF_ON": 2, - "LL*": 1, - "REDIS_MAXMEMORY_NO_EVICTION": 2, - "clusterInit": 1, - "scriptingInit": 1, - "slowlogInit": 1, - "bioInit": 1, - "numcommands": 5, - "sflags": 1, - "retval": 3, - "arity": 3, - "addReplyErrorFormat": 1, - "authenticated": 3, - "proc": 14, - "addReplyError": 6, - "getkeys_proc": 1, - "firstkey": 1, - "hashslot": 3, - "server.cluster.state": 1, - "REDIS_CLUSTER_OK": 1, - "ask": 3, - "clusterNode": 1, - "*n": 1, - "getNodeByQuery": 1, - "server.cluster.myself": 1, - "addReplySds": 3, - "ip": 4, - "freeMemoryIfNeeded": 2, - "REDIS_CMD_DENYOOM": 1, - "REDIS_ERR": 5, - "REDIS_CMD_WRITE": 2, - "REDIS_REPL_CONNECTED": 3, - "tolower": 2, - "REDIS_MULTI": 1, - "queueMultiCommand": 1, - "call": 1, - "REDIS_CALL_FULL": 1, - "save": 2, - "REDIS_SHUTDOWN_SAVE": 1, - "nosave": 2, - "REDIS_SHUTDOWN_NOSAVE": 1, - "SIGKILL": 2, - "rdbRemoveTempFile": 1, - "aof_fsync": 1, - "rdbSave": 1, - "addReplyBulk": 1, - "addReplyMultiBulkLen": 1, - "addReplyBulkLongLong": 2, - "bytesToHuman": 3, - "*s": 3, - "sprintf": 10, - "n/": 3, - "LL*1024*1024": 2, - "LL*1024*1024*1024": 1, - "genRedisInfoString": 2, - "*section": 2, - "info": 64, - "uptime": 2, - "rusage": 1, - "self_ru": 2, - "c_ru": 2, - "lol": 3, - "bib": 3, - "allsections": 12, - "defsections": 11, - "sections": 11, - "section": 14, - "getrusage": 2, - "RUSAGE_SELF": 1, - "RUSAGE_CHILDREN": 1, - "getClientsMaxBuffers": 1, - "utsname": 1, - "sdscat": 14, - "uname": 1, - "REDIS_VERSION": 4, - "redisGitSHA1": 3, - "strtol": 2, - "redisGitDirty": 3, - "name.sysname": 1, - "name.release": 1, - "name.machine": 1, - "aeGetApiName": 1, - "__GNUC_MINOR__": 2, - "__GNUC_PATCHLEVEL__": 1, - "uptime/": 1, - "*24": 1, - "hmem": 3, - "peak_hmem": 3, - "zmalloc_get_rss": 1, - "lua_gc": 1, - "server.lua": 1, - "LUA_GCCOUNT": 1, - "*1024LL": 1, - "zmalloc_get_fragmentation_ratio": 1, - "ZMALLOC_LIB": 2, - "aofRewriteBufferSize": 2, - "bioPendingJobsOfType": 1, - "REDIS_BIO_AOF_FSYNC": 1, - "perc": 3, - "eta": 4, - "elapsed": 3, - "off_t": 1, - "remaining_bytes": 1, - "server.loading_total_bytes": 3, - "server.loading_loaded_bytes": 3, - "server.loading_start_time": 2, - "elapsed*remaining_bytes": 1, - "/server.loading_loaded_bytes": 1, - "REDIS_REPL_TRANSFER": 2, - "server.repl_transfer_left": 1, - "server.repl_transfer_lastio": 1, - "slaveid": 3, - "listIter": 2, - "li": 6, - "listRewind": 2, - "listNext": 2, - "*slave": 2, - "*state": 1, - "anetPeerToString": 1, - "slave": 3, - "replstate": 1, - "REDIS_REPL_WAIT_BGSAVE_START": 1, - "REDIS_REPL_WAIT_BGSAVE_END": 1, - "REDIS_REPL_SEND_BULK": 1, - "REDIS_REPL_ONLINE": 1, - "float": 26, - "self_ru.ru_stime.tv_sec": 1, - "self_ru.ru_stime.tv_usec/1000000": 1, - "self_ru.ru_utime.tv_sec": 1, - "self_ru.ru_utime.tv_usec/1000000": 1, - "c_ru.ru_stime.tv_sec": 1, - "c_ru.ru_stime.tv_usec/1000000": 1, - "c_ru.ru_utime.tv_sec": 1, - "c_ru.ru_utime.tv_usec/1000000": 1, - "calls": 4, - "microseconds": 1, - "microseconds/c": 1, - "keys": 4, - "REDIS_MONITOR": 1, - "slaveseldb": 1, - "listAddNodeTail": 1, - "mem_used": 9, - "mem_tofree": 3, - "mem_freed": 4, - "slaves": 3, - "obuf_bytes": 3, - "getClientOutputBufferMemoryUsage": 1, - "k": 15, - "keys_freed": 3, - "bestval": 5, - "bestkey": 9, - "REDIS_MAXMEMORY_ALLKEYS_LRU": 2, - "REDIS_MAXMEMORY_ALLKEYS_RANDOM": 2, - "REDIS_MAXMEMORY_VOLATILE_RANDOM": 1, - "thiskey": 7, - "thisval": 8, - "dictFind": 1, - "dictGetVal": 2, - "estimateObjectIdleTime": 1, - "REDIS_MAXMEMORY_VOLATILE_TTL": 1, - "flushSlavesOutputBuffers": 1, - "linuxOvercommitMemoryValue": 2, - "fgets": 1, - "atoi": 3, - "linuxOvercommitMemoryWarning": 2, - "createPidFile": 2, - "daemonize": 2, - "STDIN_FILENO": 1, - "STDERR_FILENO": 2, - "version": 4, - "usage": 2, - "redisAsciiArt": 2, - "*16": 2, - "ascii_logo": 1, - "sigtermHandler": 2, - "sig": 2, - "sigaction": 6, - "act": 6, - "sigemptyset": 2, - "act.sa_mask": 2, - "act.sa_flags": 2, - "act.sa_handler": 1, - "SIGTERM": 1, - "HAVE_BACKTRACE": 1, - "SA_NODEFER": 1, - "SA_RESETHAND": 1, - "SA_SIGINFO": 1, - "act.sa_sigaction": 1, - "sigsegvHandler": 1, - "SIGSEGV": 1, - "SIGBUS": 1, - "SIGFPE": 1, - "SIGILL": 1, - "memtest": 2, - "megabytes": 1, - "passes": 1, - "zmalloc_enable_thread_safeness": 1, - "srand": 1, - "dictSetHashFunctionSeed": 1, - "*configfile": 1, - "configfile": 2, - "sdscatrepr": 1, - "loadServerConfig": 1, - "loadAppendOnlyFile": 1, - "/1000000": 2, - "rdbLoad": 1, - "aeSetBeforeSleepProc": 1, - "aeMain": 1, - "aeDeleteEventLoop": 1, - "": 1, - "": 2, - "": 2, - "rfUTF8_IsContinuationbyte": 1, - "e.t.c.": 1, - "rfFReadLine_UTF8": 5, - "FILE*": 64, - "utf8": 36, - "uint32_t*": 34, - "byteLength": 197, - "bufferSize": 6, - "eof": 53, - "bytesN": 98, - "bIndex": 5, - "RF_NEWLINE_CRLF": 1, - "newLineFound": 1, - "*bufferSize": 1, - "RF_OPTION_FGETS_READBYTESN": 5, - "RF_MALLOC": 47, - "tempBuff": 6, - "RF_LF": 10, - "buff": 95, - "RF_SUCCESS": 14, - "RE_FILE_EOF": 22, - "found": 20, - "*eofReached": 14, - "LOG_ERROR": 64, - "RF_HEXEQ_UI": 7, - "rfFgetc_UTF32BE": 3, - "else//": 14, - "undo": 5, - "peek": 5, - "ahead": 5, - "file": 6, - "pointer": 5, - "fseek": 19, - "SEEK_CUR": 19, - "rfFgets_UTF32LE": 2, - "eofReached": 4, - "rfFgetc_UTF32LE": 4, - "rfFgets_UTF16BE": 2, - "rfFgetc_UTF16BE": 4, - "rfFgets_UTF16LE": 2, - "rfFgetc_UTF16LE": 4, - "rfFgets_UTF8": 2, - "rfFgetc_UTF8": 3, - "RF_HEXEQ_C": 9, - "fgetc": 9, - "check": 8, - "RE_FILE_READ": 2, - "cp": 12, - "c2": 13, - "c3": 9, - "c4": 5, - "i_READ_CHECK": 20, - "///": 4, - "success": 4, - "cc": 24, - "we": 10, - "more": 2, - "bytes": 225, - "xC0": 3, - "xC1": 1, - "RE_UTF8_INVALID_SEQUENCE_INVALID_BYTE": 6, - "RE_UTF8_INVALID_SEQUENCE_END": 6, - "rfUTF8_IsContinuationByte": 12, - "RE_UTF8_INVALID_SEQUENCE_CONBYTE": 6, - "decoded": 3, - "codepoint": 47, - "F": 38, - "xE0": 2, - "xF": 5, - "decode": 6, - "xF0": 2, - "RF_HEXGE_C": 1, - "xBF": 2, - "//invalid": 1, - "byte": 6, - "are": 6, - "xFF": 1, - "//if": 1, - "needing": 1, - "than": 5, - "swapE": 21, - "v1": 38, - "v2": 26, - "rfUTILS_Endianess": 24, - "RF_LITTLE_ENDIAN": 23, - "fread": 12, - "endianess": 40, - "needed": 10, - "rfUTILS_SwapEndianUS": 10, - "RF_HEXGE_US": 4, - "xD800": 8, - "RF_HEXLE_US": 4, - "xDFFF": 8, - "RF_HEXL_US": 8, - "RF_HEXG_US": 8, - "xDBFF": 4, - "RE_UTF16_INVALID_SEQUENCE": 20, - "RE_UTF16_NO_SURRPAIR": 2, - "xDC00": 4, - "user": 2, - "wants": 2, - "ff": 10, - "uint16_t*": 11, - "surrogate": 4, - "pair": 4, - "existence": 2, - "RF_BIG_ENDIAN": 10, - "rfUTILS_SwapEndianUI": 11, - "rfFback_UTF32BE": 2, - "i_FSEEK_CHECK": 14, - "rfFback_UTF32LE": 2, - "rfFback_UTF16BE": 2, - "rfFback_UTF16LE": 2, - "rfFback_UTF8": 2, - "depending": 1, - "number": 19, - "read": 1, - "backwards": 1, - "RE_UTF8_INVALID_SEQUENCE": 2, - "REFU_IO_H": 2, - "": 2, - "opening": 2, - "bracket": 4, - "calling": 4, - "C": 14, - "xA": 1, - "RF_CR": 1, - "xD": 1, - "REFU_WIN32_VERSION": 1, - "i_PLUSB_WIN32": 2, - "foff_rft": 2, - "off64_t": 1, - "///Fseek": 1, - "and": 15, - "Ftelll": 1, - "definitions": 1, - "rfFseek": 2, - "i_FILE_": 16, - "i_OFFSET_": 4, - "i_WHENCE_": 4, - "_fseeki64": 1, - "rfFtell": 2, - "_ftelli64": 1, - "fseeko64": 1, - "ftello64": 1, - "i_DECLIMEX_": 121, - "rfFReadLine_UTF16BE": 6, - "rfFReadLine_UTF16LE": 4, - "rfFReadLine_UTF32BE": 1, - "rfFReadLine_UTF32LE": 4, - "rfFgets_UTF32BE": 1, - "RF_IAMHERE_FOR_DOXYGEN": 22, - "rfPopen": 2, - "command": 2, - "i_rfPopen": 2, - "i_CMD_": 2, - "i_MODE_": 2, - "i_rfLMS_WRAP2": 5, - "rfPclose": 1, - "stream": 3, - "///closing": 1, - "#endif//include": 1, - "guards": 2, - "": 1, - "": 2, - "local": 5, - "stack": 6, - "memory": 4, - "RF_OPTION_DEFAULT_ARGUMENTS": 24, - "RF_String*": 222, - "rfString_Create": 4, - "i_rfString_Create": 3, - "READ_VSNPRINTF_ARGS": 5, - "rfUTF8_VerifySequence": 7, - "RF_FAILURE": 24, - "RE_STRING_INIT_FAILURE": 8, - "buffAllocated": 11, - "RF_String": 27, - "i_NVrfString_Create": 3, - "i_rfString_CreateLocal1": 3, - "RF_OPTION_SOURCE_ENCODING": 30, - "RF_UTF8": 8, - "characterLength": 16, - "*codepoints": 2, - "rfLMS_MacroEvalPtr": 2, - "RF_LMS": 6, - "RF_UTF16_LE": 9, - "RF_UTF16_BE": 7, - "codepoints": 44, - "i/2": 2, - "#elif": 14, - "RF_UTF32_LE": 3, - "RF_UTF32_BE": 3, - "UTF16": 4, - "rfUTF16_Decode": 5, - "rfUTF16_Decode_swap": 5, - "RF_UTF16_BE//": 2, - "RF_UTF32_LE//": 2, - "copy": 4, - "UTF32": 4, - "into": 8, - "RF_UTF32_BE//": 2, - "": 2, - "any": 3, - "other": 16, - "UTF": 17, - "8": 15, - "encode": 2, - "them": 3, - "rfUTF8_Encode": 4, - "While": 2, - "attempting": 2, - "create": 2, - "temporary": 4, - "given": 5, - "sequence": 6, - "could": 2, - "not": 6, - "be": 6, - "properly": 2, - "encoded": 2, - "RE_UTF8_ENCODING": 2, - "End": 2, - "Non": 2, - "code=": 2, - "normally": 1, - "since": 5, - "here": 5, - "have": 2, - "validity": 2, - "get": 4, - "Error": 2, - "at": 3, - "String": 11, - "Allocation": 2, - "due": 2, - "invalid": 2, - "rfLMS_Push": 4, - "Memory": 4, - "allocation": 3, - "Local": 2, - "Stack": 2, - "failed": 2, - "Insufficient": 2, - "space": 4, - "Consider": 2, - "compiling": 2, - "library": 3, - "with": 9, - "bigger": 3, - "Quitting": 2, - "proccess": 2, - "RE_LOCALMEMSTACK_INSUFFICIENT": 8, - "i_NVrfString_CreateLocal": 3, - "during": 1, - "rfString_Init": 3, - "i_rfString_Init": 3, - "i_NVrfString_Init": 3, - "rfString_Create_cp": 2, - "rfString_Init_cp": 3, - "RF_HEXLE_UI": 8, - "RF_HEXGE_UI": 6, - "C0": 3, - "ffff": 4, - "xFC0": 4, - "xF000": 2, - "xE": 2, - "F000": 2, - "C0000": 2, - "E": 11, - "RE_UTF8_INVALID_CODE_POINT": 2, - "rfString_Create_i": 2, - "numLen": 8, - "max": 4, - "is": 17, - "most": 3, - "environment": 3, - "so": 4, - "chars": 3, - "will": 3, - "certainly": 3, - "fit": 3, - "it": 12, - "strcpy": 4, - "rfString_Init_i": 2, - "rfString_Create_f": 2, - "rfString_Init_f": 2, - "rfString_Create_UTF16": 2, - "rfString_Init_UTF16": 3, - "utf8ByteLength": 34, - "last": 1, - "utf": 1, - "null": 4, - "termination": 3, - "byteLength*2": 1, - "allocate": 1, - "same": 1, - "as": 4, - "different": 1, - "RE_INPUT": 1, - "ends": 3, - "rfString_Create_UTF32": 2, - "rfString_Init_UTF32": 3, - "codeBuffer": 9, - "xFEFF": 1, - "big": 14, - "endian": 20, - "xFFFE0000": 1, - "little": 7, - "according": 1, - "standard": 1, - "no": 4, - "BOM": 1, - "means": 1, - "rfUTF32_Length": 1, - "i_rfString_Assign": 3, - "dest": 7, - "sourceP": 2, - "source": 8, - "RF_REALLOC": 9, - "rfString_Assign_char": 2, - "<5)>": 1, - "rfString_Create_nc": 3, - "i_rfString_Create_nc": 3, - "bytesWritten": 2, - "i_NVrfString_Create_nc": 3, - "rfString_Init_nc": 4, - "i_rfString_Init_nc": 3, - "i_NVrfString_Init_nc": 3, - "rfString_Destroy": 2, - "rfString_Deinit": 3, - "rfString_ToUTF16": 4, - "charsN": 5, - "rfUTF8_Decode": 2, - "rfUTF16_Encode": 1, - "rfString_ToUTF32": 4, - "rfString_Length": 5, - "RF_STRING_ITERATE_START": 9, - "RF_STRING_ITERATE_END": 9, - "rfString_GetChar": 2, - "thisstr": 210, - "codePoint": 18, - "RF_STRING_INDEX_OUT_OF_BOUNDS": 2, - "rfString_BytePosToCodePoint": 7, - "rfString_BytePosToCharPos": 4, - "thisstrP": 32, - "bytepos": 12, - "before": 4, - "charPos": 8, - "byteI": 7, - "i_rfString_Equal": 3, - "s1P": 2, - "s2P": 2, - "i_rfString_Find": 5, - "sstrP": 6, - "optionsP": 11, - "sstr": 39, - "*optionsP": 8, - "RF_BITFLAG_ON": 5, - "RF_CASE_IGNORE": 2, - "strstr": 2, - "RF_MATCH_WORD": 5, - "exact": 6, - "": 1, - "0x5a": 1, - "0x7a": 1, - "substring": 5, - "search": 1, - "zero": 2, - "equals": 1, - "then": 1, - "okay": 1, - "rfString_Equal": 4, - "RFS_": 8, - "ERANGE": 1, - "RE_STRING_TOFLOAT_UNDERFLOW": 1, - "RE_STRING_TOFLOAT": 1, - "rfString_Copy_OUT": 2, - "srcP": 6, - "rfString_Copy_IN": 2, - "dst": 15, - "rfString_Copy_chars": 2, - "bytePos": 23, - "terminate": 1, - "i_rfString_ScanfAfter": 3, - "afterstrP": 2, - "format": 4, - "afterstr": 5, - "sscanf": 1, - "<=0)>": 1, - "Counts": 1, - "how": 1, - "many": 1, - "times": 1, - "occurs": 1, - "inside": 2, - "i_rfString_Count": 5, - "sstr2": 2, - "move": 12, - "rfString_FindBytePos": 10, - "rfString_Tokenize": 2, - "sep": 3, - "tokensN": 2, - "RF_String**": 2, - "*tokensN": 1, - "rfString_Count": 4, - "lstr": 6, - "lstrP": 1, - "rstr": 24, - "rstrP": 5, - "rfString_After": 4, - "rfString_Beforev": 4, - "parNP": 6, - "i_rfString_Beforev": 16, - "parN": 10, - "*parNP": 2, - "minPos": 17, - "thisPos": 8, - "argList": 8, - "va_arg": 2, - "i_rfString_Before": 5, - "i_rfString_After": 5, - "afterP": 2, - "after": 6, - "rfString_Afterv": 4, - "i_rfString_Afterv": 16, - "minPosLength": 3, - "go": 8, - "i_rfString_Append": 3, - "otherP": 4, - "strncat": 1, - "rfString_Append_i": 2, - "rfString_Append_f": 2, - "i_rfString_Prepend": 3, - "goes": 1, - "i_rfString_Remove": 6, - "numberP": 1, - "*numberP": 1, - "occurences": 5, - "done": 1, - "<=thisstr->": 1, - "i_rfString_KeepOnly": 3, - "keepstrP": 2, - "keepLength": 2, - "charValue": 12, - "*keepChars": 1, - "keepstr": 5, - "exists": 6, - "charBLength": 5, - "keepChars": 4, - "*keepLength": 1, - "rfString_Iterate_Start": 6, - "rfString_Iterate_End": 4, - "": 1, - "does": 1, - "exist": 2, - "back": 1, - "cover": 1, - "that": 9, - "effectively": 1, - "gets": 1, - "deleted": 1, - "rfUTF8_FromCodepoint": 1, - "this": 5, - "kind": 1, - "non": 1, - "clean": 1, - "way": 1, - "macro": 2, - "internally": 1, - "uses": 1, - "byteIndex_": 12, - "variable": 1, - "use": 1, - "determine": 1, - "backs": 1, - "by": 1, - "contiuing": 1, - "make": 3, - "sure": 2, - "position": 1, - "won": 1, - "array": 1, - "rfString_PruneStart": 2, - "nBytePos": 23, - "rfString_PruneEnd": 2, - "RF_STRING_ITERATEB_START": 2, - "RF_STRING_ITERATEB_END": 2, - "rfString_PruneMiddleB": 2, - "pBytePos": 15, - "indexing": 1, - "works": 1, - "pbytePos": 2, - "pth": 2, - "include": 6, - "rfString_PruneMiddleF": 2, - "got": 1, - "all": 2, - "i_rfString_Replace": 6, - "numP": 1, - "*numP": 1, - "RF_StringX": 2, - "just": 1, - "finding": 1, - "foundN": 10, - "bSize": 4, - "bytePositions": 17, - "bSize*sizeof": 1, - "rfStringX_FromString_IN": 1, - "temp.bIndex": 2, - "temp.bytes": 1, - "temp.byteLength": 1, - "rfStringX_Deinit": 1, - "replace": 3, - "removed": 2, - "one": 2, - "orSize": 5, - "nSize": 4, - "number*diff": 1, - "strncpy": 3, - "smaller": 1, - "diff*number": 1, - "remove": 1, - "equal": 1, - "i_rfString_StripStart": 3, - "subP": 7, - "RF_String*sub": 2, - "noMatch": 8, - "*subValues": 2, - "subLength": 6, - "subValues": 8, - "*subLength": 2, - "i_rfString_StripEnd": 3, - "lastBytePos": 4, - "testity": 2, - "i_rfString_Strip": 3, - "res1": 2, - "rfString_StripStart": 3, - "res2": 2, - "rfString_StripEnd": 3, - "rfString_Create_fUTF8": 2, - "rfString_Init_fUTF8": 3, - "unused": 3, - "rfString_Assign_fUTF8": 2, - "FILE*f": 2, - "utf8BufferSize": 4, - "function": 6, - "rfString_Append_fUTF8": 2, - "rfString_Append": 5, - "rfString_Create_fUTF16": 2, - "rfString_Init_fUTF16": 3, - "rfString_Assign_fUTF16": 2, - "rfString_Append_fUTF16": 2, - "char*utf8": 3, - "rfString_Create_fUTF32": 2, - "rfString_Init_fUTF32": 3, - "<0)>": 1, - "Failure": 1, - "initialize": 1, - "reading": 1, - "Little": 1, - "Endian": 1, - "32": 1, - "bytesN=": 1, - "rfString_Assign_fUTF32": 2, - "rfString_Append_fUTF32": 2, - "i_rfString_Fwrite": 5, - "sP": 2, - "encodingP": 1, - "*utf32": 1, - "utf16": 11, - "*encodingP": 1, - "fwrite": 5, - "logging": 5, - "utf32": 10, - "i_WRITE_CHECK": 1, - "RE_FILE_WRITE": 1, - "REFU_USTRING_H": 2, - "": 1, - "RF_MODULE_STRINGS//": 1, - "included": 2, - "module": 3, - "": 1, - "argument": 1, - "wrapping": 1, - "functionality": 1, - "": 1, - "unicode": 2, - "xFF0FFFF": 1, - "rfUTF8_IsContinuationByte2": 1, - "b__": 3, - "0xBF": 1, - "pragma": 1, - "pack": 2, - "push": 1, - "internal": 4, - "author": 1, - "Lefteris": 1, - "09": 1, - "12": 1, - "2010": 1, - "endinternal": 1, - "brief": 1, - "A": 11, - "representation": 2, - "The": 1, - "Refu": 2, - "Unicode": 1, - "has": 2, - "two": 1, - "versions": 1, - "One": 1, - "ref": 1, - "what": 1, - "operations": 1, - "can": 2, - "performed": 1, - "extended": 3, - "Strings": 2, - "Functions": 1, - "convert": 1, - "but": 1, - "always": 2, - "Once": 1, - "been": 1, - "created": 1, - "assumed": 1, - "valid": 1, - "every": 1, - "performs": 1, - "unless": 1, - "otherwise": 1, - "specified": 1, - "All": 1, - "functions": 2, - "which": 1, - "isinherited": 1, - "StringX": 2, - "their": 1, - "description": 1, - "safely": 1, - "specific": 1, - "or": 1, - "needs": 1, - "manipulate": 1, - "Extended": 1, - "To": 1, - "documentation": 1, - "even": 1, - "clearer": 1, - "should": 2, - "marked": 1, - "notinherited": 1, - "cppcode": 1, - "constructor": 1, - "i_StringCHandle": 1, - "@endcpp": 1, - "@endinternal": 1, - "*/": 1, - "#pragma": 1, - "pop": 1, - "i_rfString_CreateLocal": 2, - "__VA_ARGS__": 66, - "RP_SELECT_FUNC_IF_NARGIS": 5, - "i_SELECT_RF_STRING_CREATE": 1, - "i_SELECT_RF_STRING_CREATE1": 1, - "i_SELECT_RF_STRING_CREATE0": 1, - "///Internal": 1, - "creates": 1, - "i_SELECT_RF_STRING_CREATELOCAL": 1, - "i_SELECT_RF_STRING_CREATELOCAL1": 1, - "i_SELECT_RF_STRING_CREATELOCAL0": 1, - "i_SELECT_RF_STRING_INIT": 1, - "i_SELECT_RF_STRING_INIT1": 1, - "i_SELECT_RF_STRING_INIT0": 1, - "code": 6, - "i_SELECT_RF_STRING_CREATE_NC": 1, - "i_SELECT_RF_STRING_CREATE_NC1": 1, - "i_SELECT_RF_STRING_CREATE_NC0": 1, - "i_SELECT_RF_STRING_INIT_NC": 1, - "i_SELECT_RF_STRING_INIT_NC1": 1, - "i_SELECT_RF_STRING_INIT_NC0": 1, - "//@": 1, - "rfString_Assign": 2, - "i_DESTINATION_": 2, - "i_SOURCE_": 2, - "rfString_ToUTF8": 2, - "i_STRING_": 2, - "rfString_ToCstr": 2, - "uint32_t*length": 1, - "string_": 9, - "startCharacterPos_": 4, - "characterUnicodeValue_": 4, - "j_": 6, - "//Two": 1, - "macros": 1, - "accomplish": 1, - "going": 1, - "backwards.": 1, - "This": 1, - "its": 1, - "pair.": 1, - "rfString_IterateB_Start": 1, - "characterPos_": 5, - "b_index_": 6, - "c_index_": 3, - "rfString_IterateB_End": 1, - "i_STRING1_": 2, - "i_STRING2_": 2, - "i_rfLMSX_WRAP2": 4, - "rfString_Find": 3, - "i_THISSTR_": 60, - "i_SEARCHSTR_": 26, - "i_OPTIONS_": 28, - "i_rfLMS_WRAP3": 4, - "i_RFI8_": 54, - "RF_SELECT_FUNC_IF_NARGGT": 10, - "i_NPSELECT_RF_STRING_FIND": 1, - "i_NPSELECT_RF_STRING_FIND1": 1, - "RF_COMPILE_ERROR": 33, - "i_NPSELECT_RF_STRING_FIND0": 1, - "RF_SELECT_FUNC": 10, - "i_SELECT_RF_STRING_FIND": 1, - "i_SELECT_RF_STRING_FIND2": 1, - "i_SELECT_RF_STRING_FIND3": 1, - "i_SELECT_RF_STRING_FIND1": 1, - "i_SELECT_RF_STRING_FIND0": 1, - "rfString_ToInt": 1, - "int32_t*": 1, - "rfString_ToDouble": 1, - "double*": 1, - "rfString_ScanfAfter": 2, - "i_AFTERSTR_": 8, - "i_FORMAT_": 2, - "i_VAR_": 2, - "i_rfLMSX_WRAP4": 11, - "i_NPSELECT_RF_STRING_COUNT": 1, - "i_NPSELECT_RF_STRING_COUNT1": 1, - "i_NPSELECT_RF_STRING_COUNT0": 1, - "i_SELECT_RF_STRING_COUNT": 1, - "i_SELECT_RF_STRING_COUNT2": 1, - "i_rfLMSX_WRAP3": 5, - "i_SELECT_RF_STRING_COUNT3": 1, - "i_SELECT_RF_STRING_COUNT1": 1, - "i_SELECT_RF_STRING_COUNT0": 1, - "rfString_Between": 3, - "i_rfString_Between": 4, - "i_NPSELECT_RF_STRING_BETWEEN": 1, - "i_NPSELECT_RF_STRING_BETWEEN1": 1, - "i_NPSELECT_RF_STRING_BETWEEN0": 1, - "i_SELECT_RF_STRING_BETWEEN": 1, - "i_SELECT_RF_STRING_BETWEEN4": 1, - "i_LEFTSTR_": 6, - "i_RIGHTSTR_": 6, - "i_RESULT_": 12, - "i_rfLMSX_WRAP5": 9, - "i_SELECT_RF_STRING_BETWEEN5": 1, - "i_SELECT_RF_STRING_BETWEEN3": 1, - "i_SELECT_RF_STRING_BETWEEN2": 1, - "i_SELECT_RF_STRING_BETWEEN1": 1, - "i_SELECT_RF_STRING_BETWEEN0": 1, - "i_NPSELECT_RF_STRING_BEFOREV": 1, - "i_NPSELECT_RF_STRING_BEFOREV1": 1, - "RF_SELECT_FUNC_IF_NARGGT2": 2, - "i_LIMSELECT_RF_STRING_BEFOREV": 1, - "i_NPSELECT_RF_STRING_BEFOREV0": 1, - "i_LIMSELECT_RF_STRING_BEFOREV1": 1, - "i_LIMSELECT_RF_STRING_BEFOREV0": 1, - "i_SELECT_RF_STRING_BEFOREV": 1, - "i_SELECT_RF_STRING_BEFOREV5": 1, - "i_ARG1_": 56, - "i_ARG2_": 56, - "i_ARG3_": 56, - "i_ARG4_": 56, - "i_RFUI8_": 28, - "i_SELECT_RF_STRING_BEFOREV6": 1, - "i_rfLMSX_WRAP6": 2, - "i_SELECT_RF_STRING_BEFOREV7": 1, - "i_rfLMSX_WRAP7": 2, - "i_SELECT_RF_STRING_BEFOREV8": 1, - "i_rfLMSX_WRAP8": 2, - "i_SELECT_RF_STRING_BEFOREV9": 1, - "i_rfLMSX_WRAP9": 2, - "i_SELECT_RF_STRING_BEFOREV10": 1, - "i_rfLMSX_WRAP10": 2, - "i_SELECT_RF_STRING_BEFOREV11": 1, - "i_rfLMSX_WRAP11": 2, - "i_SELECT_RF_STRING_BEFOREV12": 1, - "i_rfLMSX_WRAP12": 2, - "i_SELECT_RF_STRING_BEFOREV13": 1, - "i_rfLMSX_WRAP13": 2, - "i_SELECT_RF_STRING_BEFOREV14": 1, - "i_rfLMSX_WRAP14": 2, - "i_SELECT_RF_STRING_BEFOREV15": 1, - "i_rfLMSX_WRAP15": 2, - "i_SELECT_RF_STRING_BEFOREV16": 1, - "i_rfLMSX_WRAP16": 2, - "i_SELECT_RF_STRING_BEFOREV17": 1, - "i_rfLMSX_WRAP17": 2, - "i_SELECT_RF_STRING_BEFOREV18": 1, - "i_rfLMSX_WRAP18": 2, - "rfString_Before": 3, - "i_NPSELECT_RF_STRING_BEFORE": 1, - "i_NPSELECT_RF_STRING_BEFORE1": 1, - "i_NPSELECT_RF_STRING_BEFORE0": 1, - "i_SELECT_RF_STRING_BEFORE": 1, - "i_SELECT_RF_STRING_BEFORE3": 1, - "i_SELECT_RF_STRING_BEFORE4": 1, - "i_SELECT_RF_STRING_BEFORE2": 1, - "i_SELECT_RF_STRING_BEFORE1": 1, - "i_SELECT_RF_STRING_BEFORE0": 1, - "i_NPSELECT_RF_STRING_AFTER": 1, - "i_NPSELECT_RF_STRING_AFTER1": 1, - "i_NPSELECT_RF_STRING_AFTER0": 1, - "i_SELECT_RF_STRING_AFTER": 1, - "i_SELECT_RF_STRING_AFTER3": 1, - "i_OUTSTR_": 6, - "i_SELECT_RF_STRING_AFTER4": 1, - "i_SELECT_RF_STRING_AFTER2": 1, - "i_SELECT_RF_STRING_AFTER1": 1, - "i_SELECT_RF_STRING_AFTER0": 1, - "i_NPSELECT_RF_STRING_AFTERV": 1, - "i_NPSELECT_RF_STRING_AFTERV1": 1, - "i_LIMSELECT_RF_STRING_AFTERV": 1, - "i_NPSELECT_RF_STRING_AFTERV0": 1, - "i_LIMSELECT_RF_STRING_AFTERV1": 1, - "i_LIMSELECT_RF_STRING_AFTERV0": 1, - "i_SELECT_RF_STRING_AFTERV": 1, - "i_SELECT_RF_STRING_AFTERV5": 1, - "i_SELECT_RF_STRING_AFTERV6": 1, - "i_SELECT_RF_STRING_AFTERV7": 1, - "i_SELECT_RF_STRING_AFTERV8": 1, - "i_SELECT_RF_STRING_AFTERV9": 1, - "i_SELECT_RF_STRING_AFTERV10": 1, - "i_SELECT_RF_STRING_AFTERV11": 1, - "i_SELECT_RF_STRING_AFTERV12": 1, - "i_SELECT_RF_STRING_AFTERV13": 1, - "i_SELECT_RF_STRING_AFTERV14": 1, - "i_SELECT_RF_STRING_AFTERV15": 1, - "i_SELECT_RF_STRING_AFTERV16": 1, - "i_SELECT_RF_STRING_AFTERV17": 1, - "i_SELECT_RF_STRING_AFTERV18": 1, - "i_OTHERSTR_": 4, - "rfString_Prepend": 2, - "rfString_Remove": 3, - "i_NPSELECT_RF_STRING_REMOVE": 1, - "i_NPSELECT_RF_STRING_REMOVE1": 1, - "i_NPSELECT_RF_STRING_REMOVE0": 1, - "i_SELECT_RF_STRING_REMOVE": 1, - "i_SELECT_RF_STRING_REMOVE2": 1, - "i_REPSTR_": 16, - "i_RFUI32_": 8, - "i_SELECT_RF_STRING_REMOVE3": 1, - "i_NUMBER_": 12, - "i_SELECT_RF_STRING_REMOVE4": 1, - "i_SELECT_RF_STRING_REMOVE1": 1, - "i_SELECT_RF_STRING_REMOVE0": 1, - "rfString_KeepOnly": 2, - "I_KEEPSTR_": 2, - "rfString_Replace": 3, - "i_NPSELECT_RF_STRING_REPLACE": 1, - "i_NPSELECT_RF_STRING_REPLACE1": 1, - "i_NPSELECT_RF_STRING_REPLACE0": 1, - "i_SELECT_RF_STRING_REPLACE": 1, - "i_SELECT_RF_STRING_REPLACE3": 1, - "i_SELECT_RF_STRING_REPLACE4": 1, - "i_SELECT_RF_STRING_REPLACE5": 1, - "i_SELECT_RF_STRING_REPLACE2": 1, - "i_SELECT_RF_STRING_REPLACE1": 1, - "i_SELECT_RF_STRING_REPLACE0": 1, - "i_SUBSTR_": 6, - "rfString_Strip": 2, - "rfString_Fwrite": 2, - "i_NPSELECT_RF_STRING_FWRITE": 1, - "i_NPSELECT_RF_STRING_FWRITE1": 1, - "i_NPSELECT_RF_STRING_FWRITE0": 1, - "i_SELECT_RF_STRING_FWRITE": 1, - "i_SELECT_RF_STRING_FWRITE3": 1, - "i_STR_": 8, - "i_ENCODING_": 4, - "i_SELECT_RF_STRING_FWRITE2": 1, - "i_SELECT_RF_STRING_FWRITE1": 1, - "i_SELECT_RF_STRING_FWRITE0": 1, - "rfString_Fwrite_fUTF8": 1, - "closing": 1, - "#error": 4, - "Attempted": 1, - "manipulation": 1, - "flag": 1, - "off.": 1, - "Rebuild": 1, - "added": 1, - "you": 1, - "#endif//": 1, - "PY_SSIZE_T_CLEAN": 1, - "Py_PYTHON_H": 1, - "Python": 2, - "headers": 1, - "compile": 1, - "extensions": 1, - "please": 1, - "install": 1, - "development": 1, - "Python.": 1, - "PY_VERSION_HEX": 11, - "Cython": 1, - "requires": 1, - ".": 1, - "offsetof": 2, - "member": 2, - "type*": 1, - "WIN32": 2, - "MS_WINDOWS": 2, - "__stdcall": 2, - "__cdecl": 2, - "__fastcall": 2, - "DL_IMPORT": 2, - "DL_EXPORT": 2, - "PY_LONG_LONG": 5, - "LONG_LONG": 1, - "Py_HUGE_VAL": 2, - "HUGE_VAL": 1, - "PYPY_VERSION": 1, - "CYTHON_COMPILING_IN_PYPY": 3, - "CYTHON_COMPILING_IN_CPYTHON": 6, - "Py_ssize_t": 35, - "PY_SSIZE_T_MAX": 1, - "INT_MAX": 1, - "PY_SSIZE_T_MIN": 1, - "INT_MIN": 1, - "PY_FORMAT_SIZE_T": 1, - "CYTHON_FORMAT_SSIZE_T": 2, - "PyInt_FromSsize_t": 6, - "PyInt_FromLong": 3, - "PyInt_AsSsize_t": 3, - "__Pyx_PyInt_AsInt": 2, - "PyNumber_Index": 1, - "PyNumber_Check": 2, - "PyFloat_Check": 2, - "PyNumber_Int": 1, - "PyErr_Format": 4, - "PyExc_TypeError": 4, - "Py_TYPE": 7, - "tp_name": 4, - "PyObject*": 24, - "__Pyx_PyIndex_Check": 3, - "PyComplex_Check": 1, - "PyIndex_Check": 2, - "PyErr_WarnEx": 1, - "category": 2, - "stacklevel": 1, - "PyErr_Warn": 1, - "__PYX_BUILD_PY_SSIZE_T": 2, - "Py_REFCNT": 1, - "ob_refcnt": 1, - "ob_type": 7, - "Py_SIZE": 1, - "PyVarObject*": 1, - "ob_size": 1, - "PyVarObject_HEAD_INIT": 1, - "PyObject_HEAD_INIT": 1, - "PyType_Modified": 1, - "PyObject": 276, - "itemsize": 1, - "readonly": 1, - "ndim": 2, - "*shape": 1, - "*strides": 1, - "*suboffsets": 1, - "*internal": 1, - "Py_buffer": 6, - "PyBUF_SIMPLE": 1, - "PyBUF_WRITABLE": 3, - "PyBUF_FORMAT": 3, - "PyBUF_ND": 2, - "PyBUF_STRIDES": 6, - "PyBUF_C_CONTIGUOUS": 1, - "PyBUF_F_CONTIGUOUS": 1, - "PyBUF_ANY_CONTIGUOUS": 1, - "PyBUF_INDIRECT": 2, - "PyBUF_RECORDS": 1, - "PyBUF_FULL": 1, - "PY_MAJOR_VERSION": 13, - "__Pyx_BUILTIN_MODULE_NAME": 2, - "__Pyx_PyCode_New": 2, - "l": 7, - "fv": 4, - "cell": 4, - "fline": 4, - "lnos": 4, - "PyCode_New": 2, - "PY_MINOR_VERSION": 1, - "PyUnicode_FromString": 2, - "PyUnicode_Decode": 1, - "Py_TPFLAGS_CHECKTYPES": 1, - "Py_TPFLAGS_HAVE_INDEX": 1, - "Py_TPFLAGS_HAVE_NEWBUFFER": 1, - "PyUnicode_KIND": 1, - "CYTHON_PEP393_ENABLED": 2, - "__Pyx_PyUnicode_READY": 2, - "op": 8, - "PyUnicode_IS_READY": 1, - "_PyUnicode_Ready": 1, - "__Pyx_PyUnicode_GET_LENGTH": 2, - "PyUnicode_GET_LENGTH": 1, - "__Pyx_PyUnicode_READ_CHAR": 2, - "PyUnicode_READ_CHAR": 1, - "__Pyx_PyUnicode_READ": 2, - "PyUnicode_READ": 1, - "PyUnicode_GET_SIZE": 1, - "Py_UCS4": 2, - "PyUnicode_AS_UNICODE": 1, - "Py_UNICODE*": 1, - "PyBaseString_Type": 1, - "PyUnicode_Type": 2, - "PyStringObject": 2, - "PyUnicodeObject": 1, - "PyString_Type": 2, - "PyString_Check": 2, - "PyUnicode_Check": 1, - "PyString_CheckExact": 2, - "PyUnicode_CheckExact": 1, - "PyBytesObject": 1, - "PyBytes_Type": 1, - "PyBytes_Check": 1, - "PyBytes_CheckExact": 1, - "PyBytes_FromString": 2, - "PyString_FromString": 2, - "PyBytes_FromStringAndSize": 1, - "PyString_FromStringAndSize": 1, - "PyBytes_FromFormat": 1, - "PyString_FromFormat": 1, - "PyBytes_DecodeEscape": 1, - "PyString_DecodeEscape": 1, - "PyBytes_AsString": 2, - "PyString_AsString": 1, - "PyBytes_AsStringAndSize": 1, - "PyString_AsStringAndSize": 1, - "PyBytes_Size": 1, - "PyString_Size": 1, - "PyBytes_AS_STRING": 1, - "PyString_AS_STRING": 1, - "PyBytes_GET_SIZE": 1, - "PyString_GET_SIZE": 1, - "PyBytes_Repr": 1, - "PyString_Repr": 1, - "PyBytes_Concat": 1, - "PyString_Concat": 1, - "PyBytes_ConcatAndDel": 1, - "PyString_ConcatAndDel": 1, - "PySet_Check": 1, - "PyObject_TypeCheck": 3, - "PySet_Type": 2, - "PyFrozenSet_Check": 1, - "PyFrozenSet_Type": 1, - "PySet_CheckExact": 2, - "__Pyx_TypeCheck": 1, - "PyTypeObject": 25, - "PyIntObject": 1, - "PyLongObject": 2, - "PyInt_Type": 1, - "PyLong_Type": 1, - "PyInt_Check": 1, - "PyLong_Check": 1, - "PyInt_CheckExact": 1, - "PyLong_CheckExact": 1, - "PyInt_FromString": 1, - "PyLong_FromString": 1, - "PyInt_FromUnicode": 1, - "PyLong_FromUnicode": 1, - "PyLong_FromLong": 1, - "PyInt_FromSize_t": 1, - "PyLong_FromSize_t": 1, - "PyLong_FromSsize_t": 1, - "PyInt_AsLong": 2, - "PyLong_AsLong": 1, - "PyInt_AS_LONG": 1, - "PyLong_AS_LONG": 1, - "PyLong_AsSsize_t": 1, - "PyInt_AsUnsignedLongMask": 1, - "PyLong_AsUnsignedLongMask": 1, - "PyInt_AsUnsignedLongLongMask": 1, - "PyLong_AsUnsignedLongLongMask": 1, - "PyBoolObject": 1, - "Py_hash_t": 1, - "__Pyx_PyInt_FromHash_t": 2, - "__Pyx_PyInt_AsHash_t": 2, - "__Pyx_PySequence_GetSlice": 2, - "PySequence_GetSlice": 2, - "__Pyx_PySequence_SetSlice": 2, - "PySequence_SetSlice": 2, - "__Pyx_PySequence_DelSlice": 2, - "PySequence_DelSlice": 2, - "PyErr_SetString": 3, - "PyExc_SystemError": 3, - "tp_as_mapping": 3, - "PyMethod_New": 2, - "func": 3, - "klass": 1, - "PyInstanceMethod_New": 1, - "__Pyx_GetAttrString": 2, - "PyObject_GetAttrString": 2, - "__Pyx_SetAttrString": 2, - "PyObject_SetAttrString": 2, - "__Pyx_DelAttrString": 2, - "PyObject_DelAttrString": 2, - "__Pyx_NAMESTR": 2, - "__Pyx_DOCSTR": 2, - "__Pyx_PyNumber_Divide": 2, - "y": 14, - "PyNumber_TrueDivide": 1, - "__Pyx_PyNumber_InPlaceDivide": 2, - "PyNumber_InPlaceTrueDivide": 1, - "PyNumber_Divide": 1, - "PyNumber_InPlaceDivide": 1, - "__PYX_EXTERN_C": 3, - "_USE_MATH_DEFINES": 1, - "__PYX_HAVE__sklearn__linear_model__sgd_fast": 1, - "__PYX_HAVE_API__sklearn__linear_model__sgd_fast": 1, - "_OPENMP": 1, - "": 1, - "PYREX_WITHOUT_ASSERTIONS": 1, - "CYTHON_WITHOUT_ASSERTIONS": 1, - "CYTHON_INLINE": 65, - "__inline__": 1, - "__inline": 1, - "__STDC_VERSION__": 2, - "L": 1, - "CYTHON_UNUSED": 14, - "**p": 1, - "is_unicode": 1, - "is_str": 1, - "intern": 1, - "__Pyx_StringTabEntry": 2, - "__Pyx_PyBytes_FromUString": 1, - "__Pyx_PyBytes_AsUString": 1, - "__Pyx_Owned_Py_None": 1, - "Py_INCREF": 10, - "Py_None": 8, - "__Pyx_PyBool_FromLong": 1, - "Py_True": 2, - "Py_False": 2, - "__Pyx_PyObject_IsTrue": 1, - "__Pyx_PyNumber_Int": 1, - "__Pyx_PyIndex_AsSsize_t": 1, - "__Pyx_PyInt_FromSize_t": 1, - "__Pyx_PyInt_AsSize_t": 1, - "__pyx_PyFloat_AsDouble": 12, - "PyFloat_CheckExact": 1, - "PyFloat_AS_DOUBLE": 1, - "PyFloat_AsDouble": 2, - "__pyx_PyFloat_AsFloat": 1, - "__builtin_expect": 2, - "*__pyx_m": 1, - "*__pyx_b": 1, - "*__pyx_empty_tuple": 1, - "*__pyx_empty_bytes": 1, - "__pyx_lineno": 58, - "__pyx_clineno": 58, - "__pyx_cfilenm": 1, - "__FILE__": 4, - "*__pyx_filename": 7, - "CYTHON_CCOMPLEX": 12, - "_Complex_I": 3, - "": 1, - "": 1, - "__sun__": 1, - "fj": 1, - "*__pyx_f": 1, - "IS_UNSIGNED": 1, - "__Pyx_StructField_": 2, - "__PYX_BUF_FLAGS_PACKED_STRUCT": 1, - "__Pyx_StructField_*": 1, - "fields": 1, - "arraysize": 1, - "typegroup": 1, - "is_unsigned": 1, - "__Pyx_TypeInfo": 2, - "__Pyx_TypeInfo*": 2, - "offset": 1, - "__Pyx_StructField": 2, - "__Pyx_StructField*": 1, - "field": 1, - "parent_offset": 1, - "__Pyx_BufFmt_StackElem": 1, - "root": 1, - "__Pyx_BufFmt_StackElem*": 2, - "fmt_offset": 1, - "new_count": 1, - "enc_count": 1, - "struct_alignment": 1, - "is_complex": 1, - "enc_type": 1, - "new_packmode": 1, - "enc_packmode": 1, - "is_valid_array": 1, - "__Pyx_BufFmt_Context": 1, - "npy_int8": 1, - "__pyx_t_5numpy_int8_t": 1, - "npy_int16": 1, - "__pyx_t_5numpy_int16_t": 1, - "npy_int32": 1, - "__pyx_t_5numpy_int32_t": 4, - "npy_int64": 1, - "__pyx_t_5numpy_int64_t": 1, - "npy_uint8": 1, - "__pyx_t_5numpy_uint8_t": 1, - "npy_uint16": 1, - "__pyx_t_5numpy_uint16_t": 1, - "npy_uint32": 1, - "__pyx_t_5numpy_uint32_t": 1, - "npy_uint64": 1, - "__pyx_t_5numpy_uint64_t": 1, - "npy_float32": 1, - "__pyx_t_5numpy_float32_t": 1, - "npy_float64": 1, - "__pyx_t_5numpy_float64_t": 4, - "npy_long": 1, - "__pyx_t_5numpy_int_t": 1, - "npy_longlong": 2, - "__pyx_t_5numpy_long_t": 1, - "__pyx_t_5numpy_longlong_t": 1, - "npy_ulong": 1, - "__pyx_t_5numpy_uint_t": 1, - "npy_ulonglong": 2, - "__pyx_t_5numpy_ulong_t": 1, - "__pyx_t_5numpy_ulonglong_t": 1, - "npy_intp": 1, - "__pyx_t_5numpy_intp_t": 1, - "npy_uintp": 1, - "__pyx_t_5numpy_uintp_t": 1, - "npy_double": 2, - "__pyx_t_5numpy_float_t": 1, - "__pyx_t_5numpy_double_t": 1, - "npy_longdouble": 1, - "__pyx_t_5numpy_longdouble_t": 1, - "__pyx_t_7sklearn_5utils_13weight_vector_DOUBLE": 2, - "__pyx_t_7sklearn_5utils_13weight_vector_INTEGER": 1, - "__pyx_t_7sklearn_5utils_11seq_dataset_DOUBLE": 7, - "__pyx_t_7sklearn_5utils_11seq_dataset_INTEGER": 7, - "__pyx_t_7sklearn_12linear_model_8sgd_fast_DOUBLE": 4, - "__pyx_t_7sklearn_12linear_model_8sgd_fast_INTEGER": 3, - "std": 8, - "complex": 2, - "__pyx_t_float_complex": 27, - "_Complex": 2, - "real": 2, - "imag": 2, - "__pyx_t_double_complex": 27, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_LossFunction": 15, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_Regression": 11, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_Huber": 6, - "__pyx_obj_7sklearn_5utils_11seq_dataset_SequentialDataset": 5, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_EpsilonInsensitive": 6, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_Classification": 7, - "__pyx_obj_7sklearn_5utils_11seq_dataset_CSRDataset": 2, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_Log": 5, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_Hinge": 6, - "__pyx_obj_7sklearn_5utils_11seq_dataset_ArrayDataset": 2, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_SquaredHinge": 6, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_ModifiedHuber": 5, - "__pyx_obj_7sklearn_5utils_13weight_vector_WeightVector": 3, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_SquaredLoss": 5, - "__pyx_obj_7sklearn_12linear_model_8sgd_fast_SquaredEpsilonInsensitive": 6, - "npy_cfloat": 1, - "__pyx_t_5numpy_cfloat_t": 1, - "npy_cdouble": 2, - "__pyx_t_5numpy_cdouble_t": 1, - "npy_clongdouble": 1, - "__pyx_t_5numpy_clongdouble_t": 1, - "__pyx_t_5numpy_complex_t": 1, - "PyObject_HEAD": 3, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_LossFunction": 5, - "*__pyx_vtab": 3, - "__pyx_base": 18, - "__pyx_vtabstruct_7sklearn_5utils_11seq_dataset_SequentialDataset": 4, - "n_samples": 1, - "epsilon": 2, - "current_index": 2, - "stride": 2, - "*X_data_ptr": 2, - "*X_indptr_ptr": 1, - "*X_indices_ptr": 1, - "*Y_data_ptr": 2, - "PyArrayObject": 8, - "*feature_indices": 2, - "*feature_indices_ptr": 2, - "*index": 2, - "*index_data_ptr": 2, - "*sample_weight_data": 2, - "threshold": 2, - "n_features": 2, - "__pyx_vtabstruct_7sklearn_5utils_13weight_vector_WeightVector": 3, - "*w_data_ptr": 1, - "wscale": 1, - "sq_norm": 1, - "*__pyx_vtabptr_7sklearn_5utils_11seq_dataset_SequentialDataset": 1, - "__pyx_vtabstruct_7sklearn_5utils_11seq_dataset_ArrayDataset": 2, - "*__pyx_vtabptr_7sklearn_5utils_11seq_dataset_ArrayDataset": 1, - "__pyx_vtabstruct_7sklearn_5utils_11seq_dataset_CSRDataset": 2, - "*__pyx_vtabptr_7sklearn_5utils_11seq_dataset_CSRDataset": 1, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_EpsilonInsensitive": 2, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_Regression": 3, - "*__pyx_vtabptr_7sklearn_12linear_model_8sgd_fast_EpsilonInsensitive": 1, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_SquaredHinge": 2, - "*__pyx_vtabptr_7sklearn_12linear_model_8sgd_fast_SquaredHinge": 1, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_Huber": 2, - "*__pyx_vtabptr_7sklearn_12linear_model_8sgd_fast_Huber": 1, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_Hinge": 2, - "__pyx_vtabstruct_7sklearn_12linear_model_8sgd_fast_Classification": 1, - "*__pyx_vtabptr_7sklearn_12linear_model_8sgd_fast_Hinge": 1, - "*__pyx_vtabptr_7sklearn_5utils_13weight_vector_WeightVector": 1, - "CYTHON_REFNANNY": 3, - "__Pyx_RefNannyAPIStruct": 3, - "*__Pyx_RefNanny": 1, - "*__Pyx_RefNannyImportAPI": 1, - "*modname": 1, - "__Pyx_RefNannyDeclarations": 11, - "*__pyx_refnanny": 1, - "WITH_THREAD": 1, - "__Pyx_RefNannySetupContext": 12, - "acquire_gil": 4, - "PyGILState_STATE": 1, - "__pyx_gilstate_save": 2, - "PyGILState_Ensure": 1, - "__pyx_refnanny": 8, - "__Pyx_RefNanny": 8, - "SetupContext": 3, - "PyGILState_Release": 1, - "__Pyx_RefNannyFinishContext": 14, - "FinishContext": 1, - "__Pyx_INCREF": 6, - "INCREF": 1, - "__Pyx_DECREF": 20, - "DECREF": 1, - "__Pyx_GOTREF": 24, - "GOTREF": 1, - "__Pyx_GIVEREF": 9, - "GIVEREF": 1, - "__Pyx_XINCREF": 2, - "__Pyx_XDECREF": 20, - "__Pyx_XGOTREF": 2, - "__Pyx_XGIVEREF": 5, - "Py_DECREF": 2, - "Py_XINCREF": 1, - "Py_XDECREF": 1, - "__Pyx_CLEAR": 1, - "__Pyx_XCLEAR": 1, - "*__Pyx_GetName": 1, - "__Pyx_ErrRestore": 1, - "*type": 4, - "*tb": 2, - "__Pyx_ErrFetch": 1, - "**type": 1, - "**value": 1, - "**tb": 1, - "__Pyx_Raise": 4, - "*cause": 1, - "__Pyx_RaiseArgtupleInvalid": 7, - "func_name": 2, - "num_min": 1, - "num_max": 1, - "num_found": 1, - "__Pyx_RaiseDoubleKeywordsError": 1, - "kw_name": 1, - "__Pyx_ParseOptionalKeywords": 4, - "*kwds": 1, - "**argnames": 1, - "*kwds2": 1, - "*values": 1, - "num_pos_args": 1, - "function_name": 1, - "__Pyx_ArgTypeTest": 1, - "none_allowed": 1, - "__Pyx_GetBufferAndValidate": 1, - "Py_buffer*": 2, - "dtype": 1, - "nd": 1, - "cast": 1, - "__Pyx_SafeReleaseBuffer": 1, - "__Pyx_TypeTest": 1, - "__Pyx_RaiseBufferFallbackError": 1, - "*__Pyx_GetItemInt_Generic": 1, - "*r": 7, - "PyObject_GetItem": 1, - "__Pyx_GetItemInt_List": 1, - "to_py_func": 6, - "__Pyx_GetItemInt_List_Fast": 1, - "__Pyx_GetItemInt_Generic": 6, - "*__Pyx_GetItemInt_List_Fast": 1, - "PyList_GET_SIZE": 5, - "PyList_GET_ITEM": 3, - "PySequence_GetItem": 3, - "__Pyx_GetItemInt_Tuple": 1, - "__Pyx_GetItemInt_Tuple_Fast": 1, - "*__Pyx_GetItemInt_Tuple_Fast": 1, - "PyTuple_GET_SIZE": 14, - "PyTuple_GET_ITEM": 15, - "__Pyx_GetItemInt": 1, - "__Pyx_GetItemInt_Fast": 2, - "PyList_CheckExact": 1, - "PyTuple_CheckExact": 1, - "PySequenceMethods": 1, - "*m": 1, - "tp_as_sequence": 1, - "sq_item": 2, - "sq_length": 2, - "PySequence_Check": 1, - "__Pyx_RaiseTooManyValuesError": 1, - "expected": 2, - "__Pyx_RaiseNeedMoreValuesError": 1, - "__Pyx_RaiseNoneNotIterableError": 1, - "__Pyx_IterFinish": 1, - "__Pyx_IternextUnpackEndCheck": 1, - "*retval": 1, - "shape": 1, - "strides": 1, - "suboffsets": 1, - "__Pyx_Buf_DimInfo": 2, - "pybuffer": 1, - "__Pyx_Buffer": 2, - "*rcbuffer": 1, - "diminfo": 1, - "__Pyx_LocalBuf_ND": 1, - "__Pyx_GetBuffer": 2, - "*view": 2, - "__Pyx_ReleaseBuffer": 2, - "PyObject_GetBuffer": 1, - "PyBuffer_Release": 1, - "__Pyx_zeros": 1, - "__Pyx_minusones": 1, - "*__Pyx_Import": 1, - "*from_list": 1, - "__Pyx_RaiseImportError": 1, - "__Pyx_Print": 1, - "__pyx_print": 1, - "__pyx_print_kwargs": 1, - "__Pyx_PrintOne": 1, - "__Pyx_CREAL": 4, - ".real": 3, - "__Pyx_CIMAG": 4, - ".imag": 3, - "__real__": 1, - "__imag__": 1, - "__Pyx_SET_CREAL": 2, - "__Pyx_SET_CIMAG": 2, - "__pyx_t_float_complex_from_parts": 1, - "__Pyx_c_eqf": 2, - "__Pyx_c_sumf": 2, - "__Pyx_c_difff": 2, - "__Pyx_c_prodf": 2, - "__Pyx_c_quotf": 2, - "__Pyx_c_negf": 2, - "__Pyx_c_is_zerof": 3, - "__Pyx_c_conjf": 3, - "conj": 3, - "__Pyx_c_absf": 3, - "abs": 2, - "__Pyx_c_powf": 3, - "pow": 2, - "conjf": 1, - "cabsf": 1, - "cpowf": 1, - "__pyx_t_double_complex_from_parts": 1, - "__Pyx_c_eq": 2, - "__Pyx_c_sum": 2, - "__Pyx_c_diff": 2, - "__Pyx_c_prod": 2, - "__Pyx_c_quot": 2, - "__Pyx_c_neg": 2, - "__Pyx_c_is_zero": 3, - "__Pyx_c_conj": 3, - "__Pyx_c_abs": 3, - "__Pyx_c_pow": 3, - "cabs": 1, - "cpow": 1, - "__Pyx_PyInt_AsUnsignedChar": 1, - "__Pyx_PyInt_AsUnsignedShort": 1, - "__Pyx_PyInt_AsUnsignedInt": 1, - "__Pyx_PyInt_AsChar": 1, - "__Pyx_PyInt_AsShort": 1, - "signed": 5, - "__Pyx_PyInt_AsSignedChar": 1, - "__Pyx_PyInt_AsSignedShort": 1, - "__Pyx_PyInt_AsSignedInt": 1, - "__Pyx_PyInt_AsLongDouble": 1, - "__Pyx_PyInt_AsUnsignedLong": 1, - "__Pyx_PyInt_AsUnsignedLongLong": 1, - "__Pyx_PyInt_AsLong": 1, - "__Pyx_PyInt_AsLongLong": 1, - "__Pyx_PyInt_AsSignedLong": 1, - "__Pyx_PyInt_AsSignedLongLong": 1, - "__Pyx_WriteUnraisable": 4, - "clineno": 1, - "lineno": 1, - "*filename": 2, - "__Pyx_check_binary_version": 1, - "__Pyx_SetVtable": 1, - "*vtable": 1, - "__Pyx_PyIdentifier_FromString": 3, - "*__Pyx_ImportModule": 1, - "*__Pyx_ImportType": 1, - "*module_name": 1, - "*class_name": 1, - "__Pyx_GetVtable": 1, - "code_line": 4, - "PyCodeObject*": 2, - "code_object": 2, - "__Pyx_CodeObjectCacheEntry": 1, - "__Pyx_CodeObjectCache": 2, - "max_count": 1, - "__Pyx_CodeObjectCacheEntry*": 2, - "entries": 2, - "__pyx_code_cache": 1, - "__pyx_bisect_code_objects": 1, - "PyCodeObject": 1, - "*__pyx_find_code_object": 1, - "__pyx_insert_code_object": 1, - "__Pyx_AddTraceback": 7, - "*funcname": 1, - "c_line": 1, - "py_line": 1, - "__Pyx_InitStrings": 1, - "*__pyx_ptype_7cpython_4type_type": 1, - "*__pyx_ptype_5numpy_dtype": 1, - "*__pyx_ptype_5numpy_flatiter": 1, - "*__pyx_ptype_5numpy_broadcast": 1, - "*__pyx_ptype_5numpy_ndarray": 1, - "*__pyx_ptype_5numpy_ufunc": 1, - "*__pyx_f_5numpy__util_dtypestring": 1, - "PyArray_Descr": 1, - "*__pyx_ptype_7sklearn_5utils_13weight_vector_WeightVector": 1, - "*__pyx_ptype_7sklearn_5utils_11seq_dataset_SequentialDataset": 1, - "*__pyx_ptype_7sklearn_5utils_11seq_dataset_ArrayDataset": 1, - "*__pyx_ptype_7sklearn_5utils_11seq_dataset_CSRDataset": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_LossFunction": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_Regression": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_Classification": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_ModifiedHuber": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_Hinge": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_SquaredHinge": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_Log": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_SquaredLoss": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_Huber": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_EpsilonInsensitive": 1, - "*__pyx_ptype_7sklearn_12linear_model_8sgd_fast_SquaredEpsilonInsensitive": 1, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_max": 1, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_min": 1, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_sqnorm": 1, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_l1penalty": 1, - "__Pyx_TypeInfo_nn___pyx_t_7sklearn_12linear_model_8sgd_fast_DOUBLE": 1, - "__Pyx_MODULE_NAME": 1, - "__pyx_module_is_main_sklearn__linear_model__sgd_fast": 1, - "*__pyx_builtin_NotImplementedError": 1, - "*__pyx_builtin_range": 1, - "*__pyx_builtin_ValueError": 1, - "*__pyx_builtin_RuntimeError": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_12LossFunction_loss": 2, - "*__pyx_v_self": 52, - "__pyx_v_p": 46, - "__pyx_v_y": 46, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_12LossFunction_2dloss": 2, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_10Regression_loss": 2, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_10Regression_2dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_14Classification_loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_14Classification_2dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_13ModifiedHuber_loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_13ModifiedHuber_2dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_13ModifiedHuber_4__reduce__": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Hinge___init__": 1, - "__pyx_v_threshold": 2, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Hinge_2loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Hinge_4dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Hinge_6__reduce__": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_12SquaredHinge___init__": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_12SquaredHinge_2loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_12SquaredHinge_4dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_12SquaredHinge_6__reduce__": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_3Log_loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_3Log_2dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_3Log_4__reduce__": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_11SquaredLoss_loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_11SquaredLoss_2dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_11SquaredLoss_4__reduce__": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Huber___init__": 1, - "__pyx_v_c": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Huber_2loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Huber_4dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_5Huber_6__reduce__": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_18EpsilonInsensitive___init__": 1, - "__pyx_v_epsilon": 2, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_18EpsilonInsensitive_2loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_18EpsilonInsensitive_4dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_18EpsilonInsensitive_6__reduce__": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_25SquaredEpsilonInsensitive___init__": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_25SquaredEpsilonInsensitive_2loss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_25SquaredEpsilonInsensitive_4dloss": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_25SquaredEpsilonInsensitive_6__reduce__": 1, - "*__pyx_pf_7sklearn_12linear_model_8sgd_fast_plain_sgd": 1, - "*__pyx_self": 1, - "*__pyx_v_weights": 1, - "__pyx_v_intercept": 1, - "*__pyx_v_loss": 1, - "__pyx_v_penalty_type": 1, - "__pyx_v_alpha": 1, - "__pyx_v_C": 1, - "__pyx_v_rho": 1, - "*__pyx_v_dataset": 1, - "__pyx_v_n_iter": 1, - "__pyx_v_fit_intercept": 1, - "__pyx_v_verbose": 1, - "__pyx_v_shuffle": 1, - "*__pyx_v_seed": 1, - "__pyx_v_weight_pos": 1, - "__pyx_v_weight_neg": 1, - "__pyx_v_learning_rate": 1, - "__pyx_v_eta0": 1, - "__pyx_v_power_t": 1, - "__pyx_v_t": 1, - "__pyx_v_intercept_decay": 1, - "__pyx_pf_5numpy_7ndarray___getbuffer__": 1, - "*__pyx_v_info": 2, - "__pyx_v_flags": 1, - "__pyx_pf_5numpy_7ndarray_2__releasebuffer__": 1, - "__pyx_k_1": 1, - "__pyx_k_2": 1, - "__pyx_k_3": 1, - "__pyx_k_4": 1, - "__pyx_k_6": 1, - "__pyx_k_8": 1, - "__pyx_k_10": 1, - "__pyx_k_12": 1, - "__pyx_k_13": 1, - "__pyx_k_16": 1, - "__pyx_k_20": 1, - "__pyx_k_21": 1, - "__pyx_k__B": 1, - "__pyx_k__C": 1, - "__pyx_k__H": 1, - "__pyx_k__I": 1, - "__pyx_k__L": 1, - "__pyx_k__O": 1, - "__pyx_k__Q": 1, - "__pyx_k__b": 1, - "__pyx_k__c": 1, - "__pyx_k__d": 1, - "__pyx_k__f": 1, - "__pyx_k__g": 1, - "__pyx_k__h": 1, - "__pyx_k__i": 1, - "__pyx_k__l": 1, - "__pyx_k__p": 1, - "__pyx_k__q": 1, - "__pyx_k__t": 1, - "__pyx_k__u": 1, - "__pyx_k__w": 1, - "__pyx_k__y": 1, - "__pyx_k__Zd": 1, - "__pyx_k__Zf": 1, - "__pyx_k__Zg": 1, - "__pyx_k__np": 1, - "__pyx_k__any": 1, - "__pyx_k__eta": 1, - "__pyx_k__rho": 1, - "__pyx_k__sys": 1, - "__pyx_k__eta0": 1, - "__pyx_k__loss": 1, - "__pyx_k__seed": 1, - "__pyx_k__time": 1, - "__pyx_k__xnnz": 1, - "__pyx_k__alpha": 1, - "__pyx_k__count": 1, - "__pyx_k__dloss": 1, - "__pyx_k__dtype": 1, - "__pyx_k__epoch": 1, - "__pyx_k__isinf": 1, - "__pyx_k__isnan": 1, - "__pyx_k__numpy": 1, - "__pyx_k__order": 1, - "__pyx_k__range": 1, - "__pyx_k__shape": 1, - "__pyx_k__zeros": 1, - "__pyx_k__n_iter": 1, - "__pyx_k__update": 1, - "__pyx_k__dataset": 1, - "__pyx_k__epsilon": 1, - "__pyx_k__float64": 1, - "__pyx_k__nonzero": 1, - "__pyx_k__power_t": 1, - "__pyx_k__shuffle": 1, - "__pyx_k__sumloss": 1, - "__pyx_k__t_start": 1, - "__pyx_k__verbose": 1, - "__pyx_k__weights": 1, - "__pyx_k____main__": 1, - "__pyx_k____test__": 1, - "__pyx_k__is_hinge": 1, - "__pyx_k__intercept": 1, - "__pyx_k__n_samples": 1, - "__pyx_k__plain_sgd": 1, - "__pyx_k__threshold": 1, - "__pyx_k__x_ind_ptr": 1, - "__pyx_k__ValueError": 1, - "__pyx_k__n_features": 1, - "__pyx_k__q_data_ptr": 1, - "__pyx_k__weight_neg": 1, - "__pyx_k__weight_pos": 1, - "__pyx_k__x_data_ptr": 1, - "__pyx_k__RuntimeError": 1, - "__pyx_k__class_weight": 1, - "__pyx_k__penalty_type": 1, - "__pyx_k__fit_intercept": 1, - "__pyx_k__learning_rate": 1, - "__pyx_k__sample_weight": 1, - "__pyx_k__intercept_decay": 1, - "__pyx_k__NotImplementedError": 1, - "*__pyx_kp_s_1": 1, - "*__pyx_kp_u_10": 1, - "*__pyx_kp_u_12": 1, - "*__pyx_kp_u_13": 1, - "*__pyx_kp_u_16": 1, - "*__pyx_kp_s_2": 1, - "*__pyx_kp_s_20": 1, - "*__pyx_n_s_21": 1, - "*__pyx_kp_s_3": 1, - "*__pyx_kp_s_4": 1, - "*__pyx_kp_u_6": 1, - "*__pyx_kp_u_8": 1, - "*__pyx_n_s__C": 1, - "*__pyx_n_s__NotImplementedError": 1, - "*__pyx_n_s__RuntimeError": 1, - "*__pyx_n_s__ValueError": 1, - "*__pyx_n_s____main__": 1, - "*__pyx_n_s____test__": 1, - "*__pyx_n_s__alpha": 1, - "*__pyx_n_s__any": 1, - "*__pyx_n_s__c": 1, - "*__pyx_n_s__class_weight": 1, - "*__pyx_n_s__count": 1, - "*__pyx_n_s__dataset": 1, - "*__pyx_n_s__dloss": 1, - "*__pyx_n_s__dtype": 1, - "*__pyx_n_s__epoch": 1, - "*__pyx_n_s__epsilon": 1, - "*__pyx_n_s__eta": 1, - "*__pyx_n_s__eta0": 1, - "*__pyx_n_s__fit_intercept": 1, - "*__pyx_n_s__float64": 1, - "*__pyx_n_s__i": 1, - "*__pyx_n_s__intercept": 1, - "*__pyx_n_s__intercept_decay": 1, - "*__pyx_n_s__is_hinge": 1, - "*__pyx_n_s__isinf": 1, - "*__pyx_n_s__isnan": 1, - "*__pyx_n_s__learning_rate": 1, - "*__pyx_n_s__loss": 1, - "*__pyx_n_s__n_features": 1, - "*__pyx_n_s__n_iter": 1, - "*__pyx_n_s__n_samples": 1, - "*__pyx_n_s__nonzero": 1, - "*__pyx_n_s__np": 1, - "*__pyx_n_s__numpy": 1, - "*__pyx_n_s__order": 1, - "*__pyx_n_s__p": 1, - "*__pyx_n_s__penalty_type": 1, - "*__pyx_n_s__plain_sgd": 1, - "*__pyx_n_s__power_t": 1, - "*__pyx_n_s__q": 1, - "*__pyx_n_s__q_data_ptr": 1, - "*__pyx_n_s__range": 1, - "*__pyx_n_s__rho": 1, - "*__pyx_n_s__sample_weight": 1, - "*__pyx_n_s__seed": 1, - "*__pyx_n_s__shape": 1, - "*__pyx_n_s__shuffle": 1, - "*__pyx_n_s__sumloss": 1, - "*__pyx_n_s__sys": 1, - "*__pyx_n_s__t": 1, - "*__pyx_n_s__t_start": 1, - "*__pyx_n_s__threshold": 1, - "*__pyx_n_s__time": 1, - "*__pyx_n_s__u": 1, - "*__pyx_n_s__update": 1, - "*__pyx_n_s__verbose": 1, - "*__pyx_n_s__w": 1, - "*__pyx_n_s__weight_neg": 1, - "*__pyx_n_s__weight_pos": 1, - "*__pyx_n_s__weights": 1, - "*__pyx_n_s__x_data_ptr": 1, - "*__pyx_n_s__x_ind_ptr": 1, - "*__pyx_n_s__xnnz": 1, - "*__pyx_n_s__y": 1, - "*__pyx_n_s__zeros": 1, - "*__pyx_int_15": 1, - "*__pyx_k_tuple_5": 1, - "*__pyx_k_tuple_7": 1, - "*__pyx_k_tuple_9": 1, - "*__pyx_k_tuple_11": 1, - "*__pyx_k_tuple_14": 1, - "*__pyx_k_tuple_15": 1, - "*__pyx_k_tuple_17": 1, - "*__pyx_k_tuple_18": 1, - "*__pyx_k_codeobj_19": 1, - "*__pyx_pw_7sklearn_12linear_model_8sgd_fast_12LossFunction_1loss": 3, - "*__pyx_args": 9, - "*__pyx_kwds": 9, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_12LossFunction_loss": 1, - "__pyx_skip_dispatch": 6, - "__pyx_r": 39, - "*__pyx_t_1": 6, - "*__pyx_t_2": 3, - "*__pyx_t_3": 3, - "*__pyx_t_4": 3, - "__pyx_t_5": 12, - "__pyx_v_self": 15, - "tp_dictoffset": 3, - "__pyx_t_1": 69, - "PyObject_GetAttr": 3, - "__pyx_n_s__loss": 2, - "__pyx_filename": 51, - "__pyx_f": 42, - "__pyx_L1_error": 33, - "PyCFunction_Check": 3, - "PyCFunction_GET_FUNCTION": 3, - "PyCFunction": 3, - "__pyx_pw_7sklearn_12linear_model_8sgd_fast_12LossFunction_1loss": 1, - "__pyx_t_2": 21, - "PyFloat_FromDouble": 9, - "__pyx_t_3": 39, - "__pyx_t_4": 27, - "PyTuple_New": 3, - "PyTuple_SET_ITEM": 6, - "PyObject_Call": 6, - "PyErr_Occurred": 9, - "__pyx_L0": 18, - "__pyx_builtin_NotImplementedError": 3, - "__pyx_empty_tuple": 3, - "__pyx_doc_7sklearn_12linear_model_8sgd_fast_12LossFunction_loss": 1, - "*__pyx_r": 6, - "**__pyx_pyargnames": 3, - "__pyx_n_s__p": 6, - "__pyx_n_s__y": 6, - "values": 30, - "__pyx_kwds": 15, - "kw_args": 15, - "pos_args": 12, - "__pyx_args": 21, - "__pyx_L5_argtuple_error": 12, - "PyDict_Size": 3, - "PyDict_GetItem": 6, - "__pyx_L3_error": 18, - "__pyx_pyargnames": 3, - "__pyx_L4_argument_unpacking_done": 6, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_12LossFunction_loss": 1, - "__pyx_vtab": 2, - "loss": 1, - "*__pyx_pw_7sklearn_12linear_model_8sgd_fast_12LossFunction_3dloss": 3, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_12LossFunction_dloss": 1, - "__pyx_n_s__dloss": 1, - "__pyx_pw_7sklearn_12linear_model_8sgd_fast_12LossFunction_3dloss": 1, - "__pyx_doc_7sklearn_12linear_model_8sgd_fast_12LossFunction_2dloss": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_12LossFunction_2dloss": 1, - "dloss": 1, - "*__pyx_pw_7sklearn_12linear_model_8sgd_fast_10Regression_1loss": 3, - "__pyx_f_7sklearn_12linear_model_8sgd_fast_10Regression_loss": 1, - "__pyx_pw_7sklearn_12linear_model_8sgd_fast_10Regression_1loss": 1, - "__pyx_pf_7sklearn_12linear_model_8sgd_fast_10Regression_loss": 1, - "__pyx_base.__pyx_vtab": 1, - "__pyx_base.loss": 1, - "syscalldef": 1, - "syscalldefs": 1, - "SYSCALL_OR_NUM": 3, - "SYS_restart_syscall": 1, - "MAKE_UINT16": 3, - "SYS_exit": 1, - "SYS_fork": 1, - "__wglew_h__": 2, - "__WGLEW_H__": 1, - "__wglext_h_": 2, - "wglext.h": 1, - "wglew.h": 1, - "WINAPI": 119, - "": 1, - "GLEW_STATIC": 1, - "WGL_3DFX_multisample": 2, - "WGL_SAMPLE_BUFFERS_3DFX": 1, - "WGL_SAMPLES_3DFX": 1, - "WGLEW_3DFX_multisample": 1, - "WGLEW_GET_VAR": 49, - "__WGLEW_3DFX_multisample": 2, - "WGL_3DL_stereo_control": 2, - "WGL_STEREO_EMITTER_ENABLE_3DL": 1, - "WGL_STEREO_EMITTER_DISABLE_3DL": 1, - "WGL_STEREO_POLARITY_NORMAL_3DL": 1, - "WGL_STEREO_POLARITY_INVERT_3DL": 1, - "BOOL": 84, - "PFNWGLSETSTEREOEMITTERSTATE3DLPROC": 2, - "HDC": 65, - "hDC": 33, - "UINT": 30, - "uState": 1, - "wglSetStereoEmitterState3DL": 1, - "WGLEW_GET_FUN": 120, - "__wglewSetStereoEmitterState3DL": 2, - "WGLEW_3DL_stereo_control": 1, - "__WGLEW_3DL_stereo_control": 2, - "WGL_AMD_gpu_association": 2, - "WGL_GPU_VENDOR_AMD": 1, - "F00": 1, - "WGL_GPU_RENDERER_STRING_AMD": 1, - "F01": 1, - "WGL_GPU_OPENGL_VERSION_STRING_AMD": 1, - "F02": 1, - "WGL_GPU_FASTEST_TARGET_GPUS_AMD": 1, - "A2": 2, - "WGL_GPU_RAM_AMD": 1, - "A3": 2, - "WGL_GPU_CLOCK_AMD": 1, - "A4": 2, - "WGL_GPU_NUM_PIPES_AMD": 1, - "A5": 3, - "WGL_GPU_NUM_SIMD_AMD": 1, - "A6": 2, - "WGL_GPU_NUM_RB_AMD": 1, - "A7": 2, - "WGL_GPU_NUM_SPI_AMD": 1, - "A8": 2, - "VOID": 6, - "PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC": 2, - "HGLRC": 14, - "dstCtx": 1, - "GLint": 18, - "srcX0": 1, - "srcY0": 1, - "srcX1": 1, - "srcY1": 1, - "dstX0": 1, - "dstY0": 1, - "dstX1": 1, - "dstY1": 1, - "GLbitfield": 1, - "mask": 1, - "GLenum": 8, - "filter": 1, - "PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC": 2, - "PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC": 2, - "hShareContext": 2, - "attribList": 2, - "PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC": 2, - "hglrc": 5, - "PFNWGLGETCONTEXTGPUIDAMDPROC": 2, - "PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC": 2, - "PFNWGLGETGPUIDSAMDPROC": 2, - "maxCount": 1, - "UINT*": 6, - "ids": 1, - "INT": 3, - "PFNWGLGETGPUINFOAMDPROC": 2, - "property": 1, - "dataType": 1, - "PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC": 2, - "wglBlitContextFramebufferAMD": 1, - "__wglewBlitContextFramebufferAMD": 2, - "wglCreateAssociatedContextAMD": 1, - "__wglewCreateAssociatedContextAMD": 2, - "wglCreateAssociatedContextAttribsAMD": 1, - "__wglewCreateAssociatedContextAttribsAMD": 2, - "wglDeleteAssociatedContextAMD": 1, - "__wglewDeleteAssociatedContextAMD": 2, - "wglGetContextGPUIDAMD": 1, - "__wglewGetContextGPUIDAMD": 2, - "wglGetCurrentAssociatedContextAMD": 1, - "__wglewGetCurrentAssociatedContextAMD": 2, - "wglGetGPUIDsAMD": 1, - "__wglewGetGPUIDsAMD": 2, - "wglGetGPUInfoAMD": 1, - "__wglewGetGPUInfoAMD": 2, - "wglMakeAssociatedContextCurrentAMD": 1, - "__wglewMakeAssociatedContextCurrentAMD": 2, - "WGLEW_AMD_gpu_association": 1, - "__WGLEW_AMD_gpu_association": 2, - "WGL_ARB_buffer_region": 2, - "WGL_FRONT_COLOR_BUFFER_BIT_ARB": 1, - "WGL_BACK_COLOR_BUFFER_BIT_ARB": 1, - "WGL_DEPTH_BUFFER_BIT_ARB": 1, - "WGL_STENCIL_BUFFER_BIT_ARB": 1, - "HANDLE": 14, - "PFNWGLCREATEBUFFERREGIONARBPROC": 2, - "iLayerPlane": 5, - "uType": 1, - "PFNWGLDELETEBUFFERREGIONARBPROC": 2, - "hRegion": 3, - "PFNWGLRESTOREBUFFERREGIONARBPROC": 2, - "width": 3, - "height": 3, - "xSrc": 1, - "ySrc": 1, - "PFNWGLSAVEBUFFERREGIONARBPROC": 2, - "wglCreateBufferRegionARB": 1, - "__wglewCreateBufferRegionARB": 2, - "wglDeleteBufferRegionARB": 1, - "__wglewDeleteBufferRegionARB": 2, - "wglRestoreBufferRegionARB": 1, - "__wglewRestoreBufferRegionARB": 2, - "wglSaveBufferRegionARB": 1, - "__wglewSaveBufferRegionARB": 2, - "WGLEW_ARB_buffer_region": 1, - "__WGLEW_ARB_buffer_region": 2, - "WGL_ARB_create_context": 2, - "WGL_CONTEXT_DEBUG_BIT_ARB": 1, - "WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB": 1, - "WGL_CONTEXT_MAJOR_VERSION_ARB": 1, - "WGL_CONTEXT_MINOR_VERSION_ARB": 1, - "WGL_CONTEXT_LAYER_PLANE_ARB": 1, - "WGL_CONTEXT_FLAGS_ARB": 1, - "ERROR_INVALID_VERSION_ARB": 1, - "ERROR_INVALID_PROFILE_ARB": 1, - "PFNWGLCREATECONTEXTATTRIBSARBPROC": 2, - "wglCreateContextAttribsARB": 1, - "__wglewCreateContextAttribsARB": 2, - "WGLEW_ARB_create_context": 1, - "__WGLEW_ARB_create_context": 2, - "WGL_ARB_create_context_profile": 2, - "WGL_CONTEXT_CORE_PROFILE_BIT_ARB": 1, - "WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB": 1, - "WGL_CONTEXT_PROFILE_MASK_ARB": 1, - "WGLEW_ARB_create_context_profile": 1, - "__WGLEW_ARB_create_context_profile": 2, - "WGL_ARB_create_context_robustness": 2, - "WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB": 1, - "WGL_LOSE_CONTEXT_ON_RESET_ARB": 1, - "WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB": 1, - "WGL_NO_RESET_NOTIFICATION_ARB": 1, - "WGLEW_ARB_create_context_robustness": 1, - "__WGLEW_ARB_create_context_robustness": 2, - "WGL_ARB_extensions_string": 2, - "PFNWGLGETEXTENSIONSSTRINGARBPROC": 2, - "hdc": 16, - "wglGetExtensionsStringARB": 1, - "__wglewGetExtensionsStringARB": 2, - "WGLEW_ARB_extensions_string": 1, - "__WGLEW_ARB_extensions_string": 2, - "WGL_ARB_framebuffer_sRGB": 2, - "WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB": 1, - "A9": 2, - "WGLEW_ARB_framebuffer_sRGB": 1, - "__WGLEW_ARB_framebuffer_sRGB": 2, - "WGL_ARB_make_current_read": 2, - "ERROR_INVALID_PIXEL_TYPE_ARB": 1, - "ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB": 1, - "PFNWGLGETCURRENTREADDCARBPROC": 2, - "PFNWGLMAKECONTEXTCURRENTARBPROC": 2, - "hDrawDC": 2, - "hReadDC": 2, - "wglGetCurrentReadDCARB": 1, - "__wglewGetCurrentReadDCARB": 2, - "wglMakeContextCurrentARB": 1, - "__wglewMakeContextCurrentARB": 2, - "WGLEW_ARB_make_current_read": 1, - "__WGLEW_ARB_make_current_read": 2, - "WGL_ARB_multisample": 2, - "WGL_SAMPLE_BUFFERS_ARB": 1, - "WGL_SAMPLES_ARB": 1, - "WGLEW_ARB_multisample": 1, - "__WGLEW_ARB_multisample": 2, - "WGL_ARB_pbuffer": 2, - "WGL_DRAW_TO_PBUFFER_ARB": 1, - "D": 8, - "WGL_MAX_PBUFFER_PIXELS_ARB": 1, - "WGL_MAX_PBUFFER_WIDTH_ARB": 1, - "WGL_MAX_PBUFFER_HEIGHT_ARB": 1, - "WGL_PBUFFER_LARGEST_ARB": 1, - "WGL_PBUFFER_WIDTH_ARB": 1, - "WGL_PBUFFER_HEIGHT_ARB": 1, - "WGL_PBUFFER_LOST_ARB": 1, - "DECLARE_HANDLE": 6, - "HPBUFFERARB": 12, - "PFNWGLCREATEPBUFFERARBPROC": 2, - "iPixelFormat": 6, - "iWidth": 2, - "iHeight": 2, - "piAttribList": 4, - "PFNWGLDESTROYPBUFFERARBPROC": 2, - "hPbuffer": 14, - "PFNWGLGETPBUFFERDCARBPROC": 2, - "PFNWGLQUERYPBUFFERARBPROC": 2, - "iAttribute": 8, - "piValue": 8, - "PFNWGLRELEASEPBUFFERDCARBPROC": 2, - "wglCreatePbufferARB": 1, - "__wglewCreatePbufferARB": 2, - "wglDestroyPbufferARB": 1, - "__wglewDestroyPbufferARB": 2, - "wglGetPbufferDCARB": 1, - "__wglewGetPbufferDCARB": 2, - "wglQueryPbufferARB": 1, - "__wglewQueryPbufferARB": 2, - "wglReleasePbufferDCARB": 1, - "__wglewReleasePbufferDCARB": 2, - "WGLEW_ARB_pbuffer": 1, - "__WGLEW_ARB_pbuffer": 2, - "WGL_ARB_pixel_format": 2, - "WGL_NUMBER_PIXEL_FORMATS_ARB": 1, - "WGL_DRAW_TO_WINDOW_ARB": 1, - "WGL_DRAW_TO_BITMAP_ARB": 1, - "WGL_ACCELERATION_ARB": 1, - "WGL_NEED_PALETTE_ARB": 1, - "WGL_NEED_SYSTEM_PALETTE_ARB": 1, - "WGL_SWAP_LAYER_BUFFERS_ARB": 1, - "WGL_SWAP_METHOD_ARB": 1, - "WGL_NUMBER_OVERLAYS_ARB": 1, - "WGL_NUMBER_UNDERLAYS_ARB": 1, - "WGL_TRANSPARENT_ARB": 1, - "WGL_SHARE_DEPTH_ARB": 1, - "WGL_SHARE_STENCIL_ARB": 1, - "WGL_SHARE_ACCUM_ARB": 1, - "WGL_SUPPORT_GDI_ARB": 1, - "WGL_SUPPORT_OPENGL_ARB": 1, - "WGL_DOUBLE_BUFFER_ARB": 1, - "WGL_STEREO_ARB": 1, - "WGL_PIXEL_TYPE_ARB": 1, - "WGL_COLOR_BITS_ARB": 1, - "WGL_RED_BITS_ARB": 1, - "WGL_RED_SHIFT_ARB": 1, - "WGL_GREEN_BITS_ARB": 1, - "WGL_GREEN_SHIFT_ARB": 1, - "WGL_BLUE_BITS_ARB": 1, - "WGL_BLUE_SHIFT_ARB": 1, - "WGL_ALPHA_BITS_ARB": 1, - "B": 9, - "WGL_ALPHA_SHIFT_ARB": 1, - "WGL_ACCUM_BITS_ARB": 1, - "WGL_ACCUM_RED_BITS_ARB": 1, - "WGL_ACCUM_GREEN_BITS_ARB": 1, - "WGL_ACCUM_BLUE_BITS_ARB": 1, - "WGL_ACCUM_ALPHA_BITS_ARB": 1, - "WGL_DEPTH_BITS_ARB": 1, - "WGL_STENCIL_BITS_ARB": 1, - "WGL_AUX_BUFFERS_ARB": 1, - "WGL_NO_ACCELERATION_ARB": 1, - "WGL_GENERIC_ACCELERATION_ARB": 1, - "WGL_FULL_ACCELERATION_ARB": 1, - "WGL_SWAP_EXCHANGE_ARB": 1, - "WGL_SWAP_COPY_ARB": 1, - "WGL_SWAP_UNDEFINED_ARB": 1, - "WGL_TYPE_RGBA_ARB": 1, - "WGL_TYPE_COLORINDEX_ARB": 1, - "WGL_TRANSPARENT_RED_VALUE_ARB": 1, - "WGL_TRANSPARENT_GREEN_VALUE_ARB": 1, - "WGL_TRANSPARENT_BLUE_VALUE_ARB": 1, - "WGL_TRANSPARENT_ALPHA_VALUE_ARB": 1, - "WGL_TRANSPARENT_INDEX_VALUE_ARB": 1, - "PFNWGLCHOOSEPIXELFORMATARBPROC": 2, - "piAttribIList": 2, - "FLOAT": 4, - "*pfAttribFList": 2, - "nMaxFormats": 2, - "*piFormats": 2, - "*nNumFormats": 2, - "PFNWGLGETPIXELFORMATATTRIBFVARBPROC": 2, - "nAttributes": 4, - "piAttributes": 4, - "*pfValues": 2, - "PFNWGLGETPIXELFORMATATTRIBIVARBPROC": 2, - "*piValues": 2, - "wglChoosePixelFormatARB": 1, - "__wglewChoosePixelFormatARB": 2, - "wglGetPixelFormatAttribfvARB": 1, - "__wglewGetPixelFormatAttribfvARB": 2, - "wglGetPixelFormatAttribivARB": 1, - "__wglewGetPixelFormatAttribivARB": 2, - "WGLEW_ARB_pixel_format": 1, - "__WGLEW_ARB_pixel_format": 2, - "WGL_ARB_pixel_format_float": 2, - "WGL_TYPE_RGBA_FLOAT_ARB": 1, - "A0": 3, - "WGLEW_ARB_pixel_format_float": 1, - "__WGLEW_ARB_pixel_format_float": 2, - "WGL_ARB_render_texture": 2, - "WGL_BIND_TO_TEXTURE_RGB_ARB": 1, - "WGL_BIND_TO_TEXTURE_RGBA_ARB": 1, - "WGL_TEXTURE_FORMAT_ARB": 1, - "WGL_TEXTURE_TARGET_ARB": 1, - "WGL_MIPMAP_TEXTURE_ARB": 1, - "WGL_TEXTURE_RGB_ARB": 1, - "WGL_TEXTURE_RGBA_ARB": 1, - "WGL_NO_TEXTURE_ARB": 2, - "WGL_TEXTURE_CUBE_MAP_ARB": 1, - "WGL_TEXTURE_1D_ARB": 1, - "WGL_TEXTURE_2D_ARB": 1, - "WGL_MIPMAP_LEVEL_ARB": 1, - "WGL_CUBE_MAP_FACE_ARB": 1, - "WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB": 1, - "WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB": 1, - "WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB": 1, - "WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB": 1, - "WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB": 1, - "WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB": 1, - "WGL_FRONT_LEFT_ARB": 1, - "WGL_FRONT_RIGHT_ARB": 1, - "WGL_BACK_LEFT_ARB": 1, - "WGL_BACK_RIGHT_ARB": 1, - "WGL_AUX0_ARB": 1, - "WGL_AUX1_ARB": 1, - "WGL_AUX2_ARB": 1, - "WGL_AUX3_ARB": 1, - "WGL_AUX4_ARB": 1, - "WGL_AUX5_ARB": 1, - "WGL_AUX6_ARB": 1, - "WGL_AUX7_ARB": 1, - "WGL_AUX8_ARB": 1, - "WGL_AUX9_ARB": 1, - "PFNWGLBINDTEXIMAGEARBPROC": 2, - "iBuffer": 2, - "PFNWGLRELEASETEXIMAGEARBPROC": 2, - "PFNWGLSETPBUFFERATTRIBARBPROC": 2, - "wglBindTexImageARB": 1, - "__wglewBindTexImageARB": 2, - "wglReleaseTexImageARB": 1, - "__wglewReleaseTexImageARB": 2, - "wglSetPbufferAttribARB": 1, - "__wglewSetPbufferAttribARB": 2, - "WGLEW_ARB_render_texture": 1, - "__WGLEW_ARB_render_texture": 2, - "WGL_ATI_pixel_format_float": 2, - "WGL_TYPE_RGBA_FLOAT_ATI": 1, - "GL_RGBA_FLOAT_MODE_ATI": 1, - "GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI": 1, - "WGLEW_ATI_pixel_format_float": 1, - "__WGLEW_ATI_pixel_format_float": 2, - "WGL_ATI_render_texture_rectangle": 2, - "WGL_TEXTURE_RECTANGLE_ATI": 1, - "WGLEW_ATI_render_texture_rectangle": 1, - "__WGLEW_ATI_render_texture_rectangle": 2, - "WGL_EXT_create_context_es2_profile": 2, - "WGL_CONTEXT_ES2_PROFILE_BIT_EXT": 1, - "WGLEW_EXT_create_context_es2_profile": 1, - "__WGLEW_EXT_create_context_es2_profile": 2, - "WGL_EXT_depth_float": 2, - "WGL_DEPTH_FLOAT_EXT": 1, - "WGLEW_EXT_depth_float": 1, - "__WGLEW_EXT_depth_float": 2, - "WGL_EXT_display_color_table": 2, - "GLboolean": 53, - "PFNWGLBINDDISPLAYCOLORTABLEEXTPROC": 2, - "GLushort": 3, - "PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC": 2, - "PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC": 2, - "PFNWGLLOADDISPLAYCOLORTABLEEXTPROC": 2, - "GLushort*": 1, - "table": 1, - "GLuint": 9, - "wglBindDisplayColorTableEXT": 1, - "__wglewBindDisplayColorTableEXT": 2, - "wglCreateDisplayColorTableEXT": 1, - "__wglewCreateDisplayColorTableEXT": 2, - "wglDestroyDisplayColorTableEXT": 1, - "__wglewDestroyDisplayColorTableEXT": 2, - "wglLoadDisplayColorTableEXT": 1, - "__wglewLoadDisplayColorTableEXT": 2, - "WGLEW_EXT_display_color_table": 1, - "__WGLEW_EXT_display_color_table": 2, - "WGL_EXT_extensions_string": 2, - "PFNWGLGETEXTENSIONSSTRINGEXTPROC": 2, - "wglGetExtensionsStringEXT": 1, - "__wglewGetExtensionsStringEXT": 2, - "WGLEW_EXT_extensions_string": 1, - "__WGLEW_EXT_extensions_string": 2, - "WGL_EXT_framebuffer_sRGB": 2, - "WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT": 1, - "WGLEW_EXT_framebuffer_sRGB": 1, - "__WGLEW_EXT_framebuffer_sRGB": 2, - "WGL_EXT_make_current_read": 2, - "ERROR_INVALID_PIXEL_TYPE_EXT": 1, - "PFNWGLGETCURRENTREADDCEXTPROC": 2, - "PFNWGLMAKECONTEXTCURRENTEXTPROC": 2, - "wglGetCurrentReadDCEXT": 1, - "__wglewGetCurrentReadDCEXT": 2, - "wglMakeContextCurrentEXT": 1, - "__wglewMakeContextCurrentEXT": 2, - "WGLEW_EXT_make_current_read": 1, - "__WGLEW_EXT_make_current_read": 2, - "WGL_EXT_multisample": 2, - "WGL_SAMPLE_BUFFERS_EXT": 1, - "WGL_SAMPLES_EXT": 1, - "WGLEW_EXT_multisample": 1, - "__WGLEW_EXT_multisample": 2, - "WGL_EXT_pbuffer": 2, - "WGL_DRAW_TO_PBUFFER_EXT": 1, - "WGL_MAX_PBUFFER_PIXELS_EXT": 1, - "WGL_MAX_PBUFFER_WIDTH_EXT": 1, - "WGL_MAX_PBUFFER_HEIGHT_EXT": 1, - "WGL_OPTIMAL_PBUFFER_WIDTH_EXT": 1, - "WGL_OPTIMAL_PBUFFER_HEIGHT_EXT": 1, - "WGL_PBUFFER_LARGEST_EXT": 1, - "WGL_PBUFFER_WIDTH_EXT": 1, - "WGL_PBUFFER_HEIGHT_EXT": 1, - "HPBUFFEREXT": 6, - "PFNWGLCREATEPBUFFEREXTPROC": 2, - "PFNWGLDESTROYPBUFFEREXTPROC": 2, - "PFNWGLGETPBUFFERDCEXTPROC": 2, - "PFNWGLQUERYPBUFFEREXTPROC": 2, - "PFNWGLRELEASEPBUFFERDCEXTPROC": 2, - "wglCreatePbufferEXT": 1, - "__wglewCreatePbufferEXT": 2, - "wglDestroyPbufferEXT": 1, - "__wglewDestroyPbufferEXT": 2, - "wglGetPbufferDCEXT": 1, - "__wglewGetPbufferDCEXT": 2, - "wglQueryPbufferEXT": 1, - "__wglewQueryPbufferEXT": 2, - "wglReleasePbufferDCEXT": 1, - "__wglewReleasePbufferDCEXT": 2, - "WGLEW_EXT_pbuffer": 1, - "__WGLEW_EXT_pbuffer": 2, - "WGL_EXT_pixel_format": 2, - "WGL_NUMBER_PIXEL_FORMATS_EXT": 1, - "WGL_DRAW_TO_WINDOW_EXT": 1, - "WGL_DRAW_TO_BITMAP_EXT": 1, - "WGL_ACCELERATION_EXT": 1, - "WGL_NEED_PALETTE_EXT": 1, - "WGL_NEED_SYSTEM_PALETTE_EXT": 1, - "WGL_SWAP_LAYER_BUFFERS_EXT": 1, - "WGL_SWAP_METHOD_EXT": 1, - "WGL_NUMBER_OVERLAYS_EXT": 1, - "WGL_NUMBER_UNDERLAYS_EXT": 1, - "WGL_TRANSPARENT_EXT": 1, - "WGL_TRANSPARENT_VALUE_EXT": 1, - "WGL_SHARE_DEPTH_EXT": 1, - "WGL_SHARE_STENCIL_EXT": 1, - "WGL_SHARE_ACCUM_EXT": 1, - "WGL_SUPPORT_GDI_EXT": 1, - "WGL_SUPPORT_OPENGL_EXT": 1, - "WGL_DOUBLE_BUFFER_EXT": 1, - "WGL_STEREO_EXT": 1, - "WGL_PIXEL_TYPE_EXT": 1, - "WGL_COLOR_BITS_EXT": 1, - "WGL_RED_BITS_EXT": 1, - "WGL_RED_SHIFT_EXT": 1, - "WGL_GREEN_BITS_EXT": 1, - "WGL_GREEN_SHIFT_EXT": 1, - "WGL_BLUE_BITS_EXT": 1, - "WGL_BLUE_SHIFT_EXT": 1, - "WGL_ALPHA_BITS_EXT": 1, - "WGL_ALPHA_SHIFT_EXT": 1, - "WGL_ACCUM_BITS_EXT": 1, - "WGL_ACCUM_RED_BITS_EXT": 1, - "WGL_ACCUM_GREEN_BITS_EXT": 1, - "WGL_ACCUM_BLUE_BITS_EXT": 1, - "WGL_ACCUM_ALPHA_BITS_EXT": 1, - "WGL_DEPTH_BITS_EXT": 1, - "WGL_STENCIL_BITS_EXT": 1, - "WGL_AUX_BUFFERS_EXT": 1, - "WGL_NO_ACCELERATION_EXT": 1, - "WGL_GENERIC_ACCELERATION_EXT": 1, - "WGL_FULL_ACCELERATION_EXT": 1, - "WGL_SWAP_EXCHANGE_EXT": 1, - "WGL_SWAP_COPY_EXT": 1, - "WGL_SWAP_UNDEFINED_EXT": 1, - "WGL_TYPE_RGBA_EXT": 1, - "WGL_TYPE_COLORINDEX_EXT": 1, - "PFNWGLCHOOSEPIXELFORMATEXTPROC": 2, - "PFNWGLGETPIXELFORMATATTRIBFVEXTPROC": 2, - "PFNWGLGETPIXELFORMATATTRIBIVEXTPROC": 2, - "wglChoosePixelFormatEXT": 1, - "__wglewChoosePixelFormatEXT": 2, - "wglGetPixelFormatAttribfvEXT": 1, - "__wglewGetPixelFormatAttribfvEXT": 2, - "wglGetPixelFormatAttribivEXT": 1, - "__wglewGetPixelFormatAttribivEXT": 2, - "WGLEW_EXT_pixel_format": 1, - "__WGLEW_EXT_pixel_format": 2, - "WGL_EXT_pixel_format_packed_float": 2, - "WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT": 1, - "WGLEW_EXT_pixel_format_packed_float": 1, - "__WGLEW_EXT_pixel_format_packed_float": 2, - "WGL_EXT_swap_control": 2, - "PFNWGLGETSWAPINTERVALEXTPROC": 2, - "PFNWGLSWAPINTERVALEXTPROC": 2, - "interval": 1, - "wglGetSwapIntervalEXT": 1, - "__wglewGetSwapIntervalEXT": 2, - "wglSwapIntervalEXT": 1, - "__wglewSwapIntervalEXT": 2, - "WGLEW_EXT_swap_control": 1, - "__WGLEW_EXT_swap_control": 2, - "WGL_I3D_digital_video_control": 2, - "WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D": 1, - "WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D": 1, - "WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D": 1, - "WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D": 1, - "PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC": 2, - "PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC": 2, - "wglGetDigitalVideoParametersI3D": 1, - "__wglewGetDigitalVideoParametersI3D": 2, - "wglSetDigitalVideoParametersI3D": 1, - "__wglewSetDigitalVideoParametersI3D": 2, - "WGLEW_I3D_digital_video_control": 1, - "__WGLEW_I3D_digital_video_control": 2, - "WGL_I3D_gamma": 2, - "WGL_GAMMA_TABLE_SIZE_I3D": 1, - "WGL_GAMMA_EXCLUDE_DESKTOP_I3D": 1, - "PFNWGLGETGAMMATABLEI3DPROC": 2, - "iEntries": 2, - "USHORT*": 2, - "puRed": 2, - "USHORT": 4, - "*puGreen": 2, - "*puBlue": 2, - "PFNWGLGETGAMMATABLEPARAMETERSI3DPROC": 2, - "PFNWGLSETGAMMATABLEI3DPROC": 2, - "PFNWGLSETGAMMATABLEPARAMETERSI3DPROC": 2, - "wglGetGammaTableI3D": 1, - "__wglewGetGammaTableI3D": 2, - "wglGetGammaTableParametersI3D": 1, - "__wglewGetGammaTableParametersI3D": 2, - "wglSetGammaTableI3D": 1, - "__wglewSetGammaTableI3D": 2, - "wglSetGammaTableParametersI3D": 1, - "__wglewSetGammaTableParametersI3D": 2, - "WGLEW_I3D_gamma": 1, - "__WGLEW_I3D_gamma": 2, - "WGL_I3D_genlock": 2, - "WGL_GENLOCK_SOURCE_MULTIVIEW_I3D": 1, - "WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D": 1, - "WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D": 1, - "WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D": 1, - "WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D": 1, - "WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D": 1, - "WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D": 1, - "WGL_GENLOCK_SOURCE_EDGE_RISING_I3D": 1, - "WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D": 1, - "PFNWGLDISABLEGENLOCKI3DPROC": 2, - "PFNWGLENABLEGENLOCKI3DPROC": 2, - "PFNWGLGENLOCKSAMPLERATEI3DPROC": 2, - "uRate": 2, - "PFNWGLGENLOCKSOURCEDELAYI3DPROC": 2, - "uDelay": 2, - "PFNWGLGENLOCKSOURCEEDGEI3DPROC": 2, - "uEdge": 2, - "PFNWGLGENLOCKSOURCEI3DPROC": 2, - "uSource": 2, - "PFNWGLGETGENLOCKSAMPLERATEI3DPROC": 2, - "PFNWGLGETGENLOCKSOURCEDELAYI3DPROC": 2, - "PFNWGLGETGENLOCKSOURCEEDGEI3DPROC": 2, - "PFNWGLGETGENLOCKSOURCEI3DPROC": 2, - "PFNWGLISENABLEDGENLOCKI3DPROC": 2, - "BOOL*": 3, - "pFlag": 3, - "PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC": 2, - "uMaxLineDelay": 1, - "*uMaxPixelDelay": 1, - "wglDisableGenlockI3D": 1, - "__wglewDisableGenlockI3D": 2, - "wglEnableGenlockI3D": 1, - "__wglewEnableGenlockI3D": 2, - "wglGenlockSampleRateI3D": 1, - "__wglewGenlockSampleRateI3D": 2, - "wglGenlockSourceDelayI3D": 1, - "__wglewGenlockSourceDelayI3D": 2, - "wglGenlockSourceEdgeI3D": 1, - "__wglewGenlockSourceEdgeI3D": 2, - "wglGenlockSourceI3D": 1, - "__wglewGenlockSourceI3D": 2, - "wglGetGenlockSampleRateI3D": 1, - "__wglewGetGenlockSampleRateI3D": 2, - "wglGetGenlockSourceDelayI3D": 1, - "__wglewGetGenlockSourceDelayI3D": 2, - "wglGetGenlockSourceEdgeI3D": 1, - "__wglewGetGenlockSourceEdgeI3D": 2, - "wglGetGenlockSourceI3D": 1, - "__wglewGetGenlockSourceI3D": 2, - "wglIsEnabledGenlockI3D": 1, - "__wglewIsEnabledGenlockI3D": 2, - "wglQueryGenlockMaxSourceDelayI3D": 1, - "__wglewQueryGenlockMaxSourceDelayI3D": 2, - "WGLEW_I3D_genlock": 1, - "__WGLEW_I3D_genlock": 2, - "WGL_I3D_image_buffer": 2, - "WGL_IMAGE_BUFFER_MIN_ACCESS_I3D": 1, - "WGL_IMAGE_BUFFER_LOCK_I3D": 1, - "PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC": 2, - "HANDLE*": 3, - "pEvent": 1, - "LPVOID": 3, - "*pAddress": 1, - "DWORD": 5, - "*pSize": 1, - "PFNWGLCREATEIMAGEBUFFERI3DPROC": 2, - "dwSize": 1, - "uFlags": 1, - "PFNWGLDESTROYIMAGEBUFFERI3DPROC": 2, - "pAddress": 2, - "PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC": 2, - "LPVOID*": 1, - "wglAssociateImageBufferEventsI3D": 1, - "__wglewAssociateImageBufferEventsI3D": 2, - "wglCreateImageBufferI3D": 1, - "__wglewCreateImageBufferI3D": 2, - "wglDestroyImageBufferI3D": 1, - "__wglewDestroyImageBufferI3D": 2, - "wglReleaseImageBufferEventsI3D": 1, - "__wglewReleaseImageBufferEventsI3D": 2, - "WGLEW_I3D_image_buffer": 1, - "__WGLEW_I3D_image_buffer": 2, - "WGL_I3D_swap_frame_lock": 2, - "PFNWGLDISABLEFRAMELOCKI3DPROC": 2, - "PFNWGLENABLEFRAMELOCKI3DPROC": 2, - "PFNWGLISENABLEDFRAMELOCKI3DPROC": 2, - "PFNWGLQUERYFRAMELOCKMASTERI3DPROC": 2, - "wglDisableFrameLockI3D": 1, - "__wglewDisableFrameLockI3D": 2, - "wglEnableFrameLockI3D": 1, - "__wglewEnableFrameLockI3D": 2, - "wglIsEnabledFrameLockI3D": 1, - "__wglewIsEnabledFrameLockI3D": 2, - "wglQueryFrameLockMasterI3D": 1, - "__wglewQueryFrameLockMasterI3D": 2, - "WGLEW_I3D_swap_frame_lock": 1, - "__WGLEW_I3D_swap_frame_lock": 2, - "WGL_I3D_swap_frame_usage": 2, - "PFNWGLBEGINFRAMETRACKINGI3DPROC": 2, - "PFNWGLENDFRAMETRACKINGI3DPROC": 2, - "PFNWGLGETFRAMEUSAGEI3DPROC": 2, - "float*": 1, - "pUsage": 1, - "PFNWGLQUERYFRAMETRACKINGI3DPROC": 2, - "DWORD*": 1, - "pFrameCount": 1, - "*pMissedFrames": 1, - "*pLastMissedUsage": 1, - "wglBeginFrameTrackingI3D": 1, - "__wglewBeginFrameTrackingI3D": 2, - "wglEndFrameTrackingI3D": 1, - "__wglewEndFrameTrackingI3D": 2, - "wglGetFrameUsageI3D": 1, - "__wglewGetFrameUsageI3D": 2, - "wglQueryFrameTrackingI3D": 1, - "__wglewQueryFrameTrackingI3D": 2, - "WGLEW_I3D_swap_frame_usage": 1, - "__WGLEW_I3D_swap_frame_usage": 2, - "WGL_NV_DX_interop": 2, - "WGL_ACCESS_READ_ONLY_NV": 1, - "WGL_ACCESS_READ_WRITE_NV": 1, - "WGL_ACCESS_WRITE_DISCARD_NV": 1, - "PFNWGLDXCLOSEDEVICENVPROC": 2, - "hDevice": 9, - "PFNWGLDXLOCKOBJECTSNVPROC": 2, - "hObjects": 2, - "PFNWGLDXOBJECTACCESSNVPROC": 2, - "hObject": 2, - "access": 2, - "PFNWGLDXOPENDEVICENVPROC": 2, - "dxDevice": 1, - "PFNWGLDXREGISTEROBJECTNVPROC": 2, - "dxObject": 2, - "PFNWGLDXSETRESOURCESHAREHANDLENVPROC": 2, - "shareHandle": 1, - "PFNWGLDXUNLOCKOBJECTSNVPROC": 2, - "PFNWGLDXUNREGISTEROBJECTNVPROC": 2, - "wglDXCloseDeviceNV": 1, - "__wglewDXCloseDeviceNV": 2, - "wglDXLockObjectsNV": 1, - "__wglewDXLockObjectsNV": 2, - "wglDXObjectAccessNV": 1, - "__wglewDXObjectAccessNV": 2, - "wglDXOpenDeviceNV": 1, - "__wglewDXOpenDeviceNV": 2, - "wglDXRegisterObjectNV": 1, - "__wglewDXRegisterObjectNV": 2, - "wglDXSetResourceShareHandleNV": 1, - "__wglewDXSetResourceShareHandleNV": 2, - "wglDXUnlockObjectsNV": 1, - "__wglewDXUnlockObjectsNV": 2, - "wglDXUnregisterObjectNV": 1, - "__wglewDXUnregisterObjectNV": 2, - "WGLEW_NV_DX_interop": 1, - "__WGLEW_NV_DX_interop": 2, - "WGL_NV_copy_image": 2, - "PFNWGLCOPYIMAGESUBDATANVPROC": 2, - "hSrcRC": 1, - "srcName": 1, - "srcTarget": 1, - "srcLevel": 1, - "srcX": 1, - "srcY": 1, - "srcZ": 1, - "hDstRC": 1, - "dstName": 1, - "dstTarget": 1, - "dstLevel": 1, - "dstX": 1, - "dstY": 1, - "dstZ": 1, - "GLsizei": 4, - "wglCopyImageSubDataNV": 1, - "__wglewCopyImageSubDataNV": 2, - "WGLEW_NV_copy_image": 1, - "__WGLEW_NV_copy_image": 2, - "WGL_NV_float_buffer": 2, - "WGL_FLOAT_COMPONENTS_NV": 1, - "B0": 1, - "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV": 1, - "B1": 1, - "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV": 1, - "B2": 1, - "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV": 1, - "B3": 1, - "WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV": 1, - "B4": 1, - "WGL_TEXTURE_FLOAT_R_NV": 1, - "B5": 1, - "WGL_TEXTURE_FLOAT_RG_NV": 1, - "B6": 1, - "WGL_TEXTURE_FLOAT_RGB_NV": 1, - "B7": 1, - "WGL_TEXTURE_FLOAT_RGBA_NV": 1, - "B8": 1, - "WGLEW_NV_float_buffer": 1, - "__WGLEW_NV_float_buffer": 2, - "WGL_NV_gpu_affinity": 2, - "WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV": 1, - "D0": 1, - "WGL_ERROR_MISSING_AFFINITY_MASK_NV": 1, - "D1": 1, - "HGPUNV": 5, - "_GPU_DEVICE": 1, - "cb": 1, - "CHAR": 2, - "DeviceName": 1, - "DeviceString": 1, - "Flags": 1, - "RECT": 1, - "rcVirtualScreen": 1, - "GPU_DEVICE": 1, - "*PGPU_DEVICE": 1, - "PFNWGLCREATEAFFINITYDCNVPROC": 2, - "*phGpuList": 1, - "PFNWGLDELETEDCNVPROC": 2, - "PFNWGLENUMGPUDEVICESNVPROC": 2, - "hGpu": 1, - "iDeviceIndex": 1, - "PGPU_DEVICE": 1, - "lpGpuDevice": 1, - "PFNWGLENUMGPUSFROMAFFINITYDCNVPROC": 2, - "hAffinityDC": 1, - "iGpuIndex": 2, - "*hGpu": 1, - "PFNWGLENUMGPUSNVPROC": 2, - "*phGpu": 1, - "wglCreateAffinityDCNV": 1, - "__wglewCreateAffinityDCNV": 2, - "wglDeleteDCNV": 1, - "__wglewDeleteDCNV": 2, - "wglEnumGpuDevicesNV": 1, - "__wglewEnumGpuDevicesNV": 2, - "wglEnumGpusFromAffinityDCNV": 1, - "__wglewEnumGpusFromAffinityDCNV": 2, - "wglEnumGpusNV": 1, - "__wglewEnumGpusNV": 2, - "WGLEW_NV_gpu_affinity": 1, - "__WGLEW_NV_gpu_affinity": 2, - "WGL_NV_multisample_coverage": 2, - "WGL_COVERAGE_SAMPLES_NV": 1, - "WGL_COLOR_SAMPLES_NV": 1, - "B9": 1, - "WGLEW_NV_multisample_coverage": 1, - "__WGLEW_NV_multisample_coverage": 2, - "WGL_NV_present_video": 2, - "WGL_NUM_VIDEO_SLOTS_NV": 1, - "F0": 1, - "HVIDEOOUTPUTDEVICENV": 2, - "PFNWGLBINDVIDEODEVICENVPROC": 2, - "hDc": 6, - "uVideoSlot": 2, - "hVideoDevice": 4, - "PFNWGLENUMERATEVIDEODEVICESNVPROC": 2, - "HVIDEOOUTPUTDEVICENV*": 1, - "phDeviceList": 2, - "PFNWGLQUERYCURRENTCONTEXTNVPROC": 2, - "wglBindVideoDeviceNV": 1, - "__wglewBindVideoDeviceNV": 2, - "wglEnumerateVideoDevicesNV": 1, - "__wglewEnumerateVideoDevicesNV": 2, - "wglQueryCurrentContextNV": 1, - "__wglewQueryCurrentContextNV": 2, - "WGLEW_NV_present_video": 1, - "__WGLEW_NV_present_video": 2, - "WGL_NV_render_depth_texture": 2, - "WGL_BIND_TO_TEXTURE_DEPTH_NV": 1, - "WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV": 1, - "WGL_DEPTH_TEXTURE_FORMAT_NV": 1, - "WGL_TEXTURE_DEPTH_COMPONENT_NV": 1, - "WGL_DEPTH_COMPONENT_NV": 1, - "WGLEW_NV_render_depth_texture": 1, - "__WGLEW_NV_render_depth_texture": 2, - "WGL_NV_render_texture_rectangle": 2, - "WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV": 1, - "WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV": 1, - "A1": 1, - "WGL_TEXTURE_RECTANGLE_NV": 1, - "WGLEW_NV_render_texture_rectangle": 1, - "__WGLEW_NV_render_texture_rectangle": 2, - "WGL_NV_swap_group": 2, - "PFNWGLBINDSWAPBARRIERNVPROC": 2, - "group": 3, - "barrier": 1, - "PFNWGLJOINSWAPGROUPNVPROC": 2, - "PFNWGLQUERYFRAMECOUNTNVPROC": 2, - "GLuint*": 3, - "PFNWGLQUERYMAXSWAPGROUPSNVPROC": 2, - "maxGroups": 1, - "*maxBarriers": 1, - "PFNWGLQUERYSWAPGROUPNVPROC": 2, - "*barrier": 1, - "PFNWGLRESETFRAMECOUNTNVPROC": 2, - "wglBindSwapBarrierNV": 1, - "__wglewBindSwapBarrierNV": 2, - "wglJoinSwapGroupNV": 1, - "__wglewJoinSwapGroupNV": 2, - "wglQueryFrameCountNV": 1, - "__wglewQueryFrameCountNV": 2, - "wglQueryMaxSwapGroupsNV": 1, - "__wglewQueryMaxSwapGroupsNV": 2, - "wglQuerySwapGroupNV": 1, - "__wglewQuerySwapGroupNV": 2, - "wglResetFrameCountNV": 1, - "__wglewResetFrameCountNV": 2, - "WGLEW_NV_swap_group": 1, - "__WGLEW_NV_swap_group": 2, - "WGL_NV_vertex_array_range": 2, - "PFNWGLALLOCATEMEMORYNVPROC": 2, - "GLfloat": 3, - "readFrequency": 1, - "writeFrequency": 1, - "priority": 1, - "PFNWGLFREEMEMORYNVPROC": 2, - "*pointer": 1, - "wglAllocateMemoryNV": 1, - "__wglewAllocateMemoryNV": 2, - "wglFreeMemoryNV": 1, - "__wglewFreeMemoryNV": 2, - "WGLEW_NV_vertex_array_range": 1, - "__WGLEW_NV_vertex_array_range": 2, - "WGL_NV_video_capture": 2, - "WGL_UNIQUE_ID_NV": 1, - "CE": 1, - "WGL_NUM_VIDEO_CAPTURE_SLOTS_NV": 1, - "CF": 1, - "HVIDEOINPUTDEVICENV": 5, - "PFNWGLBINDVIDEOCAPTUREDEVICENVPROC": 2, - "PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC": 2, - "HVIDEOINPUTDEVICENV*": 1, - "PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC": 2, - "PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC": 2, - "PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC": 2, - "wglBindVideoCaptureDeviceNV": 1, - "__wglewBindVideoCaptureDeviceNV": 2, - "wglEnumerateVideoCaptureDevicesNV": 1, - "__wglewEnumerateVideoCaptureDevicesNV": 2, - "wglLockVideoCaptureDeviceNV": 1, - "__wglewLockVideoCaptureDeviceNV": 2, - "wglQueryVideoCaptureDeviceNV": 1, - "__wglewQueryVideoCaptureDeviceNV": 2, - "wglReleaseVideoCaptureDeviceNV": 1, - "__wglewReleaseVideoCaptureDeviceNV": 2, - "WGLEW_NV_video_capture": 1, - "__WGLEW_NV_video_capture": 2, - "WGL_NV_video_output": 2, - "WGL_BIND_TO_VIDEO_RGB_NV": 1, - "WGL_BIND_TO_VIDEO_RGBA_NV": 1, - "C1": 1, - "WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV": 1, - "C2": 1, - "WGL_VIDEO_OUT_COLOR_NV": 1, - "C3": 1, - "WGL_VIDEO_OUT_ALPHA_NV": 1, - "C4": 1, - "WGL_VIDEO_OUT_DEPTH_NV": 1, - "C5": 1, - "WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV": 1, - "C6": 1, - "WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV": 1, - "C7": 1, - "WGL_VIDEO_OUT_FRAME": 1, - "C8": 1, - "WGL_VIDEO_OUT_FIELD_1": 1, - "C9": 1, - "WGL_VIDEO_OUT_FIELD_2": 1, - "CA": 1, - "WGL_VIDEO_OUT_STACKED_FIELDS_1_2": 1, - "CB": 1, - "WGL_VIDEO_OUT_STACKED_FIELDS_2_1": 1, - "CC": 1, - "HPVIDEODEV": 4, - "PFNWGLBINDVIDEOIMAGENVPROC": 2, - "iVideoBuffer": 2, - "PFNWGLGETVIDEODEVICENVPROC": 2, - "numDevices": 1, - "HPVIDEODEV*": 1, - "PFNWGLGETVIDEOINFONVPROC": 2, - "hpVideoDevice": 1, - "long*": 2, - "pulCounterOutputPbuffer": 1, - "*pulCounterOutputVideo": 1, - "PFNWGLRELEASEVIDEODEVICENVPROC": 2, - "PFNWGLRELEASEVIDEOIMAGENVPROC": 2, - "PFNWGLSENDPBUFFERTOVIDEONVPROC": 2, - "iBufferType": 1, - "pulCounterPbuffer": 1, - "bBlock": 1, - "wglBindVideoImageNV": 1, - "__wglewBindVideoImageNV": 2, - "wglGetVideoDeviceNV": 1, - "__wglewGetVideoDeviceNV": 2, - "wglGetVideoInfoNV": 1, - "__wglewGetVideoInfoNV": 2, - "wglReleaseVideoDeviceNV": 1, - "__wglewReleaseVideoDeviceNV": 2, - "wglReleaseVideoImageNV": 1, - "__wglewReleaseVideoImageNV": 2, - "wglSendPbufferToVideoNV": 1, - "__wglewSendPbufferToVideoNV": 2, - "WGLEW_NV_video_output": 1, - "__WGLEW_NV_video_output": 2, - "WGL_OML_sync_control": 2, - "PFNWGLGETMSCRATEOMLPROC": 2, - "INT32*": 1, - "numerator": 1, - "INT32": 1, - "*denominator": 1, - "PFNWGLGETSYNCVALUESOMLPROC": 2, - "INT64*": 3, - "INT64": 18, - "*msc": 3, - "*sbc": 3, - "PFNWGLSWAPBUFFERSMSCOMLPROC": 2, - "target_msc": 3, - "divisor": 3, - "remainder": 3, - "PFNWGLSWAPLAYERBUFFERSMSCOMLPROC": 2, - "fuPlanes": 1, - "PFNWGLWAITFORMSCOMLPROC": 2, - "PFNWGLWAITFORSBCOMLPROC": 2, - "target_sbc": 1, - "wglGetMscRateOML": 1, - "__wglewGetMscRateOML": 2, - "wglGetSyncValuesOML": 1, - "__wglewGetSyncValuesOML": 2, - "wglSwapBuffersMscOML": 1, - "__wglewSwapBuffersMscOML": 2, - "wglSwapLayerBuffersMscOML": 1, - "__wglewSwapLayerBuffersMscOML": 2, - "wglWaitForMscOML": 1, - "__wglewWaitForMscOML": 2, - "wglWaitForSbcOML": 1, - "__wglewWaitForSbcOML": 2, - "WGLEW_OML_sync_control": 1, - "__WGLEW_OML_sync_control": 2, - "GLEW_MX": 4, - "WGLEW_EXPORT": 167, - "GLEWAPI": 6, - "WGLEWContextStruct": 2, - "WGLEWContext": 1, - "wglewContextInit": 2, - "WGLEWContext*": 2, - "wglewContextIsSupported": 2, - "wglewInit": 1, - "wglewGetContext": 4, - "wglewIsSupported": 2, - "wglewGetExtension": 1, - "yajl_status_to_string": 1, - "yajl_status": 4, - "statStr": 6, - "yajl_status_ok": 1, - "yajl_status_client_canceled": 1, - "yajl_status_insufficient_data": 1, - "yajl_status_error": 1, - "yajl_handle": 10, - "yajl_alloc": 1, - "yajl_callbacks": 1, - "callbacks": 3, - "yajl_parser_config": 1, - "config": 4, - "yajl_alloc_funcs": 3, - "afs": 8, - "allowComments": 4, - "validateUTF8": 3, - "hand": 28, - "afsBuffer": 3, - "realloc": 1, - "yajl_set_default_alloc_funcs": 1, - "YA_MALLOC": 1, - "yajl_handle_t": 1, - "alloc": 6, - "checkUTF8": 1, - "lexer": 4, - "yajl_lex_alloc": 1, - "bytesConsumed": 2, - "decodeBuf": 2, - "yajl_buf_alloc": 1, - "yajl_bs_init": 1, - "stateStack": 3, - "yajl_bs_push": 1, - "yajl_state_start": 1, - "yajl_reset_parser": 1, - "yajl_lex_realloc": 1, - "yajl_free": 1, - "yajl_bs_free": 1, - "yajl_buf_free": 1, - "yajl_lex_free": 1, - "YA_FREE": 2, - "yajl_parse": 2, - "jsonText": 4, - "jsonTextLen": 4, - "yajl_do_parse": 1, - "yajl_parse_complete": 1, - "yajl_get_error": 1, - "verbose": 2, - "yajl_render_error_string": 1, - "yajl_get_bytes_consumed": 1, - "yajl_free_error": 1 - }, - "C#": { - "@": 1, - "{": 5, - "ViewBag.Title": 1, - ";": 8, - "}": 5, - "@section": 1, - "featured": 1, - "
": 1, - "class=": 7, - "
": 1, - "
": 1, - "

": 1, - "@ViewBag.Title.": 1, - "

": 1, - "

": 1, - "@ViewBag.Message": 1, - "

": 1, - "
": 1, - "

": 1, - "To": 1, - "learn": 1, - "more": 4, - "about": 2, - "ASP.NET": 5, - "MVC": 4, - "visit": 2, - "": 5, - "href=": 5, - "title=": 2, - "http": 1, - "//asp.net/mvc": 1, - "": 5, - ".": 2, - "The": 1, - "page": 1, - "features": 3, - "": 1, - "videos": 1, - "tutorials": 1, - "and": 6, - "samples": 1, - "": 1, - "to": 4, - "help": 1, - "you": 4, - "get": 1, - "the": 5, - "most": 1, - "from": 1, - "MVC.": 1, - "If": 1, - "have": 1, - "any": 1, - "questions": 1, - "our": 1, - "forums": 1, - "

": 1, - "
": 1, - "
": 1, - "

": 1, - "We": 1, - "suggest": 1, - "following": 1, - "

": 1, - "
    ": 1, - "
  1. ": 3, - "
    ": 3, - "Getting": 1, - "Started": 1, - "
    ": 3, - "gives": 2, - "a": 3, - "powerful": 1, - "patterns": 1, - "-": 3, - "based": 1, - "way": 1, - "build": 1, - "dynamic": 1, - "websites": 1, - "that": 5, - "enables": 1, - "clean": 1, - "separation": 1, - "of": 2, - "concerns": 1, - "full": 1, - "control": 1, - "over": 1, - "markup": 1, - "for": 4, - "enjoyable": 1, - "agile": 1, - "development.": 1, - "includes": 1, - "many": 1, - "enable": 1, - "fast": 1, - "TDD": 1, - "friendly": 1, - "development": 1, - "creating": 1, - "sophisticated": 1, - "applications": 1, - "use": 1, - "latest": 1, - "web": 2, - "standards.": 1, - "Learn": 3, - "
  2. ": 3, - "Add": 1, - "NuGet": 2, - "packages": 1, - "jump": 1, - "start": 1, - "your": 2, - "coding": 1, - "makes": 1, - "it": 2, - "easy": 1, - "install": 1, - "update": 1, - "free": 1, - "libraries": 1, - "tools.": 1, - "Find": 1, - "Web": 1, - "Hosting": 1, - "You": 1, - "can": 1, - "easily": 1, - "find": 1, - "hosting": 1, - "company": 1, - "offers": 1, - "right": 1, - "mix": 1, - "price": 1, - "applications.": 1, - "
": 1, - "using": 5, - "System": 1, - "System.Collections.Generic": 1, - "System.Linq": 1, - "System.Text": 1, - "System.Threading.Tasks": 1, - "namespace": 1, - "LittleSampleApp": 1, - "///": 4, - "": 1, - "Just": 1, - "what": 1, - "says": 1, - "on": 1, - "tin.": 1, - "A": 1, - "little": 1, - "sample": 1, - "application": 1, - "Linguist": 1, - "try": 1, - "out.": 1, - "": 1, - "class": 1, - "Program": 1, - "static": 1, - "void": 1, - "Main": 1, - "(": 3, - "string": 1, - "[": 1, - "]": 1, - "args": 1, - ")": 3, - "Console.WriteLine": 2 - }, - "C++": { - "class": 40, - "Bar": 2, - "{": 581, - "protected": 4, - "char": 127, - "*name": 6, - ";": 2471, - "public": 33, - "void": 225, - "hello": 2, - "(": 2729, - ")": 2731, - "}": 581, - "//": 278, - "///": 843, - "mainpage": 1, - "C": 6, - "library": 14, - "for": 98, - "Broadcom": 3, - "BCM": 14, - "as": 28, - "used": 17, - "in": 165, - "Raspberry": 6, - "Pi": 5, - "This": 18, - "is": 100, - "a": 156, - "RPi": 17, - ".": 16, - "It": 7, - "provides": 3, - "access": 17, - "to": 253, - "GPIO": 87, - "and": 118, - "other": 17, - "IO": 2, - "functions": 19, - "on": 55, - "the": 537, - "chip": 9, - "allowing": 3, - "pins": 40, - "pin": 90, - "IDE": 4, - "plug": 3, - "board": 2, - "so": 2, - "you": 29, - "can": 21, - "control": 17, - "interface": 9, - "with": 32, - "various": 4, - "external": 3, - "devices.": 1, - "reading": 3, - "digital": 2, - "inputs": 2, - "setting": 2, - "outputs": 1, - "using": 11, - "SPI": 44, - "I2C": 29, - "accessing": 2, - "system": 9, - "timers.": 1, - "Pin": 65, - "event": 3, - "detection": 2, - "supported": 3, - "by": 53, - "polling": 1, - "interrupts": 1, - "are": 36, - "not": 26, - "+": 60, - "compatible": 1, - "installs": 1, - "header": 7, - "file": 31, - "non": 2, - "-": 349, - "shared": 2, - "any": 23, - "Linux": 2, - "based": 4, - "distro": 1, - "but": 5, - "clearly": 1, - "no": 7, - "use": 34, - "except": 2, - "or": 44, - "another": 1, - "The": 50, - "version": 38, - "of": 211, - "package": 1, - "that": 33, - "this": 52, - "documentation": 3, - "refers": 1, - "be": 35, - "downloaded": 1, - "from": 91, - "http": 11, - "//www.airspayce.com/mikem/bcm2835/bcm2835": 1, - "tar.gz": 1, - "You": 9, - "find": 2, - "latest": 2, - "at": 20, - "//www.airspayce.com/mikem/bcm2835": 1, - "Several": 1, - "example": 3, - "programs": 4, - "provided.": 1, - "Based": 1, - "data": 26, - "//elinux.org/RPi_Low": 1, - "level_peripherals": 1, - "//www.raspberrypi.org/wp": 1, - "content/uploads/2012/02/BCM2835": 1, - "ARM": 5, - "Peripherals.pdf": 1, - "//www.scribd.com/doc/101830961/GPIO": 2, - "Pads": 3, - "Control2": 2, - "also": 3, - "online": 1, - "help": 1, - "discussion": 1, - "//groups.google.com/group/bcm2835": 1, - "Please": 4, - "group": 23, - "all": 11, - "questions": 1, - "discussions": 1, - "topic.": 1, - "Do": 1, - "contact": 1, - "author": 3, - "directly": 2, - "unless": 1, - "it": 19, - "discuss": 1, - "commercial": 1, - "licensing.": 1, - "Tested": 1, - "debian6": 1, - "wheezy": 3, - "raspbian": 3, - "Occidentalisv01": 2, - "CAUTION": 1, - "has": 29, - "been": 14, - "observed": 1, - "when": 22, - "detect": 3, - "enables": 3, - "such": 4, - "bcm2835_gpio_len": 5, - "pulled": 1, - "LOW": 8, - "cause": 1, - "temporary": 1, - "hangs": 1, - "Occidentalisv01.": 1, - "Reason": 1, - "yet": 1, - "determined": 1, - "suspect": 1, - "an": 23, - "interrupt": 1, - "handler": 1, - "hitting": 1, - "hard": 1, - "loop": 2, - "those": 3, - "OSs.": 1, - "If": 11, - "must": 6, - "friends": 2, - "make": 6, - "sure": 3, - "disable": 2, - "bcm2835_gpio_cler_len": 1, - "after": 18, - "use.": 1, - "par": 9, - "Installation": 1, - "consists": 1, - "single": 2, - "which": 14, - "will": 15, - "installed": 1, - "usual": 3, - "places": 1, - "install": 3, - "code": 12, - "#": 1, - "download": 2, - "say": 1, - "bcm2835": 7, - "xx.tar.gz": 2, - "then": 15, - "tar": 1, - "zxvf": 1, - "cd": 1, - "xx": 2, - "./configure": 1, - "sudo": 2, - "check": 3, - "endcode": 2, - "Physical": 21, - "Addresses": 6, - "bcm2835_peri_read": 3, - "bcm2835_peri_write": 3, - "bcm2835_peri_set_bits": 2, - "low": 2, - "level": 10, - "peripheral": 14, - "register": 17, - "functions.": 4, - "They": 1, - "designed": 3, - "physical": 4, - "addresses": 4, - "described": 1, - "section": 6, - "BCM2835": 2, - "Peripherals": 1, - "manual.": 1, - "range": 3, - "FFFFFF": 1, - "peripherals.": 1, - "bus": 4, - "peripherals": 2, - "set": 18, - "up": 18, - "map": 3, - "onto": 1, - "address": 13, - "starting": 1, - "E000000.": 1, - "Thus": 1, - "advertised": 1, - "manual": 8, - "Ennnnnn": 1, - "available": 6, - "nnnnnn.": 1, - "base": 4, - "registers": 12, - "following": 2, - "externals": 1, - "bcm2835_gpio": 2, - "bcm2835_pwm": 2, - "bcm2835_clk": 2, - "bcm2835_pads": 2, - "bcm2835_spio0": 1, - "bcm2835_st": 1, - "bcm2835_bsc0": 1, - "bcm2835_bsc1": 1, - "Numbering": 1, - "numbering": 1, - "different": 5, - "inconsistent": 1, - "underlying": 4, - "numbering.": 1, - "//elinux.org/RPi_BCM2835_GPIOs": 1, - "some": 4, - "well": 1, - "power": 1, - "ground": 1, - "pins.": 1, - "Not": 4, - "header.": 1, - "Version": 40, - "P5": 6, - "connector": 1, - "V": 2, - "Gnd.": 1, - "passed": 4, - "number": 52, - "_not_": 1, - "number.": 1, - "There": 1, - "symbolic": 1, - "definitions": 3, - "each": 7, - "should": 10, - "convenience.": 1, - "See": 7, - "ref": 32, - "RPiGPIOPin.": 22, - "Pins": 2, - "bcm2835_spi_*": 1, - "allow": 5, - "SPI0": 17, - "send": 3, - "received": 3, - "Serial": 3, - "Peripheral": 6, - "Interface": 2, - "For": 6, - "more": 4, - "information": 3, - "about": 6, - "see": 14, - "//en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus": 1, - "When": 12, - "bcm2835_spi_begin": 3, - "called": 13, - "changes": 2, - "bahaviour": 1, - "their": 6, - "default": 14, - "behaviour": 1, - "order": 14, - "support": 4, - "SPI.": 1, - "While": 1, - "able": 2, - "state": 22, - "through": 4, - "bcm2835_spi_gpio_write": 1, - "bcm2835_spi_end": 4, - "revert": 1, - "configured": 1, - "controled": 1, - "bcm2835_gpio_*": 1, - "calls.": 1, - "P1": 56, - "MOSI": 8, - "MISO": 6, - "CLK": 6, - "CE0": 5, - "CE1": 6, - "bcm2835_i2c_*": 2, - "BSC": 10, - "generically": 1, - "referred": 1, - "I": 4, - "//en.wikipedia.org/wiki/I": 1, - "%": 6, - "C2": 1, - "B2C": 1, - "V2": 2, - "SDA": 3, - "SLC": 1, - "Real": 1, - "Time": 1, - "performance": 2, - "constraints": 2, - "user": 3, - "i.e.": 1, - "they": 2, - "run": 1, - "Such": 1, - "part": 1, - "kernel": 4, - "usually": 2, - "subject": 1, - "paging": 1, - "swapping": 2, - "while": 12, - "does": 4, - "things": 1, - "besides": 1, - "running": 1, - "your": 12, - "program.": 1, - "means": 8, - "expect": 2, - "get": 5, - "real": 4, - "time": 10, - "timing": 3, - "programs.": 1, - "In": 2, - "particular": 1, - "there": 4, - "guarantee": 1, - "bcm2835_delay": 5, - "bcm2835_delayMicroseconds": 6, - "return": 164, - "exactly": 2, - "requested.": 1, - "fact": 2, - "depending": 1, - "activity": 1, - "host": 1, - "etc": 1, - "might": 1, - "significantly": 1, - "longer": 1, - "delay": 9, - "times": 2, - "than": 5, - "one": 73, - "asked": 1, - "for.": 1, - "So": 1, - "please": 2, - "dont": 1, - "request.": 1, - "Arjan": 2, - "reports": 1, - "prevent": 4, - "fragment": 2, - "struct": 12, - "sched_param": 1, - "sp": 4, - "memset": 3, - "&": 149, - "sizeof": 15, - "sp.sched_priority": 1, - "sched_get_priority_max": 1, - "SCHED_FIFO": 2, - "sched_setscheduler": 1, - "mlockall": 1, - "MCL_CURRENT": 1, - "|": 14, - "MCL_FUTURE": 1, - "Open": 2, - "Source": 2, - "Licensing": 2, - "GPL": 2, - "appropriate": 7, - "option": 1, - "if": 306, - "want": 5, - "share": 2, - "source": 12, - "application": 2, - "everyone": 1, - "distribute": 1, - "give": 2, - "them": 1, - "right": 9, - "who": 1, - "uses": 4, - "it.": 3, - "wish": 2, - "software": 1, - "under": 2, - "contribute": 1, - "open": 6, - "community": 1, - "accordance": 1, - "distributed.": 1, - "//www.gnu.org/copyleft/gpl.html": 1, - "COPYING": 1, - "Acknowledgements": 1, - "Some": 1, - "inspired": 2, - "Dom": 1, - "Gert.": 1, - "Alan": 1, - "Barr.": 1, - "Revision": 1, - "History": 1, - "Initial": 1, - "release": 1, - "Minor": 1, - "bug": 1, - "fixes": 1, - "Added": 11, - "bcm2835_spi_transfern": 3, - "Fixed": 4, - "problem": 2, - "prevented": 1, - "being": 4, - "used.": 2, - "Reported": 5, - "David": 1, - "Robinson.": 1, - "bcm2835_close": 4, - "deinit": 1, - "library.": 3, - "Suggested": 1, - "sar": 1, - "Ortiz": 1, - "Document": 1, - "testing": 1, - "Functions": 1, - "bcm2835_gpio_ren": 3, - "bcm2835_gpio_fen": 3, - "bcm2835_gpio_hen": 3, - "bcm2835_gpio_aren": 3, - "bcm2835_gpio_afen": 3, - "now": 4, - "only": 6, - "specified.": 1, - "Other": 1, - "were": 1, - "already": 1, - "previously": 10, - "enabled": 4, - "stay": 1, - "enabled.": 1, - "bcm2835_gpio_clr_ren": 2, - "bcm2835_gpio_clr_fen": 2, - "bcm2835_gpio_clr_hen": 2, - "bcm2835_gpio_clr_len": 2, - "bcm2835_gpio_clr_aren": 2, - "bcm2835_gpio_clr_afen": 2, - "clear": 3, - "enable": 3, - "individual": 1, - "suggested": 3, - "Andreas": 1, - "Sundstrom.": 1, - "bcm2835_spi_transfernb": 2, - "buffers": 3, - "read": 21, - "write.": 1, - "Improvements": 3, - "barrier": 3, - "maddin.": 1, - "contributed": 1, - "mikew": 1, - "noticed": 1, - "was": 6, - "mallocing": 1, - "memory": 14, - "mmaps": 1, - "/dev/mem.": 1, - "ve": 4, - "removed": 1, - "mallocs": 1, - "frees": 1, - "found": 1, - "calling": 8, - "nanosleep": 7, - "takes": 1, - "least": 2, - "us.": 1, - "need": 3, - "link": 3, - "version.": 1, - "s": 18, - "doc": 1, - "Also": 1, - "added": 2, - "define": 2, - "passwrd": 1, - "value": 50, - "Gert": 1, - "says": 1, - "needed": 3, - "change": 3, - "pad": 4, - "settings.": 1, - "Changed": 1, - "names": 3, - "collisions": 1, - "wiringPi.": 1, - "Macros": 2, - "delayMicroseconds": 3, - "disabled": 2, - "defining": 1, - "BCM2835_NO_DELAY_COMPATIBILITY": 2, - "incorrect": 2, - "New": 6, - "mapping": 3, - "Hardware": 1, - "pointers": 2, - "initialisation": 2, - "externally": 1, - "bcm2835_spi0.": 1, - "Now": 4, - "compiles": 1, - "even": 2, - "CLOCK_MONOTONIC_RAW": 1, - "CLOCK_MONOTONIC": 1, - "instead.": 1, - "errors": 1, - "divider": 15, - "frequencies": 2, - "MHz": 14, - "clock.": 6, - "Ben": 1, - "Simpson.": 1, - "end": 23, - "examples": 1, - "Mark": 5, - "Wolfe.": 1, - "bcm2835_gpio_set_multi": 2, - "bcm2835_gpio_clr_multi": 2, - "bcm2835_gpio_write_multi": 4, - "mask": 20, - "once.": 1, - "Requested": 2, - "Sebastian": 2, - "Loncar.": 2, - "bcm2835_gpio_write_mask.": 1, - "Changes": 1, - "timer": 2, - "counter": 1, - "instead": 1, - "clock_gettime": 1, - "improved": 1, - "accuracy.": 1, - "No": 2, - "lrt": 1, - "now.": 1, - "Contributed": 1, - "van": 1, - "Vught.": 1, - "Removed": 1, - "inlines": 1, - "previous": 6, - "patch": 1, - "since": 3, - "don": 1, - "t": 15, - "seem": 1, - "work": 1, - "everywhere.": 1, - "olly.": 1, - "Patch": 2, - "Dootson": 2, - "close": 3, - "/dev/mem": 4, - "granted.": 1, - "susceptible": 1, - "bit": 19, - "overruns.": 1, - "courtesy": 1, - "Jeremy": 1, - "Mortis.": 1, - "definition": 3, - "BCM2835_GPFEN0": 2, - "broke": 1, - "ability": 1, - "falling": 4, - "edge": 8, - "events.": 1, - "Dootson.": 2, - "bcm2835_i2c_set_baudrate": 2, - "bcm2835_i2c_read_register_rs.": 1, - "bcm2835_i2c_read": 4, - "bcm2835_i2c_write": 4, - "fix": 1, - "ocasional": 1, - "reads": 2, - "completing.": 1, - "Patched": 1, - "p": 6, - "[": 274, - "atched": 1, - "his": 1, - "submitted": 1, - "high": 1, - "load": 1, - "processes.": 1, - "Updated": 1, - "distribution": 1, - "location": 6, - "details": 1, - "airspayce.com": 1, - "missing": 1, - "unmapmem": 1, - "pads": 7, - "leak.": 1, - "Hartmut": 1, - "Henkel.": 1, - "Mike": 1, - "McCauley": 1, - "mikem@airspayce.com": 1, - "DO": 1, - "NOT": 3, - "CONTACT": 1, - "THE": 2, - "AUTHOR": 1, - "DIRECTLY": 1, - "USE": 1, - "LISTS": 1, - "#ifndef": 27, - "BCM2835_H": 3, - "#define": 341, - "#include": 121, - "": 2, - "defgroup": 7, - "constants": 1, - "Constants": 1, - "passing": 1, - "values": 3, - "here": 1, - "@": 14, - "HIGH": 12, - "true": 41, - "volts": 2, - "pin.": 21, - "false": 45, - "Speed": 1, - "core": 1, - "clock": 21, - "core_clk": 1, - "BCM2835_CORE_CLK_HZ": 1, - "<": 247, - "Base": 17, - "Address": 10, - "BCM2835_PERI_BASE": 9, - "System": 10, - "Timer": 9, - "BCM2835_ST_BASE": 1, - "BCM2835_GPIO_PADS": 2, - "Clock/timer": 1, - "BCM2835_CLOCK_BASE": 1, - "BCM2835_GPIO_BASE": 6, - "BCM2835_SPI0_BASE": 1, - "BSC0": 2, - "BCM2835_BSC0_BASE": 1, - "PWM": 2, - "BCM2835_GPIO_PWM": 1, - "C000": 1, - "BSC1": 2, - "BCM2835_BSC1_BASE": 1, - "ST": 1, - "registers.": 10, - "Available": 8, - "bcm2835_init": 11, - "extern": 72, - "volatile": 13, - "uint32_t": 37, - "*bcm2835_st": 1, - "*bcm2835_gpio": 1, - "*bcm2835_pwm": 1, - "*bcm2835_clk": 1, - "PADS": 1, - "*bcm2835_pads": 1, - "*bcm2835_spi0": 1, - "*bcm2835_bsc0": 1, - "*bcm2835_bsc1": 1, - "Size": 2, - "page": 5, - "BCM2835_PAGE_SIZE": 1, - "*1024": 2, - "block": 4, - "BCM2835_BLOCK_SIZE": 1, - "offsets": 2, - "BCM2835_GPIO_BASE.": 1, - "Offsets": 1, - "into": 6, - "bytes": 29, - "per": 3, - "Register": 1, - "View": 1, - "BCM2835_GPFSEL0": 1, - "Function": 8, - "Select": 49, - "BCM2835_GPFSEL1": 1, - "BCM2835_GPFSEL2": 1, - "BCM2835_GPFSEL3": 1, - "c": 62, - "BCM2835_GPFSEL4": 1, - "BCM2835_GPFSEL5": 1, - "BCM2835_GPSET0": 1, - "Output": 6, - "Set": 2, - "BCM2835_GPSET1": 1, - "BCM2835_GPCLR0": 1, - "Clear": 18, - "BCM2835_GPCLR1": 1, - "BCM2835_GPLEV0": 1, - "Level": 2, - "BCM2835_GPLEV1": 1, - "BCM2835_GPEDS0": 1, - "Event": 11, - "Detect": 35, - "Status": 6, - "BCM2835_GPEDS1": 1, - "BCM2835_GPREN0": 1, - "Rising": 8, - "Edge": 16, - "Enable": 38, - "BCM2835_GPREN1": 1, - "Falling": 8, - "BCM2835_GPFEN1": 1, - "BCM2835_GPHEN0": 1, - "High": 4, - "BCM2835_GPHEN1": 1, - "BCM2835_GPLEN0": 1, - "Low": 5, - "BCM2835_GPLEN1": 1, - "BCM2835_GPAREN0": 1, - "Async.": 4, - "BCM2835_GPAREN1": 1, - "BCM2835_GPAFEN0": 1, - "BCM2835_GPAFEN1": 1, - "BCM2835_GPPUD": 1, - "Pull": 11, - "up/down": 10, - "BCM2835_GPPUDCLK0": 1, - "Clock": 11, - "BCM2835_GPPUDCLK1": 1, - "brief": 12, - "bcm2835PortFunction": 1, - "Port": 1, - "function": 18, - "select": 9, - "modes": 1, - "bcm2835_gpio_fsel": 2, - "typedef": 50, - "enum": 17, - "BCM2835_GPIO_FSEL_INPT": 1, - "b000": 1, - "Input": 2, - "BCM2835_GPIO_FSEL_OUTP": 1, - "b001": 1, - "BCM2835_GPIO_FSEL_ALT0": 1, - "b100": 1, - "Alternate": 6, - "BCM2835_GPIO_FSEL_ALT1": 1, - "b101": 1, - "BCM2835_GPIO_FSEL_ALT2": 1, - "b110": 1, - "BCM2835_GPIO_FSEL_ALT3": 1, - "b111": 2, - "BCM2835_GPIO_FSEL_ALT4": 1, - "b011": 1, - "BCM2835_GPIO_FSEL_ALT5": 1, - "b010": 1, - "BCM2835_GPIO_FSEL_MASK": 1, - "bits": 11, - "bcm2835FunctionSelect": 2, - "bcm2835PUDControl": 4, - "Pullup/Pulldown": 1, - "defines": 3, - "bcm2835_gpio_pud": 5, - "BCM2835_GPIO_PUD_OFF": 1, - "b00": 1, - "Off": 3, - "pull": 1, - "BCM2835_GPIO_PUD_DOWN": 1, - "b01": 1, - "Down": 1, - "BCM2835_GPIO_PUD_UP": 1, - "b10": 1, - "Up": 1, - "Pad": 11, - "BCM2835_PADS_GPIO_0_27": 1, - "BCM2835_PADS_GPIO_28_45": 1, - "BCM2835_PADS_GPIO_46_53": 1, - "Control": 6, - "masks": 1, - "BCM2835_PAD_PASSWRD": 1, - "A": 7, - "<<": 29, - "Password": 1, - "BCM2835_PAD_SLEW_RATE_UNLIMITED": 1, - "Slew": 1, - "rate": 3, - "unlimited": 1, - "BCM2835_PAD_HYSTERESIS_ENABLED": 1, - "Hysteresis": 1, - "BCM2835_PAD_DRIVE_2mA": 1, - "mA": 8, - "drive": 8, - "current": 26, - "BCM2835_PAD_DRIVE_4mA": 1, - "BCM2835_PAD_DRIVE_6mA": 1, - "BCM2835_PAD_DRIVE_8mA": 1, - "BCM2835_PAD_DRIVE_10mA": 1, - "BCM2835_PAD_DRIVE_12mA": 1, - "BCM2835_PAD_DRIVE_14mA": 1, - "BCM2835_PAD_DRIVE_16mA": 1, - "bcm2835PadGroup": 4, - "specification": 1, - "bcm2835_gpio_pad": 2, - "BCM2835_PAD_GROUP_GPIO_0_27": 1, - "BCM2835_PAD_GROUP_GPIO_28_45": 1, - "BCM2835_PAD_GROUP_GPIO_46_53": 1, - "Numbers": 1, - "Here": 1, - "we": 4, - "terms": 4, - "numbers.": 1, - "These": 6, - "requiring": 1, - "bin": 1, - "connected": 1, - "adopt": 1, - "alternate": 7, - "function.": 3, - "slightly": 1, - "pinouts": 1, - "these": 1, - "RPI_V2_*.": 1, - "At": 1, - "bootup": 1, - "UART0_TXD": 3, - "UART0_RXD": 3, - "ie": 3, - "alt0": 1, - "respectively": 1, - "dedicated": 1, - "cant": 1, - "controlled": 1, - "independently": 1, - "RPI_GPIO_P1_03": 6, - "RPI_GPIO_P1_05": 6, - "RPI_GPIO_P1_07": 1, - "RPI_GPIO_P1_08": 1, - "defaults": 4, - "alt": 4, - "RPI_GPIO_P1_10": 1, - "RPI_GPIO_P1_11": 1, - "RPI_GPIO_P1_12": 1, - "RPI_GPIO_P1_13": 1, - "RPI_GPIO_P1_15": 1, - "RPI_GPIO_P1_16": 1, - "RPI_GPIO_P1_18": 1, - "RPI_GPIO_P1_19": 1, - "RPI_GPIO_P1_21": 1, - "RPI_GPIO_P1_22": 1, - "RPI_GPIO_P1_23": 1, - "RPI_GPIO_P1_24": 1, - "RPI_GPIO_P1_26": 1, - "RPI_V2_GPIO_P1_03": 1, - "RPI_V2_GPIO_P1_05": 1, - "RPI_V2_GPIO_P1_07": 1, - "RPI_V2_GPIO_P1_08": 1, - "RPI_V2_GPIO_P1_10": 1, - "RPI_V2_GPIO_P1_11": 1, - "RPI_V2_GPIO_P1_12": 1, - "RPI_V2_GPIO_P1_13": 1, - "RPI_V2_GPIO_P1_15": 1, - "RPI_V2_GPIO_P1_16": 1, - "RPI_V2_GPIO_P1_18": 1, - "RPI_V2_GPIO_P1_19": 1, - "RPI_V2_GPIO_P1_21": 1, - "RPI_V2_GPIO_P1_22": 1, - "RPI_V2_GPIO_P1_23": 1, - "RPI_V2_GPIO_P1_24": 1, - "RPI_V2_GPIO_P1_26": 1, - "RPI_V2_GPIO_P5_03": 1, - "RPI_V2_GPIO_P5_04": 1, - "RPI_V2_GPIO_P5_05": 1, - "RPI_V2_GPIO_P5_06": 1, - "RPiGPIOPin": 1, - "BCM2835_SPI0_CS": 1, - "Master": 12, - "BCM2835_SPI0_FIFO": 1, - "TX": 5, - "RX": 7, - "FIFOs": 1, - "BCM2835_SPI0_CLK": 1, - "Divider": 2, - "BCM2835_SPI0_DLEN": 1, - "Data": 9, - "Length": 2, - "BCM2835_SPI0_LTOH": 1, - "LOSSI": 1, - "mode": 24, - "TOH": 1, - "BCM2835_SPI0_DC": 1, - "DMA": 3, - "DREQ": 1, - "Controls": 1, - "BCM2835_SPI0_CS_LEN_LONG": 1, - "Long": 1, - "word": 7, - "Lossi": 2, - "DMA_LEN": 1, - "BCM2835_SPI0_CS_DMA_LEN": 1, - "BCM2835_SPI0_CS_CSPOL2": 1, - "Chip": 9, - "Polarity": 5, - "BCM2835_SPI0_CS_CSPOL1": 1, - "BCM2835_SPI0_CS_CSPOL0": 1, - "BCM2835_SPI0_CS_RXF": 1, - "RXF": 2, - "FIFO": 25, - "Full": 1, - "BCM2835_SPI0_CS_RXR": 1, - "RXR": 3, - "needs": 3, - "Reading": 1, - "full": 9, - "BCM2835_SPI0_CS_TXD": 1, - "TXD": 2, - "accept": 2, - "BCM2835_SPI0_CS_RXD": 1, - "RXD": 2, - "contains": 2, - "BCM2835_SPI0_CS_DONE": 1, - "Done": 3, - "transfer": 8, - "BCM2835_SPI0_CS_TE_EN": 1, - "Unused": 2, - "BCM2835_SPI0_CS_LMONO": 1, - "BCM2835_SPI0_CS_LEN": 1, - "LEN": 1, - "LoSSI": 1, - "BCM2835_SPI0_CS_REN": 1, - "REN": 1, - "Read": 3, - "BCM2835_SPI0_CS_ADCS": 1, - "ADCS": 1, - "Automatically": 1, - "Deassert": 1, - "BCM2835_SPI0_CS_INTR": 1, - "INTR": 1, - "Interrupt": 5, - "BCM2835_SPI0_CS_INTD": 1, - "INTD": 1, - "BCM2835_SPI0_CS_DMAEN": 1, - "DMAEN": 1, - "BCM2835_SPI0_CS_TA": 1, - "Transfer": 3, - "Active": 2, - "BCM2835_SPI0_CS_CSPOL": 1, - "BCM2835_SPI0_CS_CLEAR": 1, - "BCM2835_SPI0_CS_CLEAR_RX": 1, - "BCM2835_SPI0_CS_CLEAR_TX": 1, - "BCM2835_SPI0_CS_CPOL": 1, - "BCM2835_SPI0_CS_CPHA": 1, - "Phase": 1, - "BCM2835_SPI0_CS_CS": 1, - "bcm2835SPIBitOrder": 3, - "Bit": 1, - "Specifies": 5, - "ordering": 4, - "bcm2835_spi_setBitOrder": 2, - "BCM2835_SPI_BIT_ORDER_LSBFIRST": 1, - "LSB": 1, - "First": 2, - "BCM2835_SPI_BIT_ORDER_MSBFIRST": 1, - "MSB": 1, - "Specify": 2, - "bcm2835_spi_setDataMode": 2, - "BCM2835_SPI_MODE0": 1, - "CPOL": 4, - "CPHA": 4, - "BCM2835_SPI_MODE1": 1, - "BCM2835_SPI_MODE2": 1, - "BCM2835_SPI_MODE3": 1, - "bcm2835SPIMode": 2, - "bcm2835SPIChipSelect": 3, - "BCM2835_SPI_CS0": 1, - "BCM2835_SPI_CS1": 1, - "BCM2835_SPI_CS2": 1, - "CS1": 1, - "CS2": 1, - "asserted": 3, - "BCM2835_SPI_CS_NONE": 1, - "CS": 5, - "yourself": 1, - "bcm2835SPIClockDivider": 3, - "generate": 2, - "Figures": 1, - "below": 1, - "period": 1, - "frequency.": 1, - "divided": 2, - "nominal": 2, - "reported": 2, - "contrary": 1, - "may": 9, - "shown": 1, - "have": 4, - "confirmed": 1, - "measurement": 2, - "BCM2835_SPI_CLOCK_DIVIDER_65536": 1, - "us": 12, - "kHz": 10, - "BCM2835_SPI_CLOCK_DIVIDER_32768": 1, - "BCM2835_SPI_CLOCK_DIVIDER_16384": 1, - "BCM2835_SPI_CLOCK_DIVIDER_8192": 1, - "/51757813kHz": 1, - "BCM2835_SPI_CLOCK_DIVIDER_4096": 1, - "BCM2835_SPI_CLOCK_DIVIDER_2048": 1, - "BCM2835_SPI_CLOCK_DIVIDER_1024": 1, - "BCM2835_SPI_CLOCK_DIVIDER_512": 1, - "BCM2835_SPI_CLOCK_DIVIDER_256": 1, - "BCM2835_SPI_CLOCK_DIVIDER_128": 1, - "ns": 9, - "BCM2835_SPI_CLOCK_DIVIDER_64": 1, - "BCM2835_SPI_CLOCK_DIVIDER_32": 1, - "BCM2835_SPI_CLOCK_DIVIDER_16": 1, - "BCM2835_SPI_CLOCK_DIVIDER_8": 1, - "BCM2835_SPI_CLOCK_DIVIDER_4": 1, - "BCM2835_SPI_CLOCK_DIVIDER_2": 1, - "fastest": 1, - "BCM2835_SPI_CLOCK_DIVIDER_1": 1, - "same": 3, - "/65536": 1, - "BCM2835_BSC_C": 1, - "BCM2835_BSC_S": 1, - "BCM2835_BSC_DLEN": 1, - "BCM2835_BSC_A": 1, - "Slave": 1, - "BCM2835_BSC_FIFO": 1, - "BCM2835_BSC_DIV": 1, - "BCM2835_BSC_DEL": 1, - "Delay": 4, - "BCM2835_BSC_CLKT": 1, - "Stretch": 2, - "Timeout": 2, - "BCM2835_BSC_C_I2CEN": 1, - "BCM2835_BSC_C_INTR": 1, - "BCM2835_BSC_C_INTT": 1, - "BCM2835_BSC_C_INTD": 1, - "DONE": 2, - "BCM2835_BSC_C_ST": 1, - "Start": 4, - "new": 13, - "BCM2835_BSC_C_CLEAR_1": 1, - "BCM2835_BSC_C_CLEAR_2": 1, - "BCM2835_BSC_C_READ": 1, - "BCM2835_BSC_S_CLKT": 1, - "stretch": 1, - "timeout": 1, - "BCM2835_BSC_S_ERR": 1, - "ACK": 1, - "error": 2, - "BCM2835_BSC_S_RXF": 1, - "BCM2835_BSC_S_TXE": 1, - "TXE": 1, - "BCM2835_BSC_S_RXD": 1, - "BCM2835_BSC_S_TXD": 1, - "BCM2835_BSC_S_RXR": 1, - "BCM2835_BSC_S_TXW": 1, - "TXW": 1, - "writing": 2, - "BCM2835_BSC_S_DONE": 1, - "BCM2835_BSC_S_TA": 1, - "BCM2835_BSC_FIFO_SIZE": 1, - "size": 13, - "bcm2835I2CClockDivider": 3, - "BCM2835_I2C_CLOCK_DIVIDER_2500": 1, - "BCM2835_I2C_CLOCK_DIVIDER_626": 1, - "BCM2835_I2C_CLOCK_DIVIDER_150": 1, - "reset": 1, - "BCM2835_I2C_CLOCK_DIVIDER_148": 1, - "bcm2835I2CReasonCodes": 5, - "reason": 4, - "codes": 1, - "BCM2835_I2C_REASON_OK": 1, - "Success": 1, - "BCM2835_I2C_REASON_ERROR_NACK": 1, - "Received": 4, - "NACK": 1, - "BCM2835_I2C_REASON_ERROR_CLKT": 1, - "BCM2835_I2C_REASON_ERROR_DATA": 1, - "sent": 1, - "/": 14, - "BCM2835_ST_CS": 1, - "Control/Status": 1, - "BCM2835_ST_CLO": 1, - "Counter": 4, - "Lower": 2, - "BCM2835_ST_CHI": 1, - "Upper": 1, - "BCM2835_PWM_CONTROL": 1, - "BCM2835_PWM_STATUS": 1, - "BCM2835_PWM0_RANGE": 1, - "BCM2835_PWM0_DATA": 1, - "BCM2835_PWM1_RANGE": 1, - "BCM2835_PWM1_DATA": 1, - "BCM2835_PWMCLK_CNTL": 1, - "BCM2835_PWMCLK_DIV": 1, - "BCM2835_PWM1_MS_MODE": 1, - "Run": 4, - "MS": 2, - "BCM2835_PWM1_USEFIFO": 1, - "BCM2835_PWM1_REVPOLAR": 1, - "Reverse": 2, - "polarity": 3, - "BCM2835_PWM1_OFFSTATE": 1, - "Ouput": 2, - "BCM2835_PWM1_REPEATFF": 1, - "Repeat": 2, - "last": 6, - "empty": 2, - "BCM2835_PWM1_SERIAL": 1, - "serial": 2, - "BCM2835_PWM1_ENABLE": 1, - "Channel": 2, - "BCM2835_PWM0_MS_MODE": 1, - "BCM2835_PWM0_USEFIFO": 1, - "BCM2835_PWM0_REVPOLAR": 1, - "BCM2835_PWM0_OFFSTATE": 1, - "BCM2835_PWM0_REPEATFF": 1, - "BCM2835_PWM0_SERIAL": 1, - "BCM2835_PWM0_ENABLE": 1, - "x": 48, - "#endif": 89, - "#ifdef": 19, - "__cplusplus": 12, - "init": 2, - "Library": 1, - "management": 1, - "intialise": 1, - "Initialise": 1, - "opening": 1, - "getting": 1, - "internal": 47, - "device": 7, - "call": 4, - "successfully": 1, - "before": 7, - "bcm2835_set_debug": 2, - "fails": 1, - "returning": 1, - "result": 2, - "crashes": 1, - "failures.": 1, - "Prints": 1, - "messages": 1, - "stderr": 1, - "case": 34, - "errors.": 1, - "successful": 2, - "else": 48, - "int": 161, - "Close": 1, - "deallocating": 1, - "allocated": 2, - "closing": 1, - "Sets": 24, - "debug": 6, - "prevents": 1, - "makes": 1, - "print": 5, - "out": 5, - "what": 2, - "would": 2, - "do": 9, - "rather": 2, - "causes": 1, - "normal": 1, - "operation.": 2, - "Call": 2, - "param": 72, - "]": 273, - "level.": 3, - "uint8_t": 43, - "lowlevel": 2, - "provide": 1, - "generally": 1, - "Reads": 5, - "done": 3, - "twice": 3, - "therefore": 6, - "always": 3, - "safe": 4, - "precautions": 3, - "correct": 3, - "paddr": 10, - "from.": 6, - "etc.": 5, - "sa": 30, - "uint32_t*": 7, - "without": 3, - "within": 4, - "occurred": 2, - "since.": 2, - "bcm2835_peri_read_nb": 1, - "Writes": 2, - "write": 8, - "bcm2835_peri_write_nb": 1, - "Alters": 1, - "regsiter.": 1, - "valu": 1, - "alters": 1, - "deines": 1, - "according": 1, - "value.": 2, - "All": 1, - "unaffected.": 1, - "Use": 8, - "alter": 2, - "subset": 1, - "register.": 3, - "masked": 2, - "mask.": 1, - "Bitmask": 1, - "altered": 1, - "gpio": 1, - "interface.": 3, - "input": 12, - "output": 21, - "state.": 1, - "given": 16, - "configures": 1, - "RPI_GPIO_P1_*": 21, - "Mode": 1, - "BCM2835_GPIO_FSEL_*": 1, - "specified": 27, - "HIGH.": 2, - "bcm2835_gpio_write": 3, - "bcm2835_gpio_set": 1, - "LOW.": 5, - "bcm2835_gpio_clr": 1, - "first": 13, - "Mask": 6, - "affect.": 4, - "eg": 5, - "returns": 4, - "either": 4, - "Works": 1, - "whether": 4, - "output.": 1, - "bcm2835_gpio_lev": 1, - "Status.": 7, - "Tests": 1, - "detected": 7, - "requested": 1, - "flag": 1, - "bcm2835_gpio_set_eds": 2, - "status": 1, - "th": 1, - "true.": 2, - "bcm2835_gpio_eds": 1, - "effect": 3, - "clearing": 1, - "flag.": 1, - "afer": 1, - "seeing": 1, - "rising": 3, - "sets": 8, - "GPRENn": 2, - "synchronous": 2, - "detection.": 2, - "signal": 4, - "sampled": 6, - "looking": 2, - "pattern": 2, - "signal.": 2, - "suppressing": 2, - "glitches.": 2, - "Disable": 6, - "Asynchronous": 6, - "incoming": 2, - "As": 2, - "edges": 2, - "very": 2, - "short": 5, - "duration": 2, - "detected.": 2, - "bcm2835_gpio_pudclk": 3, - "resistor": 1, - "However": 3, - "convenient": 2, - "bcm2835_gpio_set_pud": 4, - "pud": 4, - "desired": 7, - "mode.": 4, - "One": 3, - "BCM2835_GPIO_PUD_*": 2, - "Clocks": 3, - "earlier": 1, - "remove": 2, - "group.": 2, - "BCM2835_PAD_GROUP_GPIO_*": 2, - "BCM2835_PAD_*": 2, - "bcm2835_gpio_set_pad": 1, - "Delays": 3, - "milliseconds.": 1, - "Uses": 4, - "CPU": 5, - "until": 1, - "up.": 1, - "mercy": 2, - "From": 2, - "interval": 4, - "req": 2, - "exact": 2, - "multiple": 2, - "granularity": 2, - "rounded": 2, - "next": 9, - "multiple.": 2, - "Furthermore": 2, - "sleep": 2, - "completes": 2, - "still": 3, - "becomes": 2, - "free": 4, - "once": 5, - "again": 2, - "execute": 3, - "thread.": 2, - "millis": 2, - "milliseconds": 1, - "unsigned": 22, - "microseconds.": 2, - "combination": 2, - "busy": 2, - "wait": 2, - "timers": 1, - "less": 1, - "microseconds": 6, - "Timer.": 1, - "RaspberryPi": 1, - "Your": 1, - "mileage": 1, - "vary.": 1, - "micros": 5, - "uint64_t": 8, - "required": 2, - "bcm2835_gpio_write_mask": 1, - "clocking": 1, - "spi": 1, - "let": 2, - "device.": 2, - "operations.": 4, - "Forces": 2, - "ALT0": 2, - "funcitons": 1, - "complete": 2, - "End": 2, - "returned": 5, - "INPUT": 2, - "behaviour.": 2, - "NOTE": 1, - "effect.": 1, - "SPI0.": 1, - "Defaults": 1, - "BCM2835_SPI_BIT_ORDER_*": 1, - "speed.": 2, - "BCM2835_SPI_CLOCK_DIVIDER_*": 1, - "bcm2835_spi_setClockDivider": 1, - "uint16_t": 2, - "polariy": 1, - "phase": 1, - "BCM2835_SPI_MODE*": 1, - "bcm2835_spi_transfer": 5, - "made": 1, - "selected": 13, - "during": 4, - "transfer.": 4, - "cs": 4, - "activate": 1, - "slave.": 7, - "BCM2835_SPI_CS*": 1, - "bcm2835_spi_chipSelect": 4, - "occurs": 1, - "currently": 12, - "active.": 1, - "transfers": 1, - "happening": 1, - "complement": 1, - "inactive": 1, - "affect": 1, - "active": 3, - "Whether": 1, - "bcm2835_spi_setChipSelectPolarity": 1, - "Transfers": 6, - "byte": 6, - "Asserts": 3, - "simultaneously": 3, - "clocks": 2, - "MISO.": 2, - "Returns": 2, - "polled": 2, - "Peripherls": 2, - "len": 15, - "slave": 8, - "placed": 1, - "rbuf.": 1, - "rbuf": 3, - "long": 11, - "tbuf": 4, - "Buffer": 10, - "send.": 5, - "put": 1, - "buffer": 9, - "Number": 8, - "send/received": 2, - "char*": 24, - "bcm2835_spi_transfernb.": 1, - "replaces": 1, - "transmitted": 1, - "buffer.": 1, - "buf": 14, - "replace": 1, - "contents": 3, - "eh": 2, - "bcm2835_spi_writenb": 1, - "i2c": 1, - "Philips": 1, - "bus/interface": 1, - "January": 1, - "SCL": 2, - "bcm2835_i2c_end": 3, - "bcm2835_i2c_begin": 1, - "address.": 2, - "addr": 2, - "bcm2835_i2c_setSlaveAddress": 4, - "BCM2835_I2C_CLOCK_DIVIDER_*": 1, - "bcm2835_i2c_setClockDivider": 2, - "converting": 1, - "baudrate": 4, - "parameter": 1, - "equivalent": 1, - "divider.": 1, - "standard": 2, - "khz": 1, - "corresponds": 1, - "its": 1, - "driver.": 1, - "Of": 1, - "course": 2, - "nothing": 1, - "driver": 1, - "const": 170, - "*": 161, - "receive.": 2, - "received.": 2, - "Allows": 2, - "slaves": 1, - "require": 3, - "repeated": 1, - "start": 12, - "prior": 1, - "stop": 1, - "set.": 1, - "popular": 1, - "MPL3115A2": 1, - "pressure": 1, - "temperature": 1, - "sensor.": 1, - "Note": 1, - "combined": 1, - "better": 1, - "choice.": 1, - "Will": 1, - "regaddr": 2, - "containing": 2, - "bcm2835_i2c_read_register_rs": 1, - "st": 1, - "delays": 1, - "Counter.": 1, - "bcm2835_st_read": 1, - "offset.": 1, - "offset_micros": 2, - "Offset": 1, - "bcm2835_st_delay": 1, - "@example": 5, - "blink.c": 1, - "Blinks": 1, - "off": 1, - "input.c": 1, - "event.c": 1, - "Shows": 3, - "how": 3, - "spi.c": 1, - "spin.c": 1, - "#pragma": 3, - "": 4, - "": 4, - "": 2, - "namespace": 31, - "std": 52, - "DEFAULT_DELIMITER": 1, - "CsvStreamer": 5, - "private": 16, - "ofstream": 1, - "File": 1, - "stream": 6, - "vector": 16, - "row_buffer": 1, - "stores": 3, - "row": 12, - "flushed/written": 1, - "fields": 4, - "columns": 2, - "rows": 3, - "records": 2, - "including": 2, - "delimiter": 2, - "Delimiter": 1, - "character": 10, - "comma": 2, - "string": 24, - "sanitize": 1, - "ready": 1, - "Empty": 1, - "CSV": 4, - "streamer...": 1, - "Same": 1, - "...": 1, - "Opens": 3, - "path/name": 3, - "Ensures": 1, - "closed": 1, - "saved": 1, - "delimiting": 1, - "add_field": 1, - "line": 11, - "adds": 1, - "field": 5, - "save_fields": 1, - "save": 1, - "writes": 2, - "append": 8, - "Appends": 5, - "quoted": 1, - "leading/trailing": 1, - "spaces": 3, - "trimmed": 1, - "bool": 104, - "Like": 1, - "specify": 1, - "trim": 2, - "keep": 1, - "float": 8, - "double": 25, - "writeln": 1, - "Flushes": 1, - "Saves": 1, - "closes": 1, - "field_count": 1, - "Gets": 2, - "row_count": 1, - "": 1, - "": 1, - "": 2, - "static": 262, - "Env": 13, - "*env_instance": 1, - "NULL": 109, - "*Env": 1, - "instance": 4, - "env_instance": 3, - "QObject": 2, - "QCoreApplication": 1, - "parse": 3, - "**envp": 1, - "**env": 1, - "**": 2, - "QString": 20, - "envvar": 2, - "name": 25, - "indexOfEquals": 5, - "env": 3, - "envp": 4, - "*env": 1, - "envvar.indexOf": 1, - "continue": 2, - "envvar.left": 1, - "envvar.mid": 1, - "m_map.insert": 1, - "QVariantMap": 3, - "asVariantMap": 2, - "m_map": 2, - "ENV_H": 3, - "": 1, - "Q_OBJECT": 1, - "*instance": 1, - "Field": 2, - "Free": 1, - "Black": 1, - "White": 1, - "Illegal": 1, - "Player": 1, - "GDSDBREADER_H": 3, - "": 1, - "GDS_DIR": 1, - "LEVEL_ONE": 1, - "LEVEL_TWO": 1, - "LEVEL_THREE": 1, - "dbDataStructure": 2, - "label": 1, - "quint32": 3, - "depth": 1, - "userIndex": 1, - "QByteArray": 1, - "COMPRESSED": 1, - "optimize": 1, - "ram": 1, - "disk": 2, - "space": 2, - "decompressed": 1, - "quint64": 1, - "uniqueID": 1, - "QVector": 2, - "": 1, - "nextItems": 1, - "": 1, - "nextItemsIndices": 1, - "dbDataStructure*": 1, - "father": 1, - "fatherIndex": 1, - "noFatherRoot": 1, - "Used": 2, - "tell": 1, - "node": 1, - "root": 1, - "hasn": 1, - "argument": 1, - "list": 3, - "operator": 10, - "overload.": 1, - "friend": 10, - "myclass.label": 2, - "myclass.depth": 2, - "myclass.userIndex": 2, - "qCompress": 2, - "myclass.data": 4, - "myclass.uniqueID": 2, - "myclass.nextItemsIndices": 2, - "myclass.fatherIndex": 2, - "myclass.noFatherRoot": 2, - "myclass.fileName": 2, - "myclass.firstLineData": 4, - "myclass.linesNumbers": 2, - "QDataStream": 2, - "myclass": 1, - "//Don": 1, - "qUncompress": 2, - "": 2, - "main": 2, - "cout": 2, - "endl": 1, - "": 1, - "": 1, - "": 1, - "EC_KEY_regenerate_key": 1, - "EC_KEY": 3, - "*eckey": 2, - "BIGNUM": 9, - "*priv_key": 1, - "ok": 3, - "BN_CTX": 2, - "*ctx": 2, - "EC_POINT": 4, - "*pub_key": 1, - "eckey": 7, - "EC_GROUP": 2, - "*group": 2, - "EC_KEY_get0_group": 2, - "ctx": 26, - "BN_CTX_new": 2, - "goto": 156, - "err": 26, - "pub_key": 6, - "EC_POINT_new": 4, - "EC_POINT_mul": 3, - "priv_key": 2, - "EC_KEY_set_private_key": 1, - "EC_KEY_set_public_key": 2, - "EC_POINT_free": 4, - "BN_CTX_free": 2, - "ECDSA_SIG_recover_key_GFp": 3, - "ECDSA_SIG": 3, - "*ecsig": 1, - "*msg": 2, - "msglen": 2, - "recid": 3, - "ret": 24, - "*x": 1, - "*e": 1, - "*order": 1, - "*sor": 1, - "*eor": 1, - "*field": 1, - "*R": 1, - "*O": 1, - "*Q": 1, - "*rr": 1, - "*zero": 1, - "n": 28, - "i": 47, - "BN_CTX_start": 1, - "BN_CTX_get": 8, - "EC_GROUP_get_order": 1, - "BN_copy": 1, - "BN_mul_word": 1, - "BN_add": 1, - "ecsig": 3, - "r": 36, - "EC_GROUP_get_curve_GFp": 1, - "BN_cmp": 1, - "R": 6, - "EC_POINT_set_compressed_coordinates_GFp": 1, - "O": 5, - "EC_POINT_is_at_infinity": 1, - "Q": 5, - "EC_GROUP_get_degree": 1, - "e": 15, - "BN_bin2bn": 3, - "msg": 1, - "*msglen": 1, - "BN_rshift": 1, - "zero": 5, - "BN_zero": 1, - "BN_mod_sub": 1, - "rr": 4, - "BN_mod_inverse": 1, - "sor": 3, - "BN_mod_mul": 2, - "eor": 3, - "BN_CTX_end": 1, - "CKey": 26, - "SetCompressedPubKey": 4, - "EC_KEY_set_conv_form": 1, - "pkey": 14, - "POINT_CONVERSION_COMPRESSED": 1, - "fCompressedPubKey": 5, - "Reset": 5, - "EC_KEY_new_by_curve_name": 2, - "NID_secp256k1": 2, - "throw": 4, - "key_error": 6, - "fSet": 7, - "b": 57, - "EC_KEY_dup": 1, - "b.pkey": 2, - "b.fSet": 2, - "EC_KEY_copy": 1, - "hash": 20, - "vchSig": 18, - "nSize": 2, - "vchSig.clear": 2, - "vchSig.resize": 2, - "Shrink": 1, - "fit": 1, - "actual": 1, - "SignCompact": 2, - "uint256": 10, - "": 19, - "fOk": 3, - "*sig": 2, - "ECDSA_do_sign": 1, - "sig": 11, - "nBitsR": 3, - "BN_num_bits": 2, - "nBitsS": 3, - "&&": 23, - "nRecId": 4, - "<4;>": 1, - "keyRec": 5, - "1": 2, - "GetPubKey": 5, - "break": 34, - "BN_bn2bin": 2, - "/8": 2, - "ECDSA_SIG_free": 2, - "SetCompactSignature": 2, - "vchSig.size": 2, - "nV": 6, - "<27>": 1, - "ECDSA_SIG_new": 1, - "EC_KEY_free": 1, - "Verify": 2, - "ECDSA_verify": 1, - "VerifyCompact": 2, - "key": 23, - "key.SetCompactSignature": 1, - "key.GetPubKey": 1, - "IsValid": 4, - "fCompr": 3, - "CSecret": 4, - "secret": 2, - "GetSecret": 2, - "key2": 1, - "key2.SetSecret": 1, - "key2.GetPubKey": 1, - "BITCOIN_KEY_H": 2, - "": 1, - "": 1, - "runtime_error": 2, - "explicit": 4, - "str": 2, - "CKeyID": 5, - "uint160": 8, - "CScriptID": 3, - "CPubKey": 11, - "vchPubKey": 6, - "vchPubKeyIn": 2, - "a.vchPubKey": 3, - "b.vchPubKey": 3, - "IMPLEMENT_SERIALIZE": 1, - "READWRITE": 1, - "GetID": 1, - "Hash160": 1, - "GetHash": 1, - "Hash": 1, - "vchPubKey.begin": 1, - "vchPubKey.end": 1, - "vchPubKey.size": 3, - "||": 17, - "IsCompressed": 2, - "Raw": 1, - "secure_allocator": 2, - "CPrivKey": 3, - "EC_KEY*": 1, - "IsNull": 1, - "MakeNewKey": 1, - "fCompressed": 3, - "SetPrivKey": 1, - "vchPrivKey": 1, - "SetSecret": 1, - "vchSecret": 1, - "GetPrivKey": 1, - "SetPubKey": 1, - "Sign": 1, - "LIBCANIH": 2, - "": 1, - "": 1, - "int64": 1, - "//#define": 1, - "DEBUG": 5, - "dout": 2, - "#else": 25, - "cerr": 1, - "libcanister": 2, - "//the": 8, - "canmem": 22, - "object": 3, - "generic": 1, - "container": 2, - "commonly": 1, - "//throughout": 1, - "canister": 14, - "framework": 1, - "hold": 1, - "uncertain": 1, - "//length": 1, - "contain": 1, - "null": 3, - "bytes.": 1, - "raw": 2, - "absolute": 1, - "length": 10, - "//creates": 3, - "unallocated": 1, - "allocsize": 1, - "blank": 1, - "strdata": 1, - "//automates": 1, - "creation": 1, - "limited": 2, - "canmems": 1, - "//cleans": 1, - "zeromem": 1, - "//overwrites": 2, - "fragmem": 1, - "notation": 1, - "countlen": 1, - "//counts": 1, - "strings": 1, - "//removes": 1, - "nulls": 1, - "//returns": 2, - "singleton": 2, - "//contains": 2, - "caninfo": 2, - "path": 8, - "//physical": 1, - "internalname": 1, - "//a": 1, - "numfiles": 1, - "files": 6, - "//necessary": 1, - "type": 7, - "canfile": 7, - "//this": 1, - "holds": 2, - "//canister": 1, - "canister*": 1, - "parent": 1, - "//internal": 1, - "id": 1, - "//use": 1, - "own.": 1, - "newline": 2, - "delimited": 2, - "container.": 1, - "TOC": 1, - "info": 2, - "general": 1, - "canfiles": 1, - "recommended": 1, - "modify": 1, - "//these": 1, - "enforced.": 1, - "canfile*": 1, - "readonly": 3, - "//if": 1, - "routines": 1, - "anything": 1, - "//maximum": 1, - "//time": 1, - "whatever": 1, - "suits": 1, - "application.": 1, - "cachemax": 2, - "cachecnt": 1, - "//number": 1, - "cache": 2, - "modified": 3, - "//both": 1, - "initialize": 1, - "fspath": 3, - "//destroys": 1, - "flushing": 1, - "modded": 1, - "//open": 1, - "//does": 1, - "exist": 2, - "//close": 1, - "flush": 1, - "clean": 2, - "//deletes": 1, - "inside": 1, - "delFile": 1, - "//pulls": 1, - "getFile": 1, - "otherwise": 1, - "overwrites": 1, - "operation": 1, - "succeeded": 2, - "writeFile": 2, - "//get": 1, - "//list": 1, - "paths": 1, - "getTOC": 1, - "//brings": 1, - "back": 1, - "limit": 1, - "//important": 1, - "sCFID": 2, - "CFID": 2, - "avoid": 1, - "uncaching": 1, - "//really": 1, - "just": 1, - "internally": 1, - "harm.": 1, - "cacheclean": 1, - "dFlush": 1, - "Q_OS_LINUX": 2, - "": 1, - "#if": 44, - "QT_VERSION": 1, - "QT_VERSION_CHECK": 1, - "#error": 9, - "Something": 1, - "wrong": 1, - "setup.": 1, - "report": 3, - "mailing": 1, - "argc": 2, - "char**": 2, - "argv": 2, - "google_breakpad": 1, - "ExceptionHandler": 1, - "Utils": 4, - "exceptionHandler": 2, - "qInstallMsgHandler": 1, - "messageHandler": 2, - "QApplication": 1, - "app": 1, - "STATIC_BUILD": 1, - "Q_INIT_RESOURCE": 2, - "WebKit": 1, - "InspectorBackendStub": 1, - "app.setWindowIcon": 1, - "QIcon": 1, - "app.setApplicationName": 1, - "app.setOrganizationName": 1, - "app.setOrganizationDomain": 1, - "app.setApplicationVersion": 1, - "PHANTOMJS_VERSION_STRING": 1, - "Phantom": 1, - "phantom": 1, - "phantom.execute": 1, - "app.exec": 1, - "phantom.returnValue": 1, - "NINJA_METRICS_H_": 3, - "int64_t.": 1, - "Metrics": 2, - "module": 1, - "dumps": 1, - "stats": 2, - "actions.": 1, - "To": 1, - "METRIC_RECORD": 4, - "below.": 1, - "metrics": 2, - "hit": 1, - "path.": 2, - "count": 1, - "Total": 1, - "spent": 1, - "int64_t": 3, - "sum": 1, - "scoped": 1, - "recording": 1, - "metric": 2, - "across": 1, - "body": 1, - "macro.": 1, - "ScopedMetric": 4, - "Metric*": 4, - "metric_": 1, - "Timestamp": 1, - "started.": 1, - "Value": 24, - "platform": 2, - "dependent.": 1, - "start_": 1, - "prints": 1, - "report.": 1, - "NewMetric": 2, - "Print": 2, - "summary": 1, - "stdout.": 1, - "Report": 1, - "": 1, - "metrics_": 1, - "Get": 1, - "relative": 2, - "epoch.": 1, - "Epoch": 1, - "varies": 1, - "between": 1, - "platforms": 1, - "useful": 1, - "measuring": 1, - "elapsed": 1, - "time.": 1, - "GetTimeMillis": 1, - "simple": 1, - "stopwatch": 1, - "seconds": 1, - "Restart": 3, - "called.": 1, - "Stopwatch": 2, - "started_": 4, - "Seconds": 1, - "call.": 1, - "Elapsed": 1, - "static_cast": 8, - "": 1, - "primary": 1, - "metrics.": 1, - "top": 1, - "recorded": 1, - "metrics_h_metric": 2, - "g_metrics": 3, - "metrics_h_scoped": 1, - "Metrics*": 1, - "INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION": 1, - "": 1, - "": 2, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "persons": 4, - "google": 72, - "protobuf": 72, - "Descriptor*": 3, - "Person_descriptor_": 6, - "GeneratedMessageReflection*": 1, - "Person_reflection_": 4, - "protobuf_AssignDesc_protocol_2dbuffer_2eproto": 4, - "protobuf_AddDesc_protocol_2dbuffer_2eproto": 6, - "FileDescriptor*": 1, - "DescriptorPool": 3, - "generated_pool": 2, - "FindFileByName": 1, - "GOOGLE_CHECK": 1, - "message_type": 1, - "Person_offsets_": 2, - "GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET": 3, - "Person": 65, - "name_": 30, - "GeneratedMessageReflection": 1, - "default_instance_": 8, - "_has_bits_": 14, - "_unknown_fields_": 5, - "MessageFactory": 3, - "generated_factory": 1, - "GOOGLE_PROTOBUF_DECLARE_ONCE": 1, - "protobuf_AssignDescriptors_once_": 2, - "inline": 39, - "protobuf_AssignDescriptorsOnce": 4, - "GoogleOnceInit": 1, - "protobuf_RegisterTypes": 2, - "InternalRegisterGeneratedMessage": 1, - "default_instance": 3, - "protobuf_ShutdownFile_protocol_2dbuffer_2eproto": 4, - "delete": 6, - "already_here": 3, - "GOOGLE_PROTOBUF_VERIFY_VERSION": 1, - "InternalAddGeneratedFile": 1, - "InternalRegisterGeneratedFile": 1, - "InitAsDefaultInstance": 3, - "OnShutdown": 1, - "StaticDescriptorInitializer_protocol_2dbuffer_2eproto": 2, - "static_descriptor_initializer_protocol_2dbuffer_2eproto_": 1, - "_MSC_VER": 3, - "kNameFieldNumber": 2, - "Message": 7, - "SharedCtor": 4, - "MergeFrom": 9, - "_cached_size_": 7, - "const_cast": 3, - "string*": 11, - "kEmptyString": 12, - "SharedDtor": 3, - "SetCachedSize": 2, - "GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN": 2, - "GOOGLE_SAFE_CONCURRENT_WRITES_END": 2, - "descriptor": 2, - "*default_instance_": 1, - "Person*": 7, - "xffu": 3, - "has_name": 6, - "mutable_unknown_fields": 4, - "MergePartialFromCodedStream": 2, - "io": 4, - "CodedInputStream*": 2, - "DO_": 4, - "EXPRESSION": 2, - "uint32": 2, - "tag": 6, - "ReadTag": 1, - "switch": 3, - "WireFormatLite": 9, - "GetTagFieldNumber": 1, - "GetTagWireType": 2, - "WIRETYPE_LENGTH_DELIMITED": 1, - "ReadString": 1, - "mutable_name": 3, - "WireFormat": 10, - "VerifyUTF8String": 3, - ".data": 3, - ".length": 3, - "PARSE": 1, - "handle_uninterpreted": 2, - "ExpectAtEnd": 1, - "WIRETYPE_END_GROUP": 1, - "SkipField": 1, - "#undef": 3, - "SerializeWithCachedSizes": 2, - "CodedOutputStream*": 2, - "SERIALIZE": 2, - "WriteString": 1, - "unknown_fields": 7, - ".empty": 3, - "SerializeUnknownFields": 1, - "uint8*": 4, - "SerializeWithCachedSizesToArray": 2, - "target": 6, - "WriteStringToArray": 1, - "SerializeUnknownFieldsToArray": 1, - "ByteSize": 2, - "total_size": 5, - "StringSize": 1, - "ComputeUnknownFieldsSize": 1, - "GOOGLE_CHECK_NE": 2, - "dynamic_cast_if_available": 1, - "": 12, - "ReflectionOps": 1, - "Merge": 1, - "from._has_bits_": 1, - "from.has_name": 1, - "set_name": 7, - "from.name": 1, - "from.unknown_fields": 1, - "CopyFrom": 5, - "IsInitialized": 3, - "Swap": 2, - "swap": 3, - "_unknown_fields_.Swap": 1, - "Metadata": 3, - "GetMetadata": 2, - "metadata": 2, - "metadata.descriptor": 1, - "metadata.reflection": 1, - "PROTOBUF_protocol_2dbuffer_2eproto__INCLUDED": 3, - "GOOGLE_PROTOBUF_VERSION": 1, - "generated": 2, - "newer": 2, - "protoc": 2, - "incompatible": 2, - "Protocol": 2, - "headers.": 3, - "update": 1, - "GOOGLE_PROTOBUF_MIN_PROTOC_VERSION": 1, - "older": 1, - "regenerate": 1, - "protoc.": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "virtual": 10, - "*this": 1, - "UnknownFieldSet": 2, - "UnknownFieldSet*": 1, - "GetCachedSize": 1, - "clear_name": 2, - "size_t": 5, - "release_name": 2, - "set_allocated_name": 2, - "set_has_name": 7, - "clear_has_name": 5, - "mutable": 1, - "u": 9, - "*name_": 1, - "assign": 3, - "reinterpret_cast": 7, - "temp": 2, - "SWIG": 2, - "QSCICOMMAND_H": 2, - "__APPLE__": 4, - "": 1, - "": 2, - "": 1, - "QsciScintilla": 7, - "QsciCommand": 7, - "represents": 1, - "editor": 1, - "command": 9, - "two": 1, - "keys": 3, - "bound": 4, - "Methods": 1, - "provided": 1, - "binding.": 1, - "Each": 1, - "friendly": 2, - "description": 3, - "dialogs.": 1, - "QSCINTILLA_EXPORT": 2, - "commands": 1, - "assigned": 1, - "key.": 1, - "Command": 4, - "Move": 26, - "down": 12, - "line.": 33, - "LineDown": 1, - "QsciScintillaBase": 100, - "SCI_LINEDOWN": 1, - "Extend": 33, - "selection": 39, - "LineDownExtend": 1, - "SCI_LINEDOWNEXTEND": 1, - "rectangular": 9, - "LineDownRectExtend": 1, - "SCI_LINEDOWNRECTEXTEND": 1, - "Scroll": 5, - "view": 2, - "LineScrollDown": 1, - "SCI_LINESCROLLDOWN": 1, - "LineUp": 1, - "SCI_LINEUP": 1, - "LineUpExtend": 1, - "SCI_LINEUPEXTEND": 1, - "LineUpRectExtend": 1, - "SCI_LINEUPRECTEXTEND": 1, - "LineScrollUp": 1, - "SCI_LINESCROLLUP": 1, - "document.": 8, - "ScrollToStart": 1, - "SCI_SCROLLTOSTART": 1, - "ScrollToEnd": 1, - "SCI_SCROLLTOEND": 1, - "vertically": 1, - "centre": 1, - "VerticalCentreCaret": 1, - "SCI_VERTICALCENTRECARET": 1, - "paragraph.": 4, - "ParaDown": 1, - "SCI_PARADOWN": 1, - "ParaDownExtend": 1, - "SCI_PARADOWNEXTEND": 1, - "ParaUp": 1, - "SCI_PARAUP": 1, - "ParaUpExtend": 1, - "SCI_PARAUPEXTEND": 1, - "left": 7, - "character.": 9, - "CharLeft": 1, - "SCI_CHARLEFT": 1, - "CharLeftExtend": 1, - "SCI_CHARLEFTEXTEND": 1, - "CharLeftRectExtend": 1, - "SCI_CHARLEFTRECTEXTEND": 1, - "CharRight": 1, - "SCI_CHARRIGHT": 1, - "CharRightExtend": 1, - "SCI_CHARRIGHTEXTEND": 1, - "CharRightRectExtend": 1, - "SCI_CHARRIGHTRECTEXTEND": 1, - "word.": 9, - "WordLeft": 1, - "SCI_WORDLEFT": 1, - "WordLeftExtend": 1, - "SCI_WORDLEFTEXTEND": 1, - "WordRight": 1, - "SCI_WORDRIGHT": 1, - "WordRightExtend": 1, - "SCI_WORDRIGHTEXTEND": 1, - "WordLeftEnd": 1, - "SCI_WORDLEFTEND": 1, - "WordLeftEndExtend": 1, - "SCI_WORDLEFTENDEXTEND": 1, - "WordRightEnd": 1, - "SCI_WORDRIGHTEND": 1, - "WordRightEndExtend": 1, - "SCI_WORDRIGHTENDEXTEND": 1, - "part.": 4, - "WordPartLeft": 1, - "SCI_WORDPARTLEFT": 1, - "WordPartLeftExtend": 1, - "SCI_WORDPARTLEFTEXTEND": 1, - "WordPartRight": 1, - "SCI_WORDPARTRIGHT": 1, - "WordPartRightExtend": 1, - "SCI_WORDPARTRIGHTEXTEND": 1, - "document": 16, - "Home": 1, - "SCI_HOME": 1, - "HomeExtend": 1, - "SCI_HOMEEXTEND": 1, - "HomeRectExtend": 1, - "SCI_HOMERECTEXTEND": 1, - "displayed": 10, - "HomeDisplay": 1, - "SCI_HOMEDISPLAY": 1, - "HomeDisplayExtend": 1, - "SCI_HOMEDISPLAYEXTEND": 1, - "HomeWrap": 1, - "SCI_HOMEWRAP": 1, - "HomeWrapExtend": 1, - "SCI_HOMEWRAPEXTEND": 1, - "visible": 6, - "VCHome": 1, - "SCI_VCHOME": 1, - "VCHomeExtend": 1, - "SCI_VCHOMEEXTEND": 1, - "VCHomeRectExtend": 1, - "SCI_VCHOMERECTEXTEND": 1, - "VCHomeWrap": 1, - "SCI_VCHOMEWRAP": 1, - "VCHomeWrapExtend": 1, - "SCI_VCHOMEWRAPEXTEND": 1, - "LineEnd": 1, - "SCI_LINEEND": 1, - "LineEndExtend": 1, - "SCI_LINEENDEXTEND": 1, - "LineEndRectExtend": 1, - "SCI_LINEENDRECTEXTEND": 1, - "LineEndDisplay": 1, - "SCI_LINEENDDISPLAY": 1, - "LineEndDisplayExtend": 1, - "SCI_LINEENDDISPLAYEXTEND": 1, - "LineEndWrap": 1, - "SCI_LINEENDWRAP": 1, - "LineEndWrapExtend": 1, - "SCI_LINEENDWRAPEXTEND": 1, - "DocumentStart": 1, - "SCI_DOCUMENTSTART": 1, - "DocumentStartExtend": 1, - "SCI_DOCUMENTSTARTEXTEND": 1, - "DocumentEnd": 1, - "SCI_DOCUMENTEND": 1, - "DocumentEndExtend": 1, - "SCI_DOCUMENTENDEXTEND": 1, - "page.": 13, - "PageUp": 1, - "SCI_PAGEUP": 1, - "PageUpExtend": 1, - "SCI_PAGEUPEXTEND": 1, - "PageUpRectExtend": 1, - "SCI_PAGEUPRECTEXTEND": 1, - "PageDown": 1, - "SCI_PAGEDOWN": 1, - "PageDownExtend": 1, - "SCI_PAGEDOWNEXTEND": 1, - "PageDownRectExtend": 1, - "SCI_PAGEDOWNRECTEXTEND": 1, - "Stuttered": 4, - "move": 2, - "StutteredPageUp": 1, - "SCI_STUTTEREDPAGEUP": 1, - "extend": 2, - "StutteredPageUpExtend": 1, - "SCI_STUTTEREDPAGEUPEXTEND": 1, - "StutteredPageDown": 1, - "SCI_STUTTEREDPAGEDOWN": 1, - "StutteredPageDownExtend": 1, - "SCI_STUTTEREDPAGEDOWNEXTEND": 1, - "Delete": 10, - "SCI_CLEAR": 1, - "DeleteBack": 1, - "SCI_DELETEBACK": 1, - "DeleteBackNotLine": 1, - "SCI_DELETEBACKNOTLINE": 1, - "left.": 2, - "DeleteWordLeft": 1, - "SCI_DELWORDLEFT": 1, - "right.": 2, - "DeleteWordRight": 1, - "SCI_DELWORDRIGHT": 1, - "DeleteWordRightEnd": 1, - "SCI_DELWORDRIGHTEND": 1, - "DeleteLineLeft": 1, - "SCI_DELLINELEFT": 1, - "DeleteLineRight": 1, - "SCI_DELLINERIGHT": 1, - "LineDelete": 1, - "SCI_LINEDELETE": 1, - "Cut": 2, - "clipboard.": 5, - "LineCut": 1, - "SCI_LINECUT": 1, - "Copy": 2, - "LineCopy": 1, - "SCI_LINECOPY": 1, - "Transpose": 1, - "lines.": 1, - "LineTranspose": 1, - "SCI_LINETRANSPOSE": 1, - "Duplicate": 2, - "LineDuplicate": 1, - "SCI_LINEDUPLICATE": 1, - "whole": 2, - "SelectAll": 1, - "SCI_SELECTALL": 1, - "lines": 3, - "MoveSelectedLinesUp": 1, - "SCI_MOVESELECTEDLINESUP": 1, - "MoveSelectedLinesDown": 1, - "SCI_MOVESELECTEDLINESDOWN": 1, - "selection.": 1, - "SelectionDuplicate": 1, - "SCI_SELECTIONDUPLICATE": 1, - "Convert": 2, - "lower": 1, - "case.": 2, - "SelectionLowerCase": 1, - "SCI_LOWERCASE": 1, - "upper": 1, - "SelectionUpperCase": 1, - "SCI_UPPERCASE": 1, - "SelectionCut": 1, - "SCI_CUT": 1, - "SelectionCopy": 1, - "SCI_COPY": 1, - "Paste": 2, - "SCI_PASTE": 1, - "Toggle": 1, - "insert/overtype.": 1, - "EditToggleOvertype": 1, - "SCI_EDITTOGGLEOVERTYPE": 1, - "Insert": 2, - "dependent": 1, - "newline.": 1, - "Newline": 1, - "SCI_NEWLINE": 1, - "formfeed.": 1, - "Formfeed": 1, - "SCI_FORMFEED": 1, - "Indent": 1, - "Tab": 1, - "SCI_TAB": 1, - "De": 1, - "indent": 1, - "Backtab": 1, - "SCI_BACKTAB": 1, - "Cancel": 2, - "SCI_CANCEL": 1, - "Undo": 2, - "command.": 5, - "SCI_UNDO": 1, - "Redo": 2, - "SCI_REDO": 1, - "Zoom": 2, - "in.": 1, - "ZoomIn": 1, - "SCI_ZOOMIN": 1, - "out.": 1, - "ZoomOut": 1, - "SCI_ZOOMOUT": 1, - "Return": 3, - "executed": 1, - "instance.": 2, - "scicmd": 2, - "Execute": 1, - "Binds": 2, - "binding": 3, - "removed.": 2, - "invalid": 5, - "unchanged.": 1, - "Valid": 1, - "Key_Down": 1, - "Key_Up": 1, - "Key_Left": 1, - "Key_Right": 1, - "Key_Home": 1, - "Key_End": 1, - "Key_PageUp": 1, - "Key_PageDown": 1, - "Key_Delete": 1, - "Key_Insert": 1, - "Key_Escape": 1, - "Key_Backspace": 1, - "Key_Tab": 1, - "Key_Return.": 1, - "Keys": 1, - "SHIFT": 1, - "CTRL": 1, - "ALT": 1, - "META.": 1, - "setAlternateKey": 3, - "validKey": 3, - "setKey": 3, - "altkey": 3, - "alternateKey": 3, - "returned.": 4, - "qkey": 2, - "qaltkey": 2, - "valid": 2, - "QsciCommandSet": 1, - "*qs": 1, - "cmd": 1, - "*desc": 1, - "bindKey": 1, - "qk": 1, - "scik": 1, - "*qsCmd": 1, - "scikey": 1, - "scialtkey": 1, - "*descCmd": 1, - "QSCIPRINTER_H": 2, - "": 1, - "": 1, - "QT_BEGIN_NAMESPACE": 1, - "QRect": 2, - "QPainter": 2, - "QT_END_NAMESPACE": 1, - "QsciPrinter": 9, - "sub": 2, - "Qt": 1, - "QPrinter": 3, - "text": 5, - "Scintilla": 2, - "further": 1, - "classed": 1, - "layout": 1, - "adding": 2, - "headers": 3, - "footers": 2, - "example.": 1, - "Constructs": 1, - "printer": 1, - "paint": 1, - "PrinterMode": 1, - "ScreenResolution": 1, - "Destroys": 1, - "Format": 1, - "drawn": 2, - "painter": 4, - "add": 3, - "customised": 2, - "graphics.": 2, - "drawing": 4, - "actually": 1, - "sized.": 1, - "methods": 1, - "area": 5, - "draw": 1, - "text.": 3, - "necessary": 1, - "reserve": 1, - "By": 1, - "printable": 1, - "setFullPage": 1, - "because": 2, - "printRange": 2, - "try": 1, - "over": 1, - "pagenr": 2, - "numbered": 1, - "formatPage": 1, - "points": 2, - "font": 2, - "printing.": 2, - "setMagnification": 2, - "magnification": 3, - "mag": 2, - "printing": 2, - "magnification.": 1, - "qsb.": 1, - "negative": 2, - "signifies": 2, - "error.": 1, - "*qsb": 1, - "wrap": 4, - "WrapWord.": 1, - "setWrapMode": 2, - "WrapMode": 3, - "wrapMode": 2, - "wmode.": 1, - "wmode": 1, - "": 2, - "Gui": 1, - "rpc_init": 1, - "rpc_server_loop": 1, - "v8": 9, - "Scanner": 16, - "UnicodeCache*": 4, - "unicode_cache": 3, - "unicode_cache_": 10, - "octal_pos_": 5, - "Location": 14, - "harmony_scoping_": 4, - "harmony_modules_": 4, - "Initialize": 4, - "Utf16CharacterStream*": 3, - "source_": 7, - "Init": 3, - "has_line_terminator_before_next_": 9, - "SkipWhiteSpace": 4, - "Scan": 5, - "uc32": 19, - "ScanHexNumber": 2, - "expected_length": 4, - "ASSERT": 17, - "overflow": 1, - "digits": 3, - "c0_": 64, - "d": 8, - "HexValue": 2, - "j": 4, - "PushBack": 8, - "Advance": 44, - "STATIC_ASSERT": 5, - "Token": 212, - "NUM_TOKENS": 1, - "one_char_tokens": 2, - "ILLEGAL": 120, - "LPAREN": 2, - "RPAREN": 2, - "COMMA": 2, - "COLON": 2, - "SEMICOLON": 2, - "CONDITIONAL": 2, - "f": 5, - "LBRACK": 2, - "RBRACK": 2, - "LBRACE": 2, - "RBRACE": 2, - "BIT_NOT": 2, - "Next": 3, - "current_": 2, - "next_": 2, - "has_multiline_comment_before_next_": 5, - "token": 64, - "": 1, - "pos": 12, - "source_pos": 10, - "next_.token": 3, - "next_.location.beg_pos": 3, - "next_.location.end_pos": 4, - "current_.token": 4, - "IsByteOrderMark": 2, - "xFEFF": 1, - "xFFFE": 1, - "start_position": 2, - "IsWhiteSpace": 2, - "IsLineTerminator": 6, - "SkipSingleLineComment": 6, - "undo": 4, - "WHITESPACE": 6, - "SkipMultiLineComment": 3, - "ch": 5, - "ScanHtmlComment": 3, - "LT": 2, - "next_.literal_chars": 13, - "ScanString": 3, - "LTE": 1, - "ASSIGN_SHL": 1, - "SHL": 1, - "GTE": 1, - "ASSIGN_SAR": 1, - "ASSIGN_SHR": 1, - "SHR": 1, - "SAR": 1, - "GT": 1, - "EQ_STRICT": 1, - "EQ": 1, - "ASSIGN": 1, - "NE_STRICT": 1, - "NE": 1, - "INC": 1, - "ASSIGN_ADD": 1, - "ADD": 1, - "DEC": 1, - "ASSIGN_SUB": 1, - "SUB": 1, - "ASSIGN_MUL": 1, - "MUL": 1, - "ASSIGN_MOD": 1, - "MOD": 1, - "ASSIGN_DIV": 1, - "DIV": 1, - "AND": 1, - "ASSIGN_BIT_AND": 1, - "BIT_AND": 1, - "OR": 1, - "ASSIGN_BIT_OR": 1, - "BIT_OR": 1, - "ASSIGN_BIT_XOR": 1, - "BIT_XOR": 1, - "IsDecimalDigit": 2, - "ScanNumber": 3, - "PERIOD": 1, - "IsIdentifierStart": 2, - "ScanIdentifierOrKeyword": 2, - "EOS": 1, - "SeekForward": 4, - "current_pos": 4, - "ASSERT_EQ": 1, - "ScanEscape": 2, - "IsCarriageReturn": 2, - "IsLineFeed": 2, - "fall": 2, - "v": 3, - "xxx": 1, - "immediately": 1, - "octal": 1, - "escape": 1, - "quote": 3, - "consume": 2, - "LiteralScope": 4, - "literal": 2, - "X": 2, - "E": 3, - "l": 1, - "w": 1, - "y": 13, - "keyword": 1, - "Unescaped": 1, - "in_character_class": 2, - "AddLiteralCharAdvance": 3, - "literal.Complete": 2, - "ScanLiteralUnicodeEscape": 3, - "V8_SCANNER_H_": 3, - "ParsingFlags": 1, - "kNoParsingFlags": 1, - "kLanguageModeMask": 4, - "kAllowLazy": 1, - "kAllowNativesSyntax": 1, - "kAllowModules": 1, - "CLASSIC_MODE": 2, - "STRICT_MODE": 2, - "EXTENDED_MODE": 2, - "x16": 1, - "x36.": 1, - "Utf16CharacterStream": 3, - "pos_": 6, - "buffer_cursor_": 5, - "buffer_end_": 3, - "ReadBlock": 2, - "": 1, - "kEndOfInput": 2, - "code_unit_count": 7, - "buffered_chars": 2, - "SlowSeekForward": 2, - "int32_t": 1, - "code_unit": 6, - "uc16*": 3, - "UnicodeCache": 3, - "unibrow": 11, - "Utf8InputBuffer": 2, - "<1024>": 2, - "Utf8Decoder": 2, - "StaticResource": 2, - "": 2, - "utf8_decoder": 1, - "utf8_decoder_": 2, - "uchar": 4, - "kIsIdentifierStart.get": 1, - "IsIdentifierPart": 1, - "kIsIdentifierPart.get": 1, - "kIsLineTerminator.get": 1, - "kIsWhiteSpace.get": 1, - "Predicate": 4, - "": 1, - "128": 4, - "kIsIdentifierStart": 1, - "": 1, - "kIsIdentifierPart": 1, - "": 1, - "kIsLineTerminator": 1, - "": 1, - "kIsWhiteSpace": 1, - "DISALLOW_COPY_AND_ASSIGN": 2, - "LiteralBuffer": 6, - "is_ascii_": 10, - "position_": 17, - "backing_store_": 7, - "backing_store_.length": 4, - "backing_store_.Dispose": 3, - "INLINE": 2, - "AddChar": 2, - "ExpandBuffer": 2, - "kMaxAsciiCharCodeU": 1, - "": 6, - "kASCIISize": 1, - "ConvertToUtf16": 2, - "*reinterpret_cast": 1, - "": 2, - "kUC16Size": 2, - "is_ascii": 3, - "Vector": 13, - "uc16": 5, - "utf16_literal": 3, - "backing_store_.start": 5, - "ascii_literal": 3, - "kInitialCapacity": 2, - "kGrowthFactory": 2, - "kMinConversionSlack": 1, - "kMaxGrowth": 2, - "MB": 1, - "NewCapacity": 3, - "min_capacity": 2, - "capacity": 3, - "Max": 1, - "new_capacity": 2, - "Min": 1, - "new_store": 6, - "memcpy": 1, - "new_store.start": 3, - "new_content_size": 4, - "src": 2, - "": 1, - "dst": 2, - "Scanner*": 2, - "self": 5, - "scanner_": 5, - "complete_": 4, - "StartLiteral": 2, - "DropLiteral": 2, - "Complete": 1, - "TerminateLiteral": 2, - "beg_pos": 5, - "end_pos": 4, - "kNoOctalLocation": 1, - "scanner_contants": 1, - "current_token": 1, - "current_.location": 2, - "literal_ascii_string": 1, - "ASSERT_NOT_NULL": 9, - "current_.literal_chars": 11, - "literal_utf16_string": 1, - "is_literal_ascii": 1, - "literal_length": 1, - "literal_contains_escapes": 1, - "source_length": 3, - "location.end_pos": 1, - "location.beg_pos": 1, - "STRING": 1, - "peek": 1, - "peek_location": 1, - "next_.location": 1, - "next_literal_ascii_string": 1, - "next_literal_utf16_string": 1, - "is_next_literal_ascii": 1, - "next_literal_length": 1, - "kCharacterLookaheadBufferSize": 3, - "ScanOctalEscape": 1, - "octal_position": 1, - "clear_octal_position": 1, - "HarmonyScoping": 1, - "SetHarmonyScoping": 1, - "scoping": 2, - "HarmonyModules": 1, - "SetHarmonyModules": 1, - "modules": 2, - "HasAnyLineTerminatorBeforeNext": 1, - "ScanRegExpPattern": 1, - "seen_equal": 1, - "ScanRegExpFlags": 1, - "IsIdentifier": 1, - "CharacterStream*": 1, - "TokenDesc": 3, - "LiteralBuffer*": 2, - "literal_chars": 1, - "free_buffer": 3, - "literal_buffer1_": 3, - "literal_buffer2_": 2, - "AddLiteralChar": 2, - "tok": 2, - "else_": 2, - "ScanDecimalDigits": 1, - "seen_period": 1, - "ScanIdentifierSuffix": 1, - "LiteralScope*": 1, - "ScanIdentifierUnicodeEscape": 1, - "desc": 2, - "look": 1, - "ahead": 1, - "smallPrime_t": 1, - "UTILS_H": 3, - "": 1, - "": 1, - "": 1, - "QTemporaryFile": 1, - "showUsage": 1, - "QtMsgType": 1, - "dump_path": 1, - "minidump_id": 1, - "void*": 1, - "context": 8, - "QVariant": 1, - "coffee2js": 1, - "script": 1, - "injectJsInFrame": 2, - "jsFilePath": 5, - "libraryPath": 5, - "QWebFrame": 4, - "*targetFrame": 4, - "startingScript": 2, - "Encoding": 3, - "jsFileEnc": 2, - "readResourceFileUtf8": 1, - "resourceFilePath": 1, - "loadJSForDebug": 2, - "autorun": 2, - "cleanupFromDebug": 1, - "findScript": 1, - "jsFromScriptFile": 1, - "scriptPath": 1, - "enc": 1, - "shouldn": 1, - "instantiated": 1, - "QTemporaryFile*": 2, - "m_tempHarness": 1, - "We": 1, - "ourselves": 1, - "m_tempWrapper": 1, - "V8_DECLARE_ONCE": 1, - "init_once": 2, - "V8": 21, - "is_running_": 6, - "has_been_set_up_": 4, - "has_been_disposed_": 6, - "has_fatal_error_": 5, - "use_crankshaft_": 6, - "List": 3, - "": 3, - "call_completed_callbacks_": 16, - "LazyMutex": 1, - "entropy_mutex": 1, - "LAZY_MUTEX_INITIALIZER": 1, - "EntropySource": 3, - "entropy_source": 4, - "Deserializer*": 2, - "des": 3, - "FlagList": 1, - "EnforceFlagImplications": 1, - "InitializeOncePerProcess": 4, - "Isolate": 9, - "CurrentPerIsolateThreadData": 4, - "EnterDefaultIsolate": 1, - "thread_id": 1, - ".Equals": 1, - "ThreadId": 1, - "Current": 5, - "isolate": 15, - "IsDead": 2, - "Isolate*": 6, - "SetFatalError": 2, - "TearDown": 5, - "IsDefaultIsolate": 1, - "ElementsAccessor": 2, - "LOperand": 2, - "TearDownCaches": 1, - "RegisteredExtension": 1, - "UnregisterAll": 1, - "OS": 3, - "seed_random": 2, - "FLAG_random_seed": 2, - "val": 3, - "ScopedLock": 1, - "lock": 1, - "entropy_mutex.Pointer": 1, - "random": 1, - "random_base": 3, - "xFFFF": 2, - "FFFF": 1, - "SetEntropySource": 2, - "SetReturnAddressLocationResolver": 3, - "ReturnAddressLocationResolver": 2, - "resolver": 3, - "StackFrame": 1, - "Random": 3, - "Context*": 4, - "IsGlobalContext": 1, - "ByteArray*": 1, - "seed": 2, - "random_seed": 1, - "": 1, - "GetDataStartAddress": 1, - "RandomPrivate": 2, - "private_random_seed": 1, - "IdleNotification": 3, - "hint": 3, - "FLAG_use_idle_notification": 1, - "HEAP": 1, - "AddCallCompletedCallback": 2, - "CallCompletedCallback": 4, - "callback": 7, - "Lazy": 1, - "init.": 1, - "Add": 1, - "RemoveCallCompletedCallback": 2, - "Remove": 1, - "FireCallCompletedCallback": 2, - "HandleScopeImplementer*": 1, - "handle_scope_implementer": 5, - "CallDepthIsZero": 1, - "IncrementCallDepth": 1, - "DecrementCallDepth": 1, - "union": 1, - "double_value": 1, - "uint64_t_value": 1, - "double_int_union": 2, - "Object*": 4, - "FillHeapNumberWithRandom": 2, - "heap_number": 4, - "random_bits": 2, - "binary_million": 3, - "r.double_value": 3, - "r.uint64_t_value": 1, - "HeapNumber": 1, - "cast": 1, - "set_value": 1, - "InitializeOncePerProcessImpl": 3, - "SetUp": 4, - "FLAG_crankshaft": 1, - "Serializer": 1, - "SupportsCrankshaft": 1, - "PostSetUp": 1, - "RuntimeProfiler": 1, - "GlobalSetUp": 1, - "FLAG_stress_compaction": 1, - "FLAG_force_marking_deque_overflows": 1, - "FLAG_gc_global": 1, - "FLAG_max_new_space_size": 1, - "kPageSizeBits": 1, - "SetUpCaches": 1, - "SetUpJSCallerSavedCodeData": 1, - "SamplerRegistry": 1, - "ExternalReference": 1, - "CallOnce": 1, - "V8_V8_H_": 3, - "defined": 21, - "GOOGLE3": 2, - "NDEBUG": 4, - "both": 1, - "Deserializer": 1, - "AllStatic": 1, - "IsRunning": 1, - "UseCrankshaft": 1, - "FatalProcessOutOfMemory": 1, - "take_snapshot": 1, - "NilValue": 1, - "kNullValue": 1, - "kUndefinedValue": 1, - "EqualityKind": 1, - "kStrictEquality": 1, - "kNonStrictEquality": 1, - "PY_SSIZE_T_CLEAN": 1, - "Py_PYTHON_H": 1, - "Python": 1, - "compile": 1, - "extensions": 1, - "development": 1, - "Python.": 1, - "": 1, - "offsetof": 2, - "member": 2, - "type*": 1, - "WIN32": 2, - "MS_WINDOWS": 2, - "__stdcall": 2, - "__cdecl": 2, - "__fastcall": 2, - "DL_IMPORT": 2, - "DL_EXPORT": 2, - "PY_LONG_LONG": 5, - "LONG_LONG": 1, - "PY_VERSION_HEX": 9, - "METH_COEXIST": 1, - "PyDict_CheckExact": 1, - "op": 6, - "Py_TYPE": 4, - "PyDict_Type": 1, - "PyDict_Contains": 1, - "o": 20, - "PySequence_Contains": 1, - "Py_ssize_t": 17, - "PY_SSIZE_T_MAX": 1, - "INT_MAX": 1, - "PY_SSIZE_T_MIN": 1, - "INT_MIN": 1, - "PY_FORMAT_SIZE_T": 1, - "PyInt_FromSsize_t": 2, - "z": 46, - "PyInt_FromLong": 13, - "PyInt_AsSsize_t": 2, - "PyInt_AsLong": 2, - "PyNumber_Index": 1, - "PyNumber_Int": 1, - "PyIndex_Check": 1, - "PyNumber_Check": 1, - "PyErr_WarnEx": 1, - "category": 2, - "message": 2, - "stacklevel": 1, - "PyErr_Warn": 1, - "Py_REFCNT": 1, - "ob": 6, - "PyObject*": 16, - "ob_refcnt": 1, - "ob_type": 7, - "Py_SIZE": 1, - "PyVarObject*": 1, - "ob_size": 1, - "PyVarObject_HEAD_INIT": 1, - "PyObject_HEAD_INIT": 1, - "PyType_Modified": 1, - "*buf": 1, - "PyObject": 221, - "*obj": 2, - "itemsize": 2, - "ndim": 2, - "*format": 1, - "*shape": 1, - "*strides": 1, - "*suboffsets": 1, - "*internal": 1, - "Py_buffer": 5, - "PyBUF_SIMPLE": 1, - "PyBUF_WRITABLE": 1, - "PyBUF_FORMAT": 1, - "PyBUF_ND": 2, - "PyBUF_STRIDES": 5, - "PyBUF_C_CONTIGUOUS": 3, - "PyBUF_F_CONTIGUOUS": 3, - "PyBUF_ANY_CONTIGUOUS": 1, - "PyBUF_INDIRECT": 1, - "PY_MAJOR_VERSION": 10, - "__Pyx_BUILTIN_MODULE_NAME": 2, - "Py_TPFLAGS_CHECKTYPES": 1, - "Py_TPFLAGS_HAVE_INDEX": 1, - "Py_TPFLAGS_HAVE_NEWBUFFER": 1, - "PyBaseString_Type": 1, - "PyUnicode_Type": 2, - "PyStringObject": 2, - "PyUnicodeObject": 1, - "PyString_Type": 2, - "PyString_Check": 2, - "PyUnicode_Check": 1, - "PyString_CheckExact": 2, - "PyUnicode_CheckExact": 1, - "PyBytesObject": 1, - "PyBytes_Type": 1, - "PyBytes_Check": 1, - "PyBytes_CheckExact": 1, - "PyBytes_FromString": 2, - "PyString_FromString": 1, - "PyBytes_FromStringAndSize": 1, - "PyString_FromStringAndSize": 1, - "PyBytes_FromFormat": 1, - "PyString_FromFormat": 1, - "PyBytes_DecodeEscape": 1, - "PyString_DecodeEscape": 1, - "PyBytes_AsString": 2, - "PyString_AsString": 1, - "PyBytes_AsStringAndSize": 1, - "PyString_AsStringAndSize": 1, - "PyBytes_Size": 1, - "PyString_Size": 1, - "PyBytes_AS_STRING": 1, - "PyString_AS_STRING": 1, - "PyBytes_GET_SIZE": 1, - "PyString_GET_SIZE": 1, - "PyBytes_Repr": 1, - "PyString_Repr": 1, - "PyBytes_Concat": 1, - "PyString_Concat": 1, - "PyBytes_ConcatAndDel": 1, - "PyString_ConcatAndDel": 1, - "PySet_Check": 1, - "obj": 42, - "PyObject_TypeCheck": 3, - "PySet_Type": 2, - "PyFrozenSet_Check": 1, - "PyFrozenSet_Type": 1, - "PySet_CheckExact": 2, - "__Pyx_TypeCheck": 1, - "PyTypeObject": 2, - "PyIntObject": 1, - "PyLongObject": 2, - "PyInt_Type": 1, - "PyLong_Type": 1, - "PyInt_Check": 1, - "PyLong_Check": 1, - "PyInt_CheckExact": 1, - "PyLong_CheckExact": 1, - "PyInt_FromString": 1, - "PyLong_FromString": 1, - "PyInt_FromUnicode": 1, - "PyLong_FromUnicode": 1, - "PyLong_FromLong": 1, - "PyInt_FromSize_t": 1, - "PyLong_FromSize_t": 1, - "PyLong_FromSsize_t": 1, - "PyLong_AsLong": 1, - "PyInt_AS_LONG": 1, - "PyLong_AS_LONG": 1, - "PyLong_AsSsize_t": 1, - "PyInt_AsUnsignedLongMask": 1, - "PyLong_AsUnsignedLongMask": 1, - "PyInt_AsUnsignedLongLongMask": 1, - "PyLong_AsUnsignedLongLongMask": 1, - "PyBoolObject": 1, - "__Pyx_PyNumber_Divide": 2, - "PyNumber_TrueDivide": 1, - "__Pyx_PyNumber_InPlaceDivide": 2, - "PyNumber_InPlaceTrueDivide": 1, - "PyNumber_Divide": 1, - "PyNumber_InPlaceDivide": 1, - "__Pyx_PySequence_GetSlice": 2, - "PySequence_GetSlice": 2, - "__Pyx_PySequence_SetSlice": 2, - "PySequence_SetSlice": 2, - "__Pyx_PySequence_DelSlice": 2, - "PySequence_DelSlice": 2, - "unlikely": 69, - "PyErr_SetString": 4, - "PyExc_SystemError": 3, - "likely": 15, - "tp_as_mapping": 3, - "PyErr_Format": 4, - "PyExc_TypeError": 5, - "tp_name": 4, - "PyMethod_New": 2, - "func": 3, - "klass": 1, - "PyInstanceMethod_New": 1, - "__Pyx_GetAttrString": 2, - "PyObject_GetAttrString": 3, - "__Pyx_SetAttrString": 2, - "PyObject_SetAttrString": 2, - "__Pyx_DelAttrString": 2, - "PyObject_DelAttrString": 2, - "__Pyx_NAMESTR": 3, - "__Pyx_DOCSTR": 3, - "__PYX_EXTERN_C": 2, - "_USE_MATH_DEFINES": 1, - "": 1, - "__PYX_HAVE_API__wrapper_inner": 1, - "PYREX_WITHOUT_ASSERTIONS": 1, - "CYTHON_WITHOUT_ASSERTIONS": 1, - "CYTHON_INLINE": 68, - "__GNUC__": 5, - "__inline__": 1, - "#elif": 3, - "__inline": 1, - "__STDC_VERSION__": 2, - "L": 1, - "CYTHON_UNUSED": 7, - "**p": 1, - "*s": 1, - "encoding": 1, - "is_unicode": 1, - "is_str": 1, - "intern": 1, - "__Pyx_StringTabEntry": 1, - "__Pyx_PyBytes_FromUString": 1, - "__Pyx_PyBytes_AsUString": 1, - "__Pyx_PyBool_FromLong": 1, - "Py_INCREF": 3, - "Py_True": 2, - "Py_False": 2, - "__Pyx_PyObject_IsTrue": 8, - "__Pyx_PyNumber_Int": 1, - "__Pyx_PyIndex_AsSsize_t": 1, - "__Pyx_PyInt_FromSize_t": 1, - "__Pyx_PyInt_AsSize_t": 1, - "__pyx_PyFloat_AsDouble": 3, - "PyFloat_CheckExact": 1, - "PyFloat_AS_DOUBLE": 1, - "PyFloat_AsDouble": 1, - "__GNUC_MINOR__": 1, - "__builtin_expect": 2, - "*__pyx_m": 1, - "*__pyx_b": 1, - "*__pyx_empty_tuple": 1, - "*__pyx_empty_bytes": 1, - "__pyx_lineno": 80, - "__pyx_clineno": 80, - "__pyx_cfilenm": 1, - "__FILE__": 2, - "*__pyx_filename": 1, - "CYTHON_CCOMPLEX": 12, - "_Complex_I": 3, - "": 1, - "": 1, - "__sun__": 1, - "fj": 1, - "*__pyx_f": 1, - "npy_int8": 1, - "__pyx_t_5numpy_int8_t": 1, - "npy_int16": 1, - "__pyx_t_5numpy_int16_t": 1, - "npy_int32": 1, - "__pyx_t_5numpy_int32_t": 1, - "npy_int64": 1, - "__pyx_t_5numpy_int64_t": 1, - "npy_uint8": 1, - "__pyx_t_5numpy_uint8_t": 1, - "npy_uint16": 1, - "__pyx_t_5numpy_uint16_t": 1, - "npy_uint32": 1, - "__pyx_t_5numpy_uint32_t": 1, - "npy_uint64": 1, - "__pyx_t_5numpy_uint64_t": 1, - "npy_float32": 1, - "__pyx_t_5numpy_float32_t": 1, - "npy_float64": 1, - "__pyx_t_5numpy_float64_t": 1, - "npy_long": 1, - "__pyx_t_5numpy_int_t": 1, - "npy_longlong": 1, - "__pyx_t_5numpy_long_t": 1, - "npy_intp": 10, - "__pyx_t_5numpy_intp_t": 1, - "npy_uintp": 1, - "__pyx_t_5numpy_uintp_t": 1, - "npy_ulong": 1, - "__pyx_t_5numpy_uint_t": 1, - "npy_ulonglong": 1, - "__pyx_t_5numpy_ulong_t": 1, - "npy_double": 2, - "__pyx_t_5numpy_float_t": 1, - "__pyx_t_5numpy_double_t": 1, - "npy_longdouble": 1, - "__pyx_t_5numpy_longdouble_t": 1, - "complex": 2, - "__pyx_t_float_complex": 27, - "_Complex": 2, - "imag": 2, - "__pyx_t_double_complex": 27, - "npy_cfloat": 1, - "__pyx_t_5numpy_cfloat_t": 1, - "npy_cdouble": 2, - "__pyx_t_5numpy_cdouble_t": 1, - "npy_clongdouble": 1, - "__pyx_t_5numpy_clongdouble_t": 1, - "__pyx_t_5numpy_complex_t": 1, - "CYTHON_REFNANNY": 3, - "__Pyx_RefNannyAPIStruct": 4, - "*__Pyx_RefNanny": 1, - "__Pyx_RefNannyImportAPI": 1, - "*modname": 1, - "*m": 1, - "*p": 1, - "*r": 1, - "m": 4, - "PyImport_ImportModule": 1, - "modname": 1, - "PyLong_AsVoidPtr": 1, - "Py_XDECREF": 3, - "__Pyx_RefNannySetupContext": 13, - "*__pyx_refnanny": 1, - "__Pyx_RefNanny": 6, - "SetupContext": 1, - "__LINE__": 84, - "__Pyx_RefNannyFinishContext": 12, - "FinishContext": 1, - "__pyx_refnanny": 5, - "__Pyx_INCREF": 36, - "INCREF": 1, - "__Pyx_DECREF": 66, - "DECREF": 1, - "__Pyx_GOTREF": 60, - "GOTREF": 1, - "__Pyx_GIVEREF": 10, - "GIVEREF": 1, - "__Pyx_XDECREF": 26, - "Py_DECREF": 1, - "__Pyx_XGIVEREF": 7, - "__Pyx_XGOTREF": 1, - "__Pyx_TypeTest": 4, - "*type": 3, - "*__Pyx_GetName": 1, - "*dict": 1, - "__Pyx_ErrRestore": 1, - "*value": 2, - "*tb": 2, - "__Pyx_ErrFetch": 1, - "**type": 1, - "**value": 1, - "**tb": 1, - "__Pyx_Raise": 8, - "__Pyx_RaiseNoneNotIterableError": 1, - "__Pyx_RaiseNeedMoreValuesError": 1, - "index": 2, - "__Pyx_RaiseTooManyValuesError": 1, - "expected": 1, - "__Pyx_UnpackTupleError": 2, - "*__Pyx_Import": 1, - "*from_list": 1, - "__Pyx_Print": 1, - "__pyx_print": 1, - "__pyx_print_kwargs": 1, - "__Pyx_PrintOne": 4, - "*o": 1, - "*__Pyx_PyInt_to_py_Py_intptr_t": 1, - "Py_intptr_t": 1, - "__Pyx_CREAL": 4, - ".real": 3, - "__Pyx_CIMAG": 4, - ".imag": 3, - "__real__": 1, - "__imag__": 1, - "_WIN32": 1, - "__Pyx_SET_CREAL": 2, - "__Pyx_SET_CIMAG": 2, - "__pyx_t_float_complex_from_parts": 1, - "__Pyx_c_eqf": 2, - "__Pyx_c_sumf": 2, - "__Pyx_c_difff": 2, - "__Pyx_c_prodf": 2, - "__Pyx_c_quotf": 2, - "__Pyx_c_negf": 2, - "__Pyx_c_is_zerof": 3, - "__Pyx_c_conjf": 3, - "conj": 3, - "__Pyx_c_absf": 3, - "abs": 2, - "__Pyx_c_powf": 3, - "pow": 2, - "conjf": 1, - "cabsf": 1, - "cpowf": 1, - "__pyx_t_double_complex_from_parts": 1, - "__Pyx_c_eq": 2, - "__Pyx_c_sum": 2, - "__Pyx_c_diff": 2, - "__Pyx_c_prod": 2, - "__Pyx_c_quot": 2, - "__Pyx_c_neg": 2, - "__Pyx_c_is_zero": 3, - "__Pyx_c_conj": 3, - "__Pyx_c_abs": 3, - "__Pyx_c_pow": 3, - "cabs": 1, - "cpow": 1, - "__Pyx_PyInt_AsUnsignedChar": 1, - "__Pyx_PyInt_AsUnsignedShort": 1, - "__Pyx_PyInt_AsUnsignedInt": 1, - "__Pyx_PyInt_AsChar": 1, - "__Pyx_PyInt_AsShort": 1, - "__Pyx_PyInt_AsInt": 1, - "signed": 5, - "__Pyx_PyInt_AsSignedChar": 1, - "__Pyx_PyInt_AsSignedShort": 1, - "__Pyx_PyInt_AsSignedInt": 1, - "__Pyx_PyInt_AsLongDouble": 1, - "__Pyx_PyInt_AsUnsignedLong": 1, - "__Pyx_PyInt_AsUnsignedLongLong": 1, - "__Pyx_PyInt_AsLong": 1, - "__Pyx_PyInt_AsLongLong": 1, - "__Pyx_PyInt_AsSignedLong": 1, - "__Pyx_PyInt_AsSignedLongLong": 1, - "__Pyx_WriteUnraisable": 3, - "__Pyx_ExportFunction": 1, - "*__pyx_f_5numpy_PyArray_MultiIterNew2": 2, - "*__pyx_f_5numpy_PyArray_MultiIterNew3": 2, - "*__pyx_f_5numpy_PyArray_MultiIterNew4": 2, - "*__pyx_f_5numpy_PyArray_MultiIterNew5": 2, - "*__pyx_f_5numpy__util_dtypestring": 2, - "PyArray_Descr": 6, - "__pyx_f_5numpy_set_array_base": 1, - "PyArrayObject": 19, - "*__pyx_f_5numpy_get_array_base": 1, - "inner_work_1d": 2, - "inner_work_2d": 2, - "__Pyx_MODULE_NAME": 1, - "__pyx_module_is_main_wrapper_inner": 1, - "*__pyx_builtin_ValueError": 1, - "*__pyx_builtin_range": 1, - "*__pyx_builtin_RuntimeError": 1, - "__pyx_k_1": 1, - "__pyx_k_2": 1, - "__pyx_k_3": 1, - "__pyx_k_5": 1, - "__pyx_k_7": 1, - "__pyx_k_9": 1, - "__pyx_k_11": 1, - "__pyx_k_12": 1, - "__pyx_k_15": 1, - "__pyx_k__B": 2, - "__pyx_k__H": 2, - "__pyx_k__I": 2, - "__pyx_k__L": 2, - "__pyx_k__O": 2, - "__pyx_k__Q": 2, - "__pyx_k__b": 2, - "__pyx_k__d": 2, - "__pyx_k__f": 2, - "__pyx_k__g": 2, - "__pyx_k__h": 2, - "__pyx_k__i": 2, - "__pyx_k__l": 2, - "__pyx_k__q": 2, - "__pyx_k__Zd": 2, - "__pyx_k__Zf": 2, - "__pyx_k__Zg": 2, - "__pyx_k__np": 1, - "__pyx_k__buf": 1, - "__pyx_k__obj": 1, - "__pyx_k__base": 1, - "__pyx_k__ndim": 1, - "__pyx_k__ones": 1, - "__pyx_k__descr": 1, - "__pyx_k__names": 1, - "__pyx_k__numpy": 1, - "__pyx_k__range": 1, - "__pyx_k__shape": 1, - "__pyx_k__fields": 1, - "__pyx_k__format": 1, - "__pyx_k__strides": 1, - "__pyx_k____main__": 1, - "__pyx_k____test__": 1, - "__pyx_k__itemsize": 1, - "__pyx_k__readonly": 1, - "__pyx_k__type_num": 1, - "__pyx_k__byteorder": 1, - "__pyx_k__ValueError": 1, - "__pyx_k__suboffsets": 1, - "__pyx_k__work_module": 1, - "__pyx_k__RuntimeError": 1, - "__pyx_k__pure_py_test": 1, - "__pyx_k__wrapper_inner": 1, - "__pyx_k__do_awesome_work": 1, - "*__pyx_kp_s_1": 1, - "*__pyx_kp_u_11": 1, - "*__pyx_kp_u_12": 1, - "*__pyx_kp_u_15": 1, - "*__pyx_kp_s_2": 1, - "*__pyx_kp_s_3": 1, - "*__pyx_kp_u_5": 1, - "*__pyx_kp_u_7": 1, - "*__pyx_kp_u_9": 1, - "*__pyx_n_s__RuntimeError": 1, - "*__pyx_n_s__ValueError": 1, - "*__pyx_n_s____main__": 1, - "*__pyx_n_s____test__": 1, - "*__pyx_n_s__base": 1, - "*__pyx_n_s__buf": 1, - "*__pyx_n_s__byteorder": 1, - "*__pyx_n_s__descr": 1, - "*__pyx_n_s__do_awesome_work": 1, - "*__pyx_n_s__fields": 1, - "*__pyx_n_s__format": 1, - "*__pyx_n_s__itemsize": 1, - "*__pyx_n_s__names": 1, - "*__pyx_n_s__ndim": 1, - "*__pyx_n_s__np": 1, - "*__pyx_n_s__numpy": 1, - "*__pyx_n_s__obj": 1, - "*__pyx_n_s__ones": 1, - "*__pyx_n_s__pure_py_test": 1, - "*__pyx_n_s__range": 1, - "*__pyx_n_s__readonly": 1, - "*__pyx_n_s__shape": 1, - "*__pyx_n_s__strides": 1, - "*__pyx_n_s__suboffsets": 1, - "*__pyx_n_s__type_num": 1, - "*__pyx_n_s__work_module": 1, - "*__pyx_n_s__wrapper_inner": 1, - "*__pyx_int_5": 1, - "*__pyx_int_15": 1, - "*__pyx_k_tuple_4": 1, - "*__pyx_k_tuple_6": 1, - "*__pyx_k_tuple_8": 1, - "*__pyx_k_tuple_10": 1, - "*__pyx_k_tuple_13": 1, - "*__pyx_k_tuple_14": 1, - "*__pyx_k_tuple_16": 1, - "__pyx_v_num_x": 4, - "*__pyx_v_data_ptr": 2, - "*__pyx_v_answer_ptr": 2, - "__pyx_v_nd": 6, - "*__pyx_v_dims": 2, - "__pyx_v_typenum": 6, - "*__pyx_v_data_np": 2, - "__pyx_v_sum": 6, - "__pyx_t_1": 154, - "*__pyx_t_2": 4, - "*__pyx_t_3": 4, - "*__pyx_t_4": 3, - "__pyx_t_5": 75, - "__pyx_kp_s_1": 1, - "__pyx_filename": 79, - "__pyx_f": 79, - "__pyx_L1_error": 88, - "__pyx_v_dims": 4, - "NPY_DOUBLE": 3, - "__pyx_t_2": 120, - "PyArray_SimpleNewFromData": 2, - "__pyx_v_data_ptr": 2, - "Py_None": 38, - "__pyx_ptype_5numpy_ndarray": 2, - "__pyx_v_data_np": 10, - "__Pyx_GetName": 4, - "__pyx_m": 4, - "__pyx_n_s__work_module": 3, - "__pyx_t_3": 113, - "PyObject_GetAttr": 4, - "__pyx_n_s__do_awesome_work": 3, - "PyTuple_New": 4, - "PyTuple_SET_ITEM": 4, - "__pyx_t_4": 35, - "PyObject_Call": 11, - "PyErr_Occurred": 2, - "__pyx_v_answer_ptr": 2, - "__pyx_L0": 24, - "__pyx_v_num_y": 2, - "__pyx_kp_s_2": 1, - "*__pyx_pf_13wrapper_inner_pure_py_test": 2, - "*__pyx_self": 2, - "*unused": 2, - "PyMethodDef": 1, - "__pyx_mdef_13wrapper_inner_pure_py_test": 1, - "PyCFunction": 1, - "__pyx_pf_13wrapper_inner_pure_py_test": 1, - "METH_NOARGS": 1, - "*__pyx_v_data": 1, - "*__pyx_r": 7, - "*__pyx_t_1": 8, - "__pyx_self": 2, - "__pyx_v_data": 7, - "__pyx_kp_s_3": 1, - "__pyx_n_s__np": 1, - "__pyx_n_s__ones": 1, - "__pyx_k_tuple_4": 1, - "__pyx_r": 39, - "__Pyx_AddTraceback": 7, - "__pyx_pf_5numpy_7ndarray___getbuffer__": 2, - "*__pyx_v_self": 4, - "*__pyx_v_info": 4, - "__pyx_v_flags": 4, - "__pyx_v_copy_shape": 5, - "__pyx_v_i": 6, - "__pyx_v_ndim": 6, - "__pyx_v_endian_detector": 6, - "__pyx_v_little_endian": 8, - "__pyx_v_t": 29, - "*__pyx_v_f": 2, - "*__pyx_v_descr": 2, - "__pyx_v_offset": 9, - "__pyx_v_hasfields": 4, - "__pyx_t_6": 40, - "__pyx_t_7": 9, - "*__pyx_t_8": 1, - "*__pyx_t_9": 1, - "__pyx_v_info": 33, - "__pyx_v_self": 16, - "PyArray_NDIM": 1, - "__pyx_L5": 6, - "PyArray_CHKFLAGS": 2, - "NPY_C_CONTIGUOUS": 1, - "__pyx_builtin_ValueError": 5, - "__pyx_k_tuple_6": 1, - "__pyx_L6": 6, - "NPY_F_CONTIGUOUS": 1, - "__pyx_k_tuple_8": 1, - "__pyx_L7": 2, - "PyArray_DATA": 1, - "strides": 5, - "malloc": 2, - "shape": 3, - "PyArray_STRIDES": 2, - "PyArray_DIMS": 2, - "__pyx_L8": 2, - "suboffsets": 1, - "PyArray_ITEMSIZE": 1, - "PyArray_ISWRITEABLE": 1, - "__pyx_v_f": 31, - "descr": 2, - "__pyx_v_descr": 10, - "PyDataType_HASFIELDS": 2, - "__pyx_L11": 7, - "type_num": 2, - "byteorder": 4, - "__pyx_k_tuple_10": 1, - "__pyx_L13": 2, - "NPY_BYTE": 2, - "__pyx_L14": 18, - "NPY_UBYTE": 2, - "NPY_SHORT": 2, - "NPY_USHORT": 2, - "NPY_INT": 2, - "NPY_UINT": 2, - "NPY_LONG": 1, - "NPY_ULONG": 1, - "NPY_LONGLONG": 1, - "NPY_ULONGLONG": 1, - "NPY_FLOAT": 1, - "NPY_LONGDOUBLE": 1, - "NPY_CFLOAT": 1, - "NPY_CDOUBLE": 1, - "NPY_CLONGDOUBLE": 1, - "NPY_OBJECT": 1, - "__pyx_t_8": 16, - "PyNumber_Remainder": 1, - "__pyx_kp_u_11": 1, - "format": 6, - "__pyx_L12": 2, - "__pyx_t_9": 7, - "__pyx_f_5numpy__util_dtypestring": 1, - "__pyx_L2": 2, - "__pyx_pf_5numpy_7ndarray_1__releasebuffer__": 2, - "PyArray_HASFIELDS": 1, - "*__pyx_f_5numpy_PyArray_MultiIterNew1": 1, - "*__pyx_v_a": 5, - "PyArray_MultiIterNew": 5, - "__pyx_v_a": 5, - "*__pyx_v_b": 4, - "__pyx_v_b": 4, - "*__pyx_v_c": 3, - "__pyx_v_c": 3, - "*__pyx_v_d": 2, - "__pyx_v_d": 2, - "*__pyx_v_e": 1, - "__pyx_v_e": 1, - "*__pyx_v_end": 1, - "*__pyx_v_offset": 1, - "*__pyx_v_child": 1, - "*__pyx_v_fields": 1, - "*__pyx_v_childname": 1, - "*__pyx_v_new_offset": 1, - "*__pyx_v_t": 1, - "*__pyx_t_5": 1, - "__pyx_t_10": 7, - "*__pyx_t_11": 1, - "__pyx_v_child": 8, - "__pyx_v_fields": 7, - "__pyx_v_childname": 4, - "__pyx_v_new_offset": 5, - "PyTuple_GET_SIZE": 2, - "PyTuple_GET_ITEM": 3, - "PyObject_GetItem": 1, - "PyTuple_CheckExact": 1, - "tuple": 3, - "__pyx_ptype_5numpy_dtype": 1, - "__pyx_v_end": 2, - "PyNumber_Subtract": 2, - "PyObject_RichCompare": 8, - "__pyx_int_15": 1, - "Py_LT": 2, - "__pyx_builtin_RuntimeError": 2, - "__pyx_k_tuple_13": 1, - "__pyx_k_tuple_14": 1, - "elsize": 1, - "__pyx_k_tuple_16": 1, - "__pyx_L10": 2, - "Py_EQ": 6 - }, - "Ceylon": { - "doc": 2, - "by": 1, - "shared": 5, - "void": 1, - "test": 1, - "(": 4, - ")": 4, - "{": 3, - "print": 1, - ";": 4, - "}": 3, - "class": 1, - "Test": 2, - "name": 4, - "satisfies": 1, - "Comparable": 1, - "": 1, - "String": 2, - "actual": 2, - "string": 1, - "Comparison": 1, - "compare": 1, - "other": 1, - "return": 1, - "<=>": 1, - "other.name": 1 - }, - "Cirru": { - "print": 38, - "array": 14, - "int": 36, - "string": 7, - "set": 12, - "f": 3, - "block": 1, - "(": 20, - "a": 22, - "b": 7, - "c": 9, - ")": 20, - "call": 1, - "bool": 6, - "true": 1, - "false": 1, - "yes": 1, - "no": 1, - "map": 8, - "m": 3, - "float": 1, - "require": 1, - "./stdio.cr": 1, - "self": 2, - "child": 1, - "under": 2, - "parent": 1, - "get": 4, - "x": 2, - "just": 4, - "-": 4, - "code": 4, - "eval": 2, - "nothing": 1, - "container": 3 - }, - "Clojure": { - "(": 83, - "defn": 4, - "prime": 2, - "[": 41, - "n": 9, - "]": 41, - "not": 3, - "-": 14, - "any": 1, - "zero": 1, - "map": 2, - "#": 1, - "rem": 2, - "%": 1, - ")": 84, - "range": 3, - ";": 8, - "while": 3, - "stops": 1, - "at": 1, - "the": 1, - "first": 2, - "collection": 1, - "element": 1, - "that": 1, - "evaluates": 1, - "to": 1, - "false": 2, - "like": 1, - "take": 1, - "for": 2, - "x": 6, - "html": 1, - "head": 1, - "meta": 1, - "{": 8, - "charset": 1, - "}": 8, - "link": 1, - "rel": 1, - "href": 1, - "script": 1, - "src": 1, - "body": 1, - "div.nav": 1, - "p": 1, - "into": 2, - "array": 3, - "aseq": 8, - "nil": 1, - "type": 2, - "let": 1, - "count": 3, - "a": 3, - "make": 1, - "loop": 1, - "seq": 1, - "i": 4, - "if": 1, - "<": 1, - "do": 1, - "aset": 1, - "recur": 1, - "next": 1, - "inc": 1, - "defprotocol": 1, - "ISound": 4, - "sound": 5, - "deftype": 2, - "Cat": 1, - "_": 3, - "Dog": 1, - "extend": 1, - "default": 1, - "rand": 2, - "scm*": 1, - "random": 1, - "real": 1, - "clj": 1, - "ns": 2, - "c2.svg": 2, - "use": 2, - "c2.core": 2, - "only": 4, - "unify": 2, - "c2.maths": 2, - "Pi": 2, - "Tau": 2, - "radians": 2, - "per": 2, - "degree": 2, - "sin": 2, - "cos": 2, - "mean": 2, - "cljs": 3, - "require": 1, - "c2.dom": 1, - "as": 1, - "dom": 1, - "Stub": 1, - "float": 2, - "fn": 2, - "which": 1, - "does": 1, - "exist": 1, - "on": 1, - "runtime": 1, - "def": 1, - "identity": 1, - "xy": 1, - "coordinates": 7, - "cond": 1, - "and": 1, - "vector": 1, - "y": 1, - "deftest": 1, - "function": 1, - "tests": 1, - "is": 7, - "true": 2, - "contains": 1, - "foo": 6, - "bar": 4, - "select": 1, - "keys": 2, - "baz": 4, - "vals": 1, - "filter": 1 - }, - "COBOL": { - "program": 1, - "-": 19, - "id.": 1, - "hello.": 3, - "procedure": 1, - "division.": 1, - "display": 1, - ".": 3, - "stop": 1, - "run.": 1, - "IDENTIFICATION": 2, - "DIVISION.": 4, - "PROGRAM": 2, - "ID.": 2, - "PROCEDURE": 2, - "DISPLAY": 2, - "STOP": 2, - "RUN.": 2, - "COBOL": 7, - "TEST": 2, - "RECORD.": 1, - "USAGES.": 1, - "COMP": 5, - "PIC": 5, - "S9": 4, - "(": 5, - ")": 5, - "COMP.": 3, - "COMP2": 2 - }, - "CoffeeScript": { - "CoffeeScript": 1, - "require": 21, - "CoffeeScript.require": 1, - "CoffeeScript.eval": 1, - "(": 193, - "code": 20, - "options": 16, - "{": 31, - "}": 34, - ")": 196, - "-": 107, - "options.bare": 2, - "on": 3, - "eval": 2, - "CoffeeScript.compile": 2, - "CoffeeScript.run": 3, - "Function": 1, - "return": 29, - "unless": 19, - "window": 1, - "CoffeeScript.load": 2, - "url": 2, - "callback": 35, - "xhr": 2, - "new": 12, - "window.ActiveXObject": 1, - "or": 22, - "XMLHttpRequest": 1, - "xhr.open": 1, - "true": 8, - "xhr.overrideMimeType": 1, - "if": 102, - "of": 7, - "xhr.onreadystatechange": 1, - "xhr.readyState": 1, - "is": 36, - "xhr.status": 1, - "in": 32, - "[": 134, - "]": 134, - "xhr.responseText": 1, - "else": 53, - "throw": 3, - "Error": 1, - "xhr.send": 1, - "null": 15, - "runScripts": 3, - "scripts": 2, - "document.getElementsByTagName": 1, - "coffees": 2, - "s": 10, - "for": 14, - "when": 16, - "s.type": 1, - "index": 4, - "length": 4, - "coffees.length": 1, - "do": 2, - "execute": 3, - "script": 7, - "+": 31, - ".type": 1, - "script.src": 2, - "script.innerHTML": 1, - "window.addEventListener": 1, - "addEventListener": 1, - "no": 3, - "attachEvent": 1, - "class": 11, - "Animal": 3, - "constructor": 6, - "@name": 2, - "move": 3, - "meters": 2, - "alert": 4, - "Snake": 2, - "extends": 6, - "super": 4, - "Horse": 2, - "sam": 1, - "tom": 1, - "sam.move": 1, - "tom.move": 1, - "#": 35, - "fs": 2, - "path": 3, - "Lexer": 3, - "RESERVED": 3, - "parser": 1, - "vm": 1, - "require.extensions": 3, - "module": 1, - "filename": 6, - "content": 4, - "compile": 5, - "fs.readFileSync": 1, - "module._compile": 1, - "require.registerExtension": 2, - "exports.VERSION": 1, - "exports.RESERVED": 1, - "exports.helpers": 2, - "exports.compile": 1, - "merge": 1, - "try": 3, - "js": 5, - "parser.parse": 3, - "lexer.tokenize": 3, - ".compile": 1, - "options.header": 1, - "catch": 2, - "err": 20, - "err.message": 2, - "options.filename": 5, - "header": 1, - "exports.tokens": 1, - "exports.nodes": 1, - "source": 5, - "typeof": 2, - "exports.run": 1, - "mainModule": 1, - "require.main": 1, - "mainModule.filename": 4, - "process.argv": 1, - "then": 24, - "fs.realpathSync": 2, - "mainModule.moduleCache": 1, - "and": 20, - "mainModule.paths": 1, - "._nodeModulePaths": 1, - "path.dirname": 2, - "path.extname": 1, - "isnt": 7, - "mainModule._compile": 2, - "exports.eval": 1, - "code.trim": 1, - "Script": 2, - "vm.Script": 1, - "options.sandbox": 4, - "instanceof": 2, - "Script.createContext": 2, - ".constructor": 1, - "sandbox": 8, - "k": 4, - "v": 4, - "own": 2, - "sandbox.global": 1, - "sandbox.root": 1, - "sandbox.GLOBAL": 1, - "global": 3, - "sandbox.__filename": 3, - "||": 3, - "sandbox.__dirname": 1, - "sandbox.module": 2, - "sandbox.require": 2, - "Module": 2, - "_module": 3, - "options.modulename": 1, - "_require": 2, - "Module._load": 1, - "_module.filename": 1, - "r": 4, - "Object.getOwnPropertyNames": 1, - "_require.paths": 1, - "_module.paths": 1, - "Module._nodeModulePaths": 1, - "process.cwd": 1, - "_require.resolve": 1, - "request": 2, - "Module._resolveFilename": 1, - "o": 4, - "o.bare": 1, - "ensure": 1, - "value": 25, - "vm.runInThisContext": 1, - "vm.runInContext": 1, - "lexer": 1, - "parser.lexer": 1, - "lex": 1, - "tag": 33, - "@yytext": 1, - "@yylineno": 1, - "@tokens": 7, - "@pos": 2, - "setInput": 1, - "upcomingInput": 1, - "parser.yy": 1, - "console.log": 1, - "number": 13, - "opposite": 2, - "square": 4, - "x": 6, - "*": 21, - "list": 2, - "math": 1, - "root": 1, - "Math.sqrt": 1, - "cube": 1, - "race": 1, - "winner": 2, - "runners...": 1, - "print": 1, - "runners": 1, - "elvis": 1, - "cubes": 1, - "math.cube": 1, - "num": 2, - "Rewriter": 2, - "INVERSES": 2, - "count": 5, - "starts": 1, - "compact": 1, - "last": 3, - "exports.Lexer": 1, - "tokenize": 1, - "opts": 1, - "WHITESPACE.test": 1, - "code.replace": 1, - "/": 44, - "r/g": 1, - ".replace": 3, - "TRAILING_SPACES": 2, - "@code": 1, - "The": 7, - "remainder": 1, - "the": 4, - "code.": 1, - "@line": 4, - "opts.line": 1, - "current": 5, - "line.": 1, - "@indent": 3, - "indentation": 3, - "level.": 3, - "@indebt": 1, - "over": 1, - "at": 2, - "@outdebt": 1, - "under": 1, - "outdentation": 1, - "@indents": 1, - "stack": 4, - "all": 1, - "levels.": 1, - "@ends": 1, - "pairing": 1, - "up": 1, - "tokens.": 1, - "Stream": 1, - "parsed": 1, - "tokens": 5, - "form": 1, - "line": 6, - ".": 13, - "i": 8, - "while": 4, - "@chunk": 9, - "i..": 1, - "@identifierToken": 1, - "@commentToken": 1, - "@whitespaceToken": 1, - "@lineToken": 1, - "@heredocToken": 1, - "@stringToken": 1, - "@numberToken": 1, - "@regexToken": 1, - "@jsToken": 1, - "@literalToken": 1, - "@closeIndentation": 1, - "@error": 10, - "@ends.pop": 1, - "opts.rewrite": 1, - "off": 1, - ".rewrite": 1, - "identifierToken": 1, - "match": 23, - "IDENTIFIER.exec": 1, - "input": 1, - "id": 16, - "colon": 3, - "@tag": 3, - "@token": 12, - "id.length": 1, - "forcedIdentifier": 4, - "prev": 17, - "not": 4, - "prev.spaced": 3, - "JS_KEYWORDS": 1, - "COFFEE_KEYWORDS": 1, - "id.toUpperCase": 1, - "LINE_BREAK": 2, - "@seenFor": 4, - "yes": 5, - "UNARY": 4, - "RELATION": 3, - "@value": 1, - "@tokens.pop": 1, - "JS_FORBIDDEN": 1, - "String": 1, - "id.reserved": 1, - "COFFEE_ALIAS_MAP": 1, - "COFFEE_ALIASES": 1, - "switch": 7, - "input.length": 1, - "numberToken": 1, - "NUMBER.exec": 1, - "BOX": 1, - "/.test": 4, - "/E/.test": 1, - "x/.test": 1, - "d*": 1, - "d": 2, - "lexedLength": 2, - "number.length": 1, - "octalLiteral": 2, - "/.exec": 2, - "parseInt": 5, - ".toString": 3, - "binaryLiteral": 2, - "b": 1, - "stringToken": 1, - "@chunk.charAt": 3, - "SIMPLESTR.exec": 1, - "string": 9, - "MULTILINER": 2, - "@balancedString": 1, - "<": 6, - "string.indexOf": 1, - "@interpolateString": 2, - "@escapeLines": 1, - "octalEsc": 1, - "|": 21, - "string.length": 1, - "heredocToken": 1, - "HEREDOC.exec": 1, - "heredoc": 4, - "quote": 5, - "heredoc.charAt": 1, - "doc": 11, - "@sanitizeHeredoc": 2, - "indent": 7, - "<=>": 1, - "indexOf": 1, - "interpolateString": 1, - "token": 1, - "STRING": 2, - "makeString": 1, - "n": 16, - "Matches": 1, - "consumes": 1, - "comments": 1, - "commentToken": 1, - "@chunk.match": 1, - "COMMENT": 2, - "comment": 2, - "here": 3, - "herecomment": 4, - "Array": 1, - ".join": 2, - "comment.length": 1, - "jsToken": 1, - "JSTOKEN.exec": 1, - "script.length": 1, - "regexToken": 1, - "HEREGEX.exec": 1, - "@heregexToken": 1, - "NOT_REGEX": 2, - "NOT_SPACED_REGEX": 2, - "REGEX.exec": 1, - "regex": 5, - "flags": 2, - "..1": 1, - "match.length": 1, - "heregexToken": 1, - "heregex": 1, - "body": 2, - "body.indexOf": 1, - "re": 1, - "body.replace": 1, - "HEREGEX_OMIT": 3, - "//g": 1, - "re.match": 1, - "*/": 2, - "heregex.length": 1, - "@tokens.push": 1, - "tokens.push": 1, - "value...": 1, - "continue": 3, - "value.replace": 2, - "/g": 3, - "spaced": 1, - "reserved": 1, - "word": 1, - "value.length": 2, - "MATH": 3, - "COMPARE": 3, - "COMPOUND_ASSIGN": 2, - "SHIFT": 3, - "LOGIC": 3, - ".spaced": 1, - "CALLABLE": 2, - "INDEXABLE": 2, - "@ends.push": 1, - "@pair": 1, - "sanitizeHeredoc": 1, - "HEREDOC_ILLEGAL.test": 1, - "doc.indexOf": 1, - "HEREDOC_INDENT.exec": 1, - "attempt": 2, - "attempt.length": 1, - "indent.length": 1, - "doc.replace": 2, - "///": 12, - "///g": 1, - "n/": 1, - "tagParameters": 1, - "this": 6, - "tokens.length": 1, - "tok": 5, - "stack.push": 1, - "stack.length": 1, - "stack.pop": 2, - "closeIndentation": 1, - "@outdentToken": 1, - "balancedString": 1, - "str": 1, - "end": 2, - "continueCount": 3, - "str.length": 1, - "letter": 1, - "str.charAt": 1, - "missing": 1, - "starting": 1, - "Hello": 1, - "name.capitalize": 1, - "OUTDENT": 1, - "THROW": 1, - "EXTENDS": 1, - "&": 4, - "false": 4, - "delete": 1, - "break": 1, - "debugger": 1, - "finally": 2, - "undefined": 1, - "until": 1, - "loop": 1, - "by": 1, - "&&": 1, - "case": 1, - "default": 1, - "function": 2, - "var": 1, - "void": 1, - "with": 1, - "const": 1, - "let": 2, - "enum": 1, - "export": 1, - "import": 1, - "native": 1, - "__hasProp": 1, - "__extends": 1, - "__slice": 1, - "__bind": 1, - "__indexOf": 1, - "implements": 1, - "interface": 1, - "package": 1, - "private": 1, - "protected": 1, - "public": 1, - "static": 1, - "yield": 1, - "arguments": 1, - "S": 10, - "OPERATOR": 1, - "%": 1, - "compound": 1, - "assign": 1, - "compare": 1, - "zero": 1, - "fill": 1, - "right": 1, - "shift": 2, - "doubles": 1, - "logic": 1, - "soak": 1, - "access": 1, - "range": 1, - "splat": 1, - "WHITESPACE": 1, - "###": 3, - "s*#": 1, - "##": 1, - ".*": 1, - "CODE": 1, - "MULTI_DENT": 1, - "SIMPLESTR": 1, - "JSTOKEN": 1, - "REGEX": 1, - "disallow": 1, - "leading": 1, - "whitespace": 1, - "equals": 1, - "signs": 1, - "every": 1, - "other": 1, - "thing": 1, - "anything": 1, - "escaped": 1, - "character": 1, - "imgy": 2, - "w": 2, - "HEREGEX": 1, - "#.*": 1, - "n/g": 1, - "HEREDOC_INDENT": 1, - "HEREDOC_ILLEGAL": 1, - "//": 1, - "LINE_CONTINUER": 1, - "s*": 1, - "BOOL": 1, - "NOT_REGEX.concat": 1, - "CALLABLE.concat": 1, - "async": 1, - "nack": 1, - "bufferLines": 3, - "pause": 2, - "sourceScriptEnv": 3, - "join": 8, - "exists": 5, - "basename": 2, - "resolve": 2, - "module.exports": 1, - "RackApplication": 1, - "@configuration": 1, - "@root": 8, - "@firstHost": 1, - "@logger": 1, - "@configuration.getLogger": 1, - "@readyCallbacks": 3, - "@quitCallbacks": 3, - "@statCallbacks": 3, - "ready": 1, - "@state": 11, - "@readyCallbacks.push": 1, - "@initialize": 2, - "quit": 1, - "@quitCallbacks.push": 1, - "@terminate": 2, - "queryRestartFile": 1, - "fs.stat": 1, - "stats": 1, - "@mtime": 5, - "lastMtime": 2, - "stats.mtime.getTime": 1, - "setPoolRunOnceFlag": 1, - "@statCallbacks.length": 1, - "alwaysRestart": 2, - "@pool.runOnce": 1, - "statCallback": 2, - "@statCallbacks.push": 1, - "loadScriptEnvironment": 1, - "env": 18, - "async.reduce": 1, - "scriptExists": 2, - "loadRvmEnvironment": 1, - "rvmrcExists": 2, - "rvm": 1, - "@configuration.rvmPath": 1, - "rvmExists": 2, - "libexecPath": 1, - "before": 2, - ".trim": 1, - "loadEnvironment": 1, - "@queryRestartFile": 2, - "@loadScriptEnvironment": 1, - "@configuration.env": 1, - "@loadRvmEnvironment": 1, - "initialize": 1, - "@quit": 3, - "@loadEnvironment": 1, - "@logger.error": 3, - "@pool": 2, - "nack.createPool": 1, - "size": 1, - ".POW_WORKERS": 1, - "@configuration.workers": 1, - "idle": 1, - ".POW_TIMEOUT": 1, - "@configuration.timeout": 1, - "@pool.stdout": 1, - "@logger.info": 1, - "@pool.stderr": 1, - "@logger.warning": 1, - "@pool.on": 2, - "process": 2, - "@logger.debug": 2, - "readyCallback": 2, - "terminate": 1, - "@ready": 3, - "@pool.quit": 1, - "quitCallback": 2, - "handle": 1, - "req": 4, - "res": 3, - "next": 3, - "resume": 2, - "@setPoolRunOnceFlag": 1, - "@restartIfNecessary": 1, - "req.proxyMetaVariables": 1, - "SERVER_PORT": 1, - "@configuration.dstPort.toString": 1, - "@pool.proxy": 1, - "restart": 1, - "restartIfNecessary": 1, - "mtimeChanged": 2, - "@restart": 1, - "writeRvmBoilerplate": 1, - "powrc": 3, - "boilerplate": 2, - "@constructor.rvmBoilerplate": 1, - "fs.readFile": 1, - "contents": 2, - "contents.indexOf": 1, - "fs.writeFile": 1, - "@rvmBoilerplate": 1, - "dnsserver": 1, - "exports.Server": 1, - "Server": 2, - "dnsserver.Server": 1, - "NS_T_A": 3, - "NS_T_NS": 2, - "NS_T_CNAME": 1, - "NS_T_SOA": 2, - "NS_C_IN": 5, - "NS_RCODE_NXDOMAIN": 2, - "domain": 6, - "@rootAddress": 2, - "@domain": 3, - "domain.toLowerCase": 1, - "@soa": 2, - "createSOA": 2, - "@on": 1, - "@handleRequest": 1, - "handleRequest": 1, - "question": 5, - "req.question": 1, - "subdomain": 10, - "@extractSubdomain": 1, - "question.name": 3, - "isARequest": 2, - "res.addRR": 2, - "subdomain.getAddress": 1, - ".isEmpty": 1, - "isNSRequest": 2, - "res.header.rcode": 1, - "res.send": 1, - "extractSubdomain": 1, - "name": 5, - "Subdomain.extract": 1, - "question.type": 2, - "question.class": 2, - "mname": 2, - "rname": 2, - "serial": 2, - "Date": 1, - ".getTime": 1, - "refresh": 2, - "retry": 2, - "expire": 2, - "minimum": 2, - "dnsserver.createSOA": 1, - "exports.createServer": 1, - "address": 4, - "exports.Subdomain": 1, - "Subdomain": 4, - "@extract": 1, - "name.toLowerCase": 1, - "offset": 4, - "name.length": 1, - "domain.length": 1, - "name.slice": 2, - "@for": 2, - "IPAddressSubdomain.pattern.test": 1, - "IPAddressSubdomain": 2, - "EncodedSubdomain.pattern.test": 1, - "EncodedSubdomain": 2, - "@subdomain": 1, - "@address": 2, - "@labels": 2, - ".split": 1, - "@length": 3, - "@labels.length": 1, - "isEmpty": 1, - "getAddress": 3, - "@pattern": 2, - "@labels.slice": 1, - "a": 2, - "z0": 2, - "decode": 2, - "exports.encode": 1, - "encode": 1, - "ip": 2, - "byte": 2, - "ip.split": 1, - "<<": 1, - "PATTERN": 1, - "exports.decode": 1, - "PATTERN.test": 1, - "ip.push": 1, - "xFF": 1, - "ip.join": 1 - }, - "Common Lisp": { - ";": 10, - "-": 10, - "*": 2, - "lisp": 1, - "(": 14, - "in": 1, - "package": 1, - "foo": 2, - ")": 14, - "Header": 1, - "comment.": 4, - "defvar": 1, - "*foo*": 1, - "eval": 1, - "when": 1, - "execute": 1, - "compile": 1, - "toplevel": 2, - "load": 1, - "defun": 1, - "add": 1, - "x": 5, - "&": 3, - "optional": 1, - "y": 2, - "key": 1, - "z": 2, - "declare": 1, - "ignore": 1, - "Inline": 1, - "+": 2, - "or": 1, - "#": 2, - "|": 2, - "Multi": 1, - "line": 2, - "defmacro": 1, - "body": 1, - "b": 1, - "if": 1, - "After": 1 - }, - "Coq": { - "Inductive": 41, - "day": 9, - "Type": 86, - "|": 457, - "monday": 5, - "tuesday": 3, - "wednesday": 3, - "thursday": 3, - "friday": 3, - "saturday": 3, - "sunday": 2, - "day.": 1, - "Definition": 46, - "next_weekday": 3, - "(": 1248, - "d": 6, - ")": 1249, - "match": 70, - "with": 223, - "end.": 52, - "Example": 37, - "test_next_weekday": 1, - "tuesday.": 1, - "Proof.": 208, - "simpl.": 70, - "reflexivity.": 199, - "Qed.": 194, - "bool": 38, - "true": 68, - "false": 48, - "bool.": 1, - "negb": 10, - "b": 89, - "andb": 8, - "b1": 35, - "b2": 23, - "orb": 8, - "test_orb1": 1, - "true.": 16, - "test_orb2": 1, - "false.": 12, - "test_orb3": 1, - "test_orb4": 1, - "nandb": 5, - "end": 16, - "test_nandb1": 1, - "test_nandb2": 1, - "test_nandb3": 1, - "test_nandb4": 1, - "andb3": 5, - "b3": 2, - "test_andb31": 1, - "test_andb32": 1, - "test_andb33": 1, - "test_andb34": 1, - "Module": 11, - "Playground1.": 5, - "nat": 108, - "O": 98, - "S": 186, - "-": 508, - "nat.": 4, - "pred": 3, - "n": 369, - "minustwo": 1, - "Fixpoint": 36, - "evenb": 5, - "oddb": 5, - ".": 433, - "test_oddb1": 1, - "test_oddb2": 1, - "plus": 10, - "m": 201, - "mult": 3, - "minus": 3, - "_": 67, - "exp": 2, - "base": 3, - "power": 2, - "p": 81, - "factorial": 2, - "test_factorial1": 1, - "Notation": 39, - "x": 266, - "y": 116, - "at": 17, - "level": 11, - "left": 6, - "associativity": 7, - "nat_scope.": 3, - "beq_nat": 24, - "forall": 248, - "+": 227, - "n.": 44, - "Theorem": 115, - "plus_O_n": 1, - "intros": 258, - "plus_1_1": 1, - "mult_0_1": 1, - "*": 59, - "O.": 5, - "plus_id_example": 1, - "m.": 21, - "H.": 100, - "rewrite": 241, - "plus_id_exercise": 1, - "o": 25, - "o.": 4, - "H": 76, - "mult_0_plus": 1, - "plus_O_n.": 1, - "mult_1_plus": 1, - "plus_1_1.": 1, - "mult_1": 1, - "induction": 81, - "as": 77, - "[": 170, - "plus_1_neq_0": 1, - "destruct": 94, - "]": 173, - "Case": 51, - "IHn": 12, - "plus_comm": 3, - "plus_distr.": 1, - "beq_nat_refl": 3, - "plus_rearrange": 1, - "q": 15, - "q.": 2, - "assert": 68, - "plus_comm.": 3, - "plus_swap": 2, - "p.": 9, - "plus_assoc.": 4, - "H2": 12, - "H2.": 20, - "plus_swap.": 2, - "<->": 31, - "IHm": 2, - "reflexivity": 16, - "Qed": 23, - "mult_comm": 2, - "Proof": 12, - "0": 5, - "simpl": 116, - "mult_0_r.": 4, - "mult_distr": 1, - "mult_1_distr.": 1, - "mult_1.": 1, - "bad": 1, - "zero_nbeq_S": 1, - "andb_false_r": 1, - "plus_ble_compat_1": 1, - "ble_nat": 6, - "IHp.": 2, - "S_nbeq_0": 1, - "mult_1_1": 1, - "plus_0_r.": 1, - "all3_spec": 1, - "c": 70, - "c.": 5, - "b.": 14, - "Lemma": 51, - "mult_plus_1": 1, - "IHm.": 1, - "mult_mult": 1, - "IHn.": 3, - "mult_plus_1.": 1, - "mult_plus_distr_r": 1, - "mult_mult.": 3, - "H1": 18, - "plus_assoc": 1, - "H1.": 31, - "H3": 4, - "H3.": 5, - "mult_assoc": 1, - "mult_plus_distr_r.": 1, - "bin": 9, - "BO": 4, - "D": 9, - "M": 4, - "bin.": 1, - "incbin": 2, - "bin2un": 3, - "bin_comm": 1, - "End": 15, - "Require": 17, - "Import": 11, - "List": 2, - "Multiset": 2, - "PermutSetoid": 1, - "Relations": 2, - "Sorting.": 1, - "Section": 4, - "defs.": 2, - "Variable": 7, - "A": 113, - "Type.": 3, - "leA": 25, - "relation": 19, - "A.": 6, - "eqA": 29, - "Let": 8, - "gtA": 1, - "y.": 15, - "Hypothesis": 7, - "leA_dec": 4, - "{": 39, - "}": 35, - "eqA_dec": 26, - "leA_refl": 1, - "leA_trans": 2, - "z": 14, - "z.": 6, - "leA_antisym": 1, - "Hint": 9, - "Resolve": 5, - "leA_refl.": 1, - "Immediate": 1, - "leA_antisym.": 1, - "emptyBag": 4, - "EmptyBag": 2, - "singletonBag": 10, - "SingletonBag": 2, - "eqA_dec.": 2, - "Tree": 24, - "Tree_Leaf": 9, - "Tree_Node": 11, - "Tree.": 1, - "leA_Tree": 16, - "a": 207, - "t": 93, - "True": 1, - "T1": 25, - "T2": 20, - "leA_Tree_Leaf": 5, - "Tree_Leaf.": 1, - ";": 375, - "auto": 73, - "datatypes.": 47, - "leA_Tree_Node": 1, - "G": 6, - "is_heap": 18, - "Prop": 17, - "nil_is_heap": 5, - "node_is_heap": 7, - "invert_heap": 3, - "/": 41, - "T2.": 1, - "inversion": 104, - "is_heap_rect": 1, - "P": 32, - "T": 49, - "T.": 9, - "simple": 7, - "PG": 2, - "PD": 2, - "PN.": 2, - "elim": 21, - "H4": 7, - "intros.": 27, - "apply": 340, - "X0": 2, - "is_heap_rec": 1, - "Set": 4, - "X": 191, - "low_trans": 3, - "merge_lem": 3, - "l1": 89, - "l2": 73, - "list": 78, - "merge_exist": 5, - "l": 379, - "Sorted": 5, - "meq": 15, - "list_contents": 30, - "munion": 18, - "HdRel": 4, - "l2.": 8, - "Morphisms.": 2, - "Instance": 7, - "Equivalence": 2, - "@meq": 4, - "constructor": 6, - "red.": 1, - "meq_trans.": 1, - "Defined.": 1, - "Proper": 5, - "@munion": 1, - "now": 24, - "meq_congr.": 1, - "merge": 5, - "fix": 2, - "l1.": 5, - "rename": 2, - "into": 2, - "l.": 26, - "revert": 5, - "H0.": 24, - "a0": 15, - "l0": 7, - "Sorted_inv": 2, - "in": 221, - "H0": 16, - "clear": 7, - "merge0.": 2, - "using": 18, - "cons_sort": 2, - "cons_leA": 2, - "munion_ass.": 2, - "cons_leA.": 2, - "@HdRel_inv": 2, - "trivial": 15, - "merge0": 1, - "setoid_rewrite": 2, - "munion_ass": 1, - "munion_comm.": 2, - "repeat": 11, - "munion_comm": 1, - "contents": 12, - "multiset": 2, - "t1": 48, - "t2": 51, - "equiv_Tree": 1, - "insert_spec": 3, - "insert_exist": 4, - "insert": 2, - "unfold": 58, - "T0": 2, - "treesort_twist1": 1, - "T3": 2, - "HeapT3": 1, - "ConT3": 1, - "LeA.": 1, - "LeA": 1, - "treesort_twist2": 1, - "build_heap": 3, - "heap_exist": 3, - "list_to_heap": 2, - "nil": 46, - "exact": 4, - "nil_is_heap.": 1, - "i": 11, - "meq_trans": 10, - "meq_right": 2, - "meq_sym": 2, - "flat_spec": 3, - "flat_exist": 3, - "heap_to_list": 2, - "h": 14, - "s1": 20, - "i1": 15, - "m1": 1, - "s2": 2, - "i2": 10, - "m2.": 1, - "meq_congr": 1, - "munion_rotate.": 1, - "treesort": 1, - "&": 21, - "permutation": 43, - "intro": 27, - "permutation.": 1, - "exists": 60, - "Export": 10, - "SfLib.": 2, - "AExp.": 2, - "aexp": 30, - "ANum": 18, - "APlus": 14, - "AMinus": 9, - "AMult": 9, - "aexp.": 1, - "bexp": 22, - "BTrue": 10, - "BFalse": 11, - "BEq": 9, - "BLe": 9, - "BNot": 9, - "BAnd": 10, - "bexp.": 1, - "aeval": 46, - "e": 53, - "a1": 56, - "a2": 62, - "test_aeval1": 1, - "beval": 16, - "optimize_0plus": 15, - "e2": 54, - "e1": 58, - "test_optimize_0plus": 1, - "optimize_0plus_sound": 4, - "e.": 15, - "e1.": 1, - "SCase": 24, - "SSCase": 3, - "IHe2.": 10, - "IHe1.": 11, - "aexp_cases": 3, - "try": 17, - "IHe1": 6, - "IHe2": 6, - "optimize_0plus_all": 2, - "Tactic": 9, - "tactic": 9, - "first": 18, - "ident": 9, - "Case_aux": 38, - "optimize_0plus_all_sound": 1, - "bexp_cases": 4, - "optimize_and": 5, - "optimize_and_sound": 1, - "IHe": 2, - "aevalR_first_try.": 2, - "aevalR": 18, - "E_Anum": 1, - "E_APlus": 2, - "n1": 45, - "n2": 41, - "E_AMinus": 2, - "E_AMult": 2, - "Reserved": 4, - "E_ANum": 1, - "where": 6, - "bevalR": 11, - "E_BTrue": 1, - "E_BFalse": 1, - "E_BEq": 1, - "E_BLe": 1, - "E_BNot": 1, - "E_BAnd": 1, - "aeval_iff_aevalR": 9, - "split.": 17, - "subst": 7, - "generalize": 13, - "dependent": 6, - "IHa1": 1, - "IHa2": 1, - "beval_iff_bevalR": 1, - "*.": 110, - "subst.": 43, - "IHbevalR": 1, - "IHbevalR1": 1, - "IHbevalR2": 1, - "a.": 6, - "constructor.": 16, - "<": 76, - "remember": 12, - "IHa.": 1, - "IHa1.": 1, - "IHa2.": 1, - "silly_presburger_formula": 1, - "<=>": 12, - "3": 2, - "omega": 7, - "Id": 7, - "id": 7, - "id.": 1, - "beq_id": 14, - "id1": 2, - "id2": 2, - "beq_id_refl": 1, - "i.": 2, - "beq_nat_refl.": 1, - "beq_id_eq": 4, - "i2.": 8, - "i1.": 3, - "beq_nat_eq": 2, - "beq_id_false_not_eq": 1, - "C.": 3, - "n0": 5, - "beq_false_not_eq": 1, - "not_eq_beq_id_false": 1, - "not_eq_beq_false.": 1, - "beq_nat_sym": 2, - "AId": 4, - "com_cases": 1, - "SKIP": 5, - "IFB": 4, - "WHILE": 5, - "c1": 14, - "c2": 9, - "e3": 1, - "cl": 1, - "st": 113, - "E_IfTrue": 2, - "THEN": 3, - "ELSE": 3, - "FI": 3, - "E_WhileEnd": 2, - "DO": 4, - "END": 4, - "E_WhileLoop": 2, - "ceval_cases": 1, - "E_Skip": 1, - "E_Ass": 1, - "E_Seq": 1, - "E_IfFalse": 1, - "assignment": 1, - "command": 2, - "if": 10, - "st1": 2, - "IHi1": 3, - "Heqst1": 1, - "Hceval.": 4, - "Hceval": 2, - "assumption.": 61, - "bval": 2, - "ceval_step": 3, - "Some": 21, - "ceval_step_more": 7, - "x1.": 3, - "omega.": 7, - "x2.": 2, - "IHHce.": 2, - "%": 3, - "IHHce1.": 1, - "IHHce2.": 1, - "x0": 14, - "plus2": 1, - "nx": 3, - "Y": 38, - "ny": 2, - "XtimesYinZ": 1, - "Z": 11, - "ny.": 1, - "loop": 2, - "contra.": 19, - "loopdef.": 1, - "Heqloopdef.": 8, - "contra1.": 1, - "IHcontra2.": 1, - "no_whiles": 15, - "com": 5, - "ct": 2, - "cf": 2, - "no_Whiles": 10, - "noWhilesSKIP": 1, - "noWhilesAss": 1, - "noWhilesSeq": 1, - "noWhilesIf": 1, - "no_whiles_eqv": 1, - "noWhilesSKIP.": 1, - "noWhilesAss.": 1, - "noWhilesSeq.": 1, - "IHc1.": 2, - "auto.": 47, - "eauto": 10, - "andb_true_elim1": 4, - "IHc2.": 2, - "andb_true_elim2": 4, - "noWhilesIf.": 1, - "andb_true_intro.": 2, - "no_whiles_terminate": 1, - "state": 6, - "st.": 7, - "update": 2, - "IHc1": 2, - "IHc2": 2, - "H5.": 1, - "x1": 11, - "r": 11, - "r.": 3, - "symmetry": 4, - "Heqr.": 1, - "H4.": 2, - "s": 13, - "Heqr": 3, - "H8.": 1, - "H10": 1, - "assumption": 10, - "beval_short_circuit": 5, - "beval_short_circuit_eqv": 1, - "sinstr": 8, - "SPush": 8, - "SLoad": 6, - "SPlus": 10, - "SMinus": 11, - "SMult": 11, - "sinstr.": 1, - "s_execute": 21, - "stack": 7, - "prog": 2, - "cons": 26, - "al": 3, - "bl": 3, - "s_execute1": 1, - "empty_state": 2, - "s_execute2": 1, - "s_compile": 36, - "v": 28, - "s_compile1": 1, - "execute_theorem": 1, - "other": 20, - "other.": 4, - "app_ass.": 6, - "s_compile_correct": 1, - "app_nil_end.": 1, - "execute_theorem.": 1, - "Eqdep_dec.": 1, - "Arith.": 2, - "eq_rect_eq_nat": 2, - "Q": 3, - "eq_rect": 3, - "h.": 1, - "K_dec_set": 1, - "eq_nat_dec.": 1, - "Scheme": 1, - "le_ind": 1, - "replace": 4, - "le_n": 4, - "fun": 17, - "refl_equal": 4, - "pattern": 2, - "case": 2, - "trivial.": 14, - "contradiction": 8, - "le_Sn_n": 5, - "le_S": 6, - "Heq": 8, - "m0": 1, - "HeqS": 3, - "injection": 4, - "HeqS.": 2, - "eq_rect_eq_nat.": 1, - "IHp": 2, - "dep_pair_intro": 2, - "Hx": 20, - "Hy": 14, - "<=n),>": 1, - "x=": 1, - "exist": 7, - "Hy.": 3, - "Heq.": 6, - "le_uniqueness_proof": 1, - "Hy0": 1, - "card": 2, - "f": 108, - "card_interval": 1, - "<=n}>": 1, - "proj1_sig": 1, - "proj2_sig": 1, - "Hp": 5, - "Hq": 3, - "Hpq.": 1, - "Hmn.": 1, - "Hmn": 1, - "interval_dec": 1, - "left.": 3, - "dep_pair_intro.": 3, - "right.": 9, - "discriminate": 3, - "le_Sn_le": 2, - "eq_S.": 1, - "Hneq.": 2, - "card_inj_aux": 1, - "g": 6, - "False.": 1, - "Hfbound": 1, - "Hfinj": 1, - "Hgsurj.": 1, - "Hgsurj": 3, - "Hfx": 2, - "le_n_O_eq.": 2, - "Hfbound.": 2, - "Hx.": 5, - "le_lt_dec": 9, - "xSn": 21, - "then": 9, - "else": 9, - "is": 4, - "bounded": 1, - "injective": 6, - "Hlefx": 1, - "Hgefx": 1, - "Hlefy": 1, - "Hgefy": 1, - "Hfinj.": 3, - "sym_not_eq.": 2, - "Heqf.": 2, - "Hneqy.": 2, - "le_lt_trans": 2, - "le_O_n.": 2, - "le_neq_lt": 2, - "Hneqx.": 2, - "pred_inj.": 1, - "lt_O_neq": 2, - "neq_dep_intro": 2, - "inj_restrict": 1, - "Heqf": 1, - "surjective": 1, - "Hlep.": 3, - "Hle": 1, - "Hlt": 3, - "Hfsurj": 2, - "le_n_S": 1, - "Hlep": 4, - "Hneq": 7, - "Heqx.": 2, - "Heqx": 4, - "Hle.": 1, - "le_not_lt": 1, - "lt_trans": 4, - "lt_n_Sn.": 1, - "Hlt.": 1, - "lt_irrefl": 2, - "lt_le_trans": 1, - "pose": 2, - "let": 3, - "Hneqx": 1, - "Hneqy": 1, - "Heqg": 1, - "Hdec": 3, - "Heqy": 1, - "Hginj": 1, - "HSnx.": 1, - "HSnx": 1, - "interval_discr": 1, - "<=m}>": 1, - "card_inj": 1, - "interval_dec.": 1, - "card_interval.": 2, - "Basics.": 2, - "NatList.": 2, - "natprod": 5, - "pair": 7, - "natprod.": 1, - "fst": 3, - "snd": 3, - "swap_pair": 1, - "surjective_pairing": 1, - "count": 7, - "remove_one": 3, - "test_remove_one1": 1, - "remove_all": 2, - "bag": 3, - "app_ass": 1, - "l3": 12, - "natlist": 7, - "l3.": 1, - "remove_decreases_count": 1, - "s.": 4, - "ble_n_Sn.": 1, - "IHs.": 2, - "natoption": 5, - "None": 9, - "natoption.": 1, - "index": 3, - "option_elim": 2, - "hd_opt": 8, - "test_hd_opt1": 2, - "None.": 2, - "test_hd_opt2": 2, - "option_elim_hd": 1, - "head": 1, - "beq_natlist": 5, - "v1": 7, - "r1": 2, - "v2": 2, - "r2": 2, - "test_beq_natlist1": 1, - "test_beq_natlist2": 1, - "beq_natlist_refl": 1, - "IHl.": 7, - "silly1": 1, - "eq1": 6, - "eq2.": 9, - "eq2": 1, - "silly2a": 1, - "eq1.": 5, - "silly_ex": 1, - "silly3": 1, - "symmetry.": 2, - "rev_exercise": 1, - "rev_involutive.": 1, - "Setoid": 1, - "Compare_dec": 1, - "ListNotations.": 1, - "Implicit": 15, - "Arguments.": 2, - "Permutation.": 2, - "Permutation": 38, - "perm_nil": 1, - "perm_skip": 1, - "Local": 7, - "Constructors": 3, - "Permutation_nil": 2, - "HF.": 3, - "@nil": 1, - "HF": 2, - "||": 1, - "Permutation_nil_cons": 1, - "discriminate.": 2, - "Permutation_refl": 1, - "Permutation_sym": 1, - "Hperm": 7, - "perm_trans": 1, - "Permutation_trans": 4, - "Logic.eq": 2, - "@Permutation": 5, - "iff": 1, - "@In": 1, - "red": 6, - "Permutation_in.": 2, - "Permutation_app_tail": 2, - "tl": 8, - "eapply": 8, - "Permutation_app_head": 2, - "app_comm_cons": 5, - "Permutation_app": 3, - "Hpermmm": 1, - "idtac": 1, - "Global": 5, - "@app": 1, - "Permutation_app.": 1, - "Permutation_add_inside": 1, - "Permutation_cons_append": 1, - "IHl": 8, - "Permutation_cons_append.": 3, - "Permutation_app_comm": 3, - "app_nil_r": 1, - "app_assoc": 2, - "Permutation_cons_app": 3, - "Permutation_middle": 2, - "Permutation_rev": 3, - "rev": 7, - "1": 1, - "@rev": 1, - "2": 1, - "Permutation_length": 2, - "length": 21, - "transitivity": 4, - "@length": 1, - "Permutation_length.": 1, - "Permutation_ind_bis": 2, - "Hnil": 1, - "Hskip": 3, - "Hswap": 2, - "Htrans.": 1, - "Htrans": 1, - "eauto.": 7, - "Ltac": 1, - "break_list": 5, - "Permutation_nil_app_cons": 1, - "l4": 3, - "P.": 5, - "IH": 3, - "Permutation_middle.": 3, - "perm_swap.": 2, - "perm_swap": 1, - "eq_refl": 2, - "In_split": 1, - "Permutation_app_inv": 1, - "NoDup": 4, - "incl": 3, - "N.": 1, - "E": 7, - "Ha": 6, - "In": 6, - "N": 1, - "Hal": 1, - "Hl": 1, - "exfalso.": 1, - "NoDup_Permutation_bis": 2, - "inversion_clear": 6, - "intuition.": 2, - "Permutation_NoDup": 1, - "Permutation_map": 1, - "Hf": 15, - "injective_bounded_surjective": 1, - "set": 1, - "seq": 2, - "map": 4, - "x.": 3, - "in_map_iff.": 2, - "in_seq": 4, - "arith": 4, - "NoDup_cardinal_incl": 1, - "injective_map_NoDup": 2, - "seq_NoDup": 1, - "map_length": 1, - "by": 7, - "in_map_iff": 1, - "split": 14, - "nat_bijection_Permutation": 1, - "BD.": 1, - "seq_NoDup.": 1, - "map_length.": 1, - "Injection": 1, - "Permutation_alt": 1, - "Alternative": 1, - "characterization": 1, - "of": 4, - "via": 1, - "nth_error": 7, - "and": 1, - "nth": 2, - "adapt": 4, - "adapt_injective": 1, - "adapt.": 2, - "EQ.": 2, - "LE": 11, - "LT": 14, - "eq_add_S": 2, - "Hf.": 1, - "Lt.le_lt_or_eq": 3, - "LE.": 3, - "EQ": 8, - "lt": 3, - "LT.": 5, - "Lt.S_pred": 3, - "Lt.lt_not_le": 2, - "adapt_ok": 2, - "nth_error_app1": 1, - "nth_error_app2": 1, - "arith.": 8, - "Minus.minus_Sn_m": 1, - "Permutation_nth_error": 2, - "IHP": 2, - "IHP2": 1, - "Hg": 2, - "E.": 2, - "L12": 2, - "app_length.": 2, - "plus_n_Sm.": 1, - "adapt_injective.": 1, - "nth_error_None": 4, - "Hn": 1, - "Hf2": 1, - "Hf3": 2, - "Lt.le_or_lt": 1, - "Lt.lt_irrefl": 2, - "Lt.lt_le_trans": 2, - "Hf1": 1, - "do": 4, - "congruence.": 1, - "Permutation_alt.": 1, - "Permutation_app_swap": 1, - "only": 3, - "parsing": 3, - "Omega": 1, - "SetoidList.": 1, - "nil.": 2, - "..": 4, - "Permut.": 1, - "eqA_equiv": 1, - "eqA.": 1, - "list_contents_app": 5, - "permut_refl": 1, - "permut_sym": 4, - "permut_trans": 5, - "permut_cons_eq": 3, - "meq_left": 1, - "meq_singleton": 1, - "permut_cons": 5, - "permut_app": 1, - "specialize": 6, - "a0.": 1, - "decide": 1, - "permut_add_inside_eq": 1, - "permut_add_cons_inside": 3, - "permut_add_inside": 1, - "permut_middle": 1, - "permut_refl.": 5, - "permut_sym_app": 1, - "permut_rev": 1, - "permut_add_cons_inside.": 1, - "app_nil_end": 1, - "results": 1, - "permut_conv_inv": 1, - "plus_reg_l.": 1, - "permut_app_inv1": 1, - "list_contents_app.": 1, - "plus_reg_l": 1, - "multiplicity": 6, - "Fact": 3, - "if_eqA_then": 1, - "B": 6, - "if_eqA_refl": 3, - "decide_left": 1, - "if_eqA": 1, - "contradict": 3, - "A1": 2, - "if_eqA_rewrite_r": 1, - "A2": 4, - "Hxx": 1, - "multiplicity_InA": 4, - "InA": 8, - "multiplicity_InA_O": 2, - "multiplicity_InA_S": 1, - "multiplicity_NoDupA": 1, - "NoDupA": 3, - "NEQ": 1, - "compatible": 1, - "permut_InA_InA": 3, - "multiplicity_InA.": 1, - "meq.": 2, - "permut_cons_InA": 3, - "permut_nil": 3, - "Abs": 2, - "permut_length_1": 1, - "permut_length_2": 1, - "permut_length_1.": 2, - "@if_eqA_rewrite_l": 2, - "permut_length": 1, - "InA_split": 1, - "h2": 1, - "plus_n_Sm": 1, - "f_equal.": 1, - "app_length": 1, - "IHl1": 1, - "permut_remove_hd": 1, - "f_equal": 1, - "if_eqA_rewrite_l": 1, - "NoDupA_equivlistA_permut": 1, - "Equivalence_Reflexive.": 1, - "change": 1, - "Equivalence_Reflexive": 1, - "Forall2": 2, - "permutation_Permutation": 1, - "Forall2.": 1, - "proof": 1, - "IHA": 2, - "Forall2_app_inv_r": 1, - "Hl1": 1, - "Hl2": 1, - "Forall2_app": 1, - "Forall2_cons": 1, - "Permutation_impl_permutation": 1, - "permut_eqA": 1, - "Permut_permut.": 1, - "permut_right": 1, - "permut_tran": 1, - "Lists.": 1, - "X.": 4, - "app": 5, - "snoc": 9, - "Arguments": 11, - "list123": 1, - "right": 2, - "test_repeat1": 1, - "nil_app": 1, - "rev_snoc": 1, - "snoc_with_append": 1, - "v.": 1, - "IHl1.": 1, - "prod": 3, - "Y.": 1, - "type_scope.": 1, - "combine": 3, - "lx": 4, - "ly": 4, - "tx": 2, - "ty": 7, - "tp": 2, - "option": 6, - "xs": 7, - "plus3": 2, - "prod_curry": 3, - "prod_uncurry": 3, - "uncurry_uncurry": 1, - "curry_uncurry": 1, - "filter": 3, - "test": 4, - "countoddmembers": 1, - "k": 7, - "fmostlytrue": 5, - "override": 5, - "ftrue": 1, - "override_example1": 1, - "override_example2": 1, - "override_example3": 1, - "override_example4": 1, - "override_example": 1, - "constfun": 1, - "unfold_example_bad": 1, - "plus3.": 1, - "override_eq": 1, - "f.": 1, - "override.": 2, - "override_neq": 1, - "x2": 3, - "k1": 5, - "k2": 4, - "eq.": 11, - "silly4": 1, - "silly5": 1, - "sillyex1": 1, - "j": 6, - "j.": 1, - "silly6": 1, - "silly7": 1, - "sillyex2": 1, - "assertion": 3, - "Hl.": 1, - "eq": 4, - "beq_nat_O_l": 1, - "beq_nat_O_r": 1, - "double_injective": 1, - "double": 2, - "fold_map": 2, - "fold": 1, - "total": 2, - "fold_map_correct": 1, - "fold_map.": 1, - "forallb": 4, - "existsb": 3, - "existsb2": 2, - "existsb_correct": 1, - "existsb2.": 1, - "index_okx": 1, - "mumble": 5, - "mumble.": 1, - "grumble": 3, - "Logic.": 1, - "Prop.": 1, - "partial_function": 6, - "R": 54, - "y1": 6, - "y2": 5, - "y2.": 3, - "next_nat_partial_function": 1, - "next_nat.": 1, - "partial_function.": 5, - "Q.": 2, - "le_not_a_partial_function": 1, - "le": 1, - "not.": 3, - "Nonsense.": 4, - "le_n.": 6, - "le_S.": 4, - "total_relation_not_partial_function": 1, - "total_relation": 1, - "total_relation1.": 2, - "empty_relation_not_partial_funcion": 1, - "empty_relation.": 1, - "reflexive": 5, - "le_reflexive": 1, - "le.": 4, - "reflexive.": 1, - "transitive": 8, - "le_trans": 4, - "Hnm": 3, - "Hmo.": 4, - "Hnm.": 3, - "IHHmo.": 1, - "lt.": 2, - "transitive.": 1, - "Hm": 1, - "le_S_n": 2, - "Sn_le_Sm__n_le_m.": 1, - "not": 1, - "TODO": 1, - "Hmo": 1, - "symmetric": 2, - "antisymmetric": 3, - "le_antisymmetric": 1, - "Sn_le_Sm__n_le_m": 2, - "IHb": 1, - "equivalence": 1, - "order": 2, - "preorder": 1, - "le_order": 1, - "order.": 1, - "le_reflexive.": 1, - "le_antisymmetric.": 1, - "le_trans.": 1, - "clos_refl_trans": 8, - "rt_step": 1, - "rt_refl": 1, - "rt_trans": 3, - "next_nat_closure_is_le": 1, - "next_nat": 1, - "rt_refl.": 2, - "IHle.": 1, - "rt_step.": 2, - "nn.": 1, - "IHclos_refl_trans1.": 2, - "IHclos_refl_trans2.": 2, - "refl_step_closure": 11, - "rsc_refl": 1, - "rsc_step": 4, - "rsc_R": 2, - "rsc_refl.": 4, - "rsc_trans": 4, - "IHrefl_step_closure": 1, - "rtc_rsc_coincide": 1, - "IHrefl_step_closure.": 1, - "Imp.": 1, - "Relations.": 1, - "tm": 43, - "tm_const": 45, - "tm_plus": 30, - "tm.": 3, - "SimpleArith0.": 2, - "eval": 8, - "SimpleArith1.": 2, - "E_Const": 2, - "E_Plus": 2, - "test_step_1": 1, - "ST_Plus1.": 2, - "ST_PlusConstConst.": 3, - "test_step_2": 1, - "ST_Plus2.": 2, - "step_deterministic": 1, - "step.": 3, - "Hy1": 2, - "Hy2.": 2, - "step_cases": 4, - "Hy2": 3, - "SCase.": 3, - "Hy1.": 5, - "IHHy1": 2, - "SimpleArith2.": 1, - "value": 25, - "v_const": 4, - "step": 9, - "ST_PlusConstConst": 3, - "ST_Plus1": 2, - "strong_progress": 2, - "value_not_same_as_normal_form": 2, - "normal_form": 3, - "t.": 4, - "normal_form.": 2, - "v_funny.": 1, - "Temp1.": 1, - "Temp2.": 1, - "ST_Funny": 1, - "Temp3.": 1, - "Temp4.": 2, - "tm_true": 8, - "tm_false": 5, - "tm_if": 10, - "v_true": 1, - "v_false": 1, - "tm_false.": 3, - "ST_IfTrue": 1, - "ST_IfFalse": 1, - "ST_If": 1, - "t3": 6, - "bool_step_prop4": 1, - "bool_step_prop4_holds": 1, - "bool_step_prop4.": 2, - "ST_ShortCut.": 1, - "IHt1.": 1, - "t2.": 4, - "t3.": 2, - "ST_If.": 2, - "Temp5.": 1, - "stepmany": 4, - "normalizing": 1, - "IHt2": 3, - "H11": 2, - "H12": 2, - "H21": 3, - "H22": 2, - "nf_same_as_value": 3, - "H12.": 1, - "H22.": 1, - "H11.": 1, - "stepmany_congr_1": 1, - "stepmany_congr2": 1, - "eval__value": 1, - "HE.": 1, - "eval_cases": 1, - "HE": 1, - "v_const.": 1, - "Sorted.": 1, - "Mergesort.": 1, - "STLC.": 1, - "ty_Bool": 10, - "ty_arrow": 7, - "ty.": 2, - "tm_var": 6, - "tm_app": 7, - "tm_abs": 9, - "idB": 2, - "idBB": 2, - "idBBBB": 2, - "v_abs": 1, - "t_true": 1, - "t_false": 1, - "value.": 1, - "ST_App2": 1, - "step_example3": 1, - "idB.": 1, - "rsc_step.": 2, - "ST_App1.": 2, - "ST_AppAbs.": 3, - "v_abs.": 2, - "context": 1, - "partial_map": 4, - "Context.": 1, - "empty": 3, - "extend": 1, - "Gamma": 10, - "has_type": 4, - "appears_free_in": 1, - "S.": 1, - "HT": 1, - "T_Var.": 1, - "extend_neq": 1, - "Heqe.": 3, - "T_Abs.": 1, - "context_invariance...": 2, - "Hafi.": 2, - "extend.": 2, - "IHt.": 1, - "Coiso1.": 2, - "Coiso2.": 3, - "HeqCoiso1.": 1, - "HeqCoiso2.": 1, - "beq_id_false_not_eq.": 1, - "ex_falso_quodlibet.": 1, - "preservation": 1, - "HT.": 1, - "substitution_preserves_typing": 1, - "T11.": 4, - "HT1.": 1, - "T_App": 2, - "IHHT1.": 1, - "IHHT2.": 1, - "tm_cases": 1, - "Ht": 1, - "Ht.": 3, - "IHt1": 2, - "T11": 2, - "ST_App2.": 1, - "ty_Bool.": 1, - "IHt3": 1, - "ST_IfTrue.": 1, - "ST_IfFalse.": 1, - "types_unique": 1, - "T12": 2, - "IHhas_type.": 1, - "IHhas_type1.": 1, - "IHhas_type2.": 1 - }, - "Creole": { - "Creole": 6, - "is": 3, - "a": 2, - "-": 5, - "to": 2, - "HTML": 1, - "converter": 2, - "for": 1, - "the": 5, - "lightweight": 1, - "markup": 1, - "language": 1, - "(": 5, - "http": 4, - "//wikicreole.org/": 1, - ")": 5, - ".": 1, - "Github": 1, - "uses": 1, - "this": 1, - "render": 1, - "*.creole": 1, - "files.": 1, - "Project": 1, - "page": 1, - "on": 2, - "github": 1, - "*": 5, - "//github.com/minad/creole": 1, - "Travis": 1, - "CI": 1, - "https": 1, - "//travis": 1, - "ci.org/minad/creole": 1, - "RDOC": 1, - "//rdoc.info/projects/minad/creole": 1, - "INSTALLATION": 1, - "{": 6, - "gem": 1, - "install": 1, - "creole": 1, - "}": 6, - "SYNOPSIS": 1, - "require": 1, - "html": 1, - "Creole.creolize": 1, - "BUGS": 1, - "If": 1, - "you": 1, - "found": 1, - "bug": 1, - "please": 1, - "report": 1, - "it": 1, - "at": 1, - "project": 1, - "s": 1, - "tracker": 1, - "GitHub": 1, - "//github.com/minad/creole/issues": 1, - "AUTHORS": 1, - "Lars": 2, - "Christensen": 2, - "larsch": 1, - "Daniel": 2, - "Mendler": 1, - "minad": 1, - "LICENSE": 1, - "Copyright": 1, - "c": 1, - "Mendler.": 1, - "It": 1, - "free": 1, - "software": 1, - "and": 1, - "may": 1, - "be": 1, - "redistributed": 1, - "under": 1, - "terms": 1, - "specified": 1, - "in": 1, - "README": 1, - "file": 1, - "of": 1, - "Ruby": 1, - "distribution.": 1 - }, - "CSS": { - ".clearfix": 8, - "{": 1661, - "*zoom": 48, - ";": 4219, - "}": 1705, - "before": 48, - "after": 96, - "display": 135, - "table": 44, - "content": 66, - "line": 97, - "-": 8839, - "height": 141, - "clear": 32, - "both": 30, - ".hide": 12, - "text": 129, - "font": 142, - "/0": 2, - "a": 268, - "color": 711, - "transparent": 148, - "shadow": 254, - "none": 128, - "background": 770, - "border": 912, - ".input": 216, - "block": 133, - "level": 2, - "width": 215, - "%": 366, - "min": 14, - "px": 2535, - "webkit": 364, - "box": 264, - "sizing": 27, - "moz": 316, - "article": 2, - "aside": 2, - "details": 2, - "figcaption": 2, - "figure": 2, - "footer": 2, - "header": 12, - "hgroup": 2, - "nav": 2, - "section": 2, - "audio": 4, - "canvas": 2, - "video": 4, - "inline": 116, - "*display": 20, - "not": 6, - "(": 748, - "[": 384, - "controls": 2, - "]": 384, - ")": 748, - "html": 4, - "size": 104, - "adjust": 6, - "ms": 13, - "focus": 232, - "outline": 30, - "thin": 8, - "dotted": 10, - "#333": 6, - "auto": 50, - "ring": 6, - "offset": 6, - "hover": 144, - "active": 46, - "sub": 4, - "sup": 4, - "position": 342, - "relative": 18, - "vertical": 56, - "align": 72, - "baseline": 4, - "top": 376, - "em": 6, - "bottom": 309, - "img": 14, - "max": 18, - "middle": 20, - "interpolation": 2, - "mode": 2, - "bicubic": 2, - "#map_canvas": 2, - ".google": 2, - "maps": 2, - "button": 18, - "input": 336, - "select": 90, - "textarea": 76, - "margin": 424, - "*overflow": 3, - "visible": 8, - "normal": 18, - "inner": 37, - "padding": 174, - "type": 174, - "appearance": 6, - "cursor": 30, - "pointer": 12, - "label": 20, - "textfield": 2, - "search": 66, - "decoration": 33, - "cancel": 2, - "overflow": 21, - "@media": 2, - "print": 4, - "*": 2, - "important": 18, - "#000": 2, - "visited": 2, - "underline": 6, - "href": 28, - "attr": 4, - "abbr": 6, - "title": 10, - ".ir": 2, - "pre": 16, - "blockquote": 14, - "solid": 93, - "#999": 6, - "page": 6, - "break": 12, - "inside": 4, - "avoid": 6, - "thead": 38, - "group": 120, - "tr": 92, - "@page": 2, - "cm": 2, - "p": 14, - "h2": 14, - "h3": 14, - "orphans": 2, - "widows": 2, - "body": 3, - "family": 10, - "Helvetica": 6, - "Arial": 6, - "sans": 6, - "serif": 6, - "#333333": 26, - "#ffffff": 136, - "#0088cc": 24, - "#005580": 8, - ".img": 6, - "rounded": 2, - "radius": 534, - "polaroid": 2, - "#fff": 10, - "#ccc": 13, - "rgba": 409, - "circle": 18, - ".row": 126, - "left": 489, - "class*": 100, - "float": 84, - ".container": 32, - ".navbar": 332, - "static": 14, - "fixed": 36, - ".span12": 4, - ".span11": 4, - ".span10": 4, - ".span9": 4, - ".span8": 4, - ".span7": 4, - ".span6": 4, - ".span5": 4, - ".span4": 4, - ".span3": 4, - ".span2": 4, - ".span1": 4, - ".offset12": 6, - ".offset11": 6, - ".offset10": 6, - ".offset9": 6, - ".offset8": 6, - ".offset7": 6, - ".offset6": 6, - ".offset5": 6, - ".offset4": 6, - ".offset3": 6, - ".offset2": 6, - ".offset1": 6, - "fluid": 126, - "*margin": 70, - "first": 179, - "child": 301, - ".controls": 28, - "row": 20, - "+": 105, - "*width": 26, - ".pull": 16, - "right": 258, - ".lead": 2, - "weight": 28, - "small": 66, - "strong": 2, - "bold": 14, - "style": 21, - "italic": 4, - "cite": 2, - ".muted": 2, - "#999999": 50, - "a.muted": 4, - "#808080": 2, - ".text": 14, - "warning": 33, - "#c09853": 14, - "a.text": 16, - "#a47e3c": 4, - "error": 10, - "#b94a48": 20, - "#953b39": 6, - "info": 37, - "#3a87ad": 18, - "#2d6987": 6, - "success": 35, - "#468847": 18, - "#356635": 6, - "center": 17, - "h1": 11, - "h4": 20, - "h5": 6, - "h6": 6, - "inherit": 8, - "rendering": 2, - "optimizelegibility": 2, - ".page": 2, - "#eeeeee": 31, - "ul": 84, - "ol": 10, - "li": 205, - "ul.unstyled": 2, - "ol.unstyled": 2, - "list": 44, - "ul.inline": 4, - "ol.inline": 4, - "dl": 2, - "dt": 6, - "dd": 6, - ".dl": 12, - "horizontal": 60, - "hidden": 9, - "ellipsis": 2, - "white": 25, - "space": 23, - "nowrap": 14, - "hr": 2, - "data": 2, - "original": 2, - "help": 2, - "abbr.initialism": 2, - "transform": 4, - "uppercase": 4, - "blockquote.pull": 10, - "q": 4, - "address": 2, - "code": 6, - "Monaco": 2, - "Menlo": 2, - "Consolas": 2, - "monospace": 2, - "#d14": 2, - "#f7f7f9": 2, - "#e1e1e8": 2, - "word": 6, - "all": 10, - "wrap": 6, - "#f5f5f5": 26, - "pre.prettyprint": 2, - ".pre": 2, - "scrollable": 2, - "y": 2, - "scroll": 2, - ".label": 30, - ".badge": 30, - "empty": 7, - "a.label": 4, - "a.badge": 4, - "#f89406": 27, - "#c67605": 4, - "inverse": 110, - "#1a1a1a": 2, - ".btn": 506, - "mini": 34, - "collapse": 12, - "spacing": 3, - ".table": 180, - "th": 70, - "td": 66, - "#dddddd": 16, - "caption": 18, - "colgroup": 18, - "tbody": 68, - "condensed": 4, - "bordered": 76, - "separate": 4, - "*border": 8, - "topleft": 16, - "last": 118, - "topright": 16, - "tfoot": 12, - "bottomleft": 16, - "bottomright": 16, - "striped": 13, - "nth": 4, - "odd": 4, - "#f9f9f9": 12, - "cell": 2, - "td.span1": 2, - "th.span1": 2, - "td.span2": 2, - "th.span2": 2, - "td.span3": 2, - "th.span3": 2, - "td.span4": 2, - "th.span4": 2, - "td.span5": 2, - "th.span5": 2, - "td.span6": 2, - "th.span6": 2, - "td.span7": 2, - "th.span7": 2, - "td.span8": 2, - "th.span8": 2, - "td.span9": 2, - "th.span9": 2, - "td.span10": 2, - "th.span10": 2, - "td.span11": 2, - "th.span11": 2, - "td.span12": 2, - "th.span12": 2, - "tr.success": 4, - "#dff0d8": 6, - "tr.error": 4, - "#f2dede": 6, - "tr.warning": 4, - "#fcf8e3": 6, - "tr.info": 4, - "#d9edf7": 6, - "#d0e9c6": 2, - "#ebcccc": 2, - "#faf2cc": 2, - "#c4e3f3": 2, - "form": 38, - "fieldset": 2, - "legend": 6, - "#e5e5e5": 28, - ".uneditable": 80, - "#555555": 18, - "#cccccc": 18, - "inset": 132, - "transition": 36, - "linear": 204, - ".2s": 16, - "o": 48, - ".075": 12, - ".6": 6, - "multiple": 2, - "#fcfcfc": 2, - "allowed": 4, - "placeholder": 18, - ".radio": 26, - ".checkbox": 26, - ".radio.inline": 6, - ".checkbox.inline": 6, - "medium": 2, - "large": 40, - "xlarge": 2, - "xxlarge": 2, - "append": 120, - "prepend": 82, - "input.span12": 4, - "textarea.span12": 2, - "input.span11": 4, - "textarea.span11": 2, - "input.span10": 4, - "textarea.span10": 2, - "input.span9": 4, - "textarea.span9": 2, - "input.span8": 4, - "textarea.span8": 2, - "input.span7": 4, - "textarea.span7": 2, - "input.span6": 4, - "textarea.span6": 2, - "input.span5": 4, - "textarea.span5": 2, - "input.span4": 4, - "textarea.span4": 2, - "input.span3": 4, - "textarea.span3": 2, - "input.span2": 4, - "textarea.span2": 2, - "input.span1": 4, - "textarea.span1": 2, - "disabled": 36, - "readonly": 10, - ".control": 150, - "group.warning": 32, - ".help": 44, - "#dbc59e": 6, - ".add": 36, - "on": 36, - "group.error": 32, - "#d59392": 6, - "group.success": 32, - "#7aba7b": 6, - "group.info": 32, - "#7ab5d3": 6, - "invalid": 12, - "#ee5f5b": 18, - "#e9322d": 2, - "#f8b9b7": 6, - ".form": 132, - "actions": 10, - "#595959": 2, - ".dropdown": 126, - "menu": 42, - ".popover": 14, - "z": 12, - "index": 14, - "toggle": 84, - ".active": 86, - "#a9dba9": 2, - "#46a546": 2, - "prepend.input": 22, - "input.search": 2, - "query": 22, - ".search": 22, - "*padding": 36, - "image": 187, - "gradient": 175, - "#e6e6e6": 20, - "from": 40, - "to": 75, - "repeat": 66, - "x": 30, - "filter": 57, - "progid": 48, - "DXImageTransform.Microsoft.gradient": 48, - "startColorstr": 30, - "endColorstr": 30, - "GradientType": 30, - "#bfbfbf": 4, - "*background": 36, - "enabled": 18, - "false": 18, - "#b3b3b3": 2, - ".3em": 6, - ".2": 12, - ".05": 24, - ".btn.active": 8, - ".btn.disabled": 4, - "#d9d9d9": 4, - "s": 25, - ".15": 24, - "default": 12, - "opacity": 15, - "alpha": 7, - "class": 26, - "primary.active": 6, - "warning.active": 6, - "danger.active": 6, - "success.active": 6, - "info.active": 6, - "inverse.active": 6, - "primary": 14, - "#006dcc": 2, - "#0044cc": 20, - "#002a80": 2, - "primary.disabled": 2, - "#003bb3": 2, - "#003399": 2, - "#faa732": 3, - "#fbb450": 16, - "#ad6704": 2, - "warning.disabled": 2, - "#df8505": 2, - "danger": 21, - "#da4f49": 2, - "#bd362f": 20, - "#802420": 2, - "danger.disabled": 2, - "#a9302a": 2, - "#942a25": 2, - "#5bb75b": 2, - "#62c462": 16, - "#51a351": 20, - "#387038": 2, - "success.disabled": 2, - "#499249": 2, - "#408140": 2, - "#49afcd": 2, - "#5bc0de": 16, - "#2f96b4": 20, - "#1f6377": 2, - "info.disabled": 2, - "#2a85a0": 2, - "#24748c": 2, - "#363636": 2, - "#444444": 10, - "#222222": 32, - "#000000": 14, - "inverse.disabled": 2, - "#151515": 12, - "#080808": 2, - "button.btn": 4, - "button.btn.btn": 6, - ".btn.btn": 6, - "link": 28, - "url": 4, - "no": 2, - ".icon": 288, - ".nav": 308, - "pills": 28, - "submenu": 8, - "glass": 2, - "music": 2, - "envelope": 2, - "heart": 2, - "star": 4, - "user": 2, - "film": 2, - "ok": 6, - "remove": 6, - "zoom": 5, - "in": 10, - "out": 10, - "off": 4, - "signal": 2, - "cog": 2, - "trash": 2, - "home": 2, - "file": 2, - "time": 2, - "road": 2, - "download": 4, - "alt": 6, - "upload": 2, - "inbox": 2, - "play": 4, - "refresh": 2, - "lock": 2, - "flag": 2, - "headphones": 2, - "volume": 6, - "down": 12, - "up": 12, - "qrcode": 2, - "barcode": 2, - "tag": 2, - "tags": 2, - "book": 2, - "bookmark": 2, - "camera": 2, - "justify": 2, - "indent": 4, - "facetime": 2, - "picture": 2, - "pencil": 2, - "map": 2, - "marker": 2, - "tint": 2, - "edit": 2, - "share": 4, - "check": 2, - "move": 2, - "step": 4, - "backward": 6, - "fast": 4, - "pause": 2, - "stop": 32, - "forward": 6, - "eject": 2, - "chevron": 8, - "plus": 4, - "sign": 16, - "minus": 4, - "question": 2, - "screenshot": 2, - "ban": 2, - "arrow": 21, - "resize": 8, - "full": 2, - "asterisk": 2, - "exclamation": 2, - "gift": 2, - "leaf": 2, - "fire": 2, - "eye": 4, - "open": 4, - "close": 4, - "plane": 2, - "calendar": 2, - "random": 2, - "comment": 2, - "magnet": 2, - "retweet": 2, - "shopping": 2, - "cart": 2, - "folder": 4, - "hdd": 2, - "bullhorn": 2, - "bell": 2, - "certificate": 2, - "thumbs": 4, - "hand": 8, - "globe": 2, - "wrench": 2, - "tasks": 2, - "briefcase": 2, - "fullscreen": 2, - "toolbar": 8, - ".btn.large": 4, - ".large.dropdown": 2, - "group.open": 18, - ".125": 6, - ".btn.dropdown": 2, - "primary.dropdown": 2, - "warning.dropdown": 2, - "danger.dropdown": 2, - "success.dropdown": 2, - "info.dropdown": 2, - "inverse.dropdown": 2, - ".caret": 70, - ".dropup": 2, - ".divider": 8, - "tabs": 94, - "#ddd": 38, - "stacked": 24, - "tabs.nav": 12, - "pills.nav": 4, - ".dropdown.active": 4, - ".open": 8, - "li.dropdown.open.active": 14, - "li.dropdown.open": 14, - ".tabs": 62, - ".tabbable": 8, - ".tab": 8, - "below": 18, - "pane": 4, - ".pill": 6, - ".disabled": 22, - "*position": 2, - "*z": 2, - "#fafafa": 2, - "#f2f2f2": 22, - "#d4d4d4": 2, - "collapse.collapse": 2, - ".brand": 14, - "#777777": 12, - ".1": 24, - ".nav.pull": 2, - "navbar": 28, - "#ededed": 2, - "navbar.active": 8, - "navbar.disabled": 4, - "bar": 21, - "absolute": 8, - "li.dropdown": 12, - "li.dropdown.active": 8, - "menu.pull": 8, - "#1b1b1b": 2, - "#111111": 18, - "#252525": 2, - "#515151": 2, - "query.focused": 2, - "#0e0e0e": 2, - "#040404": 18, - ".breadcrumb": 8, - ".pagination": 78, - "span": 38, - "centered": 2, - ".pager": 34, - ".next": 4, - ".previous": 4, - ".thumbnails": 12, - ".thumbnail": 6, - "ease": 12, - "a.thumbnail": 4, - ".caption": 2, - ".alert": 34, - "#fbeed5": 2, - ".close": 2, - "#d6e9c6": 2, - "#eed3d7": 2, - "#bce8f1": 2, - "@": 8, - "keyframes": 8, - "progress": 15, - "stripes": 15, - "@keyframes": 2, - ".progress": 22, - "#f7f7f7": 3, - ".bar": 22, - "#0e90d2": 2, - "#149bdf": 11, - "#0480be": 10, - "deg": 20, - ".progress.active": 1, - "animation": 5, - "infinite": 5, - "#dd514c": 1, - "#c43c35": 5, - "danger.progress": 1, - "#5eb95e": 1, - "#57a957": 5, - "success.progress": 1, - "#4bb1cf": 1, - "#339bb9": 5, - "info.progress": 1, - "warning.progress": 1, - ".hero": 3, - "unit": 3, - "letter": 1, - ".media": 11, - "object": 1, - "heading": 1, - ".tooltip": 7, - "visibility": 1, - ".tooltip.in": 1, - ".tooltip.top": 2, - ".tooltip.right": 2, - ".tooltip.bottom": 2, - ".tooltip.left": 2, - "clip": 3, - ".popover.top": 3, - ".popover.right": 3, - ".popover.bottom": 3, - ".popover.left": 3, - "#ebebeb": 1, - ".arrow": 12, - ".modal": 5, - "backdrop": 2, - "backdrop.fade": 1, - "backdrop.fade.in": 1 - }, - "Cuda": { - "__global__": 2, - "void": 3, - "scalarProdGPU": 1, - "(": 20, - "float": 8, - "*d_C": 1, - "*d_A": 1, - "*d_B": 1, - "int": 14, - "vectorN": 2, - "elementN": 3, - ")": 20, - "{": 8, - "//Accumulators": 1, - "cache": 1, - "__shared__": 1, - "accumResult": 5, - "[": 11, - "ACCUM_N": 4, - "]": 11, - ";": 30, - "////////////////////////////////////////////////////////////////////////////": 2, - "for": 5, - "vec": 5, - "blockIdx.x": 2, - "<": 5, - "+": 12, - "gridDim.x": 1, - "vectorBase": 3, - "IMUL": 1, - "vectorEnd": 2, - "////////////////////////////////////////////////////////////////////////": 4, - "iAccum": 10, - "threadIdx.x": 4, - "blockDim.x": 3, - "sum": 3, - "pos": 5, - "d_A": 2, - "*": 2, - "d_B": 2, - "}": 8, - "stride": 5, - "/": 2, - "__syncthreads": 1, - "if": 3, - "d_C": 2, - "#include": 2, - "": 1, - "": 1, - "vectorAdd": 2, - "const": 2, - "*A": 1, - "*B": 1, - "*C": 1, - "numElements": 4, - "i": 5, - "C": 1, - "A": 1, - "B": 1, - "main": 1, - "cudaError_t": 1, - "err": 5, - "cudaSuccess": 2, - "threadsPerBlock": 4, - "blocksPerGrid": 1, - "-": 1, - "<<": 1, - "": 1, - "cudaGetLastError": 1, - "fprintf": 1, - "stderr": 1, - "cudaGetErrorString": 1, - "exit": 1, - "EXIT_FAILURE": 1, - "cudaDeviceReset": 1, - "return": 1 - }, - "Dart": { - "import": 1, - "as": 1, - "math": 1, - ";": 9, - "class": 1, - "Point": 5, - "{": 3, - "num": 2, - "x": 2, - "y": 2, - "(": 7, - "this.x": 1, - "this.y": 1, - ")": 7, - "distanceTo": 1, - "other": 1, - "var": 4, - "dx": 3, - "-": 2, - "other.x": 1, - "dy": 3, - "other.y": 1, - "return": 1, - "math.sqrt": 1, - "*": 2, - "+": 1, - "}": 3, - "void": 1, - "main": 1, - "p": 1, - "new": 2, - "q": 1, - "print": 1 - }, - "Diff": { - "diff": 1, - "-": 5, - "git": 1, - "a/lib/linguist.rb": 2, - "b/lib/linguist.rb": 2, - "index": 1, - "d472341..8ad9ffb": 1, - "+": 3 - }, - "DM": { - "#define": 4, - "PI": 6, - "#if": 1, - "G": 1, - "#elif": 1, - "I": 1, - "#else": 1, - "K": 1, - "#endif": 1, - "var/GlobalCounter": 1, - "var/const/CONST_VARIABLE": 1, - "var/list/MyList": 1, - "list": 3, - "(": 17, - "new": 1, - "/datum/entity": 2, - ")": 17, - "var/list/EmptyList": 1, - "[": 2, - "]": 2, - "//": 6, - "creates": 1, - "a": 1, - "of": 1, - "null": 2, - "entries": 1, - "var/list/NullList": 1, - "var/name": 1, - "var/number": 1, - "/datum/entity/proc/myFunction": 1, - "world.log": 5, - "<<": 5, - "/datum/entity/New": 1, - "number": 2, - "GlobalCounter": 1, - "+": 3, - "/datum/entity/unit": 1, - "name": 1, - "/datum/entity/unit/New": 1, - "..": 1, - "calls": 1, - "the": 2, - "parent": 1, - "s": 1, - "proc": 1, - ";": 3, - "equal": 1, - "to": 1, - "super": 1, - "and": 1, - "base": 1, - "in": 1, - "other": 1, - "languages": 1, - "rand": 1, - "/datum/entity/unit/myFunction": 1, - "/proc/ReverseList": 1, - "var/list/input": 1, - "var/list/output": 1, - "for": 1, - "var/i": 1, - "input.len": 1, - "i": 3, - "-": 2, - "IMPORTANT": 1, - "List": 1, - "Arrays": 1, - "count": 1, - "from": 1, - "output": 2, - "input": 1, - "is": 2, - "return": 3, - "/proc/DoStuff": 1, - "var/bitflag": 2, - "bitflag": 4, - "|": 1, - "/proc/DoOtherStuff": 1, - "bits": 1, - "maximum": 1, - "amount": 1, - "&": 1, - "/proc/DoNothing": 1, - "var/pi": 1, - "if": 2, - "pi": 2, - "else": 2, - "CONST_VARIABLE": 1, - "#undef": 1, - "Undefine": 1 - }, - "ECL": { - "#option": 1, - "(": 32, - "true": 1, - ")": 32, - ";": 23, - "namesRecord": 4, - "RECORD": 1, - "string20": 1, - "surname": 1, - "string10": 2, - "forename": 1, - "integer2": 5, - "age": 2, - "dadAge": 1, - "mumAge": 1, - "END": 1, - "namesRecord2": 3, - "record": 1, - "extra": 1, - "end": 1, - "namesTable": 11, - "dataset": 2, - "FLAT": 2, - "namesTable2": 9, - "aveAgeL": 3, - "l": 1, - "l.dadAge": 1, - "+": 16, - "l.mumAge": 1, - "/2": 2, - "aveAgeR": 4, - "r": 1, - "r.dadAge": 1, - "r.mumAge": 1, - "output": 9, - "join": 11, - "left": 2, - "right": 3, - "//Several": 1, - "simple": 1, - "examples": 1, - "of": 1, - "sliding": 2, - "syntax": 1, - "left.age": 8, - "right.age": 12, - "-": 5, - "and": 10, - "<": 1, - "between": 7, - "//Same": 1, - "but": 1, - "on": 1, - "strings.": 1, - "Also": 1, - "includes": 1, - "to": 1, - "ensure": 1, - "sort": 1, - "is": 1, - "done": 1, - "by": 1, - "non": 1, - "before": 1, - "sliding.": 1, - "left.surname": 2, - "right.surname": 4, - "[": 4, - "]": 4, - "all": 1, - "//This": 1, - "should": 1, - "not": 1, - "generate": 1, - "a": 1, - "self": 1 - }, - "edn": { - "[": 24, - "{": 22, - "db/id": 22, - "#db/id": 22, - "db.part/db": 6, - "]": 24, - "db/ident": 3, - "object/name": 18, - "db/doc": 4, - "db/valueType": 3, - "db.type/string": 2, - "db/index": 3, - "true": 3, - "db/cardinality": 3, - "db.cardinality/one": 3, - "db.install/_attribute": 3, - "}": 22, - "object/meanRadius": 18, - "db.type/double": 1, - "data/source": 2, - "db.part/tx": 2, - "db.part/user": 17 - }, - "Elm": { - "import": 3, - "List": 1, - "(": 119, - "intercalate": 2, - "intersperse": 3, - ")": 116, - "Website.Skeleton": 1, - "Website.ColorScheme": 1, - "addFolder": 4, - "folder": 2, - "lst": 6, - "let": 2, - "add": 2, - "x": 13, - "y": 7, - "+": 14, - "in": 2, - "f": 8, - "n": 2, - "xs": 9, - "map": 11, - "elements": 2, - "[": 31, - "]": 31, - "functional": 2, - "reactive": 2, - "-": 11, - "example": 3, - "name": 6, - "loc": 2, - "Text.link": 1, - "toText": 6, - "toLinks": 2, - "title": 2, - "links": 2, - "flow": 4, - "right": 8, - "width": 3, - "text": 4, - "italic": 1, - "bold": 2, - ".": 9, - "Text.color": 1, - "accent4": 1, - "insertSpace": 2, - "case": 5, - "of": 7, - "{": 1, - "spacer": 2, - ";": 1, - "}": 1, - "subsection": 2, - "w": 7, - "info": 2, - "down": 3, - "words": 2, - "markdown": 1, - "|": 3, - "###": 1, - "Basic": 1, - "Examples": 1, - "Each": 1, - "listed": 1, - "below": 1, - "focuses": 1, - "on": 1, - "a": 5, - "single": 1, - "function": 1, - "or": 1, - "concept.": 1, - "These": 1, - "examples": 1, - "demonstrate": 1, - "all": 1, - "the": 1, - "basic": 1, - "building": 1, - "blocks": 1, - "Elm.": 1, - "content": 2, - "exampleSets": 2, - "plainText": 1, - "main": 3, - "lift": 1, - "skeleton": 1, - "Window.width": 1, - "asText": 1, - "qsort": 4, - "filter": 2, - "<)x)>": 1, - "data": 1, - "Tree": 3, - "Node": 8, - "Empty": 8, - "empty": 2, - "singleton": 2, - "v": 8, - "insert": 4, - "tree": 7, - "left": 7, - "if": 2, - "then": 2, - "else": 2, - "<": 1, - "fromList": 3, - "foldl": 1, - "depth": 5, - "max": 1, - "t1": 2, - "t2": 3, - "display": 4, - "monospace": 1, - "concat": 1, - "show": 2 - }, - "Emacs Lisp": { - "(": 156, - "print": 1, - ")": 144, - ";": 333, - "ess": 48, - "-": 294, - "julia.el": 2, - "ESS": 5, - "julia": 39, - "mode": 12, - "and": 3, - "inferior": 13, - "interaction": 1, - "Copyright": 1, - "C": 2, - "Vitalie": 3, - "Spinu.": 1, - "Filename": 1, - "Author": 1, - "Spinu": 2, - "based": 1, - "on": 2, - "mode.el": 1, - "from": 3, - "lang": 1, - "project": 1, - "Maintainer": 1, - "Created": 1, - "Keywords": 1, - "This": 4, - "file": 10, - "is": 5, - "*NOT*": 1, - "part": 2, - "of": 8, - "GNU": 4, - "Emacs.": 1, - "program": 6, - "free": 1, - "software": 1, - "you": 1, - "can": 1, - "redistribute": 1, - "it": 3, - "and/or": 1, - "modify": 5, - "under": 1, - "the": 10, - "terms": 1, - "General": 3, - "Public": 3, - "License": 3, - "as": 1, - "published": 1, - "by": 1, - "Free": 2, - "Software": 2, - "Foundation": 2, - "either": 1, - "version": 2, - "any": 1, - "later": 1, - "version.": 1, - "distributed": 1, - "in": 3, - "hope": 1, - "that": 2, - "will": 1, - "be": 2, - "useful": 1, - "but": 2, - "WITHOUT": 1, - "ANY": 1, - "WARRANTY": 1, - "without": 1, - "even": 1, - "implied": 1, - "warranty": 1, - "MERCHANTABILITY": 1, - "or": 3, - "FITNESS": 1, - "FOR": 1, - "A": 1, - "PARTICULAR": 1, - "PURPOSE.": 1, - "See": 1, - "for": 8, - "more": 1, - "details.": 1, - "You": 1, - "should": 2, - "have": 1, - "received": 1, - "a": 4, - "copy": 2, - "along": 1, - "with": 4, - "this": 1, - "see": 2, - "COPYING.": 1, - "If": 1, - "not": 1, - "write": 2, - "to": 4, - "Inc.": 1, - "Franklin": 1, - "Street": 1, - "Fifth": 1, - "Floor": 1, - "Boston": 1, - "MA": 1, - "USA.": 1, - "Commentary": 1, - "customise": 1, - "name": 8, - "point": 6, - "your": 1, - "release": 1, - "basic": 1, - "start": 13, - "M": 2, - "x": 2, - "julia.": 2, - "require": 2, - "auto": 1, - "alist": 9, - "table": 9, - "character": 1, - "quote": 2, - "transpose": 1, - "syntax": 7, - "entry": 4, - ".": 40, - "Syntax": 3, - "inside": 1, - "char": 6, - "defvar": 5, - "let": 3, - "make": 4, - "defconst": 5, - "regex": 5, - "unquote": 1, - "forloop": 1, - "subset": 2, - "regexp": 6, - "font": 6, - "lock": 6, - "defaults": 2, - "list": 3, - "identity": 1, - "keyword": 2, - "face": 4, - "constant": 1, - "cons": 1, - "function": 7, - "keep": 2, - "string": 8, - "paragraph": 3, - "concat": 7, - "page": 2, - "delimiter": 2, - "separate": 1, - "ignore": 2, - "fill": 1, - "prefix": 2, - "t": 6, - "final": 1, - "newline": 1, - "comment": 6, - "add": 4, - "skip": 1, - "column": 1, - "indent": 8, - "S": 2, - "line": 5, - "calculate": 1, - "parse": 1, - "sexp": 1, - "comments": 1, - "style": 2, - "default": 1, - "ignored": 1, - "local": 6, - "process": 5, - "nil": 12, - "dump": 2, - "files": 1, - "_": 1, - "autoload": 1, - "defun": 5, - "send": 3, - "visibly": 1, - "temporary": 1, - "directory": 2, - "temp": 2, - "insert": 1, - "format": 3, - "load": 1, - "command": 5, - "get": 3, - "help": 3, - "topics": 1, - "&": 3, - "optional": 3, - "proc": 3, - "words": 1, - "vector": 1, - "com": 1, - "error": 6, - "s": 5, - "*in": 1, - "[": 3, - "n": 1, - "]": 3, - "*": 1, - "at": 5, - ".*": 2, - "+": 5, - "w*": 1, - "http": 1, - "//docs.julialang.org/en/latest/search/": 1, - "q": 1, - "%": 1, - "include": 1, - "funargs": 1, - "re": 2, - "args": 10, - "language": 1, - "STERM": 1, - "editor": 2, - "R": 2, - "pager": 2, - "versions": 1, - "Julia": 1, - "made": 1, - "available.": 1, - "String": 1, - "arguments": 2, - "used": 1, - "when": 2, - "starting": 1, - "group": 1, - "###autoload": 2, - "interactive": 2, - "setq": 2, - "customize": 5, - "emacs": 1, - "<": 1, - "hook": 4, - "complete": 1, - "object": 2, - "completion": 4, - "functions": 2, - "first": 1, - "if": 4, - "fboundp": 1, - "end": 1, - "workaround": 1, - "set": 3, - "variable": 3, - "post": 1, - "run": 2, - "settings": 1, - "notably": 1, - "null": 1, - "dribble": 1, - "buffer": 3, - "debugging": 1, - "only": 1, - "dialect": 1, - "current": 2, - "arg": 1, - "let*": 2, - "jl": 2, - "space": 1, - "just": 1, - "case": 1, - "read": 1, - "..": 3, - "multi": 1, - "...": 1, - "tb": 1, - "logo": 1, - "goto": 2, - "min": 1, - "while": 1, - "search": 1, - "forward": 1, - "replace": 1, - "match": 1, - "max": 1, - "inject": 1, - "code": 1, - "etc": 1, - "hooks": 1, - "busy": 1, - "funname": 5, - "eldoc": 1, - "show": 1, - "symbol": 2, - "aggressive": 1, - "car": 1, - "funname.start": 1, - "sequence": 1, - "nth": 1, - "W": 1, - "window": 2, - "width": 1, - "minibuffer": 1, - "length": 1, - "doc": 1, - "propertize": 1, - "use": 1, - "classes": 1, - "screws": 1, - "egrep": 1 - }, - "Erlang": { - "SHEBANG#!escript": 3, - "%": 134, - "-": 262, - "*": 9, - "erlang": 5, - "smp": 1, - "enable": 1, - "sname": 1, - "factorial": 1, - "mnesia": 1, - "debug": 1, - "verbose": 1, - "main": 4, - "(": 236, - "[": 66, - "String": 2, - "]": 61, - ")": 230, - "try": 2, - "N": 6, - "list_to_integer": 1, - "F": 16, - "fac": 4, - "io": 5, - "format": 7, - "catch": 2, - "_": 52, - "usage": 3, - "end": 3, - ";": 56, - ".": 37, - "halt": 2, - "export": 2, - "main/1": 1, - "For": 1, - "each": 1, - "header": 1, - "file": 6, - "it": 2, - "scans": 1, - "thru": 1, - "all": 1, - "records": 1, - "and": 8, - "create": 1, - "helper": 1, - "functions": 2, - "Helper": 1, - "are": 3, - "setters": 1, - "getters": 1, - "fields": 4, - "fields_atom": 4, - "type": 6, - "module": 2, - "record_helper": 1, - "make/1": 1, - "make/2": 1, - "make": 3, - "HeaderFiles": 5, - "atom_to_list": 18, - "X": 12, - "||": 6, - "<->": 5, - "hrl": 1, - "relative": 1, - "to": 2, - "current": 1, - "dir": 1, - "OutDir": 4, - "ModuleName": 3, - "HeaderComment": 2, - "ModuleDeclaration": 2, - "+": 214, - "<": 1, - "Src": 10, - "format_src": 8, - "lists": 11, - "sort": 1, - "flatten": 6, - "read": 2, - "generate_type_default_function": 2, - "write_file": 1, - "erl": 1, - "list_to_binary": 1, - "HeaderFile": 4, - "epp": 1, - "parse_file": 1, - "of": 9, - "{": 109, - "ok": 34, - "Tree": 4, - "}": 109, - "parse": 2, - "error": 4, - "Error": 4, - "catched_error": 1, - "end.": 3, - "|": 25, - "T": 24, - "when": 29, - "length": 6, - "Type": 3, - "A": 5, - "B": 4, - "NSrc": 4, - "_Type": 1, - "Type1": 2, - "parse_record": 3, - "attribute": 1, - "record": 4, - "RecordInfo": 2, - "RecordName": 41, - "RecordFields": 10, - "if": 1, - "generate_setter_getter_function": 5, - "generate_type_function": 3, - "true": 3, - "generate_fields_function": 2, - "generate_fields_atom_function": 2, - "parse_field_name": 5, - "record_field": 9, - "atom": 9, - "FieldName": 26, - "field": 4, - "_FieldName": 2, - "ParentRecordName": 8, - "parent_field": 2, - "parse_field_name_atom": 5, - "concat": 5, - "_S": 3, - "S": 6, - "concat_ext": 4, - "parse_field": 6, - "AccFields": 6, - "AccParentFields": 6, - "case": 3, - "Field": 2, - "PField": 2, - "parse_field_atom": 4, - "zzz": 1, - "Fields": 4, - "field_atom": 1, - "to_setter_getter_function": 5, - "setter": 2, - "getter": 2, - "This": 2, - "is": 1, - "auto": 1, - "generated": 1, - "file.": 1, - "Please": 1, - "don": 1, - "t": 1, - "edit": 1, - "record_utils": 1, - "compile": 2, - "export_all": 1, - "include": 1, - "abstract_message": 21, - "async_message": 12, - "clientId": 5, - "destination": 5, - "messageId": 5, - "timestamp": 5, - "timeToLive": 5, - "headers": 5, - "body": 5, - "correlationId": 5, - "correlationIdBytes": 5, - "get": 12, - "Obj": 49, - "is_record": 25, - "Obj#abstract_message.body": 1, - "Obj#abstract_message.clientId": 1, - "Obj#abstract_message.destination": 1, - "Obj#abstract_message.headers": 1, - "Obj#abstract_message.messageId": 1, - "Obj#abstract_message.timeToLive": 1, - "Obj#abstract_message.timestamp": 1, - "Obj#async_message.correlationId": 1, - "Obj#async_message.correlationIdBytes": 1, - "parent": 5, - "Obj#async_message.parent": 3, - "ParentProperty": 6, - "is_atom": 2, - "set": 13, - "Value": 35, - "NewObj": 20, - "Obj#abstract_message": 7, - "Obj#async_message": 3, - "NewParentObject": 2, - "undefined.": 1, - "Mode": 1, - "coding": 1, - "utf": 1, - "tab": 1, - "width": 1, - "c": 2, - "basic": 1, - "offset": 1, - "indent": 1, - "tabs": 1, - "mode": 2, - "BSD": 1, - "LICENSE": 1, - "Copyright": 1, - "Michael": 2, - "Truog": 2, - "": 1, - "at": 1, - "gmail": 1, - "dot": 1, - "com": 1, - "All": 2, - "rights": 1, - "reserved.": 1, - "Redistribution": 1, - "use": 2, - "in": 3, - "source": 2, - "binary": 2, - "forms": 1, - "with": 2, - "or": 3, - "without": 2, - "modification": 1, - "permitted": 1, - "provided": 2, - "that": 1, - "the": 9, - "following": 4, - "conditions": 3, - "met": 1, - "Redistributions": 2, - "code": 2, - "must": 3, - "retain": 1, - "above": 2, - "copyright": 2, - "notice": 2, - "this": 4, - "list": 2, - "disclaimer.": 1, - "form": 1, - "reproduce": 1, - "disclaimer": 1, - "documentation": 1, - "and/or": 1, - "other": 1, - "materials": 2, - "distribution.": 1, - "advertising": 1, - "mentioning": 1, - "features": 1, - "software": 3, - "display": 1, - "acknowledgment": 1, - "product": 1, - "includes": 1, - "developed": 1, - "by": 1, - "The": 1, - "name": 1, - "author": 2, - "may": 1, - "not": 1, - "be": 1, - "used": 1, - "endorse": 1, - "promote": 1, - "products": 1, - "derived": 1, - "from": 1, - "specific": 1, - "prior": 1, - "written": 1, - "permission": 1, - "THIS": 2, - "SOFTWARE": 2, - "IS": 1, - "PROVIDED": 1, - "BY": 1, - "THE": 5, - "COPYRIGHT": 2, - "HOLDERS": 1, - "AND": 4, - "CONTRIBUTORS": 2, - "ANY": 4, - "EXPRESS": 1, - "OR": 8, - "IMPLIED": 2, - "WARRANTIES": 2, - "INCLUDING": 3, - "BUT": 2, - "NOT": 2, - "LIMITED": 2, - "TO": 2, - "OF": 8, - "MERCHANTABILITY": 1, - "FITNESS": 1, - "FOR": 2, - "PARTICULAR": 1, - "PURPOSE": 1, - "ARE": 1, - "DISCLAIMED.": 1, - "IN": 3, - "NO": 1, - "EVENT": 1, - "SHALL": 1, - "OWNER": 1, - "BE": 1, - "LIABLE": 1, - "DIRECT": 1, - "INDIRECT": 1, - "INCIDENTAL": 1, - "SPECIAL": 1, - "EXEMPLARY": 1, - "CONSEQUENTIAL": 1, - "DAMAGES": 1, - "PROCUREMENT": 1, - "SUBSTITUTE": 1, - "GOODS": 1, - "SERVICES": 1, - "LOSS": 1, - "USE": 2, - "DATA": 1, - "PROFITS": 1, - "BUSINESS": 1, - "INTERRUPTION": 1, - "HOWEVER": 1, - "CAUSED": 1, - "ON": 1, - "THEORY": 1, - "LIABILITY": 2, - "WHETHER": 1, - "CONTRACT": 1, - "STRICT": 1, - "TORT": 1, - "NEGLIGENCE": 1, - "OTHERWISE": 1, - "ARISING": 1, - "WAY": 1, - "OUT": 1, - "EVEN": 1, - "IF": 1, - "ADVISED": 1, - "POSSIBILITY": 1, - "SUCH": 1, - "DAMAGE.": 1, - "sys": 2, - "RelToolConfig": 5, - "target_dir": 2, - "TargetDir": 14, - "overlay": 2, - "OverlayConfig": 4, - "consult": 1, - "Spec": 2, - "reltool": 2, - "get_target_spec": 1, - "make_dir": 1, - "eexist": 1, - "exit_code": 3, - "eval_target_spec": 1, - "root_dir": 1, - "process_overlay": 2, - "shell": 3, - "Command": 3, - "Arguments": 3, - "CommandSuffix": 2, - "reverse": 4, - "os": 1, - "cmd": 1, - "io_lib": 2, - "boot_rel_vsn": 2, - "Config": 2, - "_RelToolConfig": 1, - "rel": 2, - "_Name": 1, - "Ver": 1, - "proplists": 1, - "lookup": 1, - "Ver.": 1, - "minimal": 2, - "parsing": 1, - "for": 1, - "handling": 1, - "mustache": 11, - "syntax": 1, - "Body": 2, - "Context": 11, - "Result": 10, - "_Context": 1, - "KeyStr": 6, - "mustache_key": 4, - "C": 4, - "Rest": 10, - "Key": 2, - "list_to_existing_atom": 1, - "dict": 2, - "find": 1, - "support": 1, - "based": 1, - "on": 1, - "rebar": 1, - "overlays": 1, - "BootRelVsn": 2, - "OverlayVars": 2, - "from_list": 1, - "erts_vsn": 1, - "system_info": 1, - "version": 1, - "rel_vsn": 1, - "hostname": 1, - "net_adm": 1, - "localhost": 1, - "BaseDir": 7, - "get_cwd": 1, - "execute_overlay": 6, - "_Vars": 1, - "_BaseDir": 1, - "_TargetDir": 1, - "mkdir": 1, - "Out": 4, - "Vars": 7, - "filename": 3, - "join": 3, - "copy": 1, - "In": 2, - "InFile": 3, - "OutFile": 2, - "filelib": 1, - "is_file": 1, - "ExitCode": 2, - "flush": 1 - }, - "fish": { - "#": 18, - "set": 49, - "-": 102, - "g": 1, - "IFS": 4, - "n": 5, - "t": 2, - "l": 15, - "configdir": 2, - "/.config": 1, - "if": 21, - "q": 9, - "XDG_CONFIG_HOME": 2, - "end": 33, - "not": 8, - "fish_function_path": 4, - "configdir/fish/functions": 1, - "__fish_sysconfdir/functions": 1, - "__fish_datadir/functions": 3, - "contains": 4, - "[": 13, - "]": 13, - "fish_complete_path": 4, - "configdir/fish/completions": 1, - "__fish_sysconfdir/completions": 1, - "__fish_datadir/completions": 3, - "test": 7, - "d": 3, - "/usr/xpg4/bin": 3, - "PATH": 6, - "path_list": 4, - "/bin": 1, - "/usr/bin": 1, - "/usr/X11R6/bin": 1, - "/usr/local/bin": 1, - "__fish_bin_dir": 1, - "switch": 3, - "USER": 1, - "case": 9, - "root": 1, - "/sbin": 1, - "/usr/sbin": 1, - "/usr/local/sbin": 1, - "for": 1, - "i": 5, - "in": 2, - "function": 6, - "fish_sigtrap_handler": 1, - "on": 2, - "signal": 1, - "TRAP": 1, - "no": 2, - "scope": 1, - "shadowing": 1, - "description": 2, - "breakpoint": 1, - "__fish_on_interactive": 2, - "event": 1, - "fish_prompt": 1, - "__fish_config_interactive": 1, - "functions": 5, - "e": 6, - "eval": 5, - "S": 1, - "If": 2, - "we": 2, - "are": 1, - "an": 1, - "interactive": 8, - "shell": 1, - "should": 2, - "enable": 1, - "full": 4, - "job": 5, - "control": 5, - "since": 1, - "it": 1, - "behave": 1, - "like": 2, - "the": 1, - "real": 1, - "code": 1, - "was": 1, - "executed.": 1, - "don": 1, - "do": 1, - "this": 1, - "commands": 1, - "that": 1, - "expect": 1, - "to": 1, - "be": 1, - "used": 1, - "interactively": 1, - "less": 1, - "wont": 1, - "work": 1, - "using": 1, - "eval.": 1, - "mode": 5, - "status": 7, - "is": 3, - "else": 3, - "none": 1, - "echo": 3, - "|": 3, - ".": 2, - "<": 1, - "&": 1, - "res": 2, - "return": 6, - "funced": 3, - "editor": 7, - "EDITOR": 1, - "funcname": 14, - "while": 2, - "argv": 9, - "h": 1, - "help": 1, - "__fish_print_help": 1, - "set_color": 4, - "red": 2, - "printf": 3, - "(": 7, - "_": 3, - ")": 7, - "normal": 2, - "begin": 2, - ";": 7, - "or": 3, - "init": 5, - "nend": 2, - "editor_cmd": 2, - "type": 1, - "f": 3, - "/dev/null": 2, - "fish": 3, - "z": 1, - "fish_indent": 2, - "indent": 1, - "prompt": 2, - "read": 1, - "p": 1, - "c": 1, - "s": 1, - "cmd": 2, - "TMPDIR": 2, - "/tmp": 1, - "tmpname": 8, - "%": 2, - "self": 2, - "random": 2, - "stat": 2, - "rm": 1 - }, - "Forth": { - "(": 88, - "Block": 2, - "words.": 6, - ")": 87, - "variable": 3, - "blk": 3, - "current": 5, - "-": 473, - "block": 8, - "n": 22, - "addr": 11, - ";": 61, - "buffer": 2, - "evaluate": 1, - "extended": 3, - "semantics": 3, - "flush": 1, - "load": 2, - "...": 4, - "dup": 10, - "save": 2, - "input": 2, - "in": 4, - "@": 13, - "source": 5, - "#source": 2, - "interpret": 1, - "restore": 1, - "buffers": 2, - "update": 1, - "extension": 4, - "empty": 2, - "scr": 2, - "list": 1, - "bounds": 1, - "do": 2, - "i": 5, - "emit": 2, - "loop": 4, - "refill": 2, - "thru": 1, - "x": 10, - "y": 5, - "+": 17, - "swap": 12, - "*": 9, - "forth": 2, - "Copyright": 3, - "Lars": 3, - "Brinkhoff": 3, - "Kernel": 4, - "#tib": 2, - "TODO": 12, - ".r": 1, - ".": 5, - "[": 16, - "char": 10, - "]": 15, - "parse": 5, - "type": 3, - "immediate": 19, - "<": 14, - "flag": 4, - "r": 18, - "x1": 5, - "x2": 5, - "R": 13, - "rot": 2, - "r@": 2, - "noname": 1, - "align": 2, - "here": 9, - "c": 3, - "allot": 2, - "lastxt": 4, - "SP": 1, - "query": 1, - "tib": 1, - "body": 1, - "true": 1, - "tuck": 2, - "over": 5, - "u.r": 1, - "u": 3, - "if": 9, - "drop": 4, - "false": 1, - "else": 6, - "then": 5, - "unused": 1, - "value": 1, - "create": 2, - "does": 5, - "within": 1, - "compile": 2, - "Forth2012": 2, - "core": 1, - "action": 1, - "of": 3, - "defer": 2, - "name": 1, - "s": 4, - "c@": 2, - "negate": 1, - "nip": 2, - "bl": 4, - "word": 9, - "ahead": 2, - "resolve": 4, - "literal": 4, - "postpone": 14, - "nonimmediate": 1, - "caddr": 1, - "C": 9, - "find": 2, - "cells": 1, - "postponers": 1, - "execute": 1, - "unresolved": 4, - "orig": 5, - "chars": 1, - "n1": 2, - "n2": 2, - "orig1": 1, - "orig2": 1, - "branch": 5, - "dodoes_code": 1, - "code": 3, - "begin": 2, - "dest": 5, - "while": 2, - "repeat": 2, - "until": 1, - "recurse": 1, - "pad": 3, - "If": 1, - "necessary": 1, - "and": 3, - "keep": 1, - "parsing.": 1, - "string": 3, - "cmove": 1, - "state": 2, - "cr": 3, - "abort": 3, - "": 1, - "Undefined": 1, - "ok": 1, - "HELLO": 4, - "KataDiversion": 1, - "Forth": 1, - "utils": 1, - "the": 7, - "stack": 3, - "EMPTY": 1, - "DEPTH": 2, - "IF": 10, - "BEGIN": 3, - "DROP": 5, - "UNTIL": 3, - "THEN": 10, - "power": 2, - "**": 2, - "n1_pow_n2": 1, - "SWAP": 8, - "DUP": 14, - "DO": 2, - "OVER": 2, - "LOOP": 2, - "NIP": 4, - "compute": 1, - "highest": 1, - "below": 1, - "N.": 1, - "e.g.": 2, - "MAXPOW2": 2, - "log2_n": 1, - "ABORT": 1, - "ELSE": 7, - "|": 4, - "I": 5, - "i*2": 1, - "/": 3, - "kata": 1, - "test": 1, - "given": 3, - "N": 6, - "has": 1, - "two": 2, - "adjacent": 2, - "bits": 3, - "NOT": 3, - "TWO": 3, - "ADJACENT": 3, - "BITS": 3, - "bool": 1, - "uses": 1, - "following": 1, - "algorithm": 1, - "return": 5, - "A": 5, - "X": 5, - "LOG2": 1, - "end": 1, - "OR": 1, - "INVERT": 1, - "maximum": 1, - "number": 4, - "which": 3, - "can": 2, - "be": 2, - "made": 2, - "with": 2, - "MAX": 2, - "NB": 3, - "m": 2, - "**n": 1, - "numbers": 1, - "or": 1, - "less": 1, - "have": 1, - "not": 1, - "bits.": 1, - "see": 1, - "http": 1, - "//www.codekata.com/2007/01/code_kata_fifte.html": 1, - "HOW": 1, - "MANY": 1, - "Tools": 2, - ".s": 1, - "depth": 1, - "traverse": 1, - "dictionary": 1, - "assembler": 1, - "kernel": 1, - "bye": 1, - "cs": 2, - "pick": 1, - "roll": 1, - "editor": 1, - "forget": 1, - "reveal": 1, - "tools": 1, - "nr": 1, - "synonym": 1, - "undefined": 2, - "defined": 1, - "invert": 1, - "/cell": 2, - "cell": 2 - }, - "GAS": { - ".cstring": 1, - "LC0": 2, - ".ascii": 2, - ".text": 1, - ".globl": 2, - "_main": 2, - "LFB3": 4, - "pushq": 1, - "%": 6, - "rbp": 2, - "LCFI0": 3, - "movq": 1, - "rsp": 1, - "LCFI1": 2, - "leaq": 1, - "(": 1, - "rip": 1, - ")": 1, - "rdi": 1, - "call": 1, - "_puts": 1, - "movl": 1, - "eax": 1, - "leave": 1, - "ret": 1, - "LFE3": 2, - ".section": 1, - "__TEXT": 1, - "__eh_frame": 1, - "coalesced": 1, - "no_toc": 1, - "+": 2, - "strip_static_syms": 1, - "live_support": 1, - "EH_frame1": 2, - ".set": 5, - "L": 10, - "set": 10, - "LECIE1": 2, - "-": 7, - "LSCIE1": 2, - ".long": 6, - ".byte": 20, - "xc": 1, - ".align": 2, - "_main.eh": 2, - "LSFDE1": 1, - "LEFDE1": 2, - "LASFDE1": 3, - ".quad": 2, - ".": 1, - "xe": 1, - "xd": 1, - ".subsections_via_symbols": 1 - }, - "GLSL": { - "////": 4, - "High": 1, - "quality": 2, - "(": 386, - "Some": 1, - "browsers": 1, - "may": 1, - "freeze": 1, - "or": 1, - "crash": 1, - ")": 386, - "//#define": 10, - "HIGHQUALITY": 2, - "Medium": 1, - "Should": 1, - "be": 1, - "fine": 1, - "on": 3, - "all": 1, - "systems": 1, - "works": 1, - "Intel": 1, - "HD2000": 1, - "Win7": 1, - "but": 1, - "quite": 1, - "slow": 1, - "MEDIUMQUALITY": 2, - "Defaults": 1, - "REFLECTIONS": 3, - "#define": 13, - "SHADOWS": 5, - "GRASS": 3, - "SMALL_WAVES": 4, - "RAGGED_LEAVES": 5, - "DETAILED_NOISE": 3, - "LIGHT_AA": 3, - "//": 36, - "sample": 2, - "SSAA": 2, - "HEAVY_AA": 2, - "x2": 5, - "RG": 1, - "TONEMAP": 5, - "Configurations": 1, - "#ifdef": 14, - "#endif": 14, - "const": 18, - "float": 103, - "eps": 5, - "e": 4, - "-": 108, - ";": 353, - "PI": 3, - "vec3": 165, - "sunDir": 5, - "skyCol": 4, - "sandCol": 2, - "treeCol": 2, - "grassCol": 2, - "leavesCol": 4, - "leavesPos": 4, - "sunCol": 5, - "#else": 5, - "exposure": 1, - "Only": 1, - "used": 1, - "when": 1, - "tonemapping": 1, - "mod289": 4, - "x": 11, - "{": 61, - "return": 47, - "floor": 8, - "*": 115, - "/": 24, - "}": 61, - "vec4": 72, - "permute": 4, - "x*34.0": 1, - "+": 108, - "*x": 3, - "taylorInvSqrt": 2, - "r": 14, - "snoise": 7, - "v": 8, - "vec2": 26, - "C": 1, - "/6.0": 1, - "/3.0": 1, - "D": 1, - "i": 38, - "dot": 30, - "C.yyy": 2, - "x0": 7, - "C.xxx": 2, - "g": 2, - "step": 2, - "x0.yzx": 1, - "x0.xyz": 1, - "l": 1, - "i1": 2, - "min": 11, - "g.xyz": 2, - "l.zxy": 2, - "i2": 2, - "max": 9, - "x1": 4, - "*C.x": 2, - "/3": 1, - "C.y": 1, - "x3": 4, - "D.yyy": 1, - "D.y": 1, - "p": 26, - "i.z": 1, - "i1.z": 1, - "i2.z": 1, - "i.y": 1, - "i1.y": 1, - "i2.y": 1, - "i.x": 1, - "i1.x": 1, - "i2.x": 1, - "n_": 2, - "/7.0": 1, - "ns": 4, - "D.wyz": 1, - "D.xzx": 1, - "j": 4, - "ns.z": 3, - "mod": 2, - "*7": 1, - "x_": 3, - "y_": 2, - "N": 1, - "*ns.x": 2, - "ns.yyyy": 2, - "y": 2, - "h": 21, - "abs": 2, - "b0": 3, - "x.xy": 1, - "y.xy": 1, - "b1": 3, - "x.zw": 1, - "y.zw": 1, - "//vec4": 3, - "s0": 2, - "lessThan": 2, - "*2.0": 4, - "s1": 2, - "sh": 1, - "a0": 1, - "b0.xzyw": 1, - "s0.xzyw*sh.xxyy": 1, - "a1": 1, - "b1.xzyw": 1, - "s1.xzyw*sh.zzww": 1, - "p0": 5, - "a0.xy": 1, - "h.x": 1, - "p1": 5, - "a0.zw": 1, - "h.y": 1, - "p2": 5, - "a1.xy": 1, - "h.z": 1, - "p3": 5, - "a1.zw": 1, - "h.w": 1, - "//Normalise": 1, - "gradients": 1, - "norm": 1, - "norm.x": 1, - "norm.y": 1, - "norm.z": 1, - "norm.w": 1, - "m": 8, - "m*m": 1, - "fbm": 2, - "final": 5, - "waterHeight": 4, - "d": 10, - "length": 7, - "p.xz": 2, - "sin": 8, - "iGlobalTime": 7, - "Island": 1, - "waves": 3, - "p*0.5": 1, - "Other": 1, - "bump": 2, - "pos": 42, - "rayDir": 43, - "s": 23, - "Fade": 1, - "out": 1, - "to": 1, - "reduce": 1, - "aliasing": 1, - "dist": 7, - "<": 23, - "sqrt": 6, - "Calculate": 1, - "normal": 7, - "from": 2, - "heightmap": 1, - "pos.x": 1, - "iGlobalTime*0.5": 1, - "pos.z": 2, - "*0.7": 1, - "*s": 4, - "normalize": 14, - "e.xyy": 1, - "e.yxy": 1, - "intersectSphere": 2, - "rpos": 5, - "rdir": 3, - "rad": 2, - "op": 5, - "b": 5, - "det": 11, - "b*b": 2, - "rad*rad": 2, - "if": 29, - "t": 44, - "rdir*t": 1, - "intersectCylinder": 1, - "rdir2": 2, - "rdir.yz": 1, - "op.yz": 3, - "rpos.yz": 2, - "rdir2*t": 2, - "pos.yz": 2, - "intersectPlane": 3, - "rayPos": 38, - "n": 18, - "sign": 1, - "rotate": 5, - "theta": 6, - "c": 6, - "cos": 4, - "p.x": 2, - "p.z": 2, - "p.y": 1, - "impulse": 2, - "k": 8, - "by": 1, - "iq": 2, - "k*x": 1, - "exp": 2, - "grass": 2, - "Optimization": 1, - "Avoid": 1, - "noise": 1, - "too": 1, - "far": 1, - "away": 1, - "pos.y": 8, - "tree": 2, - "pos.y*0.03": 2, - "mat2": 2, - "m*pos.xy": 1, - "width": 2, - "clamp": 4, - "scene": 7, - "vtree": 4, - "vgrass": 2, - ".x": 4, - "eps.xyy": 1, - "eps.yxy": 1, - "eps.yyx": 1, - "plantsShadow": 2, - "Soft": 1, - "shadow": 4, - "taken": 1, - "for": 7, - "int": 7, - "rayDir*t": 2, - "res": 6, - "res.x": 3, - "k*res.x/t": 1, - "s*s*": 1, - "intersectWater": 2, - "rayPos.y": 1, - "rayDir.y": 1, - "intersectSand": 3, - "intersectTreasure": 2, - "intersectLeaf": 2, - "openAmount": 4, - "dir": 2, - "offset": 5, - "rayDir*res.w": 1, - "pos*0.8": 2, - "||": 3, - "res.w": 6, - "res2": 2, - "dir.xy": 1, - "dir.z": 1, - "rayDir*res2.w": 1, - "res2.w": 3, - "&&": 10, - "leaves": 7, - "e20": 3, - "sway": 5, - "fract": 1, - "upDownSway": 2, - "angleOffset": 3, - "Left": 1, - "right": 1, - "alpha": 3, - "Up": 1, - "down": 1, - "k*10.0": 1, - "p.xzy": 1, - ".xzy": 2, - "d.xzy": 1, - "Shift": 1, - "Intersect": 11, - "individual": 1, - "leaf": 1, - "res.xyz": 1, - "sand": 2, - "resSand": 2, - "//if": 1, - "resSand.w": 4, - "plants": 6, - "resLeaves": 3, - "resLeaves.w": 10, - "e7": 3, - "light": 5, - "sunDir*0.01": 2, - "col": 32, - "n.y": 3, - "lightLeaves": 3, - "ao": 5, - "sky": 5, - "res.y": 2, - "uvFact": 2, - "uv": 12, - "n.x": 1, - "tex": 6, - "texture2D": 6, - "iChannel0": 3, - ".rgb": 2, - "e8": 1, - "traceReflection": 2, - "resPlants": 2, - "resPlants.w": 6, - "resPlants.xyz": 2, - "pos.xz": 2, - "leavesPos.xz": 2, - ".r": 3, - "resLeaves.xyz": 2, - "trace": 2, - "resSand.xyz": 1, - "treasure": 1, - "chest": 1, - "resTreasure": 1, - "resTreasure.w": 4, - "resTreasure.xyz": 1, - "water": 1, - "resWater": 1, - "resWater.w": 4, - "ct": 2, - "fresnel": 2, - "pow": 3, - "trans": 2, - "reflDir": 3, - "reflect": 1, - "refl": 3, - "resWater.t": 1, - "mix": 2, - "camera": 8, - "px": 4, - "rd": 1, - "iResolution.yy": 1, - "iResolution.x/iResolution.y*0.5": 1, - "rd.x": 1, - "rd.y": 1, - "void": 5, - "main": 3, - "gl_FragCoord.xy": 7, - "*0.25": 4, - "*0.5": 1, - "Optimized": 1, - "Haarm": 1, - "Peter": 1, - "Duiker": 1, - "curve": 1, - "col*exposure": 1, - "x*": 2, - ".5": 1, - "gl_FragColor": 2, - "NUM_LIGHTS": 4, - "AMBIENT": 2, - "MAX_DIST": 3, - "MAX_DIST_SQUARED": 3, - "uniform": 7, - "lightColor": 3, - "[": 29, - "]": 29, - "varying": 3, - "fragmentNormal": 2, - "cameraVector": 2, - "lightVector": 4, - "initialize": 1, - "diffuse/specular": 1, - "lighting": 1, - "diffuse": 4, - "specular": 4, - "the": 1, - "fragment": 1, - "and": 2, - "direction": 1, - "cameraDir": 2, - "loop": 1, - "through": 1, - "each": 1, - "calculate": 1, - "distance": 1, - "between": 1, - "distFactor": 3, - "lightDir": 3, - "diffuseDot": 2, - "halfAngle": 2, - "specularColor": 2, - "specularDot": 2, - "sample.rgb": 1, - "sample.a": 1, - "#version": 1, - "kCoeff": 2, - "kCube": 2, - "uShift": 3, - "vShift": 3, - "chroma_red": 2, - "chroma_green": 2, - "chroma_blue": 2, - "bool": 1, - "apply_disto": 4, - "sampler2D": 1, - "input1": 4, - "adsk_input1_w": 4, - "adsk_input1_h": 3, - "adsk_input1_aspect": 1, - "adsk_input1_frameratio": 5, - "adsk_result_w": 3, - "adsk_result_h": 2, - "distortion_f": 3, - "f": 17, - "r*r": 1, - "inverse_f": 2, - "lut": 9, - "max_r": 2, - "incr": 2, - "lut_r": 5, - ".z": 5, - ".y": 2, - "aberrate": 4, - "chroma": 2, - "chromaticize_and_invert": 2, - "rgb_f": 5, - "px.x": 2, - "px.y": 2, - "uv.x": 11, - "uv.y": 7, - "*2": 2, - "uv.x*uv.x": 1, - "uv.y*uv.y": 1, - "else": 1, - "rgb_uvs": 12, - "rgb_f.rr": 1, - "rgb_f.gg": 1, - "rgb_f.bb": 1, - "sampled": 1, - "sampled.r": 1, - "sampled.g": 1, - ".g": 1, - "sampled.b": 1, - ".b": 1, - "gl_FragColor.rgba": 1, - "sampled.rgb": 1 - }, - "Gosu": { - "<%!-->": 1, - "defined": 1, - "in": 3, - "Hello": 2, - "gst": 1, - "<": 1, - "%": 2, - "@": 1, - "params": 1, - "(": 53, - "users": 2, - "Collection": 1, - "": 1, - ")": 54, - "<%>": 2, - "for": 2, - "user": 1, - "{": 28, - "user.LastName": 1, - "}": 28, - "user.FirstName": 1, - "user.Department": 1, - "package": 2, - "example": 2, - "enhancement": 1, - "String": 6, - "function": 11, - "toPerson": 1, - "Person": 7, - "var": 10, - "vals": 4, - "this.split": 1, - "return": 4, - "new": 6, - "[": 4, - "]": 4, - "as": 3, - "int": 2, - "Relationship.valueOf": 2, - "hello": 1, - "print": 3, - "uses": 2, - "java.util.*": 1, - "java.io.File": 1, - "class": 1, - "extends": 1, - "Contact": 1, - "implements": 1, - "IEmailable": 2, - "_name": 4, - "_age": 3, - "Integer": 3, - "Age": 1, - "_relationship": 2, - "Relationship": 3, - "readonly": 1, - "RelationshipOfPerson": 1, - "delegate": 1, - "_emailHelper": 2, - "represents": 1, - "enum": 1, - "FRIEND": 1, - "FAMILY": 1, - "BUSINESS_CONTACT": 1, - "static": 7, - "ALL_PEOPLE": 2, - "HashMap": 1, - "": 1, - "construct": 1, - "name": 4, - "age": 4, - "relationship": 2, - "EmailHelper": 1, - "this": 1, - "property": 2, - "get": 1, - "Name": 3, - "set": 1, - "override": 1, - "getEmailName": 1, - "incrementAge": 1, - "+": 2, - "@Deprecated": 1, - "printPersonInfo": 1, - "addPerson": 4, - "p": 5, - "if": 4, - "ALL_PEOPLE.containsKey": 2, - ".Name": 1, - "throw": 1, - "IllegalArgumentException": 1, - "p.Name": 2, - "addAllPeople": 1, - "contacts": 2, - "List": 1, - "": 1, - "contact": 3, - "typeis": 1, - "and": 1, - "not": 1, - "contact.Name": 1, - "getAllPeopleOlderThanNOrderedByName": 1, - "allPeople": 1, - "ALL_PEOPLE.Values": 3, - "allPeople.where": 1, - "-": 3, - "p.Age": 1, - ".orderBy": 1, - "loadPersonFromDB": 1, - "id": 1, - "using": 2, - "conn": 1, - "DBConnectionManager.getConnection": 1, - "stmt": 1, - "conn.prepareStatement": 1, - "stmt.setInt": 1, - "result": 1, - "stmt.executeQuery": 1, - "result.next": 1, - "result.getString": 2, - "result.getInt": 1, - "loadFromFile": 1, - "file": 3, - "File": 2, - "file.eachLine": 1, - "line": 1, - "line.HasContent": 1, - "line.toPerson": 1, - "saveToFile": 1, - "writer": 2, - "FileWriter": 1, - "PersonCSVTemplate.renderToString": 1, - "PersonCSVTemplate.render": 1 - }, - "Groovy": { - "task": 1, - "echoDirListViaAntBuilder": 1, - "(": 7, - ")": 7, - "{": 3, - "description": 1, - "//Docs": 1, - "http": 1, - "//ant.apache.org/manual/Types/fileset.html": 1, - "//Echo": 1, - "the": 3, - "Gradle": 1, - "project": 1, - "name": 1, - "via": 1, - "ant": 1, - "echo": 1, - "plugin": 1, - "ant.echo": 3, - "message": 1, - "project.name": 1, - "path": 2, - "//Gather": 1, - "list": 1, - "of": 1, - "files": 1, - "in": 1, - "a": 1, - "subdirectory": 1, - "ant.fileScanner": 1, - "fileset": 1, - "dir": 1, - "}": 3, - ".each": 1, - "//Print": 1, - "each": 1, - "file": 1, - "to": 1, - "screen": 1, - "with": 1, - "CWD": 1, - "projectDir": 1, - "removed.": 1, - "println": 2, - "it.toString": 1, - "-": 1, - "SHEBANG#!groovy": 1 - }, - "Groovy Server Pages": { - "": 4, - "": 4, - "": 4, - "http": 3, - "equiv=": 3, - "content=": 4, - "": 4, - "Testing": 3, - "with": 3, - "SiteMesh": 2, - "and": 2, - "Resources": 2, - "": 4, - "name=": 1, - "": 2, - "module=": 2, - "": 4, - "": 4, - "": 4, - "": 4, - "<%@>": 1, - "page": 2, - "contentType=": 1, - "Using": 1, - "directive": 1, - "tag": 1, - "": 2, - "Print": 1, - "{": 1, - "example": 1, - "}": 1 - }, - "Haml": { - "%": 1, - "p": 1, - "Hello": 1, - "World": 1 - }, - "Handlebars": { - "
": 5, - "class=": 5, - "

": 3, - "{": 16, - "title": 1, - "}": 16, - "

": 3, - "body": 3, - "
": 5, - "By": 2, - "fullName": 2, - "author": 2, - "Comments": 1, - "#each": 1, - "comments": 1, - "

": 1, - "

": 1, - "/each": 1 - }, - "Hy": { - ";": 4, - "Fibonacci": 1, - "example": 2, - "in": 2, - "Hy.": 2, - "(": 28, - "defn": 2, - "fib": 4, - "[": 10, - "n": 5, - "]": 10, - "if": 2, - "<": 1, - ")": 28, - "+": 1, - "-": 10, - "__name__": 1, - "for": 2, - "x": 3, - "print": 1, - "The": 1, - "concurrent.futures": 2, - "import": 1, - "ThreadPoolExecutor": 2, - "as": 3, - "completed": 2, - "random": 1, - "randint": 2, - "sh": 1, - "sleep": 2, - "task": 2, - "to": 2, - "do": 2, - "with": 1, - "executor": 2, - "setv": 1, - "jobs": 2, - "list": 1, - "comp": 1, - ".submit": 1, - "range": 1, - "future": 2, - ".result": 1 - }, - "IDL": { - ";": 59, - "docformat": 3, - "+": 8, - "Inverse": 1, - "hyperbolic": 2, - "cosine.": 1, - "Uses": 1, - "the": 7, - "formula": 1, - "text": 1, - "{": 3, - "acosh": 1, - "}": 3, - "(": 26, - "z": 9, - ")": 26, - "ln": 1, - "sqrt": 4, - "-": 14, - "Examples": 2, - "The": 1, - "arc": 1, - "sine": 1, - "function": 4, - "looks": 1, - "like": 2, - "IDL": 5, - "x": 8, - "*": 2, - "findgen": 1, - "/": 1, - "plot": 1, - "mg_acosh": 2, - "xstyle": 1, - "This": 1, - "should": 1, - "look": 1, - "..": 1, - "image": 1, - "acosh.png": 1, - "Returns": 3, - "float": 1, - "double": 2, - "complex": 2, - "or": 1, - "depending": 1, - "on": 1, - "input": 2, - "Params": 3, - "in": 4, - "required": 4, - "type": 5, - "numeric": 1, - "compile_opt": 3, - "strictarr": 3, - "return": 5, - "alog": 1, - "end": 5, - "MODULE": 1, - "mg_analysis": 1, - "DESCRIPTION": 1, - "Tools": 1, - "for": 2, - "analysis": 1, - "VERSION": 1, - "SOURCE": 1, - "mgalloy": 1, - "BUILD_DATE": 1, - "January": 1, - "FUNCTION": 2, - "MG_ARRAY_EQUAL": 1, - "KEYWORDS": 1, - "MG_TOTAL": 1, - "Find": 1, - "greatest": 1, - "common": 1, - "denominator": 1, - "GCD": 1, - "two": 1, - "positive": 2, - "integers.": 1, - "integer": 5, - "a": 4, - "first": 1, - "b": 4, - "second": 1, - "mg_gcd": 2, - "on_error": 1, - "if": 5, - "n_params": 1, - "ne": 1, - "then": 5, - "message": 2, - "mg_isinteger": 2, - "||": 1, - "begin": 2, - "endif": 2, - "_a": 3, - "abs": 2, - "_b": 3, - "minArg": 5, - "<": 1, - "maxArg": 3, - "eq": 2, - "remainder": 3, - "mod": 1, - "Truncate": 1, - "argument": 2, - "towards": 1, - "i.e.": 1, - "takes": 1, - "FLOOR": 1, - "of": 4, - "values": 2, - "and": 1, - "CEIL": 1, - "negative": 1, - "values.": 1, - "Try": 1, - "main": 2, - "level": 2, - "program": 2, - "at": 1, - "this": 1, - "file.": 1, - "It": 1, - "does": 1, - "print": 4, - "mg_trunc": 3, - "[": 6, - "]": 6, - "floor": 2, - "ceil": 2, - "array": 2, - "same": 1, - "as": 1, - "float/double": 1, - "containing": 1, - "to": 1, - "truncate": 1, - "result": 3, - "posInd": 3, - "where": 1, - "gt": 2, - "nposInd": 2, - "L": 1, - "example": 1 - }, - "Idris": { - "module": 1, - "Prelude.Char": 1, - "import": 1, - "Builtins": 1, - "isUpper": 4, - "Char": 13, - "-": 8, - "Bool": 8, - "x": 36, - "&&": 3, - "<=>": 3, - "Z": 1, - "isLower": 4, - "z": 1, - "isAlpha": 3, - "||": 9, - "isDigit": 3, - "(": 8, - "9": 1, - "isAlphaNum": 2, - "isSpace": 2, - "isNL": 2, - "toUpper": 3, - "if": 2, - ")": 7, - "then": 2, - "prim__intToChar": 2, - "prim__charToInt": 2, - "else": 2, - "toLower": 2, - "+": 1, - "isHexDigit": 2, - "elem": 1, - "hexChars": 3, - "where": 1, - "List": 1, - "[": 1, - "]": 1 - }, - "INI": { - ";": 1, - "editorconfig.org": 1, - "root": 1, - "true": 3, - "[": 2, - "*": 1, - "]": 2, - "indent_style": 1, - "space": 1, - "indent_size": 1, - "end_of_line": 1, - "lf": 1, - "charset": 1, - "utf": 1, - "-": 1, - "trim_trailing_whitespace": 1, - "insert_final_newline": 1, - "user": 1, - "name": 1, - "Josh": 1, - "Peek": 1, - "email": 1, - "josh@github.com": 1 - }, - "Ioke": { - "SHEBANG#!ioke": 1, - "println": 1 - }, - "Jade": { - "p.": 1, - "Hello": 1, - "World": 1 - }, - "Java": { - "package": 6, - "clojure.asm": 1, - ";": 891, - "import": 66, - "java.lang.reflect.Constructor": 1, - "java.lang.reflect.Method": 1, - "public": 214, - "class": 12, - "Type": 42, - "{": 434, - "final": 78, - "static": 141, - "int": 62, - "VOID": 5, - "BOOLEAN": 6, - "CHAR": 6, - "BYTE": 6, - "SHORT": 6, - "INT": 6, - "FLOAT": 6, - "LONG": 7, - "DOUBLE": 7, - "ARRAY": 6, - "OBJECT": 7, - "VOID_TYPE": 3, - "new": 131, - "(": 1097, - ")": 1097, - "BOOLEAN_TYPE": 3, - "CHAR_TYPE": 3, - "BYTE_TYPE": 3, - "SHORT_TYPE": 3, - "INT_TYPE": 3, - "FLOAT_TYPE": 3, - "LONG_TYPE": 3, - "DOUBLE_TYPE": 3, - "private": 77, - "sort": 18, - "char": 13, - "[": 54, - "]": 54, - "buf": 43, - "off": 25, - "len": 24, - "this.sort": 2, - "this.len": 2, - "}": 434, - "this.buf": 2, - "this.off": 1, - "getType": 10, - "String": 33, - "typeDescriptor": 1, - "return": 267, - "typeDescriptor.toCharArray": 1, - "Class": 10, - "c": 21, - "if": 116, - "c.isPrimitive": 2, - "Integer.TYPE": 2, - "else": 33, - "Void.TYPE": 3, - "Boolean.TYPE": 2, - "Byte.TYPE": 2, - "Character.TYPE": 2, - "Short.TYPE": 2, - "Double.TYPE": 2, - "Float.TYPE": 2, - "getDescriptor": 15, - "getObjectType": 1, - "name": 10, - "l": 5, - "name.length": 2, - "+": 83, - "name.getChars": 1, - "getArgumentTypes": 2, - "methodDescriptor": 2, - "methodDescriptor.toCharArray": 2, - "size": 16, - "while": 10, - "true": 21, - "car": 18, - "break": 4, - "args": 6, - ".len": 1, - "Method": 3, - "method": 2, - "classes": 2, - "method.getParameterTypes": 1, - "types": 3, - "classes.length": 2, - "for": 16, - "i": 54, - "-": 15, - "getReturnType": 2, - "methodDescriptor.indexOf": 1, - "method.getReturnType": 1, - "switch": 6, - "case": 56, - "//": 16, - "default": 6, - "getSort": 1, - "getDimensions": 3, - "getElementType": 2, - "getClassName": 1, - "StringBuffer": 14, - "b": 7, - ".getClassName": 1, - "b.append": 1, - "b.toString": 1, - ".replace": 2, - "getInternalName": 2, - "buf.toString": 4, - "getMethodDescriptor": 2, - "returnType": 1, - "argumentTypes": 2, - "buf.append": 21, - "<": 13, - "argumentTypes.length": 1, - ".getDescriptor": 1, - "returnType.getDescriptor": 1, - "void": 25, - "c.getName": 1, - "getConstructorDescriptor": 1, - "Constructor": 1, - "parameters": 4, - "c.getParameterTypes": 1, - "parameters.length": 2, - ".toString": 1, - "m": 1, - "m.getParameterTypes": 1, - "m.getReturnType": 1, - "d": 10, - "d.isPrimitive": 1, - "d.isArray": 1, - "d.getComponentType": 1, - "d.getName": 1, - "name.charAt": 1, - "getSize": 1, - "||": 8, - "getOpcode": 1, - "opcode": 17, - "Opcodes.IALOAD": 1, - "Opcodes.IASTORE": 1, - "boolean": 36, - "equals": 2, - "Object": 31, - "o": 12, - "this": 16, - "instanceof": 19, - "false": 12, - "t": 6, - "t.sort": 1, - "Type.OBJECT": 2, - "Type.ARRAY": 2, - "t.len": 1, - "j": 9, - "t.off": 1, - "end": 4, - "t.buf": 1, - "hashCode": 1, - "hc": 4, - "*": 2, - "toString": 1, - "clojure.lang": 1, - "java.lang.ref.Reference": 1, - "java.math.BigInteger": 1, - "java.util.Map": 3, - "java.util.concurrent.ConcurrentHashMap": 1, - "java.lang.ref.SoftReference": 1, - "java.lang.ref.ReferenceQueue": 1, - "Util": 1, - "equiv": 17, - "k1": 40, - "k2": 38, - "null": 80, - "Number": 9, - "&&": 6, - "Numbers.equal": 1, - "IPersistentCollection": 5, - "pcequiv": 2, - "k1.equals": 2, - "long": 5, - "double": 4, - "c1": 2, - "c2": 2, - ".equiv": 2, - "identical": 1, - "classOf": 1, - "x": 8, - "x.getClass": 1, - "compare": 1, - "Numbers.compare": 1, - "Comparable": 1, - ".compareTo": 1, - "hash": 3, - "o.hashCode": 2, - "hasheq": 1, - "Numbers.hasheq": 1, - "IHashEq": 2, - ".hasheq": 1, - "hashCombine": 1, - "seed": 5, - "//a": 1, - "la": 1, - "boost": 1, - "e3779b9": 1, - "<<": 1, - "isPrimitive": 1, - "isInteger": 1, - "Integer": 2, - "Long": 1, - "BigInt": 1, - "BigInteger": 1, - "ret1": 2, - "ret": 4, - "nil": 2, - "ISeq": 2, - "": 1, - "clearCache": 1, - "ReferenceQueue": 1, - "rq": 1, - "ConcurrentHashMap": 1, - "K": 2, - "Reference": 3, - "": 3, - "cache": 1, - "//cleanup": 1, - "any": 1, - "dead": 1, - "entries": 1, - "rq.poll": 2, - "Map.Entry": 1, - "e": 31, - "cache.entrySet": 1, - "val": 3, - "e.getValue": 1, - "val.get": 1, - "cache.remove": 1, - "e.getKey": 1, - "RuntimeException": 5, - "runtimeException": 2, - "s": 10, - "Throwable": 4, - "sneakyThrow": 1, - "throw": 9, - "NullPointerException": 3, - "Util.": 1, - "": 1, - "sneakyThrow0": 2, - "@SuppressWarnings": 1, - "": 1, - "extends": 10, - "throws": 26, - "T": 2, - "nokogiri.internals": 1, - "nokogiri.internals.NokogiriHelpers.getNokogiriClass": 1, - "nokogiri.internals.NokogiriHelpers.isNamespace": 1, - "nokogiri.internals.NokogiriHelpers.stringOrNil": 1, - "nokogiri.HtmlDocument": 1, - "nokogiri.NokogiriService": 1, - "nokogiri.XmlDocument": 1, - "org.apache.xerces.parsers.DOMParser": 1, - "org.apache.xerces.xni.Augmentations": 1, - "org.apache.xerces.xni.QName": 1, - "org.apache.xerces.xni.XMLAttributes": 1, - "org.apache.xerces.xni.XNIException": 1, - "org.apache.xerces.xni.parser.XMLDocumentFilter": 1, - "org.apache.xerces.xni.parser.XMLParserConfiguration": 1, - "org.cyberneko.html.HTMLConfiguration": 1, - "org.cyberneko.html.filters.DefaultFilter": 1, - "org.jruby.Ruby": 2, - "org.jruby.RubyClass": 2, - "org.jruby.runtime.ThreadContext": 1, - "org.jruby.runtime.builtin.IRubyObject": 2, - "org.w3c.dom.Document": 1, - "org.w3c.dom.NamedNodeMap": 1, - "org.w3c.dom.NodeList": 1, - "HtmlDomParserContext": 3, - "XmlDomParserContext": 1, - "Ruby": 43, - "runtime": 88, - "IRubyObject": 35, - "options": 4, - "super": 7, - "encoding": 2, - "@Override": 6, - "protected": 8, - "initErrorHandler": 1, - "options.strict": 1, - "errorHandler": 6, - "NokogiriStrictErrorHandler": 1, - "options.noError": 2, - "options.noWarning": 2, - "NokogiriNonStrictErrorHandler4NekoHtml": 1, - "initParser": 1, - "XMLParserConfiguration": 1, - "config": 2, - "HTMLConfiguration": 1, - "XMLDocumentFilter": 3, - "removeNSAttrsFilter": 2, - "RemoveNSAttrsFilter": 2, - "elementValidityCheckFilter": 3, - "ElementValidityCheckFilter": 3, - "//XMLDocumentFilter": 1, - "filters": 3, - "config.setErrorHandler": 1, - "this.errorHandler": 2, - "parser": 1, - "DOMParser": 1, - "setProperty": 4, - "java_encoding": 2, - "setFeature": 4, - "enableDocumentFragment": 1, - "XmlDocument": 8, - "getNewEmptyDocument": 1, - "ThreadContext": 2, - "context": 8, - "XmlDocument.rbNew": 1, - "getNokogiriClass": 1, - "context.getRuntime": 3, - "wrapDocument": 1, - "RubyClass": 92, - "klazz": 107, - "Document": 2, - "document": 5, - "HtmlDocument": 7, - "htmlDocument": 6, - "NokogiriService.HTML_DOCUMENT_ALLOCATOR.allocate": 1, - "htmlDocument.setDocumentNode": 1, - "ruby_encoding.isNil": 1, - "detected_encoding": 2, - "detected_encoding.isNil": 1, - "ruby_encoding": 3, - "charset": 2, - "tryGetCharsetFromHtml5MetaTag": 2, - "stringOrNil": 1, - "htmlDocument.setEncoding": 1, - "htmlDocument.setParsedEncoding": 1, - ".equalsIgnoreCase": 5, - "document.getDocumentElement": 2, - ".getNodeName": 4, - "NodeList": 2, - "list": 1, - ".getChildNodes": 2, - "list.getLength": 1, - "list.item": 2, - "headers": 1, - "headers.getLength": 1, - "headers.item": 2, - "NamedNodeMap": 1, - "nodeMap": 1, - ".getAttributes": 1, - "k": 5, - "nodeMap.getLength": 1, - "nodeMap.item": 2, - ".getNodeValue": 1, - "DefaultFilter": 2, - "startElement": 2, - "QName": 2, - "element": 3, - "XMLAttributes": 2, - "attrs": 4, - "Augmentations": 2, - "augs": 4, - "XNIException": 2, - "attrs.getLength": 1, - "isNamespace": 1, - "attrs.getQName": 1, - "attrs.removeAttributeAt": 1, - "element.uri": 1, - "super.startElement": 2, - "NokogiriErrorHandler": 2, - "element_names": 3, - "g": 1, - "r": 1, - "w": 1, - "y": 1, - "z": 1, - "isValid": 2, - "testee": 1, - "testee.toCharArray": 1, - "index": 4, - ".length": 1, - "testee.equals": 1, - "name.rawname": 2, - "errorHandler.getErrors": 1, - ".add": 1, - "Exception": 1, - "hudson.model": 1, - "hudson.ExtensionListView": 1, - "hudson.Functions": 1, - "hudson.Platform": 1, - "hudson.PluginManager": 1, - "hudson.cli.declarative.CLIResolver": 1, - "hudson.model.listeners.ItemListener": 1, - "hudson.slaves.ComputerListener": 1, - "hudson.util.CopyOnWriteList": 1, - "hudson.util.FormValidation": 1, - "jenkins.model.Jenkins": 1, - "org.jvnet.hudson.reactor.ReactorException": 1, - "org.kohsuke.stapler.QueryParameter": 1, - "org.kohsuke.stapler.Stapler": 1, - "org.kohsuke.stapler.StaplerRequest": 1, - "org.kohsuke.stapler.StaplerResponse": 1, - "javax.servlet.ServletContext": 1, - "javax.servlet.ServletException": 1, - "java.io.File": 1, - "java.io.IOException": 10, - "java.text.NumberFormat": 1, - "java.text.ParseException": 1, - "java.util.Collections": 2, - "java.util.List": 1, - "hudson.Util.fixEmpty": 1, - "Hudson": 5, - "Jenkins": 2, - "transient": 2, - "CopyOnWriteList": 4, - "": 2, - "itemListeners": 2, - "ExtensionListView.createCopyOnWriteList": 2, - "ItemListener.class": 1, - "": 2, - "computerListeners": 2, - "ComputerListener.class": 1, - "@CLIResolver": 1, - "getInstance": 2, - "Jenkins.getInstance": 2, - "File": 2, - "root": 6, - "ServletContext": 2, - "IOException": 8, - "InterruptedException": 2, - "ReactorException": 2, - "PluginManager": 1, - "pluginManager": 2, - "getJobListeners": 1, - "getComputerListeners": 1, - "Slave": 3, - "getSlave": 1, - "Node": 1, - "n": 3, - "getNode": 1, - "List": 3, - "": 2, - "getSlaves": 1, - "slaves": 3, - "setSlaves": 1, - "setNodes": 1, - "TopLevelItem": 3, - "getJob": 1, - "getItem": 1, - "getJobCaseInsensitive": 1, - "match": 2, - "Functions.toEmailSafeString": 2, - "item": 2, - "getItems": 1, - "item.getName": 1, - "synchronized": 1, - "doQuietDown": 2, - "StaplerResponse": 4, - "rsp": 6, - "ServletException": 3, - ".generateResponse": 2, - "doLogRss": 1, - "StaplerRequest": 4, - "req": 6, - "qs": 3, - "req.getQueryString": 1, - "rsp.sendRedirect2": 1, - "doFieldCheck": 3, - "fixEmpty": 8, - "req.getParameter": 4, - "FormValidation": 2, - "@QueryParameter": 4, - "value": 11, - "type": 3, - "errorText": 3, - "warningText": 3, - "FormValidation.error": 4, - "FormValidation.warning": 1, - "try": 26, - "type.equalsIgnoreCase": 2, - "NumberFormat.getInstance": 2, - ".parse": 2, - ".floatValue": 1, - "<=>": 1, - "0": 1, - "error": 1, - "Messages": 1, - "Hudson_NotAPositiveNumber": 1, - "equalsIgnoreCase": 1, - "number": 1, - "negative": 1, - "NumberFormat": 1, - "parse": 1, - "floatValue": 1, - "Messages.Hudson_NotANegativeNumber": 1, - "catch": 27, - "ParseException": 1, - "Messages.Hudson_NotANumber": 1, - "FormValidation.ok": 1, - "isWindows": 1, - "File.pathSeparatorChar": 1, - "isDarwin": 1, - "Platform.isDarwin": 1, - "adminCheck": 3, - "Stapler.getCurrentRequest": 1, - "Stapler.getCurrentResponse": 1, - "isAdmin": 4, - "rsp.sendError": 1, - "StaplerResponse.SC_FORBIDDEN": 1, - ".getACL": 1, - ".hasPermission": 1, - "ADMINISTER": 1, - "XSTREAM.alias": 1, - "Hudson.class": 1, - "MasterComputer": 1, - "Jenkins.MasterComputer": 1, - "CloudList": 3, - "Jenkins.CloudList": 1, - "h": 2, - "needed": 1, - "XStream": 1, - "deserialization": 1, - "nokogiri": 6, - "java.util.HashMap": 1, - "org.jruby.RubyArray": 1, - "org.jruby.RubyFixnum": 1, - "org.jruby.RubyModule": 1, - "org.jruby.runtime.ObjectAllocator": 1, - "org.jruby.runtime.load.BasicLibraryService": 1, - "NokogiriService": 1, - "implements": 3, - "BasicLibraryService": 1, - "nokogiriClassCacheGvarName": 1, - "Map": 1, - "": 2, - "nokogiriClassCache": 2, - "basicLoad": 1, - "ruby": 25, - "init": 2, - "createNokogiriClassCahce": 2, - "Collections.synchronizedMap": 1, - "HashMap": 1, - "nokogiriClassCache.put": 26, - "ruby.getClassFromPath": 26, - "RubyModule": 18, - "ruby.defineModule": 1, - "xmlModule": 7, - "nokogiri.defineModuleUnder": 3, - "xmlSaxModule": 3, - "xmlModule.defineModuleUnder": 1, - "htmlModule": 5, - "htmlSaxModule": 3, - "htmlModule.defineModuleUnder": 1, - "xsltModule": 3, - "createNokogiriModule": 2, - "createSyntaxErrors": 2, - "xmlNode": 5, - "createXmlModule": 2, - "createHtmlModule": 2, - "createDocuments": 2, - "createSaxModule": 2, - "createXsltModule": 2, - "encHandler": 1, - "nokogiri.defineClassUnder": 2, - "ruby.getObject": 13, - "ENCODING_HANDLER_ALLOCATOR": 2, - "encHandler.defineAnnotatedMethods": 1, - "EncodingHandler.class": 1, - "syntaxError": 2, - "ruby.getStandardError": 2, - ".getAllocator": 1, - "xmlSyntaxError": 4, - "xmlModule.defineClassUnder": 23, - "XML_SYNTAXERROR_ALLOCATOR": 2, - "xmlSyntaxError.defineAnnotatedMethods": 1, - "XmlSyntaxError.class": 1, - "node": 14, - "XML_NODE_ALLOCATOR": 2, - "node.defineAnnotatedMethods": 1, - "XmlNode.class": 1, - "attr": 1, - "XML_ATTR_ALLOCATOR": 2, - "attr.defineAnnotatedMethods": 1, - "XmlAttr.class": 1, - "attrDecl": 1, - "XML_ATTRIBUTE_DECL_ALLOCATOR": 2, - "attrDecl.defineAnnotatedMethods": 1, - "XmlAttributeDecl.class": 1, - "characterData": 3, - "comment": 1, - "XML_COMMENT_ALLOCATOR": 2, - "comment.defineAnnotatedMethods": 1, - "XmlComment.class": 1, - "text": 2, - "XML_TEXT_ALLOCATOR": 2, - "text.defineAnnotatedMethods": 1, - "XmlText.class": 1, - "cdata": 1, - "XML_CDATA_ALLOCATOR": 2, - "cdata.defineAnnotatedMethods": 1, - "XmlCdata.class": 1, - "dtd": 1, - "XML_DTD_ALLOCATOR": 2, - "dtd.defineAnnotatedMethods": 1, - "XmlDtd.class": 1, - "documentFragment": 1, - "XML_DOCUMENT_FRAGMENT_ALLOCATOR": 2, - "documentFragment.defineAnnotatedMethods": 1, - "XmlDocumentFragment.class": 1, - "XML_ELEMENT_ALLOCATOR": 2, - "element.defineAnnotatedMethods": 1, - "XmlElement.class": 1, - "elementContent": 1, - "XML_ELEMENT_CONTENT_ALLOCATOR": 2, - "elementContent.defineAnnotatedMethods": 1, - "XmlElementContent.class": 1, - "elementDecl": 1, - "XML_ELEMENT_DECL_ALLOCATOR": 2, - "elementDecl.defineAnnotatedMethods": 1, - "XmlElementDecl.class": 1, - "entityDecl": 1, - "XML_ENTITY_DECL_ALLOCATOR": 2, - "entityDecl.defineAnnotatedMethods": 1, - "XmlEntityDecl.class": 1, - "entityDecl.defineConstant": 6, - "RubyFixnum.newFixnum": 6, - "XmlEntityDecl.INTERNAL_GENERAL": 1, - "XmlEntityDecl.EXTERNAL_GENERAL_PARSED": 1, - "XmlEntityDecl.EXTERNAL_GENERAL_UNPARSED": 1, - "XmlEntityDecl.INTERNAL_PARAMETER": 1, - "XmlEntityDecl.EXTERNAL_PARAMETER": 1, - "XmlEntityDecl.INTERNAL_PREDEFINED": 1, - "entref": 1, - "XML_ENTITY_REFERENCE_ALLOCATOR": 2, - "entref.defineAnnotatedMethods": 1, - "XmlEntityReference.class": 1, - "namespace": 1, - "XML_NAMESPACE_ALLOCATOR": 2, - "namespace.defineAnnotatedMethods": 1, - "XmlNamespace.class": 1, - "nodeSet": 1, - "XML_NODESET_ALLOCATOR": 2, - "nodeSet.defineAnnotatedMethods": 1, - "XmlNodeSet.class": 1, - "pi": 1, - "XML_PROCESSING_INSTRUCTION_ALLOCATOR": 2, - "pi.defineAnnotatedMethods": 1, - "XmlProcessingInstruction.class": 1, - "reader": 1, - "XML_READER_ALLOCATOR": 2, - "reader.defineAnnotatedMethods": 1, - "XmlReader.class": 1, - "schema": 2, - "XML_SCHEMA_ALLOCATOR": 2, - "schema.defineAnnotatedMethods": 1, - "XmlSchema.class": 1, - "relaxng": 1, - "XML_RELAXNG_ALLOCATOR": 2, - "relaxng.defineAnnotatedMethods": 1, - "XmlRelaxng.class": 1, - "xpathContext": 1, - "XML_XPATHCONTEXT_ALLOCATOR": 2, - "xpathContext.defineAnnotatedMethods": 1, - "XmlXpathContext.class": 1, - "htmlElemDesc": 1, - "htmlModule.defineClassUnder": 3, - "HTML_ELEMENT_DESCRIPTION_ALLOCATOR": 2, - "htmlElemDesc.defineAnnotatedMethods": 1, - "HtmlElementDescription.class": 1, - "htmlEntityLookup": 1, - "HTML_ENTITY_LOOKUP_ALLOCATOR": 2, - "htmlEntityLookup.defineAnnotatedMethods": 1, - "HtmlEntityLookup.class": 1, - "xmlDocument": 5, - "XML_DOCUMENT_ALLOCATOR": 2, - "xmlDocument.defineAnnotatedMethods": 1, - "XmlDocument.class": 1, - "//RubyModule": 1, - "htmlDoc": 1, - "html.defineOrGetClassUnder": 1, - "HTML_DOCUMENT_ALLOCATOR": 2, - "htmlDocument.defineAnnotatedMethods": 1, - "HtmlDocument.class": 1, - "xmlSaxParserContext": 5, - "xmlSaxModule.defineClassUnder": 2, - "XML_SAXPARSER_CONTEXT_ALLOCATOR": 2, - "xmlSaxParserContext.defineAnnotatedMethods": 1, - "XmlSaxParserContext.class": 1, - "xmlSaxPushParser": 1, - "XML_SAXPUSHPARSER_ALLOCATOR": 2, - "xmlSaxPushParser.defineAnnotatedMethods": 1, - "XmlSaxPushParser.class": 1, - "htmlSaxParserContext": 4, - "htmlSaxModule.defineClassUnder": 1, - "HTML_SAXPARSER_CONTEXT_ALLOCATOR": 2, - "htmlSaxParserContext.defineAnnotatedMethods": 1, - "HtmlSaxParserContext.class": 1, - "stylesheet": 1, - "xsltModule.defineClassUnder": 1, - "XSLT_STYLESHEET_ALLOCATOR": 2, - "stylesheet.defineAnnotatedMethods": 1, - "XsltStylesheet.class": 2, - "xsltModule.defineAnnotatedMethod": 1, - "ObjectAllocator": 60, - "allocate": 30, - "EncodingHandler": 1, - "clone": 47, - "htmlDocument.clone": 1, - "clone.setMetaClass": 23, - "CloneNotSupportedException": 23, - "HtmlSaxParserContext": 5, - "htmlSaxParserContext.clone": 1, - "HtmlElementDescription": 1, - "HtmlEntityLookup": 1, - "XmlAttr": 5, - "xmlAttr": 3, - "xmlAttr.clone": 1, - "XmlCdata": 5, - "xmlCdata": 3, - "xmlCdata.clone": 1, - "XmlComment": 5, - "xmlComment": 3, - "xmlComment.clone": 1, - "xmlDocument.clone": 1, - "XmlDocumentFragment": 5, - "xmlDocumentFragment": 3, - "xmlDocumentFragment.clone": 1, - "XmlDtd": 5, - "xmlDtd": 3, - "xmlDtd.clone": 1, - "XmlElement": 5, - "xmlElement": 3, - "xmlElement.clone": 1, - "XmlElementDecl": 5, - "xmlElementDecl": 3, - "xmlElementDecl.clone": 1, - "XmlEntityReference": 5, - "xmlEntityRef": 3, - "xmlEntityRef.clone": 1, - "XmlNamespace": 5, - "xmlNamespace": 3, - "xmlNamespace.clone": 1, - "XmlNode": 5, - "xmlNode.clone": 1, - "XmlNodeSet": 5, - "xmlNodeSet": 5, - "xmlNodeSet.clone": 1, - "xmlNodeSet.setNodes": 1, - "RubyArray.newEmptyArray": 1, - "XmlProcessingInstruction": 5, - "xmlProcessingInstruction": 3, - "xmlProcessingInstruction.clone": 1, - "XmlReader": 5, - "xmlReader": 5, - "xmlReader.clone": 1, - "XmlAttributeDecl": 1, - "XmlEntityDecl": 1, - "runtime.newNotImplementedError": 1, - "XmlRelaxng": 5, - "xmlRelaxng": 3, - "xmlRelaxng.clone": 1, - "XmlSaxParserContext": 5, - "xmlSaxParserContext.clone": 1, - "XmlSaxPushParser": 1, - "XmlSchema": 5, - "xmlSchema": 3, - "xmlSchema.clone": 1, - "XmlSyntaxError": 5, - "xmlSyntaxError.clone": 1, - "XmlText": 6, - "xmlText": 3, - "xmlText.clone": 1, - "XmlXpathContext": 5, - "xmlXpathContext": 3, - "xmlXpathContext.clone": 1, - "XsltStylesheet": 4, - "xsltStylesheet": 3, - "xsltStylesheet.clone": 1, - "persons": 1, - "ProtocolBuffer": 2, - "registerAllExtensions": 1, - "com.google.protobuf.ExtensionRegistry": 2, - "registry": 1, - "interface": 1, - "PersonOrBuilder": 2, - "com.google.protobuf.MessageOrBuilder": 1, - "hasName": 5, - "java.lang.String": 15, - "getName": 3, - "com.google.protobuf.ByteString": 13, - "getNameBytes": 5, - "Person": 10, - "com.google.protobuf.GeneratedMessage": 1, - "com.google.protobuf.GeneratedMessage.Builder": 2, - "": 1, - "builder": 4, - "this.unknownFields": 4, - "builder.getUnknownFields": 1, - "noInit": 1, - "com.google.protobuf.UnknownFieldSet.getDefaultInstance": 1, - "defaultInstance": 4, - "getDefaultInstance": 2, - "getDefaultInstanceForType": 2, - "com.google.protobuf.UnknownFieldSet": 2, - "unknownFields": 3, - "@java.lang.Override": 4, - "getUnknownFields": 3, - "com.google.protobuf.CodedInputStream": 5, - "input": 18, - "com.google.protobuf.ExtensionRegistryLite": 8, - "extensionRegistry": 16, - "com.google.protobuf.InvalidProtocolBufferException": 9, - "initFields": 2, - "mutable_bitField0_": 1, - "com.google.protobuf.UnknownFieldSet.Builder": 1, - "com.google.protobuf.UnknownFieldSet.newBuilder": 1, - "done": 4, - "tag": 3, - "input.readTag": 1, - "parseUnknownField": 1, - "bitField0_": 15, - "|": 5, - "name_": 18, - "input.readBytes": 1, - "e.setUnfinishedMessage": 1, - "e.getMessage": 1, - ".setUnfinishedMessage": 1, - "finally": 2, - "unknownFields.build": 1, - "makeExtensionsImmutable": 1, - "com.google.protobuf.Descriptors.Descriptor": 4, - "persons.ProtocolBuffer.internal_static_persons_Person_descriptor": 3, - "com.google.protobuf.GeneratedMessage.FieldAccessorTable": 4, - "internalGetFieldAccessorTable": 2, - "persons.ProtocolBuffer.internal_static_persons_Person_fieldAccessorTable": 2, - ".ensureFieldAccessorsInitialized": 2, - "persons.ProtocolBuffer.Person.class": 2, - "persons.ProtocolBuffer.Person.Builder.class": 2, - "com.google.protobuf.Parser": 2, - "": 3, - "PARSER": 2, - "com.google.protobuf.AbstractParser": 1, - "parsePartialFrom": 1, - "getParserForType": 1, - "NAME_FIELD_NUMBER": 1, - "java.lang.Object": 7, - "&": 7, - "ref": 16, - "bs": 1, - "bs.toStringUtf8": 1, - "bs.isValidUtf8": 1, - "com.google.protobuf.ByteString.copyFromUtf8": 2, - "byte": 4, - "memoizedIsInitialized": 4, - "isInitialized": 5, - "writeTo": 1, - "com.google.protobuf.CodedOutputStream": 2, - "output": 2, - "getSerializedSize": 2, - "output.writeBytes": 1, - ".writeTo": 1, - "memoizedSerializedSize": 3, - ".computeBytesSize": 1, - ".getSerializedSize": 1, - "serialVersionUID": 1, - "L": 1, - "writeReplace": 1, - "java.io.ObjectStreamException": 1, - "super.writeReplace": 1, - "persons.ProtocolBuffer.Person": 22, - "parseFrom": 8, - "data": 8, - "PARSER.parseFrom": 8, - "java.io.InputStream": 4, - "parseDelimitedFrom": 2, - "PARSER.parseDelimitedFrom": 2, - "Builder": 20, - "newBuilder": 5, - "Builder.create": 1, - "newBuilderForType": 2, - "prototype": 2, - ".mergeFrom": 2, - "toBuilder": 1, - "com.google.protobuf.GeneratedMessage.BuilderParent": 2, - "parent": 4, - "": 1, - "persons.ProtocolBuffer.PersonOrBuilder": 1, - "maybeForceBuilderInitialization": 3, - "com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders": 1, - "create": 2, - "clear": 1, - "super.clear": 1, - "buildPartial": 3, - "getDescriptorForType": 1, - "persons.ProtocolBuffer.Person.getDefaultInstance": 2, - "build": 1, - "result": 5, - "result.isInitialized": 1, - "newUninitializedMessageException": 1, - "from_bitField0_": 2, - "to_bitField0_": 3, - "result.name_": 1, - "result.bitField0_": 1, - "onBuilt": 1, - "mergeFrom": 5, - "com.google.protobuf.Message": 1, - "other": 6, - "super.mergeFrom": 1, - "other.hasName": 1, - "other.name_": 1, - "onChanged": 4, - "this.mergeUnknownFields": 1, - "other.getUnknownFields": 1, - "parsedMessage": 5, - "PARSER.parsePartialFrom": 1, - "e.getUnfinishedMessage": 1, - ".toStringUtf8": 1, - "setName": 1, - "clearName": 1, - ".getName": 1, - "setNameBytes": 1, - "defaultInstance.initFields": 1, - "internal_static_persons_Person_descriptor": 3, - "internal_static_persons_Person_fieldAccessorTable": 2, - "com.google.protobuf.Descriptors.FileDescriptor": 5, - "descriptor": 3, - "descriptorData": 2, - "com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner": 2, - "assigner": 2, - "assignDescriptors": 1, - ".getMessageTypes": 1, - ".get": 1, - ".internalBuildGeneratedFileFrom": 1 - }, - "JavaScript": { - "function": 1210, - "(": 8513, - ")": 8521, - "{": 2736, - ";": 4052, - "//": 410, - "jshint": 1, - "_": 9, - "var": 910, - "Modal": 2, - "content": 5, - "options": 56, - "this.options": 6, - "this.": 2, - "element": 19, - ".delegate": 2, - ".proxy": 1, - "this.hide": 1, - "this": 577, - "}": 2712, - "Modal.prototype": 1, - "constructor": 8, - "toggle": 10, - "return": 944, - "[": 1459, - "this.isShown": 3, - "]": 1456, - "show": 10, - "that": 33, - "e": 663, - ".Event": 1, - "element.trigger": 1, - "if": 1230, - "||": 648, - "e.isDefaultPrevented": 2, - ".addClass": 1, - "true": 147, - "escape.call": 1, - "backdrop.call": 1, - "transition": 1, - ".support.transition": 1, - "&&": 1017, - "that.": 3, - "element.hasClass": 1, - "element.parent": 1, - ".length": 24, - "element.appendTo": 1, - "document.body": 8, - "//don": 1, - "in": 170, - "shown": 2, - "hide": 8, - "body": 22, - "modal": 4, - "-": 705, - "open": 2, - "fade": 4, - "hidden": 12, - "
": 4, - "class=": 5, - "static": 2, - "keyup.dismiss.modal": 2, - "object": 59, - "string": 41, - "click.modal.data": 1, - "api": 1, - "data": 145, - "target": 44, - "href": 9, - ".extend": 1, - "target.data": 1, - "this.data": 5, - "e.preventDefault": 1, - "target.modal": 1, - "option": 12, - "window.jQuery": 7, - "Animal": 12, - "Horse": 12, - "Snake": 12, - "sam": 4, - "tom": 4, - "__hasProp": 2, - "Object.prototype.hasOwnProperty": 6, - "__extends": 6, - "child": 17, - "parent": 15, - "for": 262, - "key": 85, - "__hasProp.call": 2, - "ctor": 6, - "this.constructor": 5, - "ctor.prototype": 3, - "parent.prototype": 6, - "child.prototype": 4, - "new": 86, - "child.__super__": 3, - "name": 161, - "this.name": 7, - "Animal.prototype.move": 2, - "meters": 4, - "alert": 11, - "+": 1135, - "Snake.__super__.constructor.apply": 2, - "arguments": 83, - "Snake.prototype.move": 2, - "Snake.__super__.move.call": 2, - "Horse.__super__.constructor.apply": 2, - "Horse.prototype.move": 2, - "Horse.__super__.move.call": 2, - "sam.move": 2, - "tom.move": 2, - ".call": 10, - ".hasOwnProperty": 2, - "Animal.name": 1, - "_super": 4, - "Snake.name": 1, - "Horse.name": 1, - "console.log": 3, - "util": 1, - "require": 9, - "net": 1, - "stream": 1, - "url": 23, - "EventEmitter": 3, - ".EventEmitter": 1, - "FreeList": 2, - ".FreeList": 1, - "HTTPParser": 2, - "process.binding": 1, - ".HTTPParser": 1, - "assert": 8, - ".ok": 1, - "END_OF_FILE": 3, - "debug": 15, - "process.env.NODE_DEBUG": 2, - "/http/.test": 1, - "x": 33, - "console.error": 3, - "else": 307, - "parserOnHeaders": 2, - "headers": 41, - "this.maxHeaderPairs": 2, - "<": 209, - "this._headers.length": 1, - "this._headers": 13, - "this._headers.concat": 1, - "this._url": 1, - "parserOnHeadersComplete": 2, - "info": 2, - "parser": 27, - "info.headers": 1, - "info.url": 1, - "parser._headers": 6, - "parser._url": 4, - "parser.incoming": 9, - "IncomingMessage": 4, - "parser.socket": 4, - "parser.incoming.httpVersionMajor": 1, - "info.versionMajor": 2, - "parser.incoming.httpVersionMinor": 1, - "info.versionMinor": 2, - "parser.incoming.httpVersion": 1, - "parser.incoming.url": 1, - "n": 874, - "headers.length": 2, - "parser.maxHeaderPairs": 4, - "Math.min": 5, - "i": 853, - "k": 302, - "v": 135, - "parser.incoming._addHeaderLine": 2, - "info.method": 2, - "parser.incoming.method": 1, - "parser.incoming.statusCode": 2, - "info.statusCode": 1, - "parser.incoming.upgrade": 4, - "info.upgrade": 2, - "skipBody": 3, - "false": 142, - "response": 3, - "to": 92, - "HEAD": 3, - "or": 38, - "CONNECT": 1, - "parser.onIncoming": 3, - "info.shouldKeepAlive": 1, - "parserOnBody": 2, - "b": 961, - "start": 20, - "len": 11, - "slice": 10, - "b.slice": 1, - "parser.incoming._paused": 2, - "parser.incoming._pendings.length": 2, - "parser.incoming._pendings.push": 2, - "parser.incoming._emitData": 1, - "parserOnMessageComplete": 2, - "parser.incoming.complete": 2, - "parser.incoming.readable": 1, - "parser.incoming._emitEnd": 1, - "parser.socket.readable": 1, - "parser.socket.resume": 1, - "parsers": 2, - "HTTPParser.REQUEST": 2, - "parser.onHeaders": 1, - "parser.onHeadersComplete": 1, - "parser.onBody": 1, - "parser.onMessageComplete": 1, - "exports.parsers": 1, - "CRLF": 13, - "STATUS_CODES": 2, - "exports.STATUS_CODES": 1, - "RFC": 16, - "obsoleted": 1, - "by": 12, - "connectionExpression": 1, - "/Connection/i": 1, - "transferEncodingExpression": 1, - "/Transfer": 1, - "Encoding/i": 1, - "closeExpression": 1, - "/close/i": 1, - "chunkExpression": 1, - "/chunk/i": 1, - "contentLengthExpression": 1, - "/Content": 1, - "Length/i": 1, - "dateExpression": 1, - "/Date/i": 1, - "expectExpression": 1, - "/Expect/i": 1, - "continueExpression": 1, - "/100": 2, - "continue/i": 1, - "dateCache": 5, - "utcDate": 2, - "d": 771, - "Date": 4, - "d.toUTCString": 1, - "setTimeout": 19, - "undefined": 328, - "d.getMilliseconds": 1, - "socket": 26, - "stream.Stream.call": 2, - "this.socket": 10, - "this.connection": 8, - "this.httpVersion": 1, - "null": 427, - "this.complete": 2, - "this.headers": 2, - "this.trailers": 2, - "this.readable": 1, - "this._paused": 3, - "this._pendings": 1, - "this._endEmitted": 3, - "this.url": 1, - "this.method": 2, - "this.statusCode": 3, - "this.client": 1, - "util.inherits": 7, - "stream.Stream": 2, - "exports.IncomingMessage": 1, - "IncomingMessage.prototype.destroy": 1, - "error": 20, - "this.socket.destroy": 3, - "IncomingMessage.prototype.setEncoding": 1, - "encoding": 26, - "StringDecoder": 2, - ".StringDecoder": 1, - "lazy": 1, - "load": 5, - "this._decoder": 2, - "IncomingMessage.prototype.pause": 1, - "this.socket.pause": 1, - "IncomingMessage.prototype.resume": 1, - "this.socket.resume": 1, - "this._emitPending": 1, - "IncomingMessage.prototype._emitPending": 1, - "callback": 23, - "this._pendings.length": 1, - "self": 17, - "process.nextTick": 1, - "while": 53, - "self._paused": 1, - "self._pendings.length": 2, - "chunk": 14, - "self._pendings.shift": 1, - "Buffer.isBuffer": 2, - "self._emitData": 1, - "self.readable": 1, - "self._emitEnd": 1, - "IncomingMessage.prototype._emitData": 1, - "this._decoder.write": 1, - "string.length": 1, - "this.emit": 5, - "IncomingMessage.prototype._emitEnd": 1, - "IncomingMessage.prototype._addHeaderLine": 1, - "field": 36, - "value": 98, - "dest": 12, - "field.toLowerCase": 1, - "switch": 30, - "case": 136, - ".push": 3, - "break": 111, - "default": 21, - "field.slice": 1, - "OutgoingMessage": 5, - "this.output": 3, - "this.outputEncodings": 2, - "this.writable": 1, - "this._last": 3, - "this.chunkedEncoding": 6, - "this.shouldKeepAlive": 4, - "this.useChunkedEncodingByDefault": 4, - "this.sendDate": 3, - "this._hasBody": 6, - "this._trailer": 5, - "this.finished": 4, - "exports.OutgoingMessage": 1, - "OutgoingMessage.prototype.destroy": 1, - "OutgoingMessage.prototype._send": 1, - "this._headerSent": 5, - "typeof": 132, - "this._header": 10, - "this.output.unshift": 1, - "this.outputEncodings.unshift": 1, - "this._writeRaw": 2, - "OutgoingMessage.prototype._writeRaw": 1, - "data.length": 3, - "this.connection._httpMessage": 3, - "this.connection.writable": 3, - "this.output.length": 5, - "this._buffer": 2, - "c": 775, - "this.output.shift": 2, - "this.outputEncodings.shift": 2, - "this.connection.write": 4, - "OutgoingMessage.prototype._buffer": 1, - "length": 48, - "this.output.push": 2, - "this.outputEncodings.push": 2, - "lastEncoding": 2, - "lastData": 2, - "data.constructor": 1, - "lastData.constructor": 1, - "OutgoingMessage.prototype._storeHeader": 1, - "firstLine": 2, - "sentConnectionHeader": 3, - "sentContentLengthHeader": 4, - "sentTransferEncodingHeader": 3, - "sentDateHeader": 3, - "sentExpect": 3, - "messageHeader": 7, - "store": 3, - "connectionExpression.test": 1, - "closeExpression.test": 1, - "self._last": 4, - "self.shouldKeepAlive": 4, - "transferEncodingExpression.test": 1, - "chunkExpression.test": 1, - "self.chunkedEncoding": 1, - "contentLengthExpression.test": 1, - "dateExpression.test": 1, - "expectExpression.test": 1, - "keys": 11, - "Object.keys": 5, - "isArray": 10, - "Array.isArray": 7, - "l": 312, - "keys.length": 5, - "j": 265, - "value.length": 1, - "shouldSendKeepAlive": 2, - "this.agent": 2, - "this._send": 8, - "OutgoingMessage.prototype.setHeader": 1, - "arguments.length": 18, - "throw": 27, - "Error": 16, - "name.toLowerCase": 6, - "this._headerNames": 5, - "OutgoingMessage.prototype.getHeader": 1, - "OutgoingMessage.prototype.removeHeader": 1, - "delete": 39, - "OutgoingMessage.prototype._renderHeaders": 1, - "OutgoingMessage.prototype.write": 1, - "this._implicitHeader": 2, - "TypeError": 2, - "chunk.length": 2, - "ret": 62, - "Buffer.byteLength": 2, - "len.toString": 2, - "OutgoingMessage.prototype.addTrailers": 1, - "OutgoingMessage.prototype.end": 1, - "hot": 3, - ".toString": 3, - "this.write": 1, - "Last": 2, - "chunk.": 1, - "this._finish": 2, - "OutgoingMessage.prototype._finish": 1, - "instanceof": 19, - "ServerResponse": 5, - "DTRACE_HTTP_SERVER_RESPONSE": 1, - "ClientRequest": 6, - "DTRACE_HTTP_CLIENT_REQUEST": 1, - "OutgoingMessage.prototype._flush": 1, - "this.socket.writable": 2, - "XXX": 1, - "Necessary": 1, - "this.socket.write": 1, - "req": 32, - "OutgoingMessage.call": 2, - "req.method": 5, - "req.httpVersionMajor": 2, - "req.httpVersionMinor": 2, - "exports.ServerResponse": 1, - "ServerResponse.prototype.statusCode": 1, - "onServerResponseClose": 3, - "this._httpMessage.emit": 2, - "ServerResponse.prototype.assignSocket": 1, - "socket._httpMessage": 9, - "socket.on": 2, - "this._flush": 1, - "ServerResponse.prototype.detachSocket": 1, - "socket.removeListener": 5, - "ServerResponse.prototype.writeContinue": 1, - "this._sent100": 2, - "ServerResponse.prototype._implicitHeader": 1, - "this.writeHead": 1, - "ServerResponse.prototype.writeHead": 1, - "statusCode": 7, - "reasonPhrase": 4, - "headerIndex": 4, - "obj": 40, - "this._renderHeaders": 3, - "obj.length": 1, - "obj.push": 1, - "statusLine": 2, - "statusCode.toString": 1, - "this._expect_continue": 1, - "this._storeHeader": 2, - "ServerResponse.prototype.writeHeader": 1, - "this.writeHead.apply": 1, - "Agent": 5, - "self.options": 2, - "self.requests": 6, - "self.sockets": 3, - "self.maxSockets": 1, - "self.options.maxSockets": 1, - "Agent.defaultMaxSockets": 2, - "self.on": 1, - "host": 29, - "port": 29, - "localAddress": 15, - ".shift": 1, - ".onSocket": 1, - "socket.destroy": 10, - "self.createConnection": 2, - "net.createConnection": 3, - "exports.Agent": 1, - "Agent.prototype.defaultPort": 1, - "Agent.prototype.addRequest": 1, - "this.sockets": 9, - "this.maxSockets": 1, - "req.onSocket": 1, - "this.createSocket": 2, - "this.requests": 5, - "Agent.prototype.createSocket": 1, - "util._extend": 1, - "options.port": 4, - "options.host": 4, - "options.localAddress": 3, - "s": 290, - "onFree": 3, - "self.emit": 9, - "s.on": 4, - "onClose": 3, - "err": 5, - "self.removeSocket": 2, - "onRemove": 3, - "s.removeListener": 3, - "Agent.prototype.removeSocket": 1, - "index": 5, - ".indexOf": 2, - ".splice": 5, - ".emit": 1, - "globalAgent": 3, - "exports.globalAgent": 1, - "cb": 16, - "self.agent": 3, - "options.agent": 3, - "defaultPort": 3, - "options.defaultPort": 1, - "options.hostname": 1, - "options.setHost": 1, - "setHost": 2, - "self.socketPath": 4, - "options.socketPath": 1, - "method": 30, - "self.method": 3, - "options.method": 2, - ".toUpperCase": 3, - "self.path": 3, - "options.path": 2, - "self.once": 2, - "options.headers": 7, - "self.setHeader": 1, - "this.getHeader": 2, - "hostHeader": 3, - "this.setHeader": 2, - "options.auth": 2, - "//basic": 1, - "auth": 1, - "Buffer": 1, - "self.useChunkedEncodingByDefault": 2, - "self._storeHeader": 2, - "self.getHeader": 1, - "self._renderHeaders": 1, - "options.createConnection": 4, - "self.onSocket": 3, - "self.agent.addRequest": 1, - "conn": 3, - "self._deferToConnect": 1, - "self._flush": 1, - "exports.ClientRequest": 1, - "ClientRequest.prototype._implicitHeader": 1, - "this.path": 1, - "ClientRequest.prototype.abort": 1, - "this._deferToConnect": 3, - "createHangUpError": 3, - "error.code": 1, - "freeParser": 9, - "parser.socket.onend": 1, - "parser.socket.ondata": 1, - "parser.socket.parser": 1, - "parsers.free": 1, - "req.parser": 1, - "socketCloseListener": 2, - "socket.parser": 3, - "req.emit": 8, - "req.res": 8, - "req.res.readable": 1, - "req.res.emit": 1, - "res": 14, - "req.res._emitPending": 1, - "res._emitEnd": 1, - "res.emit": 1, - "req._hadError": 3, - "parser.finish": 6, - "socketErrorListener": 2, - "err.message": 1, - "err.stack": 1, - "socketOnEnd": 1, - "this._httpMessage": 3, - "this.parser": 2, - "socketOnData": 1, - "end": 14, - "parser.execute": 2, - "bytesParsed": 4, - "socket.ondata": 3, - "socket.onend": 3, - "bodyHead": 4, - "d.slice": 2, - "eventName": 21, - "req.listeners": 1, - "req.upgradeOrConnect": 1, - "socket.emit": 1, - "parserOnIncomingClient": 1, - "shouldKeepAlive": 4, - "res.upgrade": 1, - "skip": 5, - "isHeadResponse": 2, - "res.statusCode": 1, - "Clear": 1, - "so": 8, - "we": 25, - "don": 5, - "continue": 18, - "ve": 3, - "been": 5, - "upgraded": 1, - "via": 2, - "WebSockets": 1, - "also": 5, - "shouldn": 2, - "AGENT": 2, - "socket.destroySoon": 2, - "keep": 1, - "alive": 1, - "close": 2, - "free": 1, - "number": 13, - "an": 12, - "important": 1, - "promisy": 1, - "thing": 2, - "all": 16, - "the": 107, - "onSocket": 3, - "self.socket.writable": 1, - "self.socket": 5, - ".apply": 7, - "arguments_": 2, - "self.socket.once": 1, - "ClientRequest.prototype.setTimeout": 1, - "msecs": 4, - "this.once": 2, - "emitTimeout": 4, - "this.socket.setTimeout": 1, - "this.socket.once": 1, - "this.setTimeout": 3, - "sock": 1, - "ClientRequest.prototype.setNoDelay": 1, - "ClientRequest.prototype.setSocketKeepAlive": 1, - "ClientRequest.prototype.clearTimeout": 1, - "exports.request": 2, - "url.parse": 1, - "options.protocol": 3, - "exports.get": 1, - "req.end": 1, - "ondrain": 3, - "httpSocketSetup": 2, - "Server": 6, - "requestListener": 6, - "net.Server.call": 1, - "allowHalfOpen": 1, - "this.addListener": 2, - "this.httpAllowHalfOpen": 1, - "connectionListener": 3, - "net.Server": 1, - "exports.Server": 1, - "exports.createServer": 1, - "outgoing": 2, - "incoming": 2, - "abortIncoming": 3, - "incoming.length": 2, - "incoming.shift": 2, - "serverSocketCloseListener": 3, - "socket.setTimeout": 1, - "*": 70, - "minute": 1, - "timeout": 2, - "socket.once": 1, - "parsers.alloc": 1, - "parser.reinitialize": 1, - "this.maxHeadersCount": 2, - "<<": 4, - "socket.addListener": 2, - "self.listeners": 2, - "req.socket": 1, - "self.httpAllowHalfOpen": 1, - "socket.writable": 2, - "socket.end": 2, - "outgoing.length": 2, - "._last": 1, - "socket._httpMessage._last": 1, - "incoming.push": 1, - "res.shouldKeepAlive": 1, - "DTRACE_HTTP_SERVER_REQUEST": 1, - "outgoing.push": 1, - "res.assignSocket": 1, - "res.on": 1, - "res.detachSocket": 1, - "res._last": 1, - "m": 76, - "outgoing.shift": 1, - "m.assignSocket": 1, - "req.headers": 2, - "continueExpression.test": 1, - "res._expect_continue": 1, - "res.writeContinue": 1, - "Not": 4, - "a": 1489, - "response.": 1, - "even": 3, - "exports._connectionListener": 1, - "Client": 6, - "this.host": 1, - "this.port": 1, - "maxSockets": 1, - "Client.prototype.request": 1, - "path": 5, - "self.host": 1, - "self.port": 1, - "c.on": 2, - "exports.Client": 1, - "module.deprecate": 2, - "exports.createClient": 1, - "cubes": 4, - "list": 21, - "math": 4, - "num": 23, - "opposite": 6, - "race": 4, - "square": 10, - "__slice": 2, - "Array.prototype.slice": 6, - "root": 5, - "Math.sqrt": 2, - "cube": 2, - "runners": 6, - "winner": 6, - "__slice.call": 2, - "print": 2, - "elvis": 4, - "_i": 10, - "_len": 6, - "_results": 6, - "list.length": 5, - "_results.push": 2, - "math.cube": 2, - ".slice": 6, - "A": 24, - "w": 110, - "ma": 3, - "c.isReady": 4, - "try": 44, - "s.documentElement.doScroll": 2, - "catch": 38, - "c.ready": 7, - "Qa": 1, - "b.src": 4, - "c.ajax": 1, - "async": 5, - "dataType": 6, - "c.globalEval": 1, - "b.text": 3, - "b.textContent": 2, - "b.innerHTML": 3, - "b.parentNode": 4, - "b.parentNode.removeChild": 2, - "X": 6, - "f": 666, - "a.length": 23, - "o": 322, - "c.isFunction": 9, - "d.call": 3, - "J": 5, - ".getTime": 3, - "Y": 3, - "Z": 6, - "na": 1, - ".type": 2, - "c.event.handle.apply": 1, - "oa": 1, - "r": 261, - "c.data": 12, - "a.liveFired": 4, - "i.live": 1, - "a.button": 2, - "a.type": 14, - "u": 304, - "i.live.slice": 1, - "u.length": 3, - "i.origType.replace": 1, - "O": 6, - "f.push": 5, - "i.selector": 3, - "u.splice": 1, - "a.target": 5, - ".closest": 4, - "a.currentTarget": 4, - "j.length": 2, - ".selector": 1, - ".elem": 1, - "i.preType": 2, - "a.relatedTarget": 2, - "d.push": 1, - "elem": 101, - "handleObj": 2, - "d.length": 8, - "j.elem": 2, - "a.data": 2, - "j.handleObj.data": 1, - "a.handleObj": 2, - "j.handleObj": 1, - "j.handleObj.origHandler.apply": 1, - "pa": 1, - "b.replace": 3, - "/": 290, - "./g": 2, - ".replace": 38, - "/g": 37, - "qa": 1, - "a.parentNode": 6, - "a.parentNode.nodeType": 2, - "ra": 1, - "b.each": 1, - "this.nodeName": 4, - ".nodeName": 2, - "f.events": 1, - "e.handle": 2, - "e.events": 2, - "c.event.add": 1, - ".data": 3, - "sa": 2, - ".ownerDocument": 5, - "ta.test": 1, - "c.support.checkClone": 2, - "ua.test": 1, - "c.fragments": 2, - "b.createDocumentFragment": 1, - "c.clean": 1, - "fragment": 27, - "cacheable": 2, - "K": 4, - "c.each": 2, - "va.concat.apply": 1, - "va.slice": 1, - "wa": 1, - "a.document": 3, - "a.nodeType": 27, - "a.defaultView": 2, - "a.parentWindow": 2, - "c.fn.init": 1, - "Ra": 2, - "A.jQuery": 3, - "Sa": 2, - "A.": 3, - "A.document": 1, - "T": 4, - "Ta": 1, - "<[\\w\\W]+>": 4, - "|": 206, - "#": 13, - "Ua": 1, - ".": 91, - "Va": 1, - "S/": 4, - "Wa": 2, - "u00A0": 2, - "Xa": 1, - "<(\\w+)\\s*\\/?>": 4, - "<\\/\\1>": 4, - "P": 4, - "navigator.userAgent": 3, - "xa": 3, - "Q": 6, - "L": 10, - "Object.prototype.toString": 7, - "aa": 1, - "ba": 3, - "Array.prototype.push": 4, - "R": 2, - "ya": 2, - "Array.prototype.indexOf": 4, - "c.fn": 2, - "c.prototype": 1, - "init": 7, - "this.context": 17, - "this.length": 40, - "s.body": 2, - "this.selector": 16, - "Ta.exec": 1, - "b.ownerDocument": 6, - "Xa.exec": 1, - "c.isPlainObject": 3, - "s.createElement": 10, - "c.fn.attr.call": 1, - "f.createElement": 1, - "a.cacheable": 1, - "a.fragment.cloneNode": 1, - "a.fragment": 1, - ".childNodes": 2, - "c.merge": 4, - "s.getElementById": 1, - "b.id": 1, - "T.find": 1, - "/.test": 19, - "s.getElementsByTagName": 2, - "b.jquery": 1, - ".find": 5, - "T.ready": 1, - "a.selector": 4, - "a.context": 2, - "c.makeArray": 3, - "selector": 40, - "jquery": 3, - "size": 6, - "toArray": 2, - "R.call": 2, - "get": 24, - "this.toArray": 3, - "this.slice": 5, - "pushStack": 4, - "c.isArray": 5, - "ba.apply": 1, - "f.prevObject": 1, - "f.context": 1, - "f.selector": 2, - "each": 17, - "ready": 31, - "c.bindReady": 1, - "a.call": 17, - "Q.push": 1, - "eq": 2, - "first": 10, - "this.eq": 4, - "last": 6, - "this.pushStack": 12, - "R.apply": 1, - ".join": 14, - "map": 7, - "c.map": 1, - "this.prevObject": 3, - "push": 11, - "sort": 4, - ".sort": 9, - "splice": 5, - "c.fn.init.prototype": 1, - "c.extend": 7, - "c.fn.extend": 4, - "noConflict": 4, - "isReady": 5, - "c.fn.triggerHandler": 1, - ".triggerHandler": 1, - "bindReady": 5, - "s.readyState": 2, - "s.addEventListener": 3, - "A.addEventListener": 1, - "s.attachEvent": 3, - "A.attachEvent": 1, - "A.frameElement": 1, - "isFunction": 12, - "isPlainObject": 4, - "a.setInterval": 2, - "a.constructor": 2, - "aa.call": 3, - "a.constructor.prototype": 2, - "isEmptyObject": 7, - "parseJSON": 4, - "c.trim": 3, - "a.replace": 7, - "@": 1, - "d*": 8, - "eE": 4, - "s*": 15, - "A.JSON": 1, - "A.JSON.parse": 2, - "Function": 3, - "c.error": 2, - "noop": 3, - "globalEval": 2, - "Va.test": 1, - "s.documentElement": 2, - "d.type": 2, - "c.support.scriptEval": 2, - "d.appendChild": 3, - "s.createTextNode": 2, - "d.text": 1, - "b.insertBefore": 3, - "b.firstChild": 5, - "b.removeChild": 3, - "nodeName": 20, - "a.nodeName": 12, - "a.nodeName.toUpperCase": 2, - "b.toUpperCase": 3, - "b.apply": 2, - "b.call": 4, - "trim": 5, - "makeArray": 3, - "ba.call": 1, - "inArray": 5, - "b.indexOf": 2, - "b.length": 12, - "merge": 2, - "grep": 6, - "f.length": 5, - "f.concat.apply": 1, - "guid": 5, - "proxy": 4, - "a.apply": 2, - "b.guid": 2, - "a.guid": 7, - "c.guid": 1, - "uaMatch": 3, - "a.toLowerCase": 4, - "webkit": 6, - "w.": 17, - "/.exec": 4, - "opera": 4, - ".*version": 4, - "msie": 4, - "/compatible/.test": 1, - "mozilla": 4, - ".*": 20, - "rv": 4, - "browser": 11, - "version": 10, - "c.uaMatch": 1, - "P.browser": 2, - "c.browser": 1, - "c.browser.version": 1, - "P.version": 1, - "c.browser.webkit": 1, - "c.browser.safari": 1, - "c.inArray": 2, - "ya.call": 1, - "s.removeEventListener": 1, - "s.detachEvent": 1, - "c.support": 2, - "d.style.display": 5, - "d.innerHTML": 2, - "d.getElementsByTagName": 6, - "e.length": 9, - "leadingWhitespace": 3, - "d.firstChild.nodeType": 1, - "tbody": 7, - "htmlSerialize": 3, - "style": 30, - "/red/.test": 1, - "j.getAttribute": 2, - "hrefNormalized": 3, - "opacity": 13, - "j.style.opacity": 1, - "cssFloat": 4, - "j.style.cssFloat": 1, - "checkOn": 4, - ".value": 1, - "optSelected": 3, - ".appendChild": 1, - ".selected": 1, - "parentNode": 10, - "d.removeChild": 1, - ".parentNode": 7, - "deleteExpando": 3, - "checkClone": 1, - "scriptEval": 1, - "noCloneEvent": 3, - "boxModel": 1, - "b.type": 4, - "b.appendChild": 1, - "a.insertBefore": 2, - "a.firstChild": 6, - "b.test": 1, - "c.support.deleteExpando": 2, - "a.removeChild": 2, - "d.attachEvent": 2, - "d.fireEvent": 1, - "c.support.noCloneEvent": 1, - "d.detachEvent": 1, - "d.cloneNode": 1, - ".fireEvent": 3, - "s.createDocumentFragment": 1, - "a.appendChild": 3, - "d.firstChild": 2, - "a.cloneNode": 3, - ".cloneNode": 4, - ".lastChild.checked": 2, - "k.style.width": 1, - "k.style.paddingLeft": 1, - "s.body.appendChild": 1, - "c.boxModel": 1, - "c.support.boxModel": 1, - "k.offsetWidth": 1, - "s.body.removeChild": 1, - ".style.display": 5, - "n.setAttribute": 1, - "c.support.submitBubbles": 1, - "c.support.changeBubbles": 1, - "c.props": 2, - "readonly": 3, - "maxlength": 2, - "cellspacing": 2, - "rowspan": 2, - "colspan": 2, - "tabindex": 4, - "usemap": 2, - "frameborder": 2, - "G": 11, - "Ya": 2, - "za": 3, - "cache": 45, - "expando": 14, - "noData": 3, - "embed": 3, - "applet": 2, - "c.noData": 2, - "a.nodeName.toLowerCase": 3, - "c.cache": 2, - "removeData": 8, - "c.isEmptyObject": 1, - "c.removeData": 2, - "c.expando": 2, - "a.removeAttribute": 3, - "this.each": 42, - "a.split": 4, - "this.triggerHandler": 6, - "this.trigger": 2, - ".each": 3, - "queue": 7, - "dequeue": 6, - "c.queue": 3, - "d.shift": 2, - "d.unshift": 2, - "f.call": 1, - "c.dequeue": 4, - "delay": 4, - "c.fx": 1, - "c.fx.speeds": 1, - "this.queue": 4, - "clearQueue": 2, - "Aa": 3, - "t": 436, - "ca": 6, - "Za": 2, - "r/g": 2, - "/href": 1, - "src": 7, - "style/": 1, - "ab": 1, - "button": 24, - "input": 25, - "/i": 22, - "bb": 2, - "select": 20, - "textarea": 8, - "area": 2, - "Ba": 3, - "/radio": 1, - "checkbox/": 1, - "attr": 13, - "c.attr": 4, - "removeAttr": 5, - "this.nodeType": 4, - "this.removeAttribute": 1, - "addClass": 2, - "r.addClass": 1, - "r.attr": 1, - ".split": 19, - "e.nodeType": 7, - "e.className": 14, - "j.indexOf": 1, - "removeClass": 2, - "n.removeClass": 1, - "n.attr": 1, - "j.replace": 2, - "toggleClass": 2, - "j.toggleClass": 1, - "j.attr": 1, - "i.hasClass": 1, - "this.className": 10, - "hasClass": 2, - "": 1, - "className": 4, - "replace": 8, - "indexOf": 5, - "val": 13, - "c.nodeName": 4, - "b.attributes.value": 1, - ".specified": 1, - "b.value": 4, - "b.selectedIndex": 2, - "b.options": 1, - "": 1, - "i=": 31, - "selected": 5, - "a=": 23, - "test": 21, - "type": 49, - "support": 13, - "getAttribute": 3, - "on": 37, - "o=": 13, - "n=": 10, - "r=": 18, - "nodeType=": 6, - "call": 9, - "checked=": 1, - "this.selected": 1, - ".val": 5, - "this.selectedIndex": 1, - "this.value": 4, - "attrFn": 2, - "css": 7, - "html": 10, - "text": 14, - "width": 32, - "height": 25, - "offset": 21, - "c.attrFn": 1, - "c.isXMLDoc": 1, - "a.test": 2, - "ab.test": 1, - "a.getAttributeNode": 7, - ".nodeValue": 1, - "b.specified": 2, - "bb.test": 2, - "cb.test": 1, - "a.href": 2, - "c.support.style": 1, - "a.style.cssText": 3, - "a.setAttribute": 7, - "c.support.hrefNormalized": 1, - "a.getAttribute": 11, - "c.style": 1, - "db": 1, - "handle": 15, - "click": 11, - "events": 18, - "altKey": 4, - "attrChange": 4, - "attrName": 4, - "bubbles": 4, - "cancelable": 4, - "charCode": 7, - "clientX": 6, - "clientY": 5, - "ctrlKey": 6, - "currentTarget": 4, - "detail": 3, - "eventPhase": 4, - "fromElement": 6, - "handler": 14, - "keyCode": 6, - "layerX": 3, - "layerY": 3, - "metaKey": 5, - "newValue": 3, - "offsetX": 4, - "offsetY": 4, - "originalTarget": 1, - "pageX": 4, - "pageY": 4, - "prevValue": 3, - "relatedNode": 4, - "relatedTarget": 6, - "screenX": 4, - "screenY": 4, - "shiftKey": 4, - "srcElement": 5, - "toElement": 5, - "view": 4, - "wheelDelta": 3, - "which": 8, - "mouseover": 12, - "mouseout": 12, - "form": 12, - "click.specialSubmit": 2, - "submit": 14, - "image": 5, - "keypress.specialSubmit": 2, - "password": 5, - ".specialSubmit": 2, - "radio": 17, - "checkbox": 14, - "multiple": 7, - "_change_data": 6, - "focusout": 11, - "change": 16, - "file": 5, - ".specialChange": 4, - "focusin": 9, - "bind": 3, - "one": 15, - "unload": 5, - "live": 8, - "lastToggle": 4, - "die": 3, - "hover": 3, - "mouseenter": 9, - "mouseleave": 9, - "focus": 7, - "blur": 8, - "resize": 3, - "scroll": 6, - "dblclick": 3, - "mousedown": 3, - "mouseup": 3, - "mousemove": 3, - "keydown": 4, - "keypress": 4, - "keyup": 3, - "onunload": 1, - "g": 441, - "h": 499, - "q": 34, - "h.nodeType": 4, - "p": 110, - "y": 101, - "S": 8, - "H": 8, - "M": 9, - "I": 7, - "f.exec": 2, - "p.push": 2, - "p.length": 10, - "r.exec": 1, - "n.relative": 5, - "ga": 2, - "p.shift": 4, - "n.match.ID.test": 2, - "k.find": 6, - "v.expr": 4, - "k.filter": 5, - "v.set": 5, - "expr": 2, - "p.pop": 4, - "set": 22, - "z": 21, - "h.parentNode": 3, - "D": 9, - "k.error": 2, - "j.call": 2, - ".nodeType": 9, - "E": 11, - "l.push": 2, - "l.push.apply": 1, - "k.uniqueSort": 5, - "B": 5, - "g.sort": 1, - "g.length": 2, - "g.splice": 2, - "k.matches": 1, - "n.order.length": 1, - "n.order": 1, - "n.leftMatch": 1, - ".exec": 2, - "q.splice": 1, - "y.substr": 1, - "y.length": 1, - "Syntax": 3, - "unrecognized": 3, - "expression": 4, - "ID": 8, - "NAME": 2, - "TAG": 2, - "u00c0": 2, - "uFFFF": 2, - "leftMatch": 2, - "attrMap": 2, - "attrHandle": 2, - "g.getAttribute": 1, - "relative": 4, - "W/.test": 1, - "h.toLowerCase": 2, - "": 1, - "previousSibling": 5, - "nth": 5, - "odd": 2, - "not": 26, - "reset": 2, - "contains": 8, - "only": 10, - "id": 38, - "class": 5, - "Array": 3, - "sourceIndex": 1, - "div": 28, - "script": 7, - "": 4, - "name=": 2, - "href=": 2, - "": 2, - "

": 2, - "

": 2, - ".TEST": 2, - "
": 3, - "CLASS": 1, - "HTML": 9, - "find": 7, - "filter": 10, - "nextSibling": 3, - "iframe": 3, - "": 1, - "": 1, - "
": 1, - "
": 1, - "": 4, - "
": 5, - "": 3, - "": 3, - "": 2, - "": 2, - "": 1, - "": 1, - "": 1, - "": 1, - "before": 8, - "after": 7, - "position": 7, - "absolute": 2, - "top": 12, - "left": 14, - "margin": 8, - "border": 7, - "px": 31, - "solid": 2, - "#000": 2, - "padding": 4, - "": 1, - "": 1, - "fixed": 1, - "marginTop": 3, - "marginLeft": 2, - "using": 5, - "borderTopWidth": 1, - "borderLeftWidth": 1, - "Left": 1, - "Top": 1, - "pageXOffset": 2, - "pageYOffset": 1, - "Height": 1, - "Width": 1, - "inner": 2, - "outer": 2, - "scrollTo": 1, - "CSS1Compat": 1, - "client": 3, - "window": 16, - "document": 26, - "window.document": 2, - "navigator": 3, - "window.navigator": 2, - "location": 2, - "window.location": 5, - "jQuery": 48, - "context": 48, - "The": 9, - "is": 67, - "actually": 2, - "just": 2, - "jQuery.fn.init": 2, - "rootjQuery": 8, - "Map": 4, - "over": 7, - "of": 28, - "overwrite": 4, - "_jQuery": 4, - "window.": 6, - "central": 2, - "reference": 5, - "simple": 3, - "way": 2, - "check": 8, - "strings": 8, - "both": 2, - "optimize": 3, - "quickExpr": 2, - "Check": 10, - "has": 9, - "non": 8, - "whitespace": 7, - "character": 3, - "it": 112, - "rnotwhite": 2, - "Used": 3, - "trimming": 2, - "trimLeft": 4, - "trimRight": 4, - "digits": 3, - "rdigit": 1, - "d/": 3, - "Match": 3, - "standalone": 2, - "tag": 2, - "rsingleTag": 2, - "JSON": 5, - "RegExp": 12, - "rvalidchars": 2, - "rvalidescape": 2, - "rvalidbraces": 2, - "Useragent": 2, - "rwebkit": 2, - "ropera": 2, - "rmsie": 2, - "rmozilla": 2, - "Keep": 2, - "UserAgent": 2, - "use": 10, - "with": 18, - "jQuery.browser": 4, - "userAgent": 3, - "For": 5, - "matching": 3, - "engine": 2, - "and": 42, - "browserMatch": 3, - "deferred": 25, - "used": 13, - "DOM": 21, - "readyList": 6, - "event": 31, - "DOMContentLoaded": 14, - "Save": 2, - "some": 2, - "core": 2, - "methods": 8, - "toString": 4, - "hasOwn": 2, - "String.prototype.trim": 3, - "Class": 2, - "pairs": 2, - "class2type": 3, - "jQuery.fn": 4, - "jQuery.prototype": 2, - "match": 30, - "doc": 4, - "Handle": 14, - "DOMElement": 2, - "selector.nodeType": 2, - "exists": 9, - "once": 4, - "finding": 2, - "Are": 2, - "dealing": 2, - "selector.charAt": 4, - "selector.length": 4, - "Assume": 2, - "are": 18, - "regex": 3, - "quickExpr.exec": 2, - "Verify": 3, - "no": 19, - "was": 6, - "specified": 4, - "#id": 3, - "HANDLE": 2, - "array": 7, - "context.ownerDocument": 2, - "If": 21, - "single": 2, - "passed": 5, - "clean": 3, - "like": 5, - "method.": 3, - "jQuery.fn.init.prototype": 2, - "jQuery.extend": 11, - "jQuery.fn.extend": 4, - "copy": 16, - "copyIsArray": 2, - "clone": 5, - "deep": 12, - "situation": 2, - "boolean": 8, - "when": 20, - "something": 3, - "possible": 3, - "jQuery.isFunction": 6, - "extend": 13, - "itself": 4, - "argument": 2, - "Only": 5, - "deal": 2, - "null/undefined": 2, - "values": 10, - "Extend": 2, - "base": 2, - "Prevent": 2, - "never": 2, - "ending": 2, - "loop": 7, - "Recurse": 2, - "bring": 2, - "Return": 2, - "modified": 3, - "Is": 2, - "be": 12, - "Set": 4, - "occurs.": 2, - "counter": 2, - "track": 2, - "how": 2, - "many": 3, - "items": 2, - "wait": 12, - "fires.": 2, - "See": 9, - "#6781": 2, - "readyWait": 6, - "Hold": 2, - "release": 2, - "holdReady": 3, - "hold": 6, - "jQuery.readyWait": 6, - "jQuery.ready": 16, - "Either": 2, - "released": 2, - "DOMready/load": 2, - "yet": 2, - "jQuery.isReady": 6, - "Make": 17, - "sure": 18, - "at": 58, - "least": 4, - "IE": 28, - "gets": 6, - "little": 4, - "overzealous": 4, - "ticket": 4, - "#5443": 4, - "Remember": 2, - "normal": 2, - "Ready": 2, - "fired": 12, - "decrement": 2, - "need": 10, - "there": 6, - "functions": 6, - "bound": 8, - "execute": 4, - "readyList.resolveWith": 1, - "Trigger": 2, - "any": 12, - "jQuery.fn.trigger": 2, - ".trigger": 3, - ".unbind": 4, - "jQuery._Deferred": 3, - "Catch": 2, - "cases": 4, - "where": 2, - ".ready": 2, - "called": 2, - "already": 6, - "occurred.": 2, - "document.readyState": 4, - "asynchronously": 2, - "allow": 6, - "scripts": 2, - "opportunity": 2, - "Mozilla": 2, - "Opera": 2, - "nightlies": 3, - "currently": 4, - "document.addEventListener": 6, - "Use": 7, - "handy": 2, - "fallback": 4, - "window.onload": 4, - "will": 7, - "always": 6, - "work": 6, - "window.addEventListener": 2, - "model": 14, - "document.attachEvent": 6, - "ensure": 2, - "firing": 16, - "onload": 2, - "maybe": 2, - "late": 2, - "but": 4, - "safe": 3, - "iframes": 2, - "window.attachEvent": 2, - "frame": 23, - "continually": 2, - "see": 6, - "toplevel": 7, - "window.frameElement": 2, - "document.documentElement.doScroll": 4, - "doScrollCheck": 6, - "test/unit/core.js": 2, - "details": 3, - "concerning": 2, - "isFunction.": 2, - "Since": 3, - "aren": 5, - "pass": 7, - "through": 3, - "as": 11, - "well": 2, - "jQuery.type": 4, - "obj.nodeType": 2, - "jQuery.isWindow": 2, - "own": 4, - "property": 15, - "must": 4, - "Object": 4, - "obj.constructor": 2, - "hasOwn.call": 6, - "obj.constructor.prototype": 2, - "Own": 2, - "properties": 7, - "enumerated": 2, - "firstly": 2, - "speed": 4, - "up": 4, - "then": 8, - "own.": 2, - "msg": 4, - "leading/trailing": 2, - "removed": 3, - "can": 10, - "breaking": 1, - "spaces": 3, - "rnotwhite.test": 2, - "xA0": 7, - "document.removeEventListener": 2, - "document.detachEvent": 2, - "trick": 2, - "Diego": 2, - "Perini": 2, - "http": 6, - "//javascript.nwbox.com/IEContentLoaded/": 2, - "waiting": 2, - "Promise": 1, - "promiseMethods": 3, - "Static": 1, - "sliceDeferred": 1, - "Create": 1, - "callbacks": 10, - "_Deferred": 4, - "stored": 4, - "args": 31, - "avoid": 5, - "doing": 3, - "flag": 1, - "know": 3, - "cancelled": 5, - "done": 10, - "f1": 1, - "f2": 1, - "...": 1, - "_fired": 5, - "args.length": 3, - "deferred.done.apply": 2, - "callbacks.push": 1, - "deferred.resolveWith": 5, - "resolve": 7, - "given": 3, - "resolveWith": 4, - "make": 2, - "available": 1, - "#8421": 1, - "callbacks.shift": 1, - "finally": 3, - "Has": 1, - "resolved": 1, - "isResolved": 3, - "Cancel": 1, - "cancel": 6, - "Full": 1, - "fledged": 1, - "two": 1, - "Deferred": 5, - "func": 3, - "failDeferred": 1, - "promise": 14, - "Add": 4, - "errorDeferred": 1, - "doneCallbacks": 2, - "failCallbacks": 2, - "deferred.done": 2, - ".fail": 2, - ".fail.apply": 1, - "fail": 10, - "failDeferred.done": 1, - "rejectWith": 2, - "failDeferred.resolveWith": 1, - "reject": 4, - "failDeferred.resolve": 1, - "isRejected": 2, - "failDeferred.isResolved": 1, - "pipe": 2, - "fnDone": 2, - "fnFail": 2, - "jQuery.Deferred": 1, - "newDefer": 3, - "jQuery.each": 2, - "fn": 14, - "action": 3, - "returned": 4, - "fn.apply": 1, - "returned.promise": 2, - ".then": 3, - "newDefer.resolve": 1, - "newDefer.reject": 1, - ".promise": 5, - "Get": 4, - "provided": 1, - "aspect": 1, - "added": 1, - "promiseMethods.length": 1, - "failDeferred.cancel": 1, - "deferred.cancel": 2, - "Unexpose": 1, - "Call": 1, - "func.call": 1, - "helper": 1, - "firstParam": 6, - "count": 4, - "<=>": 1, - "1": 97, - "resolveFunc": 2, - "sliceDeferred.call": 2, - "Strange": 1, - "bug": 3, - "FF4": 1, - "Values": 1, - "changed": 3, - "onto": 2, - "sometimes": 1, - "outside": 2, - ".when": 1, - "Cloning": 2, - "into": 2, - "fresh": 1, - "solves": 1, - "issue": 1, - "deferred.reject": 1, - "deferred.promise": 1, - "jQuery.support": 1, - "document.createElement": 26, - "documentElement": 2, - "document.documentElement": 2, - "opt": 2, - "marginDiv": 5, - "bodyStyle": 1, - "tds": 6, - "isSupported": 7, - "Preliminary": 1, - "tests": 48, - "div.setAttribute": 1, - "div.innerHTML": 7, - "div.getElementsByTagName": 6, - "Can": 2, - "automatically": 2, - "inserted": 1, - "insert": 1, - "them": 3, - "empty": 3, - "tables": 1, - "link": 2, - "elements": 9, - "serialized": 3, - "correctly": 1, - "innerHTML": 1, - "This": 3, - "requires": 1, - "wrapper": 1, - "information": 5, - "from": 7, - "uses": 3, - ".cssText": 2, - "instead": 6, - "/top/.test": 2, - "URLs": 1, - "optgroup": 5, - "opt.selected": 1, - "Test": 3, - "setAttribute": 1, - "camelCase": 3, - "class.": 1, - "works": 1, - "attrFixes": 1, - "get/setAttribute": 1, - "ie6/7": 1, - "getSetAttribute": 3, - "div.className": 1, - "Will": 2, - "defined": 3, - "later": 1, - "submitBubbles": 3, - "changeBubbles": 3, - "focusinBubbles": 2, - "inlineBlockNeedsLayout": 3, - "shrinkWrapBlocks": 2, - "reliableMarginRight": 2, - "checked": 4, - "status": 3, - "properly": 2, - "cloned": 1, - "input.checked": 1, - "support.noCloneChecked": 1, - "input.cloneNode": 1, - ".checked": 2, - "inside": 3, - "disabled": 11, - "selects": 1, - "Fails": 2, - "Internet": 1, - "Explorer": 1, - "div.test": 1, - "support.deleteExpando": 1, - "div.addEventListener": 1, - "div.attachEvent": 2, - "div.fireEvent": 1, - "node": 23, - "being": 2, - "appended": 2, - "input.value": 5, - "input.setAttribute": 5, - "support.radioValue": 2, - "div.appendChild": 4, - "document.createDocumentFragment": 3, - "fragment.appendChild": 2, - "div.firstChild": 3, - "WebKit": 9, - "doesn": 2, - "inline": 3, - "display": 7, - "none": 4, - "GC": 2, - "references": 1, - "across": 1, - "JS": 7, - "boundary": 1, - "isNode": 11, - "elem.nodeType": 8, - "nodes": 14, - "global": 5, - "attached": 1, - "directly": 2, - "occur": 1, - "jQuery.cache": 3, - "defining": 1, - "objects": 7, - "its": 2, - "allows": 1, - "code": 2, - "shortcut": 1, - "same": 1, - "jQuery.expando": 12, - "Avoid": 1, - "more": 6, - "than": 3, - "trying": 1, - "pvt": 8, - "internalKey": 12, - "getByName": 3, - "unique": 2, - "since": 1, - "their": 3, - "ends": 1, - "jQuery.uuid": 1, - "TODO": 2, - "hack": 2, - "ONLY.": 2, - "Avoids": 2, - "exposing": 2, - "metadata": 2, - "plain": 2, - "JSON.stringify": 4, - ".toJSON": 4, - "jQuery.noop": 2, - "An": 1, - "jQuery.data": 15, - "key/value": 1, - "pair": 1, - "shallow": 1, - "copied": 1, - "existing": 1, - "thisCache": 15, - "Internal": 1, - "separate": 1, - "destroy": 1, - "unless": 2, - "internal": 8, - "had": 1, - "isEmptyDataObject": 3, - "internalCache": 3, - "Browsers": 1, - "deletion": 1, - "refuse": 1, - "expandos": 2, - "other": 3, - "browsers": 2, - "faster": 1, - "iterating": 1, - "persist": 1, - "existed": 1, - "Otherwise": 2, - "eliminate": 2, - "lookups": 2, - "entries": 2, - "longer": 2, - "exist": 2, - "does": 9, - "us": 2, - "nor": 2, - "have": 6, - "removeAttribute": 3, - "Document": 2, - "these": 2, - "jQuery.support.deleteExpando": 3, - "elem.removeAttribute": 6, - "only.": 2, - "_data": 3, - "determining": 3, - "acceptData": 3, - "elem.nodeName": 2, - "jQuery.noData": 2, - "elem.nodeName.toLowerCase": 2, - "elem.getAttribute": 7, - ".attributes": 2, - "attr.length": 2, - ".name": 3, - "name.indexOf": 2, - "jQuery.camelCase": 6, - "name.substring": 2, - "dataAttr": 6, - "parts": 28, - "key.split": 2, - "Try": 4, - "fetch": 4, - "internally": 5, - "jQuery.removeData": 2, - "nothing": 2, - "found": 10, - "HTML5": 3, - "attribute": 5, - "key.replace": 2, - "rmultiDash": 3, - ".toLowerCase": 7, - "jQuery.isNaN": 1, - "parseFloat": 30, - "rbrace.test": 2, - "jQuery.parseJSON": 2, - "isn": 2, - "option.selected": 2, - "jQuery.support.optDisabled": 2, - "option.disabled": 2, - "option.getAttribute": 2, - "option.parentNode.disabled": 2, - "jQuery.nodeName": 3, - "option.parentNode": 2, - "specific": 2, - "We": 6, - "get/set": 2, - "attributes": 14, - "comment": 3, - "nType": 8, - "jQuery.attrFn": 2, - "Fallback": 2, - "prop": 24, - "supported": 2, - "jQuery.prop": 2, - "hooks": 14, - "notxml": 8, - "jQuery.isXMLDoc": 2, - "Normalize": 1, - "needed": 2, - "jQuery.attrFix": 2, - "jQuery.attrHooks": 2, - "boolHook": 3, - "rboolean.test": 4, - "value.toLowerCase": 2, - "formHook": 3, - "forms": 1, - "certain": 2, - "characters": 6, - "rinvalidChar.test": 1, - "jQuery.removeAttr": 2, - "hooks.set": 2, - "elem.setAttribute": 2, - "hooks.get": 2, - "Non": 3, - "existent": 2, - "normalize": 2, - "propName": 8, - "jQuery.support.getSetAttribute": 1, - "jQuery.attr": 2, - "elem.removeAttributeNode": 1, - "elem.getAttributeNode": 1, - "corresponding": 2, - "jQuery.propFix": 2, - "attrHooks": 3, - "tabIndex": 4, - "readOnly": 2, - "htmlFor": 2, - "maxLength": 2, - "cellSpacing": 2, - "cellPadding": 2, - "rowSpan": 2, - "colSpan": 2, - "useMap": 2, - "frameBorder": 2, - "contentEditable": 2, - "auto": 3, - "&": 13, - "getData": 3, - "setData": 3, - "changeData": 3, - "bubbling": 1, - "live.": 2, - "hasDuplicate": 1, - "baseHasDuplicate": 2, - "rBackslash": 1, - "rNonWord": 1, - "W/": 2, - "Sizzle": 1, - "results": 4, - "seed": 1, - "origContext": 1, - "context.nodeType": 2, - "checkSet": 1, - "extra": 1, - "cur": 6, - "pop": 1, - "prune": 1, - "contextXML": 1, - "Sizzle.isXML": 1, - "soFar": 1, - "Reset": 1, - "cy": 4, - "f.isWindow": 2, - "cv": 2, - "cj": 4, - ".appendTo": 2, - "b.css": 1, - "b.remove": 1, - "ck": 5, - "c.createElement": 12, - "ck.frameBorder": 1, - "ck.width": 1, - "ck.height": 1, - "c.body.appendChild": 1, - "cl": 3, - "ck.createElement": 1, - "ck.contentWindow": 1, - "ck.contentDocument": 1, - ".document": 1, - "cl.write": 1, - "cl.createElement": 1, - "cl.body.appendChild": 1, - "f.css": 24, - "c.body.removeChild": 1, - "cu": 18, - "f.each": 21, - "cp.concat.apply": 1, - "cp.slice": 1, - "ct": 34, - "cq": 3, - "cs": 3, - "f.now": 2, - "ci": 29, - "a.ActiveXObject": 3, - "ch": 58, - "a.XMLHttpRequest": 1, - "a.dataFilter": 2, - "a.dataType": 1, - "a.dataTypes": 2, - "a.converters": 3, - "o.split": 1, - "f.error": 4, - "m.replace": 1, - "a.contents": 1, - "a.responseFields": 1, - "f.shift": 1, - "a.mimeType": 1, - "c.getResponseHeader": 1, - ".test": 1, - "f.unshift": 2, - "b_": 4, - "f.isArray": 8, - "bF.test": 1, - "c.dataTypes": 1, - "h.length": 3, - "bU": 4, - "c.dataTypes.unshift": 1, - "bZ": 3, - "f.isFunction": 21, - "b.toLowerCase": 3, - "bQ": 3, - "h.substr": 1, - "bD": 3, - "bx": 2, - "a.offsetWidth": 6, - "a.offsetHeight": 2, - "bn": 2, - "f.ajax": 3, - "f.globalEval": 2, - "bf": 6, - "bm": 3, - "f.nodeName": 16, - "bl": 3, - "a.getElementsByTagName": 9, - "f.grep": 3, - "a.defaultChecked": 1, - "a.checked": 4, - "bk": 5, - "a.querySelectorAll": 1, - "bj": 3, - "b.nodeType": 6, - "b.clearAttributes": 2, - "b.mergeAttributes": 2, - "b.nodeName.toLowerCase": 1, - "b.outerHTML": 1, - "a.outerHTML": 1, - "b.selected": 1, - "a.defaultSelected": 1, - "b.defaultValue": 1, - "a.defaultValue": 1, - "b.defaultChecked": 1, - "b.checked": 1, - "a.value": 8, - "b.removeAttribute": 3, - "f.expando": 23, - "bi": 27, - "f.hasData": 2, - "f.data": 25, - "d.events": 1, - "f.extend": 23, - "": 1, - "bh": 1, - "table": 6, - "getElementsByTagName": 1, - "0": 220, - "appendChild": 1, - "ownerDocument": 9, - "createElement": 3, - "b=": 25, - "e=": 21, - "nodeType": 1, - "d=": 15, - "W": 3, - "N": 2, - "f._data": 15, - "r.live": 1, - "a.target.disabled": 1, - "a.namespace": 1, - "a.namespace.split": 1, - "r.live.slice": 1, - "s.length": 2, - "g.origType.replace": 1, - "q.push": 1, - "g.selector": 3, - "s.splice": 1, - "m.selector": 1, - "n.test": 2, - "g.namespace": 1, - "m.elem.disabled": 1, - "m.elem": 1, - "g.preType": 3, - "f.contains": 5, - "level": 3, - "m.level": 1, - "": 1, - "e.elem": 2, - "e.handleObj.data": 1, - "e.handleObj": 1, - "e.handleObj.origHandler.apply": 1, - "a.isPropagationStopped": 1, - "e.level": 1, - "a.isImmediatePropagationStopped": 1, - "e.type": 6, - "e.originalEvent": 1, - "e.liveFired": 1, - "f.event.handle.call": 1, - ".preventDefault": 1, - "F": 8, - "f.removeData": 4, - "i.resolve": 1, - "c.replace": 4, - "f.isNaN": 3, - "i.test": 1, - "f.parseJSON": 2, - "a.navigator": 1, - "a.location": 1, - "e.isReady": 1, - "c.documentElement.doScroll": 2, - "e.ready": 6, - "e.fn.init": 1, - "a.jQuery": 2, - "a.": 2, - "d.userAgent": 1, - "C": 4, - "e.fn": 2, - "e.prototype": 1, - "c.body": 4, - "a.charAt": 2, - "i.exec": 1, - "d.ownerDocument": 1, - "n.exec": 1, - "e.isPlainObject": 1, - "e.fn.attr.call": 1, - "k.createElement": 1, - "e.buildFragment": 1, - "j.cacheable": 1, - "e.clone": 1, - "j.fragment": 2, - "e.merge": 3, - "c.getElementById": 1, - "h.id": 1, - "f.find": 2, - "d.jquery": 1, - "e.isFunction": 5, - "f.ready": 1, - "e.makeArray": 1, - "D.call": 4, - "e.isArray": 2, - "C.apply": 1, - "d.prevObject": 1, - "d.context": 2, - "d.selector": 2, - "e.each": 2, - "e.bindReady": 1, - "y.done": 1, - "D.apply": 1, - "e.map": 1, - "e.fn.init.prototype": 1, - "e.extend": 2, - "e.fn.extend": 1, - "": 1, - "f=": 13, - "g=": 15, - "h=": 19, - "jQuery=": 2, - "isReady=": 1, - "y.resolveWith": 1, - "e.fn.trigger": 1, - "e._Deferred": 1, - "c.readyState": 2, - "c.addEventListener": 4, - "a.addEventListener": 4, - "c.attachEvent": 3, - "a.attachEvent": 6, - "a.frameElement": 1, - "isWindow": 2, - "isNaN": 6, - "m.test": 1, - "String": 2, - "A.call": 1, - "e.isWindow": 2, - "B.call": 3, - "e.trim": 1, - "a.JSON": 1, - "a.JSON.parse": 2, - "o.test": 1, - "e.error": 2, - "parseXML": 1, - "a.DOMParser": 1, - "DOMParser": 1, - "d.parseFromString": 1, - "ActiveXObject": 1, - "c.async": 4, - "c.loadXML": 1, - "c.documentElement": 4, - "d.nodeName": 4, - "j.test": 3, - "a.execScript": 1, - "a.eval.call": 1, - "c.apply": 2, - "c.call": 3, - "E.call": 1, - "C.call": 1, - "F.call": 1, - "c.length": 8, - "": 1, - "j=": 14, - "k=": 11, - "h.concat.apply": 1, - "f.concat": 1, - "g.guid": 3, - "e.guid": 3, - "access": 2, - "e.access": 1, - "now": 5, - "s.exec": 1, - "t.exec": 1, - "u.exec": 1, - "a.indexOf": 2, - "v.exec": 1, - "sub": 4, - "a.fn.init": 2, - "a.superclass": 1, - "a.fn": 2, - "a.prototype": 1, - "a.fn.constructor": 1, - "a.sub": 1, - "this.sub": 2, - "e.fn.init.call": 1, - "a.fn.init.prototype": 1, - "e.uaMatch": 1, - "x.browser": 2, - "e.browser": 1, - "e.browser.version": 1, - "x.version": 1, - "e.browser.webkit": 1, - "e.browser.safari": 1, - "c.removeEventListener": 2, - "c.detachEvent": 1, - "": 1, - "c=": 24, - "shift": 1, - "apply": 8, - "h.call": 2, - "g.resolveWith": 3, - "<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>": 1, - "g.reject": 1, - "g.promise": 1, - "f.support": 2, - "a.innerHTML": 7, - "f.appendChild": 1, - "a.firstChild.nodeType": 2, - "e.getAttribute": 2, - "e.style.opacity": 1, - "e.style.cssFloat": 1, - "h.value": 3, - "g.selected": 1, - "a.className": 1, - "h.checked": 2, - "j.noCloneChecked": 1, - "h.cloneNode": 1, - "f.disabled": 1, - "j.optDisabled": 1, - "g.disabled": 1, - "j.deleteExpando": 1, - "a.fireEvent": 1, - "j.noCloneEvent": 1, - "a.detachEvent": 1, - "h.setAttribute": 2, - "j.radioValue": 1, - "c.createDocumentFragment": 1, - "k.appendChild": 1, - "j.checkClone": 1, - "k.cloneNode": 1, - "a.style.width": 1, - "a.style.paddingLeft": 1, - "visibility": 3, - "background": 56, - "l.style": 1, - "l.appendChild": 1, - "j.appendChecked": 1, - "j.boxModel": 1, - "a.style": 8, - "a.style.display": 3, - "a.style.zoom": 1, - "j.inlineBlockNeedsLayout": 1, - "j.shrinkWrapBlocks": 1, - ".offsetHeight": 4, - "j.reliableHiddenOffsets": 1, - "c.defaultView": 2, - "c.defaultView.getComputedStyle": 3, - "i.style.width": 1, - "i.style.marginRight": 1, - "j.reliableMarginRight": 1, - "parseInt": 12, - "marginRight": 2, - ".marginRight": 2, - "l.innerHTML": 1, - "f.boxModel": 1, - "f.support.boxModel": 4, - "uuid": 2, - "f.fn.jquery": 1, - "Math.random": 2, - "D/g": 2, - "hasData": 2, - "f.cache": 5, - "f.acceptData": 4, - "f.uuid": 1, - "f.noop": 4, - "f.camelCase": 5, - ".events": 1, - "f.support.deleteExpando": 3, - "f.noData": 2, - "f.fn.extend": 9, - "g.indexOf": 2, - "g.substring": 1, - "b.triggerHandler": 2, - "_mark": 2, - "_unmark": 3, - "f.makeArray": 5, - "e.push": 3, - "f.queue": 3, - "c.shift": 2, - "c.unshift": 1, - "f.dequeue": 4, - "f.fx": 2, - "f.fx.speeds": 1, - "d.resolveWith": 1, - "f.Deferred": 2, - "f._Deferred": 2, - "l.done": 1, - "d.promise": 1, - "rea": 1, - "autofocus": 1, - "autoplay": 1, - "controls": 1, - "defer": 1, - "required": 1, - "scoped": 1, - "f.access": 3, - "f.attr": 2, - "f.removeAttr": 3, - "f.prop": 2, - "removeProp": 1, - "f.propFix": 6, - "c.addClass": 1, - "f.trim": 2, - "c.removeClass": 1, - "g.nodeType": 6, - "g.className": 4, - "h.replace": 2, - "d.toggleClass": 1, - "d.attr": 1, - "h.hasClass": 1, - "": 1, - "f.valHooks": 7, - "e.nodeName.toLowerCase": 1, - "c.get": 1, - "e.value": 1, - "e.val": 1, - "f.map": 5, - "this.nodeName.toLowerCase": 1, - "this.type": 3, - "c.set": 1, - "valHooks": 1, - "a.attributes.value": 1, - "a.text": 1, - "a.selectedIndex": 3, - "a.options": 2, - "": 3, - "optDisabled": 1, - "selected=": 1, - "attrFix": 1, - "f.attrFn": 3, - "f.isXMLDoc": 4, - "f.attrFix": 3, - "f.attrHooks": 5, - "t.test": 2, - "d.toLowerCase": 1, - "c.toLowerCase": 4, - "u.test": 1, - "i.set": 1, - "i.get": 1, - "f.support.getSetAttribute": 2, - "a.removeAttributeNode": 1, - "q.test": 1, - "f.support.radioValue": 1, - "c.specified": 1, - "c.value": 1, - "r.test": 1, - "s.test": 1, - "propFix": 1, - "cellpadding": 1, - "contenteditable": 1, - "f.propHooks": 1, - "h.set": 1, - "h.get": 1, - "propHooks": 1, - "f.attrHooks.value": 1, - "v.get": 1, - "f.attrHooks.name": 1, - "f.valHooks.button": 1, - "d.nodeValue": 3, - "f.support.hrefNormalized": 1, - "f.support.style": 1, - "f.attrHooks.style": 1, - "a.style.cssText.toLowerCase": 1, - "f.support.optSelected": 1, - "f.propHooks.selected": 2, - "b.parentNode.selectedIndex": 1, - "f.support.checkOn": 1, - "f.inArray": 4, - "s.": 1, - "f.event": 2, - "add": 15, - "d.handler": 1, - "g.handler": 1, - "d.guid": 4, - "f.guid": 3, - "i.events": 2, - "i.handle": 2, - "f.event.triggered": 3, - "f.event.handle.apply": 1, - "k.elem": 2, - "c.split": 2, - "l.indexOf": 1, - "l.split": 1, - "n.shift": 1, - "h.namespace": 2, - "n.slice": 1, - "h.type": 1, - "h.guid": 2, - "f.event.special": 5, - "p.setup": 1, - "p.setup.call": 1, - "p.add": 1, - "p.add.call": 1, - "h.handler.guid": 2, - "o.push": 1, - "f.event.global": 2, - "remove": 9, - "s.events": 1, - "c.type": 9, - "c.handler": 1, - "c.charAt": 1, - "f.event.remove": 5, - "h.indexOf": 3, - "h.split": 2, - "m.shift": 1, - "m.slice": 1, - "q.namespace": 1, - "q.handler": 1, - "p.splice": 1, - "": 1, - "u=": 12, - "elem=": 4, - "customEvent": 1, - "trigger": 4, - "h.slice": 1, - "i.shift": 1, - "i.sort": 1, - "f.event.customEvent": 1, - "f.Event": 2, - "c.exclusive": 2, - "c.namespace": 2, - "i.join": 2, - "c.namespace_re": 1, - "c.preventDefault": 3, - "c.stopPropagation": 1, - "b.events": 4, - "f.event.trigger": 6, - "b.handle.elem": 2, - "c.result": 3, - "c.target": 3, - "do": 15, - "c.currentTarget": 2, - "m.apply": 1, - "k.parentNode": 1, - "k.ownerDocument": 1, - "c.target.ownerDocument": 1, - "c.isPropagationStopped": 1, - "c.isDefaultPrevented": 2, - "o._default": 1, - "o._default.call": 1, - "e.ownerDocument": 1, - "f.event.fix": 2, - "a.event": 1, - "Array.prototype.slice.call": 1, - "namespace_re": 1, - "namespace": 1, - "handler=": 1, - "data=": 2, - "handleObj=": 1, - "result=": 1, - "preventDefault": 4, - "stopPropagation": 5, - "isImmediatePropagationStopped": 2, - "result": 9, - "props": 21, - "split": 4, - "fix": 1, - "Event": 3, - "target=": 2, - "relatedTarget=": 1, - "fromElement=": 1, - "pageX=": 2, - "scrollLeft": 2, - "clientLeft": 2, - "pageY=": 1, - "scrollTop": 2, - "clientTop": 2, - "which=": 3, - "metaKey=": 1, - "2": 66, - "3": 13, - "4": 4, - "1e8": 1, - "special": 3, - "setup": 5, - "teardown": 6, - "origType": 2, - "beforeunload": 1, - "onbeforeunload=": 3, - "removeEvent=": 1, - "removeEventListener": 3, - "detachEvent": 2, - "Event=": 1, - "originalEvent=": 1, - "type=": 5, - "isDefaultPrevented=": 2, - "defaultPrevented": 1, - "returnValue=": 2, - "getPreventDefault": 2, - "timeStamp=": 1, - "prototype=": 2, - "originalEvent": 2, - "isPropagationStopped=": 1, - "cancelBubble=": 1, - "stopImmediatePropagation": 1, - "isImmediatePropagationStopped=": 1, - "isDefaultPrevented": 1, - "isPropagationStopped": 1, - "G=": 1, - "H=": 1, - "submit=": 1, - "specialSubmit": 3, - "closest": 3, - "keyCode=": 1, - "J=": 1, - "selectedIndex": 1, - "a.selected": 1, - "z.test": 3, - "d.readOnly": 1, - "c.liveFired": 1, - "f.event.special.change": 1, - "filters": 1, - "beforedeactivate": 1, - "K.call": 2, - "a.keyCode": 2, - "beforeactivate": 1, - "f.event.add": 2, - "f.event.special.change.filters": 1, - "I.focus": 1, - "I.beforeactivate": 1, - "f.support.focusinBubbles": 1, - "c.originalEvent": 1, - "a.preventDefault": 3, - "f.fn": 9, - "e.apply": 1, - "this.one": 1, - "unbind": 2, - "this.unbind": 2, - "delegate": 1, - "this.live": 1, - "undelegate": 1, - "this.die": 1, - "triggerHandler": 1, - "%": 26, - ".guid": 1, - "this.click": 1, - "this.mouseenter": 1, - ".mouseleave": 1, - "g.charAt": 1, - "n.unbind": 1, - "y.exec": 1, - "a.push": 2, - "n.length": 1, - "": 1, - "this.bind": 2, - "": 2, - "sizcache=": 4, - "sizset": 2, - "sizset=": 2, - "toLowerCase": 3, - "d.nodeType": 5, - "k.isXML": 4, - "a.exec": 2, - "x.push": 1, - "x.length": 8, - "m.exec": 1, - "l.relative": 6, - "x.shift": 4, - "l.match.ID.test": 2, - "q.expr": 4, - "q.set": 4, - "x.pop": 4, - "d.parentNode": 4, - "e.call": 1, - "f.push.apply": 1, - "k.contains": 5, - "a.sort": 1, - "": 1, - "matches=": 1, - "matchesSelector=": 1, - "l.order.length": 1, - "l.order": 1, - "l.leftMatch": 1, - "j.substr": 1, - "": 1, - "__sizzle__": 1, - "sizzle": 1, - "l.match.PSEUDO.test": 1, - "a.document.nodeType": 1, - "a.getElementsByClassName": 3, - "a.lastChild.className": 1, - "l.order.splice": 1, - "l.find.CLASS": 1, - "b.getElementsByClassName": 2, - "c.documentElement.contains": 1, - "a.contains": 2, - "c.documentElement.compareDocumentPosition": 1, - "a.compareDocumentPosition": 1, - "a.ownerDocument": 1, - ".documentElement": 1, - "b.nodeName": 2, - "l.match.PSEUDO.exec": 1, - "l.match.PSEUDO": 1, - "f.expr": 4, - "k.selectors": 1, - "f.expr.filters": 3, - "f.unique": 4, - "f.text": 2, - "k.getText": 1, - "/Until": 1, - "parents": 2, - "prevUntil": 2, - "prevAll": 2, - "U": 1, - "f.expr.match.POS": 1, - "V": 2, - "children": 3, - "contents": 4, - "next": 9, - "prev": 2, - ".filter": 2, - "": 1, - "e.splice": 1, - "this.filter": 2, - "": 1, - "": 1, - ".is": 2, - "c.push": 3, - "g.parentNode": 2, - "U.test": 1, - "": 1, - "f.find.matchesSelector": 2, - "g.ownerDocument": 1, - "this.parent": 2, - ".children": 1, - "a.jquery": 2, - "f.merge": 2, - "this.get": 1, - "andSelf": 1, - "this.add": 1, - "f.dir": 6, - "parentsUntil": 1, - "f.nth": 2, - "nextAll": 1, - "nextUntil": 1, - "siblings": 1, - "f.sibling": 2, - "a.parentNode.firstChild": 1, - "a.contentDocument": 1, - "a.contentWindow.document": 1, - "a.childNodes": 1, - "T.call": 1, - "P.test": 1, - "f.filter": 2, - "R.test": 1, - "Q.test": 1, - "e.reverse": 1, - "g.join": 1, - "f.find.matches": 1, - "dir": 1, - "sibling": 1, - "a.nextSibling": 1, - "<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>": 1, - "/ig": 3, - "tbody/i": 1, - "bc": 1, - "bd": 1, - "/checked": 1, - "s*.checked.": 1, - "java": 1, - "ecma": 1, - "script/i": 1, - "CDATA": 1, - "bg": 3, - "legend": 1, - "thead": 2, - "tr": 23, - "td": 3, - "col": 7, - "_default": 5, - "bg.optgroup": 1, - "bg.option": 1, - "bg.tbody": 1, - "bg.tfoot": 1, - "bg.colgroup": 1, - "bg.caption": 1, - "bg.thead": 1, - "bg.th": 1, - "bg.td": 1, - "f.support.htmlSerialize": 1, - "bg._default": 2, - "c.text": 2, - "this.empty": 3, - ".append": 6, - ".createTextNode": 1, - "wrapAll": 1, - ".wrapAll": 2, - ".eq": 1, - ".clone": 1, - "b.map": 1, - "wrapInner": 1, - ".wrapInner": 1, - "b.contents": 1, - "c.wrapAll": 1, - "b.append": 1, - "wrap": 2, - "unwrap": 1, - ".replaceWith": 1, - "this.childNodes": 1, - ".end": 1, - "append": 1, - "this.domManip": 4, - "this.appendChild": 1, - "prepend": 1, - "this.insertBefore": 1, - "this.firstChild": 1, - "this.parentNode.insertBefore": 2, - "a.push.apply": 2, - "this.nextSibling": 2, - ".toArray": 1, - "f.cleanData": 4, - "d.parentNode.removeChild": 1, - "b.getElementsByTagName": 1, - "this.map": 3, - "f.clone": 2, - ".innerHTML.replace": 1, - "bc.test": 2, - "f.support.leadingWhitespace": 2, - "Z.test": 2, - "_.exec": 2, - ".getElementsByTagName": 2, - ".innerHTML": 3, - "c.html": 3, - "replaceWith": 1, - "c.replaceWith": 1, - ".detach": 1, - "this.parentNode": 1, - ".remove": 2, - ".before": 1, - "detach": 1, - "this.remove": 1, - "domManip": 1, - "f.support.checkClone": 2, - "bd.test": 2, - ".domManip": 1, - "g.html": 1, - "g.domManip": 1, - "j.parentNode": 1, - "f.support.parentNode": 1, - "i.nodeType": 1, - "i.childNodes.length": 1, - "f.buildFragment": 2, - "e.fragment": 1, - "h.childNodes.length": 1, - "h.firstChild": 2, - "": 1, - "k.length": 2, - ".charAt": 1, - "f.fragments": 3, - "i.createDocumentFragment": 1, - "f.clean": 1, - "appendTo": 1, - "prependTo": 1, - "insertBefore": 1, - "insertAfter": 1, - "replaceAll": 1, - "g.childNodes.length": 1, - "this.clone": 1, - ".get": 3, - "d.concat": 1, - "e.selector": 1, - "f.support.noCloneEvent": 1, - "f.support.noCloneChecked": 1, - "b.createElement": 2, - "b.createTextNode": 2, - "k.replace": 2, - "o.innerHTML": 1, - "o.lastChild": 1, - "f.support.tbody": 1, - "ba.test": 1, - "o.firstChild": 2, - "o.firstChild.childNodes": 1, - "o.childNodes": 2, - "q.length": 1, - ".childNodes.length": 1, - ".parentNode.removeChild": 2, - "o.insertBefore": 1, - "Z.exec": 1, - "f.support.appendChecked": 1, - "k.nodeType": 1, - "h.push": 1, - "be.test": 1, - ".type.toLowerCase": 1, - "h.splice.apply": 1, - ".concat": 3, - "cleanData": 1, - "j.nodeName": 1, - "j.nodeName.toLowerCase": 1, - "f.removeEvent": 1, - "b.handle": 2, - "j.removeAttribute": 2, - "bo": 2, - "/alpha": 1, - "bp": 1, - "/opacity": 1, - "bq": 2, - "br": 19, - "ms": 2, - "bs": 2, - "bt": 42, - "bu": 11, - "bv": 2, - "de": 1, - "bw": 2, - "bz": 7, - "bA": 3, - "bB": 5, - "bC": 2, - "f.fn.css": 1, - "f.style": 4, - "cssHooks": 1, - "a.style.opacity": 2, - "cssNumber": 3, - "zIndex": 1, - "fontWeight": 1, - "zoom": 1, - "lineHeight": 1, - "widows": 1, - "orphans": 1, - "cssProps": 1, - "f.support.cssFloat": 1, - "f.cssHooks": 3, - "f.cssProps": 2, - "k.get": 1, - "bu.test": 1, - "d.replace": 1, - "f.cssNumber": 1, - "k.set": 1, - "g.get": 1, - "swap": 1, - "f.curCSS": 1, - "f.swap": 2, - "<0||e==null){e=a.style[b];return>": 1, - "0px": 1, - "f.support.opacity": 1, - "f.cssHooks.opacity": 1, - "bp.test": 1, - "a.currentStyle": 4, - "a.currentStyle.filter": 1, - "a.style.filter": 1, - "RegExp.": 1, - "c.zoom": 1, - "b*100": 1, - "d.filter": 1, - "c.filter": 2, - "bo.test": 1, - "g.replace": 1, - "f.support.reliableMarginRight": 1, - "f.cssHooks.marginRight": 1, - "a.style.marginRight": 1, - "a.ownerDocument.defaultView": 1, - "e.getComputedStyle": 1, - "g.getPropertyValue": 1, - "a.ownerDocument.documentElement": 1, - "c.documentElement.currentStyle": 1, - "a.runtimeStyle": 2, - "bs.test": 1, - "bt.test": 1, - "f.left": 3, - "a.runtimeStyle.left": 2, - "a.currentStyle.left": 1, - "f.pixelLeft": 1, - "f.expr.filters.hidden": 2, - "f.support.reliableHiddenOffsets": 1, - "f.expr.filters.visible": 1, - "bE": 2, - "bF": 1, - "bG": 3, - "n/g": 1, - "bH": 2, - "/#.*": 1, - "bI": 1, - "/mg": 1, - "bJ": 1, - "color": 4, - "date": 1, - "datetime": 1, - "email": 2, - "month": 1, - "range": 2, - "search": 5, - "tel": 2, - "time": 1, - "week": 1, - "bK": 1, - "about": 1, - "app": 2, - "storage": 1, - "extension": 1, - "widget": 1, - "bL": 1, - "GET": 1, - "bM": 2, - "bN": 2, - "bO": 2, - "<\\/script>": 2, - "/gi": 2, - "bP": 1, - "bR": 2, - "*/": 2, - "bS": 1, - "bT": 2, - "f.fn.load": 1, - "bV": 3, - "bW": 5, - "bX": 8, - "e.href": 1, - "bY": 1, - "bW.href": 2, - "bS.exec": 1, - "bW.toLowerCase": 1, - "bT.apply": 1, - "a.slice": 2, - "f.param": 2, - "f.ajaxSettings.traditional": 2, - "complete": 6, - "a.responseText": 1, - "a.isResolved": 1, - "a.done": 1, - "i.html": 1, - "i.each": 1, - "serialize": 1, - "this.serializeArray": 1, - "serializeArray": 1, - "this.elements": 2, - "this.disabled": 1, - "this.checked": 1, - "bP.test": 1, - "bJ.test": 1, - ".map": 1, - "b.name": 2, - "success": 2, - "getScript": 1, - "f.get": 2, - "getJSON": 1, - "ajaxSetup": 1, - "f.ajaxSettings": 4, - "ajaxSettings": 1, - "isLocal": 1, - "bK.test": 1, - "contentType": 4, - "processData": 3, - "accepts": 5, - "xml": 3, - "json": 2, - "/xml/": 1, - "/html/": 1, - "/json/": 1, - "responseFields": 1, - "converters": 2, - "a.String": 1, - "f.parseXML": 1, - "ajaxPrefilter": 1, - "ajaxTransport": 1, - "ajax": 2, - "clearTimeout": 2, - "v.readyState": 1, - "d.ifModified": 1, - "v.getResponseHeader": 2, - "f.lastModified": 1, - "f.etag": 1, - "v.status": 1, - "v.statusText": 1, - "h.resolveWith": 1, - "h.rejectWith": 1, - "v.statusCode": 2, - "g.trigger": 2, - "i.resolveWith": 1, - "f.active": 1, - "f.ajaxSetup": 3, - "d.statusCode": 1, - "readyState": 1, - "setRequestHeader": 6, - "getAllResponseHeaders": 1, - "getResponseHeader": 1, - "bI.exec": 1, - "overrideMimeType": 1, - "d.mimeType": 1, - "abort": 4, - "p.abort": 1, - "h.promise": 1, - "v.success": 1, - "v.done": 1, - "v.error": 1, - "v.fail": 1, - "v.complete": 1, - "i.done": 1, - "<2)for(b>": 1, - "url=": 1, - "dataTypes=": 1, - "crossDomain=": 2, - "exec": 8, - "80": 2, - "443": 2, - "param": 3, - "traditional": 1, - "s=": 12, - "t=": 19, - "toUpperCase": 1, - "hasContent=": 1, - "active": 2, - "ajaxStart": 1, - "hasContent": 2, - "cache=": 1, - "x=": 1, - "y=": 5, - "1_=": 1, - "_=": 1, - "Content": 1, - "Type": 1, - "ifModified": 1, - "lastModified": 3, - "Modified": 1, - "etag": 3, - "None": 1, - "Accept": 1, - "dataTypes": 4, - "q=": 1, - "01": 1, - "beforeSend": 2, - "p=": 5, - "No": 1, - "Transport": 1, - "readyState=": 1, - "ajaxSend": 1, - "v.abort": 1, - "d.timeout": 1, - "p.send": 1, - "encodeURIComponent": 2, - "f.isPlainObject": 1, - "d.join": 1, - "cc": 2, - "cd": 3, - "jsonp": 1, - "jsonpCallback": 1, - "f.ajaxPrefilter": 2, - "b.contentType": 1, - "b.data": 5, - "b.dataTypes": 2, - "b.jsonp": 3, - "cd.test": 2, - "b.url": 4, - "b.jsonpCallback": 4, - "d.always": 1, - "b.converters": 1, - "/javascript": 1, - "ecmascript/": 1, - "a.cache": 2, - "a.crossDomain": 2, - "a.global": 1, - "f.ajaxTransport": 2, - "c.head": 1, - "c.getElementsByTagName": 1, - "send": 2, - "d.async": 1, - "a.scriptCharset": 2, - "d.charset": 1, - "d.src": 1, - "a.url": 1, - "d.onload": 3, - "d.onreadystatechange": 2, - "d.readyState": 2, - "/loaded": 1, - "complete/.test": 1, - "e.removeChild": 1, - "e.insertBefore": 1, - "e.firstChild": 1, - "ce": 6, - "cg": 7, - "cf": 7, - "f.ajaxSettings.xhr": 2, - "this.isLocal": 1, - "cors": 1, - "f.support.ajax": 1, - "c.crossDomain": 3, - "f.support.cors": 1, - "c.xhr": 1, - "c.username": 2, - "h.open": 2, - "c.url": 2, - "c.password": 1, - "c.xhrFields": 3, - "c.mimeType": 2, - "h.overrideMimeType": 2, - "h.setRequestHeader": 1, - "h.send": 1, - "c.hasContent": 1, - "h.readyState": 3, - "h.onreadystatechange": 2, - "h.abort": 1, - "h.status": 1, - "h.getAllResponseHeaders": 1, - "h.responseXML": 1, - "n.documentElement": 1, - "m.xml": 1, - "m.text": 2, - "h.responseText": 1, - "h.statusText": 1, - "c.isLocal": 1, - ".unload": 1, - "cm": 2, - "cn": 1, - "co": 5, - "cp": 1, - "cr": 20, - "a.webkitRequestAnimationFrame": 1, - "a.mozRequestAnimationFrame": 1, - "a.oRequestAnimationFrame": 1, - "this.animate": 2, - "d.style": 3, - ".style": 1, - "": 1, - "_toggle": 2, - "animate": 4, - "fadeTo": 1, - "queue=": 2, - "animatedProperties=": 1, - "animatedProperties": 2, - "specialEasing": 2, - "easing": 3, - "swing": 2, - "overflow=": 2, - "overflow": 2, - "overflowX": 1, - "overflowY": 1, - "float": 3, - "display=": 3, - "zoom=": 1, - "fx": 10, - "l=": 10, - "m=": 2, - "custom": 5, - "stop": 7, - "timers": 3, - "slideDown": 1, - "slideUp": 1, - "slideToggle": 1, - "fadeIn": 1, - "fadeOut": 1, - "fadeToggle": 1, - "duration": 4, - "duration=": 2, - "off": 1, - "speeds": 4, - "old=": 1, - "complete=": 1, - "old": 2, - "linear": 1, - "Math": 51, - "cos": 1, - "PI": 54, - "5": 23, - "options=": 1, - "prop=": 3, - "orig=": 1, - "orig": 3, - "step": 7, - "startTime=": 1, - "start=": 1, - "end=": 1, - "unit=": 1, - "unit": 1, - "now=": 1, - "pos=": 1, - "state=": 1, - "co=": 2, - "tick": 3, - "interval": 3, - "show=": 1, - "hide=": 1, - "e.duration": 3, - "this.startTime": 2, - "this.now": 3, - "this.end": 2, - "this.pos": 4, - "this.state": 3, - "this.update": 2, - "e.animatedProperties": 5, - "this.prop": 2, - "e.overflow": 2, - "f.support.shrinkWrapBlocks": 1, - "e.hide": 2, - ".hide": 2, - "e.show": 1, - "e.orig": 1, - "e.complete.call": 1, - "Infinity": 1, - "h/e.duration": 1, - "f.easing": 1, - "this.start": 2, - "*this.pos": 1, - "f.timers": 2, - "a.splice": 1, - "f.fx.stop": 1, - "clearInterval": 6, - "slow": 1, - "fast": 1, - "a.elem": 2, - "a.now": 4, - "a.elem.style": 3, - "a.prop": 5, - "Math.max": 10, - "a.unit": 1, - "f.expr.filters.animated": 1, - "b.elem": 1, - "cw": 1, - "able": 1, - "cx": 2, - "f.fn.offset": 2, - "f.offset.setOffset": 2, - "b.ownerDocument.body": 2, - "f.offset.bodyOffset": 2, - "b.getBoundingClientRect": 1, - "e.documentElement": 4, - "c.top": 4, - "c.left": 4, - "e.body": 3, - "g.clientTop": 1, - "h.clientTop": 1, - "g.clientLeft": 1, - "h.clientLeft": 1, - "i.pageYOffset": 1, - "g.scrollTop": 1, - "h.scrollTop": 2, - "i.pageXOffset": 1, - "g.scrollLeft": 1, - "h.scrollLeft": 2, - "f.offset.initialize": 3, - "b.offsetParent": 2, - "g.documentElement": 1, - "g.body": 1, - "g.defaultView": 1, - "j.getComputedStyle": 2, - "b.currentStyle": 2, - "b.offsetTop": 2, - "b.offsetLeft": 2, - "f.offset.supportsFixedPosition": 2, - "k.position": 4, - "b.scrollTop": 1, - "b.scrollLeft": 1, - "f.offset.doesNotAddBorder": 1, - "f.offset.doesAddBorderForTableAndCells": 1, - "cw.test": 1, - "c.borderTopWidth": 2, - "c.borderLeftWidth": 2, - "f.offset.subtractsBorderForOverflowNotVisible": 1, - "c.overflow": 1, - "i.offsetTop": 1, - "i.offsetLeft": 1, - "i.scrollTop": 1, - "i.scrollLeft": 1, - "f.offset": 1, - "initialize": 3, - "b.style": 1, - "d.nextSibling.firstChild.firstChild": 1, - "this.doesNotAddBorder": 1, - "e.offsetTop": 4, - "this.doesAddBorderForTableAndCells": 1, - "h.offsetTop": 1, - "e.style.position": 2, - "e.style.top": 2, - "this.supportsFixedPosition": 1, - "d.style.overflow": 1, - "d.style.position": 1, - "this.subtractsBorderForOverflowNotVisible": 1, - "this.doesNotIncludeMarginInBodyOffset": 1, - "a.offsetTop": 2, - "bodyOffset": 1, - "a.offsetLeft": 1, - "f.offset.doesNotIncludeMarginInBodyOffset": 1, - "setOffset": 1, - "a.style.position": 1, - "e.offset": 1, - "e.position": 1, - "l.top": 1, - "l.left": 1, - "b.top": 2, - "k.top": 1, - "g.top": 1, - "b.left": 2, - "k.left": 1, - "g.left": 1, - "b.using.call": 1, - "e.css": 1, - "this.offsetParent": 2, - "this.offset": 2, - "cx.test": 2, - "b.offset": 1, - "d.top": 2, - "d.left": 2, - "offsetParent": 1, - "a.offsetParent": 1, - "g.document.documentElement": 1, - "g.document.body": 1, - "g.scrollTo": 1, - ".scrollLeft": 1, - ".scrollTop": 1, - "e.document.documentElement": 1, - "e.document.compatMode": 1, - "e.document.body": 1, - "this.css": 1, - "Prioritize": 1, - "": 1, - "XSS": 1, - "location.hash": 1, - "#9521": 1, - "Matches": 1, - "dashed": 1, - "camelizing": 1, - "rdashAlpha": 1, - "rmsPrefix": 1, - "fcamelCase": 1, - "letter": 3, - "readyList.fireWith": 1, - ".off": 1, - "jQuery.Callbacks": 2, - "IE8": 2, - "exceptions": 2, - "#9897": 1, - "elems": 9, - "chainable": 4, - "emptyGet": 3, - "bulk": 3, - "elems.length": 1, - "Sets": 3, - "jQuery.access": 2, - "Optionally": 1, - "executed": 1, - "Bulk": 1, - "operations": 1, - "iterate": 1, - "executing": 1, - "exec.call": 1, - "they": 2, - "run": 1, - "against": 1, - "entire": 1, - "fn.call": 2, - "value.call": 1, - "Gets": 2, - "frowned": 1, - "upon.": 1, - "More": 1, - "//docs.jquery.com/Utilities/jQuery.browser": 1, - "ua": 6, - "ua.toLowerCase": 1, - "rwebkit.exec": 1, - "ropera.exec": 1, - "rmsie.exec": 1, - "ua.indexOf": 1, - "rmozilla.exec": 1, - "jQuerySub": 7, - "jQuerySub.fn.init": 2, - "jQuerySub.superclass": 1, - "jQuerySub.fn": 2, - "jQuerySub.prototype": 1, - "jQuerySub.fn.constructor": 1, - "jQuerySub.sub": 1, - "jQuery.fn.init.call": 1, - "rootjQuerySub": 2, - "jQuerySub.fn.init.prototype": 1, - "jQuery.uaMatch": 1, - "browserMatch.browser": 2, - "jQuery.browser.version": 1, - "browserMatch.version": 1, - "jQuery.browser.webkit": 1, - "jQuery.browser.safari": 1, - "flagsCache": 3, - "createFlags": 2, - "flags": 13, - "flags.split": 1, - "flags.length": 1, - "Convert": 1, - "formatted": 2, - "Actual": 2, - "Stack": 1, - "fire": 4, - "calls": 1, - "repeatable": 1, - "lists": 2, - "stack": 2, - "forgettable": 1, - "memory": 8, - "Flag": 2, - "First": 3, - "fireWith": 1, - "firingStart": 3, - "End": 1, - "firingLength": 4, - "Index": 1, - "firingIndex": 5, - "several": 1, - "actual": 1, - "Inspect": 1, - "recursively": 1, - "mode": 1, - "flags.unique": 1, - "self.has": 1, - "list.push": 1, - "Fire": 1, - "flags.memory": 1, - "flags.stopOnFalse": 1, - "Mark": 1, - "halted": 1, - "flags.once": 1, - "stack.length": 1, - "stack.shift": 1, - "self.fireWith": 1, - "self.disable": 1, - "Callbacks": 1, - "collection": 3, - "Do": 2, - "current": 7, - "batch": 2, - "With": 1, - "/a": 1, - ".55": 1, - "basic": 1, - "all.length": 1, - "supports": 2, - "select.appendChild": 1, - "strips": 1, - "leading": 1, - "div.firstChild.nodeType": 1, - "manipulated": 1, - "normalizes": 1, - "around": 1, - "issue.": 1, - "#5145": 1, - "existence": 1, - "styleFloat": 1, - "a.style.cssFloat": 1, - "defaults": 3, - "working": 1, - "property.": 1, - "too": 1, - "marked": 1, - "marks": 1, - "select.disabled": 1, - "support.optDisabled": 1, - "opt.disabled": 1, - "handlers": 1, - "support.noCloneEvent": 1, - "div.cloneNode": 1, - "maintains": 1, - "#11217": 1, - "loses": 1, - "div.lastChild": 1, - "conMarginTop": 3, - "paddingMarginBorder": 5, - "positionTopLeftWidthHeight": 3, - "paddingMarginBorderVisibility": 3, - "container": 4, - "container.style.cssText": 1, - "body.insertBefore": 1, - "body.firstChild": 1, - "Construct": 1, - "container.appendChild": 1, - "cells": 3, - "still": 4, - "offsetWidth/Height": 3, - "visible": 1, - "row": 1, - "reliable": 1, - "offsets": 1, - "safety": 1, - "goggles": 1, - "#4512": 1, - "fails": 2, - "support.reliableHiddenOffsets": 1, - "explicit": 1, - "right": 3, - "incorrectly": 1, - "computed": 1, - "based": 1, - "container.": 1, - "#3333": 1, - "Feb": 1, - "Bug": 1, - "getComputedStyle": 3, - "returns": 1, - "wrong": 1, - "window.getComputedStyle": 6, - "marginDiv.style.width": 1, - "marginDiv.style.marginRight": 1, - "div.style.width": 2, - "support.reliableMarginRight": 1, - "div.style.zoom": 2, - "natively": 1, - "block": 4, - "act": 1, - "setting": 2, - "giving": 1, - "layout": 2, - "div.style.padding": 1, - "div.style.border": 1, - "div.style.overflow": 2, - "div.style.display": 2, - "support.inlineBlockNeedsLayout": 1, - "div.offsetWidth": 2, - "shrink": 1, - "support.shrinkWrapBlocks": 1, - "div.style.cssText": 1, - "outer.firstChild": 1, - "outer.nextSibling.firstChild.firstChild": 1, - "offsetSupport": 2, - "doesNotAddBorder": 1, - "inner.offsetTop": 4, - "doesAddBorderForTableAndCells": 1, - "td.offsetTop": 1, - "inner.style.position": 2, - "inner.style.top": 2, - "safari": 1, - "subtracts": 1, - "here": 1, - "offsetSupport.fixedPosition": 1, - "outer.style.overflow": 1, - "outer.style.position": 1, - "offsetSupport.subtractsBorderForOverflowNotVisible": 1, - "offsetSupport.doesNotIncludeMarginInBodyOffset": 1, - "body.offsetTop": 1, - "div.style.marginTop": 1, - "support.pixelMargin": 1, - ".marginTop": 1, - "container.style.zoom": 2, - "body.removeChild": 1, - "rbrace": 1, - "Please": 1, - "caution": 1, - "Unique": 1, - "page": 1, - "rinlinejQuery": 1, - "jQuery.fn.jquery": 1, - "following": 1, - "uncatchable": 1, - "you": 1, - "attempt": 2, - "them.": 1, - "Ban": 1, - "except": 1, - "Flash": 1, - "jQuery.acceptData": 2, - "privateCache": 1, - "differently": 1, - "because": 1, - "IE6": 1, - "order": 1, - "collisions": 1, - "between": 1, - "user": 1, - "data.": 1, - "thisCache.data": 3, - "Users": 1, - "should": 1, - "inspect": 1, - "undocumented": 1, - "subject": 1, - "change.": 1, - "But": 1, - "anyone": 1, - "listen": 1, - "No.": 1, - "isEvents": 1, - "privateCache.events": 1, - "converted": 2, - "camel": 2, - "names": 2, - "camelCased": 1, - "Reference": 1, - "entry": 1, - "purpose": 1, - "continuing": 1, - "Support": 1, - "space": 1, - "separated": 1, - "jQuery.isArray": 1, - "manipulation": 1, - "cased": 1, - "name.split": 1, - "name.length": 1, - "want": 1, - "let": 1, - "destroyed": 2, - "jQuery.isEmptyObject": 1, - "Don": 1, - "care": 1, - "Ensure": 1, - "#10080": 1, - "cache.setInterval": 1, - "part": 8, - "jQuery._data": 2, - "elem.attributes": 1, - "self.triggerHandler": 2, - "jQuery.isNumeric": 1, - "All": 1, - "lowercase": 1, - "Grab": 1, - "necessary": 1, - "hook": 1, - "nodeHook": 1, - "attrNames": 3, - "isBool": 4, - "rspace": 1, - "attrNames.length": 1, - "#9699": 1, - "explanation": 1, - "approach": 1, - "removal": 1, - "#10870": 1, - "**": 1, - "timeStamp": 1, - "char": 2, - "buttons": 1, - "SHEBANG#!node": 2, - "http.createServer": 1, - "res.writeHead": 1, - "res.end": 1, - ".listen": 1, - "Date.prototype.toJSON": 2, - "isFinite": 1, - "this.valueOf": 2, - "this.getUTCFullYear": 1, - "this.getUTCMonth": 1, - "this.getUTCDate": 1, - "this.getUTCHours": 1, - "this.getUTCMinutes": 1, - "this.getUTCSeconds": 1, - "String.prototype.toJSON": 1, - "Number.prototype.toJSON": 1, - "Boolean.prototype.toJSON": 1, - "u0000": 1, - "u00ad": 1, - "u0600": 1, - "u0604": 1, - "u070f": 1, - "u17b4": 1, - "u17b5": 1, - "u200c": 1, - "u200f": 1, - "u2028": 3, - "u202f": 1, - "u2060": 1, - "u206f": 1, - "ufeff": 1, - "ufff0": 1, - "uffff": 1, - "escapable": 1, - "/bfnrt": 1, - "fA": 2, - "JSON.parse": 1, - "PUT": 1, - "DELETE": 1, - "_id": 1, - "ties": 1, - "collection.": 1, - "_removeReference": 1, - "model.collection": 2, - "model.unbind": 1, - "this._onModelEvent": 1, - "_onModelEvent": 1, - "ev": 5, - "this._remove": 1, - "model.idAttribute": 2, - "this._byId": 2, - "model.previous": 1, - "model.id": 1, - "this.trigger.apply": 2, - "_.each": 1, - "Backbone.Collection.prototype": 1, - "this.models": 1, - "_.toArray": 1, - "Backbone.Router": 1, - "options.routes": 2, - "this.routes": 4, - "this._bindRoutes": 1, - "this.initialize.apply": 2, - "namedParam": 2, - "splatParam": 2, - "escapeRegExp": 2, - "_.extend": 9, - "Backbone.Router.prototype": 1, - "Backbone.Events": 2, - "route": 18, - "Backbone.history": 2, - "Backbone.History": 2, - "_.isRegExp": 1, - "this._routeToRegExp": 1, - "Backbone.history.route": 1, - "_.bind": 2, - "this._extractParameters": 1, - "callback.apply": 1, - "navigate": 2, - "triggerRoute": 4, - "Backbone.history.navigate": 1, - "_bindRoutes": 1, - "routes": 4, - "routes.unshift": 1, - "routes.length": 1, - "this.route": 1, - "_routeToRegExp": 1, - "route.replace": 1, - "_extractParameters": 1, - "route.exec": 1, - "this.handlers": 2, - "_.bindAll": 1, - "hashStrip": 4, - "#*": 1, - "isExplorer": 1, - "/msie": 1, - "historyStarted": 3, - "Backbone.History.prototype": 1, - "getFragment": 1, - "forcePushState": 2, - "this._hasPushState": 6, - "window.location.pathname": 1, - "window.location.search": 1, - "fragment.indexOf": 1, - "this.options.root": 6, - "fragment.substr": 1, - "this.options.root.length": 1, - "window.location.hash": 3, - "fragment.replace": 1, - "this._wantsPushState": 3, - "this.options.pushState": 2, - "window.history": 2, - "window.history.pushState": 2, - "this.getFragment": 6, - "docMode": 3, - "document.documentMode": 3, - "oldIE": 3, - "isExplorer.exec": 1, - "navigator.userAgent.toLowerCase": 1, - "this.iframe": 4, - ".contentWindow": 1, - "this.navigate": 2, - ".bind": 3, - "this.checkUrl": 3, - "setInterval": 6, - "this.interval": 1, - "this.fragment": 13, - "loc": 2, - "atRoot": 3, - "loc.pathname": 1, - "loc.hash": 1, - "loc.hash.replace": 1, - "window.history.replaceState": 1, - "document.title": 2, - "loc.protocol": 2, - "loc.host": 2, - "this.loadUrl": 4, - "this.handlers.unshift": 1, - "checkUrl": 1, - "this.iframe.location.hash": 3, - "decodeURIComponent": 2, - "loadUrl": 1, - "fragmentOverride": 2, - "matched": 2, - "_.any": 1, - "handler.route.test": 1, - "handler.callback": 1, - "frag": 13, - "frag.indexOf": 1, - "this.iframe.document.open": 1, - ".close": 1, - "Backbone.View": 1, - "this.cid": 3, - "_.uniqueId": 1, - "this._configure": 1, - "this._ensureElement": 1, - "this.delegateEvents": 1, - "selectorDelegate": 2, - "this.el": 10, - "eventSplitter": 2, - "viewOptions": 2, - "Backbone.View.prototype": 1, - "tagName": 3, - "render": 1, - "el": 4, - ".attr": 1, - ".html": 1, - "delegateEvents": 1, - "this.events": 1, - "key.match": 1, - "_configure": 1, - "viewOptions.length": 1, - "_ensureElement": 1, - "attrs": 6, - "this.attributes": 1, - "this.id": 2, - "attrs.id": 1, - "this.make": 1, - "this.tagName": 1, - "_.isString": 1, - "protoProps": 6, - "classProps": 2, - "inherits": 2, - "child.extend": 1, - "this.extend": 1, - "Backbone.Model.extend": 1, - "Backbone.Collection.extend": 1, - "Backbone.Router.extend": 1, - "Backbone.View.extend": 1, - "methodMap": 2, - "Backbone.sync": 1, - "params": 2, - "params.url": 2, - "getUrl": 2, - "urlError": 2, - "params.data": 5, - "params.contentType": 2, - "model.toJSON": 1, - "Backbone.emulateJSON": 2, - "params.processData": 1, - "Backbone.emulateHTTP": 1, - "params.data._method": 1, - "params.type": 1, - "params.beforeSend": 1, - "xhr": 1, - "xhr.setRequestHeader": 1, - ".ajax": 1, - "staticProps": 3, - "protoProps.hasOwnProperty": 1, - "protoProps.constructor": 1, - "parent.apply": 1, - "child.prototype.constructor": 1, - "object.url": 4, - "_.isFunction": 1, - "wrapError": 1, - "onError": 3, - "resp": 3, - "model.trigger": 1, - "escapeHTML": 1, - "string.replace": 1, - "#x": 1, - "da": 1, - "": 1, - "lt": 55, - "#x27": 1, - "#x2F": 1, - "window.Modernizr": 1, - "Modernizr": 12, - "enableClasses": 3, - "docElement": 1, - "mod": 12, - "modElem": 2, - "mStyle": 2, - "modElem.style": 1, - "inputElem": 6, - "smile": 4, - "prefixes": 2, - "omPrefixes": 1, - "cssomPrefixes": 2, - "omPrefixes.split": 1, - "domPrefixes": 3, - "omPrefixes.toLowerCase": 1, - "ns": 1, - "inputs": 3, - "classes": 1, - "classes.slice": 1, - "featureName": 5, - "testing": 1, - "injectElementWithStyles": 9, - "rule": 5, - "testnames": 3, - "fakeBody": 4, - "node.id": 1, - "div.id": 1, - "fakeBody.appendChild": 1, - "//avoid": 1, - "crashing": 1, - "fakeBody.style.background": 1, - "docElement.appendChild": 2, - "fakeBody.parentNode.removeChild": 1, - "div.parentNode.removeChild": 1, - "testMediaQuery": 2, - "mq": 3, - "matchMedia": 3, - "window.matchMedia": 1, - "window.msMatchMedia": 1, - ".matches": 1, - "bool": 30, - "node.currentStyle": 2, - "isEventSupported": 5, - "TAGNAMES": 2, - "element.setAttribute": 3, - "element.removeAttribute": 2, - "_hasOwnProperty": 2, - "hasOwnProperty": 5, - "_hasOwnProperty.call": 2, - "object.constructor.prototype": 1, - "Function.prototype.bind": 2, - "slice.call": 3, - "F.prototype": 1, - "target.prototype": 1, - "target.apply": 2, - "args.concat": 2, - "setCss": 7, - "str": 4, - "mStyle.cssText": 1, - "setCssAll": 2, - "str1": 6, - "str2": 4, - "prefixes.join": 3, - "substr": 2, - "testProps": 3, - "prefixed": 7, - "testDOMProps": 2, - "item": 4, - "item.bind": 1, - "testPropsAll": 17, - "ucProp": 5, - "prop.charAt": 1, - "prop.substr": 1, - "cssomPrefixes.join": 1, - "elem.getContext": 2, - ".getContext": 8, - ".fillText": 1, - "window.WebGLRenderingContext": 1, - "window.DocumentTouch": 1, - "DocumentTouch": 1, - "node.offsetTop": 1, - "window.postMessage": 1, - "window.openDatabase": 1, - "history.pushState": 1, - "mStyle.backgroundColor": 3, - "mStyle.background": 1, - ".style.textShadow": 1, - "mStyle.opacity": 1, - "str3": 2, - "str1.length": 1, - "mStyle.backgroundImage": 1, - "docElement.style": 1, - "node.offsetLeft": 1, - "node.offsetHeight": 2, - "document.styleSheets": 1, - "document.styleSheets.length": 1, - "cssText": 4, - "style.cssRules": 3, - "style.cssText": 1, - "/src/i.test": 1, - "cssText.indexOf": 1, - "rule.split": 1, - "elem.canPlayType": 10, - "Boolean": 2, - "bool.ogg": 2, - "bool.h264": 1, - "bool.webm": 1, - "bool.mp3": 1, - "bool.wav": 1, - "bool.m4a": 1, - "localStorage.setItem": 1, - "localStorage.removeItem": 1, - "sessionStorage.setItem": 1, - "sessionStorage.removeItem": 1, - "window.Worker": 1, - "window.applicationCache": 1, - "document.createElementNS": 6, - "ns.svg": 4, - ".createSVGRect": 1, - "div.firstChild.namespaceURI": 1, - "/SVGAnimate/.test": 1, - "toString.call": 2, - "/SVGClipPath/.test": 1, - "webforms": 2, - "props.length": 2, - "attrs.list": 2, - "window.HTMLDataListElement": 1, - "inputElemType": 5, - "defaultView": 2, - "inputElem.setAttribute": 1, - "inputElem.type": 1, - "inputElem.value": 2, - "inputElem.style.cssText": 1, - "inputElem.style.WebkitAppearance": 1, - "document.defaultView": 1, - "defaultView.getComputedStyle": 2, - ".WebkitAppearance": 1, - "inputElem.offsetHeight": 1, - "docElement.removeChild": 1, - "inputElem.checkValidity": 2, - "feature": 12, - "feature.toLowerCase": 2, - "classes.push": 1, - "Modernizr.input": 1, - "Modernizr.addTest": 2, - "docElement.className": 2, - "chaining.": 1, - "window.html5": 2, - "reSkip": 1, - "saveClones": 1, - "fieldset": 1, - "h1": 5, - "h2": 5, - "h3": 3, - "h4": 3, - "h5": 1, - "h6": 1, - "img": 1, - "label": 2, - "li": 19, - "ol": 1, - "span": 1, - "strong": 1, - "tfoot": 1, - "th": 1, - "ul": 1, - "supportsHtml5Styles": 5, - "supportsUnknownElements": 3, - "//if": 2, - "implemented": 1, - "assume": 1, - "Styles": 1, - "Chrome": 2, - "additional": 1, - "solve": 1, - "node.hidden": 1, - ".display": 1, - "a.childNodes.length": 1, - "frag.cloneNode": 1, - "frag.createDocumentFragment": 1, - "frag.createElement": 2, - "addStyleSheet": 2, - "ownerDocument.createElement": 3, - "ownerDocument.getElementsByTagName": 1, - "ownerDocument.documentElement": 1, - "p.innerHTML": 1, - "parent.insertBefore": 1, - "p.lastChild": 1, - "parent.firstChild": 1, - "getElements": 2, - "html5.elements": 1, - "elements.split": 1, - "shivMethods": 2, - "docCreateElement": 5, - "docCreateFragment": 2, - "ownerDocument.createDocumentFragment": 2, - "//abort": 1, - "shiv": 1, - "html5.shivMethods": 1, - "saveClones.test": 1, - "node.canHaveChildren": 1, - "reSkip.test": 1, - "frag.appendChild": 1, - "html5": 3, - "shivDocument": 3, - "shived": 5, - "ownerDocument.documentShived": 2, - "html5.shivCSS": 1, - "options.elements": 1, - "options.shivCSS": 1, - "options.shivMethods": 1, - "Modernizr._version": 1, - "Modernizr._prefixes": 1, - "Modernizr._domPrefixes": 1, - "Modernizr._cssomPrefixes": 1, - "Modernizr.mq": 1, - "Modernizr.hasEvent": 1, - "Modernizr.testProp": 1, - "Modernizr.testAllProps": 1, - "Modernizr.testStyles": 1, - "Modernizr.prefixed": 1, - "docElement.className.replace": 1, - "js": 1, - "classes.join": 1, - "this.document": 1, - "PEG.parser": 1, - "quote": 3, - "result0": 264, - "result1": 81, - "result2": 77, - "parse_singleQuotedCharacter": 3, - "result1.push": 3, - "input.charCodeAt": 18, - "pos": 197, - "reportFailures": 64, - "matchFailed": 40, - "pos1": 63, - "chars": 1, - "chars.join": 1, - "pos0": 51, - "parse_simpleSingleQuotedCharacter": 2, - "parse_simpleEscapeSequence": 3, - "parse_zeroEscapeSequence": 3, - "parse_hexEscapeSequence": 3, - "parse_unicodeEscapeSequence": 3, - "parse_eolEscapeSequence": 3, - "pos2": 22, - "parse_eolChar": 6, - "input.length": 9, - "input.charAt": 21, - "char_": 9, - "parse_class": 1, - "result3": 35, - "result4": 12, - "result5": 4, - "parse_classCharacterRange": 3, - "parse_classCharacter": 5, - "result2.push": 1, - "parse___": 2, - "inverted": 4, - "partsConverted": 2, - "part.data": 1, - "rawText": 5, - "part.rawText": 1, - "ignoreCase": 1, - "begin": 1, - "begin.data.charCodeAt": 1, - "end.data.charCodeAt": 1, - "this.SyntaxError": 2, - "begin.rawText": 2, - "end.rawText": 2, - "begin.data": 1, - "end.data": 1, - "parse_bracketDelimitedCharacter": 2, - "quoteForRegexpClass": 1, - "parse_simpleBracketDelimitedCharacter": 2, - "parse_digit": 3, - "recognize": 1, - "input.substr": 9, - "parse_hexDigit": 7, - "String.fromCharCode": 4, - "parse_eol": 4, - "eol": 2, - "parse_letter": 1, - "parse_lowerCaseLetter": 2, - "parse_upperCaseLetter": 2, - "parse_whitespace": 3, - "parse_comment": 3, - "result0.push": 1, - "parse_singleLineComment": 2, - "parse_multiLineComment": 2, - "u2029": 2, - "x0B": 1, - "uFEFF": 1, - "u1680": 1, - "u180E": 1, - "u2000": 1, - "u200A": 1, - "u202F": 1, - "u205F": 1, - "u3000": 1, - "cleanupExpected": 2, - "expected": 12, - "expected.sort": 1, - "lastExpected": 3, - "cleanExpected": 2, - "expected.length": 4, - "cleanExpected.push": 1, - "computeErrorPosition": 2, - "line": 14, - "column": 8, - "seenCR": 5, - "rightmostFailuresPos": 2, - "parseFunctions": 1, - "startRule": 1, - "errorPosition": 1, - "rightmostFailuresExpected": 1, - "errorPosition.line": 1, - "errorPosition.column": 1, - "toSource": 1, - "this._source": 1, - "result.SyntaxError": 1, - "buildMessage": 2, - "expectedHumanized": 5, - "foundHumanized": 3, - "expected.slice": 1, - "this.expected": 1, - "this.found": 1, - "this.message": 3, - "this.line": 3, - "this.column": 1, - "result.SyntaxError.prototype": 1, - "Error.prototype": 1, - "steelseries": 10, - "n.charAt": 1, - "n.substring": 1, - "i.substring": 3, - "this.color": 1, - "ui": 31, - "/255": 1, - "t.getRed": 4, - "t.getGreen": 4, - "t.getBlue": 4, - "t.getAlpha": 4, - "i.getRed": 1, - "i.getGreen": 1, - "i.getBlue": 1, - "i.getAlpha": 1, - "*f": 2, - "w/r": 1, - "p/r": 1, - "s/r": 1, - "o/r": 1, - "e*u": 1, - ".toFixed": 3, - "l*u": 1, - "c*u": 1, - "h*u": 1, - "vr": 20, - "Math.floor": 26, - "Math.log10": 1, - "n/Math.pow": 1, - "": 1, - "beginPath": 12, - "moveTo": 10, - "lineTo": 22, - "quadraticCurveTo": 4, - "closePath": 8, - "stroke": 7, - "canvas": 22, - "width=": 17, - "height=": 17, - "ii": 29, - "getContext": 26, - "2d": 26, - "ft": 70, - "fillStyle=": 13, - "rect": 3, - "fill": 10, - "getImageData": 1, - "wt": 26, - "32": 1, - "62": 1, - "84": 1, - "94": 1, - "ar": 20, - "255": 3, - "max": 1, - "min": 2, - ".5": 7, - "u/": 3, - "/u": 3, - "f/": 1, - "vt": 50, - "n*6": 2, - "i*": 3, - "h*t": 1, - "*t": 3, - "f*255": 1, - "u*255": 1, - "r*255": 1, - "st": 59, - "n/255": 1, - "t/255": 1, - "i/255": 1, - "f/r": 1, - "/f": 3, - "<0?0:n>": 1, - "si": 23, - "ti": 39, - "Math.round": 7, - "/r": 1, - "u*r": 1, - "ni": 30, - "tt": 53, - "ei": 26, - "ot": 43, - "i.gaugeType": 6, - "steelseries.GaugeType.TYPE4": 2, - "i.size": 6, - "i.minValue": 10, - "i.maxValue": 10, - "i.niceScale": 10, - "i.threshold": 10, - "/2": 25, - "i.section": 8, - "i.area": 4, - "lu": 10, - "i.titleString": 10, - "au": 10, - "i.unitString": 10, - "hu": 11, - "i.frameDesign": 10, - "steelseries.FrameDesign.METAL": 7, - "wu": 9, - "i.frameVisible": 10, - "i.backgroundColor": 10, - "steelseries.BackgroundColor.DARK_GRAY": 7, - "i.backgroundVisible": 10, - "pt": 48, - "i.pointerType": 4, - "steelseries.PointerType.TYPE1": 3, - "i.pointerColor": 4, - "steelseries.ColorDef.RED": 7, - "ee": 2, - "i.knobType": 4, - "steelseries.KnobType.STANDARD_KNOB": 14, - "fi": 26, - "i.knobStyle": 4, - "steelseries.KnobStyle.SILVER": 4, - "i.lcdColor": 8, - "steelseries.LcdColor.STANDARD": 9, - "i.lcdVisible": 8, - "eu": 13, - "i.lcdDecimals": 8, - "ye": 2, - "i.digitalFont": 8, - "pe": 2, - "i.fractionalScaleDecimals": 4, - "i.ledColor": 10, - "steelseries.LedColor.RED_LED": 7, - "ru": 14, - "i.ledVisible": 10, - "vf": 5, - "i.thresholdVisible": 8, - "kr": 17, - "i.minMeasuredValueVisible": 8, - "dr": 16, - "i.maxMeasuredValueVisible": 8, - "i.foregroundType": 6, - "steelseries.ForegroundType.TYPE1": 5, - "af": 5, - "i.foregroundVisible": 10, - "oe": 2, - "i.labelNumberFormat": 10, - "steelseries.LabelNumberFormat.STANDARD": 5, - "yr": 17, - "i.playAlarm": 10, - "uf": 5, - "i.alarmSound": 10, - "fe": 2, - "i.customLayer": 4, - "le": 1, - "i.tickLabelOrientation": 4, - "steelseries.GaugeType.TYPE1": 4, - "steelseries.TickLabelOrientation.TANGENT": 2, - "steelseries.TickLabelOrientation.NORMAL": 2, - "wr": 18, - "i.trendVisible": 4, - "hr": 17, - "i.trendColors": 4, - "steelseries.LedColor.GREEN_LED": 2, - "steelseries.LedColor.CYAN_LED": 2, - "sr": 21, - "i.useOdometer": 2, - "i.odometerParams": 2, - "wf": 4, - "i.odometerUseValue": 2, - "ki": 21, - "r.createElement": 11, - "ki.setAttribute": 2, - "yf": 3, - "ri": 24, - "ht": 34, - "ef": 5, - "steelseries.TrendState.OFF": 4, - "lr": 19, - "f*.06": 1, - "f*.29": 19, - "er": 19, - "f*.36": 4, - "et": 45, - "gi": 26, - "rr": 21, - "*lt": 9, - "r.getElementById": 7, - "u.save": 7, - "u.clearRect": 5, - "u.canvas.width": 7, - "u.canvas.height": 7, - "s/2": 2, - "k/2": 1, - "pf": 4, - ".6*s": 1, - "ne": 2, - ".4*k": 1, - "pr": 16, - "s/10": 1, - "ae": 2, - "hf": 4, - "k*.13": 2, - "s*.4": 1, - "sf": 5, - "rf": 5, - "k*.57": 1, - "tf": 5, - "k*.61": 1, - "Math.PI/2": 40, - "ue": 1, - "Math.PI/180": 5, - "ff": 5, - "ir": 23, - "nr": 22, - "ai": 21, - "yt": 32, - "fr": 21, - "oi": 23, - "lf": 5, - "re": 2, - "ai/": 2, - "h/vt": 1, - "*vt": 4, - "Math.ceil": 63, - "b/vt": 1, - "vt/": 3, - "ot.type": 10, - "Math.PI": 13, - "at/yt": 4, - "*Math.PI": 10, - "*ue": 1, - "ci/2": 1, - "wi": 24, - "nf": 7, - "wi.getContext": 2, - "di": 22, - "ut": 59, - "di.getContext": 2, - "fu": 13, - "hi": 15, - "f*.093457": 10, - "uu": 13, - "hi.getContext": 6, - "gt": 32, - "nu": 11, - "gt.getContext": 3, - "iu": 14, - "f*.028037": 6, - "se": 1, - "iu.getContext": 1, - "gr": 12, - "he": 1, - "gr.getContext": 1, - "vi": 16, - "tu": 13, - "vi.getContext": 2, - "yi": 17, - "ou": 13, - "yi.getContext": 2, - "pi": 24, - "kt": 24, - "pi.getContext": 2, - "pu": 9, - "li.getContext": 6, - "gu": 9, - "du": 10, - "ku": 9, - "yu": 10, - "su": 12, - "tr.getContext": 1, - "kf": 3, - "u.textAlign": 2, - "u.strokeStyle": 2, - "ei.textColor": 2, - "u.fillStyle": 2, - "steelseries.LcdColor.STANDARD_GREEN": 4, - "u.shadowColor": 2, - "u.shadowOffsetX": 2, - "s*.007": 3, - "u.shadowOffsetY": 2, - "u.shadowBlur": 2, - "u.font": 2, - "u.fillText": 2, - "n.toFixed": 2, - "bi*.05": 1, - "hf*.5": 1, - "pr*.38": 1, - "bi*.9": 1, - "u.restore": 6, - "te": 2, - "n.save": 35, - "n.drawImage": 14, - "k*.037383": 11, - "s*.523364": 2, - "k*.130841": 1, - "s*.130841": 1, - "k*.514018": 2, - "s*.831775": 1, - "k*.831775": 1, - "s*.336448": 1, - "k*.803738": 2, - "s*.626168": 1, - "n.restore": 35, - "ie": 2, - "t.width": 2, - "f*.046728": 1, - "t.height": 2, - "t.width*.9": 4, - "t.getContext": 2, - "n.createLinearGradient": 17, - ".1": 18, - "t.height*.9": 6, - "i.addColorStop": 27, - ".3": 8, - ".59": 4, - "n.fillStyle": 36, - "n.beginPath": 39, - "n.moveTo": 37, - "t.width*.5": 4, - "n.lineTo": 33, - "t.width*.1": 2, - "n.closePath": 34, - "n.fill": 17, - "n.strokeStyle": 27, - "n.stroke": 31, - "vu": 10, - "": 1, - "": 1, - "n.lineWidth": 30, - "s*.035": 2, - "at/yt*t": 1, - "at/yt*h": 1, - "yt/at": 1, - "n.translate": 93, - "n.rotate": 53, - "n.arc": 6, - "s*.365": 2, - "n.lineWidth/2": 2, - "df": 3, - "bt.labelColor.setAlpha": 1, - "n.textAlign": 12, - "n.textBaseline": 10, - "s*.04": 1, - "n.font": 34, - "bt.labelColor.getRgbaColor": 2, - "lt*fr": 1, - "s*.38": 2, - "s*.35": 1, - "s*.355": 1, - "s*.36": 1, - "s*.3": 1, - "s*.1": 1, - "oi/2": 2, - "b.toFixed": 1, - "c.toFixed": 2, - "le.type": 1, - "t.format": 7, - "n.fillText": 54, - "e.toFixed": 2, - "e.toPrecision": 1, - "n.frame": 22, - "n.background": 22, - "n.led": 20, - "n.pointer": 10, - "n.foreground": 22, - "n.trend": 4, - "n.odo": 2, - "rt": 45, - "uu.drawImage": 1, - "nu.drawImage": 3, - "se.drawImage": 1, - "steelseries.ColorDef.BLUE.dark.getRgbaColor": 6, - "he.drawImage": 1, - "steelseries.ColorDef.RED.medium.getRgbaColor": 6, - "ii.length": 2, - ".start": 12, - ".stop": 11, - ".color": 13, - "ui.length": 2, - "ut.save": 1, - "ut.translate": 3, - "ut.rotate": 1, - "ut.drawImage": 2, - "s*.475": 1, - "ut.restore": 1, - "steelseries.Odometer": 1, - "_context": 1, - "f*.075": 1, - "decimals": 1, - "wt.decimals": 1, - "wt.digits": 2, - "valueForeColor": 1, - "wt.valueForeColor": 1, - "valueBackColor": 1, - "wt.valueBackColor": 1, - "decimalForeColor": 1, - "wt.decimalForeColor": 1, - "decimalBackColor": 1, - "wt.decimalBackColor": 1, - "font": 1, - "wt.font": 1, - "tr.width": 1, - "nt": 75, - "bt.labelColor": 2, - "pt.type": 6, - "steelseries.TrendState.UP": 2, - "steelseries.TrendState.STEADY": 2, - "steelseries.TrendState.DOWN": 2, - "dt": 30, - "wi.width": 1, - "wi.height": 1, - "di.width": 1, - "di.height": 1, - "hi.width": 3, - "hi.height": 3, - "gt.width": 2, - "gt.height": 1, - "vi.width": 1, - "vi.height": 1, - "yi.width": 1, - "yi.height": 1, - "pi.width": 1, - "pi.height": 1, - "li.width": 3, - "li.height": 3, - "gf": 2, - "yf.repaint": 1, - "ur": 20, - "e3": 5, - "this.setValue": 7, - "": 5, - "ki.pause": 1, - "ki.play": 1, - "this.repaint": 126, - "this.getValue": 7, - "this.setOdoValue": 1, - "this.getOdoValue": 1, - "this.setValueAnimated": 7, - "t.playing": 1, - "t.stop": 1, - "Tween": 11, - "Tween.regularEaseInOut": 6, - "t.onMotionChanged": 1, - "n.target._pos": 7, - "": 1, - "i.repaint": 1, - "t.start": 1, - "this.resetMinMeasuredValue": 4, - "this.resetMaxMeasuredValue": 4, - "this.setMinMeasuredValueVisible": 4, - "this.setMaxMeasuredValueVisible": 4, - "this.setMaxMeasuredValue": 3, - "this.setMinMeasuredValue": 3, - "this.setTitleString": 4, - "this.setUnitString": 4, - "this.setMinValue": 4, - "this.getMinValue": 3, - "this.setMaxValue": 3, - "this.getMaxValue": 4, - "this.setThreshold": 4, - "this.setArea": 1, - "foreground": 30, - "this.setSection": 4, - "this.setThresholdVisible": 4, - "this.setLcdDecimals": 3, - "this.setFrameDesign": 7, - "this.setBackgroundColor": 7, - "pointer": 28, - "this.setForegroundType": 5, - "this.setPointerType": 3, - "this.setPointerColor": 4, - "this.setLedColor": 5, - "led": 18, - "this.setLcdColor": 5, - "this.setTrend": 2, - "this.setTrendVisible": 2, - "trend": 2, - "odo": 1, - "u.drawImage": 22, - "cu.setValue": 1, - "of.state": 1, - "u.translate": 8, - "u.rotate": 4, - "u.canvas.width*.4865": 2, - "u.canvas.height*.105": 2, - "s*.006": 1, - "kt.clearRect": 1, - "kt.save": 1, - "kt.translate": 2, - "kt.rotate": 1, - "kt.drawImage": 1, - "kt.restore": 1, - "i.useSectionColors": 4, - "i.valueColor": 6, - "i.valueGradient": 4, - "i.useValueGradient": 4, - "yi.setAttribute": 2, - "e/2": 2, - "ut/2": 4, - "e/10": 3, - "ut*.13": 1, - "e*.4": 1, - "or/2": 1, - "e*.116822": 3, - "e*.485981": 3, - "s*.093457": 5, - "e*.53": 1, - "ut*.61": 1, - "s*.06": 1, - "s*.57": 1, - "dt.type": 4, - "l/Math.PI*180": 4, - "l/et": 8, - "Math.PI/3": 1, - "ft/2": 2, - "Math.PI/": 1, - "ai.getContext": 2, - "s*.060747": 2, - "s*.023364": 2, - "ri.getContext": 6, - "yt.getContext": 5, - "si.getContext": 4, - "ci/": 2, - "f/ht": 1, - "*ht": 8, - "h/ht": 1, - "ht/": 2, - "*kt": 5, - "angle": 1, - "*st": 1, - "n.value": 4, - "tu.drawImage": 1, - "gr.drawImage": 3, - "at.getImageData": 1, - "at.drawImage": 1, - "bt.length": 4, - "ii.push": 1, - "Math.abs": 19, - "ai.width": 1, - "ai.height": 1, - "ri.width": 3, - "ri.height": 3, - "yt.width": 2, - "yt.height": 2, - "si.width": 2, - "si.height": 2, - "s*.085": 1, - "e*.35514": 2, - ".107476*ut": 1, - ".897195*ut": 1, - "t.addColorStop": 6, - ".22": 1, - ".76": 1, - "s*.075": 1, - ".112149*ut": 1, - ".892523*ut": 1, - "r.addColorStop": 6, - "e*.060747": 2, - "e*.023364": 2, - "n.createRadialGradient": 4, - ".030373*e": 1, - "u.addColorStop": 14, - "i*kt": 1, - "n.rect": 4, - "n.canvas.width": 3, - "n.canvas.height": 3, - "n.canvas.width/2": 6, - "n.canvas.height/2": 4, - "u.createRadialGradient": 1, - "t.light.getRgbaColor": 2, - "t.dark.getRgbaColor": 2, - "ni.textColor": 2, - "e*.007": 5, - "oi*.05": 1, - "or*.5": 1, - "cr*.38": 1, - "oi*.9": 1, - "ei.labelColor.setAlpha": 1, - "e*.04": 1, - "ei.labelColor.getRgbaColor": 2, - "st*di": 1, - "e*.28": 1, - "e*.1": 1, - "e*.0375": 1, - "h.toFixed": 3, - "df.type": 1, - "u.toFixed": 2, - "u.toPrecision": 1, - "kf.repaint": 1, - "": 3, - "yi.pause": 1, - "yi.play": 1, - "ti.playing": 1, - "ti.stop": 1, - "ti.onMotionChanged": 1, - "t.repaint": 4, - "ti.start": 1, - "this.setValueColor": 3, - "this.setSectionActive": 2, - "this.setGradient": 2, - "this.setGradientActive": 2, - "useGradient": 2, - "n/lt*": 1, - "vi.getEnd": 1, - "vi.getStart": 1, - "s/c": 1, - "vi.getColorAt": 1, - ".getRgbaColor": 3, - "": 1, - "e.medium.getHexColor": 1, - "i.medium.getHexColor": 1, - "n*kt": 1, - "pu.state": 1, - "i.orientation": 2, - "steelseries.Orientation.NORTH": 2, - "hi.setAttribute": 2, - "steelseries.GaugeType.TYPE5": 1, - "kt/at": 2, - "f.clearRect": 2, - "f.canvas.width": 3, - "f.canvas.height": 3, - "h/2": 1, - "k*.733644": 1, - ".455*h": 1, - ".51*k": 1, - "bi/": 2, - "l/ot": 1, - "*ot": 2, - "d/ot": 1, - "ot/": 1, - "ui.getContext": 4, - "u*.093457": 10, - "ii.getContext": 5, - "st.getContext": 2, - "u*.028037": 6, - "hr.getContext": 1, - "er.getContext": 1, - "fi.getContext": 4, - "kr.type": 1, - "ft.type": 1, - "h*.44": 3, - "k*.8": 1, - "k*.16": 1, - "h*.2": 2, - "k*.446666": 2, - "h*.8": 1, - "u*.046728": 1, - "h*.035": 1, - "kt/at*t": 1, - "kt/at*l": 1, - "at/kt": 1, - "h*.365": 2, - "it.labelColor.getRgbaColor": 4, - "vertical": 1, - ".046728*h": 1, - "n.measureText": 2, - ".width": 2, - "k*.4": 1, - "h*.3": 1, - "k*.47": 1, - "it.labelColor.setAlpha": 1, - "steelseries.Orientation.WEST": 6, - "h*.04": 1, - "ht*yi": 1, - "h*.41": 1, - "h*.415": 1, - "h*.42": 1, - "h*.48": 1, - "h*.0375": 1, - "d.toFixed": 1, - "f.toFixed": 1, - "i.toFixed": 2, - "i.toPrecision": 1, - "u/2": 5, - "cr.drawImage": 3, - "ar.drawImage": 1, - "or.drawImage": 1, - "or.restore": 1, - "rr.drawImage": 1, - "rr.restore": 1, - "gt.length": 2, - "p.save": 2, - "p.translate": 8, - "p.rotate": 4, - "p.restore": 3, - "ni.length": 2, - "p.drawImage": 1, - "h*.475": 1, - "k*.32": 1, - "h*1.17": 2, - "it.labelColor": 2, - "ut.type": 6, - "ui.width": 2, - "ui.height": 2, - "ii.width": 2, - "ii.height": 2, - "st.width": 1, - "st.height": 1, - "fi.width": 2, - "fi.height": 2, - "wu.repaint": 1, - "": 2, - "hi.pause": 1, - "hi.play": 1, - "dt.playing": 2, - "dt.stop": 2, - "dt.onMotionChanged": 2, - "": 1, - "dt.start": 2, - "f.save": 5, - "f.drawImage": 9, - "f.translate": 10, - "f.rotate": 5, - "f.canvas.width*.4865": 2, - "f.canvas.height*.27": 2, - "f.restore": 5, - "h*.006": 1, - "h*1.17/2": 1, - "et.clearRect": 1, - "et.save": 1, - "et.translate": 2, - "et.rotate": 1, - "et.drawImage": 1, - "et.restore": 1, - "i.width": 6, - "i.height": 6, - "fi.setAttribute": 2, - "l.type": 26, - "y.clearRect": 2, - "y.canvas.width": 3, - "y.canvas.height": 3, - "*.05": 4, - "f/2": 13, - "it/2": 2, - ".053": 1, - ".038": 1, - "*u": 1, - "u/22": 2, - ".89*f": 2, - "u/10": 2, - "ei/": 1, - "e/ut": 1, - "*ut": 2, - "s/ut": 1, - "ut/": 1, - "kt.getContext": 2, - "rt.getContext": 2, - "dt.getContext": 1, - "ni.getContext": 4, - "lt.textColor": 2, - "n.shadowColor": 2, - "n.shadowOffsetX": 4, - "u*.003": 2, - "n.shadowOffsetY": 4, - "n.shadowBlur": 4, - "u*.004": 1, - "u*.007": 2, - "u*.009": 1, - "f*.571428": 8, - "u*.88": 2, - "u*.055": 2, - "f*.7": 2, - "f*.695": 4, - "f*.18": 4, - "u*.22": 3, - "u*.15": 2, - "t.toFixed": 2, - "i.getContext": 2, - "t.save": 2, - "t.createLinearGradient": 2, - "i.height*.9": 6, - "t.fillStyle": 2, - "t.beginPath": 4, - "t.moveTo": 4, - "i.height*.5": 2, - "t.lineTo": 8, - "i.width*.9": 6, - "t.closePath": 4, - "i.width*.5": 2, - "t.fill": 2, - "t.strokeStyle": 2, - "t.stroke": 2, - "t.restore": 2, - "w.labelColor.setAlpha": 1, - "f*.1": 5, - "w.labelColor.getRgbaColor": 2, - ".34*f": 2, - ".36*f": 6, - ".33*f": 2, - ".32*f": 2, - "u*.12864": 3, - "u*.856796": 1, - "u*.7475": 1, - "c/": 2, - ".65*u": 1, - ".63*u": 3, - ".66*u": 1, - ".67*u": 1, - "f*.142857": 4, - "f*.871012": 2, - "f*.19857": 1, - "f*.82": 1, - "v/": 1, - "tickCounter": 4, - "currentPos": 20, - "tickCounter*a": 2, - "r.toFixed": 8, - "f*.28": 6, - "r.toPrecision": 4, - "u*.73": 3, - "ui/2": 1, - "vi.drawImage": 2, - "yi.drawImage": 2, - "hr.drawImage": 2, - "k.save": 1, - ".856796": 2, - ".7475": 2, - ".12864": 2, - "u*i": 1, - "u*r*": 1, - "bt/": 1, - "k.translate": 2, - "f*.365": 2, - "nt/2": 2, - ".871012": 3, - ".82": 2, - ".142857": 5, - ".19857": 6, - "f*r*bt/": 1, - "f*": 5, - "u*.58": 1, - "k.drawImage": 3, - "k.restore": 1, - "kt.width": 1, - "b*.093457": 2, - "kt.height": 1, - "d*.093457": 2, - "rt.width": 1, - "rt.height": 1, - "ni.width": 2, - "ni.height": 2, - "hu.repaint": 1, - "w.labelColor": 1, - "i*.12864": 2, - "i*.856796": 2, - "i*.7475": 1, - "t*.871012": 1, - "t*.142857": 8, - "t*.82": 1, - "t*.19857": 1, - "steelseries.BackgroundColor.CARBON": 2, - "steelseries.BackgroundColor.PUNCHED_SHEET": 2, - "steelseries.BackgroundColor.STAINLESS": 2, - "steelseries.BackgroundColor.BRUSHED_STAINLESS": 2, - "steelseries.BackgroundColor.TURNED": 2, - "r.setAlpha": 8, - ".05": 2, - "p.addColorStop": 4, - "r.getRgbaColor": 8, - ".15": 2, - ".48": 7, - ".49": 4, - "n.fillRect": 16, - "t*.435714": 4, - "i*.435714": 4, - "i*.142857": 1, - "b.addColorStop": 4, - ".69": 1, - ".7": 1, - ".4": 2, - "t*.007142": 4, - "t*.571428": 2, - "i*.007142": 4, - "i*.571428": 2, - "t*.45": 4, - "t*.114285": 1, - "t/2": 1, - "i*.0486/2": 1, - "i*.053": 1, - "i*.45": 4, - "i*.114285": 1, - "i/2": 1, - "t*.025": 1, - "t*.053": 1, - "ut.addColorStop": 2, - "wt.medium.getRgbaColor": 3, - "wt.light.getRgbaColor": 2, - "i*.05": 2, - "t*.05": 2, - "ot.addColorStop": 2, - ".98": 1, - "Math.PI*.5": 2, - "f*.05": 2, - ".049*t": 8, - ".825*t": 9, - "n.bezierCurveTo": 42, - ".7975*t": 2, - ".0264*t": 4, - ".775*t": 3, - ".0013*t": 12, - ".85*t": 2, - ".8725*t": 3, - ".0365*t": 9, - ".8075*t": 4, - ".7925*t": 3, - ".0214*t": 13, - ".7875*t": 4, - ".7825*t": 5, - ".0189*t": 4, - ".785*t": 1, - ".8175*t": 2, - ".815*t": 1, - ".8125*t": 2, - ".8*t": 2, - ".0377*t": 2, - ".86*t": 4, - ".0415*t": 2, - ".845*t": 1, - ".0465*t": 2, - ".805*t": 2, - ".0113*t": 10, - ".0163*t": 7, - ".8025*t": 1, - ".8225*t": 3, - ".8425*t": 1, - ".03*t": 2, - ".115*t": 5, - ".1075*t": 2, - ".1025*t": 8, - ".0038*t": 2, - ".76*t": 4, - ".7675*t": 2, - ".7725*t": 6, - ".34": 1, - ".0516*t": 7, - ".8525*t": 2, - ".0289*t": 8, - ".875*t": 3, - ".044*t": 1, - ".0314*t": 5, - ".12*t": 4, - ".0875*t": 3, - ".79*t": 1, - "": 5, - "fi.pause": 1, - "fi.play": 1, - "yt.playing": 1, - "yt.stop": 1, - "yt.onMotionChanged": 1, - "t.setValue": 1, - "yt.start": 1, - "mminMeasuredValue": 1, - "": 1, - "setMaxValue=": 1, - "y.drawImage": 6, - "u*n": 2, - "u*i*": 2, - "at/": 1, - "f*.34": 3, - "gt.height/2": 2, - "f*i*at/": 1, - "u*.65": 2, - "ft/": 1, - "dt.width": 1, - "dt.height/2": 2, - ".8": 1, - ".14857": 1, - "f*i*ft/": 1, - "y.save": 1, - "y.restore": 1, - "oi.setAttribute": 2, - "v.clearRect": 2, - "v.canvas.width": 4, - "v.canvas.height": 4, - ".053*e": 1, - "e/22": 2, - "e/1.95": 1, - "u/vt": 1, - "s/vt": 1, - "g.width": 4, - "f*.121428": 2, - "g.height": 4, - "e*.012135": 2, - "f*.012135": 2, - "e*.121428": 2, - "g.getContext": 2, - "d.width": 4, - "d.height": 4, - "d.getContext": 2, - "pt.getContext": 2, - "ci.getContext": 1, - "kt.textColor": 2, - "f*.007": 2, - "f*.009": 1, - "e*.009": 1, - "e*.88": 2, - "e*.055": 2, - "e*.22": 3, - "e*.15": 2, - "k.labelColor.setAlpha": 1, - "k.labelColor.getRgbaColor": 5, - "e*.12864": 3, - "e*.856796": 3, - ".65*e": 1, - ".63*e": 3, - ".66*e": 1, - ".67*e": 1, - "g/": 1, - "tickCounter*h": 2, - "e*.73": 3, - "ti/2": 1, - "n.bargraphled": 4, - "nr.drawImage": 2, - "tr.drawImage": 2, - "nt.save": 1, - "e*.728155*": 1, - "st/": 1, - "nt.translate": 2, - "rt/2": 2, - "f*.856796": 2, - "f*.12864": 2, - "*st/": 1, - "e*.58": 1, - "nt.drawImage": 3, - "nt.restore": 1, - "f*.012135/2": 1, - "ft.push": 1, - "*c": 2, - "y*.121428": 2, - "w*.012135": 2, - "y*.012135": 2, - "w*.121428": 2, - "y*.093457": 2, - "w*.093457": 2, - "pt.width": 1, - "pt.height": 1, - "ku.repaint": 1, - "k.labelColor": 1, - "r*": 2, - "r*1.014": 5, - "t*.856796": 1, - "t*.12864": 1, - "t*.13": 3, - "r*1.035": 4, - "f.setAlpha": 8, - ".047058": 2, - "rt.addColorStop": 4, - "f.getRgbaColor": 8, - ".145098": 1, - ".149019": 1, - "t*.15": 1, - "i*.152857": 1, - ".298039": 1, - "it.addColorStop": 4, - ".686274": 1, - ".698039": 1, - "i*.851941": 1, - "t*.121428": 1, - "i*.012135": 1, - "t*.012135": 1, - "i*.121428": 1, - "*r": 4, - "o/r*": 1, - "yt.getEnd": 2, - "yt.getStart": 2, - "lt/ct": 2, - "yt.getColorAt": 2, - "": 1, - "st.medium.getHexColor": 2, - "a.medium.getHexColor": 2, - "b/2": 2, - "e/r*": 1, - "": 1, - "v.createRadialGradient": 2, - "": 5, - "oi.pause": 1, - "oi.play": 1, - "": 1, - "bargraphled": 3, - "v.drawImage": 2, - "": 1, - "856796": 4, - "728155": 2, - "34": 2, - "12864": 2, - "142857": 2, - "65": 2, - "drawImage": 12, - "save": 27, - "restore": 14, - "repaint": 23, - "dr=": 1, - "128": 2, - "48": 1, - "w=": 4, - "lcdColor": 4, - "LcdColor": 4, - "STANDARD": 3, - "pt=": 5, - "lcdDecimals": 4, - "lt=": 4, - "unitString": 4, - "at=": 3, - "unitStringVisible": 4, - "ht=": 6, - "digitalFont": 4, - "bt=": 3, - "valuesNumeric": 4, - "ct=": 5, - "autoScroll": 2, - "section": 2, - "wt=": 3, - "getElementById": 4, - "clearRect": 8, - "v=": 5, - "floor": 13, - "ot=": 4, - "sans": 12, - "serif": 13, - "it=": 7, - "nt=": 5, - "et=": 6, - "kt=": 4, - "textAlign=": 7, - "strokeStyle=": 8, - "clip": 1, - "font=": 28, - "measureText": 4, - "toFixed": 3, - "fillText": 23, - "38": 5, - "o*.2": 1, - "<=o-4&&(e=0,c=!1),u.fillText(n,o-2-e,h*.5+v*.38)),u.restore()},dt=function(n,i,r,u){var>": 1, - "rt=": 3, - "095": 1, - "createLinearGradient": 6, - "addColorStop": 25, - "4c4c4c": 1, - "08": 1, - "666666": 2, - "92": 1, - "e6e6e6": 1, - "gradientStartColor": 1, - "tt=": 3, - "gradientFraction1Color": 1, - "gradientFraction2Color": 1, - "gradientFraction3Color": 1, - "gradientStopColor": 1, - "yt=": 4, - "31": 26, - "ut=": 6, - "rgb": 6, - "03": 1, - "49": 1, - "57": 1, - "83": 1, - "wt.repaint": 1, - "resetBuffers": 1, - "this.setScrolling": 1, - "w.textColor": 1, - "": 1, - "<=f[n].stop){t=et[n],i=ut[n];break}u.drawImage(t,0,0),kt(a,i)},this.repaint(),this},wr=function(n,t){t=t||{};var>": 1, - "64": 1, - "875": 2, - "textBaseline=": 4, - "textColor": 2, - "STANDARD_GREEN": 1, - "shadowColor=": 1, - "shadowOffsetX=": 1, - "05": 2, - "shadowOffsetY=": 1, - "shadowBlur=": 1, - "06": 1, - "46": 1, - "8": 2, - "setValue=": 2, - "setLcdColor=": 2, - "repaint=": 2, - "br=": 1, - "200": 2, - "st=": 3, - "decimalsVisible": 2, - "gt=": 1, - "textOrientationFixed": 2, - "frameDesign": 4, - "FrameDesign": 2, - "METAL": 2, - "frameVisible": 4, - "backgroundColor": 2, - "BackgroundColor": 1, - "DARK_GRAY": 1, - "vt=": 2, - "backgroundVisible": 2, - "pointerColor": 4, - "ColorDef": 2, - "RED": 1, - "foregroundType": 4, - "ForegroundType": 2, - "TYPE1": 2, - "foregroundVisible": 4, - "180": 26, - "ni=": 1, - "labelColor": 6, - "getRgbaColor": 21, - "translate": 38, - "360": 15, - "p.labelColor.getRgbaColor": 4, - "f*.38": 7, - "f*.37": 3, - "": 1, - "rotate": 31, - "u00b0": 8, - "41": 3, - "45": 5, - "25": 9, - "085": 4, - "100": 4, - "90": 3, - "21": 2, - "u221e": 2, - "135": 1, - "225": 1, - "75": 3, - "270": 1, - "315": 1, - "ti=": 2, - "200934": 2, - "434579": 4, - "163551": 5, - "560747": 4, - "lineWidth=": 6, - "lineCap=": 5, - "lineJoin=": 5, - "471962": 4, - "205607": 1, - "523364": 5, - "799065": 2, - "836448": 5, - "794392": 1, - "ii=": 2, - "350467": 5, - "130841": 1, - "476635": 2, - "bezierCurveTo": 6, - "490654": 3, - "345794": 3, - "509345": 1, - "154205": 1, - "350466": 1, - "dark": 2, - "light": 5, - "setAlpha": 8, - "70588": 4, - "59": 3, - "dt=": 2, - "285046": 5, - "514018": 6, - "21028": 1, - "481308": 4, - "280373": 3, - "495327": 2, - "504672": 2, - "224299": 1, - "289719": 1, - "714953": 5, - "789719": 1, - "719626": 3, - "7757": 1, - "71028": 1, - "ft=": 3, - "*10": 2, - "": 2, - "": 2, - "": 2, - "": 2, - "<-90&&e>": 2, - "<-180&&e>": 2, - "<-270&&e>": 2, - "d.playing": 2, - "d.stop": 2, - "d.onMotionChanged": 2, - "d.start": 2, - "s.save": 4, - "s.clearRect": 3, - "s.canvas.width": 4, - "s.canvas.height": 4, - "s.drawImage": 8, - "e*kt": 1, - "s.translate": 6, - "s.rotate": 3, - "s.fillStyle": 1, - "s.textAlign": 1, - "s.textBaseline": 1, - "s.restore": 6, - "s.font": 2, - "f*.15": 2, - "s.fillText": 2, - "f*.35": 26, - "f*.2": 1, - "k*Math.PI/180": 1, - "u.size": 4, - "u.frameDesign": 4, - "u.frameVisible": 4, - "u.backgroundColor": 4, - "u.backgroundVisible": 4, - "u.pointerType": 2, - "steelseries.PointerType.TYPE2": 1, - "u.pointerColor": 4, - "u.knobType": 4, - "u.knobStyle": 4, - "u.foregroundType": 4, - "u.foregroundVisible": 4, - "u.pointSymbols": 4, - "u.customLayer": 4, - "u.degreeScale": 4, - "u.roseVisible": 4, - "ft.getContext": 2, - "ut.getContext": 2, - "it.getContext": 2, - "ot.getContext": 3, - "et.getContext": 2, - "tt.labelColor.getRgbaColor": 2, - ".08*f": 1, - "f*.033": 1, - "st*10": 2, - ".substring": 2, - ".12*f": 2, - ".06*f": 2, - "tt.symbolColor.getRgbaColor": 1, - "st*2.5": 1, - "bt.type": 1, - "f*.53271": 6, - "e*.453271": 5, - "f*.5": 17, - "e*.149532": 8, - "f*.467289": 6, - "f*.453271": 2, - "e*.462616": 2, - "f*.443925": 9, - "e*.481308": 2, - "e*.5": 10, - "f*.556074": 9, - "f*.546728": 2, - ".471962*f": 5, - ".528036*f": 5, - "o.addColorStop": 4, - "h.light.getRgbaColor": 6, - ".46": 3, - ".47": 3, - "h.medium.getRgbaColor": 6, - "h.dark.getRgbaColor": 3, - "n.lineCap": 5, - "n.lineJoin": 5, - "e*.546728": 5, - "e*.850467": 4, - "e*.537383": 2, - "e*.518691": 2, - "s.addColorStop": 4, - "e*.490654": 2, - "e*.53271": 2, - "e*.556074": 3, - "e*.495327": 4, - "f*.528037": 2, - "f*.471962": 2, - "e*.504672": 4, - ".480099": 1, - "f*.006": 2, - "ft.width": 1, - "ft.height": 1, - "ut.width": 1, - "ut.height": 1, - "it.width": 1, - "it.height": 1, - "ot.width": 1, - "ot.height": 1, - "et.width": 1, - "et.height": 1, - "Tween.elasticEaseOut": 1, - "r.repaint": 1, - "this.setPointSymbols": 1, - "p*st": 1, - "b.clearRect": 1, - "b.save": 1, - "b.translate": 2, - "b.rotate": 1, - "b.drawImage": 1, - "b.restore": 1, - "u.pointerTypeLatest": 2, - "u.pointerTypeAverage": 2, - "steelseries.PointerType.TYPE8": 1, - "u.pointerColorAverage": 2, - "steelseries.ColorDef.BLUE": 1, - "u.lcdColor": 2, - "u.lcdVisible": 2, - "u.digitalFont": 2, - "u.section": 2, - "u.area": 2, - "u.lcdTitleStrings": 2, - "u.titleString": 2, - "u.useColorLabels": 2, - "this.valueLatest": 1, - "this.valueAverage": 1, - "Math.PI*2": 1, - "e.save": 2, - "e.clearRect": 1, - "e.canvas.width": 2, - "e.canvas.height": 2, - "f/10": 1, - "f*.3": 4, - "s*.12": 1, - "s*.32": 1, - "s*.565": 1, - "bt.getContext": 1, - "at.getContext": 1, - "vt.getContext": 1, - "lt.getContext": 1, - "wt.getContext": 1, - "e.textAlign": 1, - "e.strokeStyle": 1, - "ht.textColor": 2, - "e.fillStyle": 1, - "<0&&(n+=360),n=\"00\"+Math.round(n),n=n.substring(n.length,n.length-3),(ht===steelseries.LcdColor.STANDARD||ht===steelseries.LcdColor.STANDARD_GREEN)&&(e.shadowColor=\"gray\",e.shadowOffsetX=f*.007,e.shadowOffsetY=f*.007,e.shadowBlur=f*.007),e.font=pr?gr:br,e.fillText(n+\"\\u00b0\",f/2+gt*.05,(t?or:cr)+er*.5+ui*.38,gt*.9),e.restore()},wi=function(n,t,i,r,u){n.save(),n.strokeStyle=r,n.fillStyle=r,n.lineWidth=f*.035;var>": 1, - "arc": 2, - "365": 2, - "lineWidth": 1, - "lr=": 1, - "35": 1, - "355": 1, - "36": 2, - "bold": 1, - "04": 2, - "ct*5": 1, - "k.symbolColor.getRgbaColor": 1, - "ct*2.5": 1, - "ti.length": 1, - "kt.medium.getRgbaColor": 1, - ".04*f": 1, - "s*.29": 1, - "ii.medium.getRgbaColor": 1, - "s*.71": 1, - "rr.length": 1, - ".0467*f": 1, - "s*.5": 1, - "et.length": 2, - "ft.length": 2, - "": 1, - "ci=": 1, - "li=": 1, - "ai=": 1, - "ki=": 1, - "yi=": 1, - "setValueLatest=": 1, - "getValueLatest=": 1, - "setValueAverage=": 1, - "getValueAverage=": 1, - "setValueAnimatedLatest=": 1, - "playing": 2, - "regularEaseInOut": 2, - "onMotionChanged=": 2, - "_pos": 2, - "onMotionFinished=": 2, - "setValueAnimatedAverage=": 1, - "setArea=": 1, - "setSection=": 1, - "setFrameDesign=": 1, - "pi=": 1, - "setBackgroundColor=": 1, - "setForegroundType=": 1, - "si=": 1, - "setPointerColor=": 1, - "setPointerColorAverage=": 1, - "setPointerType=": 1, - "setPointerTypeAverage=": 1, - "ri=": 1, - "setPointSymbols=": 1, - "setLcdTitleStrings=": 1, - "fi=": 1, - "006": 1, - "ei=": 1, - "ru=": 1, - "WHITE": 1, - "037383": 1, - "056074": 1, - "7fd5f0": 2, - "3c4439": 2, - "72": 1, - "KEYWORDS": 2, - "array_to_hash": 11, - "RESERVED_WORDS": 2, - "KEYWORDS_BEFORE_EXPRESSION": 2, - "KEYWORDS_ATOM": 2, - "OPERATOR_CHARS": 1, - "RE_HEX_NUMBER": 1, - "RE_OCT_NUMBER": 1, - "RE_DEC_NUMBER": 1, - "OPERATORS": 2, - "WHITESPACE_CHARS": 2, - "PUNC_BEFORE_EXPRESSION": 2, - "PUNC_CHARS": 1, - "REGEXP_MODIFIERS": 1, - "UNICODE": 1, - "non_spacing_mark": 1, - "space_combining_mark": 1, - "connector_punctuation": 1, - "is_letter": 3, - "UNICODE.letter.test": 1, - "is_digit": 3, - "ch.charCodeAt": 1, - "//XXX": 1, - "out": 1, - "means": 1, - "is_alphanumeric_char": 3, - "is_unicode_combining_mark": 2, - "UNICODE.non_spacing_mark.test": 1, - "UNICODE.space_combining_mark.test": 1, - "is_unicode_connector_punctuation": 2, - "UNICODE.connector_punctuation.test": 1, - "is_identifier_start": 2, - "is_identifier_char": 1, - "zero": 2, - "joiner": 2, - "": 1, - "": 1, - "my": 1, - "ECMA": 1, - "PDF": 1, - "parse_js_number": 2, - "RE_HEX_NUMBER.test": 1, - "num.substr": 2, - "RE_OCT_NUMBER.test": 1, - "RE_DEC_NUMBER.test": 1, - "JS_Parse_Error": 2, - "message": 5, - "this.col": 2, - "ex": 3, - "ex.name": 1, - "this.stack": 2, - "ex.stack": 1, - "JS_Parse_Error.prototype.toString": 1, - "js_error": 2, - "is_token": 1, - "token": 5, - "token.type": 1, - "token.value": 1, - "EX_EOF": 3, - "tokenizer": 2, - "TEXT": 1, - "TEXT.replace": 1, - "uFEFF/": 1, - "tokpos": 1, - "tokline": 1, - "tokcol": 1, - "newline_before": 1, - "regex_allowed": 1, - "comments_before": 1, - "peek": 5, - "S.text.charAt": 2, - "S.pos": 4, - "signal_eof": 4, - "S.newline_before": 3, - "S.line": 2, - "S.col": 3, - "eof": 6, - "S.peek": 1, - "what": 2, - "S.text.indexOf": 1, - "start_token": 1, - "S.tokline": 3, - "S.tokcol": 3, - "S.tokpos": 3, - "is_comment": 2, - "S.regex_allowed": 1, - "HOP": 5, - "UNARY_POSTFIX": 1, - "nlb": 1, - "ret.comments_before": 1, - "S.comments_before": 2, - "skip_whitespace": 1, - "read_while": 2, - "pred": 2, - "parse_error": 3, - "read_num": 1, - "prefix": 6, - "has_e": 3, - "after_e": 5, - "has_x": 5, - "has_dot": 3, - "valid": 4, - "read_escaped_char": 1, - "hex_bytes": 3, - "digit": 3, - "read_string": 1, - "with_eof_error": 1, - "comment1": 1, - "Unterminated": 2, - "multiline": 1, - "comment2": 1, - "WARNING": 1, - "***": 1, - "Found": 1, - "warn": 3, - "tok": 1, - "read_name": 1, - "backslash": 2, - "Expecting": 1, - "UnicodeEscapeSequence": 1, - "uXXXX": 1, - "Unicode": 1, - "identifier": 1, - "regular": 1, - "regexp": 5, - "operator": 14, - "punc": 27, - "atom": 5, - "keyword": 11, - "Unexpected": 3, - "void": 1, - "<\",>": 1, - "<=\",>": 1, - "debugger": 2, - "const": 2, - "stat": 1, - "Label": 1, - "without": 1, - "statement": 1, - "defun": 1, - "Name": 1, - "Missing": 1, - "catch/finally": 1, - "blocks": 1, - "unary": 2, - "dot": 2, - "postfix": 1, - "Invalid": 2, - "binary": 1, - "conditional": 1, - "assign": 1, - "assignment": 1, - "seq": 1, - "member": 2, - "array.length": 1, - "Object.prototype.hasOwnProperty.call": 1, - "exports.tokenizer": 1, - "exports.parse": 1, - "parse": 1, - "exports.slice": 1, - "exports.curry": 1, - "curry": 1, - "exports.member": 1, - "exports.array_to_hash": 1, - "exports.PRECEDENCE": 1, - "PRECEDENCE": 1, - "exports.KEYWORDS_ATOM": 1, - "exports.RESERVED_WORDS": 1, - "exports.KEYWORDS": 1, - "exports.ATOMIC_START_TOKEN": 1, - "ATOMIC_START_TOKEN": 1, - "exports.OPERATORS": 1, - "exports.is_alphanumeric_char": 1, - "exports.set_logger": 1, - "logger": 2 - }, - "JSON": { - "{": 73, - "[": 17, - "]": 17, - "}": 73, - "true": 3 - }, - "JSON5": { - "{": 6, - "foo": 1, - "while": 1, - "true": 1, - "this": 1, - "here": 1, - "//": 2, - "inline": 1, - "comment": 1, - "hex": 1, - "xDEADbeef": 1, - "half": 1, - ".5": 1, - "delta": 1, - "+": 1, - "to": 1, - "Infinity": 1, - "and": 1, - "beyond": 1, - "finally": 1, - "oh": 1, - "[": 3, - "]": 3, - "}": 6, - "name": 1, - "version": 1, - "description": 1, - "keywords": 1, - "author": 1, - "contributors": 1, - "main": 1, - "bin": 1, - "dependencies": 1, - "devDependencies": 1, - "mocha": 1, - "scripts": 1, - "build": 1, - "test": 1, - "homepage": 1, - "repository": 1, - "type": 1, - "url": 1 - }, - "JSONLD": { - "{": 7, - "}": 7, - "[": 1, - "null": 2, - "]": 1 - }, - "Julia": { - "##": 5, - "Test": 1, - "case": 1, - "from": 1, - "Issue": 1, - "#445": 1, - "#STOCKCORR": 1, - "-": 11, - "The": 1, - "original": 1, - "unoptimised": 1, - "code": 1, - "that": 1, - "simulates": 1, - "two": 2, - "correlated": 1, - "assets": 1, - "function": 1, - "stockcorr": 1, - "(": 13, - ")": 13, - "Correlated": 1, - "asset": 1, - "information": 1, - "CurrentPrice": 3, - "[": 20, - "]": 20, - "#": 11, - "Initial": 1, - "Prices": 1, - "of": 6, - "the": 2, - "stocks": 1, - "Corr": 2, - ";": 1, - "Correlation": 1, - "Matrix": 2, - "T": 5, - "Number": 2, - "days": 3, - "to": 1, - "simulate": 1, - "years": 1, - "n": 4, - "simulations": 1, - "dt": 3, - "/250": 1, - "Time": 1, - "step": 1, - "year": 1, - "Div": 3, - "Dividend": 1, - "Vol": 5, - "Volatility": 1, - "Market": 1, - "Information": 1, - "r": 3, - "Risk": 1, - "free": 1, - "rate": 1, - "Define": 1, - "storages": 1, - "SimulPriceA": 5, - "zeros": 2, - "Simulated": 2, - "Price": 2, - "Asset": 2, - "A": 1, - "SimulPriceB": 5, - "B": 1, - "Generating": 1, - "paths": 1, - "stock": 1, - "prices": 1, - "by": 2, - "Geometric": 1, - "Brownian": 1, - "Motion": 1, - "UpperTriangle": 2, - "chol": 1, - "Cholesky": 1, - "decomposition": 1, - "for": 2, - "i": 5, - "Wiener": 1, - "randn": 1, - "CorrWiener": 1, - "Wiener*UpperTriangle": 1, - "j": 7, - "*exp": 2, - "/2": 2, - "*dt": 2, - "+": 2, - "*sqrt": 2, - "*CorrWiener": 2, - "end": 3, - "return": 1 - }, - "Kotlin": { - "package": 1, - "addressbook": 1, - "class": 5, - "Contact": 1, - "(": 15, - "val": 16, - "name": 2, - "String": 7, - "emails": 1, - "List": 3, - "": 1, - "addresses": 1, - "": 1, - "phonenums": 1, - "": 1, - ")": 15, - "EmailAddress": 1, - "user": 1, - "host": 1, - "PostalAddress": 1, - "streetAddress": 1, - "city": 1, - "zip": 1, - "state": 2, - "USState": 1, - "country": 3, - "Country": 7, - "{": 6, - "assert": 1, - "null": 3, - "xor": 1, - "Countries": 2, - "[": 3, - "]": 3, - "}": 6, - "PhoneNumber": 1, - "areaCode": 1, - "Int": 1, - "number": 1, - "Long": 1, - "object": 1, - "fun": 1, - "get": 2, - "id": 2, - "CountryID": 1, - "countryTable": 2, - "private": 2, - "var": 1, - "table": 5, - "Map": 2, - "": 2, - "if": 1, - "HashMap": 1, - "for": 1, - "line": 3, - "in": 1, - "TextFile": 1, - ".lines": 1, - "stripWhiteSpace": 1, - "true": 1, - "return": 1 - }, - "KRL": { - "ruleset": 1, - "sample": 1, - "{": 3, - "meta": 1, - "name": 1, - "description": 1, - "<<": 1, - "Hello": 1, - "world": 1, - "author": 1, - "}": 3, - "rule": 1, - "hello": 1, - "select": 1, - "when": 1, - "web": 1, - "pageview": 1, - "notify": 1, - "(": 1, - ")": 1, - ";": 1 - }, - "Lasso": { - "<": 7, - "LassoScript": 1, - "//": 169, - "JSON": 2, - "Encoding": 1, - "and": 52, - "Decoding": 1, - "Copyright": 1, - "-": 2248, - "LassoSoft": 1, - "Inc.": 1, - "": 1, - "": 1, - "": 1, - "This": 5, - "tag": 11, - "is": 35, - "now": 23, - "incorporated": 1, - "in": 46, - "Lasso": 15, - "If": 4, - "(": 640, - "Lasso_TagExists": 1, - ")": 639, - "False": 1, - ";": 573, - "Define_Tag": 1, - "Namespace": 1, - "Required": 1, - "Optional": 1, - "Local": 7, - "Map": 3, - "r": 8, - "n": 30, - "t": 8, - "f": 2, - "b": 2, - "output": 30, - "newoptions": 1, - "options": 2, - "array": 20, - "set": 10, - "list": 4, - "queue": 2, - "priorityqueue": 2, - "stack": 2, - "pair": 1, - "map": 23, - "[": 22, - "]": 23, - "literal": 3, - "string": 59, - "integer": 30, - "decimal": 5, - "boolean": 4, - "null": 26, - "date": 23, - "temp": 12, - "object": 7, - "{": 18, - "}": 18, - "client_ip": 1, - "client_address": 1, - "__jsonclass__": 6, - "deserialize": 2, - "": 3, - "": 3, - "Decode_JSON": 2, - "Decode_": 1, - "value": 14, - "consume_string": 1, - "ibytes": 9, - "unescapes": 1, - "u": 1, - "UTF": 4, - "%": 14, - "QT": 4, - "TZ": 2, - "T": 3, - "consume_token": 1, - "obytes": 3, - "delimit": 7, - "true": 12, - "false": 8, - ".": 5, - "consume_array": 1, - "consume_object": 1, - "key": 3, - "val": 1, - "native": 2, - "comment": 2, - "http": 6, - "//www.lassosoft.com/json": 1, - "start": 5, - "Literal": 2, - "String": 1, - "Object": 2, - "JSON_RPCCall": 1, - "RPCCall": 1, - "JSON_": 1, - "method": 7, - "params": 11, - "id": 7, - "host": 6, - "//localhost/lassoapps.8/rpc/rpc.lasso": 1, - "request": 2, - "result": 6, - "JSON_Records": 3, - "KeyField": 1, - "ReturnField": 1, - "ExcludeField": 1, - "Fields": 1, - "_fields": 1, - "fields": 2, - "No": 1, - "found": 5, - "for": 65, - "_keyfield": 4, - "keyfield": 4, - "ID": 1, - "_index": 1, - "_return": 1, - "returnfield": 1, - "_exclude": 1, - "excludefield": 1, - "_records": 1, - "_record": 1, - "_temp": 1, - "_field": 1, - "_output": 1, - "error_msg": 15, - "error_code": 11, - "found_count": 11, - "rows": 1, - "#_records": 1, - "Return": 7, - "@#_output": 1, - "/Define_Tag": 1, - "/If": 3, - "define": 20, - "trait_json_serialize": 2, - "trait": 1, - "require": 1, - "asString": 3, - "json_serialize": 18, - "e": 13, - "bytes": 8, - "+": 146, - "#e": 13, - "Replace": 19, - "&": 21, - "json_literal": 1, - "asstring": 4, - "format": 7, - "gmt": 1, - "|": 13, - "trait_forEach": 1, - "local": 116, - "foreach": 1, - "#output": 50, - "#delimit": 7, - "#1": 3, - "return": 75, - "with": 25, - "pr": 1, - "eachPair": 1, - "select": 1, - "#pr": 2, - "first": 12, - "second": 8, - "join": 5, - "json_object": 2, - "foreachpair": 1, - "any": 14, - "serialize": 1, - "json_consume_string": 3, - "while": 9, - "#temp": 19, - "#ibytes": 17, - "export8bits": 6, - "#obytes": 5, - "import8bits": 4, - "Escape": 1, - "/while": 7, - "unescape": 1, - "//Replace": 1, - "if": 76, - "BeginsWith": 1, - "&&": 30, - "EndsWith": 1, - "Protect": 1, - "serialization_reader": 1, - "xml": 1, - "read": 1, - "/Protect": 1, - "else": 32, - "size": 24, - "or": 6, - "regexp": 1, - "d": 2, - "Z": 1, - "matches": 1, - "Format": 1, - "yyyyMMdd": 2, - "HHmmssZ": 1, - "HHmmss": 1, - "/if": 53, - "json_consume_token": 2, - "marker": 4, - "Is": 1, - "also": 5, - "end": 2, - "of": 24, - "token": 1, - "//............................................................................": 2, - "string_IsNumeric": 1, - "json_consume_array": 3, - "While": 1, - "Discard": 1, - "whitespace": 3, - "Else": 7, - "insert": 18, - "#key": 12, - "json_consume_object": 2, - "Loop_Abort": 1, - "/While": 1, - "Find": 3, - "isa": 25, - "First": 4, - "find": 57, - "Second": 1, - "json_deserialize": 1, - "removeLeading": 1, - "bom_utf8": 1, - "Reset": 1, - "on": 1, - "provided": 1, - "**/": 1, - "type": 63, - "parent": 5, - "public": 1, - "onCreate": 1, - "...": 3, - "..onCreate": 1, - "#rest": 1, - "json_rpccall": 1, - "#id": 2, - "#host": 4, - "Lasso_UniqueID": 1, - "Include_URL": 1, - "PostParams": 1, - "Encode_JSON": 1, - "#method": 1, - "#params": 5, - "": 6, - "2009": 14, - "09": 10, - "04": 8, - "JS": 126, - "Added": 40, - "content_body": 14, - "compatibility": 4, - "pre": 4, - "8": 6, - "5": 4, - "05": 4, - "07": 6, - "timestamp": 4, - "to": 98, - "knop_cachestore": 4, - "maxage": 2, - "parameter": 8, - "knop_cachefetch": 4, - "Corrected": 8, - "construction": 2, - "cache_name": 2, - "internally": 2, - "the": 86, - "knop_cache": 2, - "tags": 14, - "so": 16, - "it": 20, - "will": 12, - "work": 6, - "correctly": 2, - "at": 10, - "site": 4, - "root": 2, - "2008": 6, - "11": 8, - "dummy": 2, - "knop_debug": 4, - "ctype": 2, - "be": 38, - "able": 14, - "transparently": 2, - "without": 4, - "L": 2, - "Debug": 2, - "24": 2, - "knop_stripbackticks": 2, - "01": 4, - "28": 2, - "Cache": 2, - "name": 32, - "used": 12, - "when": 10, - "using": 8, - "session": 4, - "storage": 8, - "2007": 6, - "12": 8, - "knop_cachedelete": 2, - "Created": 4, - "03": 2, - "knop_foundrows": 2, - "condition": 4, - "returning": 2, - "normal": 2, - "For": 2, - "lasso_tagexists": 4, - "define_tag": 48, - "namespace=": 12, - "__html_reply__": 4, - "define_type": 14, - "debug": 2, - "_unknowntag": 6, - "onconvert": 2, - "stripbackticks": 2, - "description=": 2, - "priority=": 2, - "required=": 2, - "input": 2, - "split": 2, - "@#output": 2, - "/define_tag": 36, - "description": 34, - "namespace": 16, - "priority": 8, - "Johan": 2, - "S": 2, - "lve": 2, - "#charlist": 6, - "current": 10, - "time": 8, - "a": 52, - "mixed": 2, - "up": 4, - "as": 26, - "seed": 6, - "#seed": 36, - "convert": 4, - "this": 14, - "base": 6, - "conversion": 4, - "get": 12, - "#base": 8, - "/": 6, - "over": 2, - "new": 14, - "chunk": 2, - "millisecond": 2, - "math_random": 2, - "lower": 2, - "upper": 2, - "__lassoservice_ip__": 2, - "response_localpath": 8, - "removetrailing": 8, - "response_filepath": 8, - "//tagswap.net/found_rows": 2, - "action_statement": 2, - "string_findregexp": 8, - "#sql": 42, - "ignorecase": 12, - "||": 8, - "maxrecords_value": 2, - "inaccurate": 2, - "must": 4, - "accurate": 2, - "Default": 2, - "usually": 2, - "fastest.": 2, - "Can": 2, - "not": 10, - "GROUP": 4, - "BY": 6, - "example.": 2, - "normalize": 4, - "around": 2, - "FROM": 2, - "expression": 6, - "string_replaceregexp": 8, - "replace": 8, - "ReplaceOnlyOne": 2, - "substring": 6, - "remove": 6, - "ORDER": 2, - "statement": 4, - "since": 4, - "causes": 4, - "problems": 2, - "field": 26, - "aliases": 2, - "we": 2, - "can": 14, - "simple": 2, - "later": 2, - "query": 4, - "contains": 2, - "use": 10, - "SQL_CALC_FOUND_ROWS": 2, - "which": 2, - "much": 2, - "slower": 2, - "see": 16, - "//bugs.mysql.com/bug.php": 2, - "removeleading": 2, - "inline": 4, - "sql": 2, - "exit": 2, - "here": 2, - "normally": 2, - "/inline": 2, - "fallback": 4, - "required": 10, - "optional": 36, - "local_defined": 26, - "knop_seed": 2, - "#RandChars": 4, - "Get": 2, - "Math_Random": 2, - "Min": 2, - "Max": 2, - "Size": 2, - "#value": 14, - "#numericValue": 4, - "length": 8, - "#cryptvalue": 10, - "#anyChar": 2, - "Encrypt_Blowfish": 2, - "decrypt_blowfish": 2, - "String_Remove": 2, - "StartPosition": 2, - "EndPosition": 2, - "Seed": 2, - "String_IsAlphaNumeric": 2, - "self": 72, - "_date_msec": 4, - "/define_type": 4, - "seconds": 4, - "default": 4, - "store": 4, - "all": 6, - "page": 14, - "vars": 8, - "specified": 8, - "iterate": 12, - "keys": 6, - "var": 38, - "#item": 10, - "#type": 26, - "#data": 14, - "/iterate": 12, - "//fail_if": 6, - "session_id": 6, - "#session": 10, - "session_addvar": 4, - "#cache_name": 72, - "duration": 4, - "#expires": 4, - "server_name": 6, - "initiate": 10, - "thread": 6, - "RW": 6, - "lock": 24, - "global": 40, - "Thread_RWLock": 6, - "create": 6, - "reference": 10, - "@": 8, - "writing": 6, - "#lock": 12, - "writelock": 4, - "check": 6, - "cache": 4, - "unlock": 6, - "writeunlock": 4, - "#maxage": 4, - "cached": 8, - "data": 12, - "too": 4, - "old": 4, - "reading": 2, - "readlock": 2, - "readunlock": 2, - "ignored": 2, - "//##################################################################": 4, - "knoptype": 2, - "All": 4, - "Knop": 6, - "custom": 8, - "types": 10, - "should": 4, - "have": 6, - "identify": 2, - "registered": 2, - "knop": 6, - "isknoptype": 2, - "knop_knoptype": 2, - "prototype": 4, - "version": 4, - "14": 4, - "Base": 2, - "framework": 2, - "Contains": 2, - "common": 4, - "member": 10, - "Used": 2, - "boilerplate": 2, - "creating": 4, - "other": 4, - "instance": 8, - "variables": 2, - "are": 4, - "available": 2, - "well": 2, - "CHANGE": 4, - "NOTES": 4, - "Syntax": 4, - "adjustments": 4, - "9": 2, - "Changed": 6, - "error": 22, - "numbers": 2, - "added": 10, - "even": 2, - "language": 10, - "already": 2, - "exists.": 2, - "improved": 4, - "reporting": 2, - "messages": 6, - "such": 2, - "from": 6, - "bad": 2, - "database": 14, - "queries": 2, - "error_lang": 2, - "provide": 2, - "knop_lang": 8, - "add": 12, - "localized": 2, - "except": 2, - "knop_base": 8, - "html": 4, - "xhtml": 28, - "help": 10, - "nicely": 2, - "formatted": 2, - "output.": 2, - "Centralized": 2, - "knop_base.": 2, - "Moved": 6, - "codes": 2, - "improve": 2, - "documentation.": 2, - "It": 2, - "always": 2, - "an": 8, - "parameter.": 2, - "trace": 2, - "tagtime": 4, - "was": 6, - "nav": 4, - "earlier": 2, - "varname": 4, - "retreive": 2, - "variable": 8, - "that": 18, - "stored": 2, - "in.": 2, - "automatically": 2, - "sense": 2, - "doctype": 6, - "exists": 2, - "buffer.": 2, - "The": 6, - "performance.": 2, - "internal": 2, - "html.": 2, - "Introduced": 2, - "_knop_data": 10, - "general": 2, - "level": 2, - "caching": 2, - "between": 2, - "different": 2, - "objects.": 2, - "TODO": 2, - "option": 2, - "Google": 2, - "Code": 2, - "Wiki": 2, - "working": 2, - "properly": 4, - "run": 2, - "by": 12, - "atbegin": 2, - "handler": 2, - "explicitly": 2, - "*/": 2, - "entire": 4, - "ms": 2, - "defined": 4, - "each": 8, - "instead": 4, - "avoid": 2, - "recursion": 2, - "properties": 4, - "#endslash": 10, - "#tags": 2, - "#t": 2, - "doesn": 4, - "p": 2, - "Parameters": 4, - "nParameters": 2, - "Internal.": 2, - "Finds": 2, - "out": 2, - "used.": 2, - "Looks": 2, - "unless": 2, - "array.": 2, - "variable.": 2, - "Looking": 2, - "#xhtmlparam": 4, - "plain": 2, - "#doctype": 4, - "copy": 4, - "standard": 2, - "code": 2, - "errors": 12, - "error_data": 12, - "form": 2, - "grid": 2, - "lang": 2, - "user": 4, - "#error_lang": 12, - "addlanguage": 4, - "strings": 6, - "@#errorcodes": 2, - "#error_lang_custom": 2, - "#custom_language": 10, - "once": 4, - "one": 2, - "#custom_string": 4, - "#errorcodes": 4, - "#error_code": 10, - "message": 6, - "getstring": 2, - "test": 2, - "known": 2, - "lasso": 2, - "knop_timer": 2, - "knop_unique": 2, - "look": 2, - "#varname": 6, - "loop_abort": 2, - "tag_name": 2, - "#timer": 2, - "#trace": 4, - "merge": 2, - "#eol": 8, - "2010": 4, - "23": 4, - "Custom": 2, - "interact": 2, - "databases": 2, - "Supports": 4, - "both": 2, - "MySQL": 2, - "FileMaker": 2, - "datasources": 2, - "2012": 4, - "06": 2, - "10": 2, - "SP": 4, - "Fix": 2, - "precision": 2, - "bug": 2, - "6": 2, - "0": 2, - "1": 2, - "renderfooter": 2, - "15": 2, - "Add": 2, - "support": 6, - "Thanks": 2, - "Ric": 2, - "Lewis": 2, - "settable": 4, - "removed": 2, - "table": 6, - "nextrecord": 12, - "deprecation": 2, - "warning": 2, - "corrected": 2, - "verification": 2, - "index": 4, - "before": 4, - "calling": 2, - "resultset_count": 6, - "break": 2, - "versions": 2, - "fixed": 4, - "incorrect": 2, - "debug_trace": 2, - "addrecord": 4, - "how": 2, - "keyvalue": 10, - "returned": 6, - "adding": 2, - "records": 4, - "inserting": 2, - "generated": 2, - "suppressed": 2, - "specifying": 2, - "saverecord": 8, - "deleterecord": 4, - "case.": 2, - "recorddata": 6, - "no": 2, - "longer": 2, - "touch": 2, - "current_record": 2, - "zero": 2, - "access": 2, - "occurrence": 2, - "same": 4, - "returns": 4, - "knop_databaserows": 2, - "inlinename.": 4, - "next.": 2, - "remains": 2, - "supported": 2, - "backwards": 2, - "compatibility.": 2, - "resets": 2, - "record": 20, - "pointer": 8, - "reaching": 2, - "last": 4, - "honors": 2, - "incremented": 2, - "recordindex": 4, - "specific": 2, - "found.": 2, - "getrecord": 8, - "REALLY": 2, - "works": 4, - "keyvalues": 4, - "double": 2, - "oops": 4, - "I": 4, - "thought": 2, - "but": 2, - "misplaced": 2, - "paren...": 2, - "corresponding": 2, - "resultset": 2, - "/resultset": 2, - "through": 2, - "handling": 2, - "better": 2, - "knop_user": 4, - "keeplock": 4, - "updates": 2, - "datatype": 2, - "knop_databaserow": 2, - "iterated.": 2, - "When": 2, - "iterating": 2, - "row": 2, - "values.": 2, - "Addedd": 2, - "increments": 2, - "recordpointer": 2, - "called": 2, - "until": 2, - "reached.": 2, - "Returns": 2, - "long": 2, - "there": 2, - "more": 2, - "records.": 2, - "Useful": 2, - "loop": 2, - "example": 2, - "below": 2, - "Implemented": 2, - "reset": 2, - "query.": 2, - "shortcut": 2, - "Removed": 2, - "onassign": 2, - "touble": 2, - "Extended": 2, - "field_names": 2, - "names": 4, - "db": 2, - "objects": 2, - "never": 2, - "been": 2, - "optionally": 2, - "supports": 2, - "sql.": 2, - "Make": 2, - "sure": 2, - "SQL": 2, - "includes": 2, - "relevant": 2, - "lockfield": 2, - "locking": 4, - "capturesearchvars": 2, - "mysteriously": 2, - "after": 2, - "operations": 2, - "caused": 2, - "errors.": 2, - "flag": 2, - "save": 2, - "locked": 2, - "releasing": 2, - "Adding": 2, - "progress.": 2, - "Done": 2, - "oncreate": 2, - "getrecord.": 2, - "documentation": 2, - "most": 2, - "existing": 2, - "it.": 2, - "Faster": 2, - "than": 2, - "scratch.": 2, - "shown_first": 2, - "again": 2, - "hoping": 2, - "s": 2, - "only": 2, - "captured": 2, - "update": 2, - "uselimit": 2, - "querys": 2, - "LIMIT": 2, - "still": 2, - "gets": 2, - "proper": 2, - "searchresult": 2, - "separate": 2, - "COUNT": 2 - }, - "Less": { - "@blue": 4, - "#3bbfce": 1, - ";": 7, - "@margin": 3, - "px": 1, - ".content": 1, - "-": 3, - "navigation": 1, - "{": 2, - "border": 2, - "color": 3, - "darken": 1, - "(": 1, - "%": 1, - ")": 1, - "}": 2, - ".border": 1, - "padding": 1, - "/": 2, - "margin": 1 - }, - "LFE": { - ";": 213, - "Copyright": 4, - "(": 217, - "c": 4, - ")": 231, - "Duncan": 4, - "McGreggor": 4, - "": 2, - "Licensed": 3, - "under": 9, - "the": 36, - "Apache": 3, - "License": 12, - "Version": 3, - "you": 3, - "may": 6, - "not": 5, - "use": 6, - "this": 3, - "file": 6, - "except": 3, - "in": 10, - "compliance": 3, - "with": 8, - "License.": 6, - "You": 3, - "obtain": 3, - "a": 8, - "copy": 3, - "of": 10, - "at": 4, - "http": 4, - "//www.apache.org/licenses/LICENSE": 3, - "-": 98, - "Unless": 3, - "required": 3, - "by": 4, - "applicable": 3, - "law": 3, - "or": 6, - "agreed": 3, - "to": 10, - "writing": 3, - "software": 3, - "distributed": 6, - "is": 5, - "on": 4, - "an": 5, - "BASIS": 3, - "WITHOUT": 3, - "WARRANTIES": 3, - "OR": 3, - "CONDITIONS": 3, - "OF": 3, - "ANY": 3, - "KIND": 3, - "either": 3, - "express": 3, - "implied.": 3, - "See": 3, - "for": 5, - "specific": 3, - "language": 3, - "governing": 3, - "permissions": 3, - "and": 7, - "limitations": 3, - "File": 4, - "church.lfe": 1, - "Author": 3, - "Purpose": 3, - "Demonstrating": 2, - "church": 20, - "numerals": 1, - "from": 2, - "lambda": 18, - "calculus": 1, - "The": 4, - "code": 2, - "below": 3, - "was": 1, - "used": 1, - "create": 4, - "section": 1, - "user": 1, - "guide": 1, - "here": 1, - "//lfe.github.io/user": 1, - "guide/recursion/5.html": 1, - "Here": 1, - "some": 2, - "example": 2, - "usage": 1, - "slurp": 2, - "five/0": 2, - "int2": 1, - "get": 21, - "defmodule": 2, - "export": 2, - "all": 1, - "defun": 20, - "zero": 2, - "s": 19, - "x": 12, - "one": 1, - "funcall": 23, - "two": 1, - "three": 1, - "four": 1, - "five": 1, - "int": 2, - "successor": 3, - "n": 4, - "+": 2, - "int1": 1, - "numeral": 8, - "#": 3, - "successor/1": 1, - "count": 7, - "limit": 4, - "cond": 1, - "/": 1, - "integer": 2, - "*": 6, - "Mode": 1, - "LFE": 4, - "Code": 1, - "Paradigms": 1, - "Artificial": 1, - "Intelligence": 1, - "Programming": 1, - "Peter": 1, - "Norvig": 1, - "gps1.lisp": 1, - "First": 1, - "version": 1, - "GPS": 1, - "General": 1, - "Problem": 1, - "Solver": 1, - "Converted": 1, - "Robert": 3, - "Virding": 3, - "Define": 1, - "macros": 1, - "global": 2, - "variable": 2, - "access.": 1, - "This": 2, - "hack": 1, - "very": 1, - "naughty": 1, - "defsyntax": 2, - "defvar": 2, - "[": 3, - "name": 8, - "val": 2, - "]": 3, - "let": 6, - "v": 3, - "put": 1, - "getvar": 3, - "solved": 1, - "gps": 1, - "state": 4, - "goals": 2, - "Set": 1, - "variables": 1, - "but": 1, - "existing": 1, - "*ops*": 1, - "*state*": 5, - "current": 1, - "list": 13, - "conditions.": 1, - "if": 1, - "every": 1, - "fun": 1, - "achieve": 1, - "op": 8, - "action": 3, - "setvar": 2, - "set": 1, - "difference": 1, - "del": 5, - "union": 1, - "add": 3, - "drive": 1, - "son": 2, - "school": 2, - "preconds": 4, - "shop": 6, - "installs": 1, - "battery": 1, - "car": 1, - "works": 1, - "make": 2, - "communication": 2, - "telephone": 1, - "have": 3, - "phone": 1, - "book": 1, - "give": 1, - "money": 3, - "has": 1, - "mnesia_demo.lfe": 1, - "A": 1, - "simple": 4, - "Mnesia": 2, - "demo": 2, - "LFE.": 1, - "contains": 1, - "using": 1, - "access": 1, - "tables.": 1, - "It": 1, - "shows": 2, - "how": 2, - "emp": 1, - "XXXX": 1, - "macro": 1, - "ETS": 1, - "match": 5, - "pattern": 1, - "together": 1, - "mnesia": 8, - "match_object": 1, - "specifications": 1, - "select": 1, - "Query": 2, - "List": 2, - "Comprehensions.": 1, - "mnesia_demo": 1, - "new": 2, - "by_place": 1, - "by_place_ms": 1, - "by_place_qlc": 2, - "defrecord": 1, - "person": 8, - "place": 7, - "job": 3, - "Start": 1, - "table": 2, - "we": 1, - "will": 1, - "memory": 1, - "only": 1, - "schema.": 1, - "start": 1, - "create_table": 1, - "attributes": 1, - "Initialise": 1, - "table.": 1, - "people": 1, - "spec": 1, - "p": 2, - "j": 2, - "when": 1, - "tuple": 1, - "transaction": 2, - "f": 3, - "Use": 1, - "Comprehensions": 1, - "records": 1, - "q": 2, - "qlc": 2, - "lc": 1, - "<": 1, - "e": 1, - "object.lfe": 1, - "OOP": 1, - "closures": 1, - "object": 16, - "system": 1, - "demonstrated": 1, - "do": 2, - "following": 2, - "objects": 2, - "call": 2, - "methods": 5, - "those": 1, - "which": 1, - "can": 1, - "other": 1, - "update": 1, - "instance": 2, - "Note": 1, - "however": 1, - "that": 1, - "his": 1, - "does": 1, - "demonstrate": 1, - "inheritance.": 1, - "To": 1, - "cd": 1, - "examples": 1, - "../bin/lfe": 1, - "pa": 1, - "../ebin": 1, - "Load": 1, - "fish": 6, - "class": 3, - "#Fun": 1, - "": 1, - "Execute": 1, - "basic": 1, - "species": 7, - "mommy": 3, - "move": 4, - "Carp": 1, - "swam": 1, - "feet": 1, - "ok": 1, - "id": 9, - "Now": 1, - "strictly": 1, - "necessary.": 1, - "When": 1, - "isn": 1, - "children": 10, - "formatted": 1, - "verb": 2, - "self": 6, - "distance": 2, - "erlang": 1, - "length": 1, - "method": 7, - "define": 1, - "info": 1, - "reproduce": 1 - }, - "Literate Agda": { - "documentclass": 1, - "{": 35, - "article": 1, - "}": 35, - "usepackage": 7, - "amssymb": 1, - "bbm": 1, - "[": 2, - "greek": 1, - "english": 1, - "]": 2, - "babel": 1, - "ucs": 1, - "utf8x": 1, - "inputenc": 1, - "autofe": 1, - "DeclareUnicodeCharacter": 3, - "ensuremath": 3, - "ulcorner": 1, - "urcorner": 1, - "overline": 1, - "equiv": 1, - "fancyvrb": 1, - "DefineVerbatimEnvironment": 1, - "code": 3, - "Verbatim": 1, - "%": 1, - "Add": 1, - "fancy": 1, - "options": 1, - "here": 1, - "if": 1, - "you": 3, - "like.": 1, - "begin": 2, - "document": 2, - "module": 3, - "NatCat": 1, - "where": 2, - "open": 2, - "import": 2, - "Relation.Binary.PropositionalEquality": 1, - "-": 21, - "If": 1, - "can": 1, - "show": 1, - "that": 1, - "a": 1, - "relation": 1, - "only": 1, - "ever": 1, - "has": 1, - "one": 1, - "inhabitant": 5, - "get": 1, - "the": 1, - "category": 1, - "laws": 1, - "for": 1, - "free": 1, - "EasyCategory": 3, - "(": 36, - "obj": 4, - "Set": 2, - ")": 36, - "_": 6, - "x": 34, - "y": 28, - "z": 18, - "id": 9, - "single": 4, - "r": 26, - "s": 29, - "assoc": 2, - "w": 4, - "t": 6, - "Data.Nat": 1, - "same": 5, - ".0": 2, - "n": 14, - "refl": 6, - ".": 5, - "suc": 6, - "m": 6, - "cong": 1, - "trans": 5, - ".n": 1, - "zero": 1, - "Nat": 1, - "end": 2 - }, - "Literate CoffeeScript": { - "The": 2, - "**Scope**": 2, - "class": 2, - "regulates": 1, - "lexical": 1, - "scoping": 1, - "within": 2, - "CoffeeScript.": 1, - "As": 1, - "you": 2, - "generate": 1, - "code": 1, - "create": 1, - "a": 8, - "tree": 1, - "of": 4, - "scopes": 1, - "in": 2, - "the": 12, - "same": 1, - "shape": 1, - "as": 3, - "nested": 1, - "function": 2, - "bodies.": 1, - "Each": 1, - "scope": 2, - "knows": 1, - "about": 1, - "variables": 3, - "declared": 2, - "it": 4, - "and": 5, - "has": 1, - "reference": 3, - "to": 8, - "its": 3, - "parent": 2, - "enclosing": 1, - "scope.": 2, - "In": 1, - "this": 3, - "way": 1, - "we": 4, - "know": 1, - "which": 3, - "are": 3, - "new": 2, - "need": 2, - "be": 2, - "with": 3, - "var": 4, - "shared": 1, - "external": 1, - "scopes.": 1, - "Import": 1, - "helpers": 1, - "plan": 1, - "use.": 1, - "{": 4, - "extend": 1, - "last": 1, - "}": 4, - "require": 1, - "exports.Scope": 1, - "Scope": 1, - "root": 1, - "is": 3, - "top": 2, - "-": 5, - "level": 1, - "object": 1, - "for": 3, - "given": 1, - "file.": 1, - "@root": 1, - "null": 1, - "Initialize": 1, - "lookups": 1, - "up": 1, - "chain": 1, - "well": 1, - "**Block**": 1, - "node": 1, - "belongs": 2, - "where": 1, - "should": 1, - "declare": 1, - "that": 2, - "to.": 1, - "constructor": 1, - "(": 5, - "@parent": 2, - "@expressions": 1, - "@method": 1, - ")": 6, - "@variables": 3, - "[": 4, - "name": 8, - "type": 5, - "]": 4, - "@positions": 4, - "Scope.root": 1, - "unless": 1, - "Adds": 1, - "variable": 1, - "or": 1, - "overrides": 1, - "an": 1, - "existing": 1, - "one.": 1, - "add": 1, - "immediate": 3, - "return": 1, - "@parent.add": 1, - "if": 2, - "@shared": 1, - "not": 1, - "Object": 1, - "hasOwnProperty.call": 1, - ".type": 1, - "else": 2, - "@variables.push": 1, - "When": 1, - "super": 1, - "called": 1, - "find": 1, - "current": 1, - "method": 1, - "param": 1, - "_": 3, - "then": 1, - "tempVars": 1, - "realVars": 1, - ".push": 1, - "v.name": 1, - "realVars.sort": 1, - ".concat": 1, - "tempVars.sort": 1, - "Return": 1, - "list": 1, - "assignments": 1, - "supposed": 1, - "made": 1, - "at": 1, - "assignedVariables": 1, - "v": 1, - "when": 1, - "v.type.assigned": 1 - }, - "LiveScript": { - "a": 8, - "-": 25, - "const": 1, - "b": 3, - "var": 1, - "c": 3, - "d": 3, - "_000_000km": 1, - "*": 1, - "ms": 1, - "e": 2, - "(": 9, - ")": 10, - "dashes": 1, - "identifiers": 1, - "underscores_i": 1, - "/regexp1/": 1, - "and": 3, - "//regexp2//g": 1, - "strings": 1, - "[": 2, - "til": 1, - "]": 2, - "or": 2, - "to": 2, - "|": 3, - "map": 1, - "filter": 1, - "fold": 1, - "+": 1, - "class": 1, - "Class": 1, - "extends": 1, - "Anc": 1, - "est": 1, - "args": 1, - "copy": 1, - "from": 1, - "callback": 4, - "error": 6, - "data": 2, - "<": 1, - "read": 1, - "file": 2, - "return": 2, - "if": 2, - "<~>": 1, - "write": 1 - }, - "Logos": { - "%": 15, - "hook": 2, - "ABC": 2, - "-": 3, - "(": 8, - "id": 2, - ")": 8, - "a": 1, - "B": 1, - "b": 1, - "{": 4, - "log": 1, - ";": 8, - "return": 2, - "orig": 2, - "nil": 2, - "}": 4, - "end": 4, - "subclass": 1, - "DEF": 1, - "NSObject": 1, - "init": 3, - "[": 2, - "c": 1, - "RuntimeAccessibleClass": 1, - "alloc": 1, - "]": 2, - "group": 1, - "OptionalHooks": 2, - "void": 1, - "release": 1, - "self": 1, - "retain": 1, - "ctor": 1, - "if": 1, - "OptionalCondition": 1 - }, - "Logtalk": { - "-": 3, - "object": 2, - "(": 4, - "hello_world": 1, - ")": 4, - ".": 2, - "%": 2, - "the": 2, - "initialization/1": 1, - "directive": 1, - "argument": 1, - "is": 2, - "automatically": 1, - "executed": 1, - "when": 1, - "loaded": 1, - "into": 1, - "memory": 1, - "initialization": 1, - "nl": 2, - "write": 1, - "end_object.": 1 - }, - "Lua": { - "-": 60, - "A": 1, - "simple": 1, - "counting": 1, - "object": 1, - "that": 1, - "increments": 1, - "an": 1, - "internal": 1, - "counter": 1, - "whenever": 1, - "it": 2, - "receives": 2, - "a": 5, - "bang": 3, - "at": 2, - "its": 2, - "first": 1, - "inlet": 2, - "or": 2, - "changes": 1, - "to": 8, - "whatever": 1, - "number": 3, - "second": 1, - "inlet.": 1, - "local": 11, - "HelloCounter": 4, - "pd.Class": 3, - "new": 3, - "(": 56, - ")": 56, - "register": 3, - "function": 16, - "initialize": 3, - "sel": 3, - "atoms": 3, - "self.inlets": 3, - "self.outlets": 3, - "self.num": 5, - "return": 3, - "true": 3, - "end": 26, - "in_1_bang": 2, - "self": 10, - "outlet": 10, - "{": 16, - "}": 16, - "+": 3, - "in_2_float": 2, - "f": 12, - "FileListParser": 5, - "Base": 1, - "filename": 2, - "File": 2, - "extension": 2, - "Number": 4, - "of": 9, - "files": 1, - "in": 7, - "batch": 2, - "To": 3, - "[": 17, - "list": 1, - "trim": 1, - "]": 17, - "binfile": 3, - "vidya": 1, - "file": 8, - "modder": 1, - "s": 5, - "mechanisms": 1, - "self.extension": 3, - "the": 7, - "last": 1, - "self.batchlimit": 3, - "in_1_symbol": 1, - "for": 9, - "i": 10, - "do": 8, - "..": 7, - "in_2_list": 1, - "d": 9, - "in_3_float": 1, - "FileModder": 10, - "Object": 1, - "triggering": 1, - "Incoming": 1, - "single": 1, - "data": 2, - "bytes": 3, - "from": 3, - "Total": 1, - "route": 1, - "buflength": 1, - "Glitch": 3, - "type": 2, - "point": 2, - "times": 2, - "glitch": 2, - "Toggle": 1, - "randomized": 1, - "glitches": 3, - "within": 2, - "bounds": 2, - "Active": 1, - "get": 1, - "next": 1, - "byte": 2, - "clear": 2, - "buffer": 2, - "FLOAT": 1, - "write": 3, - "Currently": 1, - "active": 2, - "namedata": 1, - "self.filedata": 4, - "pattern": 1, - "random": 3, - "splice": 1, - "self.glitchtype": 5, - "Minimum": 1, - "image": 1, - "self.glitchpoint": 6, - "repeat": 1, - "on": 1, - "given": 1, - "self.randrepeat": 5, - "Toggles": 1, - "whether": 1, - "repeating": 1, - "should": 1, - "be": 1, - "self.randtoggle": 3, - "Hold": 1, - "all": 1, - "which": 1, - "are": 1, - "converted": 1, - "ints": 1, - "range": 1, - "self.bytebuffer": 8, - "Buffer": 1, - "length": 1, - "currently": 1, - "self.buflength": 7, - "if": 2, - "then": 4, - "plen": 2, - "math.random": 8, - "patbuffer": 3, - "table.insert": 4, - "%": 1, - "#patbuffer": 1, - "elseif": 2, - "randlimit": 4, - "else": 1, - "sloc": 3, - "schunksize": 2, - "splicebuffer": 3, - "table.remove": 1, - "insertpoint": 2, - "#self.bytebuffer": 1, - "_": 2, - "v": 4, - "ipairs": 2, - "outname": 3, - "pd.post": 1, - "in_3_list": 1, - "Shift": 1, - "indexed": 2, - "in_4_list": 1, - "in_5_float": 1, - "in_6_float": 1, - "in_7_list": 1, - "in_8_list": 1 - }, - "M": { - "%": 203, - "zewdAPI": 52, - ";": 1275, - "Enterprise": 5, - "Web": 5, - "Developer": 5, - "run": 2, - "-": 1604, - "time": 9, - "functions": 4, - "and": 56, - "user": 27, - "APIs": 1, - "Product": 2, - "(": 2142, - "Build": 6, - ")": 2150, - "Date": 2, - "Fri": 1, - "Nov": 1, - "|": 170, - "for": 77, - "GT.M": 30, - "m_apache": 3, - "Copyright": 12, - "c": 113, - "M/Gateway": 4, - "Developments": 4, - "Ltd": 4, - "Reigate": 4, - "Surrey": 4, - "UK.": 4, - "All": 4, - "rights": 4, - "reserved.": 4, - "http": 13, - "//www.mgateway.com": 4, - "Email": 4, - "rtweed@mgateway.com": 4, - "This": 26, - "program": 19, - "is": 81, - "free": 15, - "software": 12, - "you": 16, - "can": 15, - "redistribute": 11, - "it": 44, - "and/or": 11, - "modify": 11, - "under": 14, - "the": 217, - "terms": 11, - "of": 80, - "GNU": 33, - "Affero": 33, - "General": 33, - "Public": 33, - "License": 48, - "as": 22, - "published": 11, - "by": 33, - "Free": 11, - "Software": 11, - "Foundation": 11, - "either": 13, - "version": 16, - "or": 46, - "at": 21, - "your": 16, - "option": 12, - "any": 15, - "later": 11, - "version.": 11, - "distributed": 13, - "in": 78, - "hope": 11, - "that": 17, - "will": 23, - "be": 32, - "useful": 11, - "but": 17, - "WITHOUT": 12, - "ANY": 12, - "WARRANTY": 11, - "without": 11, - "even": 11, - "implied": 11, - "warranty": 11, - "MERCHANTABILITY": 11, - "FITNESS": 11, - "FOR": 15, - "A": 12, - "PARTICULAR": 11, - "PURPOSE.": 11, - "See": 15, - "more": 13, - "details.": 12, - "You": 13, - "should": 16, - "have": 17, - "received": 11, - "a": 112, - "copy": 13, - "along": 11, - "with": 43, - "this": 38, - "program.": 9, - "If": 14, - "not": 37, - "see": 25, - "": 11, - ".": 814, - "QUIT": 249, - "_": 126, - "getVersion": 1, - "zewdCompiler": 6, - "date": 1, - "getDate": 1, - "compilePage": 2, - "app": 13, - "page": 12, - "mode": 12, - "technology": 9, - "outputPath": 4, - "multilingual": 4, - "maxLines": 4, - "d": 381, - "g": 228, - "compileAll": 2, - "templatePageName": 2, - "autoTranslate": 2, - "language": 6, - "verbose": 2, - "zewdMgr": 1, - "startSession": 2, - "requestArray": 2, - "serverArray": 1, - "sessionArray": 5, - "filesArray": 1, - "zewdPHP": 8, - ".requestArray": 2, - ".serverArray": 1, - ".sessionArray": 3, - ".filesArray": 1, - "closeSession": 2, - "saveSession": 2, - "endOfPage": 2, - "prePageScript": 2, - "sessid": 146, - "releaseLock": 2, - "tokeniseURL": 2, - "url": 2, - "zewdCompiler16": 5, - "getSessid": 1, - "token": 21, - "i": 465, - "isTokenExpired": 2, - "p": 84, - "zewdSession": 39, - "initialiseSession": 1, - "k": 122, - "deleteSession": 2, - "changeApp": 1, - "appName": 4, - "setSessionValue": 6, - "setRedirect": 1, - "toPage": 1, - "e": 210, - "n": 197, - "path": 4, - "s": 775, - "getRootURL": 1, - "l": 84, - "zewd": 17, - "trace": 24, - "_sessid_": 3, - "_token_": 1, - "_nextPage": 1, - "zcvt": 11, - "nextPage": 1, - "isNextPageTokenValid": 2, - "zewdCompiler13": 10, - "isCSP": 1, - "normaliseTextValue": 1, - "text": 6, - "replaceAll": 11, - "writeLine": 2, - "line": 9, - "CacheTempBuffer": 2, - "j": 67, - "increment": 11, - "w": 127, - "displayOptions": 2, - "fieldName": 5, - "listName": 6, - "escape": 7, - "codeValue": 7, - "name": 121, - "nnvp": 1, - "nvp": 1, - "pos": 33, - "textValue": 6, - "value": 72, - "getSessionValue": 3, - "tr": 13, - "+": 188, - "f": 93, - "o": 51, - "q": 244, - "codeValueEsc": 7, - "textValueEsc": 7, - "htmlOutputEncode": 2, - "zewdAPI2": 5, - "_codeValueEsc_": 1, - "selected": 4, - "translationMode": 1, - "_appName": 1, - "typex": 1, - "type": 2, - "avoid": 1, - "Cache": 3, - "bug": 1, - "getPhraseIndex": 1, - "zewdCompiler5": 1, - "licensed": 1, - "setWarning": 2, - "isTemp": 11, - "setWLDSymbol": 1, - "Duplicate": 1, - "performance": 1, - "also": 4, - "wldAppName": 1, - "wldName": 1, - "wldSessid": 1, - "zzname": 1, - "zv": 6, - "[": 53, - "extcErr": 1, - "mess": 3, - "namespace": 1, - "zt": 20, - "valueErr": 1, - "exportCustomTags": 2, - "tagList": 1, - "filepath": 10, - ".tagList": 1, - "exportAllCustomTags": 2, - "importCustomTags": 2, - "filePath": 2, - "zewdForm": 1, - "stripSpaces": 6, - "np": 17, - "obj": 6, - "prop": 6, - "setSessionObject": 3, - "allowJSONAccess": 1, - "sessionName": 30, - "access": 21, - "disallowJSONAccess": 1, - "JSONAccess": 1, - "existsInSession": 2, - "existsInSessionArray": 2, - "p1": 5, - "p2": 10, - "p3": 3, - "p4": 2, - "p5": 2, - "p6": 2, - "p7": 2, - "p8": 2, - "p9": 2, - "p10": 2, - "p11": 2, - "clearSessionArray": 1, - "arrayName": 35, - "setSessionArray": 1, - "itemName": 16, - "itemValue": 7, - "getSessionArray": 1, - "array": 22, - "clearArray": 2, - "set": 98, - "m": 37, - "getSessionArrayErr": 1, - "Come": 1, - "here": 4, - "if": 44, - "error": 62, - "occurred": 2, - "addToSession": 2, - "@name": 4, - "mergeToSession": 1, - "mergeGlobalToSession": 2, - "globalName": 7, - "mergeGlobalFromSession": 2, - "mergeArrayToSession": 1, - "mergeArrayToSessionObject": 2, - ".array": 1, - "mergeArrayFromSession": 1, - "mergeFromSession": 1, - "deleteFromSession": 1, - "deleteFromSessionObject": 1, - "sessionNameExists": 1, - "getSessionArrayValue": 2, - "subscript": 7, - "exists": 6, - ".exists": 1, - "sessionArrayValueExists": 2, - "deleteSessionArrayValue": 2, - "Objects": 1, - "objectName": 13, - "propertyName": 3, - "propertyValue": 5, - "comma": 3, - "x": 96, - "replace": 27, - "objectName_": 2, - "_propertyName": 2, - "_propertyName_": 2, - "_propertyValue_": 1, - "_p": 1, - "quoted": 1, - "string": 50, - "FromStr": 6, - "S": 99, - "ToStr": 4, - "InText": 4, - "old": 3, - "new": 15, - "ok": 14, - "removeDocument": 1, - "zewdDOM": 3, - "instanceName": 2, - "clearXMLIndex": 1, - "zewdSchemaForm": 1, - "closeDOM": 1, - "makeTokenString": 1, - "length": 7, - "token_": 1, - "r": 88, - "makeString": 3, - "char": 9, - "len": 8, - "create": 6, - "characters": 4, - "str": 15, - "convertDateToSeconds": 1, - "hdate": 7, - "Q": 58, - "hdate*86400": 1, - "convertSecondsToDate": 1, - "secs": 2, - "secs#86400": 1, - "getTokenExpiry": 2, - "h*86400": 1, - "h": 39, - "randChar": 1, - "R": 2, - "lowerCase": 2, - "stripLeadingSpaces": 2, - "stripTrailingSpaces": 2, - "d1": 7, - "zd": 1, - "yy": 19, - "dd": 4, - "I": 43, - "<10>": 1, - "dd=": 2, - "mm=": 3, - "1": 74, - "d1=": 1, - "2": 14, - "p1=": 1, - "mm": 7, - "p2=": 1, - "yy=": 1, - "3": 6, - "dd_": 1, - "mm_": 1, - "inetTime": 1, - "Decode": 1, - "Internet": 1, - "Format": 1, - "Time": 1, - "from": 16, - "H": 1, - "format": 2, - "Offset": 1, - "relative": 1, - "to": 73, - "GMT": 1, - "eg": 3, - "hh": 4, - "ss": 4, - "<": 19, - "_hh": 1, - "time#3600": 1, - "_mm": 1, - "time#60": 1, - "_ss": 2, - "hh_": 1, - "_mm_": 1, - "openNewFile": 2, - "openFile": 2, - "openDOM": 2, - "&": 27, - "#39": 1, - "<\",\"<\")>": 1, - "string=": 1, - "gt": 1, - "amp": 1, - "HTML": 1, - "quot": 2, - "stop": 20, - "no": 53, - "no2": 1, - "p1_c_p2": 1, - "getIP": 2, - "Get": 2, - "own": 2, - "IP": 1, - "address": 1, - "ajaxErrorRedirect": 2, - "classExport": 2, - "className": 2, - "methods": 2, - ".methods": 1, - "strx": 2, - "disableEwdMgr": 1, - "enableEwdMgr": 1, - "enableWLDAccess": 1, - "disableWLDAccess": 1, - "isSSOValid": 2, - "sso": 2, - "username": 8, - "password": 8, - "zewdMgrAjax2": 1, - "uniqueId": 1, - "nodeOID": 2, - "filename": 2, - "linkToParentSession": 2, - "zewdCompiler20": 1, - "exportToGTM": 1, - "routine": 4, - "zewdDemo": 1, - "Tutorial": 1, - "Wed": 1, - "Apr": 1, - "getLanguage": 1, - "getRequestValue": 1, - "login": 1, - "getTextValue": 4, - "getPasswordValue": 2, - "_username_": 1, - "_password": 1, - "logine": 1, - "message": 8, - "textid": 1, - "errorMessage": 1, - "ewdDemo": 8, - "clearList": 2, - "appendToList": 4, - "addUsername": 1, - "newUsername": 5, - "newUsername_": 1, - "setTextValue": 4, - "testValue": 1, - "pass": 24, - "getSelectValue": 3, - "_user": 1, - "getPassword": 1, - "setPassword": 1, - "getObjDetails": 1, - "data": 43, - "_user_": 1, - "_data": 2, - "setRadioOn": 2, - "initialiseCheckbox": 2, - "setCheckboxOn": 3, - "createLanguageList": 1, - "setMultipleSelectOn": 2, - "clearTextArea": 2, - "textarea": 2, - "createTextArea": 1, - ".textarea": 1, - "userType": 4, - "setMultipleSelectValues": 1, - ".selected": 1, - "testField3": 3, - ".value": 1, - "testField2": 1, - "field3": 1, - "must": 7, - "null": 6, - "dateTime": 1, - "start": 24, - "student": 14, - "zwrite": 1, - "write": 59, - "order": 11, - "do": 15, - "quit": 30, - "file": 10, - "part": 3, - "DataBallet.": 4, - "C": 9, - "Laurent": 2, - "Parenteau": 2, - "": 2, - "DataBallet": 4, - "encode": 1, - "Return": 1, - "base64": 6, - "URL": 2, - "Filename": 1, - "safe": 3, - "alphabet": 2, - "RFC": 1, - "todrop": 2, - "Populate": 1, - "values": 4, - "on": 15, - "first": 10, - "use": 5, - "only.": 1, - "zextract": 3, - "zlength": 3, - "Digest": 2, - "Extension": 9, - "Piotr": 7, - "Koper": 7, - "": 7, - "trademark": 2, - "Fidelity": 2, - "Information": 2, - "Services": 2, - "Inc.": 2, - "//sourceforge.net/projects/fis": 2, - "gtm/": 2, - "simple": 2, - "OpenSSL": 3, - "based": 1, - "digest": 19, - "extension": 3, - "rewrite": 1, - "EVP_DigestInit": 1, - "usage": 3, - "example": 5, - "additional": 5, - "M": 24, - "wrapper.": 1, - "//www.openssl.org/docs/crypto/EVP_DigestInit.html": 1, - "The": 11, - "return": 7, - "digest.init": 3, - "usually": 1, - "when": 11, - "an": 11, - "invalid": 4, - "algorithm": 1, - "was": 5, - "specification.": 1, - "Anyway": 1, - "properly": 1, - "used": 6, - "never": 4, - "fail.": 1, - "Please": 2, - "feel": 2, - "contact": 2, - "me": 2, - "questions": 2, - "comments": 4, - "returns": 7, - "ASCII": 1, - "HEX": 1, - "all": 8, - "one": 5, - "digest.update": 2, - ".c": 2, - ".m": 11, - "digest.final": 2, - ".d": 1, - "init": 6, - "alg": 3, - "context": 1, - "handler": 9, - "try": 1, - "etc": 1, - "returned": 1, - "occurs": 1, - "e.g.": 2, - "unknown": 1, - "update": 1, - "ctx": 4, - "msg": 6, - "updates": 1, - ".ctx": 2, - ".msg": 1, - "final": 1, - "hex": 1, - "encoded": 8, - "frees": 1, - "memory": 1, - "allocated": 1, - ".digest": 1, - "algorithms": 1, - "availability": 1, - "depends": 1, - "libcrypto": 1, - "configuration": 1, - "md4": 1, - "md5": 2, - "sha": 1, - "sha1": 1, - "sha224": 1, - "sha256": 1, - "sha512": 1, - "dss1": 1, - "ripemd160": 1, - "These": 2, - "two": 2, - "routines": 6, - "illustrate": 1, - "dynamic": 1, - "scope": 1, - "variables": 2, - "triangle1": 1, - "sum": 15, - "main2": 1, - "y": 33, - "triangle2": 1, - "compute": 2, - "Fibonacci": 1, - "series": 1, - "b": 64, - "term": 10, - "start1": 2, - "entry": 5, - "label": 4, - "start2": 1, - "function": 6, - "computes": 1, - "factorial": 3, - "f*n": 1, - "main": 1, - "GMRGPNB0": 1, - "CISC/JH/RM": 1, - "NARRATIVE": 1, - "BUILDER": 1, - "TEXT": 5, - "GENERATOR": 1, - "cont.": 1, - "/20/91": 1, - "Text": 1, - "Generator": 1, - "Jan": 1, - "ENTRY": 2, - "WITH": 1, - "GMRGA": 1, - "SET": 3, - "TO": 6, - "POINT": 1, - "AT": 1, - "WHICH": 1, - "WANT": 1, - "START": 1, - "BUILDING": 1, - "GMRGE0": 11, - "GMRGADD": 4, - "D": 64, - "GMR": 6, - "GMRGA0": 11, - "GMRGPDA": 9, - "GMRGCSW": 2, - "NOW": 1, - "DTC": 1, - "GMRGB0": 9, - "O": 24, - "GMRGST": 6, - "GMRGPDT": 2, - "STAT": 8, - "GMRGRUT0": 3, - "GMRGF0": 3, - "GMRGSTAT": 8, - "P": 68, - "_GMRGB0_": 2, - "GMRD": 6, - "GMRGSSW": 3, - "SNT": 1, - "GMRGPNB1": 1, - "GMRGNAR": 8, - "GMRGPAR_": 2, - "_GMRGSPC_": 3, - "_GMRGRM": 2, - "_GMRGE0": 1, - "STORETXT": 1, - "GMRGRUT1": 1, - "GMRGSPC": 3, - "F": 10, - "GMRGD0": 7, - "ALIST": 1, - "G": 40, - "TMP": 26, - "J": 38, - "GMRGPLVL": 6, - "GMRGA0_": 1, - "_GMRGD0_": 1, - "_GMRGSSW_": 1, - "_GMRGADD": 1, - "GMRGI0": 6, - "label1": 1, - "if1": 2, - "statement": 3, - "if2": 2, - "statements": 1, - "contrasted": 1, - "": 3, - "variable": 8, - "a=": 3, - "smaller": 3, - "than": 4, - "b=": 4, - "if3": 1, - "else": 7, - "clause": 2, - "if4": 1, - "bodies": 1, - "exercise": 1, - "car": 14, - "@": 8, - "MD5": 6, - "Implementation": 1, - "It": 2, - "works": 1, - "ZCHSET": 2, - "please": 1, - "don": 1, - "only": 9, - "joke.": 1, - "Serves": 1, - "well": 2, - "reverse": 1, - "engineering": 1, - "obtaining": 1, - "boolean": 2, - "integer": 1, - "addition": 1, - "modulo": 1, - "division.": 1, - "//en.wikipedia.org/wiki/MD5": 1, - "t": 11, - "#64": 1, - "msg_": 1, - "_m_": 1, - "n64": 2, - "*8": 2, - "read": 2, - ".p": 1, - "..": 28, - "...": 6, - "*i": 3, - "#16": 3, - "xor": 4, - "rotate": 5, - "#4294967296": 6, - "n32h": 5, - "bit": 5, - "#2": 1, - "*2147483648": 2, - "a#2": 1, - "b#2": 1, - ".a": 1, - ".b": 1, - "rol": 1, - "a*": 1, - "**n": 1, - "c#4294967296": 1, - "*n": 1, - "n#256": 1, - "n#16": 2, - "MDB": 60, - "M/DB": 2, - "Mumps": 1, - "Emulation": 1, - "Amazon": 1, - "SimpleDB": 1, - "buildDate": 1, - "indexLength": 10, - "Note": 2, - "keyId": 108, - "been": 4, - "tested": 1, - "valid": 1, - "these": 1, - "are": 11, - "called": 8, - "To": 2, - "Initialise": 2, - "service": 1, - "//192.168.1.xxx/mdb/test.mgwsi": 1, - "Action": 2, - "addUser": 2, - "userKeyId": 6, - "userSecretKey": 6, - "requestId": 17, - "boxUsage": 11, - "startTime": 21, - ".startTime": 5, - "MDBUAF": 2, - "end": 33, - ".boxUsage": 22, - "createDomain": 1, - "domainName": 38, - "dn": 4, - "dnx": 3, - "id": 33, - "noOfDomains": 12, - "MDBConfig": 1, - "getDomainId": 3, - "found": 7, - "namex": 8, - "buildItemNameIndex": 2, - "domainId": 53, - "itemId": 41, - "itemValuex": 3, - "countDomains": 2, - "key": 22, - "deleteDomain": 2, - "listDomains": 1, - "maxNoOfDomains": 2, - "nextToken": 7, - "domainList": 3, - "fullName": 3, - "decodeBase64": 1, - "encodeBase64": 1, - "itemExists": 1, - "getItemId": 2, - "getAttributeValueId": 3, - "attribId": 36, - "valuex": 13, - "putAttributes": 2, - "attributes": 32, - "valueId": 16, - "xvalue": 4, - "add": 5, - "Item": 1, - "Domain": 1, - "itemNamex": 4, - "parseJSON": 1, - "zmwire": 53, - "attributesJSON": 1, - ".attributes": 5, - "attribute": 14, - "getAttributeId": 2, - "domain": 1, - "Not": 1, - "allowed": 17, - "same": 2, - "remove": 6, - "existing": 2, - "now": 1, - "name/value": 2, - "pair": 1, - "getAttributes": 2, - "suppressBoxUsage": 1, - "attrNo": 9, - "valueNo": 6, - "delete": 2, - "item": 2, - "associated": 1, - "queryIndex": 1, - "records": 2, - "specified": 4, - "pairs": 2, - "vno": 2, - "left": 5, - "completely": 3, - "references": 1, - "maxNoOfItems": 3, - "itemList": 12, - "session": 1, - "identifier": 1, - "stored": 1, - "queryExpression": 16, - "relink": 1, - "zewdGTMRuntime": 1, - "CGIEVAR": 1, - "cgi": 1, - "unescName": 5, - "urlDecode": 2, - "KEY": 36, - "response": 29, - "WebLink": 1, - "point": 2, - "action": 15, - "AWSAcessKeyId": 1, - "db": 9, - "hash": 1, - "itemsAndAttrs": 2, - "secretKey": 1, - "signatureMethod": 2, - "signatureVersion": 3, - "stringToSign": 2, - "rltKey": 2, - "_action_": 2, - "h_": 3, - "mdbKey": 2, - "errorResponse": 9, - "initialise": 3, - ".requestId": 7, - "createResponse": 4, - "installMDBM": 1, - "authenticate": 1, - "MDBSession": 1, - "createResponseStringToSign": 1, - "Security": 1, - "OK": 6, - "_db": 1, - "MDBAPI": 1, - "lineNo": 19, - "CacheTempEWD": 16, - "_db_": 1, - "db_": 1, - "_action": 1, - "resp": 5, - "metaData": 1, - "domainMetadata": 1, - ".metaData": 1, - "paramName": 8, - "paramValue": 5, - "_i_": 5, - "Query": 1, - "DomainName": 2, - "QueryExpression": 2, - "MaxNumberOfItems": 2, - "NextToken": 3, - "QueryWithAttributes": 1, - "AttributeName.": 2, - "Select": 2, - "SelectExpression": 1, - "entering": 1, - "runSelect.": 1, - "selectExpression": 3, - "finished": 1, - "runSelect": 3, - "count": 18, - "select": 3, - "*": 5, - "where": 6, - "limit": 14, - "asc": 1, - "inValue": 6, - "expr": 18, - "rel": 2, - "itemStack": 3, - "between": 2, - "<=\">": 1, - "lastWord=": 7, - "inAttr=": 5, - "expr=": 10, - "thisWord=": 7, - "inAttr": 2, - "c=": 28, - "queryExpression=": 4, - "_queryExpression": 2, - "4": 5, - "isNull": 1, - "5": 1, - "8": 1, - "isNotNull": 1, - "9": 1, - "offset": 6, - "prevName": 1, - "np=": 1, - "diffNames": 6, - "_term": 3, - "expr_": 1, - "_orderBy": 1, - "runQuery": 2, - ".itemList": 4, - "escVals": 1, - "str_c": 2, - "_x_": 1, - "query": 4, - "orderBy": 1, - "_query": 1, - "parseSelect": 1, - ".domainName": 2, - ".queryExpression": 1, - ".orderBy": 1, - ".limit": 1, - "executeSelect": 1, - ".itemStack": 1, - "***": 2, - "listCopy": 3, - "numeric": 6, - "N.N": 12, - "N.N1": 4, - "externalSelect": 2, - "json": 9, - "_keyId_": 1, - "_selectExpression": 1, - "spaces": 3, - "string_spaces": 1, - "test": 6, - "miles": 4, - "gallons": 4, - "miles/gallons": 1, - "computepesimist": 1, - "miles/": 1, - "computeoptimist": 1, - "/gallons": 1, - "Mumtris": 3, - "tetris": 1, - "game": 1, - "MUMPS": 1, - "fun.": 1, - "Resize": 1, - "terminal": 2, - "maximize": 1, - "PuTTY": 1, - "window": 1, - "restart": 3, - "so": 4, - "report": 1, - "true": 2, - "size": 3, - "mumtris.": 1, - "Try": 2, - "setting": 3, - "ansi": 2, - "compatible": 1, - "cursor": 1, - "positioning.": 1, - "NOTICE": 1, - "uses": 1, - "making": 1, - "delays": 1, - "lower": 1, - "s.": 1, - "That": 1, - "means": 2, - "CPU": 1, - "fall": 5, - "lock": 2, - "clear": 6, - "change": 6, - "preview": 3, - "over": 2, - "exit": 3, - "short": 1, - "circuit": 1, - "redraw": 3, - "timeout": 1, - "harddrop": 1, - "other": 1, - "ex": 5, - "hd": 3, - "*c": 1, - "<0&'d>": 1, - "i=": 14, - "st": 6, - "t10m": 1, - "0": 23, - "<0>": 2, - "q=": 6, - "d=": 1, - "zb": 2, - "right": 3, - "fl=": 1, - "gr=": 1, - "hl": 2, - "help": 2, - "drop": 2, - "hd=": 1, - "matrix": 2, - "stack": 8, - "draw": 3, - "ticks": 2, - "h=": 2, - "1000000000": 1, - "e=": 1, - "t10m=": 1, - "100": 2, - "n=": 1, - "ne=": 1, - "x=": 5, - "y=": 3, - "r=": 3, - "collision": 6, - "score": 5, - "k=": 1, - "j=": 4, - "<1))))>": 1, - "800": 1, - "200": 1, - "lv": 5, - "lc=": 1, - "10": 1, - "lc": 3, - "mt_": 2, - "cls": 6, - ".s": 5, - "dh/2": 6, - "dw/2": 6, - "*s": 4, - "u": 6, - "echo": 1, - "intro": 1, - "workaround": 1, - "ANSI": 1, - "driver": 1, - "NL": 1, - "some": 1, - "place": 9, - "clearscreen": 1, - "N": 19, - "h/2": 3, - "*w/2": 3, - "fill": 3, - "fl": 2, - "*x": 1, - "mx": 4, - "my": 5, - "step": 8, - "**lv*sb": 1, - "*lv": 1, - "sc": 3, - "ne": 2, - "gr": 1, - "w*3": 1, - "dev": 1, - "zsh": 1, - "dw": 1, - "dh": 1, - "elements": 3, - "elemId": 3, - "rotateVersions": 1, - "rotateVersion": 2, - "bottom": 1, - "coordinate": 1, - "____": 1, - "__": 2, - "||": 1, - "ax": 2, - "bx": 2, - "cx": 2, - "ay": 2, - "cy": 2, - "sumx": 3, - "sqrx": 3, - "sumxy": 5, - "x*x": 1, - "x*y": 1, - "PCRE": 23, - "tries": 1, - "deliver": 1, - "best": 2, - "possible": 5, - "interface": 1, - "world": 4, - "providing": 1, - "support": 3, - "arrays": 1, - "stringified": 2, - "parameter": 1, - "names": 3, - "simplified": 1, - "API": 7, - "locales": 2, - "exceptions": 1, - "Perl5": 1, - "Global": 8, - "Match.": 1, - "pcreexamples.m": 2, - "comprehensive": 1, - "examples": 4, - "pcre": 59, - "beginner": 1, - "level": 5, - "tips": 1, - "match": 41, - "limits": 6, - "exception": 12, - "handling": 2, - "UTF": 17, - "GT.M.": 1, - "out": 2, - "known": 2, - "book": 1, - "regular": 1, - "expressions": 1, - "//regex.info/": 1, - "For": 3, - "information": 1, - "//pcre.org/": 1, - "Initial": 2, - "release": 2, - "pkoper": 2, - "pcre.version": 1, - "config": 3, - "case": 7, - "insensitive": 7, - "protect": 11, - "erropt": 6, - "isstring": 5, - "code": 28, - "pcre.config": 1, - ".name": 1, - ".erropt": 3, - ".isstring": 1, - ".n": 20, - "ec": 10, - "compile": 14, - "pattern": 21, - "options": 45, - "locale": 24, - "mlimit": 20, - "reclimit": 19, - "optional": 16, - "joined": 3, - "Unix": 1, - "pcre_maketables": 2, - "cases": 1, - "undefined": 1, - "environment": 7, - "defined": 2, - "LANG": 4, - "LC_*": 1, - "output": 49, - "command": 9, - "Debian": 2, - "tip": 1, - "dpkg": 1, - "reconfigure": 1, - "enable": 1, - "system": 1, - "wide": 1, - "number": 5, - "internal": 3, - "matching": 4, - "calls": 1, - "pcre_exec": 4, - "execution": 2, - "manual": 2, - "details": 5, - "depth": 1, - "recursion": 1, - "calling": 2, - "ref": 41, - "err": 4, - "erroffset": 3, - "pcre.compile": 1, - ".pattern": 3, - ".ref": 13, - ".err": 1, - ".erroffset": 1, - "exec": 4, - "subject": 24, - "startoffset": 3, - "octets": 2, - "starts": 1, - "like": 4, - "chars": 3, - "pcre.exec": 2, - ".subject": 3, - "zl": 7, - "ec=": 7, - "ovector": 25, - "element": 1, - "code=": 4, - "ovecsize": 5, - "fullinfo": 3, - "OPTIONS": 2, - "SIZE": 1, - "CAPTURECOUNT": 1, - "BACKREFMAX": 1, - "FIRSTBYTE": 1, - "FIRSTTABLE": 1, - "LASTLITERAL": 1, - "NAMEENTRYSIZE": 1, - "NAMECOUNT": 1, - "STUDYSIZE": 1, - "OKPARTIAL": 1, - "JCHANGED": 1, - "HASCRORLF": 1, - "MINLENGTH": 1, - "JIT": 1, - "JITSIZE": 1, - "NAME": 3, - "nametable": 4, - "index": 1, - "indexed": 4, - "substring": 1, - "begin": 18, - "begin=": 3, - "end=": 4, - "contains": 2, - "octet": 4, - "UNICODE": 1, - "ze": 8, - "begin_": 1, - "_end": 1, - "store": 6, - "above": 2, - "stores": 1, - "captured": 6, - "key=": 2, - "gstore": 3, - "round": 12, - "byref": 5, - "global": 26, - "ref=": 3, - "l=": 2, - "capture": 10, - "indexes": 1, - "extended": 1, - "NAMED_ONLY": 2, - "named": 12, - "groups": 5, - "OVECTOR": 2, - "namedonly": 9, - "options=": 4, - "o=": 12, - "namedonly=": 2, - "ovector=": 2, - "NO_AUTO_CAPTURE": 2, - "_capture_": 2, - "matches": 10, - "s=": 4, - "_s_": 1, - "GROUPED": 1, - "group": 4, - "result": 3, - "patterns": 3, - "pcredemo": 1, - "pcreccp": 1, - "cc": 1, - "procedure": 2, - "Perl": 1, - "utf8": 2, - "crlf": 6, - "empty": 7, - "skip": 6, - "determine": 1, - "them": 1, - "before": 2, - "byref=": 2, - "check": 2, - "UTF8": 2, - "double": 1, - "utf8=": 1, - "crlf=": 3, - "NL_CRLF": 1, - "NL_ANY": 1, - "NL_ANYCRLF": 1, - "none": 1, - "build": 2, - "NEWLINE": 1, - ".start": 1, - "unwind": 1, - "call": 1, - "optimize": 1, - "leave": 1, - "advance": 1, - "LF": 1, - "CR": 1, - "CRLF": 1, - "middle": 1, - ".i": 2, - ".match": 2, - ".round": 2, - ".byref": 2, - ".ovector": 2, - "subst": 3, - "last": 4, - "occurrences": 1, - "matched": 1, - "back": 4, - "th": 3, - "{": 4, - "}": 4, - "replaced": 1, - "substitution": 2, - "begins": 1, - "substituted": 2, - "defaults": 3, - "ends": 1, - "backref": 1, - "boffset": 1, - "prepare": 1, - "reference": 2, - ".subst": 1, - ".backref": 1, - "silently": 1, - "zco": 1, - "": 1, - "s/": 6, - "b*": 7, - "/Xy/g": 6, - "print": 8, - "aa": 9, - "et": 4, - "direct": 3, - "take": 1, - "default": 6, - "setup": 3, - "trap": 10, - "source": 3, - "location": 5, - "argument": 1, - "@ref": 2, - "E": 12, - "COMPILE": 2, - "has": 6, - "meaning": 1, - "zs": 2, - "re": 2, - "raise": 3, - "XC": 1, - "specific": 3, - "U16384": 1, - "U16385": 1, - "U16386": 1, - "U16387": 1, - "U16388": 2, - "U16389": 1, - "U16390": 1, - "U16391": 1, - "U16392": 2, - "U16393": 1, - "NOTES": 1, - "U16401": 2, - "raised": 2, - "i.e.": 3, - "NOMATCH": 2, - "ever": 1, - "uncommon": 1, - "situation": 1, - "too": 1, - "small": 1, - "considering": 1, - "controlled": 1, - "U16402": 1, - "U16403": 1, - "U16404": 1, - "U16405": 1, - "U16406": 1, - "U16407": 1, - "U16408": 1, - "U16409": 1, - "U16410": 1, - "U16411": 1, - "U16412": 1, - "U16414": 1, - "U16415": 1, - "U16416": 1, - "U16417": 1, - "U16418": 1, - "U16419": 1, - "U16420": 1, - "U16421": 1, - "U16423": 1, - "U16424": 1, - "U16425": 1, - "U16426": 1, - "U16427": 1, - "Examples": 4, - "pcre.m": 1, - "parameters": 1, - "pcreexamples": 32, - "shining": 1, - "Test": 1, - "Simple": 2, - "zwr": 17, - "Match": 4, - "grouped": 2, - "Just": 1, - "Change": 2, - "word": 3, - "Escape": 1, - "sequence": 1, - "More": 1, - "Low": 1, - "api": 1, - "Setup": 1, - "myexception2": 2, - "st_": 1, - "zl_": 2, - "Compile": 2, - ".options": 1, - "Run": 1, - ".offset": 1, - "used.": 2, - "always": 1, - "strings": 1, - "submitted": 1, - "exact": 1, - "usable": 1, - "integers": 1, - "way": 1, - "i*2": 3, - "what": 2, - "while": 3, - "/": 2, - "/mg": 2, - "aaa": 1, - "nbb": 1, - ".*": 1, - "discover": 1, - "stackusage": 3, - "Locale": 5, - "Support": 1, - "Polish": 1, - "I18N": 2, - "PCRE.": 1, - "Polish.": 1, - "second": 1, - "letter": 1, - "": 1, - "which": 4, - "ISO8859": 1, - "//en.wikipedia.org/wiki/Polish_code_pages": 1, - "complete": 1, - "listing": 1, - "CHAR": 1, - "different": 3, - "character": 2, - "modes": 1, - "In": 1, - "probably": 1, - "expected": 1, - "working": 1, - "single": 2, - "ISO": 3, - "chars.": 1, - "Use": 1, - "zch": 7, - "prepared": 1, - "GTM": 8, - "BADCHAR": 1, - "errors.": 1, - "Also": 1, - "others": 1, - "might": 1, - "expected.": 1, - "POSIX": 1, - "localization": 1, - "nolocale": 2, - "zchset": 2, - "isolocale": 2, - "utflocale": 2, - "LC_CTYPE": 1, - "Set": 2, - "obtain": 2, - "results.": 1, - "envlocale": 2, - "ztrnlnm": 2, - "Notes": 1, - "Enabling": 1, - "native": 1, - "requires": 1, - "libicu": 2, - "gtm_chset": 1, - "gtm_icu_version": 1, - "recompiled": 1, - "object": 4, - "files": 4, - "Instructions": 1, - "Install": 1, - "libicu48": 2, - "apt": 1, - "get": 2, - "install": 1, - "append": 1, - "chown": 1, - "gtm": 1, - "/opt/gtm": 1, - "Startup": 1, - "errors": 6, - "INVOBJ": 1, - "Cannot": 1, - "ZLINK": 1, - "due": 1, - "unexpected": 1, - "Object": 1, - "compiled": 1, - "CHSET": 1, - "written": 3, - "startup": 1, - "correct": 1, - "above.": 1, - "Limits": 1, - "built": 1, - "recursion.": 1, - "Those": 1, - "prevent": 1, - "engine": 1, - "very": 2, - "long": 2, - "runs": 2, - "especially": 1, - "there": 2, - "would": 1, - "paths": 2, - "tree": 1, - "checked.": 1, - "Functions": 1, - "using": 4, - "itself": 1, - "allows": 1, - "MATCH_LIMIT": 1, - "MATCH_LIMIT_RECURSION": 1, - "arguments": 1, - "library": 1, - "compilation": 2, - "Example": 1, - "longrun": 3, - "Equal": 1, - "corrected": 1, - "shortrun": 2, - "Enforced": 1, - "enforcedlimit": 2, - "Exception": 2, - "Handling": 1, - "Error": 1, - "conditions": 1, - "handled": 1, - "zc": 1, - "codes": 1, - "labels": 1, - "file.": 1, - "When": 2, - "neither": 1, - "nor": 1, - "within": 1, - "mechanism.": 1, - "depending": 1, - "caller": 1, - "exception.": 1, - "lead": 1, - "writing": 4, - "prompt": 1, - "terminating": 1, - "image.": 1, - "define": 2, - "handlers.": 1, - "Handler": 1, - "No": 17, - "nohandler": 4, - "Pattern": 1, - "failed": 1, - "unmatched": 1, - "parentheses": 1, - "<-->": 1, - "HERE": 1, - "RTSLOC": 2, - "At": 2, - "SETECODE": 1, - "Non": 1, - "assigned": 1, - "ECODE": 1, - "32": 1, - "GT": 1, - "image": 1, - "terminated": 1, - "myexception1": 3, - "zt=": 1, - "mytrap1": 2, - "zg": 2, - "mytrap3": 1, - "DETAILS": 1, - "executed": 1, - "frame": 1, - "called.": 1, - "deeper": 1, - "frames": 1, - "already": 1, - "dropped": 1, - "local": 1, - "available": 1, - "context.": 1, - "Thats": 1, - "why": 1, - "doesn": 1, - "unless": 1, - "cleared.": 1, - "Always": 1, - "done.": 2, - "Execute": 1, - "p5global": 1, - "p5replace": 1, - "p5lf": 1, - "p5nl": 1, - "newline": 1, - "utf8support": 1, - "myexception3": 1, - "contrasting": 1, - "postconditionals": 1, - "IF": 9, - "commands": 1, - "post1": 1, - "postconditional": 3, - "purposely": 4, - "TEST": 16, - "false": 5, - "post2": 1, - "special": 2, - "after": 2, - "post": 1, - "condition": 1, - "PRCAAPR": 1, - "WASH": 1, - "ISC@ALTOONA": 1, - "PA/RGY": 1, - "PATIENT": 5, - "ACCOUNT": 1, - "PROFILE": 1, - "CONT": 1, - "/9/94": 1, - "AM": 1, - "V": 2, - "Accounts": 1, - "Receivable": 1, - "**198": 1, - "**": 2, - "Mar": 1, - "Per": 1, - "VHA": 1, - "Directive": 1, - "modified.": 1, - "EN": 2, - "PRCATY": 2, - "NEW": 3, - "DIC": 6, - "X": 18, - "Y": 26, - "DEBT": 10, - "PRCADB": 5, - "DA": 4, - "PRCA": 14, - "COUNT": 2, - "OUT": 2, - "SEL": 1, - "BILL": 11, - "BAT": 8, - "TRAN": 5, - "DR": 4, - "DXS": 1, - "DTOUT": 2, - "DIROUT": 1, - "DIRUT": 1, - "DUOUT": 1, - "ASK": 3, - "DPTNOFZY": 2, - "DPTNOFZK": 2, - "K": 5, - "DTIME": 1, - "UPPER": 1, - "VALM1": 1, - "RCD": 1, - "DISV": 2, - "DUZ": 3, - "NAM": 1, - "RCFN01": 1, - "COMP": 2, - "EN1": 1, - "PRCAATR": 1, - "Y_": 3, - "PRCADB_": 1, - "HDR": 1, - "PRCAAPR1": 3, - "HDR2": 1, - "DIS": 1, - "STAT1": 2, - "_PRCATY_": 1, - "COMP1": 2, - "RCY": 5, - "]": 14, - "COMP2": 2, - "_STAT_": 1, - "_STAT": 1, - "payments": 1, - "_TRAN": 1, - "Keith": 1, - "Lynch": 1, - "p#f": 1, - "PXAI": 1, - "ISL/JVS": 1, - "ISA/KWP": 1, - "ESW": 1, - "PCE": 2, - "DRIVING": 1, - "RTN": 1, - "/20/03": 1, - "am": 1, - "CARE": 1, - "ENCOUNTER": 2, - "**15": 1, - "Aug": 1, - "DATA2PCE": 1, - "PXADATA": 7, - "PXAPKG": 9, - "PXASOURC": 10, - "PXAVISIT": 8, - "PXAUSER": 6, - "PXANOT": 3, - "ERRRET": 2, - "PXAPREDT": 2, - "PXAPROB": 15, - "PXACCNT": 2, - "add/edit/delete": 1, - "PCE.": 1, - "required": 4, - "pointer": 4, - "visit": 3, - "related.": 1, - "then": 2, - "nodes": 1, - "needed": 1, - "lookup/create": 1, - "visit.": 1, - "adding": 1, - "data.": 1, - "displayed": 1, - "screen": 1, - "debugging": 1, - "initial": 1, - "code.": 1, - "passed": 4, - "reference.": 2, - "present": 1, - "PXKERROR": 2, - "caller.": 1, - "want": 1, - "edit": 1, - "Primary": 3, - "Provider": 1, - "moment": 1, - "editing": 2, - "being": 1, - "dangerous": 1, - "dotted": 1, - "name.": 1, - "warnings": 1, - "occur": 1, - "They": 1, - "form": 1, - "general": 1, - "description": 1, - "problem.": 1, - "ERROR1": 1, - "GENERAL": 2, - "ERRORS": 4, - "SUBSCRIPT": 5, - "PASSED": 4, - "IN": 4, - "FIELD": 2, - "FROM": 5, - "WARNING2": 1, - "WARNINGS": 2, - "WARNING3": 1, - "SERVICE": 1, - "CONNECTION": 1, - "REASON": 9, - "ERROR4": 1, - "PROBLEM": 1, - "LIST": 1, - "Returns": 2, - "PFSS": 2, - "Account": 2, - "Reference": 2, - "known.": 1, - "Returned": 1, - "located": 1, - "Order": 1, - "#100": 1, - "process": 3, - "processed": 1, - "could": 1, - "incorrectly": 1, - "VARIABLES": 1, - "NOVSIT": 1, - "PXAK": 20, - "DFN": 1, - "PXAERRF": 3, - "PXADEC": 1, - "PXELAP": 1, - "PXASUB": 2, - "VALQUIET": 2, - "PRIMFND": 7, - "PXAERROR": 1, - "PXAERR": 7, - "PRVDR": 1, - "needs": 1, - "look": 1, - "up": 1, - "passed.": 1, - "@PXADATA@": 8, - "SOR": 1, - "SOURCE": 2, - "PKG2IEN": 1, - "VSIT": 1, - "PXAPIUTL": 2, - "TMPSOURC": 1, - "SAVES": 1, - "CREATES": 1, - "VST": 2, - "VISIT": 3, - "KILL": 1, - "VPTR": 1, - "PXAIVSTV": 1, - "ERR": 2, - "PXAIVST": 1, - "PRV": 1, - "PROVIDER": 1, - "AUPNVSIT": 1, - ".I": 4, - "..S": 7, - "status": 2, - "Secondary": 2, - ".S": 6, - "..I": 2, - "PXADI": 4, - "NODE": 5, - "SCREEN": 2, - "VA": 1, - "EXTERNAL": 2, - "INTERNAL": 2, - "ARRAY": 2, - "PXAICPTV": 1, - "SEND": 1, - "W": 4, - "BLD": 2, - "DIALOG": 4, - ".PXAERR": 3, - "MSG": 2, - "GLOBAL": 1, - "NA": 1, - "PROVDRST": 1, - "Check": 1, - "provider": 1, - "PRVIEN": 14, - "DETS": 7, - "DIQ": 3, - "PRI": 3, - "PRVPRIM": 2, - "AUPNVPRV": 2, - "U": 14, - ".04": 1, - "DIQ1": 1, - "POVPRM": 1, - "POVARR": 1, - "STOP": 1, - "LPXAK": 4, - "ORDX": 14, - "NDX": 7, - "ORDXP": 3, - "DX": 2, - "ICD9": 2, - "AUPNVPOV": 2, - "@POVARR@": 6, - "force": 1, - "originally": 1, - "primary": 1, - "diagnosis": 1, - "flag": 1, - ".F": 2, - "..E": 1, - "...S": 5, - "decode": 1, - "val": 5, - "Decoded": 1, - "Encoded": 1, - "decoded": 3, - "decoded_": 1, - "safechar": 3, - "zchar": 1, - "encoded_c": 1, - "encoded_": 2, - "FUNC": 1, - "DH": 1, - "zascii": 1, - "WVBRNOT": 1, - "HCIOFO/FT": 1, - "JR": 1, - "IHS/ANMC/MWR": 1, - "BROWSE": 1, - "NOTIFICATIONS": 1, - "/30/98": 1, - "WOMEN": 1, - "WVDATE": 8, - "WVENDDT1": 2, - "WVIEN": 13, - "..F": 2, - "WV": 8, - "WVXREF": 1, - "WVDFN": 6, - "SELECTING": 1, - "ONE": 2, - "CASE": 1, - "MANAGER": 1, - "AND": 3, - "THIS": 3, - "DOESN": 1, - "WVE": 2, - "": 2, - "STORE": 3, - "WVA": 2, - "WVBEGDT1": 1, - "NOTIFICATION": 1, - "IS": 3, - "NOT": 1, - "QUEUED.": 1, - "WVB": 4, - "OR": 2, - "OPEN": 1, - "ONLY": 1, - "CLOSED.": 1, - ".Q": 1, - "EP": 4, - "ALREADY": 1, - "LL": 1, - "SORT": 3, - "ABOVE.": 1, - "DATE": 1, - "WVCHRT": 1, - "SSN": 1, - "WVUTL1": 2, - "SSN#": 1, - "WVNAME": 4, - "WVACC": 4, - "ACCESSION#": 1, - "WVSTAT": 1, - "STATUS": 2, - "WVUTL4": 1, - "WVPRIO": 5, - "PRIORITY": 1, - "WVCHRT_U_WVNAME_U_WVDATE_U_WVACC_U_WVSTAT_U_WVPRIO_U_WVIEN": 1, - "WVC": 4, - "COPYGBL": 3, - "COPY": 1, - "MAKE": 1, - "IT": 1, - "FLAT.": 1, - "...F": 1, - "....S": 1, - "DEQUEUE": 1, - "TASKMAN": 1, - "QUEUE": 1, - "OF": 2, - "PRINTOUT.": 1, - "SETVARS": 2, - "WVUTL5": 2, - "WVBRNOT1": 2, - "EXIT": 1, - "FOLLOW": 1, - "CALLED": 1, - "PROCEDURE": 1, - "FOLLOWUP": 1, - "MENU.": 1, - "WVBEGDT": 1, - "DT": 2, - "WVENDDT": 1, - "DEVICE": 1, - "WVBRNOT2": 1, - "WVPOP": 1, - "WVLOOP": 1, - "ZDIOUT1": 1, - "Experimental": 1, - "FileMan": 1, - "host": 2, - "Open": 1, - "Source": 1, - "Electronic": 1, - "Health": 1, - "Record": 1, - "Agent": 1, - "Licensed": 1, - "Apache": 1, - "Version": 1, - "may": 3, - "except": 1, - "compliance": 1, - "License.": 2, - "//www.apache.org/licenses/LICENSE": 1, - "Unless": 1, - "applicable": 1, - "law": 1, - "agreed": 1, - "BASIS": 1, - "WARRANTIES": 1, - "CONDITIONS": 1, - "KIND": 1, - "express": 1, - "implied.": 1, - "governing": 1, - "permissions": 2, - "limitations": 1, - "ASKFILE": 1, - "FILE": 5, - "ASKDIR": 1, - "DIR": 3, - "SAVEFILE": 2, - "Save": 1, - "given": 1, - "directory": 1, - "CHECK": 1, - "FGR": 4, - "_FILE": 1, - "IO": 4, - "DIR_": 1, - "L": 1, - "FILENAME": 1, - "_IO_": 1, - "_P_": 1, - "NM": 1, - "non": 1, - "printing": 1, - "escaped": 1, - "evaluation": 1, - "RHS": 1, - "SET.": 1, - "TODO": 1, - "Caller": 1, - "indentation": 1, - "comment": 1, - "tab": 1, - "space.": 1, - "M/Wire": 4, - "Protocol": 2, - "Systems": 1, - "By": 1, - "server": 1, - "port": 4, - "systems": 3, - "invoked": 2, - "via": 2, - "xinetd": 2, - "Edit": 1, - "/etc/services": 1, - "mwire": 2, - "/tcp": 1, - "#": 1, - "Service": 1, - "Copy": 2, - "/etc/xinetd.d/mwire": 1, - "/usr/local/gtm/zmwire": 1, - "its": 1, - "executable": 1, - "edited": 1, - "Restart": 1, - "sudo": 1, - "/etc/init.d/xinetd": 1, - "On": 1, - "installed": 1, - "MGWSI": 1, - "provide": 1, - "hashing": 1, - "passwords": 1, - "Alternatively": 1, - "substitute": 1, - "callout": 1, - "choice": 1, - "Daemon": 2, - "running": 1, - "jobbed": 1, - "job": 1, - "zmwireDaemon": 2, - "simply": 1, - "Stop": 1, - "RESJOB": 1, - "it.": 1, - "mwireVersion": 4, - "mwireDate": 2, - "July": 1, - "_crlf": 22, - "_response_": 4, - "_crlf_response_crlf": 4, - "authNeeded": 6, - "input": 41, - "cleardown": 2, - "zint": 1, - "role": 3, - "loop": 7, - "log": 1, - "halt": 3, - "auth": 2, - "ignore": 12, - "pid": 36, - "monitor": 1, - "input_crlf": 1, - "zsy": 2, - "_pid_": 1, - "_pid": 1, - "monitoroutput": 1, - "logger": 17, - "tot": 2, - "mwireLogger": 3, - "info": 1, - "response_": 1, - "_count": 1, - "setpassword": 1, - "SETPASSWORD": 2, - "secret": 2, - "": 1, - "role=": 1, - "admin": 1, - "newrole": 4, - "getGloRef": 3, - "gloName": 1, - "gloRef": 15, - "nb": 2, - "subs": 8, - "nsp": 1, - "subs_": 2, - "_data_": 3, - "subscripts": 8, - "_value_": 1, - "_error_": 1, - "kill": 3, - "xx": 16, - "method": 2, - "Missing": 5, - "JSON": 7, - "transaction": 6, - "document": 6, - "setJSON": 4, - "GlobalName": 3, - "setGlobal": 1, - "zmwire_null_value": 1, - "Invalid": 1, - "props": 1, - "arr": 2, - "getJSON": 2, - "incr": 1, - "incrbr": 1, - "class": 1, - "##": 2, - "decr": 1, - "decrby": 1, - "direction": 1, - "subscriptValue": 1, - "dataStatus": 1, - "dataValue": 1, - "nextsubscript": 2, - "reverseorder": 1, - "*2": 1, - "queryget": 1, - "xxyy": 2, - "zz": 2, - "getallsubscripts": 1, - "orderall": 1, - "": 3, - "note": 2, - "escaping": 1, - "foo": 2, - "_gloRef": 1, - "@x": 4, - "_crlf_": 1, - "j_": 1, - "params": 10, - "_crlf_resp_crlf": 2, - "_crlf_data_crlf": 2, - "mergeto": 1, - "dataLength": 4, - "keyLength": 6, - "noOfRecs": 6, - "MERGETO": 1, - "myglobal": 1, - "*6": 1, - "hello": 1, - "": 2, - "put": 1, - "top": 1, - "noOfRecs#2": 1, - "noOfRecs/2": 1, - "gloRef1": 2, - "gloRef1_": 2, - "_gloRef1_key_": 1, - "sub": 2, - "literal": 2, - "valquot_value_valquot": 1, - "json_value_": 1, - "subscripts1": 2, - "subx": 3, - "subNo": 1, - "numsub": 1, - "json_": 2, - "removeControlChars": 2, - "zobj1": 1, - "buff": 10, - "parseJSONObject": 2, - ".buff": 2, - "subs2": 6, - "_name_": 1, - "subs2_": 2, - "value_c": 1, - "newString": 4, - "newString_c": 1, - "utfConvert": 1, - "Unescape": 1, - "buf": 4, - "c1": 4, - "buf_c1_": 1 - }, - "Makefile": { - "all": 1, - "hello": 4, - "main.o": 3, - "factorial.o": 3, - "hello.o": 3, - "g": 4, - "+": 8, - "-": 6, - "o": 1, - "main.cpp": 2, - "c": 3, - "factorial.cpp": 2, - "hello.cpp": 2, - "clean": 1, - "rm": 1, - "rf": 1, - "*o": 1, - "SHEBANG#!make": 1, - "%": 1, - "ls": 1, - "l": 1 - }, - "Markdown": { - "Tender": 1 - }, - "Matlab": { - "function": 34, - "[": 311, - "dx": 6, - "y": 25, - "]": 311, - "adapting_structural_model": 2, - "(": 1379, - "t": 32, - "x": 46, - "u": 3, - "varargin": 25, - ")": 1380, - "%": 554, - "size": 11, - "aux": 3, - "{": 157, - "end": 150, - "}": 157, - ";": 909, - "m": 44, - "zeros": 61, - "b": 12, - "for": 78, - "i": 338, - "if": 52, - "+": 169, - "elseif": 14, - "else": 23, - "display": 10, - "aux.pars": 3, - ".*": 2, - "Yp": 2, - "human": 1, - "aux.timeDelay": 2, - "c1": 5, - "aux.m": 3, - "*": 46, - "aux.b": 3, - "e": 14, - "-": 673, - "c2": 5, - "Yc": 5, - "parallel": 2, - "plant": 4, - "aux.plantFirst": 2, - "aux.plantSecond": 2, - "Ys": 1, - "feedback": 1, - "A": 11, - "B": 9, - "C": 13, - "D": 7, - "tf2ss": 1, - "Ys.num": 1, - "Ys.den": 1, - "average": 1, - "n": 102, - "|": 2, - "&": 4, - "error": 16, - "sum": 2, - "/length": 1, - "bicycle": 7, - "bicycle_state_space": 1, - "speed": 20, - "S": 5, - "dbstack": 1, - "CURRENT_DIRECTORY": 2, - "fileparts": 1, - ".file": 1, - "par": 7, - "par_text_to_struct": 4, - "filesep": 14, - "...": 162, - "whipple_pull_force_abcd": 2, - "states": 7, - "outputs": 10, - "inputs": 14, - "defaultSettings.states": 1, - "defaultSettings.inputs": 1, - "defaultSettings.outputs": 1, - "userSettings": 3, - "varargin_to_structure": 2, - "struct": 1, - "settings": 3, - "overwrite_settings": 2, - "defaultSettings": 3, - "minStates": 2, - "ismember": 15, - "settings.states": 3, - "<": 9, - "keepStates": 2, - "find": 24, - "removeStates": 1, - "row": 6, - "abs": 12, - "col": 5, - "s": 13, - "sprintf": 11, - "removeInputs": 2, - "settings.inputs": 1, - "keepOutputs": 2, - "settings.outputs": 1, - "It": 1, - "is": 7, - "not": 3, - "possible": 1, - "to": 9, - "keep": 1, - "output": 7, - "because": 1, - "it": 1, - "depends": 1, - "on": 13, - "input": 14, - "StateName": 1, - "OutputName": 1, - "InputName": 1, - "x_0": 45, - "linspace": 14, - "vx_0": 37, - "z": 3, - "j": 242, - "*vx_0": 1, - "figure": 17, - "pcolor": 2, - "shading": 3, - "flat": 3, - "name": 4, - "order": 11, - "convert_variable": 1, - "variable": 10, - "coordinates": 6, - "speeds": 21, - "get_variables": 2, - "columns": 4, - "create_ieee_paper_plots": 2, - "data": 27, - "rollData": 8, - "global": 6, - "goldenRatio": 12, - "sqrt": 14, - "/": 59, - "exist": 1, - "mkdir": 1, - "linestyles": 15, - "colors": 13, - "loop_shape_example": 3, - "data.Benchmark.Medium": 2, - "plot_io_roll": 3, - "open_loop_all_bikes": 1, - "handling_all_bikes": 1, - "path_plots": 1, - "var": 3, - "io": 7, - "typ": 3, - "length": 49, - "plot_io": 1, - "phase_portraits": 2, - "eigenvalues": 2, - "bikeData": 2, - "figWidth": 24, - "figHeight": 19, - "set": 43, - "gcf": 17, - "freq": 12, - "hold": 23, - "all": 15, - "closedLoops": 1, - "bikeData.closedLoops": 1, - "bops": 7, - "bodeoptions": 1, - "bops.FreqUnits": 1, - "strcmp": 24, - "gray": 7, - "deltaNum": 2, - "closedLoops.Delta.num": 1, - "deltaDen": 2, - "closedLoops.Delta.den": 1, - "bodeplot": 6, - "tf": 18, - "neuroNum": 2, - "neuroDen": 2, - "whichLines": 3, - "phiDotNum": 2, - "closedLoops.PhiDot.num": 1, - "phiDotDen": 2, - "closedLoops.PhiDot.den": 1, - "closedBode": 3, - "off": 10, - "opts": 4, - "getoptions": 2, - "opts.YLim": 3, - "opts.PhaseMatching": 2, - "opts.PhaseMatchingValue": 2, - "opts.Title.String": 2, - "setoptions": 2, - "lines": 17, - "findobj": 5, - "raise": 19, - "plotAxes": 22, - "curPos1": 4, - "get": 11, - "curPos2": 4, - "xLab": 8, - "legWords": 3, - "closeLeg": 2, - "legend": 7, - "axes": 9, - "db1": 4, - "text": 11, - "db2": 2, - "dArrow1": 2, - "annotation": 13, - "dArrow2": 2, - "dArrow": 2, - "filename": 21, - "pathToFile": 11, - "print": 6, - "fix_ps_linestyle": 6, - "openLoops": 1, - "bikeData.openLoops": 1, - "num": 24, - "openLoops.Phi.num": 1, - "den": 15, - "openLoops.Phi.den": 1, - "openLoops.Psi.num": 1, - "openLoops.Psi.den": 1, - "openLoops.Y.num": 1, - "openLoops.Y.den": 1, - "openBode": 3, - "line": 15, - "wc": 14, - "wShift": 5, - "num2str": 10, - "bikeData.handlingMetric.num": 1, - "bikeData.handlingMetric.den": 1, - "w": 6, - "mag": 4, - "phase": 2, - "bode": 5, - "metricLine": 1, - "plot": 26, - "k": 75, - "Linewidth": 7, - "Color": 13, - "Linestyle": 6, - "Handling": 2, - "Quality": 2, - "Metric": 2, - "Frequency": 2, - "rad/s": 4, - "Level": 6, - "benchmark": 1, - "Handling.eps": 1, - "plots": 4, - "deps2": 1, - "loose": 4, - "PaperOrientation": 3, - "portrait": 3, - "PaperUnits": 3, - "inches": 3, - "PaperPositionMode": 3, - "manual": 3, - "PaperPosition": 3, - "PaperSize": 3, - "rad/sec": 1, - "phi": 13, - "Open": 1, - "Loop": 1, - "Bode": 1, - "Diagrams": 1, - "at": 3, - "m/s": 6, - "Latex": 1, - "type": 4, - "LineStyle": 2, - "LineWidth": 2, - "Location": 2, - "Southwest": 1, - "Fontsize": 4, - "YColor": 2, - "XColor": 1, - "Position": 6, - "Xlabel": 1, - "Units": 1, - "normalized": 1, - "openBode.eps": 1, - "deps2c": 3, - "maxMag": 2, - "max": 9, - "magnitudes": 1, - "area": 1, - "fillColors": 1, - "gca": 8, - "speedNames": 12, - "metricLines": 2, - "bikes": 24, - "data.": 6, - ".": 13, - ".handlingMetric.num": 1, - ".handlingMetric.den": 1, - "chil": 2, - "legLines": 1, - "Hands": 1, - "free": 1, - "@": 1, - "handling.eps": 1, - "f": 13, - "YTick": 1, - "YTickLabel": 1, - "Path": 1, - "Southeast": 1, - "Distance": 1, - "Lateral": 1, - "Deviation": 1, - "paths.eps": 1, - "d": 12, - "like": 1, - "plot.": 1, - "names": 6, - "prettyNames": 3, - "units": 3, - "index": 6, - "fieldnames": 5, - "data.Browser": 1, - "maxValue": 4, - "oneSpeed": 3, - "history": 7, - "oneSpeed.": 3, - "round": 1, - "pad": 10, - "yShift": 16, - "xShift": 3, - "time": 21, - "oneSpeed.time": 2, - "oneSpeed.speed": 2, - "distance": 6, - "xAxis": 12, - "xData": 3, - "textX": 3, - "ylim": 2, - "ticks": 4, - "xlabel": 8, - "xLimits": 6, - "xlim": 8, - "loc": 3, - "l1": 2, - "l2": 2, - "first": 3, - "ylabel": 4, - "box": 4, - "&&": 13, - "x_r": 6, - "y_r": 6, - "w_r": 5, - "h_r": 5, - "rectangle": 2, - "w_r/2": 4, - "h_r/2": 4, - "x_a": 10, - "y_a": 10, - "w_a": 7, - "h_a": 5, - "ax": 15, - "axis": 5, - "rollData.speed": 1, - "rollData.time": 1, - "path": 3, - "rollData.path": 1, - "frontWheel": 3, - "rollData.outputs": 3, - "rollAngle": 4, - "steerAngle": 4, - "rollTorque": 4, - "rollData.inputs": 1, - "subplot": 3, - "h1": 5, - "h2": 5, - "plotyy": 3, - "inset": 3, - "gainChanges": 2, - "loopNames": 4, - "xy": 7, - "xySource": 7, - "xlabels": 2, - "ylabels": 2, - "legends": 3, - "floatSpec": 3, - "twentyPercent": 1, - "generate_data": 5, - "nominalData": 1, - "nominalData.": 2, - "bikeData.": 2, - "twentyPercent.": 2, - "equal": 2, - "leg1": 2, - "bikeData.modelPar.": 1, - "leg2": 2, - "twentyPercent.modelPar.": 1, - "eVals": 5, - "pathToParFile": 2, - "str": 2, - "eigenValues": 1, - "eig": 6, - "real": 3, - "zeroIndices": 3, - "ones": 6, - "maxEvals": 4, - "maxLine": 7, - "minLine": 4, - "min": 1, - "speedInd": 12, - "cross_validation": 1, - "hyper_parameter": 3, - "num_data": 2, - "K": 4, - "indices": 2, - "crossvalind": 1, - "errors": 4, - "test_idx": 4, - "train_idx": 3, - "x_train": 2, - "y_train": 2, - "train": 1, - "x_test": 3, - "y_test": 3, - "calc_cost": 1, - "calc_error": 2, - "mean": 2, - "value": 2, - "isterminal": 2, - "direction": 2, - "mu": 73, - "FIXME": 1, - "from": 2, - "the": 14, - "largest": 1, - "primary": 1, - "clear": 13, - "tic": 7, - "T": 22, - "x_min": 3, - "x_max": 3, - "y_min": 3, - "y_max": 3, - "how": 1, - "many": 1, - "points": 11, - "per": 5, - "one": 3, - "measure": 1, - "unit": 1, - "both": 1, - "in": 8, - "and": 7, - "ds": 1, - "x_res": 7, - "*n": 2, - "y_res": 7, - "grid_x": 3, - "grid_y": 3, - "advected_x": 12, - "advected_y": 12, - "parfor": 5, - "X": 6, - "ode45": 6, - "@dg": 1, - "store": 4, - "advected": 2, - "positions": 2, - "as": 4, - "they": 2, - "would": 2, - "appear": 2, - "coords": 2, - "Compute": 3, - "FTLE": 14, - "sigma": 6, - "compute": 2, - "Jacobian": 3, - "*ds": 4, - "eigenvalue": 2, - "of": 35, - "*phi": 2, - "log": 2, - "lambda_max": 2, - "/abs": 3, - "*T": 3, - "toc": 5, - "field": 2, - "contourf": 2, - "location": 1, - "EastOutside": 1, - "f_x_t": 2, - "inline": 1, - "grid_min": 3, - "grid_max": 3, - "grid_width": 1, - "grid_spacing": 5, - "grid_width/": 1, - "*grid_width/": 4, - "colorbar": 1, - "load_data": 4, - "t0": 6, - "t1": 6, - "t2": 6, - "t3": 1, - "dataPlantOne": 3, - "data.Ts": 6, - "dataAdapting": 3, - "dataPlantTwo": 3, - "guessPlantOne": 4, - "resultPlantOne": 1, - "find_structural_gains": 2, - "yh": 2, - "fit": 6, - "x0": 4, - "compare": 3, - "resultPlantOne.fit": 1, - "guessPlantTwo": 3, - "resultPlantTwo": 1, - "resultPlantTwo.fit": 1, - "kP1": 4, - "resultPlantOne.fit.par": 1, - "kP2": 3, - "resultPlantTwo.fit.par": 1, - "gainSlopeOffset": 6, - "eye": 9, - "this": 2, - "only": 7, - "uses": 1, - "tau": 1, - "through": 1, - "wfs": 1, - "true": 2, - "plantOneSlopeOffset": 3, - "plantTwoSlopeOffset": 3, - "mod": 3, - "idnlgrey": 1, - "pem": 1, - "guess.plantOne": 3, - "guess.plantTwo": 2, - "plantNum.plantOne": 2, - "plantNum.plantTwo": 2, - "sections": 13, - "secData.": 1, - "||": 3, - "guess.": 2, - "result.": 2, - ".fit.par": 1, - "currentGuess": 2, - "warning": 1, - "randomGuess": 1, - "The": 6, - "self": 2, - "validation": 2, - "VAF": 2, - "f.": 2, - "data/": 1, - "results.mat": 1, - "guess": 1, - "plantNum": 1, - "result": 5, - "plots/": 1, - ".png": 1, - "task": 1, - "closed": 1, - "loop": 1, - "system": 2, - "u.": 1, - "gain": 1, - "guesses": 1, - "k1": 4, - "k2": 3, - "k3": 3, - "k4": 4, - "identified": 1, - "gains": 12, - ".vaf": 1, - "Elements": 1, - "grid": 1, - "definition": 2, - "Dimensionless": 1, - "integrating": 1, - "Choice": 2, - "mass": 2, - "parameter": 2, - "Computation": 9, - "Lagrangian": 3, - "Points": 2, - "xl1": 13, - "yl1": 12, - "xl2": 9, - "yl2": 8, - "xl3": 8, - "yl3": 8, - "xl4": 10, - "yl4": 9, - "xl5": 8, - "yl5": 8, - "Lagr": 6, - "initial": 5, - "total": 6, - "energy": 8, - "E_L1": 4, - "Omega": 7, - "C_L1": 3, - "*E_L1": 1, - "Szebehely": 1, - "E": 8, - "Offset": 2, - "Initial": 3, - "conditions": 3, - "range": 2, - "x_0_min": 8, - "x_0_max": 8, - "vx_0_min": 8, - "vx_0_max": 8, - "y_0": 29, - "ndgrid": 2, - "vy_0": 22, - "*E": 2, - "*Omega": 5, - "vx_0.": 2, - "E_cin": 4, - "x_T": 25, - "y_T": 17, - "vx_T": 22, - "vy_T": 12, - "filtro": 15, - "E_T": 11, - "delta_E": 7, - "a": 17, - "matrix": 3, - "numbers": 2, - "integration": 9, - "steps": 2, - "each": 2, - "np": 8, - "number": 2, - "integrated": 5, - "fprintf": 18, - "Energy": 4, - "tolerance": 2, - "setting": 4, - "energy_tol": 6, - "Setting": 1, - "options": 14, - "integrator": 2, - "RelTol": 2, - "AbsTol": 2, - "From": 1, - "Short": 1, - "odeset": 4, - "Parallel": 2, - "equations": 2, - "motion": 2, - "h": 19, - "waitbar": 6, - "r1": 3, - "r2": 3, - "g": 5, - "i/n": 1, - "y_0.": 2, - "./": 1, - "mu./": 1, - "isreal": 8, - "Check": 6, - "velocity": 2, - "positive": 2, - "Kinetic": 2, - "Y": 19, - "@f_reg": 1, - "Saving": 4, - "solutions": 2, - "final": 2, - "difference": 2, - "with": 2, - "conservation": 2, - "position": 2, - "point": 14, - "interesting": 4, - "non": 2, - "sense": 2, - "bad": 4, - "close": 4, - "t_integrazione": 3, - "filtro_1": 12, - "dphi": 12, - "ftle": 10, - "ftle_norm": 1, - "ds_x": 1, - "ds_vx": 1, - "La": 1, - "direzione": 1, - "dello": 1, - "spostamento": 1, - "la": 2, - "decide": 1, - "il": 1, - "denominatore": 1, - "TODO": 1, - "spiegarsi": 1, - "teoricamente": 1, - "come": 1, - "mai": 1, - "matrice": 1, - "pu": 1, - "essere": 1, - "ridotta": 1, - "x2": 1, - "*ds_x": 2, - "*ds_vx": 2, - "Manual": 2, - "visualize": 2, - "*log": 2, - "dphi*dphi": 1, - "tempo": 4, - "integrare": 2, - ".2f": 5, - "calcolare": 2, - "var_": 2, - "_": 2, - "var_xvx_": 2, - "ode00": 2, - "_n": 2, - "save": 2, - "nome": 2, - "Transforming": 1, - "into": 1, - "Hamiltonian": 1, - "variables": 2, - "px_0": 2, - "py_0": 2, - "px_T": 4, - "py_T": 4, - "inf": 1, - "@cr3bp_jac": 1, - "@fH": 1, - "EnergyH": 1, - "t_integr": 1, - "Back": 1, - "Inf": 1, - "_e": 1, - "_H": 1, - "Range": 1, - "E_0": 4, - "C_L1/2": 1, - "Y_0": 4, - "nx": 32, - "nvx": 32, - "dvx": 3, - "ny": 29, - "dy": 5, - "/2": 3, - "ne": 29, - "de": 4, - "e_0": 7, - "Definition": 1, - "arrays": 1, - "In": 1, - "approach": 1, - "useful": 9, - "pints": 1, - "are": 1, - "stored": 1, - "filter": 14, - "l": 64, - "v_y": 3, - "*e_0": 3, - "vx": 2, - "vy": 2, - "Selection": 1, - "Data": 2, - "transfer": 1, - "GPU": 3, - "x_gpu": 3, - "gpuArray": 4, - "y_gpu": 3, - "vx_gpu": 3, - "vy_gpu": 3, - "Integration": 2, - "N": 9, - "x_f": 3, - "y_f": 3, - "vx_f": 3, - "vy_f": 3, - "arrayfun": 2, - "@RKF45_FILE_gpu": 1, - "back": 1, - "CPU": 1, - "memory": 1, - "cleaning": 1, - "gather": 4, - "Construction": 1, - "computation": 2, - "X_T": 4, - "Y_T": 4, - "VX_T": 4, - "VY_T": 3, - "filter_ftle": 11, - "Compute_FILE_gpu": 1, - "Plot": 1, - "results": 1, - "squeeze": 1, - "clc": 1, - "load_bikes": 2, - "e_T": 7, - "Integrate_FILE": 1, - "Integrate": 6, - "Look": 2, - "phisically": 2, - "meaningful": 6, - "meaningless": 2, - "i/nx": 2, - "*Potential": 5, - "ci": 9, - "te": 2, - "ye": 9, - "ie": 2, - "@f": 6, - "Potential": 1, - "delta_e": 3, - "Integrate_FTLE_Gawlick_ell": 1, - "ecc": 2, - "nu": 2, - "ecc*cos": 1, - "@f_ell": 1, - "Consider": 1, - "also": 1, - "negative": 1, - "goodness": 1, - "roots": 3, - "*mu": 6, - "c3": 3, - "lane_change": 1, - "start": 4, - "width": 3, - "slope": 3, - "pathLength": 3, - "single": 1, - "double": 1, - "Double": 1, - "lane": 4, - "change": 1, - "needs": 1, - "lane.": 1, - "laneLength": 4, - "startOfSlope": 3, - "endOfSlope": 1, - "<=>": 1, - "1": 1, - "downSlope": 3, - "gains.Benchmark.Slow": 1, - "place": 2, - "holder": 2, - "gains.Browserins.Slow": 1, - "gains.Browser.Slow": 1, - "gains.Pista.Slow": 1, - "gains.Fisher.Slow": 1, - "gains.Yellow.Slow": 1, - "gains.Yellowrev.Slow": 1, - "gains.Benchmark.Medium": 1, - "gains.Browserins.Medium": 1, - "gains.Browser.Medium": 1, - "gains.Pista.Medium": 1, - "gains.Fisher.Medium": 1, - "gains.Yellow.Medium": 1, - "gains.Yellowrev.Medium": 1, - "gains.Benchmark.Fast": 1, - "gains.Browserins.Fast": 1, - "gains.Browser.Fast": 1, - "gains.Pista.Fast": 1, - "gains.Fisher.Fast": 1, - "gains.Yellow.Fast": 1, - "gains.Yellowrev.Fast": 1, - "gains.": 1, - "parser": 1, - "inputParser": 1, - "parser.addRequired": 1, - "parser.addParamValue": 3, - "parser.parse": 1, - "args": 1, - "parser.Results": 1, - "raw": 1, - "load": 1, - "args.directory": 1, - "iddata": 1, - "raw.theta": 1, - "raw.theta_c": 1, - "args.sampleTime": 1, - "args.detrend": 1, - "detrend": 1, - "filtfcn": 2, - "statefcn": 2, - "makeFilter": 1, - "v": 12, - "@iirFilter": 1, - "@getState": 1, - "yn": 2, - "iirFilter": 1, - "xn": 4, - "vOut": 2, - "getState": 1, - "classdef": 1, - "matlab_class": 2, - "properties": 1, - "R": 1, - "G": 1, - "methods": 1, - "obj": 2, - "r": 2, - "obj.R": 2, - "obj.G": 2, - "obj.B": 2, - "disp": 8, - "enumeration": 1, - "red": 1, - "green": 1, - "blue": 1, - "cyan": 1, - "magenta": 1, - "yellow": 1, - "black": 1, - "white": 1, - "ret": 3, - "matlab_function": 5, - "Call": 2, - "which": 2, - "resides": 2, - "same": 2, - "directory": 2, - "value1": 4, - "semicolon": 2, - "mandatory": 2, - "suppresses": 2, - "command": 2, - "line.": 2, - "value2": 4, - "d_mean": 3, - "d_std": 3, - "normalize": 1, - "repmat": 2, - "std": 1, - "d./": 1, - "overrideSettings": 3, - "overrideNames": 2, - "defaultNames": 2, - "notGiven": 5, - "setxor": 1, - "settings.": 1, - "defaultSettings.": 1, - "fid": 7, - "fopen": 2, - "textscan": 1, - "fclose": 2, - "strtrim": 2, - "vals": 2, - "regexp": 1, - "par.": 1, - "str2num": 1, - "choose_plant": 4, - "p": 7, - "Conditions": 1, - "@cross_y": 1, - "ode113": 2, - "RK4": 3, - "fun": 5, - "tspan": 7, - "th": 1, - "Runge": 1, - "Kutta": 1, - "dim": 2, - "while": 1, - "h/2": 2, - "k1*h/2": 1, - "k2*h/2": 1, - "h*k3": 1, - "h/6*": 1, - "*k2": 1, - "*k3": 1, - "arg1": 1, - "arg": 2, - "RK4_par": 1, - "wnm": 11, - "zetanm": 5, - "ss": 3, - "data.modelPar.A": 1, - "data.modelPar.B": 1, - "data.modelPar.C": 1, - "data.modelPar.D": 1, - "bicycle.StateName": 2, - "bicycle.OutputName": 4, - "bicycle.InputName": 2, - "analytic": 3, - "system_state_space": 2, - "numeric": 2, - "data.system.A": 1, - "data.system.B": 1, - "data.system.C": 1, - "data.system.D": 1, - "numeric.StateName": 1, - "data.bicycle.states": 1, - "numeric.InputName": 1, - "data.bicycle.inputs": 1, - "numeric.OutputName": 1, - "data.bicycle.outputs": 1, - "pzplot": 1, - "ss2tf": 2, - "analytic.A": 3, - "analytic.B": 1, - "analytic.C": 1, - "analytic.D": 1, - "mine": 1, - "data.forceTF.PhiDot.num": 1, - "data.forceTF.PhiDot.den": 1, - "numeric.A": 2, - "numeric.B": 1, - "numeric.C": 1, - "numeric.D": 1, - "whipple_pull_force_ABCD": 1, - "bottomRow": 1, - "prod": 3, - "Earth": 2, - "Moon": 2, - "C_star": 1, - "C/2": 1, - "orbit": 1, - "Y0": 6, - "y0": 2, - "vx0": 2, - "vy0": 2, - "l0": 1, - "delta_E0": 1, - "Hill": 1, - "Edgecolor": 1, - "none": 1, - "ok": 2, - "sg": 1, - "sr": 1, - "arguments": 7, - "ischar": 1, - "options.": 1, - "write_gains": 1, - "contents": 1, - "importdata": 1, - "speedsInFile": 5, - "contents.data": 2, - "gainsInFile": 3, - "sameSpeedIndices": 5, - "allGains": 4, - "allSpeeds": 4, - "sort": 1, - "contents.colheaders": 1 - }, - "Max": { - "{": 126, - "}": 126, - "[": 163, - "]": 163, - "max": 1, - "v2": 1, - ";": 39, - "#N": 2, - "vpatcher": 1, - "#P": 33, - "toggle": 1, - "button": 4, - "window": 2, - "setfont": 1, - "Verdana": 1, - "linecount": 1, - "newex": 8, - "r": 1, - "jojo": 2, - "#B": 2, - "color": 2, - "s": 1, - "route": 1, - "append": 1, - "toto": 1, - "%": 1, - "counter": 2, - "#X": 1, - "flags": 1, - "newobj": 1, - "metro": 1, - "t": 2, - "message": 2, - "Goodbye": 1, - "World": 2, - "Hello": 1, - "connect": 13, - "fasten": 1, - "pop": 1 - }, - "MediaWiki": { - "Overview": 1, - "The": 17, - "GDB": 15, - "Tracepoint": 4, - "Analysis": 1, - "feature": 3, - "is": 9, - "an": 3, - "extension": 1, - "to": 12, - "the": 72, - "Tracing": 3, - "and": 20, - "Monitoring": 1, - "Framework": 1, - "that": 4, - "allows": 2, - "visualization": 1, - "analysis": 1, - "of": 8, - "C/C": 10, - "+": 20, - "tracepoint": 5, - "data": 5, - "collected": 2, - "by": 10, - "stored": 1, - "a": 12, - "log": 1, - "file.": 1, - "Getting": 1, - "Started": 1, - "can": 9, - "be": 18, - "installed": 2, - "from": 8, - "Eclipse": 1, - "update": 2, - "site": 1, - "selecting": 1, - ".": 8, - "requires": 1, - "version": 1, - "or": 8, - "later": 1, - "on": 3, - "local": 1, - "host.": 1, - "executable": 3, - "program": 1, - "must": 3, - "found": 1, - "in": 15, - "path.": 1, - "Trace": 9, - "Perspective": 1, - "To": 1, - "open": 1, - "perspective": 2, - "select": 5, - "includes": 1, - "following": 1, - "views": 2, - "default": 2, - "*": 6, - "This": 7, - "view": 7, - "shows": 7, - "projects": 1, - "workspace": 2, - "used": 1, - "create": 1, - "manage": 1, - "projects.": 1, - "running": 1, - "Postmortem": 5, - "Debugger": 4, - "instances": 1, - "displays": 2, - "thread": 1, - "stack": 2, - "trace": 17, - "associated": 1, - "with": 4, - "tracepoint.": 3, - "status": 1, - "debugger": 1, - "navigation": 1, - "records.": 1, - "console": 1, - "output": 1, - "Debugger.": 1, - "editor": 7, - "area": 2, - "contains": 1, - "editors": 1, - "when": 1, - "opened.": 1, - "[": 11, - "Image": 2, - "images/GDBTracePerspective.png": 1, - "]": 11, - "Collecting": 2, - "Data": 4, - "outside": 2, - "scope": 1, - "this": 5, - "feature.": 1, - "It": 1, - "done": 2, - "command": 1, - "line": 2, - "using": 3, - "CDT": 3, - "debug": 1, - "component": 1, - "within": 1, - "Eclipse.": 1, - "See": 1, - "FAQ": 2, - "entry": 2, - "#References": 2, - "|": 2, - "References": 3, - "section.": 2, - "Importing": 2, - "Some": 1, - "information": 1, - "section": 1, - "redundant": 1, - "LTTng": 3, - "User": 3, - "Guide.": 1, - "For": 1, - "further": 1, - "details": 1, - "see": 1, - "Guide": 2, - "Creating": 1, - "Project": 1, - "In": 5, - "right": 3, - "-": 8, - "click": 8, - "context": 4, - "menu.": 4, - "dialog": 1, - "name": 2, - "your": 2, - "project": 2, - "tracing": 1, - "folder": 5, - "Browse": 2, - "enter": 2, - "source": 2, - "directory.": 1, - "Select": 1, - "file": 6, - "tree.": 1, - "Optionally": 1, - "set": 1, - "type": 2, - "Click": 1, - "Alternatively": 1, - "drag": 1, - "&": 1, - "dropped": 1, - "any": 2, - "external": 1, - "manager.": 1, - "Selecting": 2, - "Type": 1, - "Right": 2, - "imported": 1, - "choose": 2, - "step": 1, - "omitted": 1, - "if": 1, - "was": 2, - "selected": 3, - "at": 3, - "import.": 1, - "will": 6, - "updated": 2, - "icon": 1, - "images/gdb_icon16.png": 1, - "Executable": 1, - "created": 1, - "identified": 1, - "so": 2, - "launched": 1, - "properly.": 1, - "path": 1, - "press": 1, - "recognized": 1, - "as": 1, - "executable.": 1, - "Visualizing": 1, - "Opening": 1, - "double": 1, - "it": 3, - "opened": 2, - "Events": 5, - "instance": 1, - "launched.": 1, - "If": 2, - "available": 1, - "code": 1, - "corresponding": 1, - "first": 1, - "record": 2, - "also": 2, - "editor.": 2, - "At": 1, - "point": 1, - "recommended": 1, - "relocate": 1, - "not": 1, - "hidden": 1, - "Viewing": 1, - "table": 1, - "shown": 1, - "one": 1, - "row": 1, - "for": 2, - "each": 1, - "record.": 2, - "column": 6, - "sequential": 1, - "number.": 1, - "number": 2, - "assigned": 1, - "collection": 1, - "time": 2, - "method": 1, - "where": 1, - "set.": 1, - "run": 1, - "Searching": 1, - "filtering": 1, - "entering": 1, - "regular": 1, - "expression": 1, - "header.": 1, - "Navigating": 1, - "records": 1, - "keyboard": 1, - "mouse.": 1, - "show": 1, - "current": 1, - "navigated": 1, - "clicking": 1, - "buttons.": 1, - "updated.": 1, - "http": 4, - "//wiki.eclipse.org/index.php/Linux_Tools_Project/LTTng2/User_Guide": 1, - "//wiki.eclipse.org/CDT/User/FAQ#How_can_I_trace_my_application_using_C.2FC.2B.2B_Tracepoints.3F": 1, - "How": 1, - "I": 1, - "my": 1, - "application": 1, - "Tracepoints": 1, - "Updating": 1, - "Document": 1, - "document": 2, - "maintained": 1, - "collaborative": 1, - "wiki.": 1, - "you": 1, - "wish": 1, - "modify": 1, - "please": 1, - "visit": 1, - "//wiki.eclipse.org/index.php/Linux_Tools_Project/GDB_Tracepoint_Analysis/User_Guide": 1, - "//wiki.eclipse.org/Linux_Tools_Project/GDB_Tracepoint_Analysis/User_Guide": 1 - }, - "Monkey": { - "Strict": 1, - "sample": 1, - "class": 1, - "from": 1, - "the": 1, - "documentation": 1, - "Class": 3, - "Game": 1, - "Extends": 2, - "App": 1, - "Function": 2, - "New": 1, - "(": 12, - ")": 12, - "End": 8, - "DrawSpiral": 3, - "clock": 3, - "Local": 3, - "w": 3, - "DeviceWidth/2": 1, - "For": 1, - "i#": 1, - "Until": 1, - "w*1.5": 1, - "Step": 1, - ".2": 1, - "x#": 1, - "y#": 1, - "x": 2, - "+": 5, - "i*Sin": 1, - "i*3": 1, - "y": 2, - "i*Cos": 1, - "i*2": 1, - "DrawRect": 1, - "Next": 1, - "hitbox.Collide": 1, - "event.pos": 1, - "Field": 2, - "updateCount": 3, - "Method": 4, - "OnCreate": 1, - "Print": 2, - "SetUpdateRate": 1, - "OnUpdate": 1, - "OnRender": 1, - "Cls": 1, - "updateCount*1.1": 1, - "Enemy": 1, - "Die": 1, - "Abstract": 1, - "field": 1, - "testField": 1, - "Bool": 2, - "True": 2, - "oss": 1, - "he": 2, - "-": 2, - "killed": 1, - "me": 1, - "b": 6, - "extending": 1, - "with": 1, - "generics": 1, - "VectorNode": 1, - "Node": 1, - "": 1, - "array": 1, - "syntax": 1, - "Global": 14, - "listOfStuff": 3, - "String": 4, - "[": 6, - "]": 6, - "lessStuff": 1, - "oneStuff": 1, - "a": 3, - "comma": 1, - "separated": 1, - "sequence": 1, - "text": 1, - "worstCase": 1, - "worst.List": 1, - "": 1, - "escape": 1, - "characers": 1, - "in": 1, - "strings": 1, - "string3": 1, - "string4": 1, - "string5": 1, - "string6": 1, - "prints": 1, - ".ToUpper": 1, - "Boolean": 1, - "shorttype": 1, - "boolVariable1": 1, - "boolVariable2": 1, - "False": 1, - "preprocessor": 1, - "keywords": 1, - "#If": 1, - "TARGET": 2, - "DoStuff": 1, - "#ElseIf": 1, - "DoOtherStuff": 1, - "#End": 1, - "operators": 1, - "|": 2, - "&": 1, - "c": 1 - }, - "MoonScript": { - "types": 2, - "require": 5, - "util": 2, - "data": 1, - "import": 5, - "reversed": 2, - "unpack": 22, - "from": 4, - "ntype": 16, - "mtype": 3, - "build": 7, - "smart_node": 7, - "is_slice": 2, - "value_is_singular": 3, - "insert": 18, - "table": 2, - "NameProxy": 14, - "LocalName": 2, - "destructure": 1, - "local": 1, - "implicitly_return": 2, - "class": 4, - "Run": 8, - "new": 2, - "(": 54, - "@fn": 1, - ")": 54, - "self": 2, - "[": 79, - "]": 79, - "call": 3, - "state": 2, - "self.fn": 1, - "-": 51, - "transform": 2, - "the": 4, - "last": 6, - "stm": 16, - "is": 2, - "a": 4, - "list": 6, - "of": 1, - "stms": 4, - "will": 1, - "puke": 1, - "on": 1, - "group": 1, - "apply_to_last": 6, - "fn": 3, - "find": 2, - "real": 1, - "exp": 17, - "last_exp_id": 3, - "for": 20, - "i": 15, - "#stms": 1, - "if": 43, - "and": 8, - "break": 1, - "return": 11, - "in": 18, - "ipairs": 3, - "else": 22, - "body": 26, - "sindle": 1, - "expression/statement": 1, - "is_singular": 2, - "false": 2, - "#body": 1, - "true": 4, - "find_assigns": 2, - "out": 9, - "{": 135, - "}": 136, - "thing": 4, - "*body": 2, - "switch": 7, - "when": 12, - "table.insert": 3, - "extract": 1, - "names": 16, - "hoist_declarations": 1, - "assigns": 5, - "hoist": 1, - "plain": 1, - "old": 1, - "*find_assigns": 1, - "name": 31, - "*names": 3, - "type": 5, - "after": 1, - "runs": 1, - "idx": 4, - "while": 3, - "do": 2, - "+": 2, - "expand_elseif_assign": 2, - "ifstm": 5, - "#ifstm": 1, - "case": 13, - "split": 4, - "constructor_name": 2, - "with_continue_listener": 4, - "continue_name": 13, - "nil": 8, - "@listen": 1, - "unless": 6, - "@put_name": 2, - "build.group": 14, - "@splice": 1, - "lines": 2, - "Transformer": 2, - "@transformers": 3, - "@seen_nodes": 3, - "setmetatable": 1, - "__mode": 1, - "scope": 4, - "node": 68, - "...": 10, - "transformer": 3, - "res": 3, - "or": 6, - "bind": 1, - "@transform": 2, - "__call": 1, - "can_transform": 1, - "construct_comprehension": 2, - "inner": 2, - "clauses": 4, - "current_stms": 7, - "_": 10, - "clause": 4, - "t": 10, - "iter": 2, - "elseif": 1, - "cond": 11, - "error": 4, - "..t": 1, - "Statement": 2, - "root_stms": 1, - "@": 1, - "assign": 9, - "values": 10, - "bubble": 1, - "cascading": 2, - "transformed": 2, - "#values": 1, - "value": 7, - "@transform.statement": 2, - "types.cascading": 1, - "ret": 16, - "types.is_value": 1, - "destructure.has_destructure": 2, - "destructure.split_assign": 1, - "continue": 1, - "@send": 1, - "build.assign_one": 11, - "export": 1, - "they": 1, - "are": 1, - "included": 1, - "#node": 3, - "cls": 5, - "cls.name": 1, - "build.assign": 3, - "update": 1, - "op": 2, - "op_final": 3, - "match": 1, - "..op": 1, - "not": 2, - "source": 7, - "stubs": 1, - "real_names": 4, - "build.chain": 7, - "base": 8, - "stub": 4, - "*stubs": 2, - "source_name": 3, - "comprehension": 1, - "action": 4, - "decorated": 1, - "dec": 6, - "wrapped": 4, - "fail": 5, - "..": 1, - "build.declare": 1, - "*stm": 1, - "expand": 1, - "destructure.build_assign": 2, - "build.do": 2, - "apply": 1, - "decorator": 1, - "mutate": 1, - "all": 1, - "bodies": 1, - "body_idx": 3, - "with": 3, - "block": 2, - "scope_name": 5, - "named_assign": 2, - "assign_name": 1, - "@set": 1, - "foreach": 1, - "node.iter": 1, - "destructures": 5, - "node.names": 3, - "proxy": 2, - "next": 1, - "node.body": 9, - "index_name": 3, - "list_name": 6, - "slice_var": 3, - "bounds": 3, - "slice": 7, - "#list": 1, - "table.remove": 2, - "max_tmp_name": 5, - "index": 2, - "conds": 3, - "exp_name": 3, - "convert": 1, - "into": 1, - "statment": 1, - "convert_cond": 2, - "case_exps": 3, - "cond_exp": 5, - "first": 3, - "if_stm": 5, - "*conds": 1, - "if_cond": 4, - "parent_assign": 3, - "parent_val": 1, - "apart": 1, - "properties": 4, - "statements": 4, - "item": 3, - "tuple": 8, - "*item": 1, - "constructor": 7, - "*properties": 1, - "key": 3, - "parent_cls_name": 5, - "base_name": 4, - "self_name": 4, - "cls_name": 1, - "build.fndef": 3, - "args": 3, - "arrow": 1, - "then": 2, - "constructor.arrow": 1, - "real_name": 6, - "#real_name": 1, - "build.table": 2, - "look": 1, - "up": 1, - "object": 1, - "class_lookup": 3, - "cls_mt": 2, - "out_body": 1, - "make": 1, - "sure": 1, - "we": 1, - "don": 1, - "string": 1, - "parens": 2, - "colon_stub": 1, - "super": 1, - "dot": 1, - "varargs": 2, - "arg_list": 1, - "Value": 1 - }, - "Nemerle": { - "using": 1, - "System.Console": 1, - ";": 2, - "module": 1, - "Program": 1, - "{": 2, - "Main": 1, - "(": 2, - ")": 2, - "void": 1, - "WriteLine": 1, - "}": 2 - }, - "NetLogo": { - "patches": 7, - "-": 28, - "own": 1, - "[": 17, - "living": 6, - ";": 12, - "indicates": 1, - "if": 2, - "the": 6, - "cell": 10, - "is": 1, - "live": 4, - "neighbors": 5, - "counts": 1, - "how": 1, - "many": 1, - "neighboring": 1, - "cells": 2, - "are": 1, - "alive": 1, - "]": 17, - "to": 6, - "setup": 2, - "blank": 1, - "clear": 2, - "all": 5, - "ask": 6, - "death": 5, - "reset": 2, - "ticks": 2, - "end": 6, - "random": 2, - "ifelse": 3, - "float": 1, - "<": 1, - "initial": 1, - "density": 1, - "birth": 4, - "set": 5, - "true": 1, - "pcolor": 2, - "fgcolor": 1, - "false": 1, - "bgcolor": 1, - "go": 1, - "count": 1, - "with": 2, - "Starting": 1, - "a": 1, - "new": 1, - "here": 1, - "ensures": 1, - "that": 1, - "finish": 1, - "executing": 2, - "first": 1, - "before": 1, - "any": 1, - "of": 2, - "them": 1, - "start": 1, - "second": 1, - "ask.": 1, - "This": 1, - "keeps": 1, - "in": 2, - "synch": 1, - "each": 2, - "other": 1, - "so": 1, - "births": 1, - "and": 1, - "deaths": 1, - "at": 1, - "generation": 1, - "happen": 1, - "lockstep.": 1, - "tick": 1, - "draw": 1, - "let": 1, - "erasing": 2, - "patch": 2, - "mouse": 5, - "xcor": 2, - "ycor": 2, - "while": 1, - "down": 1, - "display": 1 - }, - "Nginx": { - "user": 1, - "www": 2, - ";": 35, - "worker_processes": 1, - "error_log": 1, - "logs/error.log": 1, - "pid": 1, - "logs/nginx.pid": 1, - "worker_rlimit_nofile": 1, - "events": 1, - "{": 10, - "worker_connections": 1, - "}": 10, - "http": 3, - "include": 3, - "conf/mime.types": 1, - "/etc/nginx/proxy.conf": 1, - "/etc/nginx/fastcgi.conf": 1, - "index": 1, - "index.html": 1, - "index.htm": 1, - "index.php": 1, - "default_type": 1, - "application/octet": 1, - "-": 2, - "stream": 1, - "log_format": 1, - "main": 5, - "access_log": 4, - "logs/access.log": 1, - "sendfile": 1, - "on": 2, - "tcp_nopush": 1, - "server_names_hash_bucket_size": 1, - "#": 4, - "this": 1, - "seems": 1, - "to": 1, - "be": 1, - "required": 1, - "for": 1, - "some": 1, - "vhosts": 1, - "server": 7, - "php/fastcgi": 1, - "listen": 3, - "server_name": 3, - "domain1.com": 1, - "www.domain1.com": 1, - "logs/domain1.access.log": 1, - "root": 2, - "html": 1, - "location": 4, - ".php": 1, - "fastcgi_pass": 1, - "simple": 2, - "reverse": 1, - "proxy": 1, - "domain2.com": 1, - "www.domain2.com": 1, - "logs/domain2.access.log": 1, - "/": 4, - "(": 1, - "images": 1, - "|": 6, - "javascript": 1, - "js": 1, - "css": 1, - "flash": 1, - "media": 1, - "static": 1, - ")": 1, - "/var/www/virtual/big.server.com/htdocs": 1, - "expires": 1, - "d": 1, - "proxy_pass": 2, - "//127.0.0.1": 1, - "upstream": 1, - "big_server_com": 1, - "weight": 2, - "load": 1, - "balancing": 1, - "big.server.com": 1, - "logs/big.server.access.log": 1, - "//big_server_com": 1 - }, - "Nimrod": { - "echo": 1 - }, - "NSIS": { - ";": 39, - "bigtest.nsi": 1, - "This": 2, - "script": 1, - "attempts": 1, - "to": 6, - "test": 1, - "most": 1, - "of": 3, - "the": 4, - "functionality": 1, - "NSIS": 3, - "exehead.": 1, - "-": 205, - "ifdef": 2, - "HAVE_UPX": 1, - "packhdr": 1, - "tmp.dat": 1, - "endif": 4, - "NOCOMPRESS": 1, - "SetCompress": 1, - "off": 1, - "Name": 1, - "Caption": 1, - "Icon": 1, - "OutFile": 1, - "SetDateSave": 1, - "on": 6, - "SetDatablockOptimize": 1, - "CRCCheck": 1, - "SilentInstall": 1, - "normal": 1, - "BGGradient": 1, - "FFFFFF": 1, - "InstallColors": 1, - "FF8080": 1, - "XPStyle": 1, - "InstallDir": 1, - "InstallDirRegKey": 1, - "HKLM": 9, - "CheckBitmap": 1, - "LicenseText": 1, - "LicenseData": 1, - "RequestExecutionLevel": 1, - "admin": 1, - "Page": 4, - "license": 1, - "components": 1, - "directory": 3, - "instfiles": 2, - "UninstPage": 2, - "uninstConfirm": 1, - "ifndef": 2, - "NOINSTTYPES": 1, - "only": 1, - "if": 4, - "not": 2, - "defined": 1, - "InstType": 6, - "/NOCUSTOM": 1, - "/COMPONENTSONLYONCUSTOM": 1, - "AutoCloseWindow": 1, - "false": 1, - "ShowInstDetails": 1, - "show": 1, - "Section": 5, - "empty": 1, - "string": 1, - "makes": 1, - "it": 3, - "hidden": 1, - "so": 1, - "would": 1, - "starting": 1, - "with": 1, - "write": 2, - "reg": 1, - "info": 1, - "StrCpy": 2, - "DetailPrint": 1, - "WriteRegStr": 4, - "SOFTWARE": 7, - "NSISTest": 7, - "BigNSISTest": 8, - "uninstall": 2, - "strings": 1, - "SetOutPath": 3, - "INSTDIR": 15, - "File": 3, - "/a": 1, - "CreateDirectory": 1, - "recursively": 1, - "create": 1, - "a": 2, - "for": 2, - "fun.": 1, - "WriteUninstaller": 1, - "Nop": 1, - "fun": 1, - "SectionEnd": 5, - "SectionIn": 4, - "Start": 2, - "MessageBox": 11, - "MB_OK": 8, - "MB_YESNO": 3, - "IDYES": 2, - "MyLabel": 2, - "SectionGroup": 2, - "/e": 1, - "SectionGroup1": 1, - "WriteRegDword": 3, - "xdeadbeef": 1, - "WriteRegBin": 1, - "WriteINIStr": 5, - "Call": 6, - "MyFunctionTest": 1, - "DeleteINIStr": 1, - "DeleteINISec": 1, - "ReadINIStr": 1, - "StrCmp": 1, - "INIDelSuccess": 2, - "ClearErrors": 1, - "ReadRegStr": 1, - "HKCR": 1, - "xyz_cc_does_not_exist": 1, - "IfErrors": 1, - "NoError": 2, - "Goto": 1, - "ErrorYay": 2, - "CSCTest": 1, - "Group2": 1, - "BeginTestSection": 1, - "IfFileExists": 1, - "BranchTest69": 1, - "|": 3, - "MB_ICONQUESTION": 1, - "IDNO": 1, - "NoOverwrite": 1, - "skipped": 2, - "file": 4, - "doesn": 2, - "s": 1, - "icon": 1, - "start": 1, - "minimized": 1, - "and": 1, - "give": 1, - "hotkey": 1, - "(": 5, - "Ctrl": 1, - "+": 2, - "Shift": 1, - "Q": 2, - ")": 5, - "CreateShortCut": 2, - "SW_SHOWMINIMIZED": 1, - "CONTROL": 1, - "SHIFT": 1, - "MyTestVar": 1, - "myfunc": 1, - "test.ini": 2, - "MySectionIni": 1, - "Value1": 1, - "failed": 1, - "TextInSection": 1, - "will": 1, - "example2.": 1, - "Hit": 1, - "next": 1, - "continue.": 1, - "{": 8, - "NSISDIR": 1, - "}": 8, - "Contrib": 1, - "Graphics": 1, - "Icons": 1, - "nsis1": 1, - "uninstall.ico": 1, - "Uninstall": 2, - "Software": 1, - "Microsoft": 1, - "Windows": 3, - "CurrentVersion": 1, - "silent.nsi": 1, - "LogicLib.nsi": 1, - "bt": 1, - "uninst.exe": 1, - "SMPROGRAMS": 2, - "Big": 1, - "Test": 2, - "*.*": 2, - "BiG": 1, - "Would": 1, - "you": 1, - "like": 1, - "remove": 1, - "cpdest": 3, - "MyProjectFamily": 2, - "MyProject": 1, - "Note": 1, - "could": 1, - "be": 1, - "removed": 1, - "IDOK": 1, - "t": 1, - "exist": 1, - "NoErrorMsg": 1, - "x64.nsh": 1, - "A": 1, - "few": 1, - "simple": 1, - "macros": 1, - "handle": 1, - "installations": 1, - "x64": 1, - "machines.": 1, - "RunningX64": 4, - "checks": 1, - "installer": 1, - "is": 2, - "running": 1, - "x64.": 1, - "If": 1, - "EndIf": 1, - "DisableX64FSRedirection": 4, - "disables": 1, - "system": 2, - "redirection.": 2, - "EnableX64FSRedirection": 4, - "enables": 1, - "SYSDIR": 1, - "some.dll": 2, - "#": 3, - "extracts": 2, - "C": 2, - "System32": 1, - "SysWOW64": 1, - "___X64__NSH___": 3, - "define": 4, - "include": 1, - "LogicLib.nsh": 1, - "macro": 3, - "_RunningX64": 1, - "_a": 1, - "_b": 1, - "_t": 2, - "_f": 2, - "insertmacro": 2, - "_LOGICLIB_TEMP": 3, - "System": 4, - "kernel32": 4, - "GetCurrentProcess": 1, - "i.s": 1, - "IsWow64Process": 1, - "*i.s": 1, - "Pop": 1, - "_": 1, - "macroend": 3, - "Wow64EnableWow64FsRedirection": 2, - "i0": 1, - "i1": 1 - }, - "Nu": { - "SHEBANG#!nush": 1, - "(": 14, - "puts": 1, - ")": 14, - ";": 22, - "main.nu": 1, - "Entry": 1, - "point": 1, - "for": 1, - "a": 1, - "Nu": 1, - "program.": 1, - "Copyright": 1, - "c": 1, - "Tim": 1, - "Burks": 1, - "Neon": 1, - "Design": 1, - "Technology": 1, - "Inc.": 1, - "load": 4, - "basics": 1, - "cocoa": 1, - "definitions": 1, - "menu": 1, - "generation": 1, - "Aaron": 1, - "Hillegass": 1, - "t": 1, - "retain": 1, - "it.": 1, - "NSApplication": 2, - "sharedApplication": 2, - "setDelegate": 1, - "set": 1, - "delegate": 1, - "ApplicationDelegate": 1, - "alloc": 1, - "init": 1, - "this": 1, - "makes": 1, - "the": 3, - "application": 1, - "window": 1, - "take": 1, - "focus": 1, - "when": 1, - "we": 1, - "ve": 1, - "started": 1, - "it": 1, - "from": 1, - "terminal": 1, - "activateIgnoringOtherApps": 1, - "YES": 1, - "run": 1, - "main": 1, - "Cocoa": 1, - "event": 1, - "loop": 1, - "NSApplicationMain": 1, - "nil": 1 - }, - "Objective-C": { - "//": 317, - "#import": 53, - "": 4, - "#if": 41, - "TARGET_OS_IPHONE": 11, - "": 1, - "__IPHONE_OS_VERSION_MAX_ALLOWED": 4, - "__IPHONE_4_0": 6, - "": 1, - "Necessary": 1, - "for": 99, - "background": 1, - "task": 1, - "support": 4, - "#endif": 59, - "": 2, - "@class": 4, - "ASIDataDecompressor": 4, - ";": 2003, - "extern": 6, - "NSString": 127, - "*ASIHTTPRequestVersion": 2, - "#ifndef": 9, - "__IPHONE_3_2": 2, - "#define": 65, - "__MAC_10_5": 2, - "__MAC_10_6": 2, - "typedef": 47, - "enum": 17, - "_ASIAuthenticationState": 1, - "{": 541, - "ASINoAuthenticationNeededYet": 3, - "ASIHTTPAuthenticationNeeded": 1, - "ASIProxyAuthenticationNeeded": 1, - "}": 532, - "ASIAuthenticationState": 5, - "_ASINetworkErrorType": 1, - "ASIConnectionFailureErrorType": 2, - "ASIRequestTimedOutErrorType": 2, - "ASIAuthenticationErrorType": 3, - "ASIRequestCancelledErrorType": 2, - "ASIUnableToCreateRequestErrorType": 2, - "ASIInternalErrorWhileBuildingRequestType": 3, - "ASIInternalErrorWhileApplyingCredentialsType": 1, - "ASIFileManagementError": 2, - "ASITooMuchRedirectionErrorType": 3, - "ASIUnhandledExceptionError": 3, - "ASICompressionError": 1, - "ASINetworkErrorType": 1, - "NSString*": 13, - "const": 28, - "NetworkRequestErrorDomain": 12, - "unsigned": 62, - "long": 71, - "ASIWWANBandwidthThrottleAmount": 2, - "NS_BLOCKS_AVAILABLE": 8, - "void": 253, - "(": 2109, - "ASIBasicBlock": 15, - ")": 2106, - "ASIHeadersBlock": 3, - "NSDictionary": 37, - "*responseHeaders": 2, - "ASISizeBlock": 5, - "size": 12, - "ASIProgressBlock": 5, - "total": 4, - "ASIDataBlock": 3, - "NSData": 28, - "*data": 2, - "@interface": 23, - "ASIHTTPRequest": 31, - "NSOperation": 1, - "": 1, - "The": 15, - "url": 24, - "this": 50, - "operation": 2, - "should": 8, - "include": 1, - "GET": 1, - "params": 1, - "in": 42, - "the": 197, - "query": 1, - "string": 9, - "where": 1, - "appropriate": 4, - "NSURL": 21, - "*url": 2, - "Will": 7, - "always": 2, - "contain": 4, - "original": 2, - "used": 16, - "making": 1, - "request": 113, - "value": 21, - "of": 34, - "can": 20, - "change": 2, - "when": 46, - "a": 78, - "is": 77, - "redirected": 2, - "*originalURL": 2, - "Temporarily": 1, - "stores": 1, - "we": 73, - "are": 15, - "about": 4, - "to": 115, - "redirect": 4, - "to.": 2, - "be": 49, - "nil": 131, - "again": 1, - "do": 5, - "*redirectURL": 2, - "delegate": 29, - "-": 595, - "will": 57, - "notified": 2, - "various": 1, - "changes": 4, - "state": 35, - "via": 5, - "ASIHTTPRequestDelegate": 1, - "protocol": 10, - "id": 170, - "": 1, - "Another": 1, - "that": 23, - "also": 1, - "status": 4, - "and": 44, - "progress": 13, - "updates": 2, - "Generally": 1, - "you": 10, - "won": 3, - "s": 35, - "more": 5, - "likely": 1, - "sessionCookies": 2, - "NSMutableArray": 31, - "*requestCookies": 2, - "populated": 1, - "with": 19, - "cookies": 5, - "NSArray": 27, - "*responseCookies": 3, - "If": 30, - "use": 26, - "useCookiePersistence": 3, - "true": 9, - "network": 4, - "requests": 21, - "present": 3, - "valid": 5, - "from": 18, - "previous": 2, - "BOOL": 137, - "useKeychainPersistence": 4, - "attempt": 3, - "read": 3, - "credentials": 35, - "keychain": 7, - "save": 3, - "them": 10, - "they": 6, - "successfully": 4, - "presented": 2, - "useSessionPersistence": 6, - "reuse": 3, - "duration": 1, - "session": 5, - "until": 2, - "clearSession": 2, - "called": 3, - "allowCompressedResponse": 3, - "inform": 1, - "server": 8, - "accept": 2, - "compressed": 2, - "data": 27, - "automatically": 2, - "decompress": 1, - "gzipped": 7, - "responses.": 1, - "Default": 10, - "true.": 1, - "shouldCompressRequestBody": 6, - "body": 8, - "gzipped.": 1, - "false.": 1, - "You": 1, - "probably": 4, - "need": 10, - "enable": 1, - "feature": 1, - "on": 26, - "your": 2, - "webserver": 1, - "make": 3, - "work.": 1, - "Tested": 1, - "apache": 1, - "only.": 1, - "When": 15, - "downloadDestinationPath": 11, - "set": 24, - "result": 4, - "downloaded": 6, - "file": 14, - "at": 10, - "location": 3, - "not": 29, - "download": 9, - "stored": 9, - "memory": 3, - "*downloadDestinationPath": 2, - "files": 5, - "Once": 2, - "complete": 12, - "decompressed": 3, - "if": 297, - "necessary": 2, - "moved": 2, - "*temporaryFileDownloadPath": 2, - "response": 17, - "shouldWaitToInflateCompressedResponses": 4, - "NO": 30, - "created": 3, - "path": 11, - "containing": 1, - "inflated": 6, - "as": 17, - "it": 28, - "comes": 3, - "*temporaryUncompressedDataDownloadPath": 2, - "Used": 13, - "writing": 2, - "NSOutputStream": 6, - "*fileDownloadOutputStream": 2, - "*inflatedFileDownloadOutputStream": 2, - "fails": 2, - "or": 18, - "completes": 6, - "finished": 3, - "cancelled": 5, - "an": 20, - "error": 75, - "occurs": 1, - "NSError": 51, - "code": 16, - "Connection": 1, - "failure": 1, - "occurred": 1, - "inspect": 1, - "[": 1227, - "userInfo": 15, - "]": 1227, - "objectForKey": 29, - "NSUnderlyingErrorKey": 3, - "information": 5, - "*error": 3, - "Username": 2, - "password": 11, - "authentication": 18, - "*username": 2, - "*password": 2, - "User": 1, - "Agent": 1, - "*userAgentString": 2, - "Domain": 2, - "NTLM": 6, - "*domain": 2, - "proxy": 11, - "*proxyUsername": 2, - "*proxyPassword": 2, - "*proxyDomain": 2, - "Delegate": 2, - "displaying": 2, - "upload": 4, - "usually": 2, - "NSProgressIndicator": 4, - "but": 5, - "supply": 2, - "different": 4, - "object": 36, - "handle": 4, - "yourself": 4, - "": 2, - "uploadProgressDelegate": 8, - "downloadProgressDelegate": 10, - "Whether": 1, - "t": 15, - "want": 5, - "hassle": 1, - "adding": 1, - "authenticating": 2, - "proxies": 3, - "their": 3, - "apps": 1, - "shouldPresentProxyAuthenticationDialog": 2, - "CFHTTPAuthenticationRef": 2, - "proxyAuthentication": 7, - "*proxyCredentials": 2, - "during": 4, - "int": 55, - "proxyAuthenticationRetryCount": 4, - "Authentication": 3, - "scheme": 5, - "Basic": 2, - "Digest": 2, - "*proxyAuthenticationScheme": 2, - "Realm": 1, - "required": 2, - "*proxyAuthenticationRealm": 3, - "HTTP": 9, - "eg": 2, - "OK": 1, - "Not": 2, - "found": 4, - "etc": 1, - "responseStatusCode": 3, - "Description": 1, - "*responseStatusMessage": 3, - "Size": 3, - "contentLength": 6, - "partially": 1, - "content": 5, - "partialDownloadSize": 8, - "POST": 2, - "payload": 1, - "postLength": 6, - "amount": 12, - "totalBytesRead": 4, - "uploaded": 2, - "totalBytesSent": 5, - "Last": 2, - "incrementing": 2, - "lastBytesRead": 3, - "sent": 6, - "lastBytesSent": 3, - "This": 7, - "lock": 19, - "prevents": 1, - "being": 4, - "inopportune": 1, - "moment": 1, - "NSRecursiveLock": 13, - "*cancelledLock": 2, - "Called": 6, - "implemented": 7, - "starts.": 1, - "requestStarted": 3, - "SEL": 19, - "didStartSelector": 2, - "receives": 3, - "headers.": 1, - "didReceiveResponseHeaders": 2, - "didReceiveResponseHeadersSelector": 2, - "Location": 1, - "header": 20, - "shouldRedirect": 3, - "YES": 62, - "then": 1, - "needed": 3, - "restart": 1, - "by": 12, - "calling": 1, - "redirectToURL": 2, - "simply": 1, - "cancel": 5, - "willRedirectSelector": 2, - "successfully.": 1, - "requestFinished": 4, - "didFinishSelector": 2, - "fails.": 1, - "requestFailed": 2, - "didFailSelector": 2, - "data.": 1, - "didReceiveData": 2, - "implement": 1, - "method": 5, - "must": 6, - "populate": 1, - "responseData": 5, - "write": 4, - "didReceiveDataSelector": 2, - "recording": 1, - "something": 1, - "last": 1, - "happened": 1, - "compare": 4, - "current": 2, - "date": 3, - "time": 9, - "out": 7, - "NSDate": 9, - "*lastActivityTime": 2, - "Number": 1, - "seconds": 2, - "wait": 1, - "before": 6, - "timing": 1, - "default": 8, - "NSTimeInterval": 10, - "timeOutSeconds": 3, - "HEAD": 10, - "length": 32, - "starts": 2, - "shouldResetUploadProgress": 3, - "shouldResetDownloadProgress": 3, - "showAccurateProgress": 7, - "preset": 2, - "*mainRequest": 2, - "only": 12, - "update": 6, - "indicator": 4, - "according": 2, - "how": 2, - "much": 2, - "has": 6, - "received": 5, - "so": 15, - "far": 2, - "Also": 1, - "see": 1, - "comments": 1, - "ASINetworkQueue.h": 1, - "ensure": 1, - "incremented": 4, - "once": 3, - "updatedProgress": 3, - "Prevents": 1, - "post": 2, - "built": 2, - "than": 9, - "largely": 1, - "subclasses": 2, - "haveBuiltPostBody": 3, - "internally": 3, - "may": 8, - "reflect": 1, - "internal": 2, - "buffer": 7, - "CFNetwork": 3, - "/": 18, - "PUT": 1, - "operations": 1, - "sizes": 1, - "greater": 1, - "uploadBufferSize": 6, - "timeout": 6, - "unless": 2, - "bytes": 8, - "have": 15, - "been": 1, - "Likely": 1, - "KB": 4, - "iPhone": 3, - "Mac": 2, - "OS": 1, - "X": 1, - "Leopard": 1, - "x": 10, - "Text": 1, - "encoding": 7, - "responses": 5, - "send": 2, - "Content": 1, - "Type": 1, - "charset": 5, - "value.": 1, - "Defaults": 2, - "NSISOLatin1StringEncoding": 2, - "NSStringEncoding": 6, - "defaultResponseEncoding": 4, - "text": 12, - "didn": 3, - "set.": 1, - "responseEncoding": 3, - "Tells": 1, - "delete": 1, - "partial": 2, - "downloads": 1, - "allows": 1, - "existing": 1, - "resume": 2, - "download.": 1, - "NO.": 1, - "allowResumeForFileDownloads": 2, - "Custom": 1, - "user": 6, - "associated": 1, - "*userInfo": 2, - "NSInteger": 56, - "tag": 2, - "Use": 6, - "rather": 4, - "defaults": 2, - "false": 3, - "useHTTPVersionOne": 3, - "get": 4, - "tell": 2, - "main": 8, - "loop": 1, - "stop": 4, - "retry": 3, - "new": 10, - "needsRedirect": 3, - "Incremented": 1, - "every": 3, - "redirects.": 1, - "reaches": 1, - "give": 2, - "up": 4, - "redirectCount": 2, - "check": 1, - "secure": 1, - "certificate": 2, - "self": 500, - "signed": 1, - "certificates": 2, - "development": 1, - "DO": 1, - "NOT": 1, - "USE": 1, - "IN": 1, - "PRODUCTION": 1, - "validatesSecureCertificate": 3, - "SecIdentityRef": 3, - "clientCertificateIdentity": 5, - "*clientCertificates": 2, - "Details": 1, - "could": 1, - "these": 3, - "best": 1, - "local": 1, - "*PACurl": 2, - "See": 5, - "values": 3, - "above.": 1, - "No": 1, - "yet": 1, - "authenticationNeeded": 3, - "ASIHTTPRequests": 1, - "store": 4, - "same": 6, - "asked": 3, - "avoids": 1, - "extra": 1, - "round": 1, - "trip": 1, - "after": 5, - "succeeded": 1, - "which": 1, - "efficient": 1, - "authenticated": 1, - "large": 1, - "bodies": 1, - "slower": 1, - "connections": 3, - "Set": 4, - "explicitly": 2, - "affects": 1, - "cache": 17, - "YES.": 1, - "Credentials": 1, - "never": 1, - "asks": 1, - "For": 2, - "using": 8, - "authenticationScheme": 4, - "*": 311, - "kCFHTTPAuthenticationSchemeBasic": 2, - "very": 2, - "first": 9, - "shouldPresentCredentialsBeforeChallenge": 4, - "hasn": 1, - "doing": 1, - "anything": 1, - "expires": 1, - "persistentConnectionTimeoutSeconds": 4, - "yes": 1, - "keep": 2, - "alive": 1, - "connectionCanBeReused": 4, - "Stores": 1, - "persistent": 5, - "connection": 17, - "currently": 4, - "use.": 1, - "It": 2, - "particular": 2, - "specify": 2, - "expire": 2, - "A": 4, - "host": 9, - "port": 17, - "connection.": 2, - "These": 1, - "determine": 1, - "whether": 1, - "reused": 2, - "subsequent": 2, - "all": 3, - "match": 1, - "An": 2, - "determining": 1, - "available": 1, - "number": 2, - "reference": 1, - "don": 2, - "ve": 7, - "opened": 3, - "one.": 1, - "stream": 13, - "closed": 1, - "+": 195, - "released": 2, - "either": 1, - "another": 1, - "timer": 5, - "fires": 1, - "NSMutableDictionary": 18, - "*connectionInfo": 2, - "automatic": 1, - "redirects": 2, - "standard": 1, - "follow": 1, - "behaviour": 2, - "most": 1, - "browsers": 1, - "shouldUseRFC2616RedirectBehaviour": 2, - "record": 1, - "downloading": 5, - "downloadComplete": 2, - "ID": 1, - "uniquely": 1, - "identifies": 1, - "primarily": 1, - "debugging": 1, - "NSNumber": 11, - "*requestID": 3, - "ASIHTTPRequestRunLoopMode": 2, - "synchronous": 1, - "NSDefaultRunLoopMode": 2, - "other": 3, - "*runLoopMode": 2, - "checks": 1, - "NSTimer": 5, - "*statusTimer": 2, - "setDefaultCache": 2, - "configure": 2, - "": 9, - "downloadCache": 5, - "policy": 7, - "ASICacheDelegate.h": 2, - "possible": 3, - "ASICachePolicy": 4, - "cachePolicy": 3, - "storage": 2, - "ASICacheStoragePolicy": 2, - "cacheStoragePolicy": 2, - "was": 4, - "pulled": 1, - "didUseCachedResponse": 3, - "secondsToCache": 3, - "custom": 2, - "interval": 1, - "expiring": 1, - "&&": 123, - "shouldContinueWhenAppEntersBackground": 3, - "UIBackgroundTaskIdentifier": 1, - "backgroundTask": 7, - "helper": 1, - "inflate": 2, - "*dataDecompressor": 2, - "Controls": 1, - "without": 1, - "responseString": 3, - "All": 2, - "no": 7, - "raw": 3, - "discarded": 1, - "rawResponseData": 4, - "temporaryFileDownloadPath": 2, - "normal": 1, - "temporaryUncompressedDataDownloadPath": 3, - "contents": 1, - "into": 1, - "Setting": 1, - "especially": 1, - "useful": 1, - "users": 1, - "conjunction": 1, - "streaming": 1, - "parser": 3, - "allow": 1, - "passed": 2, - "while": 11, - "still": 2, - "running": 4, - "behind": 1, - "scenes": 1, - "PAC": 7, - "own": 3, - "isPACFileRequest": 3, - "http": 4, - "https": 1, - "webservers": 1, - "*PACFileRequest": 2, - "asynchronously": 1, - "reading": 1, - "URLs": 2, - "NSInputStream": 7, - "*PACFileReadStream": 2, - "storing": 1, - "NSMutableData": 5, - "*PACFileData": 2, - "startSynchronous.": 1, - "Currently": 1, - "detection": 2, - "synchronously": 1, - "isSynchronous": 2, - "//block": 12, - "execute": 4, - "startedBlock": 5, - "headers": 11, - "headersReceivedBlock": 5, - "completionBlock": 5, - "failureBlock": 5, - "bytesReceivedBlock": 8, - "bytesSentBlock": 5, - "downloadSizeIncrementedBlock": 5, - "uploadSizeIncrementedBlock": 5, - "handling": 4, - "dataReceivedBlock": 5, - "authenticationNeededBlock": 5, - "proxyAuthenticationNeededBlock": 5, - "redirections": 1, - "requestRedirectedBlock": 5, - "#pragma": 44, - "mark": 42, - "init": 34, - "dealloc": 13, - "initWithURL": 4, - "newURL": 16, - "requestWithURL": 7, - "usingCache": 5, - "andCachePolicy": 3, - "setStartedBlock": 1, - "aStartedBlock": 1, - "setHeadersReceivedBlock": 1, - "aReceivedBlock": 2, - "setCompletionBlock": 1, - "aCompletionBlock": 1, - "setFailedBlock": 1, - "aFailedBlock": 1, - "setBytesReceivedBlock": 1, - "aBytesReceivedBlock": 1, - "setBytesSentBlock": 1, - "aBytesSentBlock": 1, - "setDownloadSizeIncrementedBlock": 1, - "aDownloadSizeIncrementedBlock": 1, - "setUploadSizeIncrementedBlock": 1, - "anUploadSizeIncrementedBlock": 1, - "setDataReceivedBlock": 1, - "setAuthenticationNeededBlock": 1, - "anAuthenticationBlock": 1, - "setProxyAuthenticationNeededBlock": 1, - "aProxyAuthenticationBlock": 1, - "setRequestRedirectedBlock": 1, - "aRedirectBlock": 1, - "setup": 2, - "addRequestHeader": 5, - "applyCookieHeader": 2, - "buildRequestHeaders": 3, - "applyAuthorizationHeader": 2, - "buildPostBody": 3, - "appendPostData": 3, - "appendPostDataFromFile": 3, - "isResponseCompressed": 3, - "startSynchronous": 2, - "startAsynchronous": 2, - "clearDelegatesAndCancel": 2, - "HEADRequest": 1, - "upload/download": 1, - "updateProgressIndicators": 1, - "updateUploadProgress": 3, - "updateDownloadProgress": 3, - "removeUploadProgressSoFar": 1, - "incrementDownloadSizeBy": 1, - "incrementUploadSizeBy": 3, - "updateProgressIndicator": 4, - "withProgress": 4, - "ofTotal": 4, - "performSelector": 7, - "selector": 12, - "onTarget": 7, - "target": 5, - "withObject": 10, - "callerToRetain": 7, - "caller": 1, - "talking": 1, - "delegates": 2, - "requestReceivedResponseHeaders": 1, - "newHeaders": 1, - "failWithError": 11, - "theError": 6, - "retryUsingNewConnection": 1, - "parsing": 2, - "readResponseHeaders": 2, - "parseStringEncodingFromHeaders": 2, - "parseMimeType": 2, - "**": 27, - "mimeType": 2, - "andResponseEncoding": 2, - "stringEncoding": 1, - "fromContentType": 2, - "contentType": 1, - "stuff": 1, - "applyCredentials": 1, - "newCredentials": 16, - "applyProxyCredentials": 2, - "findCredentials": 1, - "findProxyCredentials": 2, - "retryUsingSuppliedCredentials": 1, - "cancelAuthentication": 1, - "attemptToApplyCredentialsAndResume": 1, - "attemptToApplyProxyCredentialsAndResume": 1, - "showProxyAuthenticationDialog": 1, - "showAuthenticationDialog": 1, - "addBasicAuthenticationHeaderWithUsername": 2, - "theUsername": 1, - "andPassword": 2, - "thePassword": 1, - "handlers": 1, - "handleNetworkEvent": 2, - "CFStreamEventType": 2, - "type": 5, - "handleBytesAvailable": 1, - "handleStreamComplete": 1, - "handleStreamError": 1, - "cleanup": 1, - "markAsFinished": 4, - "removeTemporaryDownloadFile": 1, - "removeTemporaryUncompressedDownloadFile": 1, - "removeTemporaryUploadFile": 1, - "removeTemporaryCompressedUploadFile": 1, - "removeFileAtPath": 1, - "err": 8, - "connectionID": 1, - "expirePersistentConnections": 1, - "defaultTimeOutSeconds": 3, - "setDefaultTimeOutSeconds": 1, - "newTimeOutSeconds": 1, - "client": 1, - "setClientCertificateIdentity": 1, - "anIdentity": 1, - "sessionProxyCredentialsStore": 1, - "sessionCredentialsStore": 1, - "storeProxyAuthenticationCredentialsInSessionStore": 1, - "storeAuthenticationCredentialsInSessionStore": 2, - "removeProxyAuthenticationCredentialsFromSessionStore": 1, - "removeAuthenticationCredentialsFromSessionStore": 3, - "findSessionProxyAuthenticationCredentials": 1, - "findSessionAuthenticationCredentials": 2, - "saveCredentialsToKeychain": 3, - "saveCredentials": 4, - "NSURLCredential": 8, - "forHost": 2, - "realm": 14, - "forProxy": 2, - "savedCredentialsForHost": 1, - "savedCredentialsForProxy": 1, - "removeCredentialsForHost": 1, - "removeCredentialsForProxy": 1, - "setSessionCookies": 1, - "newSessionCookies": 1, - "addSessionCookie": 1, - "NSHTTPCookie": 1, - "newCookie": 1, - "agent": 2, - "defaultUserAgentString": 1, - "setDefaultUserAgentString": 1, - "mime": 1, - "mimeTypeForFileAtPath": 1, - "bandwidth": 3, - "measurement": 1, - "throttling": 1, - "maxBandwidthPerSecond": 2, - "setMaxBandwidthPerSecond": 1, - "averageBandwidthUsedPerSecond": 2, - "performThrottling": 2, - "isBandwidthThrottled": 2, - "incrementBandwidthUsedInLastSecond": 1, - "setShouldThrottleBandwidthForWWAN": 1, - "throttle": 1, - "throttleBandwidthForWWANUsingLimit": 1, - "limit": 1, - "reachability": 1, - "isNetworkReachableViaWWAN": 1, - "queue": 12, - "NSOperationQueue": 4, - "sharedQueue": 4, - "defaultCache": 3, - "maxUploadReadLength": 1, - "activity": 1, - "isNetworkInUse": 1, - "setShouldUpdateNetworkActivityIndicator": 1, - "shouldUpdate": 1, - "showNetworkActivityIndicator": 1, - "hideNetworkActivityIndicator": 1, - "miscellany": 1, - "base64forData": 1, - "theData": 1, - "expiryDateForRequest": 1, - "maxAge": 2, - "dateFromRFC1123String": 1, - "isMultitaskingSupported": 2, - "threading": 1, - "NSThread": 4, - "threadForRequest": 3, - "@property": 150, - "retain": 73, - "*proxyHost": 1, - "assign": 84, - "proxyPort": 2, - "*proxyType": 1, - "setter": 2, - "setURL": 3, - "nonatomic": 40, - "readonly": 19, - "*authenticationRealm": 2, - "*requestHeaders": 1, - "*requestCredentials": 1, - "*rawResponseData": 1, - "*requestMethod": 1, - "*postBody": 1, - "*postBodyFilePath": 1, - "shouldStreamPostDataFromDisk": 4, - "didCreateTemporaryPostDataFile": 1, - "*authenticationScheme": 1, - "shouldPresentAuthenticationDialog": 1, - "authenticationRetryCount": 2, - "haveBuiltRequestHeaders": 1, - "inProgress": 4, - "numberOfTimesToRetryOnTimeout": 2, - "retryCount": 3, - "shouldAttemptPersistentConnection": 2, - "@end": 37, - "": 1, - "#else": 8, - "": 1, - "@": 258, - "static": 102, - "*defaultUserAgent": 1, - "*ASIHTTPRequestRunLoopMode": 1, - "CFOptionFlags": 1, - "kNetworkEvents": 1, - "kCFStreamEventHasBytesAvailable": 1, - "|": 13, - "kCFStreamEventEndEncountered": 1, - "kCFStreamEventErrorOccurred": 1, - "*sessionCredentialsStore": 1, - "*sessionProxyCredentialsStore": 1, - "*sessionCredentialsLock": 1, - "*sessionCookies": 1, - "RedirectionLimit": 1, - "ReadStreamClientCallBack": 1, - "CFReadStreamRef": 5, - "readStream": 5, - "*clientCallBackInfo": 1, - "ASIHTTPRequest*": 1, - "clientCallBackInfo": 1, - "*progressLock": 1, - "*ASIRequestCancelledError": 1, - "*ASIRequestTimedOutError": 1, - "*ASIAuthenticationError": 1, - "*ASIUnableToCreateRequestError": 1, - "*ASITooMuchRedirectionError": 1, - "*bandwidthUsageTracker": 1, - "nextConnectionNumberToCreate": 1, - "*persistentConnectionsPool": 1, - "*connectionsLock": 1, - "nextRequestID": 1, - "bandwidthUsedInLastSecond": 1, - "*bandwidthMeasurementDate": 1, - "NSLock": 2, - "*bandwidthThrottlingLock": 1, - "shouldThrottleBandwidthForWWANOnly": 1, - "*sessionCookiesLock": 1, - "*delegateAuthenticationLock": 1, - "*throttleWakeUpTime": 1, - "runningRequestCount": 1, - "shouldUpdateNetworkActivityIndicator": 1, - "*networkThread": 1, - "*sharedQueue": 1, - "cancelLoad": 3, - "destroyReadStream": 3, - "scheduleReadStream": 1, - "unscheduleReadStream": 1, - "willAskDelegateForCredentials": 1, - "willAskDelegateForProxyCredentials": 1, - "askDelegateForProxyCredentials": 1, - "askDelegateForCredentials": 1, - "failAuthentication": 1, - "measureBandwidthUsage": 1, - "recordBandwidthUsage": 1, - "startRequest": 3, - "updateStatus": 2, - "checkRequestStatus": 2, - "reportFailure": 3, - "reportFinished": 1, - "performRedirect": 1, - "shouldTimeOut": 2, - "willRedirect": 1, - "willAskDelegateToConfirmRedirect": 1, - "performInvocation": 2, - "NSInvocation": 4, - "invocation": 4, - "releasingObject": 2, - "objectToRelease": 1, - "hideNetworkActivityIndicatorAfterDelay": 1, - "hideNetworkActivityIndicatorIfNeeeded": 1, - "runRequests": 1, - "configureProxies": 2, - "fetchPACFile": 1, - "finishedDownloadingPACFile": 1, - "theRequest": 1, - "runPACScript": 1, - "script": 1, - "timeOutPACRead": 1, - "useDataFromCache": 2, - "updatePartialDownloadSize": 1, - "registerForNetworkReachabilityNotifications": 1, - "unsubscribeFromNetworkReachabilityNotifications": 1, - "reachabilityChanged": 1, - "NSNotification": 2, - "note": 1, - "performBlockOnMainThread": 2, - "block": 18, - "releaseBlocksOnMainThread": 4, - "releaseBlocks": 3, - "blocks": 16, - "callBlock": 1, - "*postBodyWriteStream": 1, - "*postBodyReadStream": 1, - "*compressedPostBody": 1, - "*compressedPostBodyFilePath": 1, - "willRetryRequest": 1, - "*readStream": 1, - "readStreamIsScheduled": 1, - "setSynchronous": 2, - "@implementation": 13, - "initialize": 1, - "class": 30, - "persistentConnectionsPool": 3, - "alloc": 47, - "connectionsLock": 3, - "progressLock": 1, - "bandwidthThrottlingLock": 1, - "sessionCookiesLock": 1, - "sessionCredentialsLock": 1, - "delegateAuthenticationLock": 1, - "bandwidthUsageTracker": 1, - "initWithCapacity": 2, - "ASIRequestTimedOutError": 1, - "initWithDomain": 5, - "dictionaryWithObjectsAndKeys": 10, - "NSLocalizedDescriptionKey": 10, - "ASIAuthenticationError": 1, - "ASIRequestCancelledError": 2, - "ASIUnableToCreateRequestError": 3, - "ASITooMuchRedirectionError": 1, - "setMaxConcurrentOperationCount": 1, - "setRequestMethod": 3, - "setRunLoopMode": 2, - "setShouldAttemptPersistentConnection": 2, - "setPersistentConnectionTimeoutSeconds": 2, - "setShouldPresentCredentialsBeforeChallenge": 1, - "setShouldRedirect": 1, - "setShowAccurateProgress": 1, - "setShouldResetDownloadProgress": 1, - "setShouldResetUploadProgress": 1, - "setAllowCompressedResponse": 1, - "setShouldWaitToInflateCompressedResponses": 1, - "setDefaultResponseEncoding": 1, - "setShouldPresentProxyAuthenticationDialog": 1, - "setTimeOutSeconds": 1, - "setUseSessionPersistence": 1, - "setUseCookiePersistence": 1, - "setValidatesSecureCertificate": 1, - "setRequestCookies": 2, - "autorelease": 21, - "setDidStartSelector": 1, - "@selector": 28, - "setDidReceiveResponseHeadersSelector": 1, - "setWillRedirectSelector": 1, - "willRedirectToURL": 1, - "setDidFinishSelector": 1, - "setDidFailSelector": 1, - "setDidReceiveDataSelector": 1, - "setCancelledLock": 1, - "setDownloadCache": 3, - "return": 165, - "ASIUseDefaultCachePolicy": 1, - "*request": 1, - "setCachePolicy": 1, - "setAuthenticationNeeded": 2, - "requestAuthentication": 7, - "CFRelease": 19, - "redirectURL": 1, - "release": 66, - "statusTimer": 3, - "invalidate": 2, - "postBody": 11, - "compressedPostBody": 4, - "requestHeaders": 6, - "requestCookies": 1, - "fileDownloadOutputStream": 1, - "inflatedFileDownloadOutputStream": 1, - "username": 8, - "domain": 2, - "authenticationRealm": 4, - "requestCredentials": 1, - "proxyHost": 2, - "proxyType": 1, - "proxyUsername": 3, - "proxyPassword": 3, - "proxyDomain": 1, - "proxyAuthenticationRealm": 2, - "proxyAuthenticationScheme": 2, - "proxyCredentials": 1, - "originalURL": 1, - "lastActivityTime": 1, - "responseCookies": 1, - "responseHeaders": 5, - "requestMethod": 13, - "cancelledLock": 37, - "postBodyFilePath": 7, - "compressedPostBodyFilePath": 4, - "postBodyWriteStream": 7, - "postBodyReadStream": 2, - "PACurl": 1, - "clientCertificates": 2, - "responseStatusMessage": 1, - "connectionInfo": 13, - "requestID": 2, - "dataDecompressor": 1, - "userAgentString": 1, - "super": 25, - "*blocks": 1, - "array": 84, - "addObject": 16, - "performSelectorOnMainThread": 2, - "waitUntilDone": 4, - "isMainThread": 2, - "Blocks": 1, - "exits": 1, - "setRequestHeaders": 2, - "dictionaryWithCapacity": 2, - "setObject": 9, - "forKey": 9, - "Are": 1, - "submitting": 1, - "disk": 1, - "were": 5, - "close": 5, - "setPostBodyWriteStream": 2, - "*path": 1, - "setCompressedPostBodyFilePath": 1, - "NSTemporaryDirectory": 2, - "stringByAppendingPathComponent": 2, - "NSProcessInfo": 2, - "processInfo": 2, - "globallyUniqueString": 2, - "*err": 3, - "ASIDataCompressor": 2, - "compressDataFromFile": 1, - "toFile": 1, - "&": 36, - "else": 35, - "setPostLength": 3, - "NSFileManager": 1, - "attributesOfItemAtPath": 1, - "fileSize": 1, - "errorWithDomain": 6, - "stringWithFormat": 6, - "Otherwise": 2, - "*compressedBody": 1, - "compressData": 1, - "setCompressedPostBody": 1, - "compressedBody": 1, - "isEqualToString": 13, - "||": 42, - "setHaveBuiltPostBody": 1, - "setupPostBody": 3, - "setPostBodyFilePath": 1, - "setDidCreateTemporaryPostDataFile": 1, - "initToFileAtPath": 1, - "append": 1, - "open": 2, - "setPostBody": 1, - "maxLength": 3, - "appendData": 2, - "*stream": 1, - "initWithFileAtPath": 1, - "NSUInteger": 93, - "bytesRead": 5, - "hasBytesAvailable": 1, - "char": 19, - "*256": 1, - "sizeof": 13, - "break": 13, - "dataWithBytes": 1, - "*m": 1, - "unlock": 20, - "m": 1, - "newRequestMethod": 3, - "*u": 1, - "u": 4, - "isEqual": 4, - "NULL": 152, - "setRedirectURL": 2, - "d": 11, - "setDelegate": 4, - "newDelegate": 6, - "q": 2, - "setQueue": 2, - "newQueue": 3, - "cancelOnRequestThread": 2, - "DEBUG_REQUEST_STATUS": 4, - "ASI_DEBUG_LOG": 11, - "isCancelled": 6, - "setComplete": 3, - "CFRetain": 4, - "willChangeValueForKey": 1, - "didChangeValueForKey": 1, - "onThread": 2, - "Clear": 3, - "setDownloadProgressDelegate": 2, - "setUploadProgressDelegate": 2, - "initWithBytes": 1, - "*encoding": 1, - "rangeOfString": 1, - ".location": 1, - "NSNotFound": 1, - "uncompressData": 1, - "DEBUG_THROTTLING": 2, - "setInProgress": 3, - "NSRunLoop": 2, - "currentRunLoop": 2, - "runMode": 1, - "runLoopMode": 2, - "beforeDate": 1, - "distantFuture": 1, - "start": 3, - "addOperation": 1, - "concurrency": 1, - "isConcurrent": 1, - "isFinished": 1, - "isExecuting": 1, - "logic": 1, - "@try": 1, - "UIBackgroundTaskInvalid": 3, - "UIApplication": 2, - "sharedApplication": 2, - "beginBackgroundTaskWithExpirationHandler": 1, - "dispatch_async": 1, - "dispatch_get_main_queue": 1, - "endBackgroundTask": 1, - "generated": 3, - "ASINetworkQueue": 4, - "already.": 1, - "proceed.": 1, - "setDidUseCachedResponse": 1, - "Must": 1, - "call": 8, - "create": 1, - "needs": 1, - "mainRequest": 9, - "ll": 6, - "already": 4, - "CFHTTPMessageRef": 3, - "Create": 1, - "request.": 1, - "CFHTTPMessageCreateRequest": 1, - "kCFAllocatorDefault": 3, - "CFStringRef": 1, - "CFURLRef": 1, - "kCFHTTPVersion1_0": 1, - "kCFHTTPVersion1_1": 1, - "//If": 2, - "let": 8, - "generate": 1, - "its": 9, - "Even": 1, - "chance": 2, - "add": 5, - "ASIS3Request": 1, - "does": 3, - "process": 1, - "@catch": 1, - "NSException": 19, - "*exception": 1, - "*underlyingError": 1, - "exception": 3, - "name": 7, - "reason": 1, - "NSLocalizedFailureReasonErrorKey": 1, - "underlyingError": 1, - "@finally": 1, - "Do": 3, - "DEBUG_HTTP_AUTHENTICATION": 4, - "*credentials": 1, - "auth": 2, - "basic": 3, - "any": 3, - "cached": 2, - "key": 32, - "challenge": 1, - "apply": 2, - "like": 1, - "CFHTTPMessageApplyCredentialDictionary": 2, - "CFDictionaryRef": 1, - "setAuthenticationScheme": 1, - "happens": 4, - "%": 30, - "re": 9, - "retrying": 1, - "our": 6, - "measure": 1, - "throttled": 1, - "setPostBodyReadStream": 2, - "ASIInputStream": 2, - "inputStreamWithData": 2, - "setReadStream": 2, - "NSMakeCollectable": 3, - "CFReadStreamCreateForStreamedHTTPRequest": 1, - "CFReadStreamCreateForHTTPRequest": 1, - "lowercaseString": 1, - "*sslProperties": 2, - "initWithObjectsAndKeys": 1, - "numberWithBool": 3, - "kCFStreamSSLAllowsExpiredCertificates": 1, - "kCFStreamSSLAllowsAnyRoot": 1, - "kCFStreamSSLValidatesCertificateChain": 1, - "kCFNull": 1, - "kCFStreamSSLPeerName": 1, - "CFReadStreamSetProperty": 1, - "kCFStreamPropertySSLSettings": 1, - "CFTypeRef": 1, - "sslProperties": 2, - "*certificates": 1, - "arrayWithCapacity": 2, - "count": 99, - "*oldStream": 1, - "redirecting": 2, - "connecting": 2, - "intValue": 4, - "setConnectionInfo": 2, - "Check": 1, - "expired": 1, - "timeIntervalSinceNow": 1, - "<": 56, - "DEBUG_PERSISTENT_CONNECTIONS": 3, - "removeObject": 2, - "//Some": 1, - "previously": 1, - "there": 1, - "one": 1, - "We": 7, - "just": 4, - "old": 5, - "//lists.apple.com/archives/Macnetworkprog/2006/Mar/msg00119.html": 1, - "oldStream": 4, - "streamSuccessfullyOpened": 1, - "setConnectionCanBeReused": 2, - "Record": 1, - "started": 1, - "nothing": 2, - "setLastActivityTime": 1, - "setStatusTimer": 2, - "timerWithTimeInterval": 1, - "repeats": 1, - "addTimer": 1, - "forMode": 1, - "here": 2, - "safely": 1, - "***Black": 1, - "magic": 1, - "warning***": 1, - "reliable": 1, - "way": 1, - "track": 1, - "strong": 4, - "slow.": 1, - "secondsSinceLastActivity": 1, - "*1.5": 1, - "updating": 1, - "checking": 1, - "told": 1, - "us": 2, - "auto": 2, - "resuming": 1, - "Range": 1, - "take": 1, - "account": 1, - "perhaps": 1, - "setTotalBytesSent": 1, - "CFReadStreamCopyProperty": 2, - "kCFStreamPropertyHTTPRequestBytesWrittenCount": 1, - "unsignedLongLongValue": 1, - "middle": 1, - "said": 1, - "might": 4, - "MaxValue": 2, - "UIProgressView": 2, - "double": 3, - "max": 7, - "setMaxValue": 2, - "examined": 1, - "since": 1, - "authenticate": 1, - "bytesReadSoFar": 3, - "setUpdatedProgress": 1, - "didReceiveBytes": 2, - "totalSize": 2, - "setLastBytesRead": 1, - "pass": 5, - "pointer": 2, - "directly": 1, - "itself": 1, - "setArgument": 4, - "atIndex": 6, - "argumentNumber": 1, - "callback": 3, - "NSMethodSignature": 1, - "*cbSignature": 1, - "methodSignatureForSelector": 1, - "*cbInvocation": 1, - "invocationWithMethodSignature": 1, - "cbSignature": 1, - "cbInvocation": 5, - "setSelector": 1, - "setTarget": 1, - "forget": 2, - "know": 3, - "removeObjectForKey": 1, - "dateWithTimeIntervalSinceNow": 1, - "ignore": 1, - "ASIFallbackToCacheIfLoadFailsCachePolicy": 2, - "canUseCachedDataForRequest": 1, - "setError": 2, - "*failedRequest": 1, - "compatible": 1, - "fail": 1, - "failedRequest": 4, - "message": 2, - "kCFStreamPropertyHTTPResponseHeader": 1, - "Make": 1, - "sure": 1, - "tells": 1, - "keepAliveHeader": 2, - "NSScanner": 2, - "*scanner": 1, - "scannerWithString": 1, - "scanner": 5, - "scanString": 2, - "intoString": 3, - "scanInt": 2, - "scanUpToString": 1, - "what": 3, - "hard": 1, - "throw": 1, - "away.": 1, - "*userAgentHeader": 1, - "*acceptHeader": 1, - "userAgentHeader": 2, - "acceptHeader": 2, - "setHaveBuiltRequestHeaders": 1, - "Force": 2, - "rebuild": 2, - "cookie": 1, - "incase": 1, - "got": 1, - "some": 1, - "remain": 1, - "ones": 3, - "URLWithString": 1, - "valueForKey": 2, - "relativeToURL": 1, - "absoluteURL": 1, - "setNeedsRedirect": 1, - "means": 1, - "manually": 1, - "added": 5, - "those": 1, - "global": 1, - "But": 1, - "safest": 1, - "option": 1, - "responseCode": 1, - "Handle": 1, - "*mimeType": 1, - "setResponseEncoding": 2, - "saveProxyCredentialsToKeychain": 1, - "*authenticationCredentials": 2, - "credentialWithUser": 2, - "kCFHTTPAuthenticationUsername": 2, - "kCFHTTPAuthenticationPassword": 2, - "persistence": 2, - "NSURLCredentialPersistencePermanent": 2, - "authenticationCredentials": 4, - "setProxyAuthenticationRetryCount": 1, - "Apply": 1, - "whatever": 1, - "ok": 1, - "CFMutableDictionaryRef": 1, - "*sessionCredentials": 1, - "dictionary": 64, - "sessionCredentials": 6, - "setRequestCredentials": 1, - "*newCredentials": 1, - "*user": 1, - "*pass": 1, - "*theRequest": 1, - "try": 3, - "connect": 1, - "website": 1, - "kCFHTTPAuthenticationSchemeNTLM": 1, - "Ok": 1, - "extract": 1, - "NSArray*": 1, - "ntlmComponents": 1, - "componentsSeparatedByString": 1, - "AUTH": 6, - "Request": 6, - "parent": 1, - "properties": 1, - "ASIAuthenticationDialog": 2, - "had": 1, - "Foo": 2, - "NSObject": 5, - "": 2, - "FooAppDelegate": 2, - "": 1, - "@private": 2, - "NSWindow": 2, - "*window": 2, - "IBOutlet": 1, - "@synthesize": 7, - "window": 1, - "applicationDidFinishLaunching": 1, - "aNotification": 1, - "argc": 1, - "*argv": 1, - "NSLog": 4, - "#include": 18, - "": 1, - "": 2, - "": 2, - "": 1, - "": 1, - "#ifdef": 10, - "__OBJC__": 4, - "": 2, - "": 2, - "": 2, - "": 1, - "": 2, - "": 1, - "__cplusplus": 2, - "NSINTEGER_DEFINED": 3, - "defined": 16, - "__LP64__": 4, - "NS_BUILD_32_LIKE_64": 3, - "NSIntegerMin": 3, - "LONG_MIN": 3, - "NSIntegerMax": 4, - "LONG_MAX": 3, - "NSUIntegerMax": 7, - "ULONG_MAX": 3, - "INT_MIN": 3, - "INT_MAX": 2, - "UINT_MAX": 3, - "_JSONKIT_H_": 3, - "__GNUC__": 14, - "__APPLE_CC__": 2, - "JK_DEPRECATED_ATTRIBUTE": 6, - "__attribute__": 3, - "deprecated": 1, - "JSONKIT_VERSION_MAJOR": 1, - "JSONKIT_VERSION_MINOR": 1, - "JKFlags": 5, - "JKParseOptionNone": 1, - "JKParseOptionStrict": 1, - "JKParseOptionComments": 2, - "<<": 16, - "JKParseOptionUnicodeNewlines": 2, - "JKParseOptionLooseUnicode": 2, - "JKParseOptionPermitTextAfterValidJSON": 2, - "JKParseOptionValidFlags": 1, - "JKParseOptionFlags": 12, - "JKSerializeOptionNone": 3, - "JKSerializeOptionPretty": 2, - "JKSerializeOptionEscapeUnicode": 2, - "JKSerializeOptionEscapeForwardSlashes": 2, - "JKSerializeOptionValidFlags": 1, - "JKSerializeOptionFlags": 16, - "struct": 20, - "JKParseState": 18, - "Opaque": 1, - "private": 1, - "type.": 3, - "JSONDecoder": 2, - "*parseState": 16, - "decoder": 1, - "decoderWithParseOptions": 1, - "parseOptionFlags": 11, - "initWithParseOptions": 1, - "clearCache": 1, - "parseUTF8String": 2, - "size_t": 23, - "Deprecated": 4, - "JSONKit": 11, - "v1.4.": 4, - "objectWithUTF8String": 4, - "instead.": 4, - "parseJSONData": 2, - "jsonData": 6, - "objectWithData": 7, - "mutableObjectWithUTF8String": 2, - "mutableObjectWithData": 2, - "////////////": 4, - "Deserializing": 1, - "methods": 2, - "JSONKitDeserializing": 2, - "objectFromJSONString": 1, - "objectFromJSONStringWithParseOptions": 2, - "mutableObjectFromJSONString": 1, - "mutableObjectFromJSONStringWithParseOptions": 2, - "objectFromJSONData": 1, - "objectFromJSONDataWithParseOptions": 2, - "mutableObjectFromJSONData": 1, - "mutableObjectFromJSONDataWithParseOptions": 2, - "Serializing": 1, - "JSONKitSerializing": 3, - "JSONData": 3, - "Invokes": 2, - "JSONDataWithOptions": 8, - "includeQuotes": 6, - "serializeOptions": 14, - "JSONString": 3, - "JSONStringWithOptions": 8, - "serializeUnsupportedClassesUsingDelegate": 4, - "__BLOCKS__": 1, - "JSONKitSerializingBlockAdditions": 2, - "serializeUnsupportedClassesUsingBlock": 4, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "//#include": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "//#import": 1, - "": 1, - "": 1, - "": 1, - "__has_feature": 3, - "JK_ENABLE_CF_TRANSFER_OWNERSHIP_CALLBACKS": 2, - "#warning": 1, - "As": 1, - "v1.4": 1, - "longer": 2, - "required.": 1, - "option.": 1, - "__OBJC_GC__": 1, - "#error": 6, - "Objective": 2, - "C": 6, - "Garbage": 1, - "Collection": 1, - "objc_arc": 1, - "Automatic": 1, - "Reference": 1, - "Counting": 1, - "ARC": 1, - "xffffffffU": 1, - "fffffff": 1, - "ULLONG_MAX": 1, - "xffffffffffffffffULL": 1, - "LLONG_MIN": 1, - "fffffffffffffffLL": 1, - "LL": 1, - "requires": 4, - "types": 2, - "bits": 1, - "respectively.": 1, - "WORD_BIT": 1, - "LONG_BIT": 1, - "bit": 1, - "architectures.": 1, - "SIZE_MAX": 1, - "SSIZE_MAX": 1, - "JK_HASH_INIT": 1, - "UL": 138, - "JK_FAST_TRAILING_BYTES": 2, - "JK_CACHE_SLOTS_BITS": 2, - "JK_CACHE_SLOTS": 1, - "JK_CACHE_PROBES": 1, - "JK_INIT_CACHE_AGE": 1, - "JK_TOKENBUFFER_SIZE": 1, - "JK_STACK_OBJS": 1, - "JK_JSONBUFFER_SIZE": 1, - "JK_UTF8BUFFER_SIZE": 1, - "JK_ENCODE_CACHE_SLOTS": 1, - "JK_ATTRIBUTES": 15, - "attr": 3, - "...": 11, - "##__VA_ARGS__": 7, - "JK_EXPECTED": 4, - "cond": 12, - "expect": 3, - "__builtin_expect": 1, - "JK_EXPECT_T": 22, - "U": 2, - "JK_EXPECT_F": 14, - "JK_PREFETCH": 2, - "ptr": 3, - "__builtin_prefetch": 1, - "JK_STATIC_INLINE": 10, - "__inline__": 1, - "always_inline": 1, - "JK_ALIGNED": 1, - "arg": 11, - "aligned": 1, - "JK_UNUSED_ARG": 2, - "unused": 3, - "JK_WARN_UNUSED": 1, - "warn_unused_result": 9, - "JK_WARN_UNUSED_CONST": 1, - "JK_WARN_UNUSED_PURE": 1, - "pure": 2, - "JK_WARN_UNUSED_SENTINEL": 1, - "sentinel": 1, - "JK_NONNULL_ARGS": 1, - "nonnull": 6, - "JK_WARN_UNUSED_NONNULL_ARGS": 1, - "JK_WARN_UNUSED_CONST_NONNULL_ARGS": 1, - "JK_WARN_UNUSED_PURE_NONNULL_ARGS": 1, - "__GNUC_MINOR__": 3, - "JK_ALLOC_SIZE_NON_NULL_ARGS_WARN_UNUSED": 2, - "nn": 4, - "alloc_size": 1, - "JKArray": 14, - "JKDictionaryEnumerator": 4, - "JKDictionary": 22, - "JSONNumberStateStart": 1, - "JSONNumberStateFinished": 1, - "JSONNumberStateError": 1, - "JSONNumberStateWholeNumberStart": 1, - "JSONNumberStateWholeNumberMinus": 1, - "JSONNumberStateWholeNumberZero": 1, - "JSONNumberStateWholeNumber": 1, - "JSONNumberStatePeriod": 1, - "JSONNumberStateFractionalNumberStart": 1, - "JSONNumberStateFractionalNumber": 1, - "JSONNumberStateExponentStart": 1, - "JSONNumberStateExponentPlusMinus": 1, - "JSONNumberStateExponent": 1, - "JSONStringStateStart": 1, - "JSONStringStateParsing": 1, - "JSONStringStateFinished": 1, - "JSONStringStateError": 1, - "JSONStringStateEscape": 1, - "JSONStringStateEscapedUnicode1": 1, - "JSONStringStateEscapedUnicode2": 1, - "JSONStringStateEscapedUnicode3": 1, - "JSONStringStateEscapedUnicode4": 1, - "JSONStringStateEscapedUnicodeSurrogate1": 1, - "JSONStringStateEscapedUnicodeSurrogate2": 1, - "JSONStringStateEscapedUnicodeSurrogate3": 1, - "JSONStringStateEscapedUnicodeSurrogate4": 1, - "JSONStringStateEscapedNeedEscapeForSurrogate": 1, - "JSONStringStateEscapedNeedEscapedUForSurrogate": 1, - "JKParseAcceptValue": 2, - "JKParseAcceptComma": 2, - "JKParseAcceptEnd": 3, - "JKParseAcceptValueOrEnd": 1, - "JKParseAcceptCommaOrEnd": 1, - "JKClassUnknown": 1, - "JKClassString": 1, - "JKClassNumber": 1, - "JKClassArray": 1, - "JKClassDictionary": 1, - "JKClassNull": 1, - "JKManagedBufferOnStack": 1, - "JKManagedBufferOnHeap": 1, - "JKManagedBufferLocationMask": 1, - "JKManagedBufferLocationShift": 1, - "JKManagedBufferMustFree": 1, - "JKManagedBufferFlags": 1, - "JKObjectStackOnStack": 1, - "JKObjectStackOnHeap": 1, - "JKObjectStackLocationMask": 1, - "JKObjectStackLocationShift": 1, - "JKObjectStackMustFree": 1, - "JKObjectStackFlags": 1, - "JKTokenTypeInvalid": 1, - "JKTokenTypeNumber": 1, - "JKTokenTypeString": 1, - "JKTokenTypeObjectBegin": 1, - "JKTokenTypeObjectEnd": 1, - "JKTokenTypeArrayBegin": 1, - "JKTokenTypeArrayEnd": 1, - "JKTokenTypeSeparator": 1, - "JKTokenTypeComma": 1, - "JKTokenTypeTrue": 1, - "JKTokenTypeFalse": 1, - "JKTokenTypeNull": 1, - "JKTokenTypeWhiteSpace": 1, - "JKTokenType": 2, - "JKValueTypeNone": 1, - "JKValueTypeString": 1, - "JKValueTypeLongLong": 1, - "JKValueTypeUnsignedLongLong": 1, - "JKValueTypeDouble": 1, - "JKValueType": 1, - "JKEncodeOptionAsData": 1, - "JKEncodeOptionAsString": 1, - "JKEncodeOptionAsTypeMask": 1, - "JKEncodeOptionCollectionObj": 1, - "JKEncodeOptionStringObj": 1, - "JKEncodeOptionStringObjTrimQuotes": 1, - "JKEncodeOptionType": 2, - "JKHash": 4, - "JKTokenCacheItem": 2, - "JKTokenCache": 2, - "JKTokenValue": 2, - "JKParseToken": 2, - "JKPtrRange": 2, - "JKObjectStack": 5, - "JKBuffer": 2, - "JKConstBuffer": 2, - "JKConstPtrRange": 2, - "JKRange": 2, - "JKManagedBuffer": 5, - "JKFastClassLookup": 2, - "JKEncodeCache": 6, - "JKEncodeState": 11, - "JKObjCImpCache": 2, - "JKHashTableEntry": 21, - "serializeObject": 1, - "options": 6, - "optionFlags": 1, - "encodeOption": 2, - "JKSERIALIZER_BLOCKS_PROTO": 1, - "releaseState": 1, - "keyHash": 21, - "uint32_t": 1, - "UTF32": 11, - "uint16_t": 1, - "UTF16": 1, - "uint8_t": 1, - "UTF8": 2, - "conversionOK": 1, - "sourceExhausted": 1, - "targetExhausted": 1, - "sourceIllegal": 1, - "ConversionResult": 1, - "UNI_REPLACEMENT_CHAR": 1, - "FFFD": 1, - "UNI_MAX_BMP": 1, - "FFFF": 3, - "UNI_MAX_UTF16": 1, - "UNI_MAX_UTF32": 1, - "FFFFFFF": 1, - "UNI_MAX_LEGAL_UTF32": 1, - "UNI_SUR_HIGH_START": 1, - "xD800": 1, - "UNI_SUR_HIGH_END": 1, - "xDBFF": 1, - "UNI_SUR_LOW_START": 1, - "xDC00": 1, - "UNI_SUR_LOW_END": 1, - "xDFFF": 1, - "trailingBytesForUTF8": 1, - "offsetsFromUTF8": 1, - "E2080UL": 1, - "C82080UL": 1, - "xFA082080UL": 1, - "firstByteMark": 1, - "xC0": 1, - "xE0": 1, - "xF0": 1, - "xF8": 1, - "xFC": 1, - "JK_AT_STRING_PTR": 1, - "stringBuffer.bytes.ptr": 2, - "JK_END_STRING_PTR": 1, - "stringBuffer.bytes.length": 1, - "*_JKArrayCreate": 2, - "*objects": 5, - "mutableCollection": 7, - "_JKArrayInsertObjectAtIndex": 3, - "*array": 9, - "newObject": 12, - "objectIndex": 48, - "_JKArrayReplaceObjectAtIndexWithObject": 3, - "_JKArrayRemoveObjectAtIndex": 3, - "_JKDictionaryCapacityForCount": 4, - "*_JKDictionaryCreate": 2, - "*keys": 2, - "*keyHashes": 2, - "*_JKDictionaryHashEntry": 2, - "*dictionary": 13, - "_JKDictionaryCapacity": 3, - "_JKDictionaryResizeIfNeccessary": 3, - "_JKDictionaryRemoveObjectWithEntry": 3, - "*entry": 4, - "_JKDictionaryAddObject": 4, - "*_JKDictionaryHashTableEntryForKey": 2, - "aKey": 13, - "_JSONDecoderCleanup": 1, - "*decoder": 1, - "_NSStringObjectFromJSONString": 1, - "*jsonString": 1, - "**error": 1, - "jk_managedBuffer_release": 1, - "*managedBuffer": 3, - "jk_managedBuffer_setToStackBuffer": 1, - "*ptr": 2, - "*jk_managedBuffer_resize": 1, - "newSize": 1, - "jk_objectStack_release": 1, - "*objectStack": 3, - "jk_objectStack_setToStackBuffer": 1, - "**objects": 1, - "**keys": 1, - "CFHashCode": 1, - "*cfHashes": 1, - "jk_objectStack_resize": 1, - "newCount": 1, - "jk_error": 1, - "*format": 7, - "jk_parse_string": 1, - "jk_parse_number": 1, - "jk_parse_is_newline": 1, - "*atCharacterPtr": 1, - "jk_parse_skip_newline": 1, - "jk_parse_skip_whitespace": 1, - "jk_parse_next_token": 1, - "jk_error_parse_accept_or3": 1, - "*or1String": 1, - "*or2String": 1, - "*or3String": 1, - "*jk_create_dictionary": 1, - "startingObjectIndex": 1, - "*jk_parse_dictionary": 1, - "*jk_parse_array": 1, - "*jk_object_for_token": 1, - "*jk_cachedObjects": 1, - "jk_cache_age": 1, - "jk_set_parsed_token": 1, - "advanceBy": 1, - "jk_encode_error": 1, - "*encodeState": 9, - "jk_encode_printf": 1, - "*cacheSlot": 4, - "startingAtIndex": 4, - "jk_encode_write": 1, - "jk_encode_writePrettyPrintWhiteSpace": 1, - "jk_encode_write1slow": 2, - "ssize_t": 2, - "depthChange": 2, - "jk_encode_write1fast": 2, - "jk_encode_writen": 1, - "jk_encode_object_hash": 1, - "*objectPtr": 2, - "jk_encode_updateCache": 1, - "jk_encode_add_atom_to_buffer": 1, - "jk_encode_write1": 1, - "es": 3, - "dc": 3, - "f": 8, - "_jk_encode_prettyPrint": 1, - "jk_min": 1, - "b": 4, - "jk_max": 3, - "jk_calculateHash": 1, - "currentHash": 1, - "c": 7, - "Class": 3, - "_JKArrayClass": 5, - "_JKArrayInstanceSize": 4, - "_JKDictionaryClass": 5, - "_JKDictionaryInstanceSize": 4, - "_jk_NSNumberClass": 2, - "NSNumberAllocImp": 2, - "_jk_NSNumberAllocImp": 2, - "NSNumberInitWithUnsignedLongLongImp": 2, - "_jk_NSNumberInitWithUnsignedLongLongImp": 2, - "jk_collectionClassLoadTimeInitialization": 2, - "constructor": 1, - "NSAutoreleasePool": 2, - "*pool": 1, - "Though": 1, - "technically": 1, - "run": 1, - "environment": 1, - "load": 1, - "initialization": 1, - "less": 1, - "ideal.": 1, - "objc_getClass": 2, - "class_getInstanceSize": 2, - "methodForSelector": 2, - "temp_NSNumber": 4, - "initWithUnsignedLongLong": 1, - "pool": 2, - "": 2, - "NSMutableCopying": 2, - "NSFastEnumeration": 2, - "capacity": 51, - "mutations": 20, - "allocWithZone": 4, - "NSZone": 4, - "zone": 8, - "raise": 18, - "NSInvalidArgumentException": 6, - "format": 18, - "NSStringFromClass": 18, - "NSStringFromSelector": 16, - "_cmd": 16, - "NSCParameterAssert": 19, - "objects": 58, - "calloc": 5, - "Directly": 2, - "allocate": 2, - "instance": 2, - "calloc.": 2, - "isa": 2, - "malloc": 1, - "memcpy": 2, - "<=>": 15, - "*newObjects": 1, - "newObjects": 2, - "realloc": 1, - "NSMallocException": 2, - "memset": 1, - "memmove": 2, - "atObject": 12, - "free": 4, - "NSParameterAssert": 15, - "getObjects": 2, - "objectsPtr": 3, - "range": 8, - "NSRange": 1, - "NSMaxRange": 4, - "NSRangeException": 6, - "range.location": 2, - "range.length": 1, - "objectAtIndex": 8, - "countByEnumeratingWithState": 2, - "NSFastEnumerationState": 2, - "stackbuf": 8, - "len": 6, - "mutationsPtr": 2, - "itemsPtr": 2, - "enumeratedCount": 8, - "insertObject": 1, - "anObject": 16, - "NSInternalInconsistencyException": 4, - "__clang_analyzer__": 3, - "Stupid": 2, - "clang": 3, - "analyzer...": 2, - "Issue": 2, - "#19.": 2, - "removeObjectAtIndex": 1, - "replaceObjectAtIndex": 1, - "copyWithZone": 1, - "initWithObjects": 2, - "mutableCopyWithZone": 1, - "NSEnumerator": 2, - "collection": 11, - "nextObject": 6, - "initWithJKDictionary": 3, - "initDictionary": 4, - "allObjects": 2, - "arrayWithObjects": 1, - "_JKDictionaryHashEntry": 2, - "returnObject": 3, - "entry": 41, - ".key": 11, - "jk_dictionaryCapacities": 4, - "bottom": 6, - "top": 8, - "mid": 5, - "tableSize": 2, - "lround": 1, - "floor": 1, - "capacityForCount": 4, - "resize": 3, - "oldCapacity": 2, - "NS_BLOCK_ASSERTIONS": 1, - "oldCount": 2, - "*oldEntry": 1, - "idx": 33, - "oldEntry": 9, - ".keyHash": 2, - ".object": 7, - "keys": 5, - "keyHashes": 2, - "atEntry": 45, - "removeIdx": 3, - "entryIdx": 4, - "*atEntry": 3, - "addKeyEntry": 2, - "addIdx": 5, - "*atAddEntry": 1, - "atAddEntry": 6, - "keyEntry": 4, - "CFEqual": 2, - "CFHash": 1, - "table": 7, - "would": 2, - "now.": 1, - "entryForKey": 3, - "_JKDictionaryHashTableEntryForKey": 1, - "andKeys": 1, - "arrayIdx": 5, - "keyEnumerator": 1, - "copy": 4, - "Why": 1, - "earth": 1, - "complain": 1, - "doesn": 1, - "Internal": 2, - "Unable": 2, - "temporary": 2, - "buffer.": 2, - "line": 2, - "#": 2, - "ld": 2, - "Invalid": 1, - "character": 1, - "x.": 1, - "n": 7, - "r": 6, - "F": 1, - ".": 2, - "e": 1, - "Unexpected": 1, - "token": 1, - "wanted": 1, - "Expected": 3, - "MainMenuViewController": 2, - "TTTableViewController": 1, - "///////////////////////////////////////////////////////////////////////////////////////////////////": 24, - "initWithNibName": 3, - "nibNameOrNil": 1, - "bundle": 3, - "NSBundle": 1, - "nibBundleOrNil": 1, - "self.title": 2, - "//self.variableHeightRows": 1, - "self.tableViewStyle": 1, - "UITableViewStyleGrouped": 1, - "self.dataSource": 1, - "TTSectionedDataSource": 1, - "dataSourceWithObjects": 1, - "TTTableTextItem": 48, - "itemWithText": 48, - "URL": 48, - "PlaygroundViewController": 2, - "UIViewController": 2, - "UIScrollView*": 1, - "_scrollView": 9, - "": 1, - "CGFloat": 44, - "kFramePadding": 7, - "kElementSpacing": 3, - "kGroupSpacing": 5, - "addHeader": 5, - "yOffset": 42, - "UILabel*": 2, - "label": 6, - "UILabel": 2, - "initWithFrame": 12, - "CGRectZero": 5, - "label.text": 2, - "label.font": 3, - "UIFont": 3, - "systemFontOfSize": 2, - "label.numberOfLines": 2, - "CGRect": 41, - "frame": 38, - "label.frame": 4, - "frame.origin.x": 3, - "frame.origin.y": 16, - "frame.size.width": 4, - "frame.size.height": 15, - "sizeWithFont": 2, - "constrainedToSize": 2, - "CGSizeMake": 3, - ".height": 4, - "addSubview": 8, - "label.frame.size.height": 2, - "TT_RELEASE_SAFELY": 12, - "addText": 5, - "loadView": 4, - "UIScrollView": 1, - "self.view.bounds": 2, - "_scrollView.autoresizingMask": 1, - "UIViewAutoresizingFlexibleWidth": 4, - "UIViewAutoresizingFlexibleHeight": 1, - "self.view": 4, - "NSLocalizedString": 9, - "UIButton*": 1, - "button": 5, - "UIButton": 1, - "buttonWithType": 1, - "UIButtonTypeRoundedRect": 1, - "setTitle": 1, - "forState": 4, - "UIControlStateNormal": 1, - "addTarget": 1, - "action": 1, - "debugTestAction": 2, - "forControlEvents": 1, - "UIControlEventTouchUpInside": 1, - "sizeToFit": 1, - "button.frame": 2, - "TTCurrentLocale": 2, - "displayNameForKey": 1, - "NSLocaleIdentifier": 1, - "localeIdentifier": 1, - "TTPathForBundleResource": 1, - "TTPathForDocumentsResource": 1, - "dataUsingEncoding": 2, - "NSUTF8StringEncoding": 2, - "md5Hash": 1, - "setContentSize": 1, - "viewDidUnload": 2, - "viewDidAppear": 2, - "animated": 27, - "flashScrollIndicators": 1, - "DEBUG": 1, - "TTDPRINTMETHODNAME": 1, - "TTDPRINT": 9, - "TTMAXLOGLEVEL": 1, - "TTDERROR": 1, - "TTLOGLEVEL_ERROR": 1, - "TTDWARNING": 1, - "TTLOGLEVEL_WARNING": 1, - "TTDINFO": 1, - "TTLOGLEVEL_INFO": 1, - "TTDCONDITIONLOG": 3, - "rand": 1, - "TTDASSERT": 2, - "SBJsonParser": 2, - "maxDepth": 2, - "NSData*": 1, - "objectWithString": 5, - "repr": 5, - "jsonText": 1, - "NSError**": 2, - "self.maxDepth": 2, - "Methods": 1, - "self.error": 3, - "SBJsonStreamParserAccumulator": 2, - "*accumulator": 1, - "SBJsonStreamParserAdapter": 2, - "*adapter": 1, - "adapter.delegate": 1, - "accumulator": 1, - "SBJsonStreamParser": 2, - "*parser": 1, - "parser.maxDepth": 1, - "parser.delegate": 1, - "adapter": 1, - "switch": 3, - "parse": 1, - "case": 8, - "SBJsonStreamParserComplete": 1, - "accumulator.value": 1, - "SBJsonStreamParserWaitingForData": 1, - "SBJsonStreamParserError": 1, - "parser.error": 1, - "error_": 2, - "tmp": 3, - "*ui": 1, - "*error_": 1, - "ui": 1, - "StyleViewController": 2, - "TTViewController": 1, - "TTStyle*": 7, - "_style": 8, - "_styleHighlight": 6, - "_styleDisabled": 6, - "_styleSelected": 6, - "_styleType": 6, - "kTextStyleType": 2, - "kViewStyleType": 2, - "kImageStyleType": 2, - "initWithStyleName": 1, - "styleType": 3, - "TTStyleSheet": 4, - "globalStyleSheet": 4, - "styleWithSelector": 4, - "UIControlStateHighlighted": 1, - "UIControlStateDisabled": 1, - "UIControlStateSelected": 1, - "addTextView": 5, - "title": 2, - "style": 29, - "textFrame": 3, - "TTRectInset": 3, - "UIEdgeInsetsMake": 3, - "StyleView*": 2, - "StyleView": 2, - "text.text": 1, - "TTStyleContext*": 1, - "context": 4, - "TTStyleContext": 1, - "context.frame": 1, - "context.delegate": 1, - "context.font": 1, - "systemFontSize": 1, - "CGSize": 5, - "addToSize": 1, - "CGSizeZero": 1, - "size.width": 1, - "size.height": 1, - "textFrame.size": 1, - "text.frame": 1, - "text.style": 1, - "text.backgroundColor": 1, - "UIColor": 3, - "colorWithRed": 3, - "green": 3, - "blue": 3, - "alpha": 3, - "text.autoresizingMask": 1, - "UIViewAutoresizingFlexibleBottomMargin": 3, - "addView": 5, - "viewFrame": 4, - "view": 11, - "view.style": 2, - "view.backgroundColor": 2, - "view.autoresizingMask": 2, - "addImageView": 5, - "TTImageView*": 1, - "TTImageView": 1, - "view.urlPath": 1, - "imageFrame": 2, - "view.frame": 2, - "imageFrame.size": 1, - "view.image.size": 1, - "TUITableViewStylePlain": 2, - "regular": 1, - "TUITableViewStyleGrouped": 1, - "grouped": 1, - "stick": 1, - "scroll": 3, - "TUITableViewStyle": 4, - "TUITableViewScrollPositionNone": 2, - "TUITableViewScrollPositionTop": 2, - "TUITableViewScrollPositionMiddle": 1, - "TUITableViewScrollPositionBottom": 1, - "TUITableViewScrollPositionToVisible": 3, - "supported": 1, - "TUITableViewScrollPosition": 5, - "TUITableViewInsertionMethodBeforeIndex": 1, - "NSOrderedAscending": 4, - "TUITableViewInsertionMethodAtIndex": 1, - "NSOrderedSame": 1, - "TUITableViewInsertionMethodAfterIndex": 1, - "NSOrderedDescending": 4, - "TUITableViewInsertionMethod": 3, - "TUITableViewCell": 23, - "@protocol": 3, - "TUITableViewDataSource": 2, - "TUITableView": 25, - "TUITableViewDelegate": 1, - "": 1, - "TUIScrollViewDelegate": 1, - "tableView": 45, - "heightForRowAtIndexPath": 2, - "TUIFastIndexPath": 89, - "indexPath": 47, - "@optional": 2, - "willDisplayCell": 2, - "cell": 21, - "forRowAtIndexPath": 2, - "subview": 1, - "didSelectRowAtIndexPath": 3, - "left/right": 2, - "mouse": 2, - "down": 1, - "up/down": 1, - "didDeselectRowAtIndexPath": 3, - "didClickRowAtIndexPath": 1, - "withEvent": 2, - "NSEvent": 3, - "event": 8, - "look": 1, - "clickCount": 1, - "TUITableView*": 1, - "shouldSelectRowAtIndexPath": 3, - "TUIFastIndexPath*": 1, - "forEvent": 3, - "NSEvent*": 1, - "NSMenu": 1, - "menuForRowAtIndexPath": 1, - "tableViewWillReloadData": 3, - "tableViewDidReloadData": 3, - "targetIndexPathForMoveFromRowAtIndexPath": 1, - "fromPath": 1, - "toProposedIndexPath": 1, - "proposedPath": 1, - "TUIScrollView": 1, - "__unsafe_unretained": 2, - "": 4, - "_dataSource": 6, - "weak": 2, - "_sectionInfo": 27, - "TUIView": 17, - "_pullDownView": 4, - "_headerView": 8, - "_lastSize": 1, - "_contentHeight": 7, - "NSMutableIndexSet": 6, - "_visibleSectionHeaders": 6, - "_visibleItems": 14, - "_reusableTableCells": 5, - "_selectedIndexPath": 9, - "_indexPathShouldBeFirstResponder": 2, - "_futureMakeFirstResponderToken": 2, - "_keepVisibleIndexPathForReload": 2, - "_relativeOffsetForReload": 2, - "drag": 1, - "reorder": 1, - "_dragToReorderCell": 5, - "CGPoint": 7, - "_currentDragToReorderLocation": 1, - "_currentDragToReorderMouseOffset": 1, - "_currentDragToReorderIndexPath": 1, - "_currentDragToReorderInsertionMethod": 1, - "_previousDragToReorderIndexPath": 1, - "_previousDragToReorderInsertionMethod": 1, - "animateSelectionChanges": 3, - "forceSaveScrollPosition": 1, - "derepeaterEnabled": 1, - "layoutSubviewsReentrancyGuard": 1, - "didFirstLayout": 1, - "dataSourceNumberOfSectionsInTableView": 1, - "delegateTableViewWillDisplayCellForRowAtIndexPath": 1, - "maintainContentOffsetAfterReload": 3, - "_tableFlags": 1, - "creation.": 1, - "calls": 1, - "UITableViewStylePlain": 1, - "unsafe_unretained": 2, - "dataSource": 2, - "": 4, - "readwrite": 1, - "reloadData": 3, - "reloadDataMaintainingVisibleIndexPath": 2, - "relativeOffset": 5, - "reloadLayout": 2, - "numberOfSections": 10, - "numberOfRowsInSection": 9, - "section": 60, - "rectForHeaderOfSection": 4, - "rectForSection": 3, - "rectForRowAtIndexPath": 7, - "NSIndexSet": 4, - "indexesOfSectionsInRect": 2, - "rect": 10, - "indexesOfSectionHeadersInRect": 2, - "indexPathForCell": 2, - "returns": 4, - "visible": 16, - "indexPathsForRowsInRect": 3, - "indexPathForRowAtPoint": 2, - "point": 11, - "indexPathForRowAtVerticalOffset": 2, - "offset": 23, - "indexOfSectionWithHeaderAtPoint": 2, - "indexOfSectionWithHeaderAtVerticalOffset": 2, - "enumerateIndexPathsUsingBlock": 2, - "*indexPath": 11, - "*stop": 7, - "enumerateIndexPathsWithOptions": 2, - "NSEnumerationOptions": 4, - "usingBlock": 6, - "enumerateIndexPathsFromIndexPath": 4, - "fromIndexPath": 6, - "toIndexPath": 12, - "withOptions": 4, - "headerViewForSection": 6, - "cellForRowAtIndexPath": 9, - "index": 11, - "visibleCells": 3, - "order": 1, - "sortedVisibleCells": 2, - "indexPathsForVisibleRows": 2, - "scrollToRowAtIndexPath": 3, - "atScrollPosition": 3, - "scrollPosition": 9, - "indexPathForSelectedRow": 4, - "representing": 1, - "row": 36, - "selection.": 1, - "indexPathForFirstRow": 2, - "indexPathForLastRow": 2, - "selectRowAtIndexPath": 3, - "deselectRowAtIndexPath": 3, - "*pullDownView": 1, - "pullDownViewIsVisible": 3, - "*headerView": 6, - "dequeueReusableCellWithIdentifier": 2, - "identifier": 7, - "": 1, - "@required": 1, - "canMoveRowAtIndexPath": 2, - "moveRowAtIndexPath": 2, - "numberOfSectionsInTableView": 3, - "NSIndexPath": 5, - "indexPathForRow": 11, - "inSection": 11, - "HEADER_Z_POSITION": 2, - "beginning": 1, - "height": 19, - "TUITableViewRowInfo": 3, - "TUITableViewSection": 16, - "*_tableView": 1, - "*_headerView": 1, - "reusable": 1, - "similar": 1, - "UITableView": 1, - "sectionIndex": 23, - "numberOfRows": 13, - "sectionHeight": 9, - "sectionOffset": 8, - "*rowInfo": 1, - "initWithNumberOfRows": 2, - "_tableView": 3, - "rowInfo": 7, - "_setupRowHeights": 2, - "*header": 1, - "self.headerView": 2, - "roundf": 2, - "header.frame.size.height": 1, - "i": 41, - "h": 3, - "_tableView.delegate": 1, - ".offset": 2, - "rowHeight": 2, - "sectionRowOffset": 2, - "tableRowOffset": 2, - "headerHeight": 4, - "self.headerView.frame.size.height": 1, - "headerView": 14, - "_tableView.dataSource": 3, - "respondsToSelector": 8, - "_headerView.autoresizingMask": 1, - "TUIViewAutoresizingFlexibleWidth": 1, - "_headerView.layer.zPosition": 1, - "Private": 1, - "_updateSectionInfo": 2, - "_updateDerepeaterViews": 2, - "pullDownView": 1, - "_tableFlags.animateSelectionChanges": 3, - "_tableFlags.delegateTableViewWillDisplayCellForRowAtIndexPath": 1, - "setDataSource": 1, - "_tableFlags.dataSourceNumberOfSectionsInTableView": 2, - "setAnimateSelectionChanges": 1, - "*s": 3, - "y": 12, - "CGRectMake": 8, - "self.bounds.size.width": 4, - "indexPath.section": 3, - "indexPath.row": 1, - "*section": 8, - "removeFromSuperview": 4, - "removeAllIndexes": 2, - "*sections": 1, - "bounds": 2, - ".size.height": 1, - "self.contentInset.top*2": 1, - "section.sectionOffset": 1, - "sections": 4, - "self.contentInset.bottom": 1, - "_enqueueReusableCell": 2, - "*identifier": 1, - "cell.reuseIdentifier": 1, - "*c": 1, - "lastObject": 1, - "removeLastObject": 1, - "prepareForReuse": 1, - "allValues": 1, - "SortCells": 1, - "*a": 2, - "*b": 2, - "*ctx": 1, - "a.frame.origin.y": 2, - "b.frame.origin.y": 2, - "*v": 2, - "v": 4, - "sortedArrayUsingComparator": 1, - "NSComparator": 1, - "NSComparisonResult": 1, - "INDEX_PATHS_FOR_VISIBLE_ROWS": 4, - "allKeys": 1, - "*i": 4, - "*cell": 7, - "*indexes": 2, - "CGRectIntersectsRect": 5, - "indexes": 4, - "addIndex": 3, - "*indexPaths": 1, - "cellRect": 7, - "indexPaths": 2, - "CGRectContainsPoint": 1, - "cellRect.origin.y": 1, - "origin": 1, - "brief": 1, - "Obtain": 1, - "whose": 2, - "specified": 1, - "exists": 1, - "negative": 1, - "returned": 1, - "param": 1, - "p": 3, - "0": 2, - "width": 1, - "point.y": 1, - "section.headerView": 9, - "sectionLowerBound": 2, - "fromIndexPath.section": 1, - "sectionUpperBound": 3, - "toIndexPath.section": 1, - "rowLowerBound": 2, - "fromIndexPath.row": 1, - "rowUpperBound": 3, - "toIndexPath.row": 1, - "irow": 3, - "lower": 1, - "bound": 1, - "iteration...": 1, - "rowCount": 3, - "j": 5, - "FALSE": 2, - "...then": 1, - "zero": 1, - "iterations": 1, - "_topVisibleIndexPath": 1, - "*topVisibleIndex": 1, - "sortedArrayUsingSelector": 1, - "topVisibleIndex": 2, - "setFrame": 2, - "_tableFlags.forceSaveScrollPosition": 1, - "setContentOffset": 2, - "_tableFlags.didFirstLayout": 1, - "prevent": 2, - "layout": 3, - "pinned": 5, - "isKindOfClass": 2, - "TUITableViewSectionHeader": 5, - ".pinnedToViewport": 2, - "TRUE": 1, - "pinnedHeader": 1, - "CGRectGetMaxY": 2, - "headerFrame": 4, - "pinnedHeader.frame.origin.y": 1, - "intersecting": 1, - "push": 1, - "upwards.": 1, - "pinnedHeaderFrame": 2, - "pinnedHeader.frame": 2, - "pinnedHeaderFrame.origin.y": 1, - "notify": 3, - "section.headerView.frame": 1, - "setNeedsLayout": 3, - "section.headerView.superview": 1, - "remove": 4, - "offscreen": 2, - "toRemove": 1, - "enumerateIndexesUsingBlock": 1, - "removeIndex": 1, - "_layoutCells": 3, - "visibleCellsNeedRelayout": 5, - "remaining": 1, - "cells": 7, - "cell.frame": 1, - "cell.layer.zPosition": 1, - "visibleRect": 3, - "Example": 1, - "*oldVisibleIndexPaths": 1, - "*newVisibleIndexPaths": 1, - "*indexPathsToRemove": 1, - "oldVisibleIndexPaths": 2, - "mutableCopy": 2, - "indexPathsToRemove": 2, - "removeObjectsInArray": 2, - "newVisibleIndexPaths": 2, - "*indexPathsToAdd": 1, - "indexPathsToAdd": 2, - "newly": 1, - "superview": 1, - "bringSubviewToFront": 1, - "self.contentSize": 3, - "headerViewRect": 3, - "s.height": 3, - "_headerView.frame.size.height": 2, - "visible.size.width": 3, - "_headerView.frame": 1, - "_headerView.hidden": 4, - "show": 2, - "pullDownRect": 4, - "_pullDownView.frame.size.height": 2, - "_pullDownView.hidden": 4, - "_pullDownView.frame": 1, - "self.delegate": 10, - "recycle": 1, - "regenerated": 3, - "layoutSubviews": 5, - "because": 1, - "dragged": 1, - "clear": 3, - "removeAllObjects": 1, - "laid": 1, - "next": 2, - "_tableFlags.layoutSubviewsReentrancyGuard": 3, - "setAnimationsEnabled": 1, - "CATransaction": 3, - "begin": 1, - "setDisableActions": 1, - "_preLayoutCells": 2, - "munge": 2, - "contentOffset": 2, - "_layoutSectionHeaders": 2, - "_tableFlags.derepeaterEnabled": 1, - "commit": 1, - "selected": 2, - "overlapped": 1, - "r.size.height": 4, - "headerFrame.size.height": 1, - "r.origin.y": 1, - "v.size.height": 2, - "scrollRectToVisible": 2, - "sec": 3, - "_makeRowAtIndexPathFirstResponder": 2, - "responder": 2, - "made": 1, - "acceptsFirstResponder": 1, - "self.nsWindow": 3, - "makeFirstResponderIfNotAlreadyInResponderChain": 1, - "futureMakeFirstResponderRequestToken": 1, - "*oldIndexPath": 1, - "oldIndexPath": 2, - "setSelected": 2, - "setNeedsDisplay": 2, - "selection": 3, - "actually": 2, - "NSResponder": 1, - "*firstResponder": 1, - "firstResponder": 3, - "indexPathForFirstVisibleRow": 2, - "*firstIndexPath": 1, - "firstIndexPath": 4, - "indexPathForLastVisibleRow": 2, - "*lastIndexPath": 5, - "lastIndexPath": 8, - "performKeyAction": 2, - "repeative": 1, - "press": 1, - "noCurrentSelection": 2, - "isARepeat": 1, - "TUITableViewCalculateNextIndexPathBlock": 3, - "selectValidIndexPath": 3, - "*startForNoSelection": 2, - "calculateNextIndexPath": 4, - "foundValidNextRow": 4, - "*newIndexPath": 1, - "newIndexPath": 6, - "startForNoSelection": 1, - "_delegate": 2, - "self.animateSelectionChanges": 1, - "charactersIgnoringModifiers": 1, - "characterAtIndex": 1, - "NSUpArrowFunctionKey": 1, - "lastIndexPath.section": 2, - "lastIndexPath.row": 2, - "rowsInSection": 7, - "NSDownArrowFunctionKey": 1, - "_tableFlags.maintainContentOffsetAfterReload": 2, - "setMaintainContentOffsetAfterReload": 1, - "newValue": 2, - "indexPathWithIndexes": 1, - "indexAtPosition": 2 - }, - "OCaml": { - "{": 11, - "shared": 1, - "open": 4, - "Eliom_content": 1, - "Html5.D": 1, - "Eliom_parameter": 1, - "}": 13, - "server": 2, - "module": 5, - "Example": 1, - "Eliom_registration.App": 1, - "(": 21, - "struct": 5, - "let": 13, - "application_name": 1, - "end": 5, - ")": 23, - "main": 2, - "Eliom_service.service": 1, - "path": 1, - "[": 13, - "]": 13, - "get_params": 1, - "unit": 5, - "client": 1, - "hello_popup": 2, - "Dom_html.window##alert": 1, - "Js.string": 1, - "_": 2, - "Example.register": 1, - "service": 1, - "fun": 9, - "-": 22, - "Lwt.return": 1, - "html": 1, - "head": 1, - "title": 1, - "pcdata": 4, - "body": 1, - "h1": 1, - ";": 14, - "p": 1, - "h2": 1, - "a": 4, - "a_onclick": 1, - "type": 2, - "Ops": 2, - "@": 6, - "f": 10, - "k": 21, - "|": 15, - "x": 14, - "List": 1, - "rec": 3, - "map": 3, - "l": 8, - "match": 4, - "with": 4, - "hd": 6, - "tl": 6, - "fold": 2, - "acc": 5, - "Option": 1, - "opt": 2, - "None": 5, - "Some": 5, - "Lazy": 1, - "option": 1, - "mutable": 1, - "waiters": 5, - "make": 1, - "push": 4, - "cps": 7, - "value": 3, - "force": 1, - "l.value": 2, - "when": 1, - "l.waiters": 5, - "<->": 3, - "function": 1, - "Base.List.iter": 1, - "l.push": 1, - "<": 1, - "get_state": 1, - "lazy_from_val": 1 - }, - "Omgrofl": { - "lol": 14, - "iz": 11, - "wtf": 1, - "liek": 1, - "lmao": 1, - "brb": 1, - "w00t": 1, - "Hello": 1, - "World": 1, - "rofl": 13, - "lool": 5, - "loool": 6, - "stfu": 1 - }, - "Opa": { - "server": 1, - "Server.one_page_server": 1, - "(": 4, - "-": 1, - "

": 2, - "Hello": 2, - "world": 2, - "

": 2, - ")": 4, - "Server.start": 1, - "Server.http": 1, - "{": 2, - "page": 1, - "function": 1, - "}": 2, - "title": 1 - }, - "OpenCL": { - "double": 3, - "run_fftw": 1, - "(": 18, - "int": 3, - "n": 4, - "const": 4, - "float": 3, - "*": 5, - "x": 5, - "y": 4, - ")": 18, - "{": 4, - "fftwf_plan": 1, - "p1": 3, - "fftwf_plan_dft_1d": 1, - "fftwf_complex": 2, - "FFTW_FORWARD": 1, - "FFTW_ESTIMATE": 1, - ";": 12, - "nops": 3, - "t": 4, - "cl": 2, - "realTime": 2, - "for": 1, - "op": 3, - "<": 1, - "+": 4, - "fftwf_execute": 1, - "}": 4, - "-": 1, - "/": 1, - "fftwf_destroy_plan": 1, - "return": 1, - "typedef": 1, - "foo_t": 3, - "#ifndef": 1, - "ZERO": 3, - "#define": 2, - "#endif": 1, - "FOO": 1, - "__kernel": 1, - "void": 1, - "foo": 1, - "__global": 1, - "__local": 1, - "uint": 1, - "barrier": 1, - "CLK_LOCAL_MEM_FENCE": 1, - "if": 1, - "*x": 1 - }, - "OpenEdge ABL": { - "USING": 3, - "Progress.Lang.*.": 3, - "CLASS": 2, - "email.Email": 2, - "USE": 2, - "-": 73, - "WIDGET": 2, - "POOL": 2, - "&": 3, - "SCOPED": 1, - "DEFINE": 16, - "QUOTES": 1, - "@#": 1, - "%": 2, - "*": 2, - "+": 21, - "._MIME_BOUNDARY_.": 1, - "#@": 1, - "WIN": 1, - "From": 4, - "To": 8, - "CC": 2, - "BCC": 2, - "Personal": 1, - "Private": 1, - "Company": 2, - "confidential": 2, - "normal": 1, - "urgent": 2, - "non": 1, - "Cannot": 3, - "locate": 3, - "file": 6, - "in": 3, - "the": 3, - "filesystem": 3, - "R": 3, - "File": 3, - "exists": 3, - "but": 3, - "is": 3, - "not": 3, - "readable": 3, - "Error": 3, - "copying": 3, - "from": 3, - "<\">": 8, - "ttSenders": 2, - "cEmailAddress": 8, - "n": 13, - "ttToRecipients": 1, - "Reply": 3, - "ttReplyToRecipients": 1, - "Cc": 2, - "ttCCRecipients": 1, - "Bcc": 2, - "ttBCCRecipients": 1, - "Return": 1, - "Receipt": 1, - "ttDeliveryReceiptRecipients": 1, - "Disposition": 3, - "Notification": 1, - "ttReadReceiptRecipients": 1, - "Subject": 2, - "Importance": 3, - "H": 1, - "High": 1, - "L": 1, - "Low": 1, - "Sensitivity": 2, - "Priority": 2, - "Date": 4, - "By": 1, - "Expiry": 2, - "Mime": 1, - "Version": 1, - "Content": 10, - "Type": 4, - "multipart/mixed": 1, - ";": 5, - "boundary": 1, - "text/plain": 2, - "charset": 2, - "Transfer": 4, - "Encoding": 4, - "base64": 2, - "bit": 2, - "application/octet": 1, - "stream": 1, - "attachment": 2, - "filename": 2, - "ttAttachments.cFileName": 2, - "cNewLine.": 1, - "RETURN": 7, - "lcReturnData.": 1, - "END": 12, - "METHOD.": 6, - "METHOD": 6, - "PUBLIC": 6, - "CHARACTER": 9, - "send": 1, - "(": 44, - ")": 44, - "objSendEmailAlgorithm": 1, - "sendEmail": 2, - "INPUT": 11, - "THIS": 1, - "OBJECT": 2, - ".": 14, - "CLASS.": 2, - "MESSAGE": 2, - "INTERFACE": 1, - "email.SendEmailAlgorithm": 1, - "ipobjEmail": 1, - "AS": 21, - "INTERFACE.": 1, - "PARAMETER": 3, - "objSendEmailAlg": 2, - "email.SendEmailSocket": 1, - "NO": 13, - "UNDO.": 12, - "VARIABLE": 12, - "vbuffer": 9, - "MEMPTR": 2, - "vstatus": 1, - "LOGICAL": 1, - "vState": 2, - "INTEGER": 6, - "ASSIGN": 2, - "vstate": 1, - "FUNCTION": 1, - "getHostname": 1, - "RETURNS": 1, - "cHostname": 1, - "THROUGH": 1, - "hostname": 1, - "ECHO.": 1, - "IMPORT": 1, - "UNFORMATTED": 1, - "cHostname.": 2, - "CLOSE.": 1, - "FUNCTION.": 1, - "PROCEDURE": 2, - "newState": 2, - "INTEGER.": 1, - "pstring": 4, - "CHARACTER.": 1, - "newState.": 1, - "IF": 2, - "THEN": 2, - "RETURN.": 1, - "SET": 5, - "SIZE": 5, - "LENGTH": 3, - "PUT": 1, - "STRING": 7, - "pstring.": 1, - "SELF": 4, - "WRITE": 1, - "PROCEDURE.": 2, - "ReadSocketResponse": 1, - "vlength": 5, - "str": 3, - "v": 1, - "GET": 3, - "BYTES": 2, - "AVAILABLE": 2, - "VIEW": 1, - "ALERT": 1, - "BOX.": 1, - "DO": 2, - "READ": 1, - "handleResponse": 1, - "END.": 2, - "email.Util": 1, - "FINAL": 1, - "PRIVATE": 1, - "STATIC": 5, - "cMonthMap": 2, - "EXTENT": 1, - "INITIAL": 1, - "[": 2, - "]": 2, - "ABLDateTimeToEmail": 3, - "ipdttzDateTime": 6, - "DATETIME": 3, - "TZ": 2, - "DAY": 1, - "MONTH": 1, - "YEAR": 1, - "TRUNCATE": 2, - "MTIME": 1, - "/": 2, - "ABLTimeZoneToString": 2, - "TIMEZONE": 1, - "ipdtDateTime": 2, - "ipiTimeZone": 3, - "ABSOLUTE": 1, - "MODULO": 1, - "LONGCHAR": 4, - "ConvertDataToBase64": 1, - "iplcNonEncodedData": 2, - "lcPreBase64Data": 4, - "lcPostBase64Data": 3, - "mptrPostBase64Data": 3, - "i": 3, - "COPY": 1, - "LOB": 1, - "FROM": 1, - "TO": 2, - "mptrPostBase64Data.": 1, - "BASE64": 1, - "ENCODE": 1, - "BY": 1, - "SUBSTRING": 1, - "CHR": 2, - "lcPostBase64Data.": 1 - }, - "Org": { - "#": 13, - "+": 13, - "OPTIONS": 1, - "H": 1, - "num": 1, - "nil": 4, - "toc": 2, - "n": 1, - "@": 1, - "t": 10, - "|": 4, - "-": 30, - "f": 2, - "*": 3, - "TeX": 1, - "LaTeX": 1, - "skip": 1, - "d": 2, - "(": 11, - "HIDE": 1, - ")": 11, - "tags": 2, - "not": 1, - "in": 2, - "STARTUP": 1, - "align": 1, - "fold": 1, - "nodlcheck": 1, - "hidestars": 1, - "oddeven": 1, - "lognotestate": 1, - "SEQ_TODO": 1, - "TODO": 1, - "INPROGRESS": 1, - "i": 1, - "WAITING": 1, - "w@": 1, - "DONE": 1, - "CANCELED": 1, - "c@": 1, - "TAGS": 1, - "Write": 1, - "w": 1, - "Update": 1, - "u": 1, - "Fix": 1, - "Check": 1, - "c": 1, - "TITLE": 1, - "org": 10, - "ruby": 6, - "AUTHOR": 1, - "Brian": 1, - "Dewey": 1, - "EMAIL": 1, - "bdewey@gmail.com": 1, - "LANGUAGE": 1, - "en": 1, - "PRIORITIES": 1, - "A": 1, - "C": 1, - "B": 1, - "CATEGORY": 1, - "worg": 1, - "{": 1, - "Back": 1, - "to": 8, - "Worg": 1, - "rubygems": 2, - "ve": 1, - "already": 1, - "created": 1, - "a": 4, - "site.": 1, - "Make": 1, - "sure": 1, - "you": 2, - "have": 1, - "installed": 1, - "sudo": 1, - "gem": 1, - "install": 1, - ".": 1, - "You": 1, - "need": 1, - "register": 1, - "new": 2, - "Webby": 3, - "filter": 3, - "handle": 1, - "mode": 2, - "content.": 2, - "makes": 1, - "this": 2, - "easy.": 1, - "In": 1, - "the": 6, - "lib/": 1, - "folder": 1, - "of": 2, - "your": 2, - "site": 1, - "create": 1, - "file": 1, - "orgmode.rb": 1, - "BEGIN_EXAMPLE": 2, - "require": 1, - "Filters.register": 1, - "do": 2, - "input": 3, - "Orgmode": 2, - "Parser.new": 1, - ".to_html": 1, - "end": 1, - "END_EXAMPLE": 1, - "This": 2, - "code": 1, - "creates": 1, - "that": 1, - "will": 1, - "use": 1, - "parser": 1, - "translate": 1, - "into": 1, - "HTML.": 1, - "Create": 1, - "For": 1, - "example": 1, - "title": 2, - "Parser": 1, - "created_at": 1, - "status": 2, - "Under": 1, - "development": 1, - "erb": 1, - "orgmode": 3, - "<%=>": 2, - "page": 2, - "Status": 1, - "Description": 1, - "Helpful": 1, - "Ruby": 1, - "routines": 1, - "for": 3, - "parsing": 1, - "files.": 1, - "The": 3, - "most": 1, - "significant": 1, - "thing": 2, - "library": 1, - "does": 1, - "today": 1, - "is": 5, - "convert": 1, - "files": 1, - "textile.": 1, - "Currently": 1, - "cannot": 1, - "much": 1, - "customize": 1, - "conversion.": 1, - "supplied": 1, - "textile": 1, - "conversion": 1, - "optimized": 1, - "extracting": 1, - "from": 1, - "orgfile": 1, - "as": 1, - "opposed": 1, - "History": 1, - "**": 1, - "Version": 1, - "first": 1, - "output": 2, - "HTML": 2, - "gets": 1, - "class": 1, - "now": 1, - "indented": 1, - "Proper": 1, - "support": 1, - "multi": 1, - "paragraph": 2, - "list": 1, - "items.": 1, - "See": 1, - "part": 1, - "last": 1, - "bullet.": 1, - "Fixed": 1, - "bugs": 1, - "wouldn": 1, - "s": 1, - "all": 1, - "there": 1, - "it": 1 - }, - "Oxygene": { - "": 1, - "DefaultTargets=": 1, - "xmlns=": 1, - "": 3, - "": 1, - "Loops": 2, - "": 1, - "": 1, - "exe": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "False": 4, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "Properties": 1, - "App.ico": 1, - "": 1, - "": 1, - "Condition=": 3, - "Release": 2, - "": 1, - "": 1, - "{": 1, - "BD89C": 1, - "-": 4, - "B610": 1, - "CEE": 1, - "CAF": 1, - "C515D88E2C94": 1, - "}": 1, - "": 1, - "": 3, - "": 1, - "DEBUG": 1, - ";": 2, - "TRACE": 1, - "": 1, - "": 2, - ".": 2, - "bin": 2, - "Debug": 1, - "": 2, - "": 1, - "True": 3, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "Project=": 1, - "": 2, - "": 5, - "Include=": 12, - "": 5, - "(": 5, - "Framework": 5, - ")": 5, - "mscorlib.dll": 1, - "": 5, - "": 5, - "System.dll": 1, - "ProgramFiles": 1, - "Reference": 1, - "Assemblies": 1, - "Microsoft": 1, - "v3.5": 1, - "System.Core.dll": 1, - "": 1, - "": 1, - "System.Data.dll": 1, - "System.Xml.dll": 1, - "": 2, - "": 4, - "": 1, - "": 1, - "": 2, - "ResXFileCodeGenerator": 1, - "": 2, - "": 1, - "": 1, - "SettingsSingleFileGenerator": 1, - "": 1, - "": 1 - }, - "Parrot Assembly": { - "SHEBANG#!parrot": 1, - ".pcc_sub": 1, - "main": 2, - "say": 1, - "end": 1 - }, - "Parrot Internal Representation": { - "SHEBANG#!parrot": 1, - ".sub": 1, - "main": 1, - "say": 1, - ".end": 1 - }, - "Pascal": { - "program": 1, - "gmail": 1, - ";": 6, - "uses": 1, - "Forms": 1, - "Unit2": 1, - "in": 1, - "{": 2, - "Form2": 2, - "}": 2, - "R": 1, - "*.res": 1, - "begin": 1, - "Application.Initialize": 1, - "Application.MainFormOnTaskbar": 1, - "True": 1, - "Application.CreateForm": 1, - "(": 1, - "TForm2": 1, - ")": 1, - "Application.Run": 1, - "end.": 1 - }, - "PAWN": { - "//": 22, - "-": 1551, - "#include": 5, - "": 1, - "": 1, - "": 1, - "#pragma": 1, - "tabsize": 1, - "#define": 5, - "COLOR_WHITE": 2, - "xFFFFFFFF": 2, - "COLOR_NORMAL_PLAYER": 3, - "xFFBB7777": 1, - "CITY_LOS_SANTOS": 7, - "CITY_SAN_FIERRO": 4, - "CITY_LAS_VENTURAS": 6, - "new": 13, - "total_vehicles_from_files": 19, - ";": 257, - "gPlayerCitySelection": 21, - "[": 56, - "MAX_PLAYERS": 3, - "]": 56, - "gPlayerHasCitySelected": 6, - "gPlayerLastCitySelectionTick": 5, - "Text": 5, - "txtClassSelHelper": 14, - "txtLosSantos": 7, - "txtSanFierro": 7, - "txtLasVenturas": 7, - "thisanimid": 1, - "lastanimid": 1, - "main": 1, - "(": 273, - ")": 273, - "{": 39, - "print": 3, - "}": 39, - "public": 6, - "OnPlayerConnect": 1, - "playerid": 132, - "GameTextForPlayer": 1, - "SendClientMessage": 1, - "GetTickCount": 4, - "//SetPlayerColor": 2, - "//Kick": 1, - "return": 17, - "OnPlayerSpawn": 1, - "if": 28, - "IsPlayerNPC": 3, - "randSpawn": 16, - "SetPlayerInterior": 7, - "TogglePlayerClock": 2, - "ResetPlayerMoney": 3, - "GivePlayerMoney": 2, - "random": 3, - "sizeof": 3, - "gRandomSpawns_LosSantos": 5, - "SetPlayerPos": 6, - "SetPlayerFacingAngle": 6, - "else": 9, - "gRandomSpawns_SanFierro": 5, - "gRandomSpawns_LasVenturas": 5, - "SetPlayerSkillLevel": 11, - "WEAPONSKILL_PISTOL": 1, - "WEAPONSKILL_PISTOL_SILENCED": 1, - "WEAPONSKILL_DESERT_EAGLE": 1, - "WEAPONSKILL_SHOTGUN": 1, - "WEAPONSKILL_SAWNOFF_SHOTGUN": 1, - "WEAPONSKILL_SPAS12_SHOTGUN": 1, - "WEAPONSKILL_MICRO_UZI": 1, - "WEAPONSKILL_MP5": 1, - "WEAPONSKILL_AK47": 1, - "WEAPONSKILL_M4": 1, - "WEAPONSKILL_SNIPERRIFLE": 1, - "GivePlayerWeapon": 1, - "WEAPON_COLT45": 1, - "//GivePlayerWeapon": 1, - "WEAPON_MP5": 1, - "OnPlayerDeath": 1, - "killerid": 3, - "reason": 1, - "playercash": 4, - "INVALID_PLAYER_ID": 1, - "GetPlayerMoney": 1, - "ClassSel_SetupCharSelection": 2, - "SetPlayerCameraPos": 6, - "SetPlayerCameraLookAt": 6, - "ClassSel_InitCityNameText": 4, - "txtInit": 7, - "TextDrawUseBox": 2, - "TextDrawLetterSize": 2, - "TextDrawFont": 2, - "TextDrawSetShadow": 2, - "TextDrawSetOutline": 2, - "TextDrawColor": 2, - "xEEEEEEFF": 1, - "TextDrawBackgroundColor": 2, - "FF": 2, - "ClassSel_InitTextDraws": 2, - "TextDrawCreate": 4, - "TextDrawBoxColor": 1, - "BB": 1, - "TextDrawTextSize": 1, - "ClassSel_SetupSelectedCity": 3, - "TextDrawShowForPlayer": 4, - "TextDrawHideForPlayer": 10, - "ClassSel_SwitchToNextCity": 3, - "+": 19, - "PlayerPlaySound": 2, - "ClassSel_SwitchToPreviousCity": 2, - "<": 3, - "ClassSel_HandleCitySelection": 2, - "Keys": 3, - "ud": 2, - "lr": 4, - "GetPlayerKeys": 1, - "&": 1, - "KEY_FIRE": 1, - "TogglePlayerSpectating": 2, - "OnPlayerRequestClass": 1, - "classid": 1, - "GetPlayerState": 2, - "PLAYER_STATE_SPECTATING": 2, - "OnGameModeInit": 1, - "SetGameModeText": 1, - "ShowPlayerMarkers": 1, - "PLAYER_MARKERS_MODE_GLOBAL": 1, - "ShowNameTags": 1, - "SetNameTagDrawDistance": 1, - "EnableStuntBonusForAll": 1, - "DisableInteriorEnterExits": 1, - "SetWeather": 1, - "SetWorldTime": 1, - "//UsePlayerPedAnims": 1, - "//ManualVehicleEngineAndLights": 1, - "//LimitGlobalChatRadius": 1, - "AddPlayerClass": 69, - "//AddPlayerClass": 1, - "LoadStaticVehiclesFromFile": 17, - "printf": 1, - "OnPlayerUpdate": 1, - "IsPlayerConnected": 1, - "&&": 2, - "GetPlayerInterior": 1, - "GetPlayerWeapon": 2, - "SetPlayerArmedWeapon": 1, - "fists": 1, - "no": 1, - "syncing": 1, - "until": 1, - "they": 1, - "change": 1, - "their": 1, - "weapon": 1, - "WEAPON_MINIGUN": 1, - "Kick": 1 - }, - "Perl": { - "package": 14, - "App": 131, - "Ack": 136, - ";": 1185, - "use": 76, - "warnings": 16, - "strict": 16, - "File": 54, - "Next": 27, - "Plugin": 2, - "Basic": 10, - "head1": 31, - "NAME": 5, - "-": 860, - "A": 2, - "container": 1, - "for": 78, - "functions": 2, - "the": 131, - "ack": 38, - "program": 6, - "VERSION": 15, - "Version": 1, - "cut": 27, - "our": 34, - "COPYRIGHT": 6, - "BEGIN": 7, - "{": 1121, - "}": 1134, - "fh": 28, - "*STDOUT": 6, - "%": 78, - "types": 26, - "type_wanted": 20, - "mappings": 29, - "ignore_dirs": 12, - "input_from_pipe": 8, - "output_to_pipe": 12, - "dir_sep_chars": 10, - "is_cygwin": 6, - "is_windows": 12, - "Spec": 13, - "(": 919, - ")": 917, - "Glob": 4, - "Getopt": 6, - "Long": 6, - "_MTN": 2, - "blib": 2, - "CVS": 5, - "RCS": 2, - "SCCS": 2, - "_darcs": 2, - "_sgbak": 2, - "_build": 2, - "actionscript": 2, - "[": 159, - "qw": 35, - "as": 33, - "mxml": 2, - "]": 155, - "ada": 4, - "adb": 2, - "ads": 2, - "asm": 4, - "s": 34, - "batch": 2, - "bat": 2, - "cmd": 2, - "binary": 3, - "q": 5, - "Binary": 2, - "files": 41, - "defined": 54, - "by": 11, - "Perl": 6, - "T": 2, - "op": 2, - "default": 16, - "off": 4, - "tt": 4, - "tt2": 2, - "ttml": 2, - "vb": 4, - "bas": 2, - "cls": 2, - "frm": 2, - "ctl": 2, - "resx": 2, - "verilog": 2, - "v": 19, - "vh": 2, - "sv": 2, - "vhdl": 4, - "vhd": 2, - "vim": 4, - "yaml": 4, - "yml": 2, - "xml": 6, - "dtd": 2, - "xsl": 2, - "xslt": 2, - "ent": 2, - "while": 31, - "my": 401, - "type": 69, - "exts": 6, - "each": 14, - "if": 272, - "ref": 33, - "ext": 14, - "@": 38, - "push": 30, - "_": 101, - "mk": 2, - "mak": 2, - "not": 53, - "t": 18, - "p": 9, - "STDIN": 2, - "O": 4, - "eq": 31, - "/MSWin32/": 2, - "quotemeta": 5, - "catfile": 4, - "SYNOPSIS": 5, - "If": 14, - "you": 33, - "want": 5, - "to": 86, - "know": 4, - "about": 3, - "F": 24, - "": 13, - "see": 4, - "file": 40, - "itself.": 2, - "No": 4, - "user": 4, - "serviceable": 1, - "parts": 1, - "inside.": 1, - "is": 62, - "all": 22, - "that": 27, - "should": 6, - "this.": 1, - "FUNCTIONS": 1, - "head2": 32, - "read_ackrc": 4, - "Reads": 1, - "contents": 2, - "of": 55, - ".ackrc": 1, - "and": 76, - "returns": 4, - "arguments.": 1, - "sub": 225, - "@files": 12, - "ENV": 40, - "ACKRC": 2, - "@dirs": 4, - "HOME": 4, - "USERPROFILE": 2, - "dir": 27, - "grep": 17, - "bsd_glob": 4, - "GLOB_TILDE": 2, - "filename": 68, - "&&": 83, - "e": 20, - "open": 7, - "or": 47, - "die": 38, - "@lines": 21, - "/./": 2, - "/": 69, - "s*#/": 2, - "<$fh>": 4, - "chomp": 3, - "close": 19, - "s/": 22, - "+": 120, - "//": 9, - "return": 157, - "get_command_line_options": 4, - "Gets": 3, - "command": 13, - "line": 20, - "arguments": 2, - "does": 10, - "specific": 1, - "tweaking.": 1, - "opt": 291, - "pager": 19, - "ACK_PAGER_COLOR": 7, - "||": 49, - "ACK_PAGER": 5, - "getopt_specs": 6, - "m": 17, - "after_context": 16, - "before_context": 18, - "shift": 165, - "val": 26, - "break": 14, - "c": 5, - "count": 23, - "color": 38, - "ACK_COLOR_MATCH": 5, - "ACK_COLOR_FILENAME": 5, - "ACK_COLOR_LINENO": 4, - "column": 4, - "#": 99, - "ignore": 7, - "this": 18, - "option": 7, - "it": 25, - "handled": 2, - "beforehand": 2, - "f": 25, - "flush": 8, - "follow": 7, - "G": 11, - "heading": 18, - "h": 6, - "H": 6, - "i": 26, - "invert_file_match": 8, - "lines": 19, - "l": 17, - "regex": 28, - "n": 19, - "o": 17, - "output": 36, - "undef": 17, - "passthru": 9, - "print0": 7, - "Q": 7, - "show_types": 4, - "smart_case": 3, - "sort_files": 11, - "u": 10, - "w": 4, - "remove_dir_sep": 7, - "delete": 10, - "print_version_statement": 2, - "exit": 16, - "show_help": 3, - "@_": 41, - "show_help_types": 2, - "require": 12, - "Pod": 4, - "Usage": 4, - "pod2usage": 2, - "verbose": 2, - "exitval": 2, - "dummy": 2, - "wanted": 4, - "no//": 2, - "must": 5, - "be": 30, - "later": 2, - "exists": 19, - "else": 53, - "qq": 18, - "Unknown": 2, - "unshift": 4, - "@ARGV": 12, - "split": 13, - "ACK_OPTIONS": 5, - "def_types_from_ARGV": 5, - "filetypes_supported": 5, - "parser": 12, - "Parser": 4, - "new": 55, - "configure": 4, - "getoptions": 4, - "to_screen": 10, - "defaults": 16, - "eval": 8, - "Win32": 9, - "Console": 2, - "ANSI": 3, - "key": 20, - "value": 12, - "<": 15, - "join": 5, - "map": 10, - "@ret": 10, - "from": 19, - "warn": 22, - "..": 7, - "uniq": 4, - "@uniq": 2, - "sort": 8, - "a": 81, - "<=>": 2, - "b": 6, - "keys": 15, - "numerical": 2, - "occurs": 2, - "only": 11, - "once": 4, - "Go": 1, - "through": 6, - "look": 2, - "I": 67, - "<--type-set>": 1, - "foo=": 1, - "bar": 3, - "<--type-add>": 1, - "xml=": 1, - ".": 121, - "Remove": 1, - "them": 5, - "add": 8, - "supported": 1, - "filetypes": 8, - "i.e.": 2, - "into": 6, - "etc.": 1, - "@typedef": 8, - "td": 6, - "set": 11, - "Builtin": 4, - "cannot": 4, - "changed.": 4, - "ne": 9, - "delete_type": 5, - "Type": 2, - "exist": 4, - "creating": 2, - "with": 26, - "...": 2, - "unless": 39, - "@exts": 8, - ".//": 2, - "Cannot": 4, - "append": 2, - "Removes": 1, - "internal": 1, - "structures": 1, - "containing": 5, - "information": 1, - "type_wanted.": 1, - "Internal": 2, - "error": 4, - "builtin": 2, - "ignoredir_filter": 5, - "Standard": 1, - "filter": 12, - "pass": 1, - "L": 18, - "": 1, - "descend_filter.": 1, - "It": 2, - "true": 3, - "directory": 8, - "any": 3, - "ones": 1, - "we": 7, - "ignore.": 1, - "path": 28, - "This": 24, - "removes": 1, - "trailing": 1, - "separator": 4, - "there": 6, - "one": 9, - "its": 2, - "argument": 1, - "Returns": 10, - "list": 10, - "<$filename>": 1, - "could": 2, - "be.": 1, - "For": 5, - "example": 5, - "": 1, - "The": 20, - "filetype": 1, - "will": 7, - "C": 48, - "": 1, - "can": 26, - "skipped": 2, - "something": 2, - "avoid": 1, - "searching": 6, - "even": 4, - "under": 4, - "a.": 1, - "constant": 2, - "TEXT": 16, - "basename": 9, - ".*": 2, - "is_searchable": 8, - "lc_basename": 8, - "lc": 5, - "r": 14, - "B": 75, - "header": 17, - "SHEBANG#!#!": 2, - "ruby": 3, - "|": 28, - "lua": 2, - "erl": 2, - "hp": 2, - "ython": 2, - "d": 9, - "d.": 2, - "*": 8, - "b/": 4, - "ba": 2, - "k": 6, - "z": 2, - "sh": 2, - "/i": 2, - "search": 11, - "false": 1, - "regular": 3, - "expression": 9, - "found.": 4, - "www": 2, - "U": 2, - "y": 8, - "tr/": 2, - "x": 7, - "w/": 3, - "nOo_/": 2, - "_thpppt": 3, - "_get_thpppt": 3, - "print": 35, - "_bar": 3, - "<<": 6, - "&": 22, - "*I": 2, - "g": 7, - "#.": 6, - ".#": 4, - "I#": 2, - "#I": 6, - "#7": 4, - "results.": 2, - "on": 24, - "when": 17, - "used": 11, - "interactively": 6, - "no": 21, - "Print": 6, - "between": 3, - "results": 8, - "different": 2, - "files.": 6, - "group": 2, - "Same": 8, - "nogroup": 2, - "noheading": 2, - "nobreak": 2, - "Highlight": 2, - "matching": 15, - "text": 6, - "redirected": 2, - "Windows": 4, - "colour": 2, - "COLOR": 6, - "match": 21, - "lineno": 2, - "Set": 3, - "filenames": 7, - "matches": 7, - "numbers.": 2, - "Flush": 2, - "immediately": 2, - "non": 2, - "goes": 2, - "pipe": 4, - "finding": 2, - "Only": 7, - "found": 9, - "without": 3, - "searching.": 2, - "PATTERN": 8, - "specified.": 4, - "REGEX": 2, - "but": 4, - "REGEX.": 2, - "Sort": 2, - "lexically.": 3, - "invert": 2, - "Print/search": 2, - "handle": 2, - "do": 11, - "g/": 2, - "G.": 2, - "show": 3, - "Show": 2, - "which": 6, - "has.": 2, - "inclusion/exclusion": 2, - "All": 4, - "searched": 5, - "Ignores": 2, - ".svn": 3, - "other": 5, - "ignored": 6, - "directories": 9, - "unrestricted": 2, - "name": 44, - "Add/Remove": 2, - "dirs": 2, - "R": 2, - "recurse": 2, - "Recurse": 3, - "subdirectories": 2, - "END_OF_HELP": 2, - "VMS": 2, - "vd": 2, - "Term": 6, - "ANSIColor": 8, - "black": 3, - "on_yellow": 3, - "bold": 5, - "green": 3, - "yellow": 3, - "printing": 2, - "qr/": 13, - "last_output_line": 6, - "any_output": 10, - "keep_context": 8, - "@before": 16, - "before_starts_at_line": 10, - "after": 18, - "number": 3, - "still": 4, - "res": 59, - "next_text": 8, - "has_lines": 4, - "scalar": 2, - "m/": 4, - "regex/": 9, - "next": 9, - "print_match_or_context": 13, - "elsif": 10, - "last": 17, - "max": 12, - "nmatches": 61, - "show_filename": 35, - "context_overall_output_count": 6, - "print_blank_line": 2, - "is_binary": 4, - "search_resource": 7, - "is_match": 7, - "starting_line_no": 1, - "match_start": 5, - "match_end": 3, - "Prints": 4, - "out": 2, - "context": 1, - "around": 5, - "match.": 3, - "opts": 2, - "array": 7, - "line_no": 12, - "show_column": 4, - "display_filename": 8, - "colored": 6, - "print_first_filename": 2, - "sep": 8, - "output_func": 8, - "print_separator": 2, - "print_filename": 2, - "display_line_no": 4, - "print_line_no": 2, - "regex/go": 2, - "regex/Term": 2, - "substr": 2, - "/eg": 2, - "z/": 2, - "K/": 2, - "z//": 2, - "print_column_no": 2, - "scope": 4, - "TOTAL_COUNT_SCOPE": 2, - "total_count": 10, - "get_total_count": 4, - "reset_total_count": 4, - "search_and_list": 8, - "Optimized": 1, - "version": 2, - "lines.": 3, - "ors": 11, - "record": 3, - "show_total": 6, - "print_count": 4, - "print_count0": 2, - "filetypes_supported_set": 9, - "True/False": 1, - "are": 24, - "print_files": 4, - "iter": 23, - "returned": 2, - "iterator": 3, - "<$regex>": 1, - "<$one>": 1, - "stop": 1, - "first.": 1, - "<$ors>": 1, - "<\"\\n\">": 1, - "defines": 1, - "what": 14, - "filename.": 1, - "print_files_with_matches": 4, - "where": 3, - "was": 2, - "repo": 18, - "Repository": 11, - "next_resource": 6, - "print_matches": 4, - "tarballs_work": 4, - ".tar": 2, - ".gz": 2, - "Tar": 4, - "XXX": 4, - "Error": 2, - "checking": 2, - "needs_line_scan": 14, - "reset": 5, - "filetype_setup": 4, - "Minor": 1, - "housekeeping": 1, - "before": 1, - "go": 1, - "expand_filenames": 7, - "reference": 8, - "expanded": 3, - "globs": 1, - "EXPAND_FILENAMES_SCOPE": 4, - "argv": 12, - "attr": 6, - "foreach": 4, - "pattern": 10, - "@results": 14, - "didn": 2, - "ve": 2, - "tried": 2, - "load": 2, - "GetAttributes": 2, - "end": 9, - "attributes": 4, - "got": 2, - "get_starting_points": 4, - "starting": 2, - "@what": 14, - "reslash": 4, - "Assume": 2, - "current": 5, - "start_point": 4, - "_match": 8, - "target": 6, - "invert_flag": 4, - "get_iterator": 4, - "Return": 2, - "starting_point": 10, - "g_regex": 4, - "file_filter": 12, - "g_regex/": 6, - "Maybe": 2, - "is_interesting": 4, - "descend_filter": 11, - "error_handler": 5, - "msg": 4, - "follow_symlinks": 6, - "set_up_pager": 3, - "Unable": 2, - "going": 1, - "pipe.": 1, - "exit_from_ack": 5, - "Exit": 1, - "application": 10, - "correct": 1, - "code.": 2, - "otherwise": 2, - "handed": 1, - "in": 29, - "argument.": 1, - "rc": 11, - "LICENSE": 3, - "Copyright": 2, - "Andy": 2, - "Lester.": 2, - "free": 3, - "software": 3, - "redistribute": 3, - "and/or": 3, - "modify": 3, - "terms": 3, - "Artistic": 2, - "License": 2, - "v2.0.": 2, - "End": 3, - "SHEBANG#!#! perl": 4, - "examples/benchmarks/fib.pl": 1, - "Fibonacci": 2, - "Benchmark": 1, - "DESCRIPTION": 4, - "Calculates": 1, - "Number": 1, - "": 1, - "unspecified": 1, - "fib": 4, - "N": 2, - "SEE": 3, - "ALSO": 3, - "": 1, - "SHEBANG#!perl": 5, - "MAIN": 1, - "main": 3, - "env_is_usable": 3, - "th": 1, - "pt": 1, - "env": 76, - "@keys": 2, - "ACK_/": 1, - "@ENV": 1, - "load_colors": 1, - "ACK_SWITCHES": 1, - "Unbuffer": 1, - "mode": 1, - "build_regex": 3, - "nargs": 2, - "Resource": 5, - "file_matching": 2, - "check_regex": 2, - "like": 12, - "finder": 1, - "options": 7, - "FILE...": 1, - "DIRECTORY...": 1, - "designed": 1, - "replacement": 1, - "uses": 2, - "": 5, - "searches": 1, - "named": 3, - "input": 9, - "FILEs": 1, - "standard": 1, - "given": 10, - "PATTERN.": 1, - "By": 2, - "prints": 2, - "also": 7, - "would": 3, - "actually": 1, - "let": 1, - "take": 5, - "advantage": 1, - ".wango": 1, - "won": 1, - "throw": 1, - "away": 1, - "because": 3, - "times": 2, - "symlinks": 1, - "than": 5, - "whatever": 1, - "were": 1, - "specified": 3, - "line.": 4, - "default.": 2, - "item": 42, - "": 11, - "paths": 3, - "included": 1, - "search.": 1, - "entire": 2, - "matched": 1, - "against": 1, - "shell": 4, - "glob.": 1, - "<-i>": 5, - "<-w>": 2, - "<-v>": 3, - "<-Q>": 4, - "apply": 2, - "relative": 1, - "convenience": 1, - "shortcut": 2, - "<-f>": 6, - "<--group>": 2, - "<--nogroup>": 2, - "groups": 1, - "with.": 1, - "interactively.": 1, - "result": 1, - "per": 1, - "grep.": 2, - "redirected.": 1, - "<-H>": 1, - "<--with-filename>": 1, - "<-h>": 1, - "<--no-filename>": 1, - "Suppress": 1, - "prefixing": 1, - "multiple": 5, - "searched.": 1, - "<--help>": 1, - "short": 1, - "help": 2, - "statement.": 1, - "<--ignore-case>": 1, - "Ignore": 3, - "case": 3, - "strings.": 1, - "applies": 3, - "regexes": 3, - "<-g>": 5, - "<-G>": 3, - "options.": 4, - "": 2, - "etc": 2, - "May": 2, - "directories.": 2, - "mason": 1, - "users": 4, - "may": 3, - "wish": 1, - "include": 1, - "<--ignore-dir=data>": 1, - "<--noignore-dir>": 1, - "allows": 2, - "normally": 1, - "perhaps": 1, - "research": 1, - "<.svn/props>": 1, - "always": 5, - "simple": 2, - "name.": 1, - "Nested": 1, - "": 1, - "NOT": 1, - "supported.": 1, - "You": 3, - "need": 3, - "specify": 1, - "<--ignore-dir=foo>": 1, - "then": 3, - "foo": 6, - "taken": 1, - "account": 1, - "explicitly": 1, - "": 2, - "file.": 2, - "Multiple": 1, - "<--line>": 1, - "comma": 1, - "separated": 2, - "<--line=3,5,7>": 1, - "<--line=4-7>": 1, - "works.": 1, - "ascending": 1, - "order": 2, - "matter": 1, - "<-l>": 2, - "<--files-with-matches>": 1, - "instead": 4, - "text.": 1, - "<-L>": 1, - "<--files-without-matches>": 1, - "": 2, - "equivalent": 2, - "specifying": 1, - "Specify": 1, - "explicitly.": 1, - "helpful": 2, - "don": 2, - "": 1, - "via": 1, - "": 4, - "": 4, - "environment": 2, - "variables.": 1, - "Using": 3, - "suppress": 3, - "grouping": 3, - "coloring": 3, - "piping": 3, - "does.": 2, - "<--passthru>": 1, - "whether": 1, - "they": 1, - "expression.": 1, - "Highlighting": 1, - "work": 1, - "though": 1, - "so": 3, - "highlight": 1, - "seeing": 1, - "tail": 1, - "/access.log": 1, - "<--print0>": 1, - "works": 1, - "conjunction": 1, - "null": 1, - "byte": 1, - "usual": 1, - "newline.": 1, - "dealing": 1, - "contain": 2, - "whitespace": 1, - "e.g.": 1, - "html": 1, - "xargs": 2, - "rm": 1, - "<--literal>": 1, - "Quote": 1, - "metacharacters": 2, - "treated": 1, - "literal.": 1, - "<-r>": 1, - "<-R>": 1, - "<--recurse>": 1, - "just": 2, - "here": 2, - "compatibility": 2, - "turning": 1, - "<--no-recurse>": 1, - "off.": 1, - "<--smart-case>": 1, - "<--no-smart-case>": 1, - "strings": 1, - "contains": 1, - "uppercase": 1, - "characters.": 1, - "similar": 1, - "": 1, - "vim.": 1, - "overrides": 2, - "option.": 1, - "<--sort-files>": 1, - "Sorts": 1, - "Use": 6, - "your": 13, - "listings": 1, - "deterministic": 1, - "runs": 1, - "<--show-types>": 1, - "Outputs": 1, - "associates": 1, - "Works": 1, - "<--thpppt>": 1, - "Display": 1, - "important": 1, - "Bill": 1, - "Cat": 1, - "logo.": 1, - "Note": 4, - "exact": 1, - "spelling": 1, - "<--thpppppt>": 1, - "important.": 1, - "make": 3, - "perl": 8, - "php": 2, - "python": 1, - "looks": 1, - "location.": 1, - "variable": 1, - "specifies": 1, - "placed": 1, - "front": 1, - "explicit": 1, - "Specifies": 4, - "recognized": 1, - "clear": 2, - "dark": 1, - "underline": 1, - "underscore": 2, - "blink": 1, - "reverse": 1, - "concealed": 1, - "red": 1, - "blue": 1, - "magenta": 1, - "on_black": 1, - "on_red": 1, - "on_green": 1, - "on_blue": 1, - "on_magenta": 1, - "on_cyan": 1, - "on_white.": 1, - "Case": 1, - "significant.": 1, - "Underline": 1, - "reset.": 1, - "alone": 1, - "sets": 4, - "foreground": 1, - "on_color": 1, - "background": 1, - "color.": 2, - "<--color-filename>": 1, - "printed": 1, - "<--color>": 1, - "mode.": 1, - "<--color-lineno>": 1, - "See": 1, - "": 1, - "specifications.": 1, - "such": 5, - "": 1, - "": 1, - "": 1, - "send": 1, - "output.": 1, - "except": 1, - "assume": 1, - "support": 2, - "both": 1, - "understands": 1, - "sequences.": 1, - "never": 1, - "back": 3, - "ACK": 2, - "OTHER": 1, - "TOOLS": 1, - "Vim": 3, - "integration": 3, - "integrates": 1, - "easily": 2, - "editor.": 1, - "<.vimrc>": 1, - "grepprg": 1, - "That": 3, - "examples": 1, - "<-a>": 1, - "flags.": 1, - "Now": 1, - "step": 1, - "Dumper": 1, - "perllib": 1, - "Emacs": 1, - "Phil": 1, - "Jackson": 1, - "put": 1, - "together": 1, - "an": 11, - "": 1, - "extension": 1, - "": 1, - "TextMate": 2, - "Pedro": 1, - "Melo": 1, - "who": 1, - "writes": 1, - "Shell": 2, - "Code": 1, - "greater": 1, - "normal": 1, - "code": 7, - "<$?=256>": 1, - "": 1, - "backticks.": 1, - "errors": 1, - "used.": 1, - "at": 3, - "least": 1, - "returned.": 1, - "DEBUGGING": 1, - "PROBLEMS": 1, - "gives": 2, - "re": 3, - "expecting": 1, - "forgotten": 1, - "<--noenv>": 1, - "<.ackrc>": 1, - "remember.": 1, - "Put": 1, - "definitions": 1, - "it.": 1, - "smart": 1, - "too.": 1, - "there.": 1, - "working": 1, - "big": 1, - "codesets": 1, - "more": 2, - "create": 2, - "tree": 2, - "ideal": 1, - "sending": 1, - "": 1, - "prefer": 1, - "doubt": 1, - "day": 1, - "find": 1, - "trouble": 1, - "spots": 1, - "website": 1, - "visitor.": 1, - "had": 1, - "problem": 1, - "loading": 1, - "": 1, - "took": 1, - "access": 2, - "log": 3, - "scanned": 1, - "twice.": 1, - "aa.bb.cc.dd": 1, - "/path/to/access.log": 1, - "B5": 1, - "troublesome.gif": 1, - "first": 1, - "finds": 2, - "Apache": 2, - "IP.": 1, - "second": 1, - "troublesome": 1, - "GIF": 1, - "shows": 1, - "previous": 1, - "five": 1, - "case.": 1, - "Share": 1, - "knowledge": 1, - "Join": 1, - "mailing": 1, - "list.": 1, - "Send": 1, - "me": 1, - "tips": 1, - "here.": 1, - "FAQ": 1, - "Why": 2, - "isn": 1, - "doesn": 8, - "behavior": 3, - "driven": 1, - "filetype.": 1, - "": 1, - "kind": 1, - "ignores": 1, - "switch": 1, - "you.": 1, - "source": 2, - "compiled": 1, - "object": 6, - "control": 1, - "metadata": 1, - "wastes": 1, - "lot": 1, - "time": 3, - "those": 2, - "well": 2, - "returning": 1, - "things": 1, - "great": 1, - "did": 1, - "replace": 3, - "read": 6, - "only.": 1, - "has": 2, - "perfectly": 1, - "good": 2, - "way": 2, - "using": 2, - "<-p>": 1, - "<-n>": 1, - "switches.": 1, - "certainly": 2, - "select": 1, - "update.": 1, - "change": 1, - "PHP": 1, - "Unix": 1, - "Can": 1, - "recognize": 1, - "<.xyz>": 1, - "already": 2, - "program/package": 1, - "called": 3, - "ack.": 2, - "Yes": 1, - "know.": 1, - "nothing": 1, - "suggest": 1, - "symlink": 1, - "points": 1, - "": 1, - "crucial": 1, - "benefits": 1, - "having": 1, - "Regan": 1, - "Slaven": 1, - "ReziE": 1, - "<0x107>": 1, - "Mark": 1, - "Stosberg": 1, - "David": 1, - "Alan": 1, - "Pisoni": 1, - "Adriano": 1, - "Ferreira": 1, - "James": 1, - "Keenan": 1, - "Leland": 1, - "Johnson": 1, - "Ricardo": 1, - "Signes": 1, - "Pete": 1, - "Krawczyk.": 1, - "files_defaults": 3, - "skip_dirs": 3, - "CORE": 3, - "curdir": 1, - "updir": 1, - "__PACKAGE__": 1, - "parms": 15, - "@queue": 8, - "_setup": 2, - "fullpath": 12, - "splice": 2, - "local": 5, - "wantarray": 3, - "_candidate_files": 2, - "sort_standard": 2, - "cmp": 2, - "sort_reverse": 1, - "@parts": 3, - "passed_parms": 6, - "copy": 4, - "parm": 1, - "hash": 11, - "badkey": 1, - "caller": 2, - "start": 6, - "dh": 4, - "opendir": 1, - "@newfiles": 5, - "sort_sub": 4, - "readdir": 1, - "has_stat": 3, - "catdir": 3, - "closedir": 1, - "": 1, - "these": 1, - "updated": 1, - "update": 1, - "message": 1, - "bak": 1, - "core": 1, - "swp": 1, - "min": 3, - "js": 1, - "1": 1, - "str": 12, - "regex_is_lc": 2, - "S": 1, - ".*//": 1, - "_my_program": 3, - "Basename": 2, - "FAIL": 12, - "Carp": 11, - "confess": 2, - "@ISA": 2, - "class": 8, - "self": 141, - "bless": 7, - "could_be_binary": 4, - "opened": 1, - "id": 6, - "*STDIN": 2, - "size": 5, - "_000": 1, - "buffer": 9, - "sysread": 1, - "regex/m": 1, - "seek": 4, - "readline": 1, - "nexted": 3, - "CGI": 5, - "Fast": 3, - "XML": 2, - "Hash": 11, - "XS": 2, - "FindBin": 1, - "Bin": 3, - "#use": 1, - "lib": 2, - "_stop": 4, - "request": 11, - "SIG": 3, - "nginx": 2, - "external": 2, - "fcgi": 2, - "Ext_Request": 1, - "FCGI": 1, - "Request": 11, - "*STDERR": 1, - "int": 2, - "ARGV": 2, - "conv": 2, - "use_attr": 1, - "indent": 1, - "xml_decl": 1, - "tmpl_path": 2, - "tmpl": 5, - "data": 3, - "nick": 1, - "parent": 5, - "third_party": 1, - "artist_name": 2, - "venue": 2, - "event": 2, - "date": 2, - "zA": 1, - "Z0": 1, - "Content": 2, - "application/xml": 1, - "charset": 2, - "utf": 2, - "hash2xml": 1, - "text/html": 1, - "nError": 1, - "M": 1, - "system": 1, - "Foo": 11, - "Bar": 1, - "@array": 1, - "Plack": 25, - "_001": 1, - "HTTP": 16, - "Headers": 8, - "MultiValue": 9, - "Body": 2, - "Upload": 2, - "TempBuffer": 2, - "URI": 11, - "Escape": 6, - "_deprecated": 8, - "alt": 1, - "method": 7, - "carp": 2, - "croak": 3, - "required": 2, - "address": 2, - "REMOTE_ADDR": 1, - "remote_host": 2, - "REMOTE_HOST": 1, - "protocol": 1, - "SERVER_PROTOCOL": 1, - "REQUEST_METHOD": 1, - "port": 1, - "SERVER_PORT": 2, - "REMOTE_USER": 1, - "request_uri": 1, - "REQUEST_URI": 2, - "path_info": 4, - "PATH_INFO": 3, - "script_name": 1, - "SCRIPT_NAME": 2, - "scheme": 3, - "secure": 2, - "body": 30, - "content_length": 4, - "CONTENT_LENGTH": 3, - "content_type": 5, - "CONTENT_TYPE": 2, - "session": 1, - "session_options": 1, - "logger": 1, - "cookies": 9, - "HTTP_COOKIE": 3, - "@pairs": 2, - "pair": 4, - "uri_unescape": 1, - "query_parameters": 3, - "uri": 11, - "query_form": 2, - "content": 8, - "_parse_request_body": 4, - "cl": 10, - "raw_body": 1, - "headers": 56, - "field": 2, - "HTTPS": 1, - "_//": 1, - "CONTENT": 1, - "COOKIE": 1, - "content_encoding": 5, - "referer": 3, - "user_agent": 3, - "body_parameters": 3, - "parameters": 8, - "query": 4, - "flatten": 3, - "uploads": 5, - "hostname": 1, - "url_scheme": 1, - "params": 1, - "query_params": 1, - "body_params": 1, - "cookie": 6, - "param": 8, - "get_all": 2, - "upload": 13, - "raw_uri": 1, - "base": 10, - "path_query": 1, - "_uri_base": 3, - "path_escape_class": 2, - "uri_escape": 3, - "QUERY_STRING": 3, - "canonical": 2, - "HTTP_HOST": 1, - "SERVER_NAME": 1, - "new_response": 4, - "Response": 16, - "ct": 3, - "cleanup": 1, - "spin": 2, - "chunk": 4, - "length": 1, - "rewind": 1, - "from_mixed": 2, - "@uploads": 3, - "@obj": 3, - "_make_upload": 2, - "__END__": 2, - "Portable": 2, - "PSGI": 6, - "app_or_middleware": 1, - "req": 28, - "finalize": 5, - "": 2, - "provides": 1, - "consistent": 1, - "API": 2, - "objects": 2, - "across": 1, - "web": 5, - "server": 1, - "environments.": 1, - "CAVEAT": 1, - "module": 2, - "intended": 1, - "middleware": 1, - "developers": 3, - "framework": 2, - "rather": 2, - "Writing": 1, - "directly": 1, - "possible": 1, - "recommended": 1, - "yet": 1, - "too": 1, - "low": 1, - "level.": 1, - "encouraged": 1, - "frameworks": 2, - "": 1, - "modules": 1, - "": 1, - "provide": 1, - "higher": 1, - "level": 1, - "top": 1, - "PSGI.": 1, - "METHODS": 2, - "Some": 1, - "methods": 3, - "earlier": 1, - "versions": 1, - "deprecated": 1, - "Take": 1, - "": 1, - "Unless": 1, - "noted": 1, - "": 1, - "passing": 1, - "values": 5, - "accessor": 1, - "debug": 1, - "set.": 1, - "": 2, - "request.": 1, - "uploads.": 2, - "": 2, - "": 1, - "objects.": 1, - "Shortcut": 6, - "content_encoding.": 1, - "content_length.": 1, - "content_type.": 1, - "header.": 2, - "referer.": 1, - "user_agent.": 1, - "GET": 1, - "POST": 1, - "CGI.pm": 2, - "compatible": 1, - "method.": 1, - "alternative": 1, - "accessing": 1, - "parameters.": 3, - "Unlike": 1, - "": 1, - "allow": 1, - "setting": 1, - "modifying": 1, - "@values": 1, - "@params": 1, - "convenient": 1, - "@fields": 1, - "Creates": 2, - "": 3, - "object.": 4, - "Handy": 1, - "remove": 2, - "dependency": 1, - "easy": 1, - "subclassing": 1, - "duck": 1, - "typing": 1, - "overriding": 1, - "generation": 1, - "middlewares.": 1, - "Parameters": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "store": 1, - "means": 2, - "plain": 2, - "": 1, - "scalars": 1, - "references": 1, - "ARRAY": 1, - "parse": 1, - "twice": 1, - "efficiency.": 1, - "DISPATCHING": 1, - "wants": 1, - "dispatch": 1, - "route": 1, - "actions": 1, - "based": 1, - "sure": 1, - "": 1, - "virtual": 1, - "regardless": 1, - "how": 1, - "mounted.": 1, - "hosted": 1, - "mod_perl": 1, - "scripts": 1, - "multiplexed": 1, - "tools": 1, - "": 1, - "idea": 1, - "subclass": 1, - "define": 1, - "uri_for": 2, - "args": 3, - "So": 1, - "say": 1, - "link": 1, - "signoff": 1, - "": 1, - "empty.": 1, - "older": 1, - "call": 1, - "instead.": 1, - "Cookie": 2, - "handling": 1, - "simplified": 1, - "string": 5, - "encoding": 2, - "decoding": 1, - "totally": 1, - "up": 1, - "framework.": 1, - "Also": 1, - "": 1, - "now": 1, - "": 1, - "Simple": 1, - "longer": 1, - "have": 2, - "write": 1, - "wacky": 1, - "simply": 1, - "AUTHORS": 1, - "Tatsuhiko": 2, - "Miyagawa": 2, - "Kazuhiro": 1, - "Osawa": 1, - "Tokuhiro": 2, - "Matsuno": 2, - "": 1, - "": 1, - "library": 1, - "same": 1, - "Util": 3, - "Accessor": 1, - "status": 17, - "Scalar": 2, - "location": 4, - "redirect": 1, - "url": 2, - "clone": 1, - "_finalize_cookies": 2, - "/chr": 1, - "/ge": 1, - "LWS": 1, - "single": 1, - "SP": 1, - "//g": 1, - "CR": 1, - "LF": 1, - "since": 1, - "char": 1, - "invalid": 1, - "header_field_names": 1, - "_body": 2, - "blessed": 1, - "overload": 1, - "Method": 1, - "_bake_cookie": 2, - "push_header": 1, - "@cookie": 7, - "domain": 3, - "_date": 2, - "expires": 7, - "httponly": 1, - "@MON": 1, - "Jan": 1, - "Feb": 1, - "Mar": 1, - "Apr": 1, - "Jun": 1, - "Jul": 1, - "Aug": 1, - "Sep": 1, - "Oct": 1, - "Nov": 1, - "Dec": 1, - "@WDAY": 1, - "Sun": 1, - "Mon": 1, - "Tue": 1, - "Wed": 1, - "Thu": 1, - "Fri": 1, - "Sat": 1, - "sec": 2, - "hour": 2, - "mday": 2, - "mon": 2, - "year": 3, - "wday": 2, - "gmtime": 1, - "sprintf": 1, - "WDAY": 1, - "MON": 1, - "response": 5, - "psgi_handler": 1, - "API.": 1, - "over": 1, - "Sets": 2, - "gets": 2, - "": 1, - "alias.": 2, - "response.": 1, - "Setter": 2, - "either": 2, - "headers.": 1, - "body_str": 1, - "io": 1, - "body.": 1, - "IO": 1, - "Handle": 1, - "": 1, - "X": 2, - "text/plain": 1, - "gzip": 1, - "normalize": 1, - "string.": 1, - "Users": 1, - "responsible": 1, - "properly": 1, - "": 1, - "names": 1, - "their": 1, - "corresponding": 1, - "": 2, - "everything": 1, - "": 1, - "": 2, - "": 1, - "": 1, - "": 1, - "integer": 1, - "epoch": 1, - "": 1, - "convert": 1, - "formats": 1, - "<+3M>": 1, - "reference.": 1, - "AUTHOR": 1 - }, - "Perl6": { - "token": 6, - "pod_formatting_code": 1, - "{": 29, - "": 1, - "<[A..Z]>": 1, - "*POD_IN_FORMATTINGCODE": 1, - "}": 27, - "": 1, - "[": 1, - "": 1, - "#": 13, - "N*": 1, - "role": 10, - "q": 5, - "stopper": 2, - "MAIN": 1, - "quote": 1, - ")": 19, - "backslash": 3, - "sym": 3, - "<\\\\>": 1, - "": 1, - "": 1, - "": 1, - "": 1, - ".": 1, - "method": 2, - "tweak_q": 1, - "(": 16, - "v": 2, - "self.panic": 2, - "tweak_qq": 1, - "qq": 5, - "does": 7, - "b1": 1, - "c1": 1, - "s1": 1, - "a1": 1, - "h1": 1, - "f1": 1, - "Too": 2, - "late": 2, - "for": 2, - "SHEBANG#!perl": 1, - "use": 1, - "v6": 1, - ";": 19, - "my": 10, - "string": 7, - "if": 1, - "eq": 1, - "say": 10, - "regex": 2, - "http": 1, - "-": 3, - "verb": 1, - "|": 9, - "multi": 2, - "line": 5, - "comment": 2, - "I": 1, - "there": 1, - "m": 2, - "even": 1, - "specialer": 1, - "nesting": 1, - "work": 1, - "<": 3, - "trying": 1, - "mixed": 1, - "delimiters": 1, - "": 1, - "arbitrary": 2, - "delimiter": 2, - "Hooray": 1, - "": 1, - "with": 9, - "whitespace": 1, - "<<": 1, - "more": 1, - "strings": 1, - "%": 1, - "hash": 1, - "Hash.new": 1, - "begin": 1, - "pod": 1, - "Here": 1, - "t": 2, - "highlighted": 1, - "table": 1, - "Of": 1, - "things": 1, - "A": 3, - "single": 3, - "declarator": 7, - "a": 8, - "keyword": 7, - "like": 7, - "Another": 2, - "block": 2, - "brace": 1, - "More": 2, - "blocks": 2, - "don": 2, - "x": 2, - "foo": 3, - "Rob": 1, - "food": 1, - "match": 1, - "sub": 1, - "something": 1, - "Str": 1, - "D": 1, - "value": 1, - "...": 1, - "s": 1, - "some": 2, - "stuff": 1, - "chars": 1, - "/": 1, - "": 1, - "": 1, - "roleq": 1 - }, - "PHP": { - "<": 11, - "php": 12, - "namespace": 28, - "Symfony": 24, - "Component": 24, - "Console": 17, - ";": 1383, - "use": 23, - "Input": 6, - "InputInterface": 4, - "ArgvInput": 2, - "ArrayInput": 3, - "InputDefinition": 2, - "InputOption": 15, - "InputArgument": 3, - "Output": 5, - "OutputInterface": 6, - "ConsoleOutput": 2, - "ConsoleOutputInterface": 2, - "Command": 6, - "HelpCommand": 2, - "ListCommand": 2, - "Helper": 3, - "HelperSet": 3, - "FormatterHelper": 2, - "DialogHelper": 2, - "class": 21, - "Application": 3, - "{": 974, - "private": 24, - "commands": 39, - "wantHelps": 4, - "false": 154, - "runningCommand": 5, - "name": 181, - "version": 8, - "catchExceptions": 4, - "autoExit": 4, - "definition": 3, - "helperSet": 6, - "public": 202, - "function": 205, - "__construct": 8, - "(": 2416, - ")": 2417, - "this": 928, - "-": 1271, - "true": 133, - "array": 296, - "getDefaultHelperSet": 2, - "getDefaultInputDefinition": 2, - "foreach": 94, - "getDefaultCommands": 2, - "as": 96, - "command": 41, - "add": 7, - "}": 972, - "run": 4, - "input": 20, - "null": 164, - "output": 60, - "if": 450, - "new": 74, - "try": 3, - "statusCode": 14, - "doRun": 2, - "catch": 3, - "Exception": 1, - "e": 18, - "throw": 19, - "instanceof": 8, - "renderException": 3, - "getErrorOutput": 2, - "else": 70, - "getCode": 1, - "is_numeric": 7, - "&&": 119, - "exit": 7, - "return": 305, - "getCommandName": 2, - "hasParameterOption": 7, - "setDecorated": 2, - "elseif": 31, - "setInteractive": 2, - "function_exists": 4, - "getHelperSet": 3, - "has": 7, - "inputStream": 2, - "get": 12, - "getInputStream": 1, - "posix_isatty": 1, - "setVerbosity": 2, - "VERBOSITY_QUIET": 1, - "VERBOSITY_VERBOSE": 2, - "writeln": 13, - "getLongVersion": 3, - "find": 17, - "setHelperSet": 1, - "getDefinition": 2, - "getHelp": 2, - "messages": 16, - "sprintf": 27, - "getOptions": 1, - "option": 5, - "[": 672, - "]": 672, - ".": 169, - "getName": 14, - "getShortcut": 2, - "getDescription": 3, - "implode": 8, - "PHP_EOL": 3, - "setCatchExceptions": 1, - "boolean": 4, - "Boolean": 4, - "setAutoExit": 1, - "setName": 1, - "getVersion": 3, - "setVersion": 1, - "register": 1, - "addCommands": 1, - "setApplication": 2, - "isEnabled": 1, - "getAliases": 3, - "alias": 87, - "isset": 101, - "InvalidArgumentException": 9, - "helpCommand": 3, - "setCommand": 1, - "getNamespaces": 3, - "namespaces": 4, - "extractNamespace": 7, - "array_values": 5, - "array_unique": 4, - "array_filter": 2, - "findNamespace": 4, - "allNamespaces": 3, - "n": 12, - "explode": 9, - "found": 4, - "i": 36, - "part": 10, - "abbrevs": 31, - "static": 6, - "getAbbreviations": 4, - "array_map": 2, - "p": 3, - "message": 12, - "<=>": 3, - "alternatives": 10, - "findAlternativeNamespace": 2, - "count": 32, - "getAbbreviationSuggestions": 4, - "searchName": 13, - "pos": 3, - "strrpos": 2, - "substr": 6, - "namespace.substr": 1, - "suggestions": 2, - "aliases": 8, - "findAlternativeCommands": 2, - "all": 11, - "substr_count": 1, - "+": 12, - "names": 3, - "for": 8, - "len": 11, - "strlen": 14, - "abbrev": 4, - "asText": 1, - "raw": 2, - "width": 7, - "sortCommands": 4, - "space": 5, - "space.": 1, - "asXml": 2, - "asDom": 2, - "dom": 12, - "DOMDocument": 2, - "formatOutput": 1, - "appendChild": 10, - "xml": 5, - "createElement": 6, - "commandsXML": 3, - "setAttribute": 2, - "namespacesXML": 3, - "namespaceArrayXML": 4, - "continue": 7, - "commandXML": 3, - "createTextNode": 1, - "node": 42, - "getElementsByTagName": 1, - "item": 9, - "importNode": 3, - "saveXml": 1, - "string": 5, - "encoding": 2, - "mb_detect_encoding": 1, - "mb_strlen": 1, - "do": 2, - "title": 3, - "get_class": 4, - "getTerminalWidth": 3, - "PHP_INT_MAX": 1, - "lines": 3, - "preg_split": 1, - "getMessage": 1, - "line": 10, - "str_split": 1, - "max": 2, - "str_repeat": 2, - "title.str_repeat": 1, - "line.str_repeat": 1, - "message.": 1, - "getVerbosity": 1, - "trace": 12, - "getTrace": 1, - "array_unshift": 2, - "getFile": 2, - "getLine": 2, - "type": 62, - "file": 3, - "while": 6, - "getPrevious": 1, - "getSynopsis": 1, - "protected": 59, - "defined": 5, - "ansicon": 4, - "getenv": 2, - "preg_replace": 4, - "preg_match": 6, - "getSttyColumns": 3, - "match": 4, - "getTerminalHeight": 1, - "trim": 3, - "getFirstArgument": 1, - "REQUIRED": 1, - "VALUE_NONE": 7, - "descriptorspec": 2, - "process": 10, - "proc_open": 1, - "pipes": 4, - "is_resource": 1, - "info": 5, - "stream_get_contents": 1, - "fclose": 2, - "proc_close": 1, - "namespacedCommands": 5, - "key": 64, - "ksort": 2, - "&": 19, - "limit": 3, - "parts": 4, - "array_pop": 1, - "array_slice": 1, - "callback": 5, - "findAlternatives": 3, - "collection": 3, - "call_user_func": 2, - "lev": 6, - "levenshtein": 2, - "3": 1, - "strpos": 15, - "values": 53, - "/": 1, - "||": 52, - "value": 53, - "asort": 1, - "array_keys": 7, - "BrowserKit": 1, - "DomCrawler": 5, - "Crawler": 2, - "Link": 3, - "Form": 4, - "Process": 1, - "PhpProcess": 2, - "abstract": 2, - "Client": 1, - "history": 15, - "cookieJar": 9, - "server": 20, - "request": 76, - "response": 33, - "crawler": 7, - "insulated": 7, - "redirect": 6, - "followRedirects": 5, - "History": 2, - "CookieJar": 2, - "setServerParameters": 2, - "followRedirect": 4, - "insulate": 1, - "class_exists": 2, - "RuntimeException": 2, - "array_merge": 32, - "setServerParameter": 1, - "getServerParameter": 1, - "default": 9, - "getHistory": 1, - "getCookieJar": 1, - "getCrawler": 1, - "getResponse": 1, - "getRequest": 1, - "click": 1, - "link": 10, - "submit": 2, - "getMethod": 6, - "getUri": 8, - "form": 7, - "setValues": 2, - "getPhpValues": 2, - "getPhpFiles": 2, - "method": 31, - "uri": 23, - "parameters": 4, - "files": 7, - "content": 4, - "changeHistory": 4, - "getAbsoluteUri": 2, - "isEmpty": 2, - "current": 4, - "parse_url": 3, - "PHP_URL_HOST": 1, - "PHP_URL_SCHEME": 1, - "Request": 3, - "allValues": 1, - "filterRequest": 2, - "doRequestInProcess": 2, - "doRequest": 2, - "filterResponse": 2, - "updateFromResponse": 1, - "getHeader": 2, - "createCrawlerFromContent": 2, - "getContent": 2, - "getScript": 2, - "sys_get_temp_dir": 2, - "isSuccessful": 1, - "getOutput": 3, - "unserialize": 1, - "LogicException": 4, - "addContent": 1, - "back": 2, - "requestFromRequest": 4, - "forward": 2, - "reload": 1, - "empty": 96, - "restart": 1, - "clear": 2, - "currentUri": 7, - "path": 20, - "PHP_URL_PATH": 1, - "path.": 1, - "getParameters": 1, - "getFiles": 3, - "getServer": 1, - "": 3, - "CakePHP": 6, - "tm": 6, - "Rapid": 2, - "Development": 2, - "Framework": 2, - "http": 14, - "cakephp": 4, - "org": 10, - "Copyright": 5, - "2005": 4, - "2012": 4, - "Cake": 7, - "Software": 5, - "Foundation": 4, - "Inc": 4, - "cakefoundation": 4, - "Licensed": 2, - "under": 2, - "The": 4, - "MIT": 4, - "License": 4, - "Redistributions": 2, - "of": 10, - "must": 2, - "retain": 2, - "the": 11, - "above": 2, - "copyright": 5, - "notice": 2, - "Project": 2, - "package": 2, - "Controller": 4, - "since": 2, - "v": 17, - "0": 4, - "2": 2, - "9": 1, - "license": 6, - "www": 4, - "opensource": 2, - "licenses": 2, - "mit": 2, - "App": 20, - "uses": 46, - "CakeResponse": 2, - "Network": 1, - "ClassRegistry": 9, - "Utility": 6, - "ComponentCollection": 2, - "View": 9, - "CakeEvent": 13, - "Event": 6, - "CakeEventListener": 4, - "CakeEventManager": 5, - "controller": 3, - "organization": 1, - "business": 1, - "logic": 1, - "Provides": 1, - "basic": 1, - "functionality": 1, - "such": 1, - "rendering": 1, - "views": 1, - "inside": 1, - "layouts": 1, - "automatic": 1, - "model": 34, - "availability": 1, - "redirection": 2, - "callbacks": 4, - "and": 5, - "more": 1, - "Controllers": 2, - "should": 1, - "provide": 1, - "a": 11, - "number": 1, - "action": 7, - "methods": 5, - "These": 1, - "are": 5, - "on": 4, - "that": 2, - "not": 2, - "prefixed": 1, - "with": 5, - "_": 1, - "Each": 1, - "serves": 1, - "an": 1, - "endpoint": 1, - "performing": 2, - "specific": 1, - "resource": 1, - "or": 9, - "resources": 1, - "For": 2, - "example": 2, - "adding": 1, - "editing": 1, - "object": 14, - "listing": 1, - "set": 26, - "objects": 5, - "You": 2, - "can": 2, - "access": 1, - "using": 2, - "contains": 1, - "POST": 1, - "GET": 1, - "FILES": 1, - "*": 25, - "were": 1, - "request.": 1, - "After": 1, - "required": 2, - "actions": 2, - "controllers": 2, - "responsible": 1, - "creating": 1, - "response.": 2, - "This": 1, - "usually": 1, - "takes": 1, - "generated": 1, - "possibly": 1, - "to": 6, - "another": 1, - "action.": 1, - "In": 1, - "either": 1, - "case": 31, - "allows": 1, - "you": 1, - "manipulate": 1, - "aspects": 1, - "created": 8, - "by": 2, - "Dispatcher": 1, - "based": 2, - "routing.": 1, - "By": 1, - "conventional": 1, - "names.": 1, - "/posts/index": 1, - "maps": 1, - "PostsController": 1, - "index": 5, - "re": 1, - "map": 1, - "urls": 1, - "Router": 5, - "connect": 1, - "@package": 2, - "Cake.Controller": 1, - "@property": 8, - "AclComponent": 1, - "Acl": 1, - "AuthComponent": 1, - "Auth": 1, - "CookieComponent": 1, - "Cookie": 1, - "EmailComponent": 1, - "Email": 1, - "PaginatorComponent": 1, - "Paginator": 1, - "RequestHandlerComponent": 1, - "RequestHandler": 1, - "SecurityComponent": 1, - "Security": 1, - "SessionComponent": 1, - "Session": 1, - "@link": 2, - "//book.cakephp.org/2.0/en/controllers.html": 1, - "*/": 2, - "extends": 3, - "Object": 4, - "implements": 3, - "helpers": 1, - "_responseClass": 1, - "viewPath": 3, - "layoutPath": 1, - "viewVars": 3, - "view": 5, - "layout": 5, - "autoRender": 6, - "autoLayout": 2, - "Components": 7, - "components": 1, - "viewClass": 10, - "ext": 1, - "plugin": 31, - "cacheAction": 1, - "passedArgs": 2, - "scaffold": 2, - "modelClass": 25, - "modelKey": 2, - "validationErrors": 50, - "_mergeParent": 4, - "_eventManager": 12, - "Inflector": 12, - "singularize": 4, - "underscore": 3, - "childMethods": 2, - "get_class_methods": 2, - "parentMethods": 2, - "array_diff": 3, - "CakeRequest": 5, - "setRequest": 2, - "parent": 14, - "__isset": 2, - "switch": 6, - "is_array": 37, - "list": 29, - "pluginSplit": 12, - "loadModel": 3, - "__get": 2, - "params": 34, - "load": 3, - "settings": 2, - "__set": 1, - "camelize": 3, - "array_key_exists": 11, - "invokeAction": 1, - "ReflectionMethod": 2, - "_isPrivateAction": 2, - "PrivateActionException": 1, - "invokeArgs": 1, - "ReflectionException": 1, - "_getScaffold": 2, - "MissingActionException": 1, - "privateAction": 4, - "isPublic": 1, - "in_array": 26, - "prefixes": 4, - "prefix": 2, - "Scaffold": 1, - "_mergeControllerVars": 2, - "pluginController": 9, - "pluginDot": 4, - "mergeParent": 2, - "is_subclass_of": 3, - "pluginVars": 3, - "appVars": 6, - "merge": 12, - "_mergeVars": 5, - "get_class_vars": 2, - "_mergeUses": 3, - "implementedEvents": 2, - "constructClasses": 1, - "init": 4, - "getEventManager": 13, - "attach": 4, - "startupProcess": 1, - "dispatch": 11, - "shutdownProcess": 1, - "httpCodes": 3, - "code": 4, - "id": 82, - "MissingModelException": 1, - "url": 18, - "status": 15, - "extract": 9, - "EXTR_OVERWRITE": 3, - "event": 35, - "//TODO": 1, - "Remove": 1, - "following": 1, - "when": 1, - "events": 1, - "fully": 1, - "migrated": 1, - "break": 19, - "breakOn": 4, - "collectReturn": 1, - "isStopped": 4, - "result": 21, - "_parseBeforeRedirect": 2, - "session_write_close": 1, - "header": 3, - "is_string": 7, - "codes": 3, - "array_flip": 1, - "send": 1, - "_stop": 1, - "resp": 6, - "compact": 8, - "one": 19, - "two": 6, - "data": 187, - "array_combine": 2, - "setAction": 1, - "args": 5, - "func_get_args": 5, - "unset": 22, - "call_user_func_array": 3, - "validate": 9, - "errors": 9, - "validateErrors": 1, - "invalidFields": 2, - "render": 3, - "className": 27, - "models": 6, - "keys": 19, - "currentModel": 2, - "currentObject": 6, - "getObject": 1, - "is_a": 1, - "location": 1, - "body": 1, - "referer": 5, - "local": 2, - "disableCache": 2, - "flash": 1, - "pause": 2, - "postConditions": 1, - "op": 9, - "bool": 5, - "exclusive": 2, - "cond": 5, - "arrayOp": 2, - "fields": 60, - "field": 88, - "fieldOp": 11, - "strtoupper": 3, - "paginate": 3, - "scope": 2, - "whitelist": 14, - "beforeFilter": 1, - "beforeRender": 1, - "beforeRedirect": 1, - "afterFilter": 1, - "beforeScaffold": 2, - "_beforeScaffold": 1, - "afterScaffoldSave": 2, - "_afterScaffoldSave": 1, - "afterScaffoldSaveError": 2, - "_afterScaffoldSaveError": 1, - "scaffoldError": 2, - "_scaffoldError": 1, - "php_help": 1, - "arg": 1, - "t": 26, - "php_permission": 1, - "TRUE": 1, - "php_eval": 1, - "global": 2, - "theme_path": 5, - "theme_info": 3, - "conf": 2, - "old_theme_path": 2, - "drupal_get_path": 1, - "dirname": 1, - "filename": 1, - "ob_start": 1, - "print": 1, - "eval": 1, - "ob_get_contents": 1, - "ob_end_clean": 1, - "_php_filter_tips": 1, - "filter": 1, - "format": 3, - "long": 2, - "FALSE": 2, - "base_url": 1, - "php_filter_info": 1, - "filters": 2, - "Field": 9, - "FormField": 3, - "ArrayAccess": 1, - "button": 6, - "DOMNode": 3, - "initialize": 2, - "getFormNode": 1, - "getValues": 3, - "isDisabled": 2, - "FileFormField": 3, - "hasValue": 1, - "getValue": 2, - "qs": 4, - "http_build_query": 3, - "parse_str": 2, - "queryString": 2, - "sep": 1, - "sep.": 1, - "getRawUri": 1, - "getAttribute": 10, - "remove": 4, - "offsetExists": 1, - "offsetGet": 1, - "offsetSet": 1, - "offsetUnset": 1, - "setNode": 1, - "nodeName": 13, - "parentNode": 1, - "FormFieldRegistry": 2, - "document": 6, - "root": 4, - "xpath": 2, - "DOMXPath": 1, - "query": 102, - "hasAttribute": 1, - "InputFormField": 2, - "ChoiceFormField": 2, - "addChoice": 1, - "TextareaFormField": 1, - "base": 8, - "segments": 13, - "getSegments": 4, - "target": 20, - "array_shift": 5, - "self": 1, - "create": 13, - "k": 7, - "setValue": 1, - "walk": 3, - "registry": 4, - "m": 5, - "relational": 2, - "mapper": 2, - "DBO": 2, - "backed": 2, - "mapping": 1, - "database": 2, - "tables": 5, - "PHP": 1, - "versions": 1, - "5": 1, - "Model": 5, - "10": 1, - "Validation": 1, - "String": 5, - "Set": 9, - "BehaviorCollection": 2, - "ModelBehavior": 1, - "ConnectionManager": 2, - "Xml": 2, - "Automatically": 1, - "selects": 1, - "table": 21, - "pluralized": 1, - "lowercase": 1, - "User": 1, - "is": 1, - "have": 2, - "at": 1, - "least": 1, - "primary": 3, - "key.": 1, - "Cake.Model": 1, - "//book.cakephp.org/2.0/en/models.html": 1, - "useDbConfig": 7, - "useTable": 12, - "displayField": 4, - "schemaName": 1, - "primaryKey": 38, - "_schema": 11, - "validationDomain": 1, - "tablePrefix": 8, - "tableToModel": 4, - "cacheQueries": 1, - "belongsTo": 7, - "hasOne": 2, - "hasMany": 2, - "hasAndBelongsToMany": 24, - "actsAs": 2, - "Behaviors": 6, - "cacheSources": 7, - "findQueryType": 3, - "recursive": 9, - "order": 4, - "virtualFields": 8, - "_associationKeys": 2, - "_associations": 5, - "__backAssociation": 22, - "__backInnerAssociation": 1, - "__backOriginalAssociation": 1, - "__backContainableAssociation": 1, - "_insertID": 1, - "_sourceConfigured": 1, - "findMethods": 3, - "ds": 3, - "addObject": 2, - "parentClass": 3, - "get_parent_class": 1, - "tableize": 2, - "_createLinks": 3, - "__call": 1, - "dispatchMethod": 1, - "getDataSource": 15, - "relation": 7, - "assocKey": 13, - "dynamic": 2, - "isKeySet": 1, - "AppModel": 1, - "_constructLinkedModel": 2, - "schema": 11, - "hasField": 7, - "setDataSource": 2, - "property_exists": 3, - "bindModel": 1, - "reset": 6, - "assoc": 75, - "assocName": 6, - "unbindModel": 1, - "_generateAssociation": 2, - "dynamicWith": 3, - "sort": 1, - "setSource": 1, - "tableName": 4, - "db": 45, - "method_exists": 5, - "sources": 3, - "listSources": 1, - "strtolower": 1, - "MissingTableException": 1, - "is_object": 2, - "SimpleXMLElement": 1, - "_normalizeXmlData": 3, - "toArray": 1, - "reverse": 1, - "_setAliasData": 2, - "modelName": 3, - "fieldSet": 3, - "fieldName": 6, - "fieldValue": 7, - "deconstruct": 2, - "getAssociated": 4, - "getColumnType": 4, - "useNewDate": 2, - "dateFields": 5, - "timeFields": 2, - "date": 9, - "val": 27, - "columns": 5, - "str_replace": 3, - "describe": 1, - "getColumnTypes": 1, - "trigger_error": 1, - "__d": 1, - "E_USER_WARNING": 1, - "cols": 7, - "column": 10, - "startQuote": 4, - "endQuote": 4, - "checkVirtual": 3, - "isVirtualField": 3, - "hasMethod": 2, - "getVirtualField": 1, - "filterKey": 2, - "defaults": 6, - "properties": 4, - "read": 2, - "conditions": 41, - "saveField": 1, - "options": 85, - "save": 9, - "fieldList": 1, - "_whitelist": 4, - "keyPresentAndEmpty": 2, - "exists": 6, - "validates": 60, - "updateCol": 6, - "colType": 4, - "time": 3, - "strtotime": 1, - "joined": 5, - "x": 4, - "y": 2, - "success": 10, - "cache": 2, - "_prepareUpdateFields": 2, - "update": 2, - "fInfo": 4, - "isUUID": 5, - "j": 2, - "array_search": 1, - "uuid": 3, - "updateCounterCache": 6, - "_saveMulti": 2, - "_clearCache": 2, - "join": 22, - "joinModel": 8, - "keyInfo": 4, - "withModel": 4, - "pluginName": 1, - "dbMulti": 6, - "newData": 5, - "newValues": 8, - "newJoins": 7, - "primaryAdded": 3, - "idField": 3, - "row": 17, - "keepExisting": 3, - "associationForeignKey": 5, - "links": 4, - "oldLinks": 4, - "delete": 9, - "oldJoin": 4, - "insertMulti": 1, - "foreignKey": 11, - "fkQuoted": 3, - "escapeField": 6, - "intval": 4, - "updateAll": 3, - "foreignKeys": 3, - "included": 3, - "array_intersect": 1, - "old": 2, - "saveAll": 1, - "numeric": 1, - "validateMany": 4, - "saveMany": 3, - "validateAssociated": 5, - "saveAssociated": 5, - "transactionBegun": 4, - "begin": 2, - "record": 10, - "saved": 18, - "commit": 2, - "rollback": 2, - "associations": 9, - "association": 47, - "notEmpty": 4, - "_return": 3, - "recordData": 2, - "cascade": 10, - "_deleteDependent": 3, - "_deleteLinks": 3, - "_collectForeignKeys": 2, - "savedAssociatons": 3, - "deleteAll": 2, - "records": 6, - "ids": 8, - "_id": 2, - "getID": 2, - "hasAny": 1, - "buildQuery": 2, - "is_null": 1, - "results": 22, - "resetAssociations": 3, - "_filterResults": 2, - "ucfirst": 2, - "modParams": 2, - "_findFirst": 1, - "state": 15, - "_findCount": 1, - "calculate": 2, - "expression": 1, - "_findList": 1, - "tokenize": 1, - "lst": 4, - "combine": 1, - "_findNeighbors": 1, - "prevVal": 2, - "return2": 6, - "_findThreaded": 1, - "nest": 1, - "isUnique": 1, - "is_bool": 1, - "sql": 1, - "SHEBANG#!php": 3, - "echo": 2, - "Yii": 3, - "console": 3, - "bootstrap": 1, - "yiiframework": 2, - "com": 2, - "c": 1, - "2008": 1, - "LLC": 1, - "YII_DEBUG": 2, - "define": 2, - "fcgi": 1, - "doesn": 1, - "STDIN": 3, - "fopen": 1, - "stdin": 1, - "r": 1, - "require": 3, - "__DIR__": 3, - "vendor": 2, - "yiisoft": 1, - "yii2": 1, - "yii": 2, - "autoload": 1, - "config": 3, - "application": 2 - }, - "Pod": { - "Id": 1, - "contents.pod": 1, - "v": 1, - "/05/04": 1, - "tower": 1, - "Exp": 1, - "begin": 3, - "html": 7, - "": 1, - "end": 4, - "head1": 2, - "Net": 12, - "Z3950": 12, - "AsyncZ": 16, - "head2": 3, - "Intro": 1, - "adds": 1, - "an": 3, - "additional": 1, - "layer": 1, - "of": 19, - "asynchronous": 4, - "support": 1, - "for": 11, - "the": 29, - "module": 6, - "through": 1, - "use": 1, - "multiple": 1, - "forked": 1, - "processes.": 1, - "I": 8, - "hope": 1, - "that": 9, - "users": 1, - "will": 1, - "also": 2, - "find": 1, - "it": 3, - "provides": 1, - "a": 8, - "convenient": 2, - "front": 1, - "to": 9, - "C": 13, - "": 1, - ".": 5, - "My": 1, - "initial": 1, - "idea": 1, - "was": 1, - "write": 1, - "something": 2, - "would": 1, - "provide": 1, - "means": 1, - "processing": 1, - "and": 14, - "formatting": 2, - "Z39.50": 1, - "records": 4, - "which": 3, - "did": 1, - "using": 1, - "": 2, - "synchronous": 1, - "code.": 1, - "But": 3, - "wanted": 1, - "could": 1, - "handle": 1, - "queries": 1, - "large": 1, - "numbers": 1, - "servers": 1, - "at": 1, - "one": 1, - "session.": 1, - "Working": 1, - "on": 1, - "this": 3, - "part": 3, - "my": 1, - "project": 1, - "found": 1, - "had": 1, - "trouble": 1, - "with": 6, - "features": 1, - "so": 1, - "ended": 1, - "up": 1, - "what": 1, - "have": 3, - "here.": 1, - "give": 2, - "more": 4, - "detailed": 4, - "account": 2, - "in": 9, - "": 4, - "href=": 5, - "": 1, - "DESCRIPTION": 1, - "": 1, - "": 5, - "section": 2, - "": 5, - "AsyncZ.html": 2, - "": 6, - "pod": 3, - "B": 1, - "": 1, - "": 1, - "cut": 3, - "Documentation": 1, - "over": 2, - "item": 10, - "AsyncZ.pod": 1, - "This": 4, - "is": 8, - "starting": 2, - "point": 2, - "gives": 2, - "overview": 2, - "describes": 2, - "basic": 4, - "mechanics": 2, - "its": 2, - "workings": 2, - "details": 5, - "particulars": 2, - "objects": 2, - "methods.": 2, - "see": 2, - "L": 1, - "": 1, - "explanations": 2, - "sample": 2, - "scripts": 2, - "come": 2, - "": 2, - "distribution.": 2, - "Options.pod": 1, - "document": 2, - "various": 2, - "options": 2, - "can": 4, - "be": 2, - "set": 2, - "modify": 2, - "behavior": 2, - "Index": 1, - "Report.pod": 2, - "deals": 2, - "how": 4, - "are": 7, - "treated": 2, - "line": 4, - "by": 2, - "you": 4, - "affect": 2, - "apearance": 2, - "record": 2, - "s": 2, - "HOW": 2, - "TO.": 2, - "back": 2, - "": 1, - "The": 6, - "Modules": 1, - "There": 2, - "modules": 5, - "than": 2, - "there": 2, - "documentation.": 2, - "reason": 2, - "only": 2, - "full": 2, - "complete": 2, - "access": 9, - "other": 2, - "either": 2, - "internal": 2, - "": 1, - "or": 4, - "accessed": 2, - "indirectly": 2, - "indirectly.": 2, - "head3": 1, - "Here": 1, - "main": 1, - "direct": 2, - "documented": 7, - "": 4, - "": 2, - "documentation": 4, - "ErrMsg": 1, - "User": 1, - "error": 1, - "message": 1, - "handling": 2, - "indirect": 2, - "Errors": 1, - "Error": 1, - "debugging": 1, - "limited": 2, - "Report": 1, - "Module": 1, - "reponsible": 1, - "fetching": 1, - "ZLoop": 1, - "Event": 1, - "loop": 1, - "child": 3, - "processes": 3, - "no": 2, - "not": 2, - "ZSend": 1, - "Connection": 1, - "Options": 2, - "_params": 1, - "INDEX": 1 - }, - "PogoScript": { - "httpism": 1, - "require": 3, - "async": 1, - "resolve": 2, - ".resolve": 1, - "exports.squash": 1, - "(": 38, - "url": 5, - ")": 38, - "html": 15, - "httpism.get": 2, - ".body": 2, - "squash": 2, - "callback": 2, - "replacements": 6, - "sort": 2, - "links": 2, - "in": 11, - ".concat": 1, - "scripts": 2, - "for": 2, - "each": 2, - "@": 6, - "r": 1, - "{": 3, - "r.url": 1, - "r.href": 1, - "}": 3, - "async.map": 1, - "get": 2, - "err": 2, - "requested": 2, - "replace": 2, - "replacements.sort": 1, - "a": 1, - "b": 1, - "a.index": 1, - "-": 1, - "b.index": 1, - "replacement": 2, - "replacement.body": 1, - "replacement.url": 1, - "i": 3, - "parts": 3, - "rep": 1, - "rep.index": 1, - "+": 2, - "rep.length": 1, - "html.substr": 1, - "link": 2, - "reg": 5, - "r/": 2, - "": 1, - "]": 7, - "*href": 1, - "[": 5, - "*": 2, - "/": 2, - "|": 2, - "s*": 2, - "<\\/link\\>": 1, - "/gi": 2, - "elements": 5, - "matching": 3, - "as": 3, - "script": 2, - "": 1, - "*src": 1, - "<\\/script\\>": 1, - "tag": 3, - "while": 1, - "m": 1, - "reg.exec": 1, - "elements.push": 1, - "index": 1, - "m.index": 1, - "length": 1, - "m.0.length": 1, - "href": 1, - "m.1": 1 - }, - "PostScript": { - "%": 23, - "PS": 1, - "-": 4, - "Adobe": 1, - "Creator": 1, - "Aaron": 1, - "Puchert": 1, - "Title": 1, - "The": 1, - "Sierpinski": 1, - "triangle": 1, - "Pages": 1, - "PageOrder": 1, - "Ascend": 1, - "BeginProlog": 1, - "/pageset": 1, - "{": 4, - "scale": 1, - "set": 1, - "cm": 1, - "translate": 1, - "setlinewidth": 1, - "}": 4, - "def": 2, - "/sierpinski": 1, - "dup": 4, - "gt": 1, - "[": 6, - "]": 6, - "concat": 5, - "sub": 3, - "sierpinski": 4, - "newpath": 1, - "moveto": 1, - "lineto": 2, - "closepath": 1, - "fill": 1, - "ifelse": 1, - "pop": 1, - "EndProlog": 1, - "BeginSetup": 1, - "<<": 1, - "/PageSize": 1, - "setpagedevice": 1, - "A4": 1, - "EndSetup": 1, - "Page": 1, - "Test": 1, - "pageset": 1, - "sqrt": 1, - "showpage": 1, - "EOF": 1 - }, - "PowerShell": { - "Write": 2, - "-": 2, - "Host": 2, - "function": 1, - "hello": 1, - "(": 1, - ")": 1, - "{": 1, - "}": 1 - }, - "Processing": { - "void": 2, - "setup": 1, - "(": 17, - ")": 17, - "{": 2, - "size": 1, - ";": 15, - "background": 1, - "noStroke": 1, - "}": 2, - "draw": 1, - "fill": 6, - "triangle": 2, - "rect": 1, - "quad": 1, - "ellipse": 1, - "arc": 1, - "PI": 1, - "TWO_PI": 1 - }, - "Prolog": { - "-": 52, - "lib": 1, - "(": 49, - "ic": 1, - ")": 49, - ".": 25, - "vabs": 2, - "Val": 8, - "AbsVal": 10, - "#": 9, - ";": 1, - "labeling": 2, - "[": 21, - "]": 21, - "vabsIC": 1, - "or": 1, - "faitListe": 3, - "_": 2, - "First": 2, - "|": 12, - "Rest": 6, - "Taille": 2, - "Min": 2, - "Max": 2, - "Min..Max": 1, - "Taille1": 2, - "suite": 3, - "Xi": 5, - "Xi1": 7, - "Xi2": 7, - "checkRelation": 3, - "VabsXi1": 2, - "Xi.": 1, - "checkPeriode": 3, - "ListVar": 2, - "length": 1, - "Length": 2, - "<": 1, - "X1": 2, - "X2": 2, - "X3": 2, - "X4": 2, - "X5": 2, - "X6": 2, - "X7": 2, - "X8": 2, - "X9": 2, - "X10": 3, - "male": 3, - "john": 2, - "peter": 3, - "female": 2, - "vick": 2, - "christie": 3, - "parents": 4, - "brother": 1, - "X": 3, - "Y": 2, - "F": 2, - "M": 2, - "turing": 1, - "Tape0": 2, - "Tape": 2, - "perform": 4, - "q0": 1, - "Ls": 12, - "Rs": 16, - "reverse": 1, - "Ls1": 4, - "append": 1, - "qf": 1, - "Q0": 2, - "Ls0": 6, - "Rs0": 6, - "symbol": 3, - "Sym": 6, - "RsRest": 2, - "once": 1, - "rule": 1, - "Q1": 2, - "NewSym": 2, - "Action": 2, - "action": 4, - "Rs1": 2, - "b": 2, - "left": 4, - "stay": 1, - "right": 1, - "L": 2 - }, - "Protocol Buffer": { - "package": 1, - "tutorial": 1, - ";": 13, - "option": 2, - "java_package": 1, - "java_outer_classname": 1, - "message": 3, - "Person": 2, - "{": 4, - "required": 3, - "string": 3, - "name": 1, - "int32": 1, - "id": 1, - "optional": 2, - "email": 1, - "enum": 1, - "PhoneType": 2, - "MOBILE": 1, - "HOME": 2, - "WORK": 1, - "}": 4, - "PhoneNumber": 2, - "number": 1, - "type": 1, - "[": 1, - "default": 1, - "]": 1, - "repeated": 2, - "phone": 1, - "AddressBook": 1, - "person": 1 - }, - "Python": { - "from": 34, - "__future__": 2, - "import": 47, - "unicode_literals": 1, - "copy": 1, - "sys": 2, - "functools": 1, - "update_wrapper": 2, - "future_builtins": 1, - "zip": 8, - "django.db.models.manager": 1, - "#": 13, - "Imported": 1, - "to": 4, - "register": 1, - "signal": 1, - "handler.": 1, - "django.conf": 1, - "settings": 1, - "django.core.exceptions": 1, - "(": 719, - "ObjectDoesNotExist": 2, - "MultipleObjectsReturned": 2, - "FieldError": 4, - "ValidationError": 8, - "NON_FIELD_ERRORS": 3, - ")": 730, - "django.core": 1, - "validators": 1, - "django.db.models.fields": 1, - "AutoField": 2, - "FieldDoesNotExist": 2, - "django.db.models.fields.related": 1, - "ManyToOneRel": 3, - "OneToOneField": 3, - "add_lazy_relation": 2, - "django.db": 1, - "router": 1, - "transaction": 1, - "DatabaseError": 3, - "DEFAULT_DB_ALIAS": 2, - "django.db.models.query": 1, - "Q": 3, - "django.db.models.query_utils": 2, - "DeferredAttribute": 3, - "django.db.models.deletion": 1, - "Collector": 2, - "django.db.models.options": 1, - "Options": 2, - "django.db.models": 1, - "signals": 1, - "django.db.models.loading": 1, - "register_models": 2, - "get_model": 3, - "django.utils.translation": 1, - "ugettext_lazy": 1, - "as": 11, - "_": 5, - "django.utils.functional": 1, - "curry": 6, - "django.utils.encoding": 1, - "smart_str": 3, - "force_unicode": 3, - "django.utils.text": 1, - "get_text_list": 2, - "capfirst": 6, - "class": 14, - "ModelBase": 4, - "type": 6, - "def": 68, - "__new__": 2, - "cls": 32, - "name": 39, - "bases": 6, - "attrs": 7, - "super_new": 3, - "super": 2, - ".__new__": 1, - "parents": 8, - "[": 152, - "b": 11, - "for": 59, - "in": 79, - "if": 145, - "isinstance": 11, - "]": 152, - "not": 64, - "return": 57, - "module": 6, - "attrs.pop": 2, - "new_class": 9, - "{": 25, - "}": 25, - "attr_meta": 5, - "None": 86, - "abstract": 3, - "getattr": 30, - "False": 28, - "meta": 12, - "else": 30, - "base_meta": 2, - "is": 29, - "model_module": 1, - "sys.modules": 1, - "new_class.__module__": 1, - "kwargs": 9, - "model_module.__name__.split": 1, - "-": 30, - "new_class.add_to_class": 7, - "**kwargs": 9, - "subclass_exception": 3, - "tuple": 3, - "x.DoesNotExist": 1, - "x": 22, - "hasattr": 11, - "and": 35, - "x._meta.abstract": 2, - "or": 27, - "x.MultipleObjectsReturned": 1, - "base_meta.abstract": 1, - "new_class._meta.ordering": 1, - "base_meta.ordering": 1, - "new_class._meta.get_latest_by": 1, - "base_meta.get_latest_by": 1, - "is_proxy": 5, - "new_class._meta.proxy": 1, - "new_class._default_manager": 2, - "new_class._base_manager": 2, - "new_class._default_manager._copy_to_model": 1, - "new_class._base_manager._copy_to_model": 1, - "m": 3, - "new_class._meta.app_label": 3, - "seed_cache": 2, - "only_installed": 2, - "obj_name": 2, - "obj": 4, - "attrs.items": 1, - "new_fields": 2, - "new_class._meta.local_fields": 3, - "+": 37, - "new_class._meta.local_many_to_many": 2, - "new_class._meta.virtual_fields": 1, - "field_names": 5, - "set": 3, - "f.name": 5, - "f": 19, - "base": 13, - "parent": 5, - "parent._meta.abstract": 1, - "parent._meta.fields": 1, - "raise": 22, - "TypeError": 4, - "%": 32, - "continue": 10, - "new_class._meta.setup_proxy": 1, - "new_class._meta.concrete_model": 2, - "base._meta.concrete_model": 2, - "o2o_map": 3, - "dict": 3, - "f.rel.to": 1, - "original_base": 1, - "parent_fields": 3, - "base._meta.local_fields": 1, - "base._meta.local_many_to_many": 1, - "field": 32, - "field.name": 14, - "base.__name__": 2, - "base._meta.abstract": 2, - "elif": 4, - "attr_name": 3, - "base._meta.module_name": 1, - "auto_created": 1, - "True": 20, - "parent_link": 1, - "new_class._meta.parents": 1, - "copy.deepcopy": 2, - "new_class._meta.parents.update": 1, - "base._meta.parents": 1, - "new_class.copy_managers": 2, - "base._meta.abstract_managers": 1, - "original_base._meta.concrete_managers": 1, - "base._meta.virtual_fields": 1, - "attr_meta.abstract": 1, - "new_class.Meta": 1, - "new_class._prepare": 1, - "copy_managers": 1, - "base_managers": 2, - "base_managers.sort": 1, - "mgr_name": 3, - "manager": 3, - "val": 14, - "new_manager": 2, - "manager._copy_to_model": 1, - "cls.add_to_class": 1, - "add_to_class": 1, - "value": 9, - "value.contribute_to_class": 1, - "setattr": 14, - "_prepare": 1, - "opts": 5, - "cls._meta": 3, - "opts._prepare": 1, - "opts.order_with_respect_to": 2, - "cls.get_next_in_order": 1, - "cls._get_next_or_previous_in_order": 2, - "is_next": 9, - "cls.get_previous_in_order": 1, - "make_foreign_order_accessors": 2, - "model": 8, - "field.rel.to": 2, - "cls.__name__.lower": 2, - "method_get_order": 2, - "method_set_order": 2, - "opts.order_with_respect_to.rel.to": 1, - "cls.__doc__": 3, - "cls.__name__": 1, - ".join": 3, - "f.attname": 5, - "opts.fields": 1, - "cls.get_absolute_url": 3, - "get_absolute_url": 2, - "signals.class_prepared.send": 1, - "sender": 5, - "ModelState": 2, - "object": 6, - "__init__": 5, - "self": 100, - "db": 2, - "self.db": 1, - "self.adding": 1, - "Model": 2, - "__metaclass__": 3, - "_deferred": 1, - "*args": 4, - "signals.pre_init.send": 1, - "self.__class__": 10, - "args": 8, - "self._state": 1, - "args_len": 2, - "len": 9, - "self._meta.fields": 5, - "IndexError": 2, - "fields_iter": 4, - "iter": 1, - "field.attname": 17, - "kwargs.pop": 6, - "field.rel": 2, - "is_related_object": 3, - "self.__class__.__dict__.get": 2, - "try": 17, - "rel_obj": 3, - "except": 17, - "KeyError": 3, - "field.get_default": 3, - "field.null": 1, - "prop": 5, - "kwargs.keys": 2, - "property": 2, - "AttributeError": 1, - "pass": 4, - ".__init__": 1, - "signals.post_init.send": 1, - "instance": 5, - "__repr__": 2, - "u": 9, - "unicode": 8, - "UnicodeEncodeError": 1, - "UnicodeDecodeError": 1, - "self.__class__.__name__": 3, - "__str__": 1, - ".encode": 1, - "__eq__": 1, - "other": 4, - "self._get_pk_val": 6, - "other._get_pk_val": 1, - "__ne__": 1, - "self.__eq__": 1, - "__hash__": 1, - "hash": 1, - "__reduce__": 1, - "data": 22, - "self.__dict__": 1, - "defers": 2, - "self._deferred": 1, - "deferred_class_factory": 2, - "factory": 5, - "defers.append": 1, - "self._meta.proxy_for_model": 1, - "simple_class_factory": 2, - "model_unpickle": 2, - "_get_pk_val": 2, - "self._meta": 2, - "meta.pk.attname": 2, - "_set_pk_val": 2, - "self._meta.pk.attname": 2, - "pk": 5, - "serializable_value": 1, - "field_name": 8, - "self._meta.get_field_by_name": 1, - "save": 1, - "force_insert": 7, - "force_update": 10, - "using": 30, - "update_fields": 23, - "ValueError": 5, - "frozenset": 2, - "field.primary_key": 1, - "non_model_fields": 2, - "update_fields.difference": 1, - "self.save_base": 2, - "save.alters_data": 1, - "save_base": 1, - "raw": 9, - "origin": 7, - "router.db_for_write": 2, - "assert": 7, - "meta.proxy": 5, - "meta.auto_created": 2, - "signals.pre_save.send": 1, - "org": 3, - "meta.parents.items": 1, - "parent._meta.pk.attname": 2, - "parent._meta": 1, - "non_pks": 5, - "meta.local_fields": 2, - "f.primary_key": 2, - "pk_val": 4, - "pk_set": 5, - "record_exists": 5, - "cls._base_manager": 1, - "manager.using": 3, - ".filter": 7, - ".exists": 1, - "values": 13, - "f.pre_save": 1, - "rows": 3, - "._update": 1, - "meta.order_with_respect_to": 2, - "order_value": 2, - "*": 33, - ".count": 1, - "self._order": 1, - "fields": 12, - "update_pk": 3, - "bool": 2, - "meta.has_auto_field": 1, - "result": 2, - "manager._insert": 1, - "return_id": 1, - "transaction.commit_unless_managed": 2, - "self._state.db": 2, - "self._state.adding": 4, - "signals.post_save.send": 1, - "created": 1, - "save_base.alters_data": 1, - "delete": 1, - "self._meta.object_name": 1, - "collector": 1, - "collector.collect": 1, - "collector.delete": 1, - "delete.alters_data": 1, - "_get_FIELD_display": 1, - "field.flatchoices": 1, - ".get": 2, - "strings_only": 1, - "_get_next_or_previous_by_FIELD": 1, - "self.pk": 6, - "op": 6, - "order": 5, - "param": 3, - "q": 4, - "|": 1, - "qs": 6, - "self.__class__._default_manager.using": 1, - "*kwargs": 1, - ".order_by": 2, - "self.DoesNotExist": 1, - "self.__class__._meta.object_name": 1, - "_get_next_or_previous_in_order": 1, - "cachename": 4, - "order_field": 1, - "self._meta.order_with_respect_to": 1, - "self._default_manager.filter": 1, - "order_field.name": 1, - "order_field.attname": 1, - "self._default_manager.values": 1, - "self._meta.pk.name": 1, - "prepare_database_save": 1, - "unused": 1, - "clean": 1, - "validate_unique": 1, - "exclude": 23, - "unique_checks": 6, - "date_checks": 6, - "self._get_unique_checks": 1, - "errors": 20, - "self._perform_unique_checks": 1, - "date_errors": 1, - "self._perform_date_checks": 1, - "k": 4, - "v": 11, - "date_errors.items": 1, - "errors.setdefault": 3, - ".extend": 2, - "_get_unique_checks": 1, - "unique_togethers": 2, - "self._meta.unique_together": 1, - "parent_class": 4, - "self._meta.parents.keys": 2, - "parent_class._meta.unique_together": 2, - "unique_togethers.append": 1, - "model_class": 11, - "unique_together": 2, - "check": 4, - "break": 2, - "unique_checks.append": 2, - "fields_with_class": 2, - "self._meta.local_fields": 1, - "fields_with_class.append": 1, - "parent_class._meta.local_fields": 1, - "f.unique": 1, - "f.unique_for_date": 3, - "date_checks.append": 3, - "f.unique_for_year": 3, - "f.unique_for_month": 3, - "_perform_unique_checks": 1, - "unique_check": 10, - "lookup_kwargs": 8, - "self._meta.get_field": 1, - "lookup_value": 3, - "str": 2, - "lookup_kwargs.keys": 1, - "model_class._default_manager.filter": 2, - "*lookup_kwargs": 2, - "model_class_pk": 3, - "model_class._meta": 2, - "qs.exclude": 2, - "qs.exists": 2, - "key": 5, - ".append": 2, - "self.unique_error_message": 1, - "_perform_date_checks": 1, - "lookup_type": 7, - "unique_for": 9, - "date": 3, - "date.day": 1, - "date.month": 1, - "date.year": 1, - "self.date_error_message": 1, - "date_error_message": 1, - "opts.get_field": 4, - ".verbose_name": 3, - "unique_error_message": 1, - "model_name": 3, - "opts.verbose_name": 1, - "field_label": 2, - "field.verbose_name": 1, - "field.error_messages": 1, - "field_labels": 4, - "map": 1, - "lambda": 1, - "full_clean": 1, - "self.clean_fields": 1, - "e": 13, - "e.update_error_dict": 3, - "self.clean": 1, - "errors.keys": 1, - "exclude.append": 1, - "self.validate_unique": 1, - "clean_fields": 1, - "raw_value": 3, - "f.blank": 1, - "validators.EMPTY_VALUES": 1, - "f.clean": 1, - "e.messages": 1, - "############################################": 2, - "ordered_obj": 2, - "id_list": 2, - "rel_val": 4, - "ordered_obj._meta.order_with_respect_to.rel.field_name": 2, - "order_name": 4, - "ordered_obj._meta.order_with_respect_to.name": 2, - "i": 7, - "j": 2, - "enumerate": 1, - "ordered_obj.objects.filter": 2, - ".update": 1, - "_order": 1, - "pk_name": 3, - "ordered_obj._meta.pk.name": 1, - "r": 3, - ".values": 1, - "##############################################": 2, - "func": 2, - "settings.ABSOLUTE_URL_OVERRIDES.get": 1, - "opts.app_label": 1, - "opts.module_name": 1, - "########": 2, - "Empty": 1, - "cls.__new__": 1, - "model_unpickle.__safe_for_unpickle__": 1, - ".globals": 1, - "request": 1, - "http_method_funcs": 2, - "View": 2, - "A": 1, - "which": 1, - "methods": 5, - "this": 2, - "pluggable": 1, - "view": 2, - "can": 1, - "handle.": 1, - "The": 1, - "canonical": 1, - "way": 1, - "decorate": 2, - "based": 1, - "views": 1, - "the": 5, - "of": 3, - "as_view": 1, - ".": 1, - "However": 1, - "since": 1, - "moves": 1, - "parts": 1, - "logic": 1, - "declaration": 1, - "place": 1, - "where": 1, - "it": 1, - "s": 1, - "also": 1, - "used": 1, - "instantiating": 1, - "view.view_class": 1, - "view.__name__": 1, - "view.__doc__": 1, - "view.__module__": 1, - "cls.__module__": 1, - "view.methods": 1, - "cls.methods": 1, - "MethodViewType": 2, - "d": 5, - "rv": 2, - "type.__new__": 1, - "rv.methods": 2, - "methods.add": 1, - "key.upper": 1, - "sorted": 1, - "MethodView": 1, - "dispatch_request": 1, - "meth": 5, - "request.method.lower": 1, - "request.method": 2, - "google.protobuf": 4, - "descriptor": 1, - "_descriptor": 1, - "message": 1, - "_message": 1, - "reflection": 1, - "_reflection": 1, - "descriptor_pb2": 1, - "DESCRIPTOR": 3, - "_descriptor.FileDescriptor": 1, - "package": 1, - "serialized_pb": 1, - "_PERSON": 3, - "_descriptor.Descriptor": 1, - "full_name": 2, - "filename": 1, - "file": 1, - "containing_type": 2, - "_descriptor.FieldDescriptor": 1, - "index": 1, - "number": 1, - "cpp_type": 1, - "label": 18, - "has_default_value": 1, - "default_value": 1, - "message_type": 1, - "enum_type": 1, - "is_extension": 1, - "extension_scope": 1, - "options": 3, - "extensions": 1, - "nested_types": 1, - "enum_types": 1, - "is_extendable": 1, - "extension_ranges": 1, - "serialized_start": 1, - "serialized_end": 1, - "DESCRIPTOR.message_types_by_name": 1, - "Person": 1, - "_message.Message": 1, - "_reflection.GeneratedProtocolMessageType": 1, - "SHEBANG#!python": 4, - "print": 39, - "os": 1, - "main": 4, - "usage": 3, - "string": 1, - "command": 4, - "sys.argv": 2, - "<": 1, - "sys.exit": 1, - "printDelimiter": 4, - "get": 1, - "a": 2, - "list": 1, - "git": 1, - "directories": 1, - "specified": 1, - "gitDirectories": 2, - "getSubdirectories": 2, - "isGitDirectory": 2, - "gitDirectory": 2, - "os.chdir": 1, - "os.getcwd": 1, - "os.system": 1, - "directory": 9, - "filter": 3, - "os.path.abspath": 1, - "subdirectories": 3, - "os.walk": 1, - ".next": 1, - "os.path.isdir": 1, - "__name__": 2, - "argparse": 1, - "matplotlib.pyplot": 1, - "pl": 1, - "numpy": 1, - "np": 1, - "scipy.optimize": 1, - "prettytable": 1, - "PrettyTable": 6, - "__docformat__": 1, - "S": 4, - "phif": 7, - "U": 10, - "/": 23, - "_parse_args": 2, - "V": 12, - "np.genfromtxt": 8, - "delimiter": 8, - "t": 8, - "U_err": 7, - "offset": 13, - "np.mean": 1, - "np.linspace": 9, - "min": 10, - "max": 11, - "y": 10, - "np.ones": 11, - "x.size": 2, - "pl.plot": 9, - "**6": 6, - ".format": 11, - "pl.errorbar": 8, - "yerr": 8, - "linestyle": 8, - "marker": 4, - "pl.grid": 5, - "pl.legend": 5, - "loc": 5, - "pl.title": 5, - "pl.xlabel": 5, - "ur": 11, - "pl.ylabel": 5, - "pl.savefig": 5, - "pl.clf": 5, - "glanz": 13, - "matt": 13, - "schwarz": 13, - "weiss": 13, - "T0": 1, - "T0_err": 2, - "glanz_phi": 4, - "matt_phi": 4, - "schwarz_phi": 4, - "weiss_phi": 4, - "T_err": 7, - "sigma": 4, - "boltzmann": 12, - "T": 6, - "epsilon": 7, - "T**4": 1, - "glanz_popt": 3, - "glanz_pconv": 1, - "op.curve_fit": 6, - "matt_popt": 3, - "matt_pconv": 1, - "schwarz_popt": 3, - "schwarz_pconv": 1, - "weiss_popt": 3, - "weiss_pconv": 1, - "glanz_x": 3, - "glanz_y": 2, - "*glanz_popt": 1, - "color": 8, - "matt_x": 3, - "matt_y": 2, - "*matt_popt": 1, - "schwarz_x": 3, - "schwarz_y": 2, - "*schwarz_popt": 1, - "weiss_x": 3, - "weiss_y": 2, - "*weiss_popt": 1, - "np.sqrt": 17, - "glanz_pconv.diagonal": 2, - "matt_pconv.diagonal": 2, - "schwarz_pconv.diagonal": 2, - "weiss_pconv.diagonal": 2, - "xerr": 6, - "U_err/S": 4, - "header": 5, - "glanz_table": 2, - "row": 10, - ".size": 4, - "*T_err": 4, - "glanz_phi.size": 1, - "*U_err/S": 4, - "glanz_table.add_row": 1, - "matt_table": 2, - "matt_phi.size": 1, - "matt_table.add_row": 1, - "schwarz_table": 2, - "schwarz_phi.size": 1, - "schwarz_table.add_row": 1, - "weiss_table": 2, - "weiss_phi.size": 1, - "weiss_table.add_row": 1, - "T0**4": 1, - "phi": 5, - "c": 3, - "a*x": 1, - "dx": 6, - "d**": 2, - "dy": 4, - "dx_err": 3, - "np.abs": 1, - "dy_err": 2, - "popt": 5, - "pconv": 2, - "*popt": 2, - "pconv.diagonal": 3, - "table": 2, - "table.align": 1, - "dy.size": 1, - "*dy_err": 1, - "table.add_row": 1, - "U1": 3, - "I1": 3, - "U2": 2, - "I_err": 2, - "p": 1, - "R": 1, - "R_err": 2, - "/I1": 1, - "**2": 2, - "U1/I1**2": 1, - "phi_err": 3, - "alpha": 2, - "beta": 1, - "R0": 6, - "R0_err": 2, - "alpha*R0": 2, - "*np.sqrt": 6, - "*beta*R": 5, - "alpha**2*R0": 5, - "*beta*R0": 7, - "*beta*R0*T0": 2, - "epsilon_err": 2, - "f1": 1, - "f2": 1, - "f3": 1, - "alpha**2": 1, - "*beta": 1, - "*beta*T0": 1, - "*beta*R0**2": 1, - "f1**2": 1, - "f2**2": 1, - "f3**2": 1, - "parser": 1, - "argparse.ArgumentParser": 1, - "description": 1, - "#parser.add_argument": 3, - "metavar": 1, - "nargs": 1, - "help": 2, - "dest": 1, - "default": 1, - "action": 1, - "version": 6, - "parser.parse_args": 1, - "absolute_import": 1, - "division": 1, - "with_statement": 1, - "Cookie": 1, - "logging": 1, - "socket": 1, - "time": 1, - "tornado.escape": 1, - "utf8": 2, - "native_str": 4, - "parse_qs_bytes": 3, - "tornado": 3, - "httputil": 1, - "iostream": 1, - "tornado.netutil": 1, - "TCPServer": 2, - "stack_context": 1, - "tornado.util": 1, - "bytes_type": 2, - "ssl": 2, - "Python": 1, - "ImportError": 1, - "HTTPServer": 1, - "request_callback": 4, - "no_keep_alive": 4, - "io_loop": 3, - "xheaders": 4, - "ssl_options": 3, - "self.request_callback": 5, - "self.no_keep_alive": 4, - "self.xheaders": 3, - "TCPServer.__init__": 1, - "handle_stream": 1, - "stream": 4, - "address": 4, - "HTTPConnection": 2, - "_BadRequestException": 5, - "Exception": 2, - "self.stream": 1, - "self.address": 3, - "self._request": 7, - "self._request_finished": 4, - "self._header_callback": 3, - "stack_context.wrap": 2, - "self._on_headers": 1, - "self.stream.read_until": 2, - "self._write_callback": 5, - "write": 2, - "chunk": 5, - "callback": 7, - "self.stream.closed": 1, - "self.stream.write": 2, - "self._on_write_complete": 1, - "finish": 2, - "self.stream.writing": 2, - "self._finish_request": 2, - "_on_write_complete": 1, - "_finish_request": 1, - "disconnect": 5, - "connection_header": 5, - "self._request.headers.get": 2, - "connection_header.lower": 1, - "self._request.supports_http_1_1": 1, - "self._request.headers": 1, - "self._request.method": 2, - "self.stream.close": 2, - "_on_headers": 1, - "data.decode": 1, - "eol": 3, - "data.find": 1, - "start_line": 1, - "method": 5, - "uri": 5, - "start_line.split": 1, - "version.startswith": 1, - "headers": 5, - "httputil.HTTPHeaders.parse": 1, - "self.stream.socket": 1, - "socket.AF_INET": 2, - "socket.AF_INET6": 1, - "remote_ip": 8, - "HTTPRequest": 2, - "connection": 5, - "content_length": 6, - "headers.get": 2, - "int": 1, - "self.stream.max_buffer_size": 1, - "self.stream.read_bytes": 1, - "self._on_request_body": 1, - "logging.info": 1, - "_on_request_body": 1, - "self._request.body": 2, - "content_type": 1, - "content_type.startswith": 2, - "arguments": 2, - "arguments.iteritems": 2, - "self._request.arguments.setdefault": 1, - "content_type.split": 1, - "sep": 2, - "field.strip": 1, - ".partition": 1, - "httputil.parse_multipart_form_data": 1, - "self._request.arguments": 1, - "self._request.files": 1, - "logging.warning": 1, - "body": 2, - "protocol": 4, - "host": 2, - "files": 2, - "self.method": 1, - "self.uri": 2, - "self.version": 2, - "self.headers": 4, - "httputil.HTTPHeaders": 1, - "self.body": 1, - "connection.xheaders": 1, - "self.remote_ip": 4, - "self.headers.get": 5, - "self._valid_ip": 1, - "self.protocol": 7, - "connection.stream": 1, - "iostream.SSLIOStream": 1, - "self.host": 2, - "self.files": 1, - "self.connection": 1, - "self._start_time": 3, - "time.time": 3, - "self._finish_time": 4, - "self.path": 1, - "self.query": 2, - "uri.partition": 1, - "self.arguments": 2, - "supports_http_1_1": 1, - "@property": 1, - "cookies": 1, - "self._cookies": 3, - "Cookie.SimpleCookie": 1, - "self._cookies.load": 1, - "self.connection.write": 1, - "self.connection.finish": 1, - "full_url": 1, - "request_time": 1, - "get_ssl_certificate": 1, - "self.connection.stream.socket.getpeercert": 1, - "ssl.SSLError": 1, - "n": 3, - "_valid_ip": 1, - "ip": 2, - "res": 2, - "socket.getaddrinfo": 1, - "socket.AF_UNSPEC": 1, - "socket.SOCK_STREAM": 1, - "socket.AI_NUMERICHOST": 1, - "socket.gaierror": 1, - "e.args": 1, - "socket.EAI_NONAME": 1 - }, - "R": { - "SHEBANG#!Rscript": 1, - "ParseDates": 2, - "<": 12, - "-": 12, - "function": 3, - "(": 29, - "lines": 4, - ")": 29, - "{": 3, - "dates": 3, - "matrix": 2, - "unlist": 2, - "strsplit": 2, - "ncol": 2, - "byrow": 2, - "TRUE": 3, - "days": 2, - "[": 4, - "]": 4, - "times": 2, - "hours": 2, - "all.days": 2, - "c": 2, - "all.hours": 2, - "data.frame": 1, - "Day": 2, - "factor": 2, - "levels": 2, - "Hour": 2, - "}": 3, - "Main": 2, - "system": 1, - "intern": 1, - "punchcard": 4, - "as.data.frame": 1, - "table": 1, - "ggplot2": 6, - "ggplot": 1, - "aes": 2, - "y": 1, - "x": 1, - "+": 2, - "geom_point": 1, - "size": 1, - "Freq": 1, - "scale_size": 1, - "range": 1, - "ggsave": 1, - "filename": 1, - "plot": 1, - "width": 1, - "height": 1, - "hello": 2, - "print": 1, - "##polyg": 1, - "vector": 2, - "##numpoints": 1, - "number": 1, - "##output": 1, - "output": 1, - "##": 1, - "Example": 1, - "scripts": 1, - "group": 1, - "pts": 1, - "spsample": 1, - "polyg": 1, - "numpoints": 1, - "type": 1 - }, - "Racket": { - ";": 3, - "Clean": 1, - "simple": 1, - "and": 1, - "efficient": 1, - "code": 1, - "-": 94, - "that": 2, - "s": 1, - "the": 3, - "power": 1, - "of": 4, - "Racket": 2, - "http": 1, - "//racket": 1, - "lang.org/": 1, - "(": 23, - "define": 1, - "bottles": 4, - "n": 8, - "more": 2, - ")": 23, - "printf": 2, - "case": 1, - "[": 16, - "]": 16, - "else": 1, - "if": 1, - "for": 2, - "in": 3, - "range": 1, - "sub1": 1, - "displayln": 2, - "#lang": 1, - "scribble/manual": 1, - "@": 3, - "require": 1, - "scribble/bnf": 1, - "@title": 1, - "{": 2, - "Scribble": 3, - "The": 1, - "Documentation": 1, - "Tool": 1, - "}": 2, - "@author": 1, - "is": 3, - "a": 1, - "collection": 1, - "tools": 1, - "creating": 1, - "prose": 2, - "documents": 1, - "papers": 1, - "books": 1, - "library": 1, - "documentation": 1, - "etc.": 1, - "HTML": 1, - "or": 2, - "PDF": 1, - "via": 1, - "Latex": 1, - "form.": 1, - "More": 1, - "generally": 1, - "helps": 1, - "you": 1, - "write": 1, - "programs": 1, - "are": 1, - "rich": 1, - "textual": 1, - "content": 2, - "whether": 1, - "to": 2, - "be": 2, - "typeset": 1, - "any": 1, - "other": 1, - "form": 1, - "text": 1, - "generated": 1, - "programmatically.": 1, - "This": 1, - "document": 1, - "itself": 1, - "written": 1, - "using": 1, - "Scribble.": 1, - "You": 1, - "can": 1, - "see": 1, - "its": 1, - "source": 1, - "at": 1, - "let": 1, - "url": 3, - "link": 1, - "starting": 1, - "with": 1, - "@filepath": 1, - "scribble.scrbl": 1, - "file.": 1, - "@table": 1, - "contents": 1, - "@include": 8, - "section": 9, - "@index": 1 - }, - "Ragel in Ruby Host": { - "begin": 3, - "%": 34, - "{": 19, - "machine": 3, - "ephemeris_parser": 1, - ";": 38, - "action": 9, - "mark": 6, - "p": 8, - "}": 19, - "parse_start_time": 2, - "parser.start_time": 1, - "data": 15, - "[": 20, - "mark..p": 4, - "]": 20, - ".pack": 6, - "(": 33, - ")": 33, - "parse_stop_time": 2, - "parser.stop_time": 1, - "parse_step_size": 2, - "parser.step_size": 1, - "parse_ephemeris_table": 2, - "fhold": 1, - "parser.ephemeris_table": 1, - "ws": 2, - "t": 1, - "r": 1, - "n": 1, - "adbc": 2, - "|": 11, - "year": 2, - "digit": 7, - "month": 2, - "upper": 1, - "lower": 1, - "date": 2, - "hours": 2, - "minutes": 2, - "seconds": 2, - "tz": 2, - "datetime": 3, - "time_unit": 2, - "s": 4, - "soe": 2, - "eoe": 2, - "ephemeris_table": 3, - "alnum": 1, - "*": 9, - "-": 5, - "./": 1, - "start_time": 4, - "space*": 2, - "stop_time": 4, - "step_size": 3, - "+": 7, - "ephemeris": 2, - "main": 3, - "any*": 3, - "end": 23, - "require": 1, - "module": 1, - "Tengai": 1, - "EPHEMERIS_DATA": 2, - "Struct.new": 1, - ".freeze": 1, - "class": 3, - "EphemerisParser": 1, - "<": 1, - "def": 10, - "self.parse": 1, - "parser": 2, - "new": 1, - "data.unpack": 1, - "if": 4, - "data.is_a": 1, - "String": 1, - "eof": 3, - "data.length": 3, - "write": 9, - "init": 3, - "exec": 3, - "time": 6, - "super": 2, - "parse_time": 3, - "private": 1, - "DateTime.parse": 1, - "simple_scanner": 1, - "Emit": 4, - "emit": 4, - "ts": 4, - "..": 1, - "te": 1, - "foo": 8, - "any": 4, - "#": 4, - "SimpleScanner": 1, - "attr_reader": 2, - "path": 8, - "initialize": 2, - "@path": 2, - "stdout.puts": 2, - "perform": 2, - "pe": 4, - "ignored": 4, - "leftover": 8, - "File.open": 2, - "do": 2, - "f": 2, - "while": 2, - "chunk": 2, - "f.read": 2, - "ENV": 2, - ".to_i": 2, - "chunk.unpack": 2, - "||": 1, - "ts..pe": 1, - "else": 2, - "SimpleScanner.new": 1, - "ARGV": 2, - "s.perform": 2, - "simple_tokenizer": 1, - "MyTs": 2, - "my_ts": 6, - "MyTe": 2, - "my_te": 6, - "my_ts...my_te": 1, - "nil": 4, - "SimpleTokenizer": 1, - "my_ts..": 1, - "SimpleTokenizer.new": 1 - }, - "RDoc": { - "RDoc": 7, - "-": 9, - "Ruby": 4, - "Documentation": 2, - "System": 1, - "home": 1, - "https": 3, - "//github.com/rdoc/rdoc": 1, - "rdoc": 7, - "http": 1, - "//docs.seattlerb.org/rdoc": 1, - "bugs": 1, - "//github.com/rdoc/rdoc/issues": 1, - "code": 1, - "quality": 1, - "{": 1, - "": 1, - "src=": 1, - "alt=": 1, - "}": 1, - "[": 3, - "//codeclimate.com/github/rdoc/rdoc": 1, - "]": 3, - "Description": 1, - "produces": 1, - "HTML": 1, - "and": 9, - "command": 4, - "line": 1, - "documentation": 8, - "for": 9, - "projects.": 1, - "includes": 1, - "the": 12, - "+": 8, - "ri": 1, - "tools": 1, - "generating": 1, - "displaying": 1, - "from": 1, - "line.": 1, - "Generating": 1, - "Once": 1, - "installed": 1, - "you": 3, - "can": 2, - "create": 1, - "using": 1, - "options": 1, - "names...": 1, - "For": 1, - "an": 1, - "up": 1, - "to": 4, - "date": 1, - "option": 1, - "summary": 1, - "type": 2, - "help": 1, - "A": 1, - "typical": 1, - "use": 1, - "might": 1, - "be": 3, - "generate": 1, - "a": 5, - "package": 1, - "of": 2, - "source": 2, - "(": 3, - "such": 1, - "as": 1, - "itself": 1, - ")": 3, - ".": 2, - "This": 2, - "generates": 1, - "all": 1, - "C": 1, - "files": 2, - "in": 4, - "below": 1, - "current": 1, - "directory.": 1, - "These": 1, - "will": 1, - "stored": 1, - "tree": 1, - "starting": 1, - "subdirectory": 1, - "doc": 1, - "You": 2, - "make": 2, - "this": 1, - "slightly": 1, - "more": 1, - "useful": 1, - "your": 1, - "readers": 1, - "by": 1, - "having": 1, - "index": 1, - "page": 1, - "contain": 1, - "primary": 1, - "file.": 1, - "In": 1, - "our": 1, - "case": 1, - "we": 1, - "could": 1, - "#": 1, - "rdoc/rdoc": 1, - "s": 1, - "OK": 1, - "file": 1, - "bug": 1, - "report": 1, - "anything": 1, - "t": 1, - "figure": 1, - "out": 1, - "how": 1, - "produce": 1, - "output": 1, - "like": 1, - "that": 1, - "is": 4, - "probably": 1, - "bug.": 1, - "License": 1, - "Copyright": 1, - "c": 2, - "Dave": 1, - "Thomas": 1, - "The": 1, - "Pragmatic": 1, - "Programmers.": 1, - "Portions": 2, - "Eric": 1, - "Hodel.": 1, - "copyright": 1, - "others": 1, - "see": 1, - "individual": 1, - "LEGAL.rdoc": 1, - "details.": 1, - "free": 1, - "software": 2, - "may": 1, - "redistributed": 1, - "under": 1, - "terms": 1, - "specified": 1, - "LICENSE.rdoc.": 1, - "Warranty": 1, - "provided": 1, - "without": 2, - "any": 1, - "express": 1, - "or": 1, - "implied": 2, - "warranties": 2, - "including": 1, - "limitation": 1, - "merchantability": 1, - "fitness": 1, - "particular": 1, - "purpose.": 1 - }, - "Rebol": { - "REBOL": 1, - "[": 3, - "]": 3, - "hello": 2, - "func": 1, - "print": 1 - }, - "RMarkdown": { - "Some": 1, - "text.": 1, - "##": 1, - "A": 1, - "graphic": 1, - "in": 1, - "R": 1, - "{": 1, - "r": 1, - "}": 1, - "plot": 1, - "(": 3, - ")": 3, - "hist": 1, - "rnorm": 1 - }, - "RobotFramework": { - "***": 16, - "Settings": 3, - "Documentation": 3, - "Example": 3, - "test": 6, - "cases": 2, - "using": 4, - "the": 9, - "data": 2, - "-": 16, - "driven": 4, - "testing": 2, - "approach.": 2, - "...": 28, - "Tests": 1, - "use": 2, - "Calculate": 3, - "keyword": 5, - "created": 1, - "in": 5, - "this": 1, - "file": 1, - "that": 5, - "turn": 1, - "uses": 1, - "keywords": 3, - "CalculatorLibrary": 5, - ".": 4, - "An": 1, - "exception": 1, - "is": 6, - "last": 1, - "has": 5, - "a": 4, - "custom": 1, - "_template": 1, - "keyword_.": 1, - "The": 2, - "style": 3, - "works": 3, - "well": 3, - "when": 2, - "you": 1, - "need": 3, - "to": 5, - "repeat": 1, - "same": 1, - "workflow": 3, - "multiple": 2, - "times.": 1, - "Notice": 1, - "one": 1, - "of": 3, - "these": 1, - "tests": 5, - "fails": 1, - "on": 1, - "purpose": 1, - "show": 1, - "how": 1, - "failures": 1, - "look": 1, - "like.": 1, - "Test": 4, - "Template": 2, - "Library": 3, - "Cases": 3, - "Expression": 1, - "Expected": 1, - "Addition": 2, - "+": 6, - "Subtraction": 1, - "Multiplication": 1, - "*": 4, - "Division": 2, - "/": 5, - "Failing": 1, - "Calculation": 3, - "error": 4, - "[": 4, - "]": 4, - "should": 9, - "fail": 2, - "kekkonen": 1, - "Invalid": 2, - "button": 13, - "{": 15, - "EMPTY": 3, - "}": 15, - "expression.": 1, - "by": 3, - "zero.": 1, - "Keywords": 2, - "Arguments": 2, - "expression": 5, - "expected": 4, - "Push": 16, - "buttons": 4, - "C": 4, - "Result": 8, - "be": 9, - "Should": 2, - "cause": 1, - "equal": 1, - "#": 2, - "Using": 1, - "BuiltIn": 1, - "case": 1, - "gherkin": 1, - "syntax.": 1, - "This": 3, - "similar": 1, - "examples.": 1, - "difference": 1, - "higher": 1, - "abstraction": 1, - "level": 1, - "and": 2, - "their": 1, - "arguments": 1, - "are": 1, - "embedded": 1, - "into": 1, - "names.": 1, - "kind": 2, - "_gherkin_": 2, - "syntax": 1, - "been": 3, - "made": 1, - "popular": 1, - "http": 1, - "//cukes.info": 1, - "|": 1, - "Cucumber": 1, - "It": 1, - "especially": 1, - "act": 1, - "as": 1, - "examples": 1, - "easily": 1, - "understood": 1, - "also": 2, - "business": 2, - "people.": 1, - "Given": 1, - "calculator": 1, - "cleared": 2, - "When": 1, - "user": 2, - "types": 2, - "pushes": 2, - "equals": 2, - "Then": 1, - "result": 2, - "Calculator": 1, - "User": 2, - "All": 1, - "contain": 1, - "constructed": 1, - "from": 1, - "Creating": 1, - "new": 1, - "or": 1, - "editing": 1, - "existing": 1, - "easy": 1, - "even": 1, - "for": 2, - "people": 2, - "without": 1, - "programming": 1, - "skills.": 1, - "normal": 1, - "automation.": 1, - "If": 1, - "understand": 1, - "may": 1, - "work": 1, - "better.": 1, - "Simple": 1, - "calculation": 2, - "Longer": 1, - "Clear": 1, - "built": 1, - "variable": 1 - }, - "Ruby": { - "appraise": 2, - "do": 37, - "gem": 3, - "end": 238, - "load": 3, - "Dir": 4, - "[": 56, - "]": 56, - ".each": 4, - "{": 68, - "|": 91, - "plugin": 3, - "(": 244, - ")": 256, - "}": 68, - "task": 2, - "default": 2, - "puts": 12, - "module": 8, - "Foo": 1, - "require": 58, - "class": 7, - "Formula": 2, - "include": 3, - "FileUtils": 1, - "attr_reader": 5, - "name": 51, - "path": 16, - "url": 12, - "version": 10, - "homepage": 2, - "specs": 14, - "downloader": 6, - "standard": 2, - "unstable": 2, - "head": 3, - "bottle_version": 2, - "bottle_url": 3, - "bottle_sha1": 2, - "buildpath": 1, - "def": 143, - "initialize": 2, - "nil": 21, - "set_instance_variable": 12, - "if": 72, - "@head": 4, - "and": 6, - "not": 3, - "@url": 8, - "or": 7, - "ARGV.build_head": 2, - "@version": 10, - "@spec_to_use": 4, - "@unstable": 2, - "else": 25, - "@standard.nil": 1, - "SoftwareSpecification.new": 3, - "@specs": 3, - "@standard": 3, - "raise": 17, - "@url.nil": 1, - "@name": 3, - "validate_variable": 7, - "@path": 1, - "path.nil": 1, - "self.class.path": 1, - "Pathname.new": 3, - "||": 22, - "@spec_to_use.detect_version": 1, - "CHECKSUM_TYPES.each": 1, - "type": 10, - "@downloader": 2, - "download_strategy.new": 2, - "@spec_to_use.url": 1, - "@spec_to_use.specs": 1, - "@bottle_url": 2, - "bottle_base_url": 1, - "+": 47, - "bottle_filename": 1, - "self": 11, - "@bottle_sha1": 2, - "installed": 2, - "return": 25, - "installed_prefix.children.length": 1, - "rescue": 13, - "false": 26, - "explicitly_requested": 1, - "ARGV.named.empty": 1, - "ARGV.formulae.include": 1, - "linked_keg": 1, - "HOMEBREW_REPOSITORY/": 2, - "/@name": 1, - "installed_prefix": 1, - "head_prefix": 2, - "HOMEBREW_CELLAR": 2, - "head_prefix.directory": 1, - "prefix": 14, - "rack": 1, - ";": 41, - "prefix.parent": 1, - "bin": 1, - "doc": 1, - "info": 2, - "lib": 1, - "libexec": 1, - "man": 9, - "man1": 1, - "man2": 1, - "man3": 1, - "man4": 1, - "man5": 1, - "man6": 1, - "man7": 1, - "man8": 1, - "sbin": 1, - "share": 1, - "etc": 1, - "HOMEBREW_PREFIX": 2, - "var": 1, - "plist_name": 2, - "plist_path": 1, - "download_strategy": 1, - "@spec_to_use.download_strategy": 1, - "cached_download": 1, - "@downloader.cached_location": 1, - "caveats": 1, - "options": 3, - "patches": 2, - "keg_only": 2, - "self.class.keg_only_reason": 1, - "fails_with": 2, - "cc": 3, - "self.class.cc_failures.nil": 1, - "Compiler.new": 1, - "unless": 15, - "cc.is_a": 1, - "Compiler": 1, - "self.class.cc_failures.find": 1, - "failure": 1, - "next": 1, - "failure.compiler": 1, - "cc.name": 1, - "failure.build.zero": 1, - "failure.build": 1, - "cc.build": 1, - "skip_clean": 2, - "true": 15, - "self.class.skip_clean_all": 1, - "to_check": 2, - "path.relative_path_from": 1, - ".to_s": 3, - "self.class.skip_clean_paths.include": 1, - "brew": 2, - "stage": 2, - "begin": 9, - "patch": 3, - "yield": 5, - "Interrupt": 2, - "RuntimeError": 1, - "SystemCallError": 1, - "e": 8, - "#": 100, - "don": 1, - "config.log": 2, - "t": 3, - "a": 10, - "std_autotools": 1, - "variant": 1, - "because": 1, - "autotools": 1, - "is": 3, - "lot": 1, - "std_cmake_args": 1, - "%": 10, - "W": 1, - "-": 34, - "DCMAKE_INSTALL_PREFIX": 1, - "DCMAKE_BUILD_TYPE": 1, - "None": 1, - "DCMAKE_FIND_FRAMEWORK": 1, - "LAST": 1, - "Wno": 1, - "dev": 1, - "self.class_s": 2, - "#remove": 1, - "invalid": 1, - "characters": 1, - "then": 4, - "camelcase": 1, - "it": 1, - "name.capitalize.gsub": 1, - "/": 34, - "_.": 1, - "s": 2, - "zA": 1, - "Z0": 1, - "upcase": 1, - ".gsub": 5, - "self.names": 1, - ".map": 6, - "f": 11, - "File.basename": 2, - ".sort": 2, - "self.all": 1, - "map": 1, - "self.map": 1, - "rv": 3, - "each": 1, - "<<": 15, - "self.each": 1, - "names.each": 1, - "n": 4, - "Formula.factory": 2, - "onoe": 2, - "inspect": 2, - "self.aliases": 1, - "self.canonical_name": 1, - "name.to_s": 3, - "name.kind_of": 2, - "Pathname": 2, - "formula_with_that_name": 1, - "HOMEBREW_REPOSITORY": 4, - "possible_alias": 1, - "possible_cached_formula": 1, - "HOMEBREW_CACHE_FORMULA": 2, - "name.include": 2, - "r": 3, - ".": 3, - "tapd": 1, - ".downcase": 2, - "tapd.find_formula": 1, - "relative_pathname": 1, - "relative_pathname.stem.to_s": 1, - "tapd.directory": 1, - "elsif": 7, - "formula_with_that_name.file": 1, - "formula_with_that_name.readable": 1, - "possible_alias.file": 1, - "possible_alias.realpath.basename": 1, - "possible_cached_formula.file": 1, - "possible_cached_formula.to_s": 1, - "self.factory": 1, - "https": 1, - "ftp": 1, - "//": 3, - ".basename": 1, - "target_file": 6, - "name.basename": 1, - "HOMEBREW_CACHE_FORMULA.mkpath": 1, - "FileUtils.rm": 1, - "force": 1, - "curl": 1, - "install_type": 4, - "from_url": 1, - "Formula.canonical_name": 1, - ".rb": 1, - "path.stem": 1, - "from_path": 1, - "path.to_s": 3, - "Formula.path": 1, - "from_name": 2, - "klass_name": 2, - "klass": 16, - "Object.const_get": 1, - "NameError": 2, - "LoadError": 3, - "klass.new": 2, - "FormulaUnavailableError.new": 1, - "tap": 1, - "path.realpath.to_s": 1, - "/Library/Taps/": 1, - "w": 6, - "self.path": 1, - "mirrors": 4, - "self.class.mirrors": 1, - "deps": 1, - "self.class.dependencies.deps": 1, - "external_deps": 1, - "self.class.dependencies.external_deps": 1, - "recursive_deps": 1, - "Formula.expand_deps": 1, - ".flatten.uniq": 1, - "self.expand_deps": 1, - "f.deps.map": 1, - "dep": 3, - "f_dep": 3, - "dep.to_s": 1, - "expand_deps": 1, - "protected": 1, - "system": 1, - "cmd": 6, - "*args": 16, - "pretty_args": 1, - "args.dup": 1, - "pretty_args.delete": 1, - "ARGV.verbose": 2, - "ohai": 3, - ".strip": 1, - "removed_ENV_variables": 2, - "case": 5, - "args.empty": 1, - "cmd.split": 1, - ".first": 1, - "when": 11, - "ENV.remove_cc_etc": 1, - "safe_system": 4, - "rd": 1, - "wr": 3, - "IO.pipe": 1, - "pid": 1, - "fork": 1, - "rd.close": 1, - "stdout.reopen": 1, - "stderr.reopen": 1, - "args.collect": 1, - "arg": 1, - "arg.to_s": 1, - "exec": 2, - "exit": 2, - "never": 1, - "gets": 1, - "here": 1, - "threw": 1, - "failed": 3, - "wr.close": 1, - "out": 4, - "rd.read": 1, - "until": 1, - "rd.eof": 1, - "Process.wait": 1, - ".success": 1, - "removed_ENV_variables.each": 1, - "key": 8, - "value": 4, - "ENV": 4, - "ENV.kind_of": 1, - "Hash": 3, - "BuildError.new": 1, - "args": 5, - "public": 2, - "fetch": 2, - "install_bottle": 1, - "CurlBottleDownloadStrategy.new": 1, - "mirror_list": 2, - "HOMEBREW_CACHE.mkpath": 1, - "fetched": 4, - "downloader.fetch": 1, - "CurlDownloadStrategyError": 1, - "mirror_list.empty": 1, - "mirror_list.shift.values_at": 1, - "retry": 2, - "checksum_type": 2, - "CHECKSUM_TYPES.detect": 1, - "instance_variable_defined": 2, - "verify_download_integrity": 2, - "fn": 2, - "args.length": 1, - "md5": 2, - "supplied": 4, - "instance_variable_get": 2, - "type.to_s.upcase": 1, - "hasher": 2, - "Digest.const_get": 1, - "hash": 2, - "fn.incremental_hash": 1, - "supplied.empty": 1, - "message": 2, - "EOF": 2, - "mismatch": 1, - "Expected": 1, - "Got": 1, - "Archive": 1, - "To": 1, - "an": 1, - "incomplete": 1, - "download": 1, - "remove": 1, - "the": 8, - "file": 1, - "above.": 1, - "supplied.upcase": 1, - "hash.upcase": 1, - "opoo": 1, - "private": 3, - "CHECKSUM_TYPES": 2, - "sha1": 4, - "sha256": 1, - ".freeze": 1, - "fetched.kind_of": 1, - "mktemp": 1, - "downloader.stage": 1, - "@buildpath": 2, - "Pathname.pwd": 1, - "patch_list": 1, - "Patches.new": 1, - "patch_list.empty": 1, - "patch_list.external_patches": 1, - "patch_list.download": 1, - "patch_list.each": 1, - "p": 2, - "p.compression": 1, - "gzip": 1, - "p.compressed_filename": 2, - "bzip2": 1, - "*": 3, - "p.patch_args": 1, - "v": 2, - "v.to_s.empty": 1, - "s/": 1, - "class_value": 3, - "self.class.send": 1, - "instance_variable_set": 1, - "self.method_added": 1, - "method": 4, - "self.attr_rw": 1, - "attrs": 1, - "attrs.each": 1, - "attr": 4, - "class_eval": 1, - "Q": 1, - "val": 10, - "val.nil": 3, - "@#": 2, - "attr_rw": 4, - "keg_only_reason": 1, - "skip_clean_all": 2, - "cc_failures": 1, - "stable": 2, - "&": 31, - "block": 30, - "block_given": 5, - "instance_eval": 2, - "ARGV.build_devel": 2, - "devel": 1, - "@mirrors": 3, - "clear": 1, - "from": 1, - "release": 1, - "bottle": 1, - "bottle_block": 1, - "Class.new": 2, - "self.version": 1, - "self.url": 1, - "self.sha1": 1, - "sha1.shift": 1, - "@sha1": 6, - "MacOS.cat": 1, - "String": 2, - "MacOS.lion": 1, - "self.data": 1, - "&&": 8, - "bottle_block.instance_eval": 1, - "@bottle_version": 1, - "bottle_block.data": 1, - "mirror": 1, - "@mirrors.uniq": 1, - "dependencies": 1, - "@dependencies": 1, - "DependencyCollector.new": 1, - "depends_on": 1, - "dependencies.add": 1, - "paths": 3, - "all": 1, - "@skip_clean_all": 2, - "@skip_clean_paths": 3, - ".flatten.each": 1, - "p.to_s": 2, - "@skip_clean_paths.include": 1, - "skip_clean_paths": 1, - "reason": 2, - "explanation": 1, - "@keg_only_reason": 1, - "KegOnlyReason.new": 1, - "explanation.to_s.chomp": 1, - "compiler": 3, - "@cc_failures": 2, - "CompilerFailures.new": 1, - "CompilerFailure.new": 2, - "Grit": 1, - "ActiveSupport": 1, - "Inflector": 1, - "extend": 2, - "pluralize": 3, - "word": 10, - "apply_inflections": 3, - "inflections.plurals": 1, - "singularize": 2, - "inflections.singulars": 1, - "camelize": 2, - "term": 1, - "uppercase_first_letter": 2, - "string": 4, - "term.to_s": 1, - "string.sub": 2, - "z": 7, - "d": 6, - "*/": 1, - "inflections.acronyms": 1, - ".capitalize": 1, - "inflections.acronym_regex": 2, - "b": 4, - "A": 5, - "Z_": 1, - "string.gsub": 1, - "_": 2, - "/i": 2, - "underscore": 3, - "camel_cased_word": 6, - "camel_cased_word.to_s.dup": 1, - "word.gsub": 4, - "Za": 1, - "Z": 3, - "word.tr": 1, - "word.downcase": 1, - "humanize": 2, - "lower_case_and_underscored_word": 1, - "result": 8, - "lower_case_and_underscored_word.to_s.dup": 1, - "inflections.humans.each": 1, - "rule": 4, - "replacement": 4, - "break": 4, - "result.sub": 2, - "result.gsub": 2, - "/_id": 1, - "result.tr": 1, - "match": 6, - "w/": 1, - ".upcase": 1, - "titleize": 1, - "": 1, - "capitalize": 1, - "Create": 1, - "of": 1, - "table": 2, - "like": 1, - "Rails": 1, - "does": 1, - "for": 1, - "models": 1, - "to": 1, - "names": 2, - "This": 1, - "uses": 1, - "on": 2, - "last": 4, - "in": 3, - "RawScaledScorer": 1, - "tableize": 2, - "class_name": 2, - "classify": 1, - "table_name": 1, - "table_name.to_s.sub": 1, - "/.*": 1, - "./": 1, - "dasherize": 1, - "underscored_word": 1, - "underscored_word.tr": 1, - "demodulize": 1, - "i": 2, - "path.rindex": 2, - "..": 1, - "deconstantize": 1, - "implementation": 1, - "based": 1, - "one": 1, - "facets": 1, - "id": 1, - "outside": 2, - "inside": 2, - "owned": 1, - "constant": 4, - "constant.ancestors.inject": 1, - "const": 3, - "ancestor": 3, - "Object": 1, - "ancestor.const_defined": 1, - "constant.const_get": 1, - "safe_constantize": 1, - "constantize": 1, - "e.message": 2, - "uninitialized": 1, - "wrong": 1, - "const_regexp": 3, - "e.name.to_s": 1, - "camel_cased_word.to_s": 1, - "ArgumentError": 1, - "/not": 1, - "missing": 1, - "ordinal": 1, - "number": 2, - ".include": 1, - "number.to_i.abs": 2, - "ordinalize": 1, - "nodoc": 3, - "parts": 1, - "camel_cased_word.split": 1, - "parts.pop": 1, - "parts.reverse.inject": 1, - "acc": 2, - "part": 1, - "part.empty": 1, - "rules": 1, - "word.to_s.dup": 1, - "word.empty": 1, - "inflections.uncountables.include": 1, - "result.downcase": 1, - "Z/": 1, - "rules.each": 1, - ".unshift": 1, - "File.dirname": 4, - "__FILE__": 3, - "For": 1, - "use/testing": 1, - "no": 1, - "require_all": 4, - "glob": 2, - "File.join": 6, - "Jekyll": 3, - "VERSION": 1, - "DEFAULTS": 2, - "Dir.pwd": 3, - "self.configuration": 1, - "override": 3, - "source": 2, - "config_file": 2, - "config": 3, - "YAML.load_file": 1, - "config.is_a": 1, - "stdout.puts": 1, - "err": 1, - "stderr.puts": 2, - "err.to_s": 1, - "DEFAULTS.deep_merge": 1, - ".deep_merge": 1, - "Jenkins": 1, - "Plugin": 1, - "Specification.new": 1, - "plugin.name": 1, - "plugin.display_name": 1, - "plugin.version": 1, - "plugin.description": 1, - "plugin.url": 1, - "plugin.developed_by": 1, - "plugin.uses_repository": 1, - "github": 1, - "plugin.depends_on": 1, - "#plugin.depends_on": 1, - "SHEBANG#!macruby": 1, - "object": 2, - "@user": 1, - "person": 1, - "attributes": 2, - "username": 1, - "email": 1, - "location": 1, - "created_at": 1, - "registered_at": 1, - "node": 2, - "role": 1, - "user": 1, - "user.is_admin": 1, - "child": 1, - "phone_numbers": 1, - "pnumbers": 1, - "extends": 1, - "node_numbers": 1, - "u": 1, - "partial": 1, - "u.phone_numbers": 1, - "Resque": 3, - "Helpers": 1, - "redis": 7, - "server": 11, - "/redis": 1, - "Redis.connect": 2, - "thread_safe": 2, - "namespace": 3, - "server.split": 2, - "host": 3, - "port": 4, - "db": 3, - "Redis.new": 1, - "resque": 2, - "@redis": 6, - "Redis": 3, - "Namespace.new": 2, - "Namespace": 1, - "@queues": 2, - "Hash.new": 1, - "h": 2, - "Queue.new": 1, - "coder": 3, - "@coder": 1, - "MultiJsonCoder.new": 1, - "attr_writer": 4, - "self.redis": 2, - "Redis.respond_to": 1, - "connect": 1, - "redis_id": 2, - "redis.respond_to": 2, - "redis.server": 1, - "nodes": 1, - "distributed": 1, - "redis.nodes.map": 1, - "n.id": 1, - ".join": 1, - "redis.client.id": 1, - "before_first_fork": 2, - "@before_first_fork": 2, - "before_fork": 2, - "@before_fork": 2, - "after_fork": 2, - "@after_fork": 2, - "to_s": 1, - "attr_accessor": 2, - "inline": 3, - "alias": 1, - "push": 1, - "queue": 24, - "item": 4, - "pop": 1, - ".pop": 1, - "ThreadError": 1, - "size": 3, - ".size": 1, - "peek": 1, - "start": 7, - "count": 5, - ".slice": 1, - "list_range": 1, - "decode": 2, - "redis.lindex": 1, - "Array": 2, - "redis.lrange": 1, - "queues": 3, - "redis.smembers": 1, - "remove_queue": 1, - ".destroy": 1, - "@queues.delete": 1, - "queue.to_s": 1, - "enqueue": 1, - "enqueue_to": 2, - "queue_from_class": 4, - "before_hooks": 2, - "Plugin.before_enqueue_hooks": 1, - ".collect": 2, - "hook": 9, - "klass.send": 4, - "before_hooks.any": 2, - "Job.create": 1, - "Plugin.after_enqueue_hooks": 1, - "dequeue": 1, - "Plugin.before_dequeue_hooks": 1, - "Job.destroy": 1, - "Plugin.after_dequeue_hooks": 1, - "klass.instance_variable_get": 1, - "@queue": 1, - "klass.respond_to": 1, - "klass.queue": 1, - "reserve": 1, - "Job.reserve": 1, - "validate": 1, - "NoQueueError.new": 1, - "klass.to_s.empty": 1, - "NoClassError.new": 1, - "workers": 2, - "Worker.all": 1, - "working": 2, - "Worker.working": 1, - "remove_worker": 1, - "worker_id": 2, - "worker": 1, - "Worker.find": 1, - "worker.unregister_worker": 1, - "pending": 1, - "queues.inject": 1, - "m": 3, - "k": 2, - "processed": 2, - "Stat": 2, - "queues.size": 1, - "workers.size.to_i": 1, - "working.size": 1, - "servers": 1, - "environment": 2, - "keys": 6, - "redis.keys": 1, - "key.sub": 1, - "SHEBANG#!ruby": 2, - "SHEBANG#!rake": 1, - "Sinatra": 2, - "Request": 2, - "<": 2, - "Rack": 1, - "accept": 1, - "@env": 2, - "entries": 1, - ".to_s.split": 1, - "entries.map": 1, - "accept_entry": 1, - ".sort_by": 1, - "first": 1, - "preferred_type": 1, - "self.defer": 1, - "pattern": 1, - "path.respond_to": 5, - "path.keys": 1, - "path.names": 1, - "TypeError": 1, - "URI": 3, - "URI.const_defined": 1, - "Parser": 1, - "Parser.new": 1, - "encoded": 1, - "char": 4, - "enc": 5, - "URI.escape": 1, - "helpers": 3, - "data": 1, - "reset": 1, - "set": 36, - "development": 6, - ".to_sym": 1, - "raise_errors": 1, - "Proc.new": 11, - "test": 5, - "dump_errors": 1, - "show_exceptions": 1, - "sessions": 1, - "logging": 2, - "protection": 1, - "method_override": 4, - "use_code": 1, - "default_encoding": 1, - "add_charset": 1, - "javascript": 1, - "xml": 2, - "xhtml": 1, - "json": 1, - "settings.add_charset": 1, - "text": 3, - "session_secret": 3, - "SecureRandom.hex": 1, - "NotImplementedError": 1, - "Kernel.rand": 1, - "**256": 1, - "alias_method": 2, - "methodoverride": 2, - "run": 2, - "via": 1, - "at": 1, - "running": 2, - "built": 1, - "now": 1, - "http": 1, - "webrick": 1, - "bind": 1, - "ruby_engine": 6, - "defined": 1, - "RUBY_ENGINE": 2, - "server.unshift": 6, - "ruby_engine.nil": 1, - "absolute_redirects": 1, - "prefixed_redirects": 1, - "empty_path_info": 1, - "app_file": 4, - "root": 5, - "File.expand_path": 1, - "views": 1, - "reload_templates": 1, - "lock": 1, - "threaded": 1, - "public_folder": 3, - "static": 1, - "File.exist": 1, - "static_cache_control": 1, - "error": 3, - "Exception": 1, - "response.status": 1, - "content_type": 3, - "configure": 2, - "get": 2, - "filename": 2, - "png": 1, - "send_file": 1, - "NotFound": 1, - "HTML": 2, - "": 1, - "html": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "

": 1, - "doesn": 1, - "rsquo": 1, - "know": 1, - "this": 2, - "ditty.": 1, - "

": 1, - "": 1, - "src=": 1, - "
": 1, - "id=": 1, - "Try": 1, - "
": 1,
-      "request.request_method.downcase": 1,
-      "nend": 1,
-      "
": 1, - "
": 1, - "": 1, - "": 1, - "Application": 2, - "Base": 2, - "super": 3, - "self.register": 2, - "extensions": 6, - "added_methods": 2, - "extensions.map": 1, - "m.public_instance_methods": 1, - ".flatten": 1, - "Delegator.delegate": 1, - "Delegator": 1, - "self.delegate": 1, - "methods": 1, - "methods.each": 1, - "method_name": 5, - "define_method": 1, - "respond_to": 1, - "Delegator.target.send": 1, - "delegate": 1, - "put": 1, - "post": 1, - "delete": 1, - "template": 1, - "layout": 1, - "before": 1, - "after": 1, - "not_found": 1, - "mime_type": 1, - "enable": 1, - "disable": 1, - "use": 1, - "production": 1, - "settings": 2, - "target": 1, - "self.target": 1, - "Wrapper": 1, - "stack": 2, - "instance": 2, - "@stack": 1, - "@instance": 2, - "@instance.settings": 1, - "call": 1, - "env": 2, - "@stack.call": 1, - "self.new": 1, - "base": 4, - "base.class_eval": 1, - "Delegator.target.register": 1, - "self.helpers": 1, - "Delegator.target.helpers": 1, - "self.use": 1, - "Delegator.target.use": 1, - "SHEBANG#!python": 1 - }, - "Rust": { - "//": 20, - "use": 10, - "cell": 1, - "Cell": 2, - ";": 218, - "cmp": 1, - "Eq": 2, - "option": 4, - "result": 18, - "Result": 3, - "comm": 5, - "{": 213, - "stream": 21, - "Chan": 4, - "GenericChan": 1, - "GenericPort": 1, - "Port": 3, - "SharedChan": 4, - "}": 210, - "prelude": 1, - "*": 1, - "task": 39, - "rt": 29, - "task_id": 2, - "sched_id": 2, - "rust_task": 1, - "util": 4, - "replace": 8, - "mod": 5, - "local_data_priv": 1, - "pub": 26, - "local_data": 1, - "spawn": 15, - "///": 13, - "A": 6, - "handle": 3, - "to": 6, - "a": 9, - "scheduler": 6, - "#": 61, - "[": 61, - "deriving_eq": 3, - "]": 61, - "enum": 4, - "Scheduler": 4, - "SchedulerHandle": 2, - "(": 429, - ")": 434, - "Task": 2, - "TaskHandle": 2, - "TaskResult": 4, - "Success": 6, - "Failure": 6, - "impl": 3, - "for": 10, - "pure": 2, - "fn": 89, - "eq": 1, - "&": 30, - "self": 15, - "other": 4, - "-": 33, - "bool": 6, - "match": 4, - "|": 20, - "true": 9, - "_": 4, - "false": 7, - "ne": 1, - ".eq": 1, - "modes": 1, - "SchedMode": 4, - "Run": 3, - "on": 5, - "the": 10, - "default": 1, - "DefaultScheduler": 2, - "current": 1, - "CurrentScheduler": 2, - "specific": 1, - "ExistingScheduler": 1, - "PlatformThread": 2, - "All": 1, - "tasks": 1, - "run": 1, - "in": 3, - "same": 1, - "OS": 3, - "thread": 2, - "SingleThreaded": 4, - "Tasks": 2, - "are": 2, - "distributed": 2, - "among": 2, - "available": 1, - "CPUs": 1, - "ThreadPerCore": 2, - "Each": 1, - "runs": 1, - "its": 1, - "own": 1, - "ThreadPerTask": 1, - "fixed": 1, - "number": 1, - "of": 3, - "threads": 1, - "ManualThreads": 3, - "uint": 7, - "struct": 7, - "SchedOpts": 4, - "mode": 9, - "foreign_stack_size": 3, - "Option": 4, - "": 2, - "TaskOpts": 12, - "linked": 15, - "supervised": 11, - "mut": 16, - "notify_chan": 24, - "<": 3, - "": 3, - "sched": 10, - "TaskBuilder": 21, - "opts": 21, - "gen_body": 4, - "@fn": 2, - "v": 6, - "can_not_copy": 11, - "": 1, - "consumed": 4, - "default_task_opts": 4, - "body": 6, - "Identity": 1, - "function": 1, - "None": 23, - "doc": 1, - "hidden": 1, - "FIXME": 1, - "#3538": 1, - "priv": 1, - "consume": 1, - "if": 7, - "self.consumed": 2, - "fail": 17, - "Fake": 1, - "move": 1, - "let": 84, - "self.opts.notify_chan": 7, - "self.opts.linked": 4, - "self.opts.supervised": 5, - "self.opts.sched": 6, - "self.gen_body": 2, - "unlinked": 1, - "..": 8, - "self.consume": 7, - "future_result": 1, - "blk": 2, - "self.opts.notify_chan.is_some": 1, - "notify_pipe_po": 2, - "notify_pipe_ch": 2, - "Some": 8, - "Configure": 1, - "custom": 1, - "task.": 1, - "sched_mode": 1, - "add_wrapper": 1, - "wrapper": 2, - "prev_gen_body": 2, - "f": 38, - "x": 7, - "x.opts.linked": 1, - "x.opts.supervised": 1, - "x.opts.sched": 1, - "spawn_raw": 1, - "x.gen_body": 1, - "Runs": 1, - "while": 2, - "transfering": 1, - "ownership": 1, - "one": 1, - "argument": 1, - "child.": 1, - "spawn_with": 2, - "": 2, - "arg": 5, - "do": 49, - "self.spawn": 1, - "arg.take": 1, - "try": 5, - "": 2, - "T": 2, - "": 2, - "po": 11, - "ch": 26, - "": 1, - "fr_task_builder": 1, - "self.future_result": 1, - "+": 4, - "r": 6, - "fr_task_builder.spawn": 1, - "||": 11, - "ch.send": 11, - "unwrap": 3, - ".recv": 3, - "Ok": 3, - "po.recv": 10, - "Err": 2, - ".spawn": 9, - "spawn_unlinked": 6, - ".unlinked": 3, - "spawn_supervised": 5, - ".supervised": 2, - ".spawn_with": 1, - "spawn_sched": 8, - ".sched_mode": 2, - ".try": 1, - "yield": 16, - "Yield": 1, - "control": 1, - "unsafe": 31, - "task_": 2, - "rust_get_task": 5, - "killed": 3, - "rust_task_yield": 1, - "&&": 1, - "failing": 2, - "True": 1, - "running": 2, - "has": 1, - "failed": 1, - "rust_task_is_unwinding": 1, - "get_task": 1, - "Get": 1, - "get_task_id": 1, - "get_scheduler": 1, - "rust_get_sched_id": 6, - "unkillable": 5, - "": 3, - "U": 6, - "AllowFailure": 5, - "t": 24, - "*rust_task": 6, - "drop": 3, - "rust_task_allow_kill": 3, - "self.t": 4, - "_allow_failure": 2, - "rust_task_inhibit_kill": 3, - "The": 1, - "inverse": 1, - "unkillable.": 1, - "Only": 1, - "ever": 1, - "be": 2, - "used": 1, - "nested": 1, - ".": 1, - "rekillable": 1, - "DisallowFailure": 5, - "atomically": 3, - "DeferInterrupts": 5, - "rust_task_allow_yield": 1, - "_interrupts": 1, - "rust_task_inhibit_yield": 1, - "test": 31, - "should_fail": 11, - "ignore": 16, - "cfg": 16, - "windows": 14, - "test_cant_dup_task_builder": 1, - "b": 2, - "b.spawn": 2, - "should": 2, - "have": 1, - "been": 1, - "by": 1, - "previous": 1, - "call": 1, - "test_spawn_unlinked_unsup_no_fail_down": 1, - "grandchild": 1, - "sends": 1, - "port": 3, - "ch.clone": 2, - "iter": 8, - "repeat": 8, - "If": 1, - "first": 1, - "grandparent": 1, - "hangs.": 1, - "Shouldn": 1, - "leave": 1, - "child": 3, - "hanging": 1, - "around.": 1, - "test_spawn_linked_sup_fail_up": 1, - "fails": 4, - "parent": 2, - "_ch": 1, - "<()>": 6, - "opts.linked": 2, - "opts.supervised": 2, - "b0": 5, - "b1": 3, - "b1.spawn": 3, - "We": 1, - "get": 1, - "punted": 1, - "awake": 1, - "test_spawn_linked_sup_fail_down": 1, - "loop": 5, - "*both*": 1, - "mechanisms": 1, - "would": 1, - "wrong": 1, - "this": 1, - "didn": 1, - "s": 1, - "failure": 1, - "propagate": 1, - "across": 1, - "gap": 1, - "test_spawn_failure_propagate_secondborn": 1, - "test_spawn_failure_propagate_nephew_or_niece": 1, - "test_spawn_linked_sup_propagate_sibling": 1, - "test_run_basic": 1, - "Wrapper": 5, - "test_add_wrapper": 1, - "b0.add_wrapper": 1, - "ch.f.swap_unwrap": 4, - "test_future_result": 1, - ".future_result": 4, - "assert": 10, - "test_back_to_the_future_result": 1, - "test_try_success": 1, - "test_try_fail": 1, - "test_spawn_sched_no_threads": 1, - "u": 2, - "test_spawn_sched": 1, - "i": 3, - "int": 5, - "parent_sched_id": 4, - "child_sched_id": 5, - "else": 1, - "test_spawn_sched_childs_on_default_sched": 1, - "default_id": 2, - "nolink": 1, - "extern": 1, - "testrt": 9, - "rust_dbg_lock_create": 2, - "*libc": 6, - "c_void": 6, - "rust_dbg_lock_destroy": 2, - "lock": 13, - "rust_dbg_lock_lock": 3, - "rust_dbg_lock_unlock": 3, - "rust_dbg_lock_wait": 2, - "rust_dbg_lock_signal": 2, - "test_spawn_sched_blocking": 1, - "start_po": 1, - "start_ch": 1, - "fin_po": 1, - "fin_ch": 1, - "start_ch.send": 1, - "fin_ch.send": 1, - "start_po.recv": 1, - "pingpong": 3, - "": 2, - "val": 4, - "setup_po": 1, - "setup_ch": 1, - "parent_po": 2, - "parent_ch": 2, - "child_po": 2, - "child_ch": 4, - "setup_ch.send": 1, - "setup_po.recv": 1, - "child_ch.send": 1, - "fin_po.recv": 1, - "avoid_copying_the_body": 5, - "spawnfn": 2, - "p": 3, - "x_in_parent": 2, - "ptr": 2, - "addr_of": 2, - "as": 7, - "x_in_child": 4, - "p.recv": 1, - "test_avoid_copying_the_body_spawn": 1, - "test_avoid_copying_the_body_task_spawn": 1, - "test_avoid_copying_the_body_try": 1, - "test_avoid_copying_the_body_unlinked": 1, - "test_platform_thread": 1, - "test_unkillable": 1, - "pp": 2, - "*uint": 1, - "cast": 2, - "transmute": 2, - "_p": 1, - "test_unkillable_nested": 1, - "Here": 1, - "test_atomically_nested": 1, - "test_child_doesnt_ref_parent": 1, - "const": 1, - "generations": 2, - "child_no": 3, - "return": 1, - "test_sched_thread_per_core": 1, - "chan": 2, - "cores": 2, - "rust_num_threads": 1, - "reported_threads": 2, - "rust_sched_threads": 2, - "chan.send": 2, - "port.recv": 2, - "test_spawn_thread_on_demand": 1, - "max_threads": 2, - "running_threads": 2, - "rust_sched_current_nonlazy_threads": 2, - "port2": 1, - "chan2": 1, - "chan2.send": 1, - "running_threads2": 2, - "port2.recv": 1 - }, - "Sass": { - "blue": 7, - "#3bbfce": 2, - ";": 6, - "margin": 8, - "px": 3, - ".content_navigation": 1, - "{": 2, - "color": 4, - "}": 2, - ".border": 2, - "padding": 2, - "/": 4, - "border": 3, - "solid": 1, - ".content": 1, - "-": 3, - "navigation": 1, - "darken": 1, - "(": 1, - "%": 1, - ")": 1 - }, - "Scala": { - "SHEBANG#!sh": 2, - "exec": 2, - "scala": 2, - "#": 2, - "object": 3, - "Beers": 1, - "extends": 1, - "Application": 1, - "{": 21, - "def": 10, - "bottles": 3, - "(": 67, - "qty": 12, - "Int": 11, - "f": 4, - "String": 5, - ")": 67, - "//": 29, - "higher": 1, - "-": 5, - "order": 1, - "functions": 2, - "match": 2, - "case": 8, - "+": 49, - "x": 3, - "}": 22, - "beers": 3, - "sing": 3, - "implicit": 3, - "song": 3, - "takeOne": 2, - "nextQty": 2, - "nested": 1, - "if": 2, - "else": 2, - "refrain": 2, - ".capitalize": 1, - "tail": 1, - "recursion": 1, - "val": 6, - "headOfSong": 1, - "println": 8, - "parameter": 1, - "name": 4, - "version": 1, - "organization": 1, - "libraryDependencies": 3, - "%": 12, - "Seq": 3, - "libosmVersion": 4, - "from": 1, - "maxErrors": 1, - "pollInterval": 1, - "javacOptions": 1, - "scalacOptions": 1, - "scalaVersion": 1, - "initialCommands": 2, - "in": 12, - "console": 1, - "mainClass": 2, - "Compile": 4, - "packageBin": 1, - "Some": 6, - "run": 1, - "watchSources": 1, - "<+=>": 1, - "baseDirectory": 1, - "map": 1, - "_": 2, - "input": 1, - "add": 2, - "a": 4, - "maven": 2, - "style": 2, - "repository": 2, - "resolvers": 2, - "at": 4, - "url": 3, - "sequence": 1, - "of": 1, - "repositories": 1, - "define": 1, - "the": 5, - "to": 7, - "publish": 1, - "publishTo": 1, - "set": 2, - "Ivy": 1, - "logging": 1, - "be": 1, - "highest": 1, - "level": 1, - "ivyLoggingLevel": 1, - "UpdateLogging": 1, - "Full": 1, - "disable": 1, - "updating": 1, - "dynamic": 1, - "revisions": 1, - "including": 1, - "SNAPSHOT": 1, - "versions": 1, - "offline": 1, - "true": 5, - "prompt": 1, - "for": 1, - "this": 1, - "build": 1, - "include": 1, - "project": 1, - "id": 1, - "shellPrompt": 2, - "ThisBuild": 1, - "state": 3, - "Project.extract": 1, - ".currentRef.project": 1, - "System.getProperty": 1, - "showTiming": 1, - "false": 7, - "showSuccess": 1, - "timingFormat": 1, - "import": 9, - "java.text.DateFormat": 1, - "DateFormat.getDateTimeInstance": 1, - "DateFormat.SHORT": 2, - "crossPaths": 1, - "fork": 2, - "Test": 3, - "javaOptions": 1, - "parallelExecution": 2, - "javaHome": 1, - "file": 3, - "scalaHome": 1, - "aggregate": 1, - "clean": 1, - "logLevel": 2, - "compile": 1, - "Level.Warn": 2, - "persistLogLevel": 1, - "Level.Debug": 1, - "traceLevel": 2, - "unmanagedJars": 1, - "publishArtifact": 2, - "packageDoc": 2, - "artifactClassifier": 1, - "retrieveManaged": 1, - "credentials": 2, - "Credentials": 2, - "Path.userHome": 1, - "/": 2, - "math.random": 1, - "scala.language.postfixOps": 1, - "scala.util._": 1, - "scala.util.": 1, - "Try": 1, - "Success": 2, - "Failure": 2, - "scala.concurrent._": 1, - "duration._": 1, - "ExecutionContext.Implicits.global": 1, - "scala.concurrent.": 1, - "ExecutionContext": 1, - "CanAwait": 1, - "OnCompleteRunnable": 1, - "TimeoutException": 1, - "ExecutionException": 1, - "blocking": 3, - "node11": 1, - "Welcome": 1, - "Scala": 1, - "worksheet": 1, - "retry": 3, - "[": 11, - "T": 8, - "]": 11, - "n": 3, - "block": 8, - "Future": 5, - "ns": 1, - "Iterator": 2, - ".iterator": 1, - "attempts": 1, - "ns.map": 1, - "failed": 2, - "Future.failed": 1, - "new": 1, - "Exception": 2, - "attempts.foldLeft": 1, - "fallbackTo": 1, - "scala.concurrent.Future": 1, - "scala.concurrent.Fut": 1, - "|": 19, - "ure": 1, - "rb": 3, - "i": 9, - "Thread.sleep": 2, - "*random.toInt": 1, - "i.toString": 5, - "ri": 2, - "onComplete": 1, - "s": 1, - "s.toString": 1, - "t": 1, - "t.toString": 1, - "r": 1, - "r.toString": 1, - "Unit": 1, - "toList": 1, - ".foreach": 1, - "Iteration": 5, - "java.lang.Exception": 1, - "Hi": 10, - "HelloWorld": 1, - "main": 1, - "args": 1, - "Array": 1 - }, - "Scaml": { - "%": 1, - "p": 1, - "Hello": 1, - "World": 1 - }, - "Scheme": { - "(": 359, - "import": 1, - "rnrs": 1, - ")": 373, - "only": 1, - "surfage": 4, - "s1": 1, - "lists": 1, - "filter": 4, - "-": 188, - "map": 4, - "gl": 12, - "glut": 2, - "dharmalab": 2, - "records": 1, - "define": 27, - "record": 5, - "type": 5, - "math": 1, - "basic": 1, - "agave": 4, - "glu": 1, - "compat": 1, - "geometry": 1, - "pt": 49, - "glamour": 2, - "window": 2, - "misc": 1, - "s19": 1, - "time": 24, - "s27": 1, - "random": 27, - "bits": 1, - "s42": 1, - "eager": 1, - "comprehensions": 1, - ";": 1684, - "utilities": 1, - "say": 9, - ".": 1, - "args": 2, - "for": 7, - "each": 7, - "display": 4, - "newline": 2, - "translate": 6, - "p": 6, - "glTranslated": 1, - "x": 8, - "y": 3, - "radians": 8, - "/": 7, - "pi": 2, - "degrees": 2, - "angle": 6, - "a": 19, - "cos": 1, - "sin": 1, - "current": 15, - "in": 14, - "nanoseconds": 2, - "let": 2, - "val": 3, - "+": 28, - "second": 1, - "nanosecond": 1, - "seconds": 12, - "micro": 1, - "milli": 1, - "base": 2, - "step": 1, - "score": 5, - "level": 5, - "ships": 1, - "spaceship": 5, - "fields": 4, - "mutable": 14, - "pos": 16, - "vel": 4, - "theta": 1, - "force": 1, - "particle": 8, - "birth": 2, - "lifetime": 1, - "color": 2, - "particles": 11, - "asteroid": 14, - "radius": 6, - "number": 3, - "of": 3, - "starting": 3, - "asteroids": 15, - "#f": 5, - "bullet": 16, - "pack": 12, - "is": 8, - "initialize": 1, - "size": 1, - "title": 1, - "reshape": 1, - "width": 8, - "height": 8, - "source": 2, - "randomize": 1, - "default": 1, - "wrap": 4, - "mod": 2, - "ship": 8, - "make": 11, - "ammo": 9, - "set": 19, - "list": 6, - "ec": 6, - "i": 6, - "inexact": 16, - "integer": 25, - "buffered": 1, - "procedure": 1, - "lambda": 12, - "background": 1, - "glColor3f": 5, - "matrix": 5, - "excursion": 5, - "ship.pos": 5, - "glRotated": 2, - "ship.theta": 10, - "glutWireCone": 1, - "par": 6, - "c": 4, - "vector": 6, - "ref": 3, - "glutWireSphere": 3, - "bullets": 7, - "pack.pos": 3, - "glutWireCube": 1, - "last": 3, - "dt": 7, - "update": 2, - "system": 2, - "pt*n": 8, - "ship.vel": 5, - "pack.vel": 1, - "cond": 2, - "par.birth": 1, - "par.lifetime": 1, - "else": 2, - "par.pos": 2, - "par.vel": 1, - "bullet.birth": 1, - "bullet.pos": 2, - "bullet.vel": 1, - "a.pos": 2, - "a.vel": 1, - "if": 1, - "<": 1, - "a.radius": 1, - "contact": 2, - "b": 4, - "when": 5, - "<=>": 3, - "distance": 3, - "begin": 1, - "1": 2, - "f": 1, - "append": 4, - "4": 1, - "50": 4, - "0": 7, - "100": 6, - "2": 1, - "n": 2, - "null": 1, - "10": 1, - "5": 1, - "glutIdleFunc": 1, - "glutPostRedisplay": 1, - "glutKeyboardFunc": 1, - "key": 2, - "case": 1, - "char": 1, - "#": 6, - "w": 1, - "d": 1, - "s": 1, - "space": 1, - "cons": 1, - "glutMainLoop": 1 - }, - "Scilab": { - "function": 1, - "[": 1, - "a": 4, - "b": 4, - "]": 1, - "myfunction": 1, - "(": 7, - "d": 2, - "e": 4, - "f": 2, - ")": 7, - "+": 5, - "%": 4, - "pi": 3, - ";": 7, - "cos": 1, - "cosh": 1, - "if": 1, - "then": 1, - "-": 2, - "e.field": 1, - "else": 1, - "home": 1, - "return": 1, - "end": 1, - "myvar": 1, - "endfunction": 1, - "disp": 1, - "assert_checkequal": 1, - "assert_checkfalse": 1 - }, - "SCSS": { - "blue": 4, - "#3bbfce": 1, - ";": 7, - "margin": 4, - "px": 1, - ".content": 1, - "-": 3, - "navigation": 1, - "{": 2, - "border": 2, - "color": 3, - "darken": 1, - "(": 1, - "%": 1, - ")": 1, - "}": 2, - ".border": 1, - "padding": 1, - "/": 2 - }, - "Shell": { - "SHEBANG#!bash": 8, - "typeset": 5, - "-": 391, - "i": 2, - "n": 22, - "bottles": 6, - "no": 16, - "while": 3, - "[": 85, - "]": 85, - "do": 8, - "echo": 71, - "case": 9, - "{": 63, - "}": 61, - "in": 25, - ")": 154, - "%": 5, - "s": 14, - ";": 138, - "esac": 7, - "done": 8, - "exit": 10, - "/usr/bin/clear": 2, - "##": 28, - "if": 39, - "z": 12, - "then": 41, - "export": 25, - "SCREENDIR": 2, - "fi": 34, - "PATH": 14, - "/usr/local/bin": 6, - "/usr/local/sbin": 6, - "/usr/xpg4/bin": 4, - "/usr/sbin": 6, - "/usr/bin": 8, - "/usr/sfw/bin": 4, - "/usr/ccs/bin": 4, - "/usr/openwin/bin": 4, - "/opt/mysql/current/bin": 4, - "MANPATH": 2, - "/usr/local/man": 2, - "/usr/share/man": 2, - "Random": 2, - "ENV...": 2, - "TERM": 4, - "COLORTERM": 2, - "CLICOLOR": 2, - "#": 53, - "can": 3, - "be": 3, - "set": 21, - "to": 33, - "anything": 2, - "actually": 2, - "DISPLAY": 2, - "r": 17, - "&&": 65, - ".": 5, - "function": 6, - "ls": 6, - "command": 5, - "Fh": 2, - "l": 8, - "list": 3, - "long": 2, - "format...": 2, - "ll": 2, - "|": 17, - "less": 2, - "XF": 2, - "pipe": 2, - "into": 3, - "#CDPATH": 2, - "HISTIGNORE": 2, - "HISTCONTROL": 2, - "ignoreboth": 2, - "shopt": 13, - "cdspell": 2, - "extglob": 2, - "progcomp": 2, - "complete": 82, - "f": 68, - "X": 54, - "bunzip2": 2, - "bzcat": 2, - "bzcmp": 2, - "bzdiff": 2, - "bzegrep": 2, - "bzfgrep": 2, - "bzgrep": 2, - "unzip": 2, - "zipinfo": 2, - "compress": 2, - "znew": 2, - "gunzip": 2, - "zcmp": 2, - "zdiff": 2, - "zcat": 2, - "zegrep": 2, - "zfgrep": 2, - "zgrep": 2, - "zless": 2, - "zmore": 2, - "uncompress": 2, - "ee": 2, - "display": 2, - "xv": 2, - "qiv": 2, - "gv": 2, - "ggv": 2, - "xdvi": 2, - "dvips": 2, - "dviselect": 2, - "dvitype": 2, - "acroread": 2, - "xpdf": 2, - "makeinfo": 2, - "texi2html": 2, - "tex": 2, - "latex": 2, - "slitex": 2, - "jadetex": 2, - "pdfjadetex": 2, - "pdftex": 2, - "pdflatex": 2, - "texi2dvi": 2, - "mpg123": 2, - "mpg321": 2, - "xine": 2, - "aviplay": 2, - "realplay": 2, - "xanim": 2, - "ogg123": 2, - "gqmpeg": 2, - "freeamp": 2, - "xmms": 2, - "xfig": 2, - "timidity": 2, - "playmidi": 2, - "vi": 2, - "vim": 2, - "gvim": 2, - "rvim": 2, - "view": 2, - "rview": 2, - "rgvim": 2, - "rgview": 2, - "gview": 2, - "emacs": 2, - "wine": 2, - "bzme": 2, - "netscape": 2, - "mozilla": 2, - "lynx": 2, - "opera": 2, - "w3m": 2, - "galeon": 2, - "curl": 8, - "dillo": 2, - "elinks": 2, - "links": 2, - "u": 2, - "su": 2, - "passwd": 2, - "groups": 2, - "user": 2, - "commands": 8, - "see": 4, - "only": 6, - "users": 2, - "A": 10, - "stopped": 4, - "P": 4, - "bg": 4, - "completes": 10, - "with": 12, - "jobs": 4, - "j": 2, - "fg": 2, - "disown": 2, - "other": 2, - "job": 3, - "v": 11, - "readonly": 4, - "unset": 10, - "and": 5, - "shell": 4, - "variables": 2, - "setopt": 8, - "options": 8, - "helptopic": 2, - "help": 5, - "helptopics": 2, - "a": 12, - "unalias": 4, - "aliases": 2, - "binding": 2, - "bind": 4, - "readline": 2, - "bindings": 2, - "(": 107, - "make": 6, - "this": 6, - "more": 3, - "intelligent": 2, - "c": 2, - "type": 5, - "which": 10, - "man": 6, - "#sudo": 2, - "on": 4, - "d": 9, - "pushd": 2, - "cd": 11, - "rmdir": 2, - "Make": 2, - "directory": 5, - "directories": 2, - "W": 2, - "alias": 42, - "filenames": 2, - "for": 7, - "PS1": 2, - "..": 2, - "cd..": 2, - "t": 3, - "csh": 2, - "is": 11, - "same": 2, - "as": 2, - "bash...": 2, - "quit": 2, - "q": 8, - "even": 3, - "shorter": 2, - "D": 2, - "rehash": 2, - "source": 7, - "/.bashrc": 3, - "after": 2, - "I": 2, - "edit": 2, - "it": 2, - "pg": 2, - "patch": 2, - "sed": 2, - "awk": 2, - "diff": 2, - "grep": 8, - "find": 2, - "ps": 2, - "whoami": 2, - "ping": 2, - "histappend": 2, - "PROMPT_COMMAND": 2, - "umask": 2, - "path": 13, - "/opt/local/bin": 2, - "/opt/local/sbin": 2, - "/bin": 4, - "prompt": 2, - "history": 18, - "endif": 2, - "stty": 2, - "istrip": 2, - "dirpersiststore": 2, - "##############################################################################": 16, - "#Import": 2, - "the": 17, - "agnostic": 2, - "Bash": 3, - "or": 3, - "Zsh": 2, - "environment": 2, - "config": 4, - "/.profile": 2, - "HISTSIZE": 2, - "#How": 2, - "many": 2, - "lines": 2, - "of": 6, - "keep": 3, - "memory": 3, - "HISTFILE": 2, - "/.zsh_history": 2, - "#Where": 2, - "save": 4, - "disk": 5, - "SAVEHIST": 2, - "#Number": 2, - "entries": 2, - "HISTDUP": 2, - "erase": 2, - "#Erase": 2, - "duplicates": 2, - "file": 9, - "appendhistory": 2, - "#Append": 2, - "overwriting": 2, - "sharehistory": 2, - "#Share": 2, - "across": 2, - "terminals": 2, - "incappendhistory": 2, - "#Immediately": 2, - "append": 2, - "not": 2, - "just": 2, - "when": 2, - "term": 2, - "killed": 2, - "#.": 2, - "/.dotfiles/z": 4, - "zsh/z.sh": 2, - "#function": 2, - "precmd": 2, - "rupa/z.sh": 2, - "fpath": 6, - "HOME/.zsh/func": 2, - "U": 2, - "docker": 1, - "version": 12, - "from": 1, - "ubuntu": 1, - "maintainer": 1, - "Solomon": 1, - "Hykes": 1, - "": 1, - "run": 13, - "apt": 6, - "get": 6, - "install": 8, - "y": 5, - "git": 16, - "https": 2, - "//go.googlecode.com/files/go1.1.1.linux": 1, - "amd64.tar.gz": 1, - "tar": 1, - "C": 1, - "/usr/local": 1, - "xz": 1, - "env": 4, - "/usr/local/go/bin": 2, - "/sbin": 2, - "GOPATH": 1, - "/go": 1, - "CGO_ENABLED": 1, - "/tmp": 1, - "t.go": 1, - "go": 2, - "test": 1, - "PKG": 12, - "github.com/kr/pty": 1, - "REV": 6, - "c699": 1, - "clone": 5, - "http": 3, - "//": 3, - "/go/src/": 6, - "checkout": 3, - "github.com/gorilla/context/": 1, - "d61e5": 1, - "github.com/gorilla/mux/": 1, - "b36453141c": 1, - "iptables": 1, - "/etc/apt/sources.list": 1, - "update": 2, - "lxc": 1, - "aufs": 1, - "tools": 1, - "add": 1, - "/go/src/github.com/dotcloud/docker": 1, - "/go/src/github.com/dotcloud/docker/docker": 1, - "ldflags": 1, - "/go/bin": 1, - "cmd": 1, - "pkgname": 1, - "stud": 4, - "pkgver": 1, - "pkgrel": 1, - "pkgdesc": 1, - "arch": 1, - "i686": 1, - "x86_64": 1, - "url": 4, - "license": 1, - "depends": 1, - "libev": 1, - "openssl": 1, - "makedepends": 1, - "provides": 1, - "conflicts": 1, - "_gitroot": 1, - "//github.com/bumptech/stud.git": 1, - "_gitname": 1, - "build": 2, - "msg": 4, - "pull": 3, - "origin": 1, - "else": 10, - "rm": 2, - "rf": 1, - "package": 1, - "PREFIX": 1, - "/usr": 1, - "DESTDIR": 1, - "Dm755": 1, - "init.stud": 1, - "mkdir": 2, - "p": 2, - "script": 1, - "dotfile": 1, - "repository": 3, - "does": 1, - "lot": 1, - "fun": 2, - "stuff": 3, - "like": 1, - "turning": 1, - "normal": 1, - "dotfiles": 1, - "eg": 1, - ".bashrc": 1, - "symlinks": 1, - "away": 1, - "optionally": 1, - "moving": 1, - "old": 4, - "files": 1, - "so": 1, - "that": 1, - "they": 1, - "preserved": 1, - "setting": 2, - "up": 1, - "cron": 1, - "automate": 1, - "aforementioned": 1, - "maybe": 1, - "some": 1, - "nocasematch": 1, - "This": 1, - "makes": 1, - "pattern": 1, - "matching": 1, - "insensitive": 1, - "POSTFIX": 1, - "URL": 1, - "PUSHURL": 1, - "overwrite": 3, - "true": 2, - "print_help": 2, - "e": 4, - "opt": 3, - "@": 3, - "k": 1, - "local": 22, - "false": 2, - "h": 3, - ".*": 2, - "o": 3, - "continue": 1, - "mv": 1, - "ln": 1, - "remote.origin.url": 1, - "remote.origin.pushurl": 1, - "crontab": 1, - ".jobs.cron": 1, - "x": 1, - "system": 1, - "exec": 3, - "rbenv": 2, - "versions": 1, - "bare": 1, - "&": 5, - "prefix": 1, - "/dev/null": 6, - "rvm_ignore_rvmrc": 1, - "declare": 22, - "rvmrc": 3, - "rvm_rvmrc_files": 3, - "ef": 1, - "+": 1, - "GREP_OPTIONS": 1, - "printf": 4, - "rvm_path": 4, - "UID": 1, - "elif": 4, - "rvm_is_not_a_shell_function": 2, - "rvm_path/scripts": 1, - "rvm": 1, - "sbt_release_version": 2, - "sbt_snapshot_version": 2, - "SNAPSHOT": 3, - "sbt_jar": 3, - "sbt_dir": 2, - "sbt_create": 2, - "sbt_snapshot": 1, - "sbt_launch_dir": 3, - "scala_version": 3, - "java_home": 1, - "sbt_explicit_version": 7, - "verbose": 6, - "debug": 11, - "quiet": 6, - "build_props_sbt": 3, - "project/build.properties": 9, - "versionLine": 2, - "sbt.version": 3, - "versionString": 3, - "versionLine##sbt.version": 1, - "update_build_props_sbt": 2, - "ver": 5, - "return": 3, - "perl": 3, - "pi": 1, - "||": 12, - "Updated": 1, - "Previous": 1, - "value": 1, - "was": 1, - "sbt_version": 8, - "echoerr": 3, - "vlog": 1, - "dlog": 8, - "get_script_path": 2, - "L": 1, - "target": 1, - "readlink": 1, - "get_mem_opts": 3, - "mem": 4, - "perm": 6, - "/": 2, - "<": 2, - "codecache": 1, - "die": 2, - "make_url": 3, - "groupid": 1, - "category": 1, - "default_jvm_opts": 1, - "default_sbt_opts": 1, - "default_sbt_mem": 2, - "noshare_opts": 1, - "sbt_opts_file": 1, - "jvm_opts_file": 1, - "latest_28": 1, - "latest_29": 1, - "latest_210": 1, - "script_path": 1, - "script_dir": 1, - "script_name": 2, - "java_cmd": 2, - "java": 2, - "sbt_mem": 5, - "residual_args": 4, - "java_args": 3, - "scalac_args": 4, - "sbt_commands": 2, - "build_props_scala": 1, - "build.scala.versions": 1, - "versionLine##build.scala.versions": 1, - "execRunner": 2, - "arg": 3, - "sbt_groupid": 3, - "*": 11, - "org.scala": 4, - "tools.sbt": 3, - "sbt": 18, - "sbt_artifactory_list": 2, - "version0": 2, - "F": 1, - "pe": 1, - "make_release_url": 2, - "releases": 1, - "make_snapshot_url": 2, - "snapshots": 1, - "head": 1, - "jar_url": 1, - "jar_file": 1, - "download_url": 2, - "jar": 3, - "dirname": 1, - "fail": 1, - "silent": 1, - "output": 1, - "wget": 2, - "O": 1, - "acquire_sbt_jar": 1, - "sbt_url": 1, - "usage": 2, - "cat": 3, - "<<": 2, - "EOM": 3, - "Usage": 1, - "print": 1, - "message": 1, - "runner": 1, - "chattier": 1, - "log": 2, - "level": 2, - "Debug": 1, - "Error": 1, - "colors": 2, - "disable": 1, - "ANSI": 1, - "color": 1, - "codes": 1, - "create": 2, - "start": 1, - "current": 1, - "contains": 2, - "project": 1, - "dir": 3, - "": 3, - "global": 1, - "settings/plugins": 1, - "default": 4, - "/.sbt/": 1, - "": 1, - "boot": 3, - "shared": 1, - "/.sbt/boot": 1, - "series": 1, - "ivy": 2, - "Ivy": 1, - "/.ivy2": 1, - "": 1, - "share": 2, - "use": 1, - "all": 1, - "caches": 1, - "sharing": 1, - "offline": 3, - "put": 1, - "mode": 2, - "jvm": 2, - "": 1, - "Turn": 1, - "JVM": 1, - "debugging": 1, - "open": 1, - "at": 1, - "given": 2, - "port.": 1, - "batch": 2, - "Disable": 1, - "interactive": 1, - "The": 1, - "way": 1, - "accomplish": 1, - "pre": 1, - "there": 2, - "build.properties": 1, - "an": 1, - "property": 1, - "disk.": 1, - "That": 1, - "scalacOptions": 3, - "S": 2, - "stripped": 1, - "In": 1, - "duplicated": 1, - "conflicting": 1, - "order": 1, - "above": 1, - "shows": 1, - "precedence": 1, - "JAVA_OPTS": 1, - "lowest": 1, - "line": 1, - "highest.": 1, - "addJava": 9, - "addSbt": 12, - "addScalac": 2, - "addResidual": 2, - "addResolver": 1, - "addDebugger": 2, - "get_jvm_opts": 2, - "process_args": 2, - "require_arg": 12, - "gt": 1, - "shift": 28, - "integer": 1, - "inc": 1, - "port": 1, - "snapshot": 1, - "launch": 1, - "scala": 3, - "home": 2, - "D*": 1, - "J*": 1, - "S*": 1, - "sbtargs": 3, - "IFS": 1, - "read": 1, - "<\"$sbt_opts_file\">": 1, - "process": 1, - "combined": 1, - "args": 2, - "reset": 1, - "residuals": 1, - "argumentCount=": 1, - "we": 1, - "were": 1, - "any": 1, - "opts": 1, - "eq": 1, - "0": 1, - "ThisBuild": 1, - "Update": 1, - "properties": 1, - "explicit": 1, - "gives": 1, - "us": 1, - "choice": 1, - "Detected": 1, - "Overriding": 1, - "alert": 1, - "them": 1, - "here": 1, - "argumentCount": 1, - "./build.sbt": 1, - "./project": 1, - "pwd": 1, - "doesn": 1, - "understand": 1, - "iflast": 1, - "#residual_args": 1, - "SHEBANG#!sh": 2, - "SHEBANG#!zsh": 2, - "name": 1, - "foodforthought.jpg": 1, - "name##*fo": 1 - }, - "Slash": { - "<%>": 1, - "class": 11, - "Env": 1, - "def": 18, - "init": 4, - "memory": 3, - "ptr": 9, - "0": 3, - "ptr=": 1, - "current_value": 5, - "current_value=": 1, - "value": 1, - "AST": 4, - "Next": 1, - "eval": 10, - "env": 16, - "Prev": 1, - "Inc": 1, - "Dec": 1, - "Output": 1, - "print": 1, - "char": 5, - "Input": 1, - "Sequence": 2, - "nodes": 6, - "for": 2, - "node": 2, - "in": 2, - "Loop": 1, - "seq": 4, - "while": 1, - "Parser": 1, - "str": 2, - "chars": 2, - "split": 1, - "parse": 1, - "stack": 3, - "_parse_char": 2, - "if": 1, - "length": 1, - "1": 1, - "throw": 1, - "SyntaxError": 1, - "new": 2, - "unexpected": 2, - "end": 1, - "of": 1, - "input": 1, - "last": 1, - "switch": 1, - "<": 1, - "+": 1, - "-": 1, - ".": 1, - "[": 1, - "]": 1, - ")": 7, - ";": 6, - "}": 3, - "@stack.pop": 1, - "_add": 1, - "(": 6, - "Loop.new": 1, - "Sequence.new": 1, - "src": 2, - "File.read": 1, - "ARGV.first": 1, - "ast": 1, - "Parser.new": 1, - ".parse": 1, - "ast.eval": 1, - "Env.new": 1 - }, - "Squirrel": { - "//example": 1, - "from": 1, - "http": 1, - "//www.squirrel": 1, - "-": 1, - "lang.org/#documentation": 1, - "local": 3, - "table": 1, - "{": 10, - "a": 2, - "subtable": 1, - "array": 3, - "[": 3, - "]": 3, - "}": 10, - "+": 2, - "b": 1, - ";": 15, - "foreach": 1, - "(": 10, - "i": 1, - "val": 2, - "in": 1, - ")": 10, - "print": 2, - "typeof": 1, - "/////////////////////////////////////////////": 1, - "class": 2, - "Entity": 3, - "constructor": 2, - "etype": 2, - "entityname": 4, - "name": 2, - "type": 2, - "x": 2, - "y": 2, - "z": 2, - "null": 2, - "function": 2, - "MoveTo": 1, - "newx": 2, - "newy": 2, - "newz": 2, - "Player": 2, - "extends": 1, - "base.constructor": 1, - "DoDomething": 1, - "newplayer": 1, - "newplayer.MoveTo": 1 - }, - "Standard ML": { - "signature": 2, - "LAZY_BASE": 3, - "sig": 2, - "type": 5, - "a": 74, - "lazy": 12, - "-": 19, - ")": 826, - "end": 52, - "LAZY": 1, - "bool": 9, - "val": 143, - "inject": 3, - "toString": 3, - "(": 822, - "string": 14, - "eq": 2, - "*": 9, - "eqBy": 3, - "compare": 7, - "order": 2, - "map": 2, - "b": 58, - "structure": 10, - "Ops": 2, - "LazyBase": 2, - "struct": 9, - "exception": 1, - "Undefined": 3, - "fun": 51, - "delay": 3, - "f": 37, - "force": 9, - "undefined": 1, - "fn": 124, - "raise": 5, - "LazyMemoBase": 2, - "datatype": 28, - "|": 225, - "Done": 1, - "of": 90, - "unit": 6, - "let": 43, - "open": 8, - "B": 1, - "x": 59, - "isUndefined": 2, - "ignore": 2, - ";": 20, - "false": 31, - "handle": 3, - "true": 35, - "if": 50, - "then": 50, - "else": 50, - "p": 6, - "y": 44, - "op": 1, - "Lazy": 1, - "LazyFn": 2, - "LazyMemo": 1, - "functor": 2, - "Main": 1, - "S": 2, - "MAIN_STRUCTS": 1, - "MAIN": 1, - "Compile": 3, - "Place": 1, - "t": 23, - "Files": 3, - "Generated": 4, - "MLB": 4, - "O": 4, - "OUT": 3, - "SML": 6, - "TypeCheck": 3, - "toInt": 1, - "int": 1, - "OptPred": 1, - "Target": 1, - "Yes": 1, - "Show": 1, - "Anns": 1, - "PathMap": 1, - "gcc": 5, - "ref": 45, - "arScript": 3, - "asOpts": 6, - "{": 79, - "opt": 34, - "pred": 15, - "OptPred.t": 3, - "}": 79, - "list": 10, - "[": 104, - "]": 108, - "ccOpts": 6, - "linkOpts": 6, - "buildConstants": 2, - "debugRuntime": 3, - "debugFormat": 5, - "Dwarf": 3, - "DwarfPlus": 3, - "Dwarf2": 3, - "Stabs": 3, - "StabsPlus": 3, - "option": 6, - "NONE": 47, - "expert": 3, - "explicitAlign": 3, - "Control.align": 1, - "explicitChunk": 2, - "Control.chunk": 1, - "explicitCodegen": 5, - "Native": 5, - "Explicit": 5, - "Control.codegen": 3, - "keepGenerated": 3, - "keepO": 3, - "output": 16, - "profileSet": 3, - "profileTimeSet": 3, - "runtimeArgs": 3, - "show": 2, - "Show.t": 1, - "stop": 10, - "Place.OUT": 1, - "parseMlbPathVar": 3, - "line": 9, - "String.t": 1, - "case": 83, - "String.tokens": 7, - "Char.isSpace": 8, - "var": 3, - "path": 7, - "SOME": 68, - "_": 83, - "readMlbPathMap": 2, - "file": 14, - "File.t": 12, - "not": 1, - "File.canRead": 1, - "Error.bug": 14, - "concat": 52, - "List.keepAllMap": 4, - "File.lines": 2, - "String.forall": 4, - "v": 4, - "targetMap": 5, - "arch": 11, - "MLton.Platform.Arch.t": 3, - "os": 13, - "MLton.Platform.OS.t": 3, - "target": 28, - "Promise.lazy": 1, - "targetsDir": 5, - "OS.Path.mkAbsolute": 4, - "relativeTo": 4, - "Control.libDir": 1, - "potentialTargets": 2, - "Dir.lsDirs": 1, - "targetDir": 5, - "osFile": 2, - "OS.Path.joinDirFile": 3, - "dir": 4, - "archFile": 2, - "File.contents": 2, - "List.first": 2, - "MLton.Platform.OS.fromString": 1, - "MLton.Platform.Arch.fromString": 1, - "in": 40, - "setTargetType": 3, - "usage": 48, - "List.peek": 7, - "...": 23, - "Control": 3, - "Target.arch": 2, - "Target.os": 2, - "hasCodegen": 8, - "cg": 21, - "z": 73, - "Control.Target.arch": 4, - "Control.Target.os": 2, - "Control.Format.t": 1, - "AMD64": 2, - "x86Codegen": 9, - "X86": 3, - "amd64Codegen": 8, - "<": 3, - "Darwin": 6, - "orelse": 7, - "Control.format": 3, - "Executable": 5, - "Archive": 4, - "hasNativeCodegen": 2, - "defaultAlignIs8": 3, - "Alpha": 1, - "ARM": 1, - "HPPA": 1, - "IA64": 1, - "MIPS": 1, - "Sparc": 1, - "S390": 1, - "makeOptions": 3, - "s": 168, - "Fail": 2, - "reportAnnotation": 4, - "flag": 12, - "e": 18, - "Control.Elaborate.Bad": 1, - "Control.Elaborate.Deprecated": 1, - "ids": 2, - "Control.warnDeprecated": 1, - "Out.output": 2, - "Out.error": 3, - "List.toString": 1, - "Control.Elaborate.Id.name": 1, - "Control.Elaborate.Good": 1, - "Control.Elaborate.Other": 1, - "Popt": 1, - "tokenizeOpt": 4, - "opts": 4, - "List.foreach": 5, - "tokenizeTargetOpt": 4, - "List.map": 3, - "Normal": 29, - "SpaceString": 48, - "Align4": 2, - "Align8": 2, - "Expert": 72, - "o": 8, - "List.push": 22, - "OptPred.Yes": 6, - "boolRef": 20, - "ChunkPerFunc": 1, - "OneChunk": 1, - "String.hasPrefix": 2, - "prefix": 3, - "String.dropPrefix": 1, - "Char.isDigit": 3, - "Int.fromString": 4, - "n": 4, - "Coalesce": 1, - "limit": 1, - "Bool": 10, - "closureConvertGlobalize": 1, - "closureConvertShrink": 1, - "String.concatWith": 2, - "Control.Codegen.all": 2, - "Control.Codegen.toString": 2, - "name": 7, - "value": 4, - "Compile.setCommandLineConstant": 2, - "contifyIntoMain": 1, - "debug": 4, - "Control.Elaborate.processDefault": 1, - "Control.defaultChar": 1, - "Control.defaultInt": 5, - "Control.defaultReal": 2, - "Control.defaultWideChar": 2, - "Control.defaultWord": 4, - "Regexp.fromString": 7, - "re": 34, - "Regexp.compileDFA": 4, - "diagPasses": 1, - "Control.Elaborate.processEnabled": 2, - "dropPasses": 1, - "intRef": 8, - "errorThreshhold": 1, - "emitMain": 1, - "exportHeader": 3, - "Control.Format.all": 2, - "Control.Format.toString": 2, - "gcCheck": 1, - "Limit": 1, - "First": 1, - "Every": 1, - "Native.IEEEFP": 1, - "indentation": 1, - "Int": 8, - "i": 8, - "inlineNonRec": 6, - "small": 19, - "product": 19, - "#product": 1, - "inlineIntoMain": 1, - "loops": 18, - "inlineLeafA": 6, - "repeat": 18, - "size": 19, - "inlineLeafB": 6, - "keepCoreML": 1, - "keepDot": 1, - "keepMachine": 1, - "keepRSSA": 1, - "keepSSA": 1, - "keepSSA2": 1, - "keepSXML": 1, - "keepXML": 1, - "keepPasses": 1, - "libname": 9, - "loopPasses": 1, - "Int.toString": 3, - "markCards": 1, - "maxFunctionSize": 1, - "mlbPathVars": 4, - "@": 3, - "Native.commented": 1, - "Native.copyProp": 1, - "Native.cutoff": 1, - "Native.liveTransfer": 1, - "Native.liveStack": 1, - "Native.moveHoist": 1, - "Native.optimize": 1, - "Native.split": 1, - "Native.shuffle": 1, - "err": 1, - "optimizationPasses": 1, - "il": 10, - "set": 10, - "Result.Yes": 6, - "Result.No": 5, - "polyvariance": 9, - "hofo": 12, - "rounds": 12, - "preferAbsPaths": 1, - "profPasses": 1, - "profile": 6, - "ProfileNone": 2, - "ProfileAlloc": 1, - "ProfileCallStack": 3, - "ProfileCount": 1, - "ProfileDrop": 1, - "ProfileLabel": 1, - "ProfileTimeLabel": 4, - "ProfileTimeField": 2, - "profileBranch": 1, - "Regexp": 3, - "seq": 3, - "anys": 6, - "compileDFA": 3, - "profileC": 1, - "profileInclExcl": 2, - "profileIL": 3, - "ProfileSource": 1, - "ProfileSSA": 1, - "ProfileSSA2": 1, - "profileRaise": 2, - "profileStack": 1, - "profileVal": 1, - "Show.Anns": 1, - "Show.PathMap": 1, - "showBasis": 1, - "showDefUse": 1, - "showTypes": 1, - "Control.optimizationPasses": 4, - "String.equals": 4, - "Place.Files": 2, - "Place.Generated": 2, - "Place.O": 3, - "Place.TypeCheck": 1, - "#target": 2, - "Self": 2, - "Cross": 2, - "SpaceString2": 6, - "OptPred.Target": 6, - "#1": 1, - "trace": 4, - "#2": 2, - "typeCheck": 1, - "verbosity": 4, - "Silent": 3, - "Top": 5, - "Pass": 1, - "Detail": 1, - "warnAnn": 1, - "warnDeprecated": 1, - "zoneCutDepth": 1, - "style": 6, - "arg": 3, - "desc": 3, - "mainUsage": 3, - "parse": 2, - "Popt.makeUsage": 1, - "showExpert": 1, - "commandLine": 5, - "args": 8, - "lib": 2, - "libDir": 2, - "OS.Path.mkCanonical": 1, - "result": 1, - "targetStr": 3, - "libTargetDir": 1, - "targetArch": 4, - "archStr": 1, - "String.toLower": 2, - "MLton.Platform.Arch.toString": 2, - "targetOS": 5, - "OSStr": 2, - "MLton.Platform.OS.toString": 1, - "positionIndependent": 3, - "format": 7, - "MinGW": 4, - "Cygwin": 4, - "Library": 6, - "LibArchive": 3, - "Control.positionIndependent": 1, - "align": 1, - "codegen": 4, - "CCodegen": 1, - "MLton.Rusage.measureGC": 1, - "exnHistory": 1, - "Bool.toString": 1, - "Control.profile": 1, - "Control.ProfileCallStack": 1, - "sizeMap": 1, - "Control.libTargetDir": 1, - "ty": 4, - "Bytes.toBits": 1, - "Bytes.fromInt": 1, - "lookup": 4, - "use": 2, - "on": 1, - "must": 1, - "x86": 1, - "with": 1, - "ieee": 1, - "fp": 1, - "can": 1, - "No": 1, - "Out.standard": 1, - "input": 22, - "rest": 3, - "inputFile": 1, - "File.base": 5, - "File.fileOf": 1, - "start": 6, - "base": 3, - "rec": 1, - "loop": 3, - "suf": 14, - "hasNum": 2, - "sufs": 2, - "String.hasSuffix": 2, - "suffix": 8, - "Place.t": 1, - "List.exists": 1, - "File.withIn": 1, - "csoFiles": 1, - "Place.compare": 1, - "GREATER": 5, - "Place.toString": 2, - "EQUAL": 5, - "LESS": 5, - "printVersion": 1, - "tempFiles": 3, - "tmpDir": 2, - "tmpVar": 2, - "default": 2, - "MLton.Platform.OS.host": 2, - "Process.getEnv": 1, - "d": 32, - "temp": 3, - "out": 9, - "File.temp": 1, - "OS.Path.concat": 1, - "Out.close": 2, - "maybeOut": 10, - "maybeOutBase": 4, - "File.extension": 3, - "outputBase": 2, - "ext": 1, - "OS.Path.splitBaseExt": 1, - "defLibname": 6, - "OS.Path.splitDirFile": 1, - "String.extract": 1, - "toAlNum": 2, - "c": 42, - "Char.isAlphaNum": 1, - "#": 3, - "CharVector.map": 1, - "atMLtons": 1, - "Vector.fromList": 1, - "tokenize": 1, - "rev": 2, - "gccDebug": 3, - "asDebug": 2, - "compileO": 3, - "inputs": 7, - "libOpts": 2, - "System.system": 4, - "List.concat": 4, - "linkArchives": 1, - "String.contains": 1, - "File.move": 1, - "from": 1, - "to": 1, - "mkOutputO": 3, - "Counter.t": 3, - "File.dirOf": 2, - "Counter.next": 1, - "compileC": 2, - "debugSwitches": 2, - "compileS": 2, - "compileCSO": 1, - "List.forall": 1, - "Counter.new": 1, - "oFiles": 2, - "List.fold": 1, - "ac": 4, - "extension": 6, - "Option.toString": 1, - "mkCompileSrc": 1, - "listFiles": 2, - "elaborate": 1, - "compile": 2, - "outputs": 2, - "r": 3, - "make": 1, - "Int.inc": 1, - "Out.openOut": 1, - "print": 4, - "outputHeader": 2, - "done": 3, - "Control.No": 1, - "l": 2, - "Layout.output": 1, - "Out.newline": 1, - "Vector.foreach": 1, - "String.translate": 1, - "/": 1, - "Type": 1, - "Check": 1, - ".c": 1, - ".s": 1, - "invalid": 1, - "MLton": 1, - "Exn.finally": 1, - "File.remove": 1, - "doit": 1, - "Process.makeCommandLine": 1, - "main": 1, - "mainWrapped": 1, - "OS.Process.exit": 1, - "CommandLine.arguments": 1, - "RedBlackTree": 1, - "key": 16, - "entry": 12, - "dict": 17, - "Empty": 15, - "Red": 41, - "local": 1, - "lk": 4, - "tree": 4, - "and": 2, - "zipper": 3, - "TOP": 5, - "LEFTB": 10, - "RIGHTB": 10, - "delete": 3, - "zip": 19, - "Black": 40, - "LEFTR": 8, - "RIGHTR": 9, - "bbZip": 28, - "w": 17, - "delMin": 8, - "Match": 1, - "joinRed": 3, - "needB": 2, - "del": 8, - "NotFound": 2, - "entry1": 16, - "as": 7, - "key1": 8, - "datum1": 4, - "joinBlack": 1, - "insertShadow": 3, - "datum": 1, - "oldEntry": 7, - "ins": 8, - "left": 10, - "right": 10, - "restore_left": 1, - "restore_right": 1, - "app": 3, - "ap": 7, - "new": 1, - "insert": 2, - "table": 14, - "clear": 1 - }, - "Stylus": { - "border": 6, - "-": 10, - "radius": 5, - "(": 1, - ")": 1, - "webkit": 1, - "arguments": 3, - "moz": 1, - "a.button": 1, - "px": 5, - "fonts": 2, - "helvetica": 1, - "arial": 1, - "sans": 1, - "serif": 1, - "body": 1, - "{": 1, - "padding": 3, - ";": 2, - "font": 1, - "px/1.4": 1, - "}": 1, - "form": 2, - "input": 2, - "[": 2, - "type": 2, - "text": 2, - "]": 2, - "solid": 1, - "#eee": 1, - "color": 2, - "#ddd": 1, - "textarea": 1, - "@extends": 2, - "foo": 2, - "#FFF": 1, - ".bar": 1, - "background": 1, - "#000": 1 - }, - "SuperCollider": { - "//boot": 1, - "server": 1, - "s.boot": 1, - ";": 18, - "(": 22, - "SynthDef": 1, - "{": 5, - "var": 1, - "sig": 7, - "resfreq": 3, - "Saw.ar": 1, - ")": 22, - "SinOsc.kr": 1, - "*": 3, - "+": 1, - "RLPF.ar": 1, - "Out.ar": 1, - "}": 5, - ".play": 2, - "do": 2, - "arg": 1, - "i": 1, - "Pan2.ar": 1, - "SinOsc.ar": 1, - "exprand": 1, - "LFNoise2.kr": 2, - "rrand": 2, - ".range": 2, - "**": 1, - "rand2": 1, - "a": 2, - "Env.perc": 1, - "-": 1, - "b": 1, - "a.delay": 2, - "a.test.plot": 1, - "b.test.plot": 1, - "Env": 1, - "[": 2, - "]": 2, - ".plot": 2, - "e": 1, - "Env.sine.asStream": 1, - "e.next.postln": 1, - "wait": 1, - ".fork": 1 - }, - "Tea": { - "<%>": 1, - "template": 1, - "foo": 1 - }, - "TeX": { - "%": 135, - "ProvidesClass": 2, - "{": 463, - "problemset": 1, - "}": 469, - "DeclareOption*": 2, - "PassOptionsToClass": 2, - "final": 2, - "article": 2, - "DeclareOption": 2, - "worksheet": 1, - "providecommand": 45, - "@solutionvis": 3, - "expand": 1, - "@expand": 3, - "ProcessOptions": 2, - "relax": 3, - "LoadClass": 2, - "[": 81, - "pt": 5, - "letterpaper": 1, - "]": 80, - "RequirePackage": 20, - "top": 1, - "in": 20, - "bottom": 1, - "left": 15, - "right": 16, - "geometry": 1, - "pgfkeys": 1, - "For": 13, - "mathtable": 2, - "environment.": 3, - "tabularx": 1, - "pset": 1, - "heading": 2, - "float": 1, - "Used": 6, - "for": 21, - "floats": 1, - "(": 12, - "tables": 1, - "figures": 1, - "etc.": 1, - ")": 12, - "graphicx": 1, - "inserting": 3, - "images.": 1, - "enumerate": 2, - "the": 19, - "mathtools": 2, - "Required.": 7, - "Loads": 1, - "amsmath.": 1, - "amsthm": 1, - "theorem": 1, - "environments.": 1, - "amssymb": 1, - "booktabs": 1, - "esdiff": 1, - "derivatives": 4, - "and": 5, - "partial": 2, - "Optional.": 1, - "shortintertext.": 1, - "fancyhdr": 2, - "customizing": 1, - "headers/footers.": 1, - "lastpage": 1, - "page": 4, - "count": 1, - "header/footer.": 1, - "xcolor": 1, - "setting": 3, - "color": 3, - "of": 14, - "hyperlinks": 2, - "obeyFinal": 1, - "Disable": 1, - "todos": 1, - "by": 1, - "option": 1, - "class": 1, - "@todoclr": 2, - "linecolor": 1, - "red": 1, - "todonotes": 1, - "keeping": 1, - "track": 1, - "to": 16, - "-": 9, - "dos.": 1, - "colorlinks": 1, - "true": 1, - "linkcolor": 1, - "navy": 2, - "urlcolor": 1, - "black": 2, - "hyperref": 1, - "following": 2, - "urls": 2, - "references": 1, - "a": 2, - "document.": 1, - "url": 2, - "Enables": 1, - "with": 5, - "tag": 1, - "all": 2, - "hypcap": 1, - "definecolor": 2, - "gray": 1, - "To": 1, - "Dos.": 1, - "brightness": 1, - "RGB": 1, - "coloring": 1, - "setlength": 12, - "parskip": 1, - "ex": 2, - "Sets": 1, - "space": 8, - "between": 1, - "paragraphs.": 2, - "parindent": 2, - "Indent": 1, - "first": 1, - "line": 2, - "new": 1, - "let": 11, - "VERBATIM": 2, - "verbatim": 2, - "def": 18, - "verbatim@font": 1, - "small": 8, - "ttfamily": 1, - "usepackage": 2, - "caption": 1, - "footnotesize": 2, - "subcaption": 1, - "captionsetup": 4, - "table": 2, - "labelformat": 4, - "simple": 3, - "labelsep": 4, - "period": 3, - "labelfont": 4, - "bf": 4, - "figure": 2, - "subtable": 1, - "parens": 1, - "subfigure": 1, - "TRUE": 1, - "FALSE": 1, - "SHOW": 3, - "HIDE": 2, - "thispagestyle": 5, - "empty": 6, - "listoftodos": 1, - "clearpage": 4, - "pagenumbering": 1, - "arabic": 2, - "shortname": 2, - "#1": 40, - "authorname": 2, - "#2": 17, - "coursename": 3, - "#3": 8, - "assignment": 3, - "#4": 4, - "duedate": 2, - "#5": 2, - "begin": 11, - "minipage": 4, - "textwidth": 4, - "flushleft": 2, - "hypertarget": 1, - "@assignment": 2, - "textbf": 5, - "end": 12, - "flushright": 2, - "renewcommand": 10, - "headrulewidth": 1, - "footrulewidth": 1, - "pagestyle": 3, - "fancyplain": 4, - "fancyhf": 2, - "lfoot": 1, - "hyperlink": 1, - "cfoot": 1, - "rfoot": 1, - "thepage": 2, - "pageref": 1, - "LastPage": 1, - "newcounter": 1, - "theproblem": 3, - "Problem": 2, - "counter": 1, - "environment": 1, - "problem": 1, - "addtocounter": 2, - "setcounter": 5, - "equation": 1, - "noindent": 2, - ".": 3, - "textit": 1, - "Default": 2, - "is": 2, - "omit": 1, - "pagebreaks": 1, - "after": 1, - "solution": 2, - "qqed": 2, - "hfill": 3, - "rule": 1, - "mm": 2, - "ifnum": 3, - "pagebreak": 2, - "fi": 15, - "show": 1, - "solutions.": 1, - "vspace": 2, - "em": 8, - "Solution.": 1, - "ifnum#1": 2, - "else": 9, - "chap": 1, - "section": 2, - "Sum": 3, - "n": 4, - "ensuremath": 15, - "sum_": 2, - "from": 5, - "infsum": 2, - "infty": 2, - "Infinite": 1, - "sum": 1, - "Int": 1, - "x": 4, - "int_": 1, - "mathrm": 1, - "d": 1, - "Integrate": 1, - "respect": 1, - "Lim": 2, - "displaystyle": 2, - "lim_": 1, - "Take": 1, - "limit": 1, - "infinity": 1, - "f": 1, - "Frac": 1, - "/": 1, - "_": 1, - "Slanted": 1, - "fraction": 1, - "proper": 1, - "spacing.": 1, - "Usefule": 1, - "display": 2, - "fractions.": 1, - "eval": 1, - "vert_": 1, - "L": 1, - "hand": 2, - "sizing": 2, - "R": 1, - "D": 1, - "diff": 1, - "writing": 2, - "PD": 1, - "diffp": 1, - "full": 1, - "Forces": 1, - "style": 1, - "math": 4, - "mode": 4, - "Deg": 1, - "circ": 1, - "adding": 1, - "degree": 1, - "symbol": 4, - "even": 1, - "if": 1, - "not": 2, - "abs": 1, - "vert": 3, - "Absolute": 1, - "Value": 1, - "norm": 1, - "Vert": 2, - "Norm": 1, - "vector": 1, - "magnitude": 1, - "e": 1, - "times": 3, - "Scientific": 2, - "Notation": 2, - "E": 2, - "u": 1, - "text": 7, - "units": 1, - "Roman": 1, - "mc": 1, - "hspace": 3, - "comma": 1, - "into": 2, - "mtxt": 1, - "insterting": 1, - "on": 2, - "either": 1, - "side.": 1, - "Option": 1, - "preceding": 1, - "punctuation.": 1, - "prob": 1, - "P": 2, - "cndprb": 1, - "right.": 1, - "cov": 1, - "Cov": 1, - "twovector": 1, - "r": 3, - "array": 6, - "threevector": 1, - "fourvector": 1, - "vecs": 4, - "vec": 2, - "bm": 2, - "bolded": 2, - "arrow": 2, - "vect": 3, - "unitvecs": 1, - "hat": 2, - "unitvect": 1, - "Div": 1, - "del": 3, - "cdot": 1, - "Curl": 1, - "Grad": 1, - "NeedsTeXFormat": 1, - "LaTeX2e": 1, - "reedthesis": 1, - "/01/27": 1, - "The": 4, - "Reed": 5, - "College": 5, - "Thesis": 5, - "Class": 4, - "CurrentOption": 1, - "book": 2, - "AtBeginDocument": 1, - "fancyhead": 5, - "LE": 1, - "RO": 1, - "above": 1, - "makes": 2, - "your": 1, - "headers": 6, - "caps.": 2, - "If": 1, - "you": 1, - "would": 1, - "like": 1, - "different": 1, - "choose": 1, - "one": 1, - "options": 1, - "be": 3, - "sure": 1, - "remove": 1, - "both": 1, - "RE": 2, - "slshape": 2, - "nouppercase": 2, - "leftmark": 2, - "This": 2, - "RIGHT": 2, - "side": 2, - "pages": 2, - "italic": 1, - "use": 1, - "lowercase": 1, - "With": 1, - "Capitals": 1, - "When": 1, - "Specified.": 1, - "LO": 2, - "rightmark": 2, - "does": 1, - "same": 1, - "thing": 1, - "LEFT": 2, - "or": 1, - "scshape": 2, - "will": 2, - "And": 1, - "so": 1, - "fancy": 1, - "oldthebibliography": 2, - "thebibliography": 2, - "endoldthebibliography": 2, - "endthebibliography": 1, - "renewenvironment": 2, - "addcontentsline": 5, - "toc": 5, - "chapter": 9, - "bibname": 2, - "things": 1, - "psych": 1, - "majors": 1, - "comment": 1, - "out": 1, - "oldtheindex": 2, - "theindex": 2, - "endoldtheindex": 2, - "endtheindex": 1, - "indexname": 1, - "RToldchapter": 1, - "if@openright": 1, - "RTcleardoublepage": 3, - "global": 2, - "@topnum": 1, - "z@": 2, - "@afterindentfalse": 1, - "secdef": 1, - "@chapter": 2, - "@schapter": 1, - "c@secnumdepth": 1, - "m@ne": 2, - "if@mainmatter": 1, - "refstepcounter": 1, - "typeout": 1, - "@chapapp": 2, - "thechapter.": 1, - "thechapter": 1, - "space#1": 1, - "chaptermark": 1, - "addtocontents": 2, - "lof": 1, - "protect": 2, - "addvspace": 2, - "p@": 3, - "lot": 1, - "if@twocolumn": 3, - "@topnewpage": 1, - "@makechapterhead": 2, - "@afterheading": 1, - "newcommand": 2, - "if@twoside": 1, - "ifodd": 1, - "c@page": 1, - "hbox": 15, - "newpage": 3, - "RToldcleardoublepage": 1, - "cleardoublepage": 4, - "oddsidemargin": 2, - ".5in": 3, - "evensidemargin": 2, - "textheight": 4, - "topmargin": 6, - "addtolength": 8, - "headheight": 4, - "headsep": 3, - ".6in": 1, - "division#1": 1, - "gdef": 6, - "@division": 3, - "@latex@warning@no@line": 3, - "No": 3, - "noexpand": 3, - "division": 2, - "given": 3, - "department#1": 1, - "@department": 3, - "department": 1, - "thedivisionof#1": 1, - "@thedivisionof": 3, - "Division": 2, - "approvedforthe#1": 1, - "@approvedforthe": 3, - "advisor#1": 1, - "@advisor": 3, - "advisor": 1, - "altadvisor#1": 1, - "@altadvisor": 3, - "@altadvisortrue": 1, - "@empty": 1, - "newif": 1, - "if@altadvisor": 3, - "@altadvisorfalse": 1, - "contentsname": 1, - "Table": 1, - "Contents": 1, - "References": 1, - "l@chapter": 1, - "c@tocdepth": 1, - "addpenalty": 1, - "@highpenalty": 2, - "vskip": 4, - "@plus": 1, - "@tempdima": 2, - "begingroup": 1, - "rightskip": 1, - "@pnumwidth": 3, - "parfillskip": 1, - "leavevmode": 1, - "bfseries": 3, - "advance": 1, - "leftskip": 2, - "hskip": 1, - "nobreak": 2, - "normalfont": 1, - "leaders": 1, - "m@th": 1, - "mkern": 2, - "@dotsep": 2, - "mu": 2, - "hb@xt@": 1, - "hss": 1, - "par": 6, - "penalty": 1, - "endgroup": 1, - "newenvironment": 1, - "abstract": 1, - "@restonecoltrue": 1, - "onecolumn": 1, - "@restonecolfalse": 1, - "Abstract": 2, - "center": 7, - "fontsize": 7, - "selectfont": 6, - "if@restonecol": 1, - "twocolumn": 1, - "ifx": 1, - "@pdfoutput": 1, - "@undefined": 1, - "RTpercent": 3, - "@percentchar": 1, - "AtBeginDvi": 2, - "special": 2, - "LaTeX": 3, - "/12/04": 3, - "SN": 3, - "rawpostscript": 1, - "AtEndDocument": 1, - "pdfinfo": 1, - "/Creator": 1, - "maketitle": 1, - "titlepage": 2, - "footnoterule": 1, - "footnote": 1, - "thanks": 1, - "baselineskip": 2, - "setbox0": 2, - "Requirements": 2, - "Degree": 2, - "null": 3, - "vfil": 8, - "@title": 1, - "centerline": 8, - "wd0": 7, - "hrulefill": 5, - "A": 1, - "Presented": 1, - "In": 1, - "Partial": 1, - "Fulfillment": 1, - "Bachelor": 1, - "Arts": 1, - "bigskip": 2, - "lineskip": 1, - ".75em": 1, - "tabular": 2, - "t": 1, - "c": 5, - "@author": 1, - "@date": 1, - "Approved": 2, - "just": 1, - "below": 2, - "cm": 2, - "copy0": 1, - "approved": 1, - "major": 1, - "sign": 1, - "makebox": 6 - }, - "Turing": { - "function": 1, - "factorial": 4, - "(": 3, - "n": 9, - "int": 2, - ")": 3, - "real": 1, - "if": 2, - "then": 1, - "result": 2, - "else": 1, - "*": 1, - "-": 1, - "end": 3, - "var": 1, - "loop": 2, - "put": 3, - "..": 1, - "get": 1, - "exit": 1, - "when": 1 - }, - "TXL": { - "define": 12, - "program": 1, - "[": 38, - "expression": 9, - "]": 38, - "end": 12, - "term": 6, - "|": 3, - "addop": 2, - "primary": 4, - "mulop": 2, - "number": 10, - "(": 2, - ")": 2, - "-": 3, - "/": 3, - "rule": 12, - "main": 1, - "replace": 6, - "E": 3, - "construct": 1, - "NewE": 3, - "resolveAddition": 2, - "resolveSubtraction": 2, - "resolveMultiplication": 2, - "resolveDivision": 2, - "resolveParentheses": 2, - "where": 1, - "not": 1, - "by": 6, - "N1": 8, - "+": 2, - "N2": 8, - "*": 2, - "N": 2 - }, - "TypeScript": { - "class": 3, - "Animal": 4, - "{": 9, - "constructor": 3, - "(": 18, - "public": 1, - "name": 5, - ")": 18, - "}": 9, - "move": 3, - "meters": 2, - "alert": 3, - "this.name": 1, - "+": 3, - ";": 8, - "Snake": 2, - "extends": 2, - "super": 2, - "super.move": 2, - "Horse": 2, - "var": 2, - "sam": 1, - "new": 2, - "tom": 1, - "sam.move": 1, - "tom.move": 1, - "console.log": 1 - }, - "UnrealScript": { - "//": 5, - "-": 220, - "class": 18, - "MutU2Weapons": 1, - "extends": 2, - "Mutator": 1, - "config": 18, - "(": 189, - "U2Weapons": 1, - ")": 189, - ";": 295, - "var": 30, - "string": 25, - "ReplacedWeaponClassNames0": 1, - "ReplacedWeaponClassNames1": 1, - "ReplacedWeaponClassNames2": 1, - "ReplacedWeaponClassNames3": 1, - "ReplacedWeaponClassNames4": 1, - "ReplacedWeaponClassNames5": 1, - "ReplacedWeaponClassNames6": 1, - "ReplacedWeaponClassNames7": 1, - "ReplacedWeaponClassNames8": 1, - "ReplacedWeaponClassNames9": 1, - "ReplacedWeaponClassNames10": 1, - "ReplacedWeaponClassNames11": 1, - "ReplacedWeaponClassNames12": 1, - "bool": 18, - "bConfigUseU2Weapon0": 1, - "bConfigUseU2Weapon1": 1, - "bConfigUseU2Weapon2": 1, - "bConfigUseU2Weapon3": 1, - "bConfigUseU2Weapon4": 1, - "bConfigUseU2Weapon5": 1, - "bConfigUseU2Weapon6": 1, - "bConfigUseU2Weapon7": 1, - "bConfigUseU2Weapon8": 1, - "bConfigUseU2Weapon9": 1, - "bConfigUseU2Weapon10": 1, - "bConfigUseU2Weapon11": 1, - "bConfigUseU2Weapon12": 1, - "//var": 8, - "byte": 4, - "bUseU2Weapon": 1, - "[": 125, - "]": 125, - "": 7, - "ReplacedWeaponClasses": 3, - "": 2, - "ReplacedWeaponPickupClasses": 1, - "": 3, - "ReplacedAmmoPickupClasses": 1, - "U2WeaponClasses": 2, - "//GE": 17, - "For": 3, - "default": 12, - "properties": 3, - "ONLY": 3, - "U2WeaponPickupClassNames": 1, - "U2AmmoPickupClassNames": 2, - "bIsVehicle": 4, - "bNotVehicle": 3, - "localized": 2, - "U2WeaponDisplayText": 1, - "U2WeaponDescText": 1, - "GUISelectOptions": 1, - "int": 10, - "FirePowerMode": 1, - "bExperimental": 3, - "bUseFieldGenerator": 2, - "bUseProximitySensor": 2, - "bIntegrateShieldReward": 2, - "IterationNum": 8, - "Weapons.Length": 1, - "const": 1, - "DamageMultiplier": 28, - "DamagePercentage": 3, - "bUseXMPFeel": 4, - "FlashbangModeString": 1, - "struct": 1, - "WeaponInfo": 2, - "{": 28, - "ReplacedWeaponClass": 1, - "Generated": 4, - "from": 6, - "ReplacedWeaponClassName.": 2, - "This": 3, - "is": 6, - "what": 1, - "we": 3, - "replace.": 1, - "ReplacedWeaponPickupClass": 1, - "UNUSED": 1, - "ReplacedAmmoPickupClass": 1, - "WeaponClass": 1, - "the": 31, - "weapon": 10, - "are": 1, - "going": 1, - "to": 4, - "put": 1, - "inside": 1, - "world.": 1, - "WeaponPickupClassName": 1, - "WeponClass.": 1, - "AmmoPickupClassName": 1, - "WeaponClass.": 1, - "bEnabled": 1, - "Structs": 1, - "can": 2, - "d": 1, - "thus": 1, - "still": 1, - "require": 1, - "bConfigUseU2WeaponX": 1, - "indicates": 1, - "that": 3, - "spawns": 1, - "a": 2, - "vehicle": 3, - "deployable": 1, - "turrets": 1, - ".": 2, - "These": 1, - "only": 2, - "work": 1, - "in": 4, - "gametypes": 1, - "duh.": 1, - "Opposite": 1, - "of": 1, - "works": 1, - "non": 1, - "gametypes.": 2, - "Think": 1, - "shotgun.": 1, - "}": 27, - "Weapons": 31, - "function": 5, - "PostBeginPlay": 1, - "local": 8, - "FireMode": 8, - "x": 65, - "//local": 3, - "ReplacedWeaponPickupClassName": 1, - "//IterationNum": 1, - "ArrayCount": 2, - "Level.Game.bAllowVehicles": 4, - "He": 1, - "he": 1, - "neat": 1, - "way": 1, - "get": 1, - "required": 1, - "number.": 1, - "for": 11, - "<": 9, - "+": 18, - ".bEnabled": 3, - "GetPropertyText": 5, - "needed": 1, - "use": 1, - "variables": 1, - "an": 1, - "array": 2, - "like": 1, - "fashion.": 1, - "//bUseU2Weapon": 1, - ".ReplacedWeaponClass": 5, - "DynamicLoadObject": 2, - "//ReplacedWeaponClasses": 1, - "//ReplacedWeaponPickupClassName": 1, - ".default.PickupClass": 1, - "if": 55, - ".ReplacedWeaponClass.default.FireModeClass": 4, - "None": 10, - "&&": 15, - ".default.AmmoClass": 1, - ".default.AmmoClass.default.PickupClass": 2, - ".ReplacedAmmoPickupClass": 2, - "break": 1, - ".WeaponClass": 7, - ".WeaponPickupClassName": 1, - ".WeaponClass.default.PickupClass": 1, - ".AmmoPickupClassName": 2, - ".bIsVehicle": 2, - ".bNotVehicle": 2, - "Super.PostBeginPlay": 1, - "ValidReplacement": 6, - "return": 47, - "CheckReplacement": 1, - "Actor": 1, - "Other": 23, - "out": 2, - "bSuperRelevant": 3, - "i": 12, - "WeaponLocker": 3, - "L": 2, - "xWeaponBase": 3, - ".WeaponType": 2, - "false": 3, - "true": 5, - "Weapon": 1, - "Other.IsA": 2, - "Other.Class": 2, - "Ammo": 1, - "ReplaceWith": 1, - "L.Weapons.Length": 1, - "L.Weapons": 2, - "//STARTING": 1, - "WEAPON": 1, - "xPawn": 6, - ".RequiredEquipment": 3, - "True": 2, - "Special": 1, - "handling": 1, - "Shield": 2, - "Reward": 2, - "integration": 1, - "ShieldPack": 7, - ".SetStaticMesh": 1, - "StaticMesh": 1, - ".Skins": 1, - "Shader": 2, - ".RepSkin": 1, - ".SetDrawScale": 1, - ".SetCollisionSize": 1, - ".PickupMessage": 1, - ".PickupSound": 1, - "Sound": 1, - "Super.CheckReplacement": 1, - "GetInventoryClassOverride": 1, - "InventoryClassName": 3, - "Super.GetInventoryClassOverride": 1, - "static": 2, - "FillPlayInfo": 1, - "PlayInfo": 3, - "": 1, - "Recs": 4, - "WeaponOptions": 17, - "Super.FillPlayInfo": 1, - ".static.GetWeaponList": 1, - "Recs.Length": 1, - ".ClassName": 1, - ".FriendlyName": 1, - "PlayInfo.AddSetting": 33, - "default.RulesGroup": 33, - "default.U2WeaponDisplayText": 33, - "event": 3, - "GetDescriptionText": 1, - "PropName": 35, - "default.U2WeaponDescText": 33, - "Super.GetDescriptionText": 1, - "PreBeginPlay": 1, - "float": 3, - "k": 29, - "Multiplier.": 1, - "Super.PreBeginPlay": 1, - "/100.0": 1, - "//log": 1, - "@k": 1, - "//Sets": 1, - "various": 1, - "settings": 1, - "match": 1, - "different": 1, - "games": 1, - ".default.DamagePercentage": 1, - "//Original": 1, - "U2": 3, - "compensate": 1, - "division": 1, - "errors": 1, - "Class": 105, - ".default.DamageMin": 12, - "*": 54, - ".default.DamageMax": 12, - ".default.Damage": 27, - ".default.myDamage": 4, - "//Dampened": 1, - "already": 1, - "no": 2, - "need": 1, - "rewrite": 1, - "else": 1, - "//General": 2, - "XMP": 4, - ".default.Spread": 1, - ".default.MaxAmmo": 7, - ".default.Speed": 8, - ".default.MomentumTransfer": 4, - ".default.ClipSize": 4, - ".default.FireLastReloadTime": 3, - ".default.DamageRadius": 4, - ".default.LifeSpan": 4, - ".default.ShakeRadius": 1, - ".default.ShakeMagnitude": 1, - ".default.MaxSpeed": 5, - ".default.FireRate": 3, - ".default.ReloadTime": 3, - "//3200": 1, - "too": 1, - "much": 1, - ".default.VehicleDamageScaling": 2, - "*k": 28, - "//Experimental": 1, - "options": 1, - "lets": 1, - "you": 2, - "Unuse": 1, - "EMPimp": 1, - "projectile": 1, - "and": 3, - "fire": 1, - "two": 1, - "CAR": 1, - "barrels": 1, - "//CAR": 1, - "nothing": 1, - "U2Weapons.U2AssaultRifleFire": 1, - "U2Weapons.U2AssaultRifleAltFire": 1, - "U2ProjectileConcussionGrenade": 1, - "U2Weapons.U2AssaultRifleInv": 1, - "U2Weapons.U2WeaponEnergyRifle": 1, - "U2Weapons.U2WeaponFlameThrower": 1, - "U2Weapons.U2WeaponPistol": 1, - "U2Weapons.U2AutoTurretDeploy": 1, - "U2Weapons.U2WeaponRocketLauncher": 1, - "U2Weapons.U2WeaponGrenadeLauncher": 1, - "U2Weapons.U2WeaponSniper": 2, - "U2Weapons.U2WeaponRocketTurret": 1, - "U2Weapons.U2WeaponLandMine": 1, - "U2Weapons.U2WeaponLaserTripMine": 1, - "U2Weapons.U2WeaponShotgun": 1, - "s": 7, - "Minigun.": 1, - "Enable": 5, - "Shock": 1, - "Lance": 1, - "Energy": 2, - "Rifle": 3, - "What": 7, - "should": 7, - "be": 8, - "replaced": 8, - "with": 9, - "Rifle.": 3, - "By": 7, - "it": 7, - "Bio": 1, - "Magnum": 2, - "Pistol": 1, - "Pistol.": 1, - "Onslaught": 1, - "Grenade": 1, - "Launcher.": 2, - "Shark": 2, - "Rocket": 4, - "Launcher": 1, - "Flak": 1, - "Cannon.": 1, - "Should": 1, - "Lightning": 1, - "Gun": 2, - "Widowmaker": 2, - "Sniper": 3, - "Classic": 1, - "here.": 1, - "Turret": 2, - "delpoyable": 1, - "deployable.": 1, - "Redeemer.": 1, - "Laser": 2, - "Trip": 2, - "Mine": 1, - "Mine.": 1, - "t": 2, - "replace": 1, - "Link": 1, - "matches": 1, - "vehicles.": 1, - "Crowd": 1, - "Pleaser": 1, - "Shotgun.": 1, - "have": 1, - "shields": 1, - "or": 2, - "damage": 1, - "filtering.": 1, - "If": 1, - "checked": 1, - "mutator": 1, - "produces": 1, - "Unreal": 4, - "II": 4, - "shield": 1, - "pickups.": 1, - "Choose": 1, - "between": 2, - "white": 1, - "overlay": 3, - "depending": 2, - "on": 2, - "player": 2, - "view": 1, - "style": 1, - "distance": 1, - "foolproof": 1, - "FM_DistanceBased": 1, - "Arena": 1, - "Add": 1, - "weapons": 1, - "other": 1, - "Fully": 1, - "customisable": 1, - "choose": 1, - "behaviour.": 1, - "US3HelloWorld": 1, - "GameInfo": 1, - "InitGame": 1, - "Options": 1, - "Error": 1, - "log": 1, - "defaultproperties": 1 - }, - "Verilog": { - "////////////////////////////////////////////////////////////////////////////////": 14, - "//": 117, - "timescale": 10, - "ns": 8, - "/": 11, - "ps": 8, - "module": 18, - "button_debounce": 3, - "(": 378, - "input": 68, - "clk": 40, - "clock": 3, - "reset_n": 32, - "asynchronous": 2, - "reset": 13, - "button": 25, - "bouncy": 1, - "output": 42, - "reg": 26, - "debounce": 6, - "debounced": 1, - "-": 73, - "cycle": 1, - "signal": 3, - ")": 378, - ";": 287, - "parameter": 7, - "CLK_FREQUENCY": 4, - "DEBOUNCE_HZ": 4, - "localparam": 4, - "COUNT_VALUE": 2, - "WAIT": 6, - "FIRE": 4, - "COUNT": 4, - "[": 179, - "]": 179, - "state": 6, - "next_state": 6, - "count": 6, - "always": 23, - "@": 16, - "posedge": 11, - "or": 14, - "negedge": 8, - "<": 47, - "begin": 46, - "if": 23, - "end": 48, - "else": 22, - "case": 3, - "<=>": 4, - "1": 7, - "endcase": 3, - "default": 2, - "endmodule": 18, - "control": 1, - "en": 13, - "dsp_sel": 9, - "an": 6, - "wire": 67, - "a": 5, - "b": 3, - "c": 3, - "d": 3, - "e": 3, - "f": 2, - "g": 2, - "h": 2, - "i": 62, - "j": 2, - "k": 2, - "l": 2, - "assign": 23, - "FDRSE": 6, - "#": 10, - ".INIT": 6, - "b0": 27, - "Synchronous": 12, - ".S": 6, - "b1": 19, - "Initial": 6, - "value": 6, - "of": 8, - "register": 6, - "DFF2": 1, - ".Q": 6, - "Data": 13, - ".C": 6, - "Clock": 14, - ".CE": 6, - "enable": 6, - ".D": 6, - ".R": 6, - "set": 6, - "DFF0": 1, - "DFF6": 1, - "DFF4": 1, - "DFF10": 1, - "DFF8": 1, - "hex_display": 1, - "num": 5, - "hex0": 2, - "hex1": 2, - "hex2": 2, - "hex3": 2, - "seg_7": 4, - "hex_group0": 1, - ".num": 4, - ".en": 4, - ".seg": 4, - "hex_group1": 1, - "hex_group2": 1, - "hex_group3": 1, - "mux": 1, - "opA": 4, - "opB": 3, - "sum": 5, - "out": 5, - "cout": 4, - "b0000": 1, - "b01": 1, - "b11": 1, - "pipeline_registers": 1, - "BIT_WIDTH": 5, - "pipe_in": 4, - "pipe_out": 5, - "NUMBER_OF_STAGES": 7, - "generate": 3, - "genvar": 3, - "*": 4, - "BIT_WIDTH*": 5, - "pipe_gen": 6, - "for": 4, - "+": 36, - "pipeline": 2, - "BIT_WIDTH*i": 2, - "endgenerate": 3, - "ps2_mouse": 1, - "Input": 2, - "Reset": 1, - "inout": 2, - "ps2_clk": 3, - "PS2": 2, - "Bidirectional": 2, - "ps2_dat": 3, - "the_command": 2, - "Command": 1, - "to": 3, - "send": 2, - "mouse": 1, - "send_command": 2, - "Signal": 2, - "command_was_sent": 2, - "command": 1, - "finished": 1, - "sending": 1, - "error_communication_timed_out": 3, - "received_data": 2, - "Received": 1, - "data": 4, - "received_data_en": 4, - "If": 1, - "new": 1, - "has": 1, - "been": 1, - "received": 1, - "start_receiving_data": 3, - "wait_for_incoming_data": 3, - "ps2_clk_posedge": 3, - "Internal": 2, - "Wires": 1, - "ps2_clk_negedge": 3, - "idle_counter": 4, - "Registers": 2, - "ps2_clk_reg": 4, - "ps2_data_reg": 5, - "last_ps2_clk": 4, - "ns_ps2_transceiver": 13, - "State": 1, - "Machine": 1, - "s_ps2_transceiver": 8, - "PS2_STATE_0_IDLE": 10, - "h1": 1, - "PS2_STATE_2_COMMAND_OUT": 2, - "h3": 1, - "PS2_STATE_4_END_DELAYED": 4, - "Defaults": 1, - "PS2_STATE_1_DATA_IN": 3, - "||": 1, - "PS2_STATE_3_END_TRANSFER": 3, - "h00": 1, - "&&": 3, - "h01": 1, - "ps2_mouse_cmdout": 1, - "mouse_cmdout": 1, - ".clk": 6, - "Inputs": 2, - ".reset": 2, - ".the_command": 1, - ".send_command": 1, - ".ps2_clk_posedge": 2, - ".ps2_clk_negedge": 2, - ".ps2_clk": 1, - "Bidirectionals": 1, - ".ps2_dat": 1, - ".command_was_sent": 1, - "Outputs": 2, - ".error_communication_timed_out": 1, - "ps2_mouse_datain": 1, - "mouse_datain": 1, - ".wait_for_incoming_data": 1, - ".start_receiving_data": 1, - ".ps2_data": 1, - ".received_data": 1, - ".received_data_en": 1, - "ns/1ps": 2, - "e0": 1, - "x": 41, - "y": 21, - "{": 11, - "}": 11, - "e1": 1, - "ch": 1, - "z": 7, - "o": 6, - "&": 6, - "maj": 1, - "|": 2, - "s0": 1, - "s1": 1, - "sign_extender": 1, - "INPUT_WIDTH": 5, - "OUTPUT_WIDTH": 4, - "original": 3, - "sign_extended_original": 2, - "sign_extend": 3, - "gen_sign_extend": 1, - "sqrt_pipelined": 3, - "start": 12, - "optional": 2, - "INPUT_BITS": 28, - "radicand": 12, - "unsigned": 2, - "data_valid": 7, - "valid": 2, - "OUTPUT_BITS": 14, - "root": 8, - "number": 2, - "bits": 2, - "any": 1, - "integer": 1, - "%": 3, - "start_gen": 7, - "propagation": 1, - "OUTPUT_BITS*INPUT_BITS": 9, - "root_gen": 15, - "values": 3, - "radicand_gen": 10, - "mask_gen": 9, - "mask": 3, - "mask_4": 1, - "is": 4, - "odd": 1, - "this": 2, - "INPUT_BITS*": 27, - "<<": 2, - "i/2": 2, - "even": 1, - "pipeline_stage": 1, - "INPUT_BITS*i": 5, - "t_button_debounce": 1, - ".CLK_FREQUENCY": 1, - ".DEBOUNCE_HZ": 1, - ".reset_n": 3, - ".button": 1, - ".debounce": 1, - "initial": 3, - "bx": 4, - "#10": 10, - "#5": 3, - "#100": 1, - "#0.1": 8, - "t_div_pipelined": 1, - "dividend": 3, - "divisor": 5, - "div_by_zero": 2, - "quotient": 2, - "quotient_correct": 1, - "BITS": 2, - "div_pipelined": 2, - ".BITS": 1, - ".dividend": 1, - ".divisor": 1, - ".quotient": 1, - ".div_by_zero": 1, - ".start": 2, - ".data_valid": 2, - "#50": 2, - "#1": 1, - "#1000": 1, - "finish": 2, - "t_sqrt_pipelined": 1, - ".INPUT_BITS": 1, - ".radicand": 1, - ".root": 1, - "#10000": 1, - "vga": 1, - "wb_clk_i": 6, - "Mhz": 1, - "VDU": 1, - "wb_rst_i": 6, - "wb_dat_i": 3, - "wb_dat_o": 2, - "wb_adr_i": 3, - "wb_we_i": 3, - "wb_tga_i": 5, - "wb_sel_i": 3, - "wb_stb_i": 2, - "wb_cyc_i": 2, - "wb_ack_o": 2, - "vga_red_o": 2, - "vga_green_o": 2, - "vga_blue_o": 2, - "horiz_sync": 2, - "vert_sync": 2, - "csrm_adr_o": 2, - "csrm_sel_o": 2, - "csrm_we_o": 2, - "csrm_dat_o": 2, - "csrm_dat_i": 2, - "csr_adr_i": 3, - "csr_stb_i": 2, - "conf_wb_dat_o": 3, - "conf_wb_ack_o": 3, - "mem_wb_dat_o": 3, - "mem_wb_ack_o": 3, - "csr_adr_o": 2, - "csr_dat_i": 3, - "csr_stb_o": 3, - "v_retrace": 3, - "vh_retrace": 3, - "w_vert_sync": 3, - "shift_reg1": 3, - "graphics_alpha": 4, - "memory_mapping1": 3, - "write_mode": 3, - "raster_op": 3, - "read_mode": 3, - "bitmask": 3, - "set_reset": 3, - "enable_set_reset": 3, - "map_mask": 3, - "x_dotclockdiv2": 3, - "chain_four": 3, - "read_map_select": 3, - "color_compare": 3, - "color_dont_care": 3, - "wbm_adr_o": 3, - "wbm_sel_o": 3, - "wbm_we_o": 3, - "wbm_dat_o": 3, - "wbm_dat_i": 3, - "wbm_stb_o": 3, - "wbm_ack_i": 3, - "stb": 4, - "cur_start": 3, - "cur_end": 3, - "start_addr": 2, - "vcursor": 3, - "hcursor": 3, - "horiz_total": 3, - "end_horiz": 3, - "st_hor_retr": 3, - "end_hor_retr": 3, - "vert_total": 3, - "end_vert": 3, - "st_ver_retr": 3, - "end_ver_retr": 3, - "pal_addr": 3, - "pal_we": 3, - "pal_read": 3, - "pal_write": 3, - "dac_we": 3, - "dac_read_data_cycle": 3, - "dac_read_data_register": 3, - "dac_read_data": 3, - "dac_write_data_cycle": 3, - "dac_write_data_register": 3, - "dac_write_data": 3, - "vga_config_iface": 1, - "config_iface": 1, - ".wb_clk_i": 2, - ".wb_rst_i": 2, - ".wb_dat_i": 2, - ".wb_dat_o": 2, - ".wb_adr_i": 2, - ".wb_we_i": 2, - ".wb_sel_i": 2, - ".wb_stb_i": 2, - ".wb_ack_o": 2, - ".shift_reg1": 2, - ".graphics_alpha": 2, - ".memory_mapping1": 2, - ".write_mode": 2, - ".raster_op": 2, - ".read_mode": 2, - ".bitmask": 2, - ".set_reset": 2, - ".enable_set_reset": 2, - ".map_mask": 2, - ".x_dotclockdiv2": 2, - ".chain_four": 2, - ".read_map_select": 2, - ".color_compare": 2, - ".color_dont_care": 2, - ".pal_addr": 2, - ".pal_we": 2, - ".pal_read": 2, - ".pal_write": 2, - ".dac_we": 2, - ".dac_read_data_cycle": 2, - ".dac_read_data_register": 2, - ".dac_read_data": 2, - ".dac_write_data_cycle": 2, - ".dac_write_data_register": 2, - ".dac_write_data": 2, - ".cur_start": 2, - ".cur_end": 2, - ".start_addr": 1, - ".vcursor": 2, - ".hcursor": 2, - ".horiz_total": 2, - ".end_horiz": 2, - ".st_hor_retr": 2, - ".end_hor_retr": 2, - ".vert_total": 2, - ".end_vert": 2, - ".st_ver_retr": 2, - ".end_ver_retr": 2, - ".v_retrace": 2, - ".vh_retrace": 2, - "vga_lcd": 1, - "lcd": 1, - ".rst": 1, - ".csr_adr_o": 1, - ".csr_dat_i": 1, - ".csr_stb_o": 1, - ".vga_red_o": 1, - ".vga_green_o": 1, - ".vga_blue_o": 1, - ".horiz_sync": 1, - ".vert_sync": 1, - "vga_cpu_mem_iface": 1, - "cpu_mem_iface": 1, - ".wbs_adr_i": 1, - ".wbs_sel_i": 1, - ".wbs_we_i": 1, - ".wbs_dat_i": 1, - ".wbs_dat_o": 1, - ".wbs_stb_i": 1, - ".wbs_ack_o": 1, - ".wbm_adr_o": 1, - ".wbm_sel_o": 1, - ".wbm_we_o": 1, - ".wbm_dat_o": 1, - ".wbm_dat_i": 1, - ".wbm_stb_o": 1, - ".wbm_ack_i": 1, - "vga_mem_arbitrer": 1, - "mem_arbitrer": 1, - ".clk_i": 1, - ".rst_i": 1, - ".csr_adr_i": 1, - ".csr_dat_o": 1, - ".csr_stb_i": 1, - ".csrm_adr_o": 1, - ".csrm_sel_o": 1, - ".csrm_we_o": 1, - ".csrm_dat_o": 1, - ".csrm_dat_i": 1 - }, - "VHDL": { - "-": 2, - "VHDL": 1, - "example": 1, - "file": 1, - "library": 1, - "ieee": 1, - ";": 7, - "use": 1, - "ieee.std_logic_1164.all": 1, - "entity": 2, - "inverter": 2, - "is": 2, - "port": 1, - "(": 1, - "a": 2, - "in": 1, - "std_logic": 2, - "b": 2, - "out": 1, - ")": 1, - "end": 2, - "architecture": 2, - "rtl": 1, - "of": 1, - "begin": 1, - "<": 1, - "not": 1 - }, - "VimL": { - "no": 1, - "toolbar": 1, - "set": 7, - "guioptions": 1, - "-": 1, - "T": 1, - "nocompatible": 1, - "ignorecase": 1, - "incsearch": 1, - "smartcase": 1, - "showmatch": 1, - "showcmd": 1, - "syntax": 1, - "on": 1 - }, - "Visual Basic": { - "VERSION": 1, - "CLASS": 1, - "BEGIN": 1, - "MultiUse": 1, - "-": 9, - "NotPersistable": 1, - "DataBindingBehavior": 1, - "vbNone": 1, - "MTSTransactionMode": 1, - "*************************************************************************************************************************************************************************************************************************************************": 2, - "Copyright": 1, - "(": 20, - "c": 1, - ")": 20, - "David": 1, - "Briant": 1, - "All": 1, - "rights": 1, - "reserved": 1, - "Option": 1, - "Explicit": 1, - "Private": 25, - "Declare": 3, - "Function": 5, - "apiSetProp": 4, - "Lib": 3, - "Alias": 3, - "ByVal": 6, - "hwnd": 2, - "As": 34, - "Long": 10, - "lpString": 2, - "String": 13, - "hData": 1, - "apiGlobalAddAtom": 3, - "apiSetForegroundWindow": 1, - "myMouseEventsForm": 5, - "fMouseEventsForm": 2, - "WithEvents": 3, - "myAST": 3, - "cTP_AdvSysTray": 2, - "Attribute": 3, - "myAST.VB_VarHelpID": 1, - "myClassName": 2, - "myWindowName": 2, - "Const": 9, - "TEN_MILLION": 1, - "Single": 1, - "myListener": 1, - "VLMessaging.VLMMMFileListener": 1, - "myListener.VB_VarHelpID": 1, - "myMMFileTransports": 2, - "VLMessaging.VLMMMFileTransports": 1, - "myMMFileTransports.VB_VarHelpID": 1, - "myMachineID": 1, - "myRouterSeed": 1, - "myRouterIDsByMMTransportID": 1, - "New": 6, - "Dictionary": 3, - "myMMTransportIDsByRouterID": 2, - "myDirectoryEntriesByIDString": 1, - "GET_ROUTER_ID": 1, - "GET_ROUTER_ID_REPLY": 1, - "REGISTER_SERVICE": 1, - "REGISTER_SERVICE_REPLY": 1, - "UNREGISTER_SERVICE": 1, - "UNREGISTER_SERVICE_REPLY": 1, - "GET_SERVICES": 1, - "GET_SERVICES_REPLY": 1, - "Initialize": 1, - "/": 1, - "Release": 1, - "hide": 1, - "us": 1, - "from": 2, - "the": 7, - "Applications": 1, - "list": 1, - "in": 1, - "Windows": 1, - "Task": 1, - "Manager": 1, - "App.TaskVisible": 1, - "False": 1, - "create": 1, - "tray": 1, - "icon": 1, - "Set": 5, - "myAST.create": 1, - "myMouseEventsForm.icon": 1, - "make": 1, - "myself": 1, - "easily": 2, - "found": 1, - "myMouseEventsForm.hwnd": 3, - "End": 11, - "Sub": 9, - "shutdown": 1, - "myAST.destroy": 1, - "Nothing": 2, - "Unload": 1, - "myAST_RButtonUp": 1, - "Dim": 1, - "epm": 1, - "cTP_EasyPopupMenu": 1, - "menuItemSelected": 1, - "epm.addMenuItem": 3, - "MF_STRING": 3, - "epm.addSubmenuItem": 2, - "MF_SEPARATOR": 1, - "MF_CHECKED": 1, - "route": 2, - "to": 4, - "a": 4, - "remote": 1, - "machine": 1, - "Else": 1, - "for": 4, - "moment": 1, - "just": 1, - "between": 1, - "MMFileTransports": 1, - "If": 4, - "myMMTransportIDsByRouterID.Exists": 1, - "message.toAddress.RouterID": 2, - "Then": 1, - "transport": 1, - "transport.send": 1, - "messageToBytes": 1, - "message": 1, - "directoryEntryIDString": 2, - "serviceType": 2, - "address": 1, - "VLMAddress": 1, - "&": 7, - "address.MachineID": 1, - "address.RouterID": 1, - "address.AgentID": 1, - "myMMFileTransports_disconnecting": 1, - "id": 1, - "oReceived": 2, - "Boolean": 1, - "True": 1, - "@Code": 1, - "ViewData": 1, - "Code": 1, - "@section": 1, - "featured": 1, - "": 1, - "Section": 1, - "

": 1, - "We": 1, - "suggest": 1, - "following": 1, - "

": 1, - "
    ": 1, - "
  1. ": 3, - "
    ": 3, - "Getting": 1, - "Started": 1, - "
    ": 3, - "gives": 2, - "powerful": 1, - "patterns": 1, - "based": 1, - "way": 1, - "build": 1, - "dynamic": 1, - "websites": 1, - "that": 5, - "enables": 1, - "clean": 1, - "separation": 1, - "of": 2, - "concerns": 1, - "full": 1, - "control": 1, - "over": 1, - "markup": 1, - "enjoyable": 1, - "agile": 1, - "development.": 1, - "includes": 1, - "many": 1, - "enable": 1, - "fast": 1, - "TDD": 1, - "friendly": 1, - "development": 1, - "creating": 1, - "sophisticated": 1, - "applications": 1, - "use": 1, - "latest": 1, - "web": 2, - "standards.": 1, - "Learn": 3, - "
  2. ": 3, - "Add": 1, - "NuGet": 2, - "packages": 1, - "jump": 1, - "start": 1, - "your": 2, - "coding": 1, - "makes": 1, - "it": 1, - "easy": 1, - "install": 1, - "update": 1, - "free": 1, - "libraries": 1, - "tools.": 1, - "Find": 1, - "Web": 1, - "Hosting": 1, - "You": 1, - "can": 1, - "find": 1, - "hosting": 1, - "company": 1, - "offers": 1, - "right": 1, - "mix": 1, - "price": 1, - "applications.": 1, - "
": 1, - "Module": 2, - "Module1": 1, - "Main": 1, - "Console.Out.WriteLine": 2 - }, - "Volt": { - "module": 1, - "main": 2, - ";": 53, - "import": 7, - "core.stdc.stdio": 1, - "core.stdc.stdlib": 1, - "watt.process": 1, - "watt.path": 1, - "results": 1, - "list": 1, - "cmd": 1, - "int": 8, - "(": 37, - ")": 37, - "{": 12, - "auto": 6, - "cmdGroup": 2, - "new": 3, - "CmdGroup": 1, - "bool": 4, - "printOk": 2, - "true": 4, - "printImprovments": 2, - "printFailing": 2, - "printRegressions": 2, - "string": 1, - "compiler": 3, - "getEnv": 1, - "if": 7, - "is": 2, - "null": 3, - "printf": 6, - ".ptr": 14, - "return": 2, - "-": 3, - "}": 12, - "///": 1, - "@todo": 1, - "Scan": 1, - "for": 4, - "files": 1, - "tests": 2, - "testList": 1, - "total": 5, - "passed": 5, - "failed": 5, - "improved": 3, - "regressed": 6, - "rets": 5, - "Result": 2, - "[": 6, - "]": 6, - "tests.length": 3, - "size_t": 3, - "i": 14, - "<": 3, - "+": 14, - ".runTest": 1, - "cmdGroup.waitAll": 1, - "ret": 1, - "ret.ok": 1, - "cast": 5, - "ret.hasPassed": 4, - "&&": 2, - "ret.test.ptr": 4, - "ret.msg.ptr": 4, - "else": 3, - "fflush": 2, - "stdout": 1, - "xml": 8, - "fopen": 1, - "fprintf": 2, - "rets.length": 1, - ".xmlLog": 1, - "fclose": 1, - "rate": 2, - "float": 2, - "/": 1, - "*": 1, - "f": 1, - "double": 1 - }, - "wisp": { - ";": 199, - "#": 2, - "wisp": 6, - "Wisp": 13, - "is": 20, - "homoiconic": 1, - "JS": 17, - "dialect": 1, - "with": 6, - "a": 24, - "clojure": 2, - "syntax": 2, - "s": 7, - "-": 33, - "expressions": 6, - "and": 9, - "macros.": 1, - "code": 3, - "compiles": 1, - "to": 21, - "human": 1, - "readable": 1, - "javascript": 1, - "which": 3, - "one": 3, - "of": 16, - "they": 3, - "key": 3, - "differences": 1, - "from": 2, - "clojurescript.": 1, - "##": 2, - "data": 1, - "structures": 1, - "nil": 4, - "just": 3, - "like": 2, - "js": 1, - "undefined": 1, - "differenc": 1, - "that": 7, - "it": 10, - "shortcut": 1, - "for": 5, - "void": 2, - "(": 77, - ")": 75, - "in": 16, - "JS.": 2, - "Booleans": 1, - "booleans": 2, - "true": 6, - "/": 1, - "false": 2, - "are": 14, - "Numbers": 1, - "numbers": 2, - "Strings": 2, - "strings": 3, - "can": 13, - "be": 15, - "multiline": 1, - "Characters": 2, - "sugar": 1, - "single": 1, - "char": 1, - "Keywords": 3, - "symbolic": 2, - "identifiers": 2, - "evaluate": 2, - "themselves.": 1, - "keyword": 1, - "Since": 1, - "string": 1, - "constats": 1, - "fulfill": 1, - "this": 2, - "purpose": 2, - "keywords": 1, - "compile": 3, - "equivalent": 2, - "strings.": 1, - "window.addEventListener": 1, - "load": 1, - "handler": 1, - "invoked": 2, - "as": 4, - "functions": 8, - "desugars": 1, - "plain": 2, - "associated": 2, - "value": 2, - "access": 1, - "bar": 4, - "foo": 6, - "[": 22, - "]": 22, - "Vectors": 1, - "vectors": 1, - "arrays.": 1, - "Note": 3, - "Commas": 2, - "white": 1, - "space": 1, - "&": 6, - "used": 1, - "if": 7, - "desired": 1, - "Maps": 2, - "hash": 1, - "maps": 1, - "objects.": 1, - "unlike": 1, - "keys": 1, - "not": 4, - "arbitary": 1, - "types.": 1, - "{": 4, - "beep": 1, - "bop": 1, - "}": 4, - "optional": 2, - "but": 7, - "come": 1, - "handy": 1, - "separating": 1, - "pairs.": 1, - "b": 5, - "In": 5, - "future": 2, - "JSONs": 1, - "may": 1, - "made": 2, - "compatible": 1, - "map": 3, - "syntax.": 1, - "Lists": 1, - "You": 1, - "up": 1, - "lists": 1, - "representing": 1, - "expressions.": 1, - "The": 1, - "first": 4, - "item": 2, - "the": 9, - "expression": 6, - "function": 7, - "being": 1, - "rest": 7, - "items": 2, - "arguments.": 2, - "baz": 2, - "Conventions": 1, - "puts": 1, - "lot": 2, - "effort": 1, - "making": 1, - "naming": 1, - "conventions": 3, - "transparent": 1, - "by": 2, - "encouraning": 1, - "lisp": 1, - "then": 1, - "translating": 1, - "them": 1, - "dash": 1, - "delimited": 1, - "dashDelimited": 1, - "predicate": 1, - "isPredicate": 1, - "__privates__": 1, - "list": 2, - "vector": 1, - "listToVector": 1, - "As": 1, - "side": 2, - "effect": 1, - "some": 2, - "names": 1, - "expressed": 3, - "few": 1, - "ways": 1, - "although": 1, - "third": 2, - "expression.": 1, - "<": 1, - "number": 3, - "Else": 1, - "missing": 1, - "conditional": 1, - "evaluates": 2, - "result": 2, - "will": 6, - ".": 6, - "monday": 1, - "today": 1, - "Compbining": 1, - "everything": 1, - "an": 1, - "sometimes": 1, - "might": 1, - "want": 2, - "compbine": 1, - "multiple": 1, - "into": 2, - "usually": 3, - "evaluating": 1, - "have": 2, - "effects": 1, - "do": 4, - "console.log": 2, - "+": 9, - "Also": 1, - "special": 4, - "form": 10, - "many.": 1, - "If": 2, - "evaluation": 1, - "nil.": 1, - "Bindings": 1, - "Let": 1, - "containing": 1, - "lexical": 1, - "context": 1, - "simbols": 1, - "bindings": 1, - "forms": 1, - "bound": 1, - "their": 2, - "respective": 1, - "results.": 1, - "let": 2, - "c": 1, - "Functions": 1, - "fn": 15, - "x": 22, - "named": 1, - "similar": 2, - "increment": 1, - "also": 2, - "contain": 1, - "documentation": 1, - "metadata.": 1, - "Docstring": 1, - "metadata": 1, - "presented": 1, - "compiled": 2, - "yet": 1, - "comments": 1, - "function.": 1, - "incerement": 1, - "added": 1, - "makes": 1, - "capturing": 1, - "arguments": 7, - "easier": 1, - "than": 1, - "argument": 1, - "follows": 1, - "simbol": 1, - "capture": 1, - "all": 4, - "args": 1, - "array.": 1, - "rest.reduce": 1, - "sum": 3, - "Overloads": 1, - "overloaded": 1, - "depending": 1, - "on": 1, - "take": 2, - "without": 2, - "introspection": 1, - "version": 1, - "y": 6, - "more": 3, - "more.reduce": 1, - "does": 1, - "has": 2, - "variadic": 1, - "overload": 1, - "passed": 1, - "throws": 1, - "exception.": 1, - "Other": 1, - "Special": 1, - "Forms": 1, - "Instantiation": 1, - "type": 2, - "instantiation": 1, - "consice": 1, - "needs": 1, - "suffixed": 1, - "character": 1, - "Type.": 1, - "options": 2, - "More": 1, - "verbose": 1, - "there": 1, - "new": 2, - "Class": 1, - "Method": 1, - "calls": 3, - "method": 2, - "no": 1, - "different": 1, - "Any": 1, - "quoted": 1, - "prevent": 1, - "doesn": 1, - "t": 1, - "unless": 5, - "or": 2, - "macro": 7, - "try": 1, - "implemting": 1, - "understand": 1, - "use": 2, - "case": 1, - "We": 1, - "execute": 1, - "body": 4, - "condition": 4, - "defn": 2, - "Although": 1, - "following": 2, - "log": 1, - "anyway": 1, - "since": 1, - "exectued": 1, - "before": 1, - "called.": 1, - "Macros": 2, - "solve": 1, - "problem": 1, - "because": 1, - "immediately.": 1, - "Instead": 1, - "you": 1, - "get": 2, - "choose": 1, - "when": 1, - "evaluated.": 1, - "return": 1, - "instead.": 1, - "defmacro": 3, - "less": 1, - "how": 1, - "build": 1, - "implemented.": 1, - "define": 4, - "name": 2, - "def": 1, - "@body": 1, - "Now": 1, - "we": 2, - "above": 1, - "defined": 1, - "expanded": 2, - "time": 1, - "resulting": 1, - "diff": 1, - "program": 1, - "output.": 1, - "print": 1, - "message": 2, - ".log": 1, - "console": 1, - "Not": 1, - "macros": 2, - "via": 2, - "templating": 1, - "language": 1, - "available": 1, - "at": 1, - "hand": 1, - "assemble": 1, - "form.": 1, - "For": 2, - "instance": 1, - "ease": 1, - "functional": 1, - "chanining": 1, - "popular": 1, - "chaining.": 1, - "example": 1, - "API": 1, - "pioneered": 1, - "jQuery": 1, - "very": 2, - "common": 1, - "open": 2, - "target": 1, - "keypress": 2, - "filter": 2, - "isEnterKey": 1, - "getInputText": 1, - "reduce": 3, - "render": 2, - "Unfortunately": 1, - "though": 1, - "requires": 1, - "need": 1, - "methods": 1, - "dsl": 1, - "object": 1, - "limited.": 1, - "Making": 1, - "party": 1, - "second": 1, - "class.": 1, - "Via": 1, - "achieve": 1, - "chaining": 1, - "such": 1, - "tradeoffs.": 1, - "operations": 3, - "operation": 3, - "cons": 2, - "tagret": 1, - "enter": 1, - "input": 1, - "text": 1 - }, - "XC": { - "int": 2, - "main": 1, - "(": 1, - ")": 1, - "{": 2, - "x": 3, - ";": 4, - "chan": 1, - "c": 3, - "par": 1, - "<:>": 1, - "0": 1, - "}": 2, - "return": 1 - }, - "XML": { - "": 4, - "version=": 6, - "": 1, - "name=": 223, - "xmlns": 2, - "ea=": 2, - "": 2, - "This": 21, - "easyant": 3, - "module.ant": 1, - "sample": 2, - "file": 3, - "is": 123, - "optionnal": 1, - "and": 44, - "designed": 1, - "to": 164, - "customize": 1, - "your": 8, - "build": 1, - "with": 23, - "own": 2, - "specific": 8, - "target.": 1, - "": 2, - "": 2, - "": 2, - "my": 2, - "awesome": 1, - "additionnal": 1, - "target": 6, - "": 2, - "": 2, - "extensionOf=": 1, - "i": 2, - "would": 2, - "love": 1, - "could": 1, - "easily": 1, - "plug": 1, - "pre": 1, - "compile": 1, - "step": 1, - "": 1, - "": 1, - "": 1, - "organisation=": 3, - "module=": 3, - "revision=": 3, - "status=": 1, - "this": 77, - "a": 128, - "module.ivy": 1, - "for": 59, - "java": 1, - "standard": 1, - "application": 2, - "": 1, - "": 1, - "value=": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 2, - "visibility=": 2, - "description=": 2, - "": 1, - "": 1, - "": 1, - "org=": 1, - "rev=": 1, - "conf=": 1, - "default": 9, - "junit": 2, - "test": 7, - "-": 49, - "/": 6, - "": 1, - "": 1, - "": 1, - "": 1, - "": 2, - "ReactiveUI": 2, - "": 2, - "": 1, - "": 1, - "": 120, - "": 120, - "IObservedChange": 5, - "generic": 3, - "interface": 4, - "that": 94, - "replaces": 1, - "the": 261, - "non": 1, - "PropertyChangedEventArgs.": 1, - "Note": 7, - "it": 16, - "used": 19, - "both": 2, - "Changing": 5, - "(": 52, - "i.e.": 23, - ")": 45, - "Changed": 4, - "Observables.": 2, - "In": 6, - "future": 2, - "will": 65, - "be": 57, - "Covariant": 1, - "which": 12, - "allow": 1, - "simpler": 1, - "casting": 1, - "between": 15, - "changes.": 2, - "": 121, - "": 120, - "The": 74, - "object": 42, - "has": 16, - "raised": 1, - "change.": 12, - "name": 7, - "of": 75, - "property": 74, - "changed": 18, - "on": 35, - "Sender.": 1, - "value": 44, - "changed.": 9, - "IMPORTANT": 1, - "NOTE": 1, - "often": 3, - "not": 9, - "set": 41, - "performance": 1, - "reasons": 1, - "unless": 1, - "you": 20, - "have": 17, - "explicitly": 1, - "requested": 1, - "an": 88, - "Observable": 56, - "via": 8, - "method": 34, - "such": 5, - "as": 25, - "ObservableForProperty.": 1, - "To": 4, - "retrieve": 3, - "use": 5, - "Value": 3, - "extension": 2, - "method.": 2, - "IReactiveNotifyPropertyChanged": 6, - "represents": 4, - "extended": 1, - "version": 3, - "INotifyPropertyChanged": 1, - "also": 17, - "exposes": 1, - "IEnableLogger": 1, - "dummy": 1, - "attaching": 1, - "any": 11, - "class": 11, - "give": 1, - "access": 3, - "Log": 2, - "When": 5, - "called": 5, - "fire": 11, - "change": 26, - "notifications": 22, - "neither": 3, - "traditional": 3, - "nor": 3, - "until": 7, - "return": 11, - "disposed.": 3, - "": 36, - "An": 26, - "when": 38, - "disposed": 4, - "reenables": 3, - "notifications.": 5, - "": 36, - "Represents": 4, - "fires": 6, - "*before*": 2, - "about": 5, - "should": 10, - "duplicate": 2, - "if": 27, - "same": 8, - "multiple": 6, - "times.": 4, - "*after*": 2, - "TSender": 1, - "helper": 5, - "adds": 2, - "typed": 2, - "versions": 2, - "Changed.": 1, - "IReactiveCollection": 3, - "collection": 27, - "can": 11, - "notify": 3, - "its": 4, - "contents": 2, - "are": 13, - "either": 1, - "items": 27, - "added/removed": 1, - "or": 24, - "itself": 2, - "changes": 13, - ".": 20, - "It": 1, - "important": 6, - "implement": 5, - "Changing/Changed": 1, - "from": 12, - "semantically": 3, - "Fires": 14, - "added": 6, - "once": 4, - "per": 2, - "item": 19, - "added.": 4, - "Functions": 2, - "add": 2, - "AddRange": 2, - "provided": 14, - "was": 6, - "before": 8, - "going": 4, - "collection.": 6, - "been": 5, - "removed": 4, - "providing": 20, - "removed.": 4, - "whenever": 18, - "number": 9, - "in": 45, - "new": 10, - "Count.": 4, - "previous": 2, - "Provides": 4, - "Item": 4, - "implements": 8, - "IReactiveNotifyPropertyChanged.": 4, - "only": 18, - "enabled": 8, - "ChangeTrackingEnabled": 2, - "True.": 2, - "Enables": 2, - "ItemChanging": 2, - "ItemChanged": 2, - "properties": 29, - ";": 10, - "implementing": 2, - "rebroadcast": 2, - "through": 3, - "ItemChanging/ItemChanged.": 2, - "T": 1, - "type": 23, - "specified": 7, - "Observables": 4, - "IMessageBus": 1, - "act": 2, - "simple": 2, - "way": 2, - "ViewModels": 3, - "other": 9, - "objects": 4, - "communicate": 2, - "each": 7, - "loosely": 2, - "coupled": 2, - "way.": 2, - "Specifying": 2, - "messages": 22, - "go": 2, - "where": 4, - "done": 2, - "combination": 2, - "Type": 9, - "message": 30, - "well": 2, - "additional": 3, - "parameter": 6, - "unique": 12, - "string": 13, - "distinguish": 12, - "arbitrarily": 2, - "by": 13, - "client.": 2, - "Listen": 4, - "provides": 6, - "Message": 2, - "RegisterMessageSource": 4, - "SendMessage.": 2, - "": 12, - "listen": 6, - "to.": 7, - "": 12, - "": 84, - "A": 19, - "identical": 11, - "types": 10, - "one": 27, - "purpose": 10, - "leave": 10, - "null.": 10, - "": 83, - "Determins": 2, - "particular": 2, - "registered.": 2, - "message.": 1, - "True": 6, - "posted": 3, - "Type.": 2, - "Registers": 3, - "representing": 20, - "stream": 7, - "send.": 4, - "Another": 2, - "part": 2, - "code": 4, - "then": 3, - "call": 5, - "Observable.": 6, - "subscribed": 2, - "sent": 2, - "out": 4, - "provided.": 5, - "Sends": 2, - "single": 2, - "using": 9, - "contract.": 2, - "Consider": 2, - "instead": 2, - "sending": 2, - "response": 2, - "events.": 2, - "actual": 2, - "send": 3, - "returns": 5, - "current": 10, - "logger": 2, - "allows": 15, - "log": 2, - "attached.": 1, - "data": 1, - "structure": 1, - "representation": 1, - "memoizing": 2, - "cache": 14, - "evaluate": 1, - "function": 13, - "but": 7, - "keep": 1, - "recently": 3, - "evaluated": 1, - "parameters.": 1, - "Since": 1, - "mathematical": 2, - "sense": 1, - "key": 12, - "*always*": 1, - "maps": 1, - "corresponding": 2, - "value.": 2, - "calculation": 8, - "function.": 6, - "returned": 2, - "Constructor": 2, - "whose": 7, - "results": 6, - "want": 2, - "Tag": 1, - "user": 2, - "defined": 1, - "size": 1, - "maintain": 1, - "after": 1, - "old": 1, - "start": 1, - "thrown": 1, - "out.": 1, - "result": 3, - "gets": 1, - "evicted": 2, - "because": 2, - "Invalidate": 2, - "full": 1, - "Evaluates": 1, - "returning": 1, - "cached": 2, - "possible": 1, - "pass": 2, - "optional": 2, - "parameter.": 1, - "Ensure": 1, - "next": 1, - "time": 3, - "queried": 1, - "called.": 1, - "all": 4, - "Returns": 5, - "values": 4, - "currently": 2, - "MessageBus": 3, - "bus.": 1, - "scheduler": 11, - "post": 2, - "RxApp.DeferredScheduler": 2, - "default.": 2, - "Current": 1, - "RxApp": 1, - "global": 1, - "object.": 3, - "ViewModel": 8, - "another": 3, - "s": 3, - "Return": 1, - "instance": 2, - "type.": 3, - "registered": 1, - "ObservableAsPropertyHelper": 6, - "help": 1, - "backed": 1, - "read": 3, - "still": 1, - "created": 2, - "directly": 1, - "more": 16, - "ToProperty": 2, - "ObservableToProperty": 1, - "methods.": 2, - "so": 1, - "output": 1, - "chained": 2, - "example": 2, - "property.": 12, - "Constructs": 4, - "base": 3, - "on.": 6, - "action": 2, - "take": 2, - "typically": 1, - "t": 2, - "bindings": 13, - "null": 4, - "OAPH": 2, - "at": 2, - "startup.": 1, - "initial": 28, - "normally": 6, - "Dispatcher": 3, - "based": 9, - "last": 1, - "Exception": 1, - "steps": 1, - "taken": 1, - "ensure": 3, - "never": 3, - "complete": 1, - "fail.": 1, - "Converts": 2, - "automatically": 3, - "onChanged": 2, - "raise": 2, - "notification.": 2, - "equivalent": 2, - "convenient.": 1, - "Expression": 7, - "initialized": 2, - "backing": 9, - "field": 10, - "ReactiveObject": 11, - "ObservableAsyncMRUCache": 2, - "memoization": 2, - "asynchronous": 4, - "expensive": 2, - "compute": 1, - "MRU": 1, - "fixed": 1, - "limit": 5, - "cache.": 5, - "guarantees": 6, - "given": 11, - "flight": 2, - "subsequent": 1, - "requests": 4, - "wait": 3, - "first": 1, - "empty": 1, - "web": 6, - "image": 1, - "receives": 1, - "two": 1, - "concurrent": 5, - "issue": 2, - "WebRequest": 1, - "does": 1, - "mean": 1, - "request": 3, - "Concurrency": 1, - "limited": 1, - "maxConcurrent": 1, - "too": 1, - "many": 1, - "operations": 6, - "progress": 1, - "further": 1, - "queued": 1, - "slot": 1, - "available.": 1, - "performs": 1, - "asyncronous": 1, - "async": 3, - "CPU": 1, - "Observable.Return": 1, - "may": 1, - "result.": 2, - "*must*": 1, - "equivalently": 1, - "input": 2, - "being": 1, - "memoized": 1, - "calculationFunc": 2, - "depends": 1, - "varables": 1, - "than": 5, - "unpredictable.": 1, - "reached": 2, - "discarded.": 4, - "maximum": 2, - "regardless": 2, - "caches": 2, - "server.": 2, - "clean": 1, - "up": 25, - "manage": 1, - "disk": 1, - "download": 1, - "save": 2, - "temporary": 1, - "folder": 1, - "onRelease": 1, - "delete": 1, - "file.": 1, - "run": 7, - "defaults": 1, - "TaskpoolScheduler": 2, - "Issues": 1, - "fetch": 1, - "operation.": 1, - "operation": 2, - "finishes.": 1, - "If": 6, - "immediately": 3, - "upon": 1, - "subscribing": 1, - "returned.": 2, - "provide": 2, - "synchronous": 1, - "AsyncGet": 1, - "resulting": 1, - "Works": 2, - "like": 2, - "SelectMany": 2, - "memoizes": 2, - "selector": 5, - "calls.": 2, - "addition": 3, - "no": 4, - "selectors": 2, - "running": 4, - "concurrently": 2, - "queues": 2, - "rest.": 2, - "very": 2, - "services": 2, - "avoid": 2, - "potentially": 2, - "spamming": 2, - "server": 2, - "hundreds": 2, - "requests.": 2, - "similar": 3, - "passed": 1, - "SelectMany.": 1, - "similarly": 1, - "ObservableAsyncMRUCache.AsyncGet": 1, - "must": 2, - "sense.": 1, - "flattened": 2, - "selector.": 2, - "overload": 2, - "useful": 2, - "making": 3, - "service": 1, - "several": 1, - "places": 1, - "paths": 1, - "already": 1, - "configured": 1, - "ObservableAsyncMRUCache.": 1, - "notification": 6, - "Attempts": 1, - "expression": 3, - "false": 2, - "expression.": 1, - "entire": 1, - "able": 1, - "followed": 1, - "otherwise": 1, - "Given": 3, - "fully": 3, - "filled": 1, - "SetValueToProperty": 1, - "apply": 3, - "target.property": 1, - "This.GetValue": 1, - "observed": 1, - "onto": 1, - "convert": 2, - "stream.": 3, - "ValueIfNotDefault": 1, - "filters": 1, - "BindTo": 1, - "takes": 1, - "applies": 1, - "Conceptually": 1, - "child": 2, - "without": 1, - "checks.": 1, - "set.": 3, - "x.Foo.Bar.Baz": 1, - "disconnects": 1, - "binding.": 1, - "ReactiveCollection.": 1, - "ReactiveCollection": 1, - "existing": 3, - "list.": 2, - "list": 1, - "populate": 1, - "anything": 2, - "Change": 2, - "Tracking": 2, - "Creates": 3, - "adding": 2, - "completes": 4, - "optionally": 2, - "ensuring": 2, - "delay.": 2, - "withDelay": 2, - "leak": 2, - "Timer.": 2, - "always": 4, - "UI": 2, - "thread.": 3, - "put": 2, - "into": 2, - "populated": 4, - "faster": 2, - "delay": 2, - "Select": 3, - "item.": 3, - "creating": 2, - "collections": 1, - "updated": 1, - "respective": 1, - "Model": 1, - "updated.": 1, - "Collection.Select": 1, - "mirror": 1, - "ObservableForProperty": 14, - "ReactiveObject.": 1, - "unlike": 13, - "Selector": 1, - "classes": 2, - "INotifyPropertyChanged.": 1, - "monitor": 1, - "RaiseAndSetIfChanged": 2, - "Setter": 2, - "write": 2, - "assumption": 4, - "named": 2, - "RxApp.GetFieldNameForPropertyNameFunc.": 2, - "almost": 2, - "keyword.": 2, - "newly": 2, - "intended": 5, - "Silverlight": 2, - "WP7": 1, - "reflection": 1, - "cannot": 1, - "private": 1, - "field.": 1, - "Reference": 1, - "Use": 13, - "custom": 4, - "raiseAndSetIfChanged": 1, - "doesn": 1, - "x": 1, - "x.SomeProperty": 1, - "suffice.": 1, - "RaisePropertyChanging": 2, - "mock": 4, - "scenarios": 4, - "manually": 4, - "fake": 4, - "invoke": 4, - "raisePropertyChanging": 4, - "faking": 4, - "RaisePropertyChanged": 2, - "helps": 1, - "make": 2, - "them": 1, - "compatible": 1, - "Rx.Net.": 1, - "declare": 1, - "initialize": 1, - "derive": 1, - "properties/methods": 1, - "MakeObjectReactiveHelper.": 1, - "InUnitTestRunner": 1, - "attempts": 1, - "determine": 1, - "heuristically": 1, - "unit": 3, - "framework.": 1, - "we": 1, - "determined": 1, - "framework": 1, - "running.": 1, - "GetFieldNameForProperty": 1, - "convention": 2, - "GetFieldNameForPropertyNameFunc.": 1, - "needs": 1, - "found.": 1, - "name.": 1, - "DeferredScheduler": 1, - "schedule": 2, - "work": 2, - "normal": 2, - "mode": 2, - "DispatcherScheduler": 1, - "Unit": 1, - "Test": 1, - "Immediate": 1, - "simplify": 1, - "writing": 1, - "common": 1, - "tests.": 1, - "background": 1, - "modes": 1, - "TPL": 1, - "Task": 1, - "Pool": 1, - "Threadpool": 1, - "Set": 3, - "provider": 1, - "usually": 1, - "entry": 1, - "MessageBus.Current.": 1, - "override": 1, - "naming": 1, - "one.": 1, - "WhenAny": 12, - "observe": 12, - "constructors": 12, - "need": 12, - "setup.": 12, - "": 1, - "": 1, - "encoding=": 1, - "": 1, - "TS": 1, - "": 1, - "language=": 1, - "": 1, - "MainWindow": 1, - "": 8, - "": 8, - "filename=": 8, - "line=": 8, - "": 8, - "United": 1, - "Kingdom": 1, - "": 8, - "": 8, - "Reino": 1, - "Unido": 1, - "": 8, - "": 8, - "God": 1, - "Queen": 1, - "Deus": 1, - "salve": 1, - "Rainha": 1, - "England": 1, - "Inglaterra": 1, - "Wales": 1, - "Gales": 1, - "Scotland": 1, - "Esc": 1, - "cia": 1, - "Northern": 1, - "Ireland": 1, - "Irlanda": 1, - "Norte": 1, - "Portuguese": 1, - "Portugu": 1, - "English": 1, - "Ingl": 1, - "": 1, - "": 1 - }, - "XProc": { - "": 1, - "version=": 2, - "encoding=": 1, - "": 1, - "xmlns": 2, - "p=": 1, - "c=": 1, - "": 1, - "port=": 2, - "": 1, - "": 1, - "Hello": 1, - "world": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1, - "": 1 - }, - "XQuery": { - "(": 38, - "-": 486, - "xproc.xqm": 1, - "core": 1, - "xqm": 1, - "contains": 1, - "entry": 2, - "points": 1, - "primary": 1, - "eval": 3, - "step": 5, - "function": 3, - "and": 3, - "control": 1, - "functions.": 1, - ")": 38, - "xquery": 1, - "version": 1, - "encoding": 1, - ";": 25, - "module": 6, - "namespace": 8, - "xproc": 17, - "declare": 24, - "namespaces": 5, - "p": 2, - "c": 1, - "err": 1, - "imports": 1, - "import": 4, - "util": 1, - "at": 4, - "const": 1, - "parse": 8, - "u": 2, - "options": 2, - "boundary": 1, - "space": 1, - "preserve": 1, - "option": 1, - "saxon": 1, - "output": 1, - "functions": 1, - "variable": 13, - "run": 2, - "run#6": 1, - "choose": 1, - "try": 1, - "catch": 1, - "group": 1, - "for": 1, - "each": 1, - "viewport": 1, - "library": 1, - "pipeline": 8, - "list": 1, - "all": 1, - "declared": 1, - "enum": 3, - "{": 5, - "": 1, - "name=": 1, - "ns": 1, - "": 1, - "}": 5, - "": 1, - "": 1, - "point": 1, - "stdin": 1, - "dflag": 1, - "tflag": 1, - "bindings": 2, - "STEP": 3, - "I": 1, - "preprocess": 1, - "let": 6, - "validate": 1, - "explicit": 3, - "AST": 2, - "name": 1, - "type": 1, - "ast": 1, - "element": 1, - "parse/@*": 1, - "sort": 1, - "parse/*": 1, - "II": 1, - "eval_result": 1, - "III": 1, - "serialize": 1, - "return": 2, - "results": 1, - "serialized_result": 2 - }, - "XSLT": { - "": 1, - "version=": 2, - "": 1, - "xmlns": 1, - "xsl=": 1, - "": 1, - "match=": 1, - "": 1, - "": 1, - "

": 1, - "My": 1, - "CD": 1, - "Collection": 1, - "

": 1, - "": 1, - "border=": 1, - "": 2, - "bgcolor=": 1, - "": 2, - "Artist": 1, - "": 2, - "": 1, - "select=": 3, - "": 2, - "": 1, - "
": 2, - "Title": 1, - "
": 2, - "": 2, - "
": 1, - "": 1, - "": 1, - "
": 1, - "
": 1 - }, - "Xtend": { - "package": 2, - "example2": 1, - "import": 7, - "org.junit.Test": 2, - "static": 4, - "org.junit.Assert.*": 2, - "class": 4, - "BasicExpressions": 2, - "{": 14, - "@Test": 7, - "def": 7, - "void": 7, - "literals": 5, - "(": 42, - ")": 42, - "//": 11, - "string": 1, - "work": 1, - "with": 2, - "single": 1, - "or": 1, - "double": 2, - "quotes": 1, - "assertEquals": 14, - "number": 1, - "big": 1, - "decimals": 1, - "in": 2, - "this": 1, - "case": 1, - "+": 6, - "*": 1, - "bd": 3, - "boolean": 1, - "true": 1, - "false": 1, - "getClass": 1, - "typeof": 1, - "}": 13, - "collections": 2, - "There": 1, - "are": 1, - "various": 1, - "methods": 2, - "to": 1, - "create": 1, - "and": 1, - "numerous": 1, - "extension": 2, - "which": 1, - "make": 1, - "working": 1, - "them": 1, - "convenient.": 1, - "val": 9, - "list": 1, - "newArrayList": 2, - "list.map": 1, - "[": 9, - "toUpperCase": 1, - "]": 9, - ".head": 1, - "set": 1, - "newHashSet": 1, - "set.filter": 1, - "it": 2, - ".size": 2, - "map": 1, - "newHashMap": 1, - "-": 5, - "map.get": 1, - "controlStructures": 1, - "looks": 1, - "like": 1, - "Java": 1, - "if": 1, - ".length": 1, - "but": 1, - "foo": 1, - "bar": 1, - "Never": 2, - "happens": 3, - "text": 2, - "never": 1, - "s": 1, - "cascades.": 1, - "Object": 1, - "someValue": 2, - "switch": 1, - "Number": 1, - "String": 2, - "loops": 1, - "for": 2, - "loop": 2, - "var": 1, - "counter": 8, - "i": 4, - "..": 1, - "while": 2, - "iterator": 1, - ".iterator": 2, - "iterator.hasNext": 1, - "iterator.next": 1, - "example6": 1, - "java.io.FileReader": 1, - "java.util.Set": 1, - "com.google.common.io.CharStreams.*": 1, - "Movies": 1, - "numberOfActionMovies": 1, - "movies.filter": 2, - "categories.contains": 1, - "yearOfBestMovieFrom80ies": 1, - ".contains": 1, - "year": 2, - ".sortBy": 1, - "rating": 3, - ".last.year": 1, - "sumOfVotesOfTop2": 1, - "long": 2, - "movies": 3, - "movies.sortBy": 1, - ".take": 1, - ".map": 1, - "numberOfVotes": 2, - ".reduce": 1, - "a": 2, - "b": 2, - "|": 2, - "_229": 1, - "new": 2, - "FileReader": 1, - ".readLines.map": 1, - "line": 1, - "segments": 1, - "line.split": 1, - "return": 1, - "Movie": 2, - "segments.next": 4, - "Integer": 1, - "parseInt": 1, - "Double": 1, - "parseDouble": 1, - "Long": 1, - "parseLong": 1, - "segments.toSet": 1, - "@Data": 1, - "title": 1, - "int": 1, - "Set": 1, - "": 1, - "categories": 1 - }, - "YAML": { - "gem": 1, - "-": 16, - "local": 1, - "gen": 1, - "rdoc": 2, - "run": 1, - "tests": 1, - "inline": 1, - "source": 1, - "line": 1, - "numbers": 1, - "gempath": 1, - "/usr/local/rubygems": 1, - "/home/gavin/.rubygems": 1 - } - }, - "language_tokens": { - "ABAP": 1500, - "Agda": 376, - "ApacheConf": 1449, - "Apex": 4408, - "AppleScript": 1862, - "Arduino": 20, - "AsciiDoc": 103, - "ATS": 4558, - "AutoHotkey": 3, - "Awk": 544, - "BlitzBasic": 2065, - "Bluespec": 1298, - "Brightscript": 579, - "C": 59053, - "C#": 278, - "C++": 31181, - "Ceylon": 50, - "Cirru": 244, - "Clojure": 510, - "COBOL": 90, - "CoffeeScript": 2951, - "Common Lisp": 103, - "Coq": 18259, - "Creole": 134, - "CSS": 43867, - "Cuda": 290, - "Dart": 74, - "Diff": 16, - "DM": 169, - "ECL": 281, - "edn": 227, - "Elm": 628, - "Emacs Lisp": 1756, - "Erlang": 2928, - "fish": 636, - "Forth": 1516, - "GAS": 133, - "GLSL": 3766, - "Gosu": 410, - "Groovy": 69, - "Groovy Server Pages": 91, - "Haml": 4, - "Handlebars": 69, - "Hy": 155, - "IDL": 418, - "Idris": 148, - "INI": 27, - "Ioke": 2, - "Jade": 3, - "Java": 8987, - "JavaScript": 76934, - "JSON": 183, - "JSON5": 57, - "JSONLD": 18, - "Julia": 247, - "Kotlin": 155, - "KRL": 25, - "Lasso": 9849, - "Less": 39, - "LFE": 1711, - "Literate Agda": 478, - "Literate CoffeeScript": 275, - "LiveScript": 123, - "Logos": 93, - "Logtalk": 36, - "Lua": 724, - "M": 23373, - "Makefile": 50, - "Markdown": 1, - "Matlab": 11942, - "Max": 714, - "MediaWiki": 766, - "Monkey": 207, - "MoonScript": 1718, - "Nemerle": 17, - "NetLogo": 243, - "Nginx": 179, - "Nimrod": 1, - "NSIS": 725, - "Nu": 116, - "Objective-C": 26518, - "OCaml": 382, - "Omgrofl": 57, - "Opa": 28, - "OpenCL": 144, - "OpenEdge ABL": 762, - "Org": 358, - "Oxygene": 157, - "Parrot Assembly": 6, - "Parrot Internal Representation": 5, - "Pascal": 30, - "PAWN": 3263, - "Perl": 17497, - "Perl6": 372, - "PHP": 20724, - "Pod": 658, - "PogoScript": 250, - "PostScript": 107, - "PowerShell": 12, - "Processing": 74, - "Prolog": 468, - "Protocol Buffer": 63, - "Python": 5715, - "R": 195, - "Racket": 331, - "Ragel in Ruby Host": 593, - "RDoc": 279, - "Rebol": 11, - "RMarkdown": 19, - "RobotFramework": 483, - "Ruby": 3862, - "Rust": 3566, - "Sass": 56, - "Scala": 750, - "Scaml": 4, - "Scheme": 3478, - "Scilab": 69, - "SCSS": 39, - "Shell": 3744, - "Slash": 187, - "Squirrel": 130, - "Standard ML": 6405, - "Stylus": 76, - "SuperCollider": 133, - "Tea": 3, - "TeX": 2701, - "Turing": 44, - "TXL": 213, - "TypeScript": 109, - "UnrealScript": 2873, - "Verilog": 3778, - "VHDL": 42, - "VimL": 20, - "Visual Basic": 581, - "Volt": 388, - "wisp": 1363, - "XC": 24, - "XML": 5737, - "XProc": 22, - "XQuery": 801, - "XSLT": 44, - "Xtend": 399, - "YAML": 30 - }, - "languages": { - "ABAP": 1, - "Agda": 1, - "ApacheConf": 3, - "Apex": 6, - "AppleScript": 7, - "Arduino": 1, - "AsciiDoc": 3, - "ATS": 10, - "AutoHotkey": 1, - "Awk": 1, - "BlitzBasic": 3, - "Bluespec": 2, - "Brightscript": 1, - "C": 29, - "C#": 2, - "C++": 27, - "Ceylon": 1, - "Cirru": 9, - "Clojure": 7, - "COBOL": 4, - "CoffeeScript": 9, - "Common Lisp": 1, - "Coq": 12, - "Creole": 1, - "CSS": 2, - "Cuda": 2, - "Dart": 1, - "Diff": 1, - "DM": 1, - "ECL": 1, - "edn": 1, - "Elm": 3, - "Emacs Lisp": 2, - "Erlang": 5, - "fish": 3, - "Forth": 7, - "GAS": 1, - "GLSL": 3, - "Gosu": 4, - "Groovy": 2, - "Groovy Server Pages": 4, - "Haml": 1, - "Handlebars": 2, - "Hy": 2, - "IDL": 4, - "Idris": 1, - "INI": 2, - "Ioke": 1, - "Jade": 1, - "Java": 6, - "JavaScript": 20, - "JSON": 4, - "JSON5": 2, - "JSONLD": 1, - "Julia": 1, - "Kotlin": 1, - "KRL": 1, - "Lasso": 4, - "Less": 1, - "LFE": 4, - "Literate Agda": 1, - "Literate CoffeeScript": 1, - "LiveScript": 1, - "Logos": 1, - "Logtalk": 1, - "Lua": 3, - "M": 28, - "Makefile": 2, - "Markdown": 1, - "Matlab": 39, - "Max": 3, - "MediaWiki": 1, - "Monkey": 1, - "MoonScript": 1, - "Nemerle": 1, - "NetLogo": 1, - "Nginx": 1, - "Nimrod": 1, - "NSIS": 2, - "Nu": 2, - "Objective-C": 19, - "OCaml": 2, - "Omgrofl": 1, - "Opa": 2, - "OpenCL": 2, - "OpenEdge ABL": 5, - "Org": 1, - "Oxygene": 1, - "Parrot Assembly": 1, - "Parrot Internal Representation": 1, - "Pascal": 1, - "PAWN": 1, - "Perl": 14, - "Perl6": 3, - "PHP": 9, - "Pod": 1, - "PogoScript": 1, - "PostScript": 1, - "PowerShell": 2, - "Processing": 1, - "Prolog": 3, - "Protocol Buffer": 1, - "Python": 7, - "R": 3, - "Racket": 2, - "Ragel in Ruby Host": 3, - "RDoc": 1, - "Rebol": 1, - "RMarkdown": 1, - "RobotFramework": 3, - "Ruby": 17, - "Rust": 1, - "Sass": 2, - "Scala": 4, - "Scaml": 1, - "Scheme": 1, - "Scilab": 3, - "SCSS": 1, - "Shell": 37, - "Slash": 1, - "Squirrel": 1, - "Standard ML": 4, - "Stylus": 1, - "SuperCollider": 1, - "Tea": 1, - "TeX": 2, - "Turing": 1, - "TXL": 1, - "TypeScript": 3, - "UnrealScript": 2, - "Verilog": 13, - "VHDL": 1, - "VimL": 2, - "Visual Basic": 3, - "Volt": 1, - "wisp": 1, - "XC": 1, - "XML": 4, - "XProc": 1, - "XQuery": 1, - "XSLT": 1, - "Xtend": 2, - "YAML": 1 - }, - "md5": "8815515b1699aba1650cc4e4b81587fd" -} \ No newline at end of file diff --git a/lib/linguist/samples.rb b/lib/linguist/samples.rb index 2bd5212e..920bb87e 100644 --- a/lib/linguist/samples.rb +++ b/lib/linguist/samples.rb @@ -17,9 +17,11 @@ module Linguist PATH = File.expand_path('../samples.json', __FILE__) # Hash of serialized samples object - if File.exist?(PATH) - serializer = defined?(JSON) ? JSON : YAML - DATA = serializer.load(File.read(PATH)) + def self.cache + @cache ||= begin + serializer = defined?(JSON) ? JSON : YAML + serializer.load(File.read(PATH)) + end end # Public: Iterate over each sample. @@ -28,7 +30,7 @@ module Linguist # # Returns nothing. def self.each(&block) - Dir.entries(ROOT).each do |category| + Dir.entries(ROOT).sort!.each do |category| next if category == '.' || category == '..' # Skip text and binary for now diff --git a/lib/linguist/vendor.yml b/lib/linguist/vendor.yml index 3609b466..e141eff8 100644 --- a/lib/linguist/vendor.yml +++ b/lib/linguist/vendor.yml @@ -10,7 +10,7 @@ ## Vendor Conventions ## # Caches -- cache/ +- (^|/)cache/ # Dependencies - ^[Dd]ependencies/ @@ -33,16 +33,36 @@ # Erlang bundles - ^rebar$ +# Go dependencies +- Godeps/_workspace/ + # Bootstrap minified css and js - (^|/)bootstrap([^.]*)(\.min)?\.(js|css)$ +# Font Awesome +- font-awesome.min.css +- font-awesome.css + # Foundation css - foundation.min.css - foundation.css +# Normalize.css +- normalize.css + +# Bourbon SCSS +- (^|/)[Bb]ourbon/.*\.css$ +- (^|/)[Bb]ourbon/.*\.scss$ + +# Animate.css +- animate.css +- animate.min.css + # Vendored dependencies -- thirdparty/ +- third[-_]?party/ +- 3rd[-_]?party/ - vendors?/ +- extern(al)?/ # Debian packaging - ^debian/ @@ -98,6 +118,20 @@ # AngularJS - (^|/)angular([^.]*)(\.min)?\.js$ +# D3.js +- (^|\/)d3(\.v\d+)?([^.]*)(\.min)?\.js$ + +# React +- (^|/)react(-[^.]*)?(\.min)?\.js$ + +# Modernizr +- (^|/)modernizr\-\d\.\d+(\.\d+)?(\.min)?\.js$ +- (^|/)modernizr\.custom\.\d+\.js$ + +# Knockout +- (^|/)knockout-(\d+\.){3}(debug\.)?js$ +- knockout-min.js + ## Python ## # django @@ -114,13 +148,24 @@ ## Obj-C ## +# Cocoapods +- ^Pods/ + # Sparkle - (^|/)Sparkle/ +## Groovy ## + +# Gradle +- (^|/)gradlew$ +- (^|/)gradlew\.bat$ +- (^|/)gradle/wrapper/ + ## .NET ## # Visual Studio IntelliSense - -vsdoc\.js$ +- \.intellisense\.js$ # jQuery validation plugin (MS bundles this with asp.net mvc) - (^|/)jquery([^.]*)\.validate(\.unobtrusive)?(\.min)?\.js$ @@ -130,7 +175,7 @@ - (^|/)[Mm]icrosoft([Mm]vc)?([Aa]jax|[Vv]alidation)(\.debug)?\.js$ # NuGet -- ^[Pp]ackages/ +- ^[Pp]ackages\/.+\.\d+\/ # ExtJS - (^|/)extjs/.*?\.js$ @@ -150,6 +195,9 @@ - (^|/)extjs/src/ - (^|/)extjs/welcome/ +# Html5shiv +- (^|/)html5shiv(\.min)?\.js$ + # Samples folders - ^[Ss]amples/ @@ -170,8 +218,27 @@ - (^|/)cordova([^.]*)(\.min)?\.js$ - (^|/)cordova\-\d\.\d(\.\d)?(\.min)?\.js$ +# Foundation js +- foundation(\..*)?\.js$ + # Vagrant - ^Vagrantfile$ # .DS_Store's - .[Dd][Ss]_[Ss]tore$ + +# Mercury --use-subdirs +- Mercury/ + +# R packages +- ^vignettes/ +- ^inst/extdata/ + +# Octicons +- octicons.css +- octicons.min.css +- sprockets-octicons.scss + +# Typesafe Activator +- (^|/)activator$ +- (^|/)activator\.bat$ diff --git a/lib/linguist/version.rb b/lib/linguist/version.rb new file mode 100644 index 00000000..b5bd50de --- /dev/null +++ b/lib/linguist/version.rb @@ -0,0 +1,3 @@ +module Linguist + VERSION = "3.1.5" +end diff --git a/samples/AGS Script/GlobalScript.asc b/samples/AGS Script/GlobalScript.asc new file mode 100644 index 00000000..507cb071 --- /dev/null +++ b/samples/AGS Script/GlobalScript.asc @@ -0,0 +1,521 @@ +// main global script file + +// A function that initializes a bunch of stuff. +function initialize_control_panel() { + // Centre the control panel + gPanel.Centre(); + // Centre the Restart dialog as well + gRestartYN.Centre(); + if (!IsSpeechVoxAvailable()) { + // If there is no speech-vox file, and therefore no speech, + // disable all the controls related with speech. + lblVoice.Visible = false; + btnVoice.Visible = false; + sldVoice.Visible = false; + } + else { + // If there *is*, then set it to voice and text. It's best to use + // both whenever possible, for the player's sake. + SetVoiceMode(eSpeechVoiceAndText); + // And reflect this in the control panel. + btnVoice.Text = "Voice and Text"; + } + if (!System.SupportsGammaControl) { + // If we can't change the gamma settings, disable the relevant options. + sldGamma.Visible = false; + lblGamma.Visible = false; + } + + //And now, set all the defaults + System.Volume = 100; + sldAudio.Value = System.Volume; + SetGameSpeed(40); + sldSpeed.Value = 40; + if (IsSpeechVoxAvailable()) { + SetVoiceMode(eSpeechVoiceAndText); + btnVoice.Text = "Voice and Text"; + sldVoice.Value = 255; + SetSpeechVolume(255); + } + if (System.SupportsGammaControl) { + System.Gamma = 100; + sldGamma.Value = 100; + } +} + +// Called when the game starts, before the first room is loaded +function game_start() { + // Put the code all in a function and then just call the function. + // It saves cluttering up places like game_start. + initialize_control_panel(); + // Use the KeyboardMovement module to, per default, replicate the standard + // keyboard movement of most Sierra games. See KeyboardMovement.txt for more info + KeyboardMovement.SetMode(eKeyboardMovement_Tapping); +} + +function repeatedly_execute() { + + // Put here anything you want to happen every game cycle, even when + // the game is paused. This will not run when the game is blocked + // inside a command like a blocking Walk() + + if (IsGamePaused() == 1) return; + + // Put here anything you want to happen every game cycle, but not + // when the game is paused. +} + +function repeatedly_execute_always() { + + // Put anything you want to happen every game cycle, even + // when the game is blocked inside a command like a + // blocking Walk(). + // You cannot run blocking commands from this function. + +} + +function show_inventory_window () +{ + gInventory.Visible = true; + // switch to the Use cursor (to select items with) + mouse.Mode = eModeInteract; + // But, override the appearance to look like the arrow + mouse.UseModeGraphic(eModePointer); +} + +function show_save_game_dialog() +{ + gSaveGame.Visible = true; + // Get the list of save games + lstSaveGamesList.FillSaveGameList(); + if (lstSaveGamesList.ItemCount > 0) + { + // If there is at least one, set the default text + // to be the first game's name + txtNewSaveName.Text = lstSaveGamesList.Items[0]; + } + else + { + // No save games yet, default empty text. + txtNewSaveName.Text = ""; + } + mouse.UseModeGraphic(eModePointer); + gIconbar.Visible = false; +} + +function show_restore_game_dialog() +{ + gRestoreGame.Visible = true; + lstRestoreGamesList.FillSaveGameList(); + mouse.UseModeGraphic(eModePointer); + gIconbar.Visible = false; +} + +function close_save_game_dialog() +{ + gSaveGame.Visible = false; + mouse.UseDefaultGraphic(); + gIconbar.Visible = true; +} + +function close_restore_game_dialog() +{ + gRestoreGame.Visible = false; + mouse.UseDefaultGraphic(); + gIconbar.Visible = true; +} + +// Called when a key is pressed. keycode holds the key's ASCII code +function on_key_press(eKeyCode keycode) { + // The following is called before "if game is paused keycode=0", so + // it'll happen even when the game is paused. + + if ((keycode == eKeyEscape) && gRestartYN.Visible) { + //Use ESC to cancel restart. + gRestartYN.Visible = false; + gIconbar.Visible = true; + // If the panel's not ON, then the player must have gotten here by tapping F9, + // therefore his cursor needs restoring. If the panel IS on, then it doesn't, + // because it's already a pointer. Get used to thinking like this!! + if (!gPanel.Visible) mouse.UseDefaultGraphic(); + return; + } + if ((keycode == eKeyEscape) && gPanel.Visible) { + // Use ESC to turn the panel off. + gPanel.Visible = false; + mouse.UseDefaultGraphic(); + gIconbar.Visible = true; + return; + } + if ((keycode == eKeyEscape) && (gSaveGame.Visible)) + { + // Use ESC to close the save game dialog + close_save_game_dialog(); + return; + } + if ((keycode == eKeyEscape) && (gRestoreGame.Visible)) + { + // Use ESC to close the restore game dialog + close_restore_game_dialog(); + return; + } + + if (keycode == eKeyReturn) { + // ENTER, in this case merely confirms restart + if (gRestartYN.Visible) RestartGame(); + } + + if (IsGamePaused() || (IsInterfaceEnabled() == 0)) + { + // If the game is paused with a modal GUI on the + // screen, or the player interface is disabled in + // a cut scene, ignore any keypresses. + return; + } + + // FUNCTION KEYS AND SYSTEM SHORTCUTS + if (keycode == eKeyEscape) { + // ESC + gPanel.Visible = true; + gIconbar.Visible = false; + mouse.UseModeGraphic(eModePointer); + } + if (keycode == eKeyCtrlQ) QuitGame(1); // Ctrl-Q + if (keycode == eKeyF5) show_save_game_dialog(); // F5 + if (keycode == eKeyF7) show_restore_game_dialog(); // F7 + if (keycode == eKeyF9) { + // F9, asks the player to confirm restarting (so much better to always confirm first) + gRestartYN.Visible = true; + gIconbar.Visible = false; + mouse.UseModeGraphic(eModePointer); + } + if (keycode == eKeyF12) SaveScreenShot("scrnshot.bmp"); // F12 + if (keycode == eKeyTab) show_inventory_window(); // Tab, show inventory + + // GAME COMMAND SHORTCUTS + if (keycode == 'W') mouse.Mode=eModeWalkto; //Notice this alternate way to indicate keycodes. + if (keycode == 'L') mouse.Mode=eModeLookat; //Note that all we do here is set modes. + if (keycode == 'U') mouse.Mode=eModeInteract; //If you want something else to happen, such as GUI buttons highlighting, + if (keycode == 'T') mouse.Mode=eModeTalkto; //you'll need some more scripting done. + if (keycode == 'I') mouse.Mode=eModeUseinv; //But this will, as-is, give you some standard keyboard shortcuts your players will very much appreciate. + + // For extra cursor modes, such as pick up, feel free to add as you will. + // Uncomment the line below if you use the "Pick Up" mode. + //if (keycode == 'P' || keycode == 'G') mouse.Mode=eModePickup; + + // DEBUG FUNCTIONS + if (keycode == eKeyCtrlS) Debug(0,0); // Ctrl-S, give all inventory + if (keycode == eKeyCtrlV) Debug(1,0); // Ctrl-V, version + if (keycode == eKeyCtrlA) Debug(2,0); // Ctrl-A, show walkable areas + if (keycode == eKeyCtrlX) Debug(3,0); // Ctrl-X, teleport to room + if (keycode == eKeyCtrlW && game.debug_mode) + player.PlaceOnWalkableArea(); //Ctrl-W, move to walkable area +} + + +function on_mouse_click(MouseButton button) { + // called when a mouse button is clicked. button is either LEFT or RIGHT + if (IsGamePaused() == 1) { + // Game is paused, so do nothing (ie. don't allow mouse click) + } + else if (button == eMouseLeft) { + ProcessClick(mouse.x, mouse.y, mouse.Mode ); + } + else if (button == eMouseRight || button == eMouseWheelSouth){ + // right-click our mouse-wheel down, so cycle cursor + mouse.SelectNextMode(); + } + else if (button == eMouseMiddle) { + // Middle-button-click, default make character walk to clicked area (a little shortcut) + // Could have been just "player.Walk(mouse.x,mouse.y)", but it's best to + // leave our options open - what if you have a special script triggered + // on "walking" mode? + ProcessClick(mouse.x, mouse.y, eModeWalkto); + } + else if (button == eMouseWheelNorth) { + // Mouse-wheel up, cycle cursors + // If mode isn't WALK, set the previous mode (notice usage of numbers instead + // of eNums, when it suits us)... + if (mouse.Mode>0) mouse.Mode=mouse.Mode-1; + else + { + // ...but if it is WALK mode... + if (player.ActiveInventory!=null) + { + //...and the player has a selected inventory item, set mouse mode to UseInv. + mouse.Mode=eModeUseinv; + } + else + { + // If they don't, however, just set it to mode TALK (change this line if you add more cursor modes) + mouse.Mode=eModeTalkto; + } + } + } +} + +function interface_click(int interface, int button) { + // This function is obsolete, from 2.62 and earlier versions. +} + +function btnInvUp_Click(GUIControl *control, MouseButton button) { + invCustomInv.ScrollUp(); +} + +function btnInvDown_Click(GUIControl *control, MouseButton button) { + invCustomInv.ScrollDown(); +} + +function btnInvOK_Click(GUIControl *control, MouseButton button) { + // They pressed the OK button, close the GUI + gInventory.Visible = false; + mouse.UseDefaultGraphic(); +} + +function btnInvSelect_Click(GUIControl *control, MouseButton button) { + + // They pressed SELECT, so switch to the Get cursor + mouse.Mode = eModeInteract; + // But, override the appearance to look like the arrow + mouse.UseModeGraphic(eModePointer); +} + +function btnIconInv_Click(GUIControl *control, MouseButton button) { + + show_inventory_window(); +} + +function btnIconCurInv_Click(GUIControl *control, MouseButton button) { + + if (player.ActiveInventory != null) + mouse.Mode = eModeUseinv; +} + +function btnIconSave_Click(GUIControl *control, MouseButton button) +{ + show_save_game_dialog(); +} + +function btnIconLoad_Click(GUIControl *control, MouseButton button) +{ + show_restore_game_dialog(); +} + +function btnIconExit_Click(GUIControl *control, MouseButton button) { + + QuitGame(1); +} + +function btnIconAbout_Click(GUIControl *control, MouseButton button) { + + gPanel.Visible=true; + gIconbar.Visible=false; + mouse.UseModeGraphic(eModePointer); +} + +function cEgo_Look() +{ + Display("Damn, I'm looking good!"); +} + +function cEgo_Interact() +{ + Display("You rub your hands up and down your clothes."); +} + +function cEgo_Talk() +{ + Display("Talking to yourself is a sign of madness!"); +} + +//START OF CONTROL PANEL FUNCTIONS +function btnSave_OnClick(GUIControl *control, MouseButton button) +{ + gPanel.Visible = false; + mouse.UseDefaultGraphic(); + gIconbar.Visible = true; + Wait(1); + btnIconSave_Click(btnIconSave, eMouseLeft); +} + +function gControl_OnClick(GUI *theGui, MouseButton button) +{ + +} + +function btnAbout_OnClick(GUIControl *control, MouseButton button) +{ +Display("Adventure Game Studio run-time engine default game."); +} + +function btnQuit_OnClick(GUIControl *control, MouseButton button) +{ + gPanel.Visible = false; + Wait(1); + QuitGame(1); + gPanel.Visible = true; + gIconbar.Visible = false; + mouse.UseModeGraphic(eModePointer); +} + +function btnLoad_OnClick(GUIControl *control, MouseButton button) +{ + gPanel.Visible = false; + mouse.UseDefaultGraphic(); + gIconbar.Visible = true; + Wait(1); + btnIconLoad_Click(btnIconLoad, eMouseLeft); +} + +function btnResume_OnClick(GUIControl *control, MouseButton button) +{ + gPanel.Visible = false; + mouse.UseDefaultGraphic(); + gIconbar.Visible = true; +} + +function sldAudio_OnChange(GUIControl *control) +{ + System.Volume = sldAudio.Value; +} + +function sldVoice_OnChange(GUIControl *control) +{ + // Sets voice volume. Note that we don't check for the existence of speech.vox - + // we did that in game_start, so if it's not there the slider won't even be available. + SetSpeechVolume(sldVoice.Value); +} + +function btnVoice_OnClick(GUIControl *control, MouseButton button) +{ + // Note that we don't check for the existence of speech.vox - we did that in game_start, + // so if it's not there the button won't even be available. + if (btnVoice.Text == "Voice and Text") { + SetVoiceMode(eSpeechVoiceOnly); + btnVoice.Text = "Voice only"; + } + else if (btnVoice.Text == "Voice only") { + SetVoiceMode(eSpeechTextOnly); + btnVoice.Text = "Text only"; + } + else if (btnVoice.Text == "Text only") { + SetVoiceMode(eSpeechVoiceAndText); + btnVoice.Text = "Voice and Text"; + } +} + +function sldGamma_OnChange(GUIControl *control) +{ + // Set the gamma. Note there's no need to check for anything else, as we ensured, + // in game_start, that the slider won't even appear if it's not possible to do this. + System.Gamma = sldGamma.Value; +} + +function btnDefault_OnClick(GUIControl *control, MouseButton button) +{ + // Reset everything to default. You'll have to edit these as well as the sliders + // if you'd rather have different default parameters. + System.Volume = 100; + sldAudio.Value = System.Volume; + sldSpeed.Value = 40; + SetGameSpeed(40); + if (IsSpeechVoxAvailable()) { + SetVoiceMode(eSpeechVoiceAndText); + btnVoice.Text = "Voice and Text"; + sldVoice.Value = 255; + SetSpeechVolume(255); + } + if (System.SupportsGammaControl) { + System.Gamma = 100; + sldGamma.Value = 100; + } +} +//END OF CONTROL PANEL FUNCTIONS + +function dialog_request(int param) +{ + // This is used by the dialog text parser if you need to process + // text that the player types in to the parser. + // It is not used by default. +} + +function sldSpeed_OnChange(GUIControl *control) +{ + SetGameSpeed(sldSpeed.Value); +} + +function btnRestart_OnClick(GUIControl *control, MouseButton button) +{ + gRestartYN.Visible=true; + gIconbar.Visible=false; +} + +function btnRestartYes_OnClick(GUIControl *control, MouseButton button) +{ + RestartGame(); +} + +function btnRestartNo_OnClick(GUIControl *control, MouseButton button) +{ + gRestartYN.Visible = false; + gIconbar.Visible = true; + // If the panel's not ON, then the player must have gotten here by tapping F9, + // therefore his cursor needs restoring. If the panel IS on, then it doesn't, + // because it's already a pointer. Get used to thinking like this!! + if (!gPanel.Visible) mouse.UseDefaultGraphic(); +} + +function btnCancelSave_OnClick(GUIControl *control, MouseButton button) +{ + close_save_game_dialog(); +} + +function btnSaveGame_OnClick(GUIControl *control, MouseButton button) +{ + int gameSlotToSaveInto = lstSaveGamesList.ItemCount + 1; + int i = 0; + while (i < lstSaveGamesList.ItemCount) + { + if (lstSaveGamesList.Items[i] == txtNewSaveName.Text) + { + gameSlotToSaveInto = lstSaveGamesList.SaveGameSlots[i]; + } + i++; + } + SaveGameSlot(gameSlotToSaveInto, txtNewSaveName.Text); + close_save_game_dialog(); +} + +function btnCancelRestore_OnClick(GUIControl *control, MouseButton button) +{ + close_restore_game_dialog(); +} + +function btnRestoreGame_OnClick(GUIControl *control, MouseButton button) +{ + if (lstRestoreGamesList.SelectedIndex >= 0) + { + RestoreGameSlot(lstRestoreGamesList.SaveGameSlots[lstRestoreGamesList.SelectedIndex]); + } + close_restore_game_dialog(); +} + +function lstSaveGamesList_OnSelectionCh(GUIControl *control) +{ + txtNewSaveName.Text = lstSaveGamesList.Items[lstSaveGamesList.SelectedIndex]; +} + +function txtNewSaveName_OnActivate(GUIControl *control) +{ + // Pressing return in the text box simulates clicking the Save button + btnSaveGame_OnClick(control, eMouseLeft); +} + +function btnDeleteSave_OnClick(GUIControl *control, MouseButton button) +{ + if (lstSaveGamesList.SelectedIndex >= 0) + { + DeleteSaveSlot(lstSaveGamesList.SaveGameSlots[lstSaveGamesList.SelectedIndex]); + lstSaveGamesList.FillSaveGameList(); + } +} diff --git a/samples/AGS Script/GlobalScript.ash b/samples/AGS Script/GlobalScript.ash new file mode 100644 index 00000000..2dab2f11 --- /dev/null +++ b/samples/AGS Script/GlobalScript.ash @@ -0,0 +1,4 @@ +// Main header script - this will be included into every script in +// the game (local and global). Do not place functions here; rather, +// place import definitions and #define names here to be used by all +// scripts. diff --git a/samples/AGS Script/KeyboardMovement_102.asc b/samples/AGS Script/KeyboardMovement_102.asc new file mode 100644 index 00000000..8776789a --- /dev/null +++ b/samples/AGS Script/KeyboardMovement_102.asc @@ -0,0 +1,216 @@ +// Main script for module 'KeyboardMovement' + +//**************************************************************************************************** +// DEFINITIONS +//**************************************************************************************************** + +#define DISTANCE 10000// distance player walks in Tapping mode before he stops + +enum KeyboardMovement_Directions { + eKeyboardMovement_Stop, + eKeyboardMovement_DownLeft, + eKeyboardMovement_Down, + eKeyboardMovement_DownRight, + eKeyboardMovement_Left, + eKeyboardMovement_Right, + eKeyboardMovement_UpLeft, + eKeyboardMovement_Up, + eKeyboardMovement_UpRight +}; + +//**************************************************************************************************** +// VARIABLES +//**************************************************************************************************** + +// keycodes as variables for future key customization functions (static variables?): +int KeyboardMovement_KeyDown = 380; // down arrow +int KeyboardMovement_KeyLeft = 375; // left arrow +int KeyboardMovement_KeyRight = 377; // right arrow +int KeyboardMovement_KeyUp = 372; // up arrow +int KeyboardMovement_KeyDownRight = 381; // PgDn (numpad) +int KeyboardMovement_KeyUpRight = 373; // PgUp (numpad) +int KeyboardMovement_KeyDownLeft = 379; // End (numpad) +int KeyboardMovement_KeyUpLeft = 371; // Home (numpad) +int KeyboardMovement_KeyStop = 376; // 5 (numpad) + +KeyboardMovement_Modes KeyboardMovement_Mode = eKeyboardMovement_None; // stores current keyboard control mode (disabled by default) + +KeyboardMovement_Directions KeyboardMovement_CurrentDirection = eKeyboardMovement_Stop; // stores current walking direction of player character + +//**************************************************************************************************** +// USER FUNCTIONS +//**************************************************************************************************** + +//==================================================================================================== + +static function KeyboardMovement::SetMode(KeyboardMovement_Modes mode) { + KeyboardMovement_Mode = mode; +} + +//==================================================================================================== + +// key customization functions here + +//==================================================================================================== + +//**************************************************************************************************** +// EVENT HANDLER FUNCTIONS +//**************************************************************************************************** + +//==================================================================================================== + +function repeatedly_execute() { + + //-------------------------------------------------- + // Pressing mode + //-------------------------------------------------- + + if ((IsGamePaused() == true) || (KeyboardMovement_Mode != eKeyboardMovement_Pressing) || (IsInterfaceEnabled() == false) || (player.on == false)) return 0; + // if game is paused, module or mode disabled, interface disabled or player character hidden, quit function + + KeyboardMovement_Directions newdirection; // declare variable storing new direction + + // get new direction: + if ( ((IsKeyPressed(KeyboardMovement_KeyDown)) && (IsKeyPressed(KeyboardMovement_KeyRight))) || (IsKeyPressed(KeyboardMovement_KeyDownRight)) ) newdirection = eKeyboardMovement_DownRight; // if down&right arrows or PgDn (numeric pad) held down, set new direction to Down-Right + else if ( ((IsKeyPressed(KeyboardMovement_KeyUp)) && (IsKeyPressed(KeyboardMovement_KeyRight))) || (IsKeyPressed(KeyboardMovement_KeyUpRight)) ) newdirection = eKeyboardMovement_UpRight; // up&right arrows or PgUp (numpad) + else if ( ((IsKeyPressed(KeyboardMovement_KeyDown)) && (IsKeyPressed(KeyboardMovement_KeyLeft))) || (IsKeyPressed(KeyboardMovement_KeyDownLeft)) ) newdirection = eKeyboardMovement_DownLeft; // down&left arrows or End (numpad) + else if ( ((IsKeyPressed(KeyboardMovement_KeyUp)) && (IsKeyPressed(KeyboardMovement_KeyLeft))) || (IsKeyPressed(KeyboardMovement_KeyUpLeft)) ) newdirection = eKeyboardMovement_UpLeft; // up&left arrows or Home (numpad) + else if (IsKeyPressed(KeyboardMovement_KeyDown)) newdirection = eKeyboardMovement_Down; // down arrow + else if (IsKeyPressed(KeyboardMovement_KeyLeft)) newdirection = eKeyboardMovement_Left; // left arrow + else if (IsKeyPressed(KeyboardMovement_KeyRight)) newdirection = eKeyboardMovement_Right; // right arrow + else if (IsKeyPressed(KeyboardMovement_KeyUp)) newdirection = eKeyboardMovement_Up; // up arrow + else newdirection = eKeyboardMovement_Stop; // if none of the above held down, set it to stop player character + + if (IsKeyPressed(KeyboardMovement_KeyStop)) newdirection = eKeyboardMovement_Stop; // if 5 (numeric pad) held down, stop player character, regardless of whether some of the above are held down + + if (newdirection != KeyboardMovement_CurrentDirection) { // if new direction is different from current direction + + if (newdirection == eKeyboardMovement_Stop) player.StopMoving(); // if new direction is the Stop command, stop movement of player character + else { // if new direction is NOT the Stop command + + int dx, dy; // declare variables storing new walk coordinates + if (newdirection == eKeyboardMovement_DownRight) { + dx = DISTANCE; + dy = DISTANCE; + } + else if (newdirection == eKeyboardMovement_UpRight) { + dx = DISTANCE; + dy = -DISTANCE; + } + else if (newdirection == eKeyboardMovement_DownLeft) { + dx = -DISTANCE; + dy = DISTANCE; + } + else if (newdirection == eKeyboardMovement_UpLeft) { + dx = -DISTANCE; + dy = -DISTANCE; + } + else if (newdirection == eKeyboardMovement_Down) { + dx = 0; + dy = DISTANCE; + } + else if (newdirection == eKeyboardMovement_Left) { + dx = -DISTANCE; + dy = 0; + } + else if (newdirection == eKeyboardMovement_Right) { + dx = DISTANCE; + dy = 0; + } + else if (newdirection == eKeyboardMovement_Up) { + dx = 0; + dy = -DISTANCE; + } + + player.WalkStraight(player.x + dx, player.y + dy, eNoBlock); // walk player character to the new coordinates + } + KeyboardMovement_CurrentDirection = newdirection; // update current direction to new direction + + } + +} + +//==================================================================================================== + +function on_key_press(int keycode) { + + //-------------------------------------------------- + // Tapping mode + //-------------------------------------------------- + + if ((IsGamePaused() == true) || (KeyboardMovement_Mode != eKeyboardMovement_Tapping) || (IsInterfaceEnabled() == false) || (player.on == false)) return 0; + // if game is paused, module or mode disabled, interface disabled or player character hidden, quit function + + KeyboardMovement_Directions newdirection; // declare variable storing new direction + + // get new direction: + if (keycode == KeyboardMovement_KeyDownRight) newdirection = eKeyboardMovement_DownRight; // if down-right key pressed, set new direction to Down-Right + else if (keycode == KeyboardMovement_KeyUpRight) newdirection = eKeyboardMovement_UpRight; + else if (keycode == KeyboardMovement_KeyDownLeft) newdirection = eKeyboardMovement_DownLeft; + else if (keycode == KeyboardMovement_KeyUpLeft) newdirection = eKeyboardMovement_UpLeft; + else if (keycode == KeyboardMovement_KeyDown) newdirection = eKeyboardMovement_Down; + else if (keycode == KeyboardMovement_KeyLeft) newdirection = eKeyboardMovement_Left; + else if (keycode == KeyboardMovement_KeyRight) newdirection = eKeyboardMovement_Right; + else if (keycode == KeyboardMovement_KeyUp) newdirection = eKeyboardMovement_Up; + else if (keycode == KeyboardMovement_KeyStop) newdirection = eKeyboardMovement_Stop; // if stop key pressed, set to stop player character + + if (newdirection != KeyboardMovement_CurrentDirection) { // if new direction is different from current direction + + if (newdirection == eKeyboardMovement_Stop) player.StopMoving(); // if new direction is the Stop command, stop movement of player character + else { // if new direction is NOT the Stop command + + int dx, dy; // declare variables storing new walk coordinates + if (newdirection == eKeyboardMovement_DownRight) { + dx = DISTANCE; + dy = DISTANCE; + } + else if (newdirection == eKeyboardMovement_UpRight) { + dx = DISTANCE; + dy = -DISTANCE; + } + else if (newdirection == eKeyboardMovement_DownLeft) { + dx = -DISTANCE; + dy = DISTANCE; + } + else if (newdirection == eKeyboardMovement_UpLeft) { + dx = -DISTANCE; + dy = -DISTANCE; + } + else if (newdirection == eKeyboardMovement_Down) { + dx = 0; + dy = DISTANCE; + } + else if (newdirection == eKeyboardMovement_Left) { + dx = -DISTANCE; + dy = 0; + } + else if (newdirection == eKeyboardMovement_Right) { + dx = DISTANCE; + dy = 0; + } + else if (newdirection == eKeyboardMovement_Up) { + dx = 0; + dy = -DISTANCE; + } + + player.WalkStraight(player.x + dx, player.y + dy, eNoBlock); // walk player character to the new coordinates + } + KeyboardMovement_CurrentDirection = newdirection; // update current direction to new direction + + } + else { // if new direction is same as current direction + player.StopMoving(); // stop player character + KeyboardMovement_CurrentDirection = eKeyboardMovement_Stop; // update current direction + } + +} + +//==================================================================================================== + +function on_event(EventType event, int data) { + + if (event == eEventLeaveRoom) KeyboardMovement_CurrentDirection = eKeyboardMovement_Stop; + +} + +//==================================================================================================== diff --git a/samples/AGS Script/KeyboardMovement_102.ash b/samples/AGS Script/KeyboardMovement_102.ash new file mode 100644 index 00000000..a1e28c2c --- /dev/null +++ b/samples/AGS Script/KeyboardMovement_102.ash @@ -0,0 +1,13 @@ +// Script header for module 'KeyboardMovement' + +#define KeyboardMovement_VERSION 101 + +enum KeyboardMovement_Modes { + eKeyboardMovement_None, + eKeyboardMovement_Tapping, + eKeyboardMovement_Pressing +}; + +struct KeyboardMovement { + import static function SetMode(KeyboardMovement_Modes mode); +}; diff --git a/samples/APL/DeepakChopra.apl b/samples/APL/DeepakChopra.apl new file mode 100644 index 00000000..ba7fd625 --- /dev/null +++ b/samples/APL/DeepakChopra.apl @@ -0,0 +1,18 @@ +⍝ You can try this at http://tryapl.org/ +⍝ I can not explain how much I suddenly love this crypto-language + + + +Starts ← 'Experiential truth ' 'The physical world ' 'Non-judgment ' 'Quantum physics ' +Middles ← 'nurtures an ' 'projects onto ' 'imparts reality to ' 'constructs with ' +Qualifiers ← 'abundance of ' 'the barrier of ' 'self-righteous ' 'potential ' +Finishes ← 'marvel.' 'choices.' 'creativity.' 'actions.' + +rf ← {(?⍴⍵)⊃⍵} +erf ← {rf ¨ ⍵} + +deepak ← {erf Starts Middles Qualifiers Finishes} + + + +deepak ⍬ \ No newline at end of file diff --git a/samples/Alloy/file_system.als b/samples/Alloy/file_system.als new file mode 100644 index 00000000..60fd959b --- /dev/null +++ b/samples/Alloy/file_system.als @@ -0,0 +1,59 @@ +module examples/systems/file_system + +/* + * Model of a generic file system. + */ + +abstract sig Object {} + +sig Name {} + +sig File extends Object {} { some d: Dir | this in d.entries.contents } + +sig Dir extends Object { + entries: set DirEntry, + parent: lone Dir +} { + parent = this.~@contents.~@entries + all e1, e2 : entries | e1.name = e2.name => e1 = e2 + this !in this.^@parent + this != Root => Root in this.^@parent +} + +one sig Root extends Dir {} { no parent } + +lone sig Cur extends Dir {} + +sig DirEntry { + name: Name, + contents: Object +} { + one this.~entries +} + + +/** + * all directories besides root have one parent + */ +pred OneParent_buggyVersion { + all d: Dir - Root | one d.parent +} + +/** + * all directories besides root have one parent + */ +pred OneParent_correctVersion { + all d: Dir - Root | (one d.parent && one contents.d) +} + +/** + * Only files may be linked (that is, have more than one entry) + * That is, all directories are the contents of at most one directory entry + */ +pred NoDirAliases { + all o: Dir | lone o.~contents +} + +check { OneParent_buggyVersion => NoDirAliases } for 5 expect 1 + +check { OneParent_correctVersion => NoDirAliases } for 5 expect 0 diff --git a/samples/Alloy/marksweepgc.als b/samples/Alloy/marksweepgc.als new file mode 100644 index 00000000..b8081e3f --- /dev/null +++ b/samples/Alloy/marksweepgc.als @@ -0,0 +1,83 @@ +module examples/systems/marksweepgc + +/* + * Model of mark and sweep garbage collection. + */ + +// a node in the heap +sig Node {} + +sig HeapState { + left, right : Node -> lone Node, + marked : set Node, + freeList : lone Node +} + +pred clearMarks[hs, hs' : HeapState] { + // clear marked set + no hs'.marked + // left and right fields are unchanged + hs'.left = hs.left + hs'.right = hs.right +} + +/** + * simulate the recursion of the mark() function using transitive closure + */ +fun reachable[hs: HeapState, n: Node] : set Node { + n + n.^(hs.left + hs.right) +} + +pred mark[hs: HeapState, from : Node, hs': HeapState] { + hs'.marked = hs.reachable[from] + hs'.left = hs.left + hs'.right = hs.right +} + +/** + * complete hack to simulate behavior of code to set freeList + */ +pred setFreeList[hs, hs': HeapState] { + // especially hackish + hs'.freeList.*(hs'.left) in (Node - hs.marked) + all n: Node | + (n !in hs.marked) => { + no hs'.right[n] + hs'.left[n] in (hs'.freeList.*(hs'.left)) + n in hs'.freeList.*(hs'.left) + } else { + hs'.left[n] = hs.left[n] + hs'.right[n] = hs.right[n] + } + hs'.marked = hs.marked +} + +pred GC[hs: HeapState, root : Node, hs': HeapState] { + some hs1, hs2: HeapState | + hs.clearMarks[hs1] && hs1.mark[root, hs2] && hs2.setFreeList[hs'] +} + +assert Soundness1 { + all h, h' : HeapState, root : Node | + h.GC[root, h'] => + (all live : h.reachable[root] | { + h'.left[live] = h.left[live] + h'.right[live] = h.right[live] + }) +} + +assert Soundness2 { + all h, h' : HeapState, root : Node | + h.GC[root, h'] => + no h'.reachable[root] & h'.reachable[h'.freeList] +} + +assert Completeness { + all h, h' : HeapState, root : Node | + h.GC[root, h'] => + (Node - h'.reachable[root]) in h'.reachable[h'.freeList] +} + +check Soundness1 for 3 expect 0 +check Soundness2 for 3 expect 0 +check Completeness for 3 expect 0 diff --git a/samples/Alloy/views.als b/samples/Alloy/views.als new file mode 100644 index 00000000..3a5ab82b --- /dev/null +++ b/samples/Alloy/views.als @@ -0,0 +1,217 @@ +module examples/systems/views + +/* + * Model of views in object-oriented programming. + * + * Two object references, called the view and the backing, + * are related by a view mechanism when changes to the + * backing are automatically propagated to the view. Note + * that the state of a view need not be a projection of the + * state of the backing; the keySet method of Map, for + * example, produces two view relationships, and for the + * one in which the map is modified by changes to the key + * set, the value of the new map cannot be determined from + * the key set. Note that in the iterator view mechanism, + * the iterator is by this definition the backing object, + * since changes are propagated from iterator to collection + * and not vice versa. Oddly, a reference may be a view of + * more than one backing: there can be two iterators on the + * same collection, eg. A reference cannot be a view under + * more than one view type. + * + * A reference is made dirty when it is a backing for a view + * with which it is no longer related by the view invariant. + * This usually happens when a view is modified, either + * directly or via another backing. For example, changing a + * collection directly when it has an iterator invalidates + * it, as does changing the collection through one iterator + * when there are others. + * + * More work is needed if we want to model more closely the + * failure of an iterator when its collection is invalidated. + * + * As a terminological convention, when there are two + * complementary view relationships, we will give them types + * t and t'. For example, KeySetView propagates from map to + * set, and KeySetView' propagates from set to map. + * + * author: Daniel Jackson + */ + +open util/ordering[State] as so +open util/relation as rel + +sig Ref {} +sig Object {} + +-- t->b->v in views when v is view of type t of backing b +-- dirty contains refs that have been invalidated +sig State { + refs: set Ref, + obj: refs -> one Object, + views: ViewType -> refs -> refs, + dirty: set refs +-- , anyviews: Ref -> Ref -- for visualization + } +-- {anyviews = ViewType.views} + +sig Map extends Object { + keys: set Ref, + map: keys -> one Ref + }{all s: State | keys + Ref.map in s.refs} +sig MapRef extends Ref {} +fact {State.obj[MapRef] in Map} + +sig Iterator extends Object { + left, done: set Ref, + lastRef: lone done + }{all s: State | done + left + lastRef in s.refs} +sig IteratorRef extends Ref {} +fact {State.obj[IteratorRef] in Iterator} + +sig Set extends Object { + elts: set Ref + }{all s: State | elts in s.refs} +sig SetRef extends Ref {} +fact {State.obj[SetRef] in Set} + +abstract sig ViewType {} +one sig KeySetView, KeySetView', IteratorView extends ViewType {} +fact ViewTypes { + State.views[KeySetView] in MapRef -> SetRef + State.views[KeySetView'] in SetRef -> MapRef + State.views[IteratorView] in IteratorRef -> SetRef + all s: State | s.views[KeySetView] = ~(s.views[KeySetView']) + } + +/** + * mods is refs modified directly or by view mechanism + * doesn't handle possibility of modifying an object and its view at once? + * should we limit frame conds to non-dirty refs? + */ +pred modifies [pre, post: State, rs: set Ref] { + let vr = pre.views[ViewType], mods = rs.*vr { + all r: pre.refs - mods | pre.obj[r] = post.obj[r] + all b: mods, v: pre.refs, t: ViewType | + b->v in pre.views[t] => viewFrame [t, pre.obj[v], post.obj[v], post.obj[b]] + post.dirty = pre.dirty + + {b: pre.refs | some v: Ref, t: ViewType | + b->v in pre.views[t] && !viewFrame [t, pre.obj[v], post.obj[v], post.obj[b]] + } + } + } + +pred allocates [pre, post: State, rs: set Ref] { + no rs & pre.refs + post.refs = pre.refs + rs + } + +/** + * models frame condition that limits change to view object from v to v' when backing object changes to b' + */ +pred viewFrame [t: ViewType, v, v', b': Object] { + t in KeySetView => v'.elts = dom [b'.map] + t in KeySetView' => b'.elts = dom [v'.map] + t in KeySetView' => (b'.elts) <: (v.map) = (b'.elts) <: (v'.map) + t in IteratorView => v'.elts = b'.left + b'.done + } + +pred MapRef.keySet [pre, post: State, setRefs: SetRef] { + post.obj[setRefs].elts = dom [pre.obj[this].map] + modifies [pre, post, none] + allocates [pre, post, setRefs] + post.views = pre.views + KeySetView->this->setRefs + KeySetView'->setRefs->this + } + +pred MapRef.put [pre, post: State, k, v: Ref] { + post.obj[this].map = pre.obj[this].map ++ k->v + modifies [pre, post, this] + allocates [pre, post, none] + post.views = pre.views + } + +pred SetRef.iterator [pre, post: State, iterRef: IteratorRef] { + let i = post.obj[iterRef] { + i.left = pre.obj[this].elts + no i.done + i.lastRef + } + modifies [pre,post,none] + allocates [pre, post, iterRef] + post.views = pre.views + IteratorView->iterRef->this + } + +pred IteratorRef.remove [pre, post: State] { + let i = pre.obj[this], i' = post.obj[this] { + i'.left = i.left + i'.done = i.done - i.lastRef + no i'.lastRef + } + modifies [pre,post,this] + allocates [pre, post, none] + pre.views = post.views + } + +pred IteratorRef.next [pre, post: State, ref: Ref] { + let i = pre.obj[this], i' = post.obj[this] { + ref in i.left + i'.left = i.left - ref + i'.done = i.done + ref + i'.lastRef = ref + } + modifies [pre, post, this] + allocates [pre, post, none] + pre.views = post.views + } + +pred IteratorRef.hasNext [s: State] { + some s.obj[this].left + } + +assert zippishOK { + all + ks, vs: SetRef, + m: MapRef, + ki, vi: IteratorRef, + k, v: Ref | + let s0=so/first, + s1=so/next[s0], + s2=so/next[s1], + s3=so/next[s2], + s4=so/next[s3], + s5=so/next[s4], + s6=so/next[s5], + s7=so/next[s6] | + ({ + precondition [s0, ks, vs, m] + no s0.dirty + ks.iterator [s0, s1, ki] + vs.iterator [s1, s2, vi] + ki.hasNext [s2] + vi.hasNext [s2] + ki.this/next [s2, s3, k] + vi.this/next [s3, s4, v] + m.put [s4, s5, k, v] + ki.remove [s5, s6] + vi.remove [s6, s7] + } => no State.dirty) + } + +pred precondition [pre: State, ks, vs, m: Ref] { + // all these conditions and other errors discovered in scope of 6 but 8,3 + // in initial state, must have view invariants hold + (all t: ViewType, b, v: pre.refs | + b->v in pre.views[t] => viewFrame [t, pre.obj[v], pre.obj[v], pre.obj[b]]) + // sets are not aliases +-- ks != vs + // sets are not views of map +-- no (ks+vs)->m & ViewType.pre.views + // no iterator currently on either set +-- no Ref->(ks+vs) & ViewType.pre.views + } + +check zippishOK for 6 but 8 State, 3 ViewType expect 1 + +/** + * experiment with controlling heap size + */ +fact {all s: State | #s.obj < 5} diff --git a/samples/AspectJ/CacheAspect.aj b/samples/AspectJ/CacheAspect.aj new file mode 100644 index 00000000..bfab7bc4 --- /dev/null +++ b/samples/AspectJ/CacheAspect.aj @@ -0,0 +1,41 @@ +package com.blogspot.miguelinlas3.aspectj.cache; + +import java.util.Map; +import java.util.WeakHashMap; + +import org.aspectj.lang.JoinPoint; + +import com.blogspot.miguelinlas3.aspectj.cache.marker.Cachable; + +/** + * This simple aspect simulates the behaviour of a very simple cache + * + * @author migue + * + */ +public aspect CacheAspect { + + public pointcut cache(Cachable cachable): execution(@Cachable * * (..)) && @annotation(cachable); + + Object around(Cachable cachable): cache(cachable){ + + String evaluatedKey = this.evaluateKey(cachable.scriptKey(), thisJoinPoint); + + if(cache.containsKey(evaluatedKey)){ + System.out.println("Cache hit for key " + evaluatedKey); + return this.cache.get(evaluatedKey); + } + + System.out.println("Cache miss for key " + evaluatedKey); + Object value = proceed(cachable); + cache.put(evaluatedKey, value); + return value; + } + + protected String evaluateKey(String key, JoinPoint joinPoint) { + // TODO add some smart staff to allow simple scripting in @Cachable annotation + return key; + } + + protected Map cache = new WeakHashMap(); +} diff --git a/samples/AspectJ/OptimizeRecursionCache.aj b/samples/AspectJ/OptimizeRecursionCache.aj new file mode 100644 index 00000000..ed1e8695 --- /dev/null +++ b/samples/AspectJ/OptimizeRecursionCache.aj @@ -0,0 +1,50 @@ +package aspects.caching; + +import java.util.Map; + +/** + * Cache aspect for optimize recursive functions. + * + * @author Migueli + * @date 05/11/2013 + * @version 1.0 + * + */ +public abstract aspect OptimizeRecursionCache { + + @SuppressWarnings("rawtypes") + private Map _cache; + + public OptimizeRecursionCache() { + _cache = getCache(); + } + + @SuppressWarnings("rawtypes") + abstract public Map getCache(); + + abstract public pointcut operation(Object o); + + pointcut topLevelOperation(Object o): operation(o) && !cflowbelow(operation(Object)); + + before(Object o) : topLevelOperation(o) { + System.out.println("Seeking value for " + o); + } + + Object around(Object o) : operation(o) { + Object cachedValue = _cache.get(o); + if (cachedValue != null) { + System.out.println("Found cached value for " + o + ": " + cachedValue); + return cachedValue; + } + return proceed(o); + } + + @SuppressWarnings("unchecked") + after(Object o) returning(Object result) : topLevelOperation(o) { + _cache.put(o, result); + } + + after(Object o) returning(Object result) : topLevelOperation(o) { + System.out.println("cache size: " + _cache.size()); + } +} diff --git a/samples/Assembly/FASM.asm b/samples/Assembly/FASM.asm new file mode 100644 index 00000000..9a2201ae --- /dev/null +++ b/samples/Assembly/FASM.asm @@ -0,0 +1,350 @@ + +; flat assembler interface for Win32 +; Copyright (c) 1999-2014, Tomasz Grysztar. +; All rights reserved. + + format PE console + +section '.text' code readable executable + +start: + + mov [con_handle],STD_OUTPUT_HANDLE + mov esi,_logo + call display_string + + call get_params + jc information + + call init_memory + + mov esi,_memory_prefix + call display_string + mov eax,[memory_end] + sub eax,[memory_start] + add eax,[additional_memory_end] + sub eax,[additional_memory] + shr eax,10 + call display_number + mov esi,_memory_suffix + call display_string + + call [GetTickCount] + mov [start_time],eax + + call preprocessor + call parser + call assembler + call formatter + + call display_user_messages + movzx eax,[current_pass] + inc eax + call display_number + mov esi,_passes_suffix + call display_string + call [GetTickCount] + sub eax,[start_time] + xor edx,edx + mov ebx,100 + div ebx + or eax,eax + jz display_bytes_count + xor edx,edx + mov ebx,10 + div ebx + push edx + call display_number + mov dl,'.' + call display_character + pop eax + call display_number + mov esi,_seconds_suffix + call display_string + display_bytes_count: + mov eax,[written_size] + call display_number + mov esi,_bytes_suffix + call display_string + xor al,al + jmp exit_program + +information: + mov esi,_usage + call display_string + mov al,1 + jmp exit_program + +get_params: + mov [input_file],0 + mov [output_file],0 + mov [symbols_file],0 + mov [memory_setting],0 + mov [passes_limit],100 + call [GetCommandLine] + mov esi,eax + mov edi,params + find_command_start: + lodsb + cmp al,20h + je find_command_start + cmp al,22h + je skip_quoted_name + skip_name: + lodsb + cmp al,20h + je find_param + or al,al + jz all_params + jmp skip_name + skip_quoted_name: + lodsb + cmp al,22h + je find_param + or al,al + jz all_params + jmp skip_quoted_name + find_param: + lodsb + cmp al,20h + je find_param + cmp al,'-' + je option_param + cmp al,0Dh + je all_params + or al,al + jz all_params + cmp [input_file],0 + jne get_output_file + mov [input_file],edi + jmp process_param + get_output_file: + cmp [output_file],0 + jne bad_params + mov [output_file],edi + process_param: + cmp al,22h + je string_param + copy_param: + stosb + lodsb + cmp al,20h + je param_end + cmp al,0Dh + je param_end + or al,al + jz param_end + jmp copy_param + string_param: + lodsb + cmp al,22h + je string_param_end + cmp al,0Dh + je param_end + or al,al + jz param_end + stosb + jmp string_param + option_param: + lodsb + cmp al,'m' + je memory_option + cmp al,'M' + je memory_option + cmp al,'p' + je passes_option + cmp al,'P' + je passes_option + cmp al,'s' + je symbols_option + cmp al,'S' + je symbols_option + bad_params: + stc + ret + get_option_value: + xor eax,eax + mov edx,eax + get_option_digit: + lodsb + cmp al,20h + je option_value_ok + cmp al,0Dh + je option_value_ok + or al,al + jz option_value_ok + sub al,30h + jc invalid_option_value + cmp al,9 + ja invalid_option_value + imul edx,10 + jo invalid_option_value + add edx,eax + jc invalid_option_value + jmp get_option_digit + option_value_ok: + dec esi + clc + ret + invalid_option_value: + stc + ret + memory_option: + lodsb + cmp al,20h + je memory_option + cmp al,0Dh + je bad_params + or al,al + jz bad_params + dec esi + call get_option_value + or edx,edx + jz bad_params + cmp edx,1 shl (32-10) + jae bad_params + mov [memory_setting],edx + jmp find_param + passes_option: + lodsb + cmp al,20h + je passes_option + cmp al,0Dh + je bad_params + or al,al + jz bad_params + dec esi + call get_option_value + or edx,edx + jz bad_params + cmp edx,10000h + ja bad_params + mov [passes_limit],dx + jmp find_param + symbols_option: + mov [symbols_file],edi + find_symbols_file_name: + lodsb + cmp al,20h + jne process_param + jmp find_symbols_file_name + param_end: + dec esi + string_param_end: + xor al,al + stosb + jmp find_param + all_params: + cmp [input_file],0 + je bad_params + clc + ret + +include 'system.inc' + +include '..\errors.inc' +include '..\symbdump.inc' +include '..\preproce.inc' +include '..\parser.inc' +include '..\exprpars.inc' +include '..\assemble.inc' +include '..\exprcalc.inc' +include '..\formats.inc' +include '..\x86_64.inc' +include '..\avx.inc' + +include '..\tables.inc' +include '..\messages.inc' + +section '.data' data readable writeable + +include '..\version.inc' + +_copyright db 'Copyright (c) 1999-2014, Tomasz Grysztar',0Dh,0Ah,0 + +_logo db 'flat assembler version ',VERSION_STRING,0 +_usage db 0Dh,0Ah + db 'usage: fasm [output]',0Dh,0Ah + db 'optional settings:',0Dh,0Ah + db ' -m set the limit in kilobytes for the available memory',0Dh,0Ah + db ' -p set the maximum allowed number of passes',0Dh,0Ah + db ' -s dump symbolic information for debugging',0Dh,0Ah + db 0 +_memory_prefix db ' (',0 +_memory_suffix db ' kilobytes memory)',0Dh,0Ah,0 +_passes_suffix db ' passes, ',0 +_seconds_suffix db ' seconds, ',0 +_bytes_suffix db ' bytes.',0Dh,0Ah,0 + +align 4 + +include '..\variable.inc' + +con_handle dd ? +memory_setting dd ? +start_time dd ? +bytes_count dd ? +displayed_count dd ? +character db ? +last_displayed rb 2 + +params rb 1000h +options rb 1000h +buffer rb 4000h + +stack 10000h + +section '.idata' import data readable writeable + + dd 0,0,0,rva kernel_name,rva kernel_table + dd 0,0,0,0,0 + + kernel_table: + ExitProcess dd rva _ExitProcess + CreateFile dd rva _CreateFileA + ReadFile dd rva _ReadFile + WriteFile dd rva _WriteFile + CloseHandle dd rva _CloseHandle + SetFilePointer dd rva _SetFilePointer + GetCommandLine dd rva _GetCommandLineA + GetEnvironmentVariable dd rva _GetEnvironmentVariable + GetStdHandle dd rva _GetStdHandle + VirtualAlloc dd rva _VirtualAlloc + VirtualFree dd rva _VirtualFree + GetTickCount dd rva _GetTickCount + GetSystemTime dd rva _GetSystemTime + GlobalMemoryStatus dd rva _GlobalMemoryStatus + dd 0 + + kernel_name db 'KERNEL32.DLL',0 + + _ExitProcess dw 0 + db 'ExitProcess',0 + _CreateFileA dw 0 + db 'CreateFileA',0 + _ReadFile dw 0 + db 'ReadFile',0 + _WriteFile dw 0 + db 'WriteFile',0 + _CloseHandle dw 0 + db 'CloseHandle',0 + _SetFilePointer dw 0 + db 'SetFilePointer',0 + _GetCommandLineA dw 0 + db 'GetCommandLineA',0 + _GetEnvironmentVariable dw 0 + db 'GetEnvironmentVariableA',0 + _GetStdHandle dw 0 + db 'GetStdHandle',0 + _VirtualAlloc dw 0 + db 'VirtualAlloc',0 + _VirtualFree dw 0 + db 'VirtualFree',0 + _GetTickCount dw 0 + db 'GetTickCount',0 + _GetSystemTime dw 0 + db 'GetSystemTime',0 + _GlobalMemoryStatus dw 0 + db 'GlobalMemoryStatus',0 + +section '.reloc' fixups data readable discardable diff --git a/samples/BlitzMax/sample.bmx b/samples/BlitzMax/sample.bmx new file mode 100644 index 00000000..e57e5f58 --- /dev/null +++ b/samples/BlitzMax/sample.bmx @@ -0,0 +1,25 @@ +SuperStrict + +Framework Brl.StandardIO + +Type TMyType + Field property:int + + Function A:int(param:int) + 'do nothing + End Function + + Method B:int(param:int) + 'do nothing + End Method +End Type + + +Global my:TMyType = new TMyType +?Win32 + my.A() + my.B() +?Linux + my.B() + my.A() +? \ No newline at end of file diff --git a/samples/C++/Math.inl b/samples/C++/Math.inl new file mode 100644 index 00000000..194370a3 --- /dev/null +++ b/samples/C++/Math.inl @@ -0,0 +1,530 @@ +/* +=========================================================================== +The Open Game Libraries. +Copyright (C) 2007-2010 Lusito Software + +Author: Santo Pfingsten (TTK-Bandit) +Purpose: Math namespace +----------------------------------------- + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + +3. This notice may not be removed or altered from any source distribution. +=========================================================================== +*/ + +#ifndef __OG_MATH_INL__ +#define __OG_MATH_INL__ + +namespace og { + +/* +============================================================================== + + Math + +============================================================================== +*/ + +/* +================ +Math::Abs +================ +*/ +OG_INLINE int Math::Abs( int i ) { +#if 1 + if ( i & 0x80000000 ) + return 0x80000000 - (i & MASK_SIGNED); + return i; +#else + int y = x >> 31; + return ( ( x ^ y ) - y ); +#endif +} + +/* +================ +Math::Fabs +================ +*/ +OG_INLINE float Math::Fabs( float f ) { +#if 1 + uInt *pf = reinterpret_cast(&f); + *(pf) &= MASK_SIGNED; + return f; +#else + return fabsf( f ); +#endif +} + +/* +================ +Math::Round +================ +*/ +OG_INLINE float Math::Round( float f ) { + return floorf( f + 0.5f ); +} + +/* +================ +Math::Floor +================ +*/ +OG_INLINE float Math::Floor( float f ) { + return floorf( f ); +} + +/* +================ +Math::Ceil +================ +*/ +OG_INLINE float Math::Ceil( float f ) { + return ceilf( f ); +} + +/* +================ +Math::Ftoi + +ok since this is SSE, why should the other ftoi be the faster one ? +and: we might need to add a check for SSE extensions.. +because sse isn't *really* faster (I actually read that GCC does not handle +SSE extensions perfectly. I'll find the link and send it to you when you're online) +================ +*/ +OG_INLINE int Math::Ftoi( float f ) { + //! @todo needs testing + // note: sse function cvttss2si +#if OG_ASM_MSVC + int i; +#if defined(OG_FTOI_USE_SSE) + if( SysInfo::cpu.general.SSE ) { + __asm cvttss2si eax, f + __asm mov i, eax + return i; + } else +#endif + { + __asm fld f + __asm fistp i + //__asm mov eax, i // do we need this ? O_o + } + return i; +#elif OG_ASM_GNU + int i; +#if defined(OG_FTOI_USE_SSE) + if( SysInfo::cpu.general.SSE ) { + __asm__ __volatile__( "cvttss2si %1 \n\t" + : "=m" (i) + : "m" (f) + ); + } else +#endif + { + __asm__ __volatile__( "flds %1 \n\t" + "fistpl %0 \n\t" + : "=m" (i) + : "m" (f) + ); + } + return i; +#else + // we use c++ cast instead of c cast (not sure why id did that) + return static_cast(f); +#endif +} + +/* +================ +Math::FtoiFast +================ +*/ +OG_INLINE int Math::FtoiFast( float f ) { +#if OG_ASM_MSVC + int i; + __asm fld f + __asm fistp i + //__asm mov eax, i // do we need this ? O_o + return i; +#elif OG_ASM_GNU + int i; + __asm__ __volatile__( "flds %1 \n\t" + "fistpl %0 \n\t" + : "=m" (i) + : "m" (f) + ); + return i; +#else + // we use c++ cast instead of c cast (not sure why id did that) + return static_cast(f); +#endif +} + +/* +================ +Math::Ftol +================ +*/ +OG_INLINE long Math::Ftol( float f ) { +#if OG_ASM_MSVC + long i; + __asm fld f + __asm fistp i + //__asm mov eax, i // do we need this ? O_o + return i; +#elif OG_ASM_GNU + long i; + __asm__ __volatile__( "flds %1 \n\t" + "fistpl %0 \n\t" + : "=m" (i) + : "m" (f) + ); + return i; +#else + // we use c++ cast instead of c cast (not sure why id did that) + return static_cast(f); +#endif +} + +/* +================ +Math::Sign +================ +*/ +OG_INLINE float Math::Sign( float f ) { + if ( f > 0.0f ) + return 1.0f; + if ( f < 0.0f ) + return -1.0f; + return 0.0f; +} + +/* +================ +Math::Fmod +================ +*/ +OG_INLINE float Math::Fmod( float numerator, float denominator ) { + return fmodf( numerator, denominator ); +} + +/* +================ +Math::Modf +================ +*/ +OG_INLINE float Math::Modf( float f, float& i ) { + return modff( f, &i ); +} +OG_INLINE float Math::Modf( float f ) { + float i; + return modff( f, &i ); +} + +/* +================ +Math::Sqrt +================ +*/ +OG_INLINE float Math::Sqrt( float f ) { + return sqrtf( f ); +} + +/* +================ +Math::InvSqrt + +Cannot be 0.0f +================ +*/ +OG_INLINE float Math::InvSqrt( float f ) { + OG_ASSERT( f != 0.0f ); + return 1.0f / sqrtf( f ); +} + +/* +================ +Math::RSqrt + +Can be 0.0f +================ +*/ +OG_INLINE float Math::RSqrt( float f ) { + float g = 0.5f * f; + int i = *reinterpret_cast(&f); + + // do a guess + i = 0x5f375a86 - ( i>>1 ); + f = *reinterpret_cast(&i); + + // Newtons calculation + f = f * ( 1.5f - g * f * f ); + return f; +} + +/* +================ +Math::Log/Log2/Log10 + +Log of 0 is bad. +I've also heard you're not really +supposed to do log of negatives, yet +they work fine. +================ +*/ +OG_INLINE float Math::Log( float f ) { + OG_ASSERT( f != 0.0f ); + return logf( f ); +} +OG_INLINE float Math::Log2( float f ) { + OG_ASSERT( f != 0.0f ); + return INV_LN_2 * logf( f ); +} +OG_INLINE float Math::Log10( float f ) { + OG_ASSERT( f != 0.0f ); + return INV_LN_10 * logf( f ); +} + +/* +================ +Math::Pow +================ +*/ +OG_INLINE float Math::Pow( float base, float exp ) { + return powf( base, exp ); +} + +/* +================ +Math::Exp +================ +*/ +OG_INLINE float Math::Exp( float f ) { + return expf( f ); +} + +/* +================ +Math::IsPowerOfTwo +================ +*/ +OG_INLINE bool Math::IsPowerOfTwo( int x ) { + // This is the faster of the two known methods + // with the x > 0 check moved to the beginning + return x > 0 && ( x & ( x - 1 ) ) == 0; +} + +/* +================ +Math::HigherPowerOfTwo +================ +*/ +OG_INLINE int Math::HigherPowerOfTwo( int x ) { + x--; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x + 1; +} + +/* +================ +Math::LowerPowerOfTwo +================ +*/ +OG_INLINE int Math::LowerPowerOfTwo( int x ) { + return HigherPowerOfTwo( x ) >> 1; +} + +/* +================ +Math::FloorPowerOfTwo +================ +*/ +OG_INLINE int Math::FloorPowerOfTwo( int x ) { + return IsPowerOfTwo( x ) ? x : LowerPowerOfTwo( x ); +} + +/* +================ +Math::CeilPowerOfTwo +================ +*/ +OG_INLINE int Math::CeilPowerOfTwo( int x ) { + return IsPowerOfTwo( x ) ? x : HigherPowerOfTwo( x ); +} + +/* +================ +Math::ClosestPowerOfTwo +================ +*/ +OG_INLINE int Math::ClosestPowerOfTwo( int x ) { + if ( IsPowerOfTwo( x ) ) + return x; + int high = HigherPowerOfTwo( x ); + int low = high >> 1; + return ((high-x) < (x-low)) ? high : low; +} + +/* +================ +Math::Digits +================ +*/ +OG_INLINE int Math::Digits( int x ) { + int digits = 1; + int step = 10; + while (step <= x) { + digits++; + step *= 10; + } + return digits; +} + +/* +================ +Math::Sin/ASin +================ +*/ +OG_INLINE float Math::Sin( float f ) { + return sinf( f ); +} +OG_INLINE float Math::ASin( float f ) { + if ( f <= -1.0f ) + return -HALF_PI; + if ( f >= 1.0f ) + return HALF_PI; + return asinf( f ); +} + +/* +================ +Math::Cos/ACos +================ +*/ +OG_INLINE float Math::Cos( float f ) { + return cosf( f ); +} +OG_INLINE float Math::ACos( float f ) { + if ( f <= -1.0f ) + return PI; + if ( f >= 1.0f ) + return 0.0f; + return acosf( f ); +} + +/* +================ +Math::Tan/ATan +================ +*/ +OG_INLINE float Math::Tan( float f ) { + return tanf( f ); +} +OG_INLINE float Math::ATan( float f ) { + return atanf( f ); +} +OG_INLINE float Math::ATan( float f1, float f2 ) { + return atan2f( f1, f2 ); +} + +/* +================ +Math::SinCos +================ +*/ +OG_INLINE void Math::SinCos( float f, float &s, float &c ) { +#if OG_ASM_MSVC + // sometimes assembler is just waaayy faster + _asm { + fld f + fsincos + mov ecx, c + mov edx, s + fstp dword ptr [ecx] + fstp dword ptr [edx] + } +#elif OG_ASM_GNU + asm ("fsincos" : "=t" (c), "=u" (s) : "0" (f)); +#else + s = Sin(f); + c = Sqrt( 1.0f - s * s ); // faster than calling Cos(f) +#endif +} + +/* +================ +Math::Deg2Rad +================ +*/ +OG_INLINE float Math::Deg2Rad( float f ) { + return f * DEG_TO_RAD; +} + +/* +================ +Math::Rad2Deg +================ +*/ +OG_INLINE float Math::Rad2Deg( float f ) { + return f * RAD_TO_DEG; +} + +/* +================ +Math::Square +================ +*/ +OG_INLINE float Math::Square( float v ) { + return v * v; +} + +/* +================ +Math::Cube +================ +*/ +OG_INLINE float Math::Cube( float v ) { + return v * v * v; +} + +/* +================ +Math::Sec2Ms +================ +*/ +OG_INLINE int Math::Sec2Ms( int sec ) { + return sec * 1000; +} + +/* +================ +Math::Ms2Sec +================ +*/ +OG_INLINE int Math::Ms2Sec( int ms ) { + return FtoiFast( ms * 0.001f ); +} + +} + +#endif diff --git a/samples/C++/epoll_reactor.ipp b/samples/C++/epoll_reactor.ipp new file mode 100644 index 00000000..5d592aff --- /dev/null +++ b/samples/C++/epoll_reactor.ipp @@ -0,0 +1,664 @@ +// +// detail/impl/epoll_reactor.ipp +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP +#define BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif // defined(_MSC_VER) && (_MSC_VER >= 1200) + +#include + +#if defined(BOOST_ASIO_HAS_EPOLL) + +#include +#include +#include +#include +#include + +#if defined(BOOST_ASIO_HAS_TIMERFD) +# include +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + +#include + +namespace boost { +namespace asio { +namespace detail { + +epoll_reactor::epoll_reactor(boost::asio::io_service& io_service) + : boost::asio::detail::service_base(io_service), + io_service_(use_service(io_service)), + mutex_(), + interrupter_(), + epoll_fd_(do_epoll_create()), + timer_fd_(do_timerfd_create()), + shutdown_(false) +{ + // Add the interrupter's descriptor to epoll. + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLET; + ev.data.ptr = &interrupter_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev); + interrupter_.interrupt(); + + // Add the timer descriptor to epoll. + if (timer_fd_ != -1) + { + ev.events = EPOLLIN | EPOLLERR; + ev.data.ptr = &timer_fd_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev); + } +} + +epoll_reactor::~epoll_reactor() +{ + if (epoll_fd_ != -1) + close(epoll_fd_); + if (timer_fd_ != -1) + close(timer_fd_); +} + +void epoll_reactor::shutdown_service() +{ + mutex::scoped_lock lock(mutex_); + shutdown_ = true; + lock.unlock(); + + op_queue ops; + + while (descriptor_state* state = registered_descriptors_.first()) + { + for (int i = 0; i < max_ops; ++i) + ops.push(state->op_queue_[i]); + state->shutdown_ = true; + registered_descriptors_.free(state); + } + + timer_queues_.get_all_timers(ops); + + io_service_.abandon_operations(ops); +} + +void epoll_reactor::fork_service(boost::asio::io_service::fork_event fork_ev) +{ + if (fork_ev == boost::asio::io_service::fork_child) + { + if (epoll_fd_ != -1) + ::close(epoll_fd_); + epoll_fd_ = -1; + epoll_fd_ = do_epoll_create(); + + if (timer_fd_ != -1) + ::close(timer_fd_); + timer_fd_ = -1; + timer_fd_ = do_timerfd_create(); + + interrupter_.recreate(); + + // Add the interrupter's descriptor to epoll. + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLET; + ev.data.ptr = &interrupter_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev); + interrupter_.interrupt(); + + // Add the timer descriptor to epoll. + if (timer_fd_ != -1) + { + ev.events = EPOLLIN | EPOLLERR; + ev.data.ptr = &timer_fd_; + epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev); + } + + update_timeout(); + + // Re-register all descriptors with epoll. + mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); + for (descriptor_state* state = registered_descriptors_.first(); + state != 0; state = state->next_) + { + ev.events = state->registered_events_; + ev.data.ptr = state; + int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, state->descriptor_, &ev); + if (result != 0) + { + boost::system::error_code ec(errno, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(ec, "epoll re-registration"); + } + } + } +} + +void epoll_reactor::init_task() +{ + io_service_.init_task(); +} + +int epoll_reactor::register_descriptor(socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data) +{ + descriptor_data = allocate_descriptor_state(); + + { + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + descriptor_data->reactor_ = this; + descriptor_data->descriptor_ = descriptor; + descriptor_data->shutdown_ = false; + } + + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET; + descriptor_data->registered_events_ = ev.events; + ev.data.ptr = descriptor_data; + int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev); + if (result != 0) + return errno; + + return 0; +} + +int epoll_reactor::register_internal_descriptor( + int op_type, socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op) +{ + descriptor_data = allocate_descriptor_state(); + + { + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + descriptor_data->reactor_ = this; + descriptor_data->descriptor_ = descriptor; + descriptor_data->shutdown_ = false; + descriptor_data->op_queue_[op_type].push(op); + } + + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET; + descriptor_data->registered_events_ = ev.events; + ev.data.ptr = descriptor_data; + int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev); + if (result != 0) + return errno; + + return 0; +} + +void epoll_reactor::move_descriptor(socket_type, + epoll_reactor::per_descriptor_data& target_descriptor_data, + epoll_reactor::per_descriptor_data& source_descriptor_data) +{ + target_descriptor_data = source_descriptor_data; + source_descriptor_data = 0; +} + +void epoll_reactor::start_op(int op_type, socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op, + bool is_continuation, bool allow_speculative) +{ + if (!descriptor_data) + { + op->ec_ = boost::asio::error::bad_descriptor; + post_immediate_completion(op, is_continuation); + return; + } + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + if (descriptor_data->shutdown_) + { + post_immediate_completion(op, is_continuation); + return; + } + + if (descriptor_data->op_queue_[op_type].empty()) + { + if (allow_speculative + && (op_type != read_op + || descriptor_data->op_queue_[except_op].empty())) + { + if (op->perform()) + { + descriptor_lock.unlock(); + io_service_.post_immediate_completion(op, is_continuation); + return; + } + + if (op_type == write_op) + { + if ((descriptor_data->registered_events_ & EPOLLOUT) == 0) + { + epoll_event ev = { 0, { 0 } }; + ev.events = descriptor_data->registered_events_ | EPOLLOUT; + ev.data.ptr = descriptor_data; + if (epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev) == 0) + { + descriptor_data->registered_events_ |= ev.events; + } + else + { + op->ec_ = boost::system::error_code(errno, + boost::asio::error::get_system_category()); + io_service_.post_immediate_completion(op, is_continuation); + return; + } + } + } + } + else + { + if (op_type == write_op) + { + descriptor_data->registered_events_ |= EPOLLOUT; + } + + epoll_event ev = { 0, { 0 } }; + ev.events = descriptor_data->registered_events_; + ev.data.ptr = descriptor_data; + epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev); + } + } + + descriptor_data->op_queue_[op_type].push(op); + io_service_.work_started(); +} + +void epoll_reactor::cancel_ops(socket_type, + epoll_reactor::per_descriptor_data& descriptor_data) +{ + if (!descriptor_data) + return; + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + op_queue ops; + for (int i = 0; i < max_ops; ++i) + { + while (reactor_op* op = descriptor_data->op_queue_[i].front()) + { + op->ec_ = boost::asio::error::operation_aborted; + descriptor_data->op_queue_[i].pop(); + ops.push(op); + } + } + + descriptor_lock.unlock(); + + io_service_.post_deferred_completions(ops); +} + +void epoll_reactor::deregister_descriptor(socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data, bool closing) +{ + if (!descriptor_data) + return; + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + if (!descriptor_data->shutdown_) + { + if (closing) + { + // The descriptor will be automatically removed from the epoll set when + // it is closed. + } + else + { + epoll_event ev = { 0, { 0 } }; + epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); + } + + op_queue ops; + for (int i = 0; i < max_ops; ++i) + { + while (reactor_op* op = descriptor_data->op_queue_[i].front()) + { + op->ec_ = boost::asio::error::operation_aborted; + descriptor_data->op_queue_[i].pop(); + ops.push(op); + } + } + + descriptor_data->descriptor_ = -1; + descriptor_data->shutdown_ = true; + + descriptor_lock.unlock(); + + free_descriptor_state(descriptor_data); + descriptor_data = 0; + + io_service_.post_deferred_completions(ops); + } +} + +void epoll_reactor::deregister_internal_descriptor(socket_type descriptor, + epoll_reactor::per_descriptor_data& descriptor_data) +{ + if (!descriptor_data) + return; + + mutex::scoped_lock descriptor_lock(descriptor_data->mutex_); + + if (!descriptor_data->shutdown_) + { + epoll_event ev = { 0, { 0 } }; + epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev); + + op_queue ops; + for (int i = 0; i < max_ops; ++i) + ops.push(descriptor_data->op_queue_[i]); + + descriptor_data->descriptor_ = -1; + descriptor_data->shutdown_ = true; + + descriptor_lock.unlock(); + + free_descriptor_state(descriptor_data); + descriptor_data = 0; + } +} + +void epoll_reactor::run(bool block, op_queue& ops) +{ + // This code relies on the fact that the task_io_service queues the reactor + // task behind all descriptor operations generated by this function. This + // means, that by the time we reach this point, any previously returned + // descriptor operations have already been dequeued. Therefore it is now safe + // for us to reuse and return them for the task_io_service to queue again. + + // Calculate a timeout only if timerfd is not used. + int timeout; + if (timer_fd_ != -1) + timeout = block ? -1 : 0; + else + { + mutex::scoped_lock lock(mutex_); + timeout = block ? get_timeout() : 0; + } + + // Block on the epoll descriptor. + epoll_event events[128]; + int num_events = epoll_wait(epoll_fd_, events, 128, timeout); + +#if defined(BOOST_ASIO_HAS_TIMERFD) + bool check_timers = (timer_fd_ == -1); +#else // defined(BOOST_ASIO_HAS_TIMERFD) + bool check_timers = true; +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + + // Dispatch the waiting events. + for (int i = 0; i < num_events; ++i) + { + void* ptr = events[i].data.ptr; + if (ptr == &interrupter_) + { + // No need to reset the interrupter since we're leaving the descriptor + // in a ready-to-read state and relying on edge-triggered notifications + // to make it so that we only get woken up when the descriptor's epoll + // registration is updated. + +#if defined(BOOST_ASIO_HAS_TIMERFD) + if (timer_fd_ == -1) + check_timers = true; +#else // defined(BOOST_ASIO_HAS_TIMERFD) + check_timers = true; +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + } +#if defined(BOOST_ASIO_HAS_TIMERFD) + else if (ptr == &timer_fd_) + { + check_timers = true; + } +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + else + { + // The descriptor operation doesn't count as work in and of itself, so we + // don't call work_started() here. This still allows the io_service to + // stop if the only remaining operations are descriptor operations. + descriptor_state* descriptor_data = static_cast(ptr); + descriptor_data->set_ready_events(events[i].events); + ops.push(descriptor_data); + } + } + + if (check_timers) + { + mutex::scoped_lock common_lock(mutex_); + timer_queues_.get_ready_timers(ops); + +#if defined(BOOST_ASIO_HAS_TIMERFD) + if (timer_fd_ != -1) + { + itimerspec new_timeout; + itimerspec old_timeout; + int flags = get_timeout(new_timeout); + timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout); + } +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + } +} + +void epoll_reactor::interrupt() +{ + epoll_event ev = { 0, { 0 } }; + ev.events = EPOLLIN | EPOLLERR | EPOLLET; + ev.data.ptr = &interrupter_; + epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, interrupter_.read_descriptor(), &ev); +} + +int epoll_reactor::do_epoll_create() +{ +#if defined(EPOLL_CLOEXEC) + int fd = epoll_create1(EPOLL_CLOEXEC); +#else // defined(EPOLL_CLOEXEC) + int fd = -1; + errno = EINVAL; +#endif // defined(EPOLL_CLOEXEC) + + if (fd == -1 && (errno == EINVAL || errno == ENOSYS)) + { + fd = epoll_create(epoll_size); + if (fd != -1) + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + } + + if (fd == -1) + { + boost::system::error_code ec(errno, + boost::asio::error::get_system_category()); + boost::asio::detail::throw_error(ec, "epoll"); + } + + return fd; +} + +int epoll_reactor::do_timerfd_create() +{ +#if defined(BOOST_ASIO_HAS_TIMERFD) +# if defined(TFD_CLOEXEC) + int fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); +# else // defined(TFD_CLOEXEC) + int fd = -1; + errno = EINVAL; +# endif // defined(TFD_CLOEXEC) + + if (fd == -1 && errno == EINVAL) + { + fd = timerfd_create(CLOCK_MONOTONIC, 0); + if (fd != -1) + ::fcntl(fd, F_SETFD, FD_CLOEXEC); + } + + return fd; +#else // defined(BOOST_ASIO_HAS_TIMERFD) + return -1; +#endif // defined(BOOST_ASIO_HAS_TIMERFD) +} + +epoll_reactor::descriptor_state* epoll_reactor::allocate_descriptor_state() +{ + mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); + return registered_descriptors_.alloc(); +} + +void epoll_reactor::free_descriptor_state(epoll_reactor::descriptor_state* s) +{ + mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_); + registered_descriptors_.free(s); +} + +void epoll_reactor::do_add_timer_queue(timer_queue_base& queue) +{ + mutex::scoped_lock lock(mutex_); + timer_queues_.insert(&queue); +} + +void epoll_reactor::do_remove_timer_queue(timer_queue_base& queue) +{ + mutex::scoped_lock lock(mutex_); + timer_queues_.erase(&queue); +} + +void epoll_reactor::update_timeout() +{ +#if defined(BOOST_ASIO_HAS_TIMERFD) + if (timer_fd_ != -1) + { + itimerspec new_timeout; + itimerspec old_timeout; + int flags = get_timeout(new_timeout); + timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout); + return; + } +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + interrupt(); +} + +int epoll_reactor::get_timeout() +{ + // By default we will wait no longer than 5 minutes. This will ensure that + // any changes to the system clock are detected after no longer than this. + return timer_queues_.wait_duration_msec(5 * 60 * 1000); +} + +#if defined(BOOST_ASIO_HAS_TIMERFD) +int epoll_reactor::get_timeout(itimerspec& ts) +{ + ts.it_interval.tv_sec = 0; + ts.it_interval.tv_nsec = 0; + + long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000); + ts.it_value.tv_sec = usec / 1000000; + ts.it_value.tv_nsec = usec ? (usec % 1000000) * 1000 : 1; + + return usec ? 0 : TFD_TIMER_ABSTIME; +} +#endif // defined(BOOST_ASIO_HAS_TIMERFD) + +struct epoll_reactor::perform_io_cleanup_on_block_exit +{ + explicit perform_io_cleanup_on_block_exit(epoll_reactor* r) + : reactor_(r), first_op_(0) + { + } + + ~perform_io_cleanup_on_block_exit() + { + if (first_op_) + { + // Post the remaining completed operations for invocation. + if (!ops_.empty()) + reactor_->io_service_.post_deferred_completions(ops_); + + // A user-initiated operation has completed, but there's no need to + // explicitly call work_finished() here. Instead, we'll take advantage of + // the fact that the task_io_service will call work_finished() once we + // return. + } + else + { + // No user-initiated operations have completed, so we need to compensate + // for the work_finished() call that the task_io_service will make once + // this operation returns. + reactor_->io_service_.work_started(); + } + } + + epoll_reactor* reactor_; + op_queue ops_; + operation* first_op_; +}; + +epoll_reactor::descriptor_state::descriptor_state() + : operation(&epoll_reactor::descriptor_state::do_complete) +{ +} + +operation* epoll_reactor::descriptor_state::perform_io(uint32_t events) +{ + mutex_.lock(); + perform_io_cleanup_on_block_exit io_cleanup(reactor_); + mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock); + + // Exception operations must be processed first to ensure that any + // out-of-band data is read before normal data. + static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI }; + for (int j = max_ops - 1; j >= 0; --j) + { + if (events & (flag[j] | EPOLLERR | EPOLLHUP)) + { + while (reactor_op* op = op_queue_[j].front()) + { + if (op->perform()) + { + op_queue_[j].pop(); + io_cleanup.ops_.push(op); + } + else + break; + } + } + } + + // The first operation will be returned for completion now. The others will + // be posted for later by the io_cleanup object's destructor. + io_cleanup.first_op_ = io_cleanup.ops_.front(); + io_cleanup.ops_.pop(); + return io_cleanup.first_op_; +} + +void epoll_reactor::descriptor_state::do_complete( + io_service_impl* owner, operation* base, + const boost::system::error_code& ec, std::size_t bytes_transferred) +{ + if (owner) + { + descriptor_state* descriptor_data = static_cast(base); + uint32_t events = static_cast(bytes_transferred); + if (operation* op = descriptor_data->perform_io(events)) + { + op->complete(*owner, ec, 0); + } + } +} + +} // namespace detail +} // namespace asio +} // namespace boost + +#include + +#endif // defined(BOOST_ASIO_HAS_EPOLL) + +#endif // BOOST_ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP diff --git a/samples/Chapel/distributions.chpl b/samples/Chapel/distributions.chpl new file mode 100644 index 00000000..a3e5f81d --- /dev/null +++ b/samples/Chapel/distributions.chpl @@ -0,0 +1,304 @@ +// +// Distributions Primer +// +// This primer demonstrates uses of some of Chapel's standard +// distributions. To use these distributions in a Chapel program, +// the respective module must be used: +// +use BlockDist, CyclicDist, BlockCycDist, ReplicatedDist; +use DimensionalDist2D, ReplicatedDim, BlockCycDim; + +// +// For each distribution, we'll create a distributed domain and array +// and then initialize it just to give a brief flavor of how the +// distribution maps across locales. Running this example on 6 +// locales does a nice job of illustrating the distribution +// characteristics. +// +// All of these distributions support options to map to a different +// virtual locale grid than the one used by default (a +// multidimensional factoring of the built-in Locales array), as well +// as to control the amount of parallelism used in data parallel +// loops. See the Standard Distributions chapter of the language spec +// for more details. +// + +// +// Make the program size configurable from the command line. +// +config const n = 8; + +// +// Declare a 2-dimensional domain Space that we will later use to +// initialize the distributed domains. +// +const Space = {1..n, 1..n}; + +// +// The Block distribution distributes a bounding box from +// n-dimensional space across the target locale array viewed as an +// n-dimensional virtual locale grid. The bounding box is blocked +// into roughly equal portions across the locales. Note that domains +// declared over a Block distribution can also store indices outside +// of the bounding box; the bounding box is merely used to compute +// the blocking of space. +// +// In this example, we declare a 2-dimensional Block-distributed +// domain BlockSpace and a Block-distributed array BA declared over +// the domain. +// +const BlockSpace = Space dmapped Block(boundingBox=Space); +var BA: [BlockSpace] int; + +// +// To illustrate how the index set is distributed across locales, +// we'll use a forall loop to initialize each array element to the +// locale ID that stores that index/element/iteration. +// +forall ba in BA do + ba = here.id; + +// +// Output the Block-distributed array to visually see how the elements +// are partitioned across the locales. +// +writeln("Block Array Index Map"); +writeln(BA); +writeln(); + +// +// Most of Chapel's standard distributions support an optional +// targetLocales argument that permits you to pass in your own +// array of locales to be targeted. In general, the targetLocales +// argument should match the rank of the distribution. So for +// example, to map a Block to a [numLocales x 1] view of the +// locale set, one could do something like this: + +// +// We start by creating our own array of the locale values. Here +// we use the standard array reshape function for convenience, +// but more generally, this array could be accessed/assigned like any +// other. +// + +var MyLocaleView = {0..#numLocales, 1..1}; +var MyLocales: [MyLocaleView] locale = reshape(Locales, MyLocaleView); + +// +// Then we'll declare a distributed domain/array that targets +// this view of the locales: +// + +const BlockSpace2 = Space dmapped Block(boundingBox=Space, + targetLocales=MyLocales); +var BA2: [BlockSpace2] int; + +// +// Then we'll do a similar computation as before to verify where +// everything ended up: +// +forall ba in BA2 do + ba = here.id; + +writeln("Block Array Index Map"); +writeln(BA2); +writeln(); + + + +// +// Next, we'll perform a similar computation for the Cyclic distribution. +// Cyclic distributions start at a designated n-dimensional index and +// distribute the n-dimensional space across an n-dimensional array +// of locales in a round-robin fashion (in each dimension). As with +// the Block distribution, domains may be declared using the +// distribution who have lower indices that the starting index; that +// value should just be considered a parameterization of how the +// distribution is defined. +// +const CyclicSpace = Space dmapped Cyclic(startIdx=Space.low); +var CA: [CyclicSpace] int; + +forall ca in CA do + ca = here.id; + +writeln("Cyclic Array Index Map"); +writeln(CA); +writeln(); + + +// +// Next, we'll declare a Block-Cyclic distribution. These +// distributions also deal out indices in a round-robin fashion, +// but rather than dealing out singleton indices, they deal out blocks +// of indices. Thus, the BlockCyclic distribution is parameterized +// by a starting index (as with Cyclic) and a block size (per +// dimension) specifying how large the chunks to be dealt out are. +// +const BlkCycSpace = Space dmapped BlockCyclic(startIdx=Space.low, + blocksize=(2, 3)); +var BCA: [BlkCycSpace] int; + +forall bca in BCA do + bca = here.id; + +writeln("Block-Cyclic Array Index Map"); +writeln(BCA); +writeln(); + + +// +// The ReplicatedDist distribution is different: each of the +// original domain's indices - and the corresponding array elements - +// is replicated onto each locale. (Note: consistency among these +// array replicands is NOT maintained automatically.) +// +// This replication is observable in some cases but not others, +// as shown below. Note: this behavior may change in the future. +// +const ReplicatedSpace = Space dmapped ReplicatedDist(); +var RA: [ReplicatedSpace] int; + +// The replication is observable - this visits each replicand. +forall ra in RA do + ra = here.id; + +writeln("Replicated Array Index Map, ", RA.numElements, " elements total"); +writeln(RA); +writeln(); + +// +// The replication is observable when the replicated array is +// on the left-hand side. If the right-hand side is not replicated, +// it is copied into each replicand. +// We illustrate this using a non-distributed array. +// +var A: [Space] int = [(i,j) in Space] i*100 + j; +RA = A; +writeln("Replicated Array after being array-assigned into"); +writeln(RA); +writeln(); + +// +// Analogously, each replicand will be visited and +// other participated expressions will be computed on each locale +// (a) when the replicated array is assigned a scalar: +// RA = 5; +// (b) when it appears first in a zippered forall loop: +// forall (ra, a) in zip(RA, A) do ...; +// (c) when it appears in a for loop: +// for ra in RA do ...; +// +// Zippering (RA,A) or (A,RA) in a 'for' loop will generate +// an error due to their different number of elements. + +// Let RA store the Index Map again, for the examples below. +forall ra in RA do + ra = here.id; + +// +// Only the local replicand is accessed - replication is NOT observable +// and consistency is NOT maintained - when: +// (a) the replicated array is indexed - an individual element is read... +// +on Locales(0) do + writeln("on ", here, ": ", RA(Space.low)); +on Locales(LocaleSpace.high) do + writeln("on ", here, ": ", RA(Space.low)); +writeln(); + +// ...or an individual element is written; +on Locales(LocaleSpace.high) do + RA(Space.low) = 7777; + +writeln("Replicated Array after being indexed into"); +writeln(RA); +writeln(); + +// +// (b) the replicated array is on the right-hand side of an assignment... +// +on Locales(LocaleSpace.high) do + A = RA + 4; +writeln("Non-Replicated Array after assignment from Replicated Array + 4"); +writeln(A); +writeln(); + +// +// (c) ...or, generally, the replicated array or domain participates +// in a zippered forall loop, but not in the first position. +// The loop could look like: +// +// forall (a, (i,j), ra) in (A, ReplicatedSpace, RA) do ...; +// + + +// +// The DimensionalDist2D distribution lets us build a 2D distribution +// as a composition of specifiers for individual dimensions. +// Under such a "dimensional" distribution each dimension is handled +// independently of the other. +// +// The dimension specifiers are similar to the corresponding multi-dimensional +// distributions in constructor arguments and index-to-locale mapping rules. +// However, instead of an array of locales, a specifier constructor +// accepts just the number of locales that the indices in the corresponding +// dimension will be distributed across. +// +// The DimensionalDist2D constructor requires: +// * an [0..nl1-1, 0..nl2-1] array of locales, where +// nl1 and nl2 are the number of locales in each dimension, and +// * two dimension specifiers, created for nl1 and nl2 locale counts, resp. +// +// Presently, the following dimension specifiers are available +// (shown here with their constructor arguments): +// +// * ReplicatedDim(numLocales) +// * BlockDim(numLocales, boundingBoxLow, boundingBoxHigh) +// * BlockCyclicDim(lowIdx, blockSize, numLocales) +// + +// +// The following example creates a dimensional distribution that +// replicates over 2 locales (when available) in the first dimemsion +// and distributes using block-cyclic distribution in the second dimension. +// The example computes nl1 and nl2 and reshapes MyLocales correspondingly. +// + +var (nl1, nl2) = if numLocales == 1 then (1, 1) else (2, numLocales/2); +MyLocaleView = {0..#nl1, 0..#nl2}; +MyLocales = reshape(Locales[0..#nl1*nl2], MyLocaleView); + +const DimReplicatedBlockcyclicSpace = Space + dmapped DimensionalDist2D(MyLocales, + new ReplicatedDim(numLocales = nl1), + new BlockCyclicDim(numLocales = nl2, + lowIdx = 1, blockSize = 2)); + +var DRBA: [DimReplicatedBlockcyclicSpace] int; + +// The ReplicatedDim specifier always accesses the local replicand. +// (This differs from how the ReplicatedDist distribution works.) +// +// This example visits each replicand. The behavior is the same +// regardless of the second index into MyLocales below. + +for locId1 in 0..#nl1 do on MyLocales[locId1, 0] { + + forall drba in DRBA do + drba = here.id; + + writeln("Dimensional2D(Replicated,BlockCyclic) Array Index Map", + " from ", here); + + // Technicality: 'writeln(DRBA)' would read DRBA always on Locale 0. + // Since we want to see what DRBA contains on the current locale, + // we use 'Helper' that is mapped using the default distribution. + // 'Helper = DRBA' captures the view of DRBA on the current locale, + // which we then print out. + + const Helper: [Space] int = DRBA; + writeln(Helper); + writeln(); + +} diff --git a/samples/Chapel/hello.chpl b/samples/Chapel/hello.chpl new file mode 100644 index 00000000..cc98e786 --- /dev/null +++ b/samples/Chapel/hello.chpl @@ -0,0 +1 @@ +writeln("Hello, world!"); // print 'Hello, world!' to the console diff --git a/samples/Chapel/lulesh.chpl b/samples/Chapel/lulesh.chpl new file mode 100644 index 00000000..d6480d26 --- /dev/null +++ b/samples/Chapel/lulesh.chpl @@ -0,0 +1,1692 @@ +/* + Derived from the DARPA/Livermore Unstructured Lagrangian Explicit + Shock Hydrodynamics (LULESH) + https://computation.llnl.gov/casc/ShockHydro/ + + Original port to Chapel by Brandon Holt (8/2011). Further + improvements for the sake of performance and/or generality made by + Sung-Eun Choi (12/2011, 11/2012), Jeff Keasler (3/2012), and Brad + Chamberlain (3-4,9-11/2012, 2/2013). + + + Notes on the Initial Implementation + ----------------------------------- + + This implementation was designed to mirror the overall structure of + the C++ Lulesh but use Chapel constructs where they can help make + the code more readable, easier to maintain, or more + 'elegant'. Function names are preserved for the most part, with some + additional helper functions, and original comments from the C++ code + are interspersed approximately where they belong to give an idea of + how the two codes line up. One major difference for this Chapel + version is the use of a number of module-level variables and + constants. + + + Status: + + This code remains a work-in-progress as we gain further experience + with it. Proposed improvements are noted in the README in this + directory and (in some cases) in TODO comments in the code. + + */ + + + +use Time, // to get timing routines for benchmarking + BlockDist; // for block-distributed arrays + +use luleshInit; // initialization code for data set + +/* The configuration parameters for lulesh. These can be set on the + compiler command line using -s=. For example, + + chpl -suseBlockDist=true + + useBlockDist : says whether or not to block-distribute the arrays. + The default is based on the value of CHPL_COMM, as + an indication of whether this is a single- or multi- + locale execution. + + use3DRepresentation : indicates whether the element node arrays + should be stored using a 3D representation + (limiting the execution to cube inputs) or + the more general 1D representation (supporting + arbitrary data sets). + + useSparseMaterials : indicates whether sparse domains/arrays should be + used to represent the materials. Sparse domains + are more realistic in that they permit an arbitrary + subset of the problem space to store a material. + Dense domains are sufficient for LULESH since there's + an assumption that the material spans all cells. + + printWarnings : prints performance-oriented warnings to prevent + surprises. +*/ + +config param useBlockDist = (CHPL_COMM != "none"), + use3DRepresentation = false, + useSparseMaterials = true, + printWarnings = true; + + +// +// Sanity check to ensure that input files aren't used with the 3D +// representation +// +if (use3DRepresentation && (luleshInit.filename != "")) then + halt("The 3D representation does not support reading input from files"); + + +/* Configuration constants: Override defaults on executable's command-line */ + +config const initialEnergy = 3.948746e+7; // initial energy value + + +config const showProgress = false, // print time and dt values on each step + debug = false, // print various debug info + doTiming = true, // time the main timestep loop + printCoords = true; // print the final computed coordinates + + +/* Compile-time constants */ + +param XI_M = 0x003, + XI_M_SYMM = 0x001, + XI_M_FREE = 0x002, + + XI_P = 0x00c, + XI_P_SYMM = 0x004, + XI_P_FREE = 0x008, + + ETA_M = 0x030, + ETA_M_SYMM = 0x010, + ETA_M_FREE = 0x020, + + ETA_P = 0x0c0, + ETA_P_SYMM = 0x040, + ETA_P_FREE = 0x080, + + ZETA_M = 0x300, + ZETA_M_SYMM = 0x100, + ZETA_M_FREE = 0x200, + + ZETA_P = 0xc00, + ZETA_P_SYMM = 0x400, + ZETA_P_FREE = 0x800; + + +/* Set up the problem size */ + +const (numElems, numNodes) = initProblemSize(); + + +/* Declare abstract problem domains */ + +const ElemSpace = if use3DRepresentation + then {0..#elemsPerEdge, 0..#elemsPerEdge, 0..#elemsPerEdge} + else {0..#numElems}, + NodeSpace = if use3DRepresentation + then {0..#nodesPerEdge, 0..#nodesPerEdge, 0..#nodesPerEdge} + else {0..#numNodes}; + + +/* Declare the (potentially distributed) problem domains */ + +const Elems = if useBlockDist then ElemSpace dmapped Block(ElemSpace) + else ElemSpace, + Nodes = if useBlockDist then NodeSpace dmapped Block(NodeSpace) + else NodeSpace; + + +/* The coordinates */ + +var x, y, z: [Nodes] real; + + +/* The number of nodes per element. In a rank-independent version, + this could be written 2**rank */ + +param nodesPerElem = 8; + + +// We could name this, but chose not to since it doesn't add that much clarity +// +// const elemNeighbors = 1..nodesPerElem; + + +/* The element-to-node mapping */ + +var elemToNode: [Elems] nodesPerElem*index(Nodes); + + +/* the Greek variables */ + +var lxim, lxip, letam, letap, lzetam, lzetap: [Elems] index(Elems); + + +/* the X, Y, Z Symmetry values */ + +var XSym, YSym, ZSym: sparse subdomain(Nodes); + + + +/* Constants */ + +const u_cut = 1.0e-7, /* velocity tolerance */ + hgcoef = 3.0, /* hourglass control */ + qstop = 1.0e+12, /* excessive q indicator */ + monoq_max_slope = 1.0, + monoq_limiter_mult = 2.0, + e_cut = 1.0e-7, /* energy tolerance */ + p_cut = 1.0e-7, /* pressure tolerance */ + ss4o3 = 4.0/3.0, + q_cut = 1.0e-7, /* q tolerance */ + v_cut = 1.0e-10, /* relative volume tolerance */ + qlc_monoq = 0.5, /* linear term coef for q */ + qqc_monoq = 2.0/3.0, /* quadratic term coef for q */ + qqc = 2.0, + qqc2 = 64.0 * qqc**2, + eosvmax = 1.0e+9, + eosvmin = 1.0e-9, + pmin = 0.0, /* pressure floor */ + emin = -1.0e+15, /* energy floor */ + dvovmax = 0.1, /* maximum allowable volume change */ + refdens = 1.0, /* reference density */ + + deltatimemultlb = 1.1, + deltatimemultub = 1.2, + dtmax = 1.0e-2; /* maximum allowable time increment */ + + +config const stoptime = 1.0e-2, /* end time for simulation */ + maxcycles = max(int), /* max number of cycles to simulate */ + dtfixed = -1.0e-7; /* fixed time increment */ + + +/* The list of material elements */ + +const MatElems: MatElemsType = if useSparseMaterials then enumerateMatElems() + else Elems; + + +proc MatElemsType type { + if useSparseMaterials { + if (printWarnings && useBlockDist && numLocales > 1) then + writeln("WARNING: The LULESH Material Elements (MatElems) are not yet\n", + " distributed, so result in excessive memory use on,\n", + " and communication with, locale 0\n"); + return sparse subdomain(Elems); + } else + return Elems.type; +} + +iter enumerateMatElems() { + if (printWarnings && useBlockDist && numLocales > 1) then + writeln("WARNING: generation of matrix elements is serial and\n", + " unlikely to scale"); + for i in Elems do + yield i; +} + + +/* Element fields */ + +var elemBC: [Elems] int, + + e: [Elems] real, // energy + p: [Elems] real, // pressure + + q: [Elems] real, // q + ql: [Elems] real, // linear term for q + qq: [Elems] real, // quadratic term for q + + v: [Elems] real = 1.0, //relative volume + vnew: [Elems] real, + + volo: [Elems] real, // reference volume + delv: [Elems] real, // m_vnew - m_v + vdov: [Elems] real, // volume derivative over volume + + arealg: [Elems] real, // elem characteristic length + + ss: [Elems] real, // "sound speed" + + elemMass: [Elems] real; // mass + + +/* Nodal fields */ + +var xd, yd, zd: [Nodes] real, // velocities + + xdd, ydd, zdd: [Nodes] real, // acceleration + + fx, fy, fz: [Nodes] atomic real, // forces + + nodalMass: [Nodes] real; // mass + + +/* Parameters */ + +var time = 0.0, // current time + deltatime = 1.0e-7, // variable time increment + dtcourant = 1.0e20, // courant constraint + dthydro = 1.0e20, // volume change constraint + + cycle = 0; // iteration count for simulation + + +proc main() { + if debug then writeln("Lulesh -- Problem Size = ", numElems); + + initLulesh(); + + var st: real; + if doTiming then st = getCurrentTime(); + while (time < stoptime && cycle < maxcycles) { + const iterTime = if showProgress then getCurrentTime() else 0.0; + + TimeIncrement(); + + LagrangeLeapFrog(); + + if debug { + // deprint("[[ Forces ]]", fx, fy, fz); + deprint("[[ Positions ]]", x, y, z); + deprint("[[ p, e, q ]]", p, e, q); + } + if showProgress then + writeln("time = ", format("%e", time), ", dt=", format("%e", deltatime), + if doTiming then ", elapsed = " + (getCurrentTime()-iterTime) + else ""); + } + if (cycle == maxcycles) { + writeln("Stopped early due to reaching maxnumsteps"); + } + if doTiming { + const et = getCurrentTime(); + writeln("Total Time: ", et-st); + writeln("Time/Cycle: ", (et-st)/cycle); + } + writeln("Number of cycles: ", cycle); + + if printCoords { + var outfile = open("coords.out", iomode.cw); + var writer = outfile.writer(); + var fmtstr = if debug then "%1.9e" else "%1.4e"; + for i in Nodes { + writer.writeln(format(fmtstr, x[i]), " ", + format(fmtstr, y[i]), " ", + format(fmtstr, z[i])); + } + writer.close(); + outfile.close(); + } +} + + +/* Initialization functions */ + +proc initLulesh() { + // initialize the coordinates + initCoordinates(x,y,z); + + // initialize the element to node mapping + initElemToNodeMapping(elemToNode); + + // initialize the greek symbols + initGreekVars(lxim, lxip, letam, letap, lzetam, lzetap); + + // initialize the symmetry plane locations + initXSyms(XSym); + initYSyms(YSym); + initZSyms(ZSym); + + /* embed hexehedral elements in nodal point lattice */ + //calculated on the fly using: elemToNodes(i: index(Elems)): index(Nodes) + + // initialize the masses + initMasses(); + + // initialize the boundary conditions + const octantCorner = initBoundaryConditions(); + + // deposit the energy for Sedov Problem + e[octantCorner] = initialEnergy; +} + + +proc initMasses() { + // This is a temporary array used to accumulate masses in parallel + // without losing updates by using 'atomic' variables + var massAccum: [Nodes] atomic real; + + forall eli in Elems { + var x_local, y_local, z_local: 8*real; + localizeNeighborNodes(eli, x, x_local, y, y_local, z, z_local); + + const volume = CalcElemVolume(x_local, y_local, z_local); + volo[eli] = volume; + elemMass[eli] = volume; + + for neighbor in elemToNodes[eli] do + massAccum[neighbor].add(volume); + } + + // When we're done, copy the accumulated masses into nodalMass, at + // which point the massAccum array can go away (and will at the + // procedure's return + + forall i in Nodes do + nodalMass[i] = massAccum[i].read() / 8.0; + + if debug { + writeln("ElemMass:"); + for mass in elemMass do writeln(mass); + + writeln("NodalMass:"); + for mass in nodalMass do writeln(mass); + } +} + + +proc initBoundaryConditions() { + var surfaceNode: [Nodes] int; + + forall n in XSym do + surfaceNode[n] = 1; + forall n in YSym do + surfaceNode[n] = 1; + forall n in ZSym do + surfaceNode[n] = 1; + + forall e in Elems do { + var mask: int; + for i in 1..nodesPerElem do + mask += surfaceNode[elemToNode[e][i]] << (i-1); + + // TODO: make an inlined function for this little idiom? (and below) + + if ((mask & 0x0f) == 0x0f) then elemBC[e] |= ZETA_M_SYMM; + if ((mask & 0xf0) == 0xf0) then elemBC[e] |= ZETA_P_SYMM; + if ((mask & 0x33) == 0x33) then elemBC[e] |= ETA_M_SYMM; + if ((mask & 0xcc) == 0xcc) then elemBC[e] |= ETA_P_SYMM; + if ((mask & 0x99) == 0x99) then elemBC[e] |= XI_M_SYMM; + if ((mask & 0x66) == 0x66) then elemBC[e] |= XI_P_SYMM; + } + + + // + // We find the octant corner by looking for the element with + // all three SYMM flags set, which will have the largest + // integral value. Thus, we can use a maxloc to identify it. + // + const (check, loc) = maxloc reduce zip(elemBC, Elems); + + if debug then writeln("Found the octant corner at: ", loc); + + if (check != (XI_M_SYMM | ETA_M_SYMM | ZETA_M_SYMM)) then + halt("maxloc got a value of ", check, " at loc ", loc); + + // TODO: This is an example of an array that, in a distributed + // memory code, would typically be completely local and only storing + // the local nodes owned by the locale -- noting that some nodes + // are logically owned by multiple locales and therefore would + // redundantly be stored in both locales' surfaceNode arrays -- it's + // essentially local scratchspace that does not need to be communicated + // or kept coherent across locales. + // + + surfaceNode = 0; + + /* the free surfaces */ + + var freeSurface: sparse subdomain(Nodes); + + // initialize the free surface + initFreeSurface(freeSurface); + + forall n in freeSurface do + surfaceNode[n] = 1; + + forall e in Elems do { + var mask: int; + for i in 1..nodesPerElem do + mask += surfaceNode[elemToNode[e][i]] << (i-1); + + if ((mask & 0x0f) == 0x0f) then elemBC[e] |= ZETA_M_FREE; + if ((mask & 0xf0) == 0xf0) then elemBC[e] |= ZETA_P_FREE; + if ((mask & 0x33) == 0x33) then elemBC[e] |= ETA_M_FREE; + if ((mask & 0xcc) == 0xcc) then elemBC[e] |= ETA_P_FREE; + if ((mask & 0x99) == 0x99) then elemBC[e] |= XI_M_FREE; + if ((mask & 0x66) == 0x66) then elemBC[e] |= XI_P_FREE; + } + + if debug { + writeln("elemBC:"); + for b in elemBC do writeln(b); + } + + return loc; +} + + +/* Helper functions */ + +inline proc localizeNeighborNodes(eli: index(Elems), + x: [] real, ref x_local: 8*real, + y: [] real, ref y_local: 8*real, + z: [] real, ref z_local: 8*real) { + + for param i in 1..nodesPerElem { + const noi = elemToNode[eli][i]; + + x_local[i] = x[noi]; + y_local[i] = y[noi]; + z_local[i] = z[noi]; + } +} + +inline proc TripleProduct(x1, y1, z1, x2, y2, z2, x3, y3, z3) { + return x1*(y2*z3 - z2*y3) + x2*(z1*y3 - y1*z3) + x3*(y1*z2 - z1*y2); +} + + +proc CalcElemVolume(x, y, z) { + const dx61 = x[7] - x[2], + dy61 = y[7] - y[2], + dz61 = z[7] - z[2], + + dx70 = x[8] - x[1], + dy70 = y[8] - y[1], + dz70 = z[8] - z[1], + + dx63 = x[7] - x[4], + dy63 = y[7] - y[4], + dz63 = z[7] - z[4], + + dx20 = x[3] - x[1], + dy20 = y[3] - y[1], + dz20 = z[3] - z[1], + + dx50 = x[6] - x[1], + dy50 = y[6] - y[1], + dz50 = z[6] - z[1], + + dx64 = x[7] - x[5], + dy64 = y[7] - y[5], + dz64 = z[7] - z[5], + + dx31 = x[4] - x[2], + dy31 = y[4] - y[2], + dz31 = z[4] - z[2], + + dx72 = x[8] - x[3], + dy72 = y[8] - y[3], + dz72 = z[8] - z[3], + + dx43 = x[5] - x[4], + dy43 = y[5] - y[4], + dz43 = z[5] - z[4], + + dx57 = x[6] - x[8], + dy57 = y[6] - y[8], + dz57 = z[6] - z[8], + + dx14 = x[2] - x[5], + dy14 = y[2] - y[5], + dz14 = z[2] - z[5], + + dx25 = x[3] - x[6], + dy25 = y[3] - y[6], + dz25 = z[3] - z[6]; + + const volume = TripleProduct(dx31 + dx72, dx63, dx20, + dy31 + dy72, dy63, dy20, + dz31 + dz72, dz63, dz20) + + TripleProduct(dx43 + dx57, dx64, dx70, + dy43 + dy57, dy64, dy70, + dz43 + dz57, dz64, dz70) + + TripleProduct(dx14 + dx25, dx61, dx50, + dy14 + dy25, dy61, dy50, + dz14 + dz25, dz61, dz50); + + return volume / 12.0; +} + +proc InitStressTermsForElems(p, q, sigxx, sigyy, sigzz: [?D] real) { + forall i in D { + sigxx[i] = -p[i] - q[i]; + sigyy[i] = -p[i] - q[i]; + sigzz[i] = -p[i] - q[i]; + } +} + + +proc CalcElemShapeFunctionDerivatives(x: 8*real, y: 8*real, z: 8*real, + ref b_x: 8*real, + ref b_y: 8*real, + ref b_z: 8*real, + ref volume: real) { + + const fjxxi = .125 * ((x[7]-x[1]) + (x[6]-x[4]) - (x[8]-x[2]) - (x[5]-x[3])), + fjxet = .125 * ((x[7]-x[1]) - (x[6]-x[4]) + (x[8]-x[2]) - (x[5]-x[3])), + fjxze = .125 * ((x[7]-x[1]) + (x[6]-x[4]) + (x[8]-x[2]) + (x[5]-x[3])), + + fjyxi = .125 * ((y[7]-y[1]) + (y[6]-y[4]) - (y[8]-y[2]) - (y[5]-y[3])), + fjyet = .125 * ((y[7]-y[1]) - (y[6]-y[4]) + (y[8]-y[2]) - (y[5]-y[3])), + fjyze = .125 * ((y[7]-y[1]) + (y[6]-y[4]) + (y[8]-y[2]) + (y[5]-y[3])), + + fjzxi = .125 * ((z[7]-z[1]) + (z[6]-z[4]) - (z[8]-z[2]) - (z[5]-z[3])), + fjzet = .125 * ((z[7]-z[1]) - (z[6]-z[4]) + (z[8]-z[2]) - (z[5]-z[3])), + fjzze = .125 * ((z[7]-z[1]) + (z[6]-z[4]) + (z[8]-z[2]) + (z[5]-z[3])); + + /* compute cofactors */ + const cjxxi = (fjyet * fjzze) - (fjzet * fjyze), + cjxet = - (fjyxi * fjzze) + (fjzxi * fjyze), + cjxze = (fjyxi * fjzet) - (fjzxi * fjyet), + + cjyxi = - (fjxet * fjzze) + (fjzet * fjxze), + cjyet = (fjxxi * fjzze) - (fjzxi * fjxze), + cjyze = - (fjxxi * fjzet) + (fjzxi * fjxet), + + cjzxi = (fjxet * fjyze) - (fjyet * fjxze), + cjzet = - (fjxxi * fjyze) + (fjyxi * fjxze), + cjzze = (fjxxi * fjyet) - (fjyxi * fjxet); + + /* calculate partials : + this need only be done for l = 0,1,2,3 since , by symmetry , + (6,7,4,5) = - (0,1,2,3) . + */ + b_x[1] = - cjxxi - cjxet - cjxze; + b_x[2] = cjxxi - cjxet - cjxze; + b_x[3] = cjxxi + cjxet - cjxze; + b_x[4] = - cjxxi + cjxet - cjxze; + b_x[5] = -b_x[3]; + b_x[6] = -b_x[4]; + b_x[7] = -b_x[1]; + b_x[8] = -b_x[2]; + + b_y[1] = - cjyxi - cjyet - cjyze; + b_y[2] = cjyxi - cjyet - cjyze; + b_y[3] = cjyxi + cjyet - cjyze; + b_y[4] = - cjyxi + cjyet - cjyze; + b_y[5] = -b_y[3]; + b_y[6] = -b_y[4]; + b_y[7] = -b_y[1]; + b_y[8] = -b_y[2]; + + b_z[1] = - cjzxi - cjzet - cjzze; + b_z[2] = cjzxi - cjzet - cjzze; + b_z[3] = cjzxi + cjzet - cjzze; + b_z[4] = - cjzxi + cjzet - cjzze; + b_z[5] = -b_z[3]; + b_z[6] = -b_z[4]; + b_z[7] = -b_z[1]; + b_z[8] = -b_z[2]; + + /* calculate jacobian determinant (volume) */ + volume = 8.0 * ( fjxet * cjxet + fjyet * cjyet + fjzet * cjzet); +} + + +proc CalcElemNodeNormals(ref pfx: 8*real, ref pfy: 8*real, ref pfz: 8*real, + x: 8*real, y: 8*real, z: 8*real) { + + proc ElemFaceNormal(param n1, param n2, param n3, param n4) { + const bisectX0 = 0.5 * (x[n4] + x[n3] - x[n2] - x[n1]), + bisectY0 = 0.5 * (y[n4] + y[n3] - y[n2] - y[n1]), + bisectZ0 = 0.5 * (z[n4] + z[n3] - z[n2] - z[n1]), + bisectX1 = 0.5 * (x[n3] + x[n2] - x[n4] - x[n1]), + bisectY1 = 0.5 * (y[n3] + y[n2] - y[n4] - y[n1]), + bisectZ1 = 0.5 * (z[n3] + z[n2] - z[n4] - z[n1]), + areaX = 0.25 * (bisectY0 * bisectZ1 - bisectZ0 * bisectY1), + areaY = 0.25 * (bisectZ0 * bisectX1 - bisectX0 * bisectZ1), + areaZ = 0.25 * (bisectX0 * bisectY1 - bisectY0 * bisectX1); + + var rx, ry, rz: 8*real; //results + + (rx[n1], rx[n2], rx[n3], rx[n4]) = (areaX, areaX, areaX, areaX); + (ry[n1], ry[n2], ry[n3], ry[n4]) = (areaY, areaY, areaY, areaY); + (rz[n1], rz[n2], rz[n3], rz[n4]) = (areaZ, areaZ, areaZ, areaZ); + + return (rx, ry, rz); + } + + // calculate total normal from each face (faces are made up of + // combinations of nodes) + + (pfx, pfy, pfz) = ElemFaceNormal(1,2,3,4) + ElemFaceNormal(1,5,6,2) + + ElemFaceNormal(2,6,7,3) + ElemFaceNormal(3,7,8,4) + + ElemFaceNormal(4,8,5,1) + ElemFaceNormal(5,8,7,6); +} + + +proc SumElemStressesToNodeForces(b_x: 8*real, b_y: 8*real, b_z: 8*real, + stress_xx:real, + stress_yy:real, + stress_zz: real, + ref fx: 8*real, + ref fy: 8*real, + ref fz: 8*real) { + for param i in 1..8 { + fx[i] = -(stress_xx * b_x[i]); + fy[i] = -(stress_yy * b_y[i]); + fz[i] = -(stress_zz * b_z[i]); + } +} + +proc CalcElemVolumeDerivative(x: 8*real, y: 8*real, z: 8*real) { + + proc VoluDer(param n0, param n1, param n2, param n3, param n4, param n5) { + const ox = (y[n1] + y[n2]) * (z[n0] + z[n1]) + - (y[n0] + y[n1]) * (z[n1] + z[n2]) + + (y[n0] + y[n4]) * (z[n3] + z[n4]) + - (y[n3] + y[n4]) * (z[n0] + z[n4]) + - (y[n2] + y[n5]) * (z[n3] + z[n5]) + + (y[n3] + y[n5]) * (z[n2] + z[n5]), + oy = - (x[n1] + x[n2]) * (z[n0] + z[n1]) + + (x[n0] + x[n1]) * (z[n1] + z[n2]) + - (x[n0] + x[n4]) * (z[n3] + z[n4]) + + (x[n3] + x[n4]) * (z[n0] + z[n4]) + + (x[n2] + x[n5]) * (z[n3] + z[n5]) + - (x[n3] + x[n5]) * (z[n2] + z[n5]), + oz = - (y[n1] + y[n2]) * (x[n0] + x[n1]) + + (y[n0] + y[n1]) * (x[n1] + x[n2]) + - (y[n0] + y[n4]) * (x[n3] + x[n4]) + + (y[n3] + y[n4]) * (x[n0] + x[n4]) + + (y[n2] + y[n5]) * (x[n3] + x[n5]) + - (y[n3] + y[n5]) * (x[n2] + x[n5]); + + return (ox/12.0, oy/12.0, oz/12.0); + } + + var dvdx, dvdy, dvdz: 8*real; + + (dvdx[1], dvdy[1], dvdz[1]) = VoluDer(2,3,4,5,6,8); + (dvdx[4], dvdy[4], dvdz[4]) = VoluDer(1,2,3,8,5,7); + (dvdx[3], dvdy[3], dvdz[3]) = VoluDer(4,1,2,7,8,6); + (dvdx[2], dvdy[2], dvdz[2]) = VoluDer(3,4,1,6,7,5); + (dvdx[5], dvdy[5], dvdz[5]) = VoluDer(8,7,6,1,4,2); + (dvdx[6], dvdy[6], dvdz[6]) = VoluDer(5,8,7,2,1,3); + (dvdx[7], dvdy[7], dvdz[7]) = VoluDer(6,5,8,3,2,4); + (dvdx[8], dvdy[8], dvdz[8]) = VoluDer(7,6,5,4,3,1); + + return (dvdx, dvdy, dvdz); +} + +inline proc CalcElemFBHourglassForce(xd: 8*real, yd: 8*real, zd: 8*real, + hourgam: 8*(4*real), + coefficient: real, + ref hgfx: 8*real, + ref hgfy: 8*real, + ref hgfz: 8*real) { + var hx, hy, hz: 4*real; + + // reduction + for param i in 1..4 { + for param j in 1..8 { + hx[i] += hourgam[j][i] * xd[j]; + hy[i] += hourgam[j][i] * yd[j]; + hz[i] += hourgam[j][i] * zd[j]; + } + } + + for param i in 1..8 { + var shx, shy, shz: real; + for param j in 1..4 { + shx += hourgam[i][j] * hx[j]; + shy += hourgam[i][j] * hy[j]; + shz += hourgam[i][j] * hz[j]; + } + hgfx[i] = coefficient * shx; + hgfy[i] = coefficient * shy; + hgfz[i] = coefficient * shz; + } +} + + +proc CalcElemCharacteristicLength(x, y, z, volume) { + proc AreaFace(param p0, param p1, param p2, param p3) { + const fx = (x[p2] - x[p0]) - (x[p3] - x[p1]), + fy = (y[p2] - y[p0]) - (y[p3] - y[p1]), + fz = (z[p2] - z[p0]) - (z[p3] - z[p1]), + gx = (x[p2] - x[p0]) + (x[p3] - x[p1]), + gy = (y[p2] - y[p0]) + (y[p3] - y[p1]), + gz = (z[p2] - z[p0]) + (z[p3] - z[p1]), + area = (fx * fx + fy * fy + fz * fz) * + (gx * gx + gy * gy + gz * gz) - + (fx * gx + fy * gy + fz * gz) * + (fx * gx + fy * gy + fz * gz); + + return area ; + } + + const charLength = max(AreaFace(1, 2, 3, 4), + AreaFace(5, 6, 7, 8), + AreaFace(1, 2, 6, 5), + AreaFace(2, 3, 7, 6), + AreaFace(3, 4, 8, 7), + AreaFace(4, 1, 5, 8)); + + return 4.0 * volume / sqrt(charLength); +} + + +proc CalcElemVelocityGradient(xvel, yvel, zvel, pfx, pfy, pfz, + detJ, ref d: 6*real) { + const inv_detJ = 1.0 / detJ; + + d[1] = inv_detJ * ( pfx[1] * (xvel[1]-xvel[7]) + + pfx[2] * (xvel[2]-xvel[8]) + + pfx[3] * (xvel[3]-xvel[5]) + + pfx[4] * (xvel[4]-xvel[6]) ); + d[2] = inv_detJ * ( pfy[1] * (yvel[1]-yvel[7]) + + pfy[2] * (yvel[2]-yvel[8]) + + pfy[3] * (yvel[3]-yvel[5]) + + pfy[4] * (yvel[4]-yvel[6]) ); + d[3] = inv_detJ * ( pfz[1] * (zvel[1]-zvel[7]) + + pfz[2] * (zvel[2]-zvel[8]) + + pfz[3] * (zvel[3]-zvel[5]) + + pfz[4] * (zvel[4]-zvel[6]) ); + + const dyddx = inv_detJ * ( pfx[1] * (yvel[1]-yvel[7]) + + pfx[2] * (yvel[2]-yvel[8]) + + pfx[3] * (yvel[3]-yvel[5]) + + pfx[4] * (yvel[4]-yvel[6]) ), + + dxddy = inv_detJ * ( pfy[1] * (xvel[1]-xvel[7]) + + pfy[2] * (xvel[2]-xvel[8]) + + pfy[3] * (xvel[3]-xvel[5]) + + pfy[4] * (xvel[4]-xvel[6]) ), + + dzddx = inv_detJ * ( pfx[1] * (zvel[1]-zvel[7]) + + pfx[2] * (zvel[2]-zvel[8]) + + pfx[3] * (zvel[3]-zvel[5]) + + pfx[4] * (zvel[4]-zvel[6]) ), + + dxddz = inv_detJ * ( pfz[1] * (xvel[1]-xvel[7]) + + pfz[2] * (xvel[2]-xvel[8]) + + pfz[3] * (xvel[3]-xvel[5]) + + pfz[4] * (xvel[4]-xvel[6]) ), + + dzddy = inv_detJ * ( pfy[1] * (zvel[1]-zvel[7]) + + pfy[2] * (zvel[2]-zvel[8]) + + pfy[3] * (zvel[3]-zvel[5]) + + pfy[4] * (zvel[4]-zvel[6]) ), + + dyddz = inv_detJ * ( pfz[1] * (yvel[1]-yvel[7]) + + pfz[2] * (yvel[2]-yvel[8]) + + pfz[3] * (yvel[3]-yvel[5]) + + pfz[4] * (yvel[4]-yvel[6]) ); + + d[6] = 0.5 * ( dxddy + dyddx ); + d[5] = 0.5 * ( dxddz + dzddx ); + d[4] = 0.5 * ( dzddy + dyddz ); +} + + +proc CalcPressureForElems(p_new: [?D] real, bvc, pbvc, + e_old, compression, vnewc, + pmin: real, p_cut: real, eosvmax: real) { + + // + // TODO: Uncomment local once sparse domain is distributed + // + forall i in D /* do local */ { + const c1s = 2.0 / 3.0; + bvc[i] = c1s * (compression[i] + 1.0); + pbvc[i] = c1s; + } + + forall i in D { + p_new[i] = bvc[i] * e_old[i]; + + if abs(p_new[i]) < p_cut then p_new[i] = 0.0; + if vnewc[i] >= eosvmax then p_new[i] = 0.0; //impossible? + if p_new[i] < pmin then p_new[i] = pmin; + } +} + + +proc TimeIncrement() { + var targetdt = stoptime - time; + + if dtfixed <= 0.0 && cycle != 0 { //don't do this the first cycle + var olddt = deltatime, + newdt = 1.0e20; + + if dtcourant < newdt then newdt = dtcourant / 2.0; + if dthydro < newdt then newdt = 2.0/3.0 * dthydro; + + const ratio = newdt / olddt; + if ratio >= 1.0 { + if ratio < deltatimemultlb then newdt = olddt; + else if ratio > deltatimemultub then newdt = olddt * deltatimemultub; + } + if newdt > dtmax then newdt = dtmax; + + deltatime = newdt; + } + + /* TRY TO PREVENT VERY SMALL SCALING ON THE NEXT CYCLE */ + if targetdt > deltatime && targetdt < (4.0/3.0 * deltatime) { + targetdt = 2.0/3.0 * deltatime; + } + if targetdt < deltatime then deltatime = targetdt; + + time += deltatime; + cycle += 1; +} + +inline proc LagrangeLeapFrog() { + /* calculate nodal forces, accelerations, velocities, positions, with + * applied boundary conditions and slide surface considerations */ + LagrangeNodal(); + + /* calculate element quantities (i.e. velocity gradient & q), and update + * material states */ + LagrangeElements(); + + CalcTimeConstraintsForElems(); +} + + +inline proc LagrangeNodal() { + CalcForceForNodes(); + + CalcAccelerationForNodes(); + + ApplyAccelerationBoundaryConditionsForNodes(); + + CalcVelocityForNodes(deltatime, u_cut); + + CalcPositionForNodes(deltatime); +} + + +inline proc LagrangeElements() { + CalcLagrangeElements(); + + /* Calculate Q. (Monotonic q option requires communication) */ + CalcQForElems(); + + ApplyMaterialPropertiesForElems(); + + UpdateVolumesForElems(); +} + + +inline proc CalcTimeConstraintsForElems() { + /* evaluate time constraint */ + CalcCourantConstraintForElems(); + + /* check hydro constraint */ + CalcHydroConstraintForElems(); +} + + +inline proc computeDTF(indx) { + const myvdov = vdov[indx]; + + if myvdov == 0.0 then + return max(real); + + const myarealg = arealg[indx]; + var dtf = ss[indx]**2; + if myvdov < 0.0 then + dtf += qqc2 * myarealg**2 * myvdov**2; + dtf = sqrt(dtf); + dtf = myarealg / dtf; + + return dtf; +} + + +proc CalcCourantConstraintForElems() { + const val = min reduce [indx in MatElems] computeDTF(indx); + + if (val != max(real)) then + dtcourant = val; +} + + +inline proc calcDtHydroTmp(indx) { + const myvdov = vdov[indx]; + if (myvdov == 0.0) then + return max(real); + else + return dvovmax / (abs(myvdov)+1.0e-20); +} + + +proc CalcHydroConstraintForElems() { + const val = min reduce [indx in MatElems] calcDtHydroTmp(indx); + + if (val != max(real)) then + dthydro = val; +} + + +/* calculate nodal forces, accelerations, velocities, positions, with + * applied boundary conditions and slide surface considerations */ + +proc CalcForceForNodes() { + //zero out all forces + forall x in fx do x.write(0); + forall y in fy do y.write(0); + forall z in fz do z.write(0); + + /* Calcforce calls partial, force, hourq */ + CalcVolumeForceForElems(); + + /* Calculate Nodal Forces at domain boundaries */ + // this was commented out in C++ code, so left out here +} + +proc CalcVolumeForceForElems() { + var sigxx, sigyy, sigzz, determ: [Elems] real; + + /* Sum contributions to total stress tensor */ + InitStressTermsForElems(p, q, sigxx, sigyy, sigzz); + + /* call elemlib stress integration loop to produce nodal forces from + material stresses. */ + IntegrateStressForElems(sigxx, sigyy, sigzz, determ); + + /* check for negative element volume */ + forall e in Elems { + if determ[e] <= 0.0 then + halt("can't have negative volume (determ[", e, "]=", determ[e], ")"); + } + + CalcHourglassControlForElems(determ); +} + + +proc IntegrateStressForElems(sigxx, sigyy, sigzz, determ) { + forall k in Elems { + var b_x, b_y, b_z: 8*real; + var x_local, y_local, z_local: 8*real; + localizeNeighborNodes(k, x, x_local, y, y_local, z, z_local); + + var fx_local, fy_local, fz_local: 8*real; + + local { + /* Volume calculation involves extra work for numerical consistency. */ + CalcElemShapeFunctionDerivatives(x_local, y_local, z_local, + b_x, b_y, b_z, determ[k]); + + CalcElemNodeNormals(b_x, b_y, b_z, x_local, y_local, z_local); + + SumElemStressesToNodeForces(b_x, b_y, b_z, sigxx[k], sigyy[k], sigzz[k], + fx_local, fy_local, fz_local); + } + + for (noi, t) in elemToNodesTuple(k) { + fx[noi].add(fx_local[t]); + fy[noi].add(fy_local[t]); + fz[noi].add(fz_local[t]); + } + } +} + + +proc CalcHourglassControlForElems(determ) { + var dvdx, dvdy, dvdz, x8n, y8n, z8n: [Elems] 8*real; + + forall eli in Elems { + /* Collect domain nodes to elem nodes */ + var x1, y1, z1: 8*real; + localizeNeighborNodes(eli, x, x1, y, y1, z, z1); + var pfx, pfy, pfz: 8*real; + + local { + /* load into temporary storage for FB Hour Glass control */ + (dvdx[eli], dvdy[eli], dvdz[eli]) = CalcElemVolumeDerivative(x1, y1, z1); + } + + x8n[eli] = x1; + y8n[eli] = y1; + z8n[eli] = z1; + + determ[eli] = volo[eli] * v[eli]; + } + + /* Do a check for negative volumes */ + forall e in Elems { + if v[e] <= 0.0 then + halt("can't have negative (or zero) volume. (in Hourglass, v[", e, "]=", v[e], ")"); + } + + if hgcoef > 0.0 { + CalcFBHourglassForceForElems(determ, x8n, y8n, z8n, dvdx, dvdy, dvdz); + } +} + + +const gammaCoef: 4*(8*real) = // WAS: [1..4, 1..8] real = + (( 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0), + ( 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0), + ( 1.0, -1.0, 1.0, -1.0, 1.0, -1.0, 1.0, -1.0), + (-1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0)); + +/* Calculates the Flanagan-Belytschko anti-hourglass force. */ +proc CalcFBHourglassForceForElems(determ, x8n, y8n, z8n, dvdx, dvdy, dvdz) { + + /* compute the hourglass modes */ + forall eli in Elems { + var hourgam: 8*(4*real); + const volinv = 1.0 / determ[eli]; + var ss1, mass1, volume13: real; + var hgfx, hgfy, hgfz: 8*real; + var coefficient: real; + + var xd1, yd1, zd1: 8*real; + localizeNeighborNodes(eli, xd, xd1, yd, yd1, zd, zd1); + + /* TODO: Can we enable this local block? */ + // local { + for param i in 1..4 { + var hourmodx, hourmody, hourmodz: real; + // reduction + for param j in 1..8 { + hourmodx += x8n[eli][j] * gammaCoef[i][j]; + hourmody += y8n[eli][j] * gammaCoef[i][j]; + hourmodz += z8n[eli][j] * gammaCoef[i][j]; + } + + for param j in 1..8 { + hourgam[j][i] = gammaCoef[i][j] - volinv * + (dvdx[eli][j] * hourmodx + + dvdy[eli][j] * hourmody + + dvdz[eli][j] * hourmodz); + } + } + + /* compute forces */ + /* store forces into h arrays (force arrays) */ + ss1 = ss[eli]; + mass1 = elemMass[eli]; + volume13 = cbrt(determ[eli]); + + coefficient = - hgcoef * 0.01 * ss1 * mass1 / volume13; + + CalcElemFBHourglassForce(xd1, yd1, zd1, hourgam, coefficient, + hgfx, hgfy, hgfz); + // } // end local + + for (noi,i) in elemToNodesTuple(eli) { + fx[noi].add(hgfx[i]); + fy[noi].add(hgfy[i]); + fz[noi].add(hgfz[i]); + } + } +} + + +proc CalcAccelerationForNodes() { + forall noi in Nodes do local { + xdd[noi] = fx[noi].read() / nodalMass[noi]; + ydd[noi] = fy[noi].read() / nodalMass[noi]; + zdd[noi] = fz[noi].read() / nodalMass[noi]; + } +} + + +proc ApplyAccelerationBoundaryConditionsForNodes() { + // TODO: Shouldn't we be able to write these as follows? + // + // xdd[XSym] = 0.0; + // ydd[YSym] = 0.0; + // zdd[ZSym] = 0.0; + + forall x in XSym do xdd[x] = 0.0; + forall y in YSym do ydd[y] = 0.0; + forall z in ZSym do zdd[z] = 0.0; +} + + +proc CalcVelocityForNodes(dt: real, u_cut: real) { + forall i in Nodes do local { + var xdtmp = xd[i] + xdd[i] * dt, + ydtmp = yd[i] + ydd[i] * dt, + zdtmp = zd[i] + zdd[i] * dt; + if abs(xdtmp) < u_cut then xdtmp = 0.0; + if abs(ydtmp) < u_cut then ydtmp = 0.0; + if abs(zdtmp) < u_cut then zdtmp = 0.0; + xd[i] = xdtmp; + yd[i] = ydtmp; + zd[i] = zdtmp; + } +} + + +proc CalcPositionForNodes(dt: real) { + forall ijk in Nodes { + x[ijk] += xd[ijk] * dt; + y[ijk] += yd[ijk] * dt; + z[ijk] += zd[ijk] * dt; + } +} + +// sungeun: Temporary array reused throughout +proc CalcLagrangeElements() { + var dxx, dyy, dzz: [Elems] real; + + CalcKinematicsForElems(dxx, dyy, dzz, deltatime); + + // element loop to do some stuff not included in the elemlib function. + forall k in Elems do local { + vdov[k] = dxx[k] + dyy[k] + dzz[k]; + var vdovthird = vdov[k] / 3.0; + dxx[k] -= vdovthird; + dyy[k] -= vdovthird; + dzz[k] -= vdovthird; + } + + // See if any volumes are negative, and take appropriate action. + forall e in Elems { + if vnew[e] <= 0.0 then + halt("can't have negative volume (vnew[", e, "]=", vnew[e], ")"); + } +} + + +proc CalcKinematicsForElems(dxx, dyy, dzz, const dt: real) { + // loop over all elements + forall k in Elems { + var b_x, b_y, b_z: 8*real, + d: 6*real, + detJ: real; + + //get nodal coordinates from global arrays and copy into local arrays + var x_local, y_local, z_local: 8*real; + localizeNeighborNodes(k, x, x_local, y, y_local, z, z_local); + + //get nodal velocities from global arrays and copy into local arrays + var xd_local, yd_local, zd_local: 8*real; + localizeNeighborNodes(k, xd, xd_local, yd, yd_local, zd, zd_local); + var dt2 = 0.5 * dt; //wish this was local, too... + + local { + //volume calculations + const volume = CalcElemVolume(x_local, y_local, z_local); + const relativeVolume = volume / volo[k]; + vnew[k] = relativeVolume; + delv[k] = relativeVolume - v[k]; + + //set characteristic length + arealg[k] = CalcElemCharacteristicLength(x_local, y_local, z_local, + volume); + + for param i in 1..8 { + x_local[i] -= dt2 * xd_local[i]; + y_local[i] -= dt2 * yd_local[i]; + z_local[i] -= dt2 * zd_local[i]; + } + + CalcElemShapeFunctionDerivatives(x_local, y_local, z_local, + b_x, b_y, b_z, detJ); + + CalcElemVelocityGradient(xd_local, yd_local, zd_local, b_x, b_y, b_z, + detJ, d); + + } + + // put velocity gradient quantities into their global arrays. + dxx[k] = d[1]; + dyy[k] = d[2]; + dzz[k] = d[3]; + } +} + + +// sungeun: Temporary array reused throughout +/* velocity gradient */ +var delv_xi, delv_eta, delv_zeta: [Elems] real; +/* position gradient */ +var delx_xi, delx_eta, delx_zeta: [Elems] real; + +proc CalcQForElems() { + // MONOTONIC Q option + + /* Calculate velocity gradients */ + CalcMonotonicQGradientsForElems(delv_xi, delv_eta, delv_zeta, + delx_xi, delx_eta, delx_zeta); + + /* Transfer veloctiy gradients in the first order elements */ + /* problem->commElements->Transfer(CommElements::monoQ) ; */ + CalcMonotonicQForElems(delv_xi, delv_eta, delv_zeta, + delx_xi, delx_eta, delx_zeta); + + /* Don't allow excessive artificial viscosity */ + forall e in Elems { + if q[e] > qstop then + halt("Excessive artificial viscosity! (q[", e, "]=", q[e], ")"); + } +} + + +// sungeun: Temporary array reused throughout +var vnewc: [MatElems] real; + +/* Expose all of the variables needed for material evaluation */ +proc ApplyMaterialPropertiesForElems() { + + forall i in MatElems do vnewc[i] = vnew[i]; + + if eosvmin != 0.0 then + [c in vnewc] if c < eosvmin then c = eosvmin; + + if eosvmax != 0.0 then + [c in vnewc] if c > eosvmax then c = eosvmax; + + + // old comment: The following loop should compute min/max reductions; + // currently, race-y + + forall matelm in MatElems { + var vc = v[matelm]; + if eosvmin != 0.0 && vc < eosvmin then vc = eosvmin; + if eosvmax != 0.0 && vc > eosvmax then vc = eosvmax; + if vc <= 0.0 { + writeln("Volume error (in ApplyMaterialProperiesForElems)."); + exit(1); + } + } + + EvalEOSForElems(vnewc); +} + + +proc UpdateVolumesForElems() { + forall i in Elems do local { + var tmpV = vnew[i]; + if abs(tmpV-1.0) < v_cut then tmpV = 1.0; + v[i] = tmpV; + } +} + + +proc CalcMonotonicQGradientsForElems(delv_xi, delv_eta, delv_zeta, + delx_xi, delx_eta, delx_zeta) { + forall eli in Elems { + const ptiny = 1.0e-36; + var xl, yl, zl: 8*real; + localizeNeighborNodes(eli, x, xl, y, yl, z, zl); + var xvl, yvl, zvl: 8*real; + localizeNeighborNodes(eli, xd, xvl, yd, yvl, zd, zvl); + + local { + const vol = volo[eli] * vnew[eli], + norm = 1.0 / (vol + ptiny); + var ax, ay, az, dxv, dyv, dzv: real; + + const dxj = -0.25*((xl[1]+xl[2]+xl[6]+xl[5])-(xl[4]+xl[3]+xl[7]+xl[8])), + dyj = -0.25*((yl[1]+yl[2]+yl[6]+yl[5])-(yl[4]+yl[3]+yl[7]+yl[8])), + dzj = -0.25*((zl[1]+zl[2]+zl[6]+zl[5])-(zl[4]+zl[3]+zl[7]+zl[8])), + + dxi = 0.25*((xl[2]+xl[3]+xl[7]+xl[6])-(xl[1]+xl[4]+xl[8]+xl[5])), + dyi = 0.25*((yl[2]+yl[3]+yl[7]+yl[6])-(yl[1]+yl[4]+yl[8]+yl[5])), + dzi = 0.25*((zl[2]+zl[3]+zl[7]+zl[6])-(zl[1]+zl[4]+zl[8]+zl[5])), + + dxk = 0.25*((xl[5]+xl[6]+xl[7]+xl[8])-(xl[1]+xl[2]+xl[3]+xl[4])), + dyk = 0.25*((yl[5]+yl[6]+yl[7]+yl[8])-(yl[1]+yl[2]+yl[3]+yl[4])), + dzk = 0.25*((zl[5]+zl[6]+zl[7]+zl[8])-(zl[1]+zl[2]+zl[3]+zl[4])); + + /* find delvk and delxk ( i cross j ) */ + + ax = dyi*dzj - dzi*dyj; + ay = dzi*dxj - dxi*dzj; + az = dxi*dyj - dyi*dxj; + + delx_zeta[eli] = vol / sqrt(ax*ax + ay*ay + az*az + ptiny); + + ax *= norm; + ay *= norm; + az *= norm; + + dxv = 0.25*((xvl[5]+xvl[6]+xvl[7]+xvl[8])-(xvl[1]+xvl[2]+xvl[3]+xvl[4])); + dyv = 0.25*((yvl[5]+yvl[6]+yvl[7]+yvl[8])-(yvl[1]+yvl[2]+yvl[3]+yvl[4])); + dzv = 0.25*((zvl[5]+zvl[6]+zvl[7]+zvl[8])-(zvl[1]+zvl[2]+zvl[3]+zvl[4])); + + delv_zeta[eli] = ax*dxv + ay*dyv + az*dzv; + + /* find delxi and delvi ( j cross k ) */ + + ax = dyj*dzk - dzj*dyk; + ay = dzj*dxk - dxj*dzk; + az = dxj*dyk - dyj*dxk; + + delx_xi[eli] = vol / sqrt(ax*ax + ay*ay + az*az + ptiny) ; + + ax *= norm; + ay *= norm; + az *= norm; + + dxv = 0.25*((xvl[2]+xvl[3]+xvl[7]+xvl[6])-(xvl[1]+xvl[4]+xvl[8]+xvl[5])); + dyv = 0.25*((yvl[2]+yvl[3]+yvl[7]+yvl[6])-(yvl[1]+yvl[4]+yvl[8]+yvl[5])); + dzv = 0.25*((zvl[2]+zvl[3]+zvl[7]+zvl[6])-(zvl[1]+zvl[4]+zvl[8]+zvl[5])); + + delv_xi[eli] = ax*dxv + ay*dyv + az*dzv ; + + /* find delxj and delvj ( k cross i ) */ + + ax = dyk*dzi - dzk*dyi; + ay = dzk*dxi - dxk*dzi; + az = dxk*dyi - dyk*dxi; + + delx_eta[eli] = vol / sqrt(ax*ax + ay*ay + az*az + ptiny) ; + + ax *= norm; + ay *= norm; + az *= norm; + + dxv= -0.25*((xvl[1]+xvl[2]+xvl[6]+xvl[5])-(xvl[4]+xvl[3]+xvl[7]+xvl[8])); + dyv= -0.25*((yvl[1]+yvl[2]+yvl[6]+yvl[5])-(yvl[4]+yvl[3]+yvl[7]+yvl[8])); + dzv= -0.25*((zvl[1]+zvl[2]+zvl[6]+zvl[5])-(zvl[4]+zvl[3]+zvl[7]+zvl[8])); + + delv_eta[eli] = ax*dxv + ay*dyv + az*dzv ; + } /* local */ + } /* forall eli */ +} + + +proc CalcMonotonicQForElems(delv_xi, delv_eta, delv_zeta, + delx_xi, delx_eta, delx_zeta) { + //got rid of call through to "CalcMonotonicQRegionForElems" + + forall i in MatElems { + const ptiny = 1.0e-36; + const bcMask = elemBC[i]; + var norm, delvm, delvp: real; + + /* phixi */ + norm = 1.0 / (delv_xi[i] + ptiny); + + select bcMask & XI_M { + when 0 do delvm = delv_xi[lxim(i)]; + when XI_M_SYMM do delvm = delv_xi[i]; + when XI_M_FREE do delvm = 0.0; + } + select bcMask & XI_P { + when 0 do delvp = delv_xi[lxip(i)]; + when XI_P_SYMM do delvp = delv_xi[i]; + when XI_P_FREE do delvp = 0.0; + } + + delvm *= norm; + delvp *= norm; + + var phixi = 0.5 * (delvm + delvp); + + delvm *= monoq_limiter_mult; + delvp *= monoq_limiter_mult; + + if delvm < phixi then phixi = delvm; + if delvp < phixi then phixi = delvp; + if phixi < 0 then phixi = 0.0; + if phixi > monoq_max_slope then phixi = monoq_max_slope; + + /* phieta */ + norm = 1.0 / (delv_eta[i] + ptiny); + + select bcMask & ETA_M { + when 0 do delvm = delv_eta[letam[i]]; + when ETA_M_SYMM do delvm = delv_eta[i]; + when ETA_M_FREE do delvm = 0.0; + } + select bcMask & ETA_P { + when 0 do delvp = delv_eta[letap[i]]; + when ETA_P_SYMM do delvp = delv_eta[i]; + when ETA_P_FREE do delvp = 0.0; + } + + delvm = delvm * norm; + delvp = delvp * norm; + + var phieta = 0.5 * (delvm + delvp); + + delvm *= monoq_limiter_mult; + delvp *= monoq_limiter_mult; + + if delvm < phieta then phieta = delvm; + if delvp < phieta then phieta = delvp; + if phieta < 0.0 then phieta = 0.0; + if phieta > monoq_max_slope then phieta = monoq_max_slope; + + /* phizeta */ + norm = 1.0 / (delv_zeta[i] + ptiny); + + select bcMask & ZETA_M { + when 0 do delvm = delv_zeta[lzetam[i]]; + when ZETA_M_SYMM do delvm = delv_zeta[i]; + when ZETA_M_FREE do delvm = 0.0; + } + select bcMask & ZETA_P { + when 0 do delvp = delv_zeta[lzetap[i]]; + when ZETA_P_SYMM do delvp = delv_zeta[i]; + when ZETA_P_FREE do delvp = 0.0; + } + + delvm = delvm * norm; + delvp = delvp * norm; + + var phizeta = 0.5 * (delvm + delvp); + + delvm *= monoq_limiter_mult; + delvp *= monoq_limiter_mult; + + if delvm < phizeta then phizeta = delvm; + if delvp < phizeta then phizeta = delvp; + if phizeta < 0.0 then phizeta = 0.0; + if phizeta > monoq_max_slope then phizeta = monoq_max_slope; + + /* Remove length scale */ + var qlin, qquad: real; + if vdov[i] > 0.0 { + qlin = 0.0; + qquad = 0.0; + } else { + var delvxxi = delv_xi[i] * delx_xi[i], + delvxeta = delv_eta[i] * delx_eta[i], + delvxzeta = delv_zeta[i] * delx_zeta[i]; + + if delvxxi > 0.0 then delvxxi = 0.0; + if delvxeta > 0.0 then delvxeta = 0.0; + if delvxzeta > 0.0 then delvxzeta = 0.0; + + const rho = elemMass[i] / (volo[i] * vnew[i]); + + qlin = -qlc_monoq * rho * + ( delvxxi * (1.0 - phixi) + + delvxeta * (1.0 - phieta) + + delvxzeta * (1.0 - phizeta)); + + qquad = qqc_monoq * rho * + ( delvxxi**2 * (1.0 - phixi**2) + + delvxeta**2 * (1.0 - phieta**2) + + delvxzeta**2 * (1.0 - phizeta**2)); + } + qq[i] = qquad; + ql[i] = qlin; + + } +} + + +proc EvalEOSForElems(vnewc) { + const rho0 = refdens; + + var e_old, delvc, p_old, q_old, compression, compHalfStep, + qq_old, ql_old, work, p_new, e_new, q_new, bvc, pbvc: [Elems] real; + + /* compress data, minimal set */ + forall i in MatElems { + e_old[i] = e[i]; + delvc[i] = delv[i]; + p_old[i] = p[i]; + q_old[i] = q[i]; + qq_old[i] = qq[i]; + ql_old[i] = ql[i]; + } + + // + // TODO: Uncomment local once sparse domain is distributed + // + forall i in Elems /* do local */ { + compression[i] = 1.0 / vnewc[i] - 1.0; + const vchalf = vnewc[i] - delvc[i] * 0.5; + compHalfStep[i] = 1.0 / vchalf - 1.0; + } + + /* Check for v > eosvmax or v < eosvmin */ + // (note: I think this was already checked for in calling function!) + if eosvmin != 0.0 { + forall i in Elems { + if vnewc[i] <= eosvmin then compHalfStep[i] = compression[i]; + } + } + if eosvmax != 0.0 { + forall i in Elems { + if vnewc[i] >= eosvmax { + p_old[i] = 0.0; + compression[i] = 0.0; + compHalfStep[i] = 0.0; + } + } + } + + CalcEnergyForElems(p_new, e_new, q_new, bvc, pbvc, + p_old, e_old, q_old, compression, compHalfStep, + vnewc, work, delvc, qq_old, ql_old); + + forall i in MatElems { + p[i] = p_new[i]; + e[i] = e_new[i]; + q[i] = q_new[i]; + } + + CalcSoundSpeedForElems(vnewc, rho0, e_new, p_new, pbvc, bvc); +} + + +proc CalcEnergyForElems(p_new, e_new, q_new, bvc, pbvc, + p_old, e_old, q_old, compression, compHalfStep, + vnewc, work, delvc, qq_old, ql_old) { + // TODO: might need to move these consts into foralls or global + // Otherwise, they live on Locale0 and everyone else has to do + // remote reads. OR: Check if they're remote value forwarded. + const rho0 = refdens; + const sixth = 1.0 / 6.0; + + var pHalfStep: [MatElems] real; + + forall i in Elems { + e_new[i] = e_old[i] - 0.5 * delvc[i] * (p_old[i] + q_old[i]) + + 0.5 * work[i]; + if e_new[i] < emin then e_new[i] = emin; + } + + CalcPressureForElems(pHalfStep, bvc, pbvc, e_new, compHalfStep, + vnewc, pmin, p_cut, eosvmax); + + forall i in Elems { + const vhalf = 1.0 / (1.0 + compHalfStep[i]); + + if delvc[i] > 0.0 { + q_new[i] = 0.0; + } else { + var ssc = (pbvc[i] * e_new[i] + vhalf**2 * bvc[i] * pHalfStep[i]) / rho0; + if ssc <= 0.0 then ssc = 0.333333e-36; + else ssc = sqrt(ssc); + q_new[i] = ssc * ql_old[i] + qq_old[i]; + } + + e_new[i] += 0.5 * delvc[i] + * (3.0*(p_old[i] + q_old[i]) - 4.0*(pHalfStep[i] + q_new[i])); + } + forall i in Elems { + e_new[i] += 0.5 * work[i]; + if abs(e_new[i] < e_cut) then e_new[i] = 0.0; + if e_new[i] < emin then e_new[i] = emin; + } + + CalcPressureForElems(p_new, bvc, pbvc, e_new, compression, vnewc, pmin, + p_cut, eosvmax); + + forall i in Elems { + var q_tilde:real; + + if delvc[i] > 0.0 { + q_tilde = 0.0; + } else { + var ssc = (pbvc[i] * e_new[i] + vnewc[i]**2 * bvc[i] * p_new[i] ) / rho0; + if ssc <= 0.0 then ssc = 0.333333e-36; + else ssc = sqrt(ssc); + q_tilde = ssc * ql_old[i] + qq_old[i]; + } + + e_new[i] -= (7.0*(p_old[i] + q_old[i]) + - 8.0*(pHalfStep[i] + q_new[i]) + + (p_new[i] + q_tilde)) * delvc[i] * sixth; + if abs(e_new[i]) < e_cut then e_new[i] = 0.0; + if e_new[i] < emin then e_new[i] = emin; + } + + CalcPressureForElems(p_new, bvc, pbvc, e_new, compression, vnewc, pmin, + p_cut, eosvmax); + + + // + // TODO: Uncomment local once sparse domain is distributed + // + forall i in Elems /* do local */ { + if delvc[i] <= 0.0 { + var ssc = (pbvc[i] * e_new[i] + vnewc[i]**2 * bvc[i] * p_new[i] ) / rho0; + if ssc <= 0.0 then ssc = 0.333333e-36; + else ssc = sqrt(ssc); + q_new[i] = ssc * ql_old[i] + qq_old[i]; + if abs(q_new[i]) < q_cut then q_new[i] = 0.0; + } + } +} + + +proc CalcSoundSpeedForElems(vnewc, rho0:real, enewc, pnewc, pbvc, bvc) { + // TODO: Open question: If we had multiple materials, should (a) ss + // be zeroed and accumulated into, and (b) updated atomically to + // avoid losing updates? (Jeff will go back and think on this) + // + forall i in MatElems { + var ssTmp = (pbvc[i] * enewc[i] + vnewc[i]**2 * bvc[i] * pnewc[i]) / rho0; + if ssTmp <= 1.111111e-36 then ssTmp = 1.111111e-36; + ss[i] = sqrt(ssTmp); + } +} + + +iter elemToNodes(elem) { + for param i in 1..nodesPerElem do + yield elemToNode[elem][i]; +} + +iter elemToNodesTuple(e) { + for i in 1..nodesPerElem do + yield (elemToNode[e][i], i); +} + + +proc deprint(title:string, x:[?D] real, y:[D]real, z:[D]real) { + writeln(title); + for i in D { + writeln(format("%3d", i), ": ", + format("%3.4e", x[i]), " ", + format("%3.4e", y[i]), " ", + format("%3.4e", z[i])); + } +} + + diff --git a/samples/Chapel/nbody.chpl b/samples/Chapel/nbody.chpl new file mode 100644 index 00000000..f46e4f68 --- /dev/null +++ b/samples/Chapel/nbody.chpl @@ -0,0 +1,147 @@ +/* The Computer Language Benchmarks Game + http://benchmarksgame.alioth.debian.org/ + + contributed by Albert Sidelnik + modified by Brad Chamberlain +*/ + + +// +// The number of timesteps to simulate; may be set via the command-line +// +config const n = 10000; + +// +// Constants representing pi, the solar mass, and the number of days per year +// +const pi = 3.141592653589793, + solarMass = 4 * pi**2, + daysPerYear = 365.24; + +// +// a record representing one of the bodies in the solar system +// +record body { + var pos: 3*real; + var v: 3*real; + var mass: real; // does not change after it is set up +} + +// +// the array of bodies that we'll be simulating +// +var bodies = [/* sun */ + new body(mass = solarMass), + + /* jupiter */ + new body(pos = ( 4.84143144246472090e+00, + -1.16032004402742839e+00, + -1.03622044471123109e-01), + v = ( 1.66007664274403694e-03 * daysPerYear, + 7.69901118419740425e-03 * daysPerYear, + -6.90460016972063023e-05 * daysPerYear), + mass = 9.54791938424326609e-04 * solarMass), + + /* saturn */ + new body(pos = ( 8.34336671824457987e+00, + 4.12479856412430479e+00, + -4.03523417114321381e-01), + v = (-2.76742510726862411e-03 * daysPerYear, + 4.99852801234917238e-03 * daysPerYear, + 2.30417297573763929e-05 * daysPerYear), + mass = 2.85885980666130812e-04 * solarMass), + + /* uranus */ + new body(pos = ( 1.28943695621391310e+01, + -1.51111514016986312e+01, + -2.23307578892655734e-01), + v = ( 2.96460137564761618e-03 * daysPerYear, + 2.37847173959480950e-03 * daysPerYear, + -2.96589568540237556e-05 * daysPerYear), + mass = 4.36624404335156298e-05 * solarMass), + + /* neptune */ + new body(pos = ( 1.53796971148509165e+01, + -2.59193146099879641e+01, + 1.79258772950371181e-01), + v = ( 2.68067772490389322e-03 * daysPerYear, + 1.62824170038242295e-03 * daysPerYear, + -9.51592254519715870e-05 * daysPerYear), + mass = 5.15138902046611451e-05 * solarMass) + ]; + +// +// the number of bodies to be simulated +// +const numbodies = bodies.numElements; + +// +// The computation involves initializing the sun's velocity, +// writing the initial energy, advancing the system through 'n' +// timesteps, and writing the final energy. +// +proc main() { + initSun(); + + writef("%.9r\n", energy()); + for 1..n do + advance(0.01); + writef("%.9r\n", energy()); +} + +// +// compute the sun's initial velocity +// +proc initSun() { + const p = + reduce (for b in bodies do (b.v * b.mass)); + bodies[1].v = -p / solarMass; +} + +// +// advance the positions and velocities of all the bodies +// +proc advance(dt) { + for i in 1..numbodies { + for j in i+1..numbodies { + updateVelocities(bodies[i], bodies[j]); + + inline proc updateVelocities(ref b1, ref b2) { + const dpos = b1.pos - b2.pos, + mag = dt / sqrt(sumOfSquares(dpos))**3; + + b1.v -= dpos * b2.mass * mag; + b2.v += dpos * b1.mass * mag; + } + } + } + + for b in bodies do + b.pos += dt * b.v; +} + +// +// compute the energy of the bodies +// +proc energy() { + var e = 0.0; + + for i in 1..numbodies { + const b1 = bodies[i]; + + e += 0.5 * b1.mass * sumOfSquares(b1.v); + + for j in i+1..numbodies { + const b2 = bodies[j]; + + e -= (b1.mass * b2.mass) / sqrt(sumOfSquares(b1.pos - b2.pos)); + } + } + + return e; +} + +// +// a helper routine to compute the sum of squares of a 3-tuple's components +// +inline proc sumOfSquares(x) + return x(1)**2 + x(2)**2 + x(3)**2; diff --git a/samples/Chapel/quicksort.chpl b/samples/Chapel/quicksort.chpl new file mode 100644 index 00000000..33d9722c --- /dev/null +++ b/samples/Chapel/quicksort.chpl @@ -0,0 +1,145 @@ +// +// An example of a parallel quick sort implementation that uses +// "cobegin" to make each recursive call in parallel and "serial" to +// limit the number of threads. +// + +use Random, Time; // for random number generation and the Timer class + +var timer: Timer; // to time the sort + +config var n: int = 2**15; // the size of the array to be sorted +config var thresh: int = 1; // the recursive depth to serialize +config var verbose: int = 0; // print out this many elements in array +config var timing: bool = true; // set timing to false to disable timer + +var A: [1..n] real; // array of real numbers + +// +// initialize array with random numbers +// +fillRandom(A); + +// +// print out front of array if verbose flag is set +// +if verbose > 0 then + writeln("A[1..", verbose, "] = ", A[1..verbose]); + +// +// start timer, call parallel quick sort routine, stop timer +// +if timing then timer.start(); +pqsort(A, thresh); +if timing then timer.stop(); + +// +// report sort time +// +if timing then writeln("sorted in ", timer.elapsed(), " seconds"); + +// +// print out front of array if verbose flag is set +// values should now be in sorted order +// +if verbose > 0 then + writeln("A[1..", verbose, "] = ", A[1..verbose]); + +// +// verify that array is sorted or halt +// +for i in 2..n do + if A(i) < A(i-1) then + halt("A(", i-1, ") == ", A(i-1), " > A(", i, ") == ", A(i)); + +writeln("verification success"); + +// +// pqsort -- parallel quick sort +// +// arr: generic 1D array of values (real, int, ...) +// thresh: number of recursive calls to make before serializing +// low: lower bound of array to start sort at, defaults to whole array +// high: upper bound of array to stop sort at, defaults to whole array +// +proc pqsort(arr: [], + thresh: int, + low: int = arr.domain.low, + high: int = arr.domain.high) where arr.rank == 1 { + + // + // base case: arr[low..high] is small enough to bubble sort + // + if high - low < 8 { + bubbleSort(arr, low, high); + return; + } + + // + // determine pivot and partition arr[low..high] + // + const pivotVal = findPivot(); + const pivotLoc = partition(pivotVal); + + // + // make recursive calls to parallel quick sort each unsorted half of + // the array; if thresh is 0 or less, start executing conquer tasks + // serially + // + serial thresh <= 0 do cobegin { + pqsort(arr, thresh-1, low, pivotLoc-1); + pqsort(arr, thresh-1, pivotLoc+1, high); + } + + // + // findPivot -- helper routine to find pivot value using simple + // median-of-3 method, returns pivot value + // + proc findPivot() { + const mid = low + (high-low+1) / 2; + + if arr(mid) < arr(low) then arr(mid) <=> arr(low); + if arr(high) < arr(low) then arr(high) <=> arr(low); + if arr(high) < arr(mid) then arr(high) <=> arr(mid); + + const pivotVal = arr(mid); + arr(mid) = arr(high-1); + arr(high-1) = pivotVal; + + return pivotVal; + } + + // + // partition -- helper routine to partition array such that all + // values less than pivot are to its left and all + // values greater than pivot are to its right, returns + // pivot location + // + proc partition(pivotVal) { + var ilo = low, ihi = high-1; + while (ilo < ihi) { + do { ilo += 1; } while arr(ilo) < pivotVal; + do { ihi -= 1; } while pivotVal < arr(ihi); + if (ilo < ihi) { + arr(ilo) <=> arr(ihi); + } + } + arr(high-1) = arr(ilo); + arr(ilo) = pivotVal; + return ilo; + } +} + +// +// bubbleSort -- bubble sort for base case of quick sort +// +// arr: generic 1D array of values (real, int, ...) +// low: lower bound of array to start sort at +// high: upper bound of array to stop sort at +// +proc bubbleSort(arr: [], low: int, high: int) where arr.rank == 1 { + for i in low..high do + for j in low..high-1 do + if arr(j) > arr(j+1) then + arr(j) <=> arr(j+1); +} diff --git a/samples/Clojure/index.cljs.hl b/samples/Clojure/index.cljs.hl new file mode 100644 index 00000000..043df92b --- /dev/null +++ b/samples/Clojure/index.cljs.hl @@ -0,0 +1,146 @@ +;; Copyright (c) Alan Dipert and Micha Niskin. All rights reserved. +;; The use and distribution terms for this software are covered by the +;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) +;; which can be found in the file epl-v10.html at the root of this distribution. +;; By using this software in any fashion, you are agreeing to be bound by +;; the terms of this license. +;; You must not remove this notice, or any other, from this software. + +(page "index.html" + (:refer-clojure :exclude [nth]) + (:require + [tailrecursion.hoplon.reload :refer [reload-all]] + [tailrecursion.hoplon.util :refer [nth name pluralize]] + [tailrecursion.hoplon.storage-atom :refer [local-storage]])) + +;; utility functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(declare route state editing) + +(reload-all) + +(def mapvi (comp vec map-indexed)) + +(defn dissocv [v i] + (let [z (- (dec (count v)) i)] + (cond (neg? z) v + (zero? z) (pop v) + (pos? z) (into (subvec v 0 i) (subvec v (inc i)))))) + +(defn decorate [todo route editing i] + (let [{done? :completed text :text} todo] + (-> todo (assoc :editing (= editing i) + :visible (and (not (empty? text)) + (or (= "#/" route) + (and (= "#/active" route) (not done?)) + (and (= "#/completed" route) done?))))))) + +;; persisted state cell (AKA: stem cell) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(def state (-> (cell []) (local-storage ::store))) + +;; local state cells ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defc loaded? false) +(defc editing nil) +(def route (route-cell "#/")) + +;; formula cells (computed state) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defc= completed (filter :completed state)) +(defc= active (remove :completed state)) +(defc= plural-item (pluralize "item" (count active))) +(defc= todos (mapvi #(list %1 (decorate %2 route editing %1)) state)) + +;; state transition functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defn todo [t] {:completed false :text t}) +(defn destroy! [i] (swap! state dissocv i)) +(defn done! [i v] (swap! state assoc-in [i :completed] v)) +(defn clear-done! [& _] (swap! state #(vec (remove :completed %)))) +(defn new! [t] (when (not (empty? t)) (swap! state conj (todo t)))) +(defn all-done! [v] (swap! state #(mapv (fn [x] (assoc x :completed v)) %))) +(defn editing! [i v] (reset! editing (if v i nil))) +(defn text! [i v] (if (empty? v) (destroy! i) (swap! state assoc-in [i :text] v))) + +;; page ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(html :lang "en" + (head + (meta :charset "utf-8") + (meta :http-equiv "X-UA-Compatible" :content "IE=edge,chrome=1") + (link :rel "stylesheet" :href "base.css") + (title "Hoplon • TodoMVC")) + (body + (noscript + (div :id "noscript" + (p "JavaScript is required to view this page."))) + (div + (section :id "todoapp" + (header :id "header" + (h1 "todos") + (form :on-submit #(do (new! (val-id :new-todo)) + (do! (by-id :new-todo) :value "")) + (input + :id "new-todo" + :type "text" + :autofocus true + :placeholder "What needs to be done?" + :on-blur #(do! (by-id :new-todo) :value "")))) + (section + :id "main" + :do-toggle (cell= (not (and (empty? active) (empty? completed)))) + (input + :id "toggle-all" + :type "checkbox" + :do-attr (cell= {:checked (empty? active)}) + :on-click #(all-done! (val-id :toggle-all))) + (label :for "toggle-all" + "Mark all as complete") + (ul :id "todo-list" + (loop-tpl + :reverse true + :bind-ids [done# edit#] + :bindings [[i {edit? :editing done? :completed todo-text :text show? :visible}] todos] + (li + :do-class (cell= {:completed done? :editing edit?}) + :do-toggle show? + (div :class "view" :on-dblclick #(editing! @i true) + (input + :id done# + :type "checkbox" + :class "toggle" + :do-attr (cell= {:checked done?}) + :on-click #(done! @i (val-id done#))) + (label (text "~{todo-text}")) + (button + :type "submit" + :class "destroy" + :on-click #(destroy! @i))) + (form :on-submit #(editing! @i false) + (input + :id edit# + :type "text" + :class "edit" + :do-value todo-text + :do-focus edit? + :on-blur #(when @edit? (editing! @i false)) + :on-change #(when @edit? (text! @i (val-id edit#))))))))) + (footer + :id "footer" + :do-toggle (cell= (not (and (empty? active) (empty? completed)))) + (span :id "todo-count" + (strong (text "~(count active) ")) + (span (text "~{plural-item} left"))) + (ul :id "filters" + (li (a :href "#/" :do-class (cell= {:selected (= "#/" route)}) "All")) + (li (a :href "#/active" :do-class (cell= {:selected (= "#/active" route)}) "Active")) + (li (a :href "#/completed" :do-class (cell= {:selected (= "#/completed" route)}) "Completed"))) + (button + :type "submit" + :id "clear-completed" + :on-click #(clear-done!) + (text "Clear completed (~(count completed))")))) + (footer :id "info" + (p "Double-click to edit a todo") + (p "Part of " (a :href "http://github.com/tailrecursion/hoplon-demos/" "hoplon-demos")))))) diff --git a/samples/ColdFusion CFC/exampleScript.cfc b/samples/ColdFusion CFC/exampleScript.cfc new file mode 100644 index 00000000..33ec70ef --- /dev/null +++ b/samples/ColdFusion CFC/exampleScript.cfc @@ -0,0 +1,239 @@ +/** +******************************************************************************** +ContentBox - A Modular Content Platform +Copyright 2012 by Luis Majano and Ortus Solutions, Corp +www.gocontentbox.org | www.luismajano.com | www.ortussolutions.com +******************************************************************************** +Apache License, Version 2.0 + +Copyright Since [2012] [Luis Majano and Ortus Solutions,Corp] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +******************************************************************************** +* A generic content service for content objects +*/ +component extends="coldbox.system.orm.hibernate.VirtualEntityService" singleton{ + + // DI + property name="settingService" inject="id:settingService@cb"; + property name="cacheBox" inject="cachebox"; + property name="log" inject="logbox:logger:{this}"; + property name="customFieldService" inject="customFieldService@cb"; + property name="categoryService" inject="categoryService@cb"; + property name="commentService" inject="commentService@cb"; + property name="contentVersionService" inject="contentVersionService@cb"; + property name="authorService" inject="authorService@cb"; + property name="populator" inject="wirebox:populator"; + property name="systemUtil" inject="SystemUtil@cb"; + + /* + * Constructor + * @entityName.hint The content entity name to bind this service to. + */ + ContentService function init(entityName="cbContent"){ + // init it + super.init(entityName=arguments.entityName, useQueryCaching=true); + + // Test scope coloring in pygments + this.colorTestVar = "Just for testing pygments!"; + cookie.colorTestVar = ""; + client.colorTestVar = "" + session.colorTestVar = ""; + application.colorTestVar = ""; + + return this; + } + + /** + * Clear all content caches + * @async.hint Run it asynchronously or not, defaults to false + */ + function clearAllCaches(boolean async=false){ + var settings = settingService.getAllSettings(asStruct=true); + // Get appropriate cache provider + var cache = cacheBox.getCache( settings.cb_content_cacheName ); + cache.clearByKeySnippet(keySnippet="cb-content",async=arguments.async); + return this; + } + + /** + * Clear all page wrapper caches + * @async.hint Run it asynchronously or not, defaults to false + */ + function clearAllPageWrapperCaches(boolean async=false){ + var settings = settingService.getAllSettings(asStruct=true); + // Get appropriate cache provider + var cache = cacheBox.getCache( settings.cb_content_cacheName ); + cache.clearByKeySnippet(keySnippet="cb-content-pagewrapper",async=arguments.async); + return this; + } + + /** + * Clear all page wrapper caches + * @slug.hint The slug partial to clean on + * @async.hint Run it asynchronously or not, defaults to false + */ + function clearPageWrapperCaches(required any slug, boolean async=false){ + var settings = settingService.getAllSettings(asStruct=true); + // Get appropriate cache provider + var cache = cacheBox.getCache( settings.cb_content_cacheName ); + cache.clearByKeySnippet(keySnippet="cb-content-pagewrapper-#arguments.slug#",async=arguments.async); + return this; + } + + /** + * Clear a page wrapper cache + * @slug.hint The slug to clean + * @async.hint Run it asynchronously or not, defaults to false + */ + function clearPageWrapper(required any slug, boolean async=false){ + var settings = settingService.getAllSettings(asStruct=true); + // Get appropriate cache provider + var cache = cacheBox.getCache( settings.cb_content_cacheName ); + cache.clear("cb-content-pagewrapper-#arguments.slug#/"); + return this; + } + + /** + * Searches published content with cool paramters, remember published content only + * @searchTerm.hint The search term to search + * @max.hint The maximum number of records to paginate + * @offset.hint The offset in the pagination + * @asQuery.hint Return as query or array of objects, defaults to array of objects + * @sortOrder.hint The sorting of the search results, defaults to publishedDate DESC + * @isPublished.hint Search for published, non-published or both content objects [true, false, 'all'] + * @searchActiveContent.hint Search only content titles or both title and active content. Defaults to both. + */ + function searchContent( + any searchTerm="", + numeric max=0, + numeric offset=0, + boolean asQuery=false, + any sortOrder="publishedDate DESC", + any isPublished=true, + boolean searchActiveContent=true){ + + var results = {}; + var c = newCriteria(); + + // only published content + if( isBoolean( arguments.isPublished ) ){ + // Published bit + c.isEq( "isPublished", javaCast( "Boolean", arguments.isPublished ) ); + // Published eq true evaluate other params + if( arguments.isPublished ){ + c.isLt("publishedDate", now() ) + .$or( c.restrictions.isNull("expireDate"), c.restrictions.isGT("expireDate", now() ) ) + .isEq("passwordProtection",""); + } + } + + // Search Criteria + if( len( arguments.searchTerm ) ){ + // like disjunctions + c.createAlias("activeContent","ac"); + // Do we search title and active content or just title? + if( arguments.searchActiveContent ){ + c.$or( c.restrictions.like("title","%#arguments.searchTerm#%"), + c.restrictions.like("ac.content", "%#arguments.searchTerm#%") ); + } + else{ + c.like( "title", "%#arguments.searchTerm#%" ); + } + } + + // run criteria query and projections count + results.count = c.count( "contentID" ); + results.content = c.resultTransformer( c.DISTINCT_ROOT_ENTITY ) + .list(offset=arguments.offset, max=arguments.max, sortOrder=arguments.sortOrder, asQuery=arguments.asQuery); + + return results; + } + +/********************************************* PRIVATE *********************************************/ + + + /** + * Update the content hits + * @contentID.hint The content id to update + */ + private function syncUpdateHits(required contentID){ + var q = new Query(sql="UPDATE cb_content SET hits = hits + 1 WHERE contentID = #arguments.contentID#").execute(); + return this; + } + + + private function closureTest(){ + methodCall( + param1, + function( arg1, required arg2 ){ + var settings = settingService.getAllSettings(asStruct=true); + // Get appropriate cache provider + var cache = cacheBox.getCache( settings.cb_content_cacheName ); + cache.clear("cb-content-pagewrapper-#arguments.slug#/"); + return this; + }, + param1 + ); + } + + private function StructliteralTest(){ + return { + foo = bar, + brad = 'Wood', + func = function( arg1, required arg2 ){ + var settings = settingService.getAllSettings(asStruct=true); + // Get appropriate cache provider + var cache = cacheBox.getCache( settings.cb_content_cacheName ); + cache.clear("cb-content-pagewrapper-#arguments.slug#/"); + return this; + }, + array = [ + 1, + 2, + 3, + 4, + 5, + 'test', + 'testing', + 'testerton', + { + foo = true, + brad = false, + wood = null + } + ], + last = "final" + }; + } + + private function arrayliteralTest(){ + return [ + 1, + 2, + 3, + 4, + 5, + 'test', + 'testing', + 'testerton', + { + foo = true, + brad = false, + wood = null + }, + 'testy-von-testavich' + ]; + } + +} \ No newline at end of file diff --git a/samples/ColdFusion CFC/exampleTag.cfc b/samples/ColdFusion CFC/exampleTag.cfc new file mode 100644 index 00000000..ad82c571 --- /dev/null +++ b/samples/ColdFusion CFC/exampleTag.cfc @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/ColdFusion/example.cfm b/samples/ColdFusion/example.cfm new file mode 100644 index 00000000..f436c793 --- /dev/null +++ b/samples/ColdFusion/example.cfm @@ -0,0 +1,50 @@ + + ---> + +---> + + + +Date Functions + + + + + #RightNow#
+ #DateFormat(RightNow)#
+ #DateFormat(RightNow,"mm/dd/yy")#
+ #TimeFormat(RightNow)#
+ #TimeFormat(RightNow,"hh:mm tt")#
+ #IsDate(RightNow)#
+ #IsDate("January 31, 2007")#
+ #IsDate("foo")#
+ #DaysInMonth(RightNow)# +
+ + + + + #x# + #y# + #z# + + + + + + + + + + + + + + + + + ---> comment ---> \ No newline at end of file diff --git a/samples/Common Lisp/macros-advanced.cl b/samples/Common Lisp/macros-advanced.cl new file mode 100644 index 00000000..b746d769 --- /dev/null +++ b/samples/Common Lisp/macros-advanced.cl @@ -0,0 +1,82 @@ +;; @file macros-advanced.cl +;; +;; @breif Advanced macro practices - defining your own macros +;; +;; Macro definition skeleton: +;; (defmacro name (parameter*) +;; "Optional documentation string" +;; body-form*) +;; +;; Note that backquote expression is most often used in the `body-form` +;; + +; `primep` test a number for prime +(defun primep (n) + "test a number for prime" + (if (< n 2) (return-from primep)) + (do ((i 2 (1+ i)) (p t (not (zerop (mod n i))))) + ((> i (sqrt n)) p) + (when (not p) (return)))) +; `next-prime` return the next prime bigger than the specified number +(defun next-prime (n) + "return the next prime bigger than the speicified number" + (do ((i (1+ n) (1+ i))) + ((primep i) i))) +; +; The recommended procedures to writting a new macro are as follows: +; 1. Write a sample call to the macro and the code it should expand into +(do-primes (p 0 19) + (format t "~d " p)) +; Expected expanded codes +(do ((p (next-prime (- 0 1)) (next-prime p))) + ((> p 19)) + (format t "~d " p)) +; 2. Write code that generate the hardwritten expansion from the arguments in +; the sample call +(defmacro do-primes (var-and-range &rest body) + (let ((var (first var-and-range)) + (start (second var-and-range)) + (end (third var-and-range))) + `(do ((,var (next-prime (- ,start 1)) (next-prime ,var))) + ((> ,var ,end)) + ,@body))) +; 2-1. More concise implementations with the 'parameter list destructuring' and +; '&body' synonym, it also emits more friendly messages on incorrent input. +(defmacro do-primes ((var start end) &body body) + `(do ((,var (next-prime (- ,start 1)) (next-prime ,var))) + ((> ,var ,end)) + ,@body)) +; 2-2. Test the result of macro expansion with the `macroexpand-1` function +(macroexpand-1 '(do-primes (p 0 19) (format t "~d " p))) +; 3. Make sure the macro abstraction does not "leak" +(defmacro do-primes ((var start end) &body body) + (let ((end-value-name (gensym))) + `(do ((,var (next-prime (- ,start 1)) (next-prime ,var)) + (,end-value-name ,end)) + ((> ,var ,end-value-name)) + ,@body))) +; 3-1. Rules to observe to avoid common and possible leaks +; a. include any subforms in the expansion in positions that will be evaluated +; in the same order as the subforms appear in the macro call +; b. make sure subforms are evaluated only once by creating a variable in the +; expansion to hold the value of evaluating the argument form, and then +; using that variable anywhere else the value is needed in the expansion +; c. use `gensym` at macro expansion time to create variable names used in the +; expansion +; +; Appendix I. Macro-writting macros, 'with-gensyms', to guranttee that rule c +; gets observed. +; Example usage of `with-gensyms` +(defmacro do-primes-a ((var start end) &body body) + "do-primes implementation with macro-writting macro 'with-gensyms'" + (with-gensyms (end-value-name) + `(do ((,var (next-prime (- ,start 1)) (next-prime ,var)) + (,end-value-name ,end)) + ((> ,var ,end-value-name)) + ,@body))) +; Define the macro, note how comma is used to interpolate the value of the loop +; expression +(defmacro with-gensyms ((&rest names) &body body) + `(let ,(loop for n in names collect `(,n (gensym))) + ,@body) +) \ No newline at end of file diff --git a/samples/Common Lisp/motor-inferencia.cl b/samples/Common Lisp/motor-inferencia.cl new file mode 100644 index 00000000..6a2a97ea --- /dev/null +++ b/samples/Common Lisp/motor-inferencia.cl @@ -0,0 +1,475 @@ +#| +ESCUELA POLITECNICA SUPERIOR - UNIVERSIDAD AUTONOMA DE MADRID +INTELIGENCIA ARTIFICIAL + +Motor de inferencia +Basado en parte en "Paradigms of AI Programming: Case Studies +in Common Lisp", de Peter Norvig, 1992 +|# + + +;;;;;;;;;;;;;;;;;;;;; +;;;; Global variables +;;;;;;;;;;;;;;;;;;;;; + + +(defvar *hypothesis-list*) +(defvar *rule-list*) +(defvar *fact-list*) + +;;;;;;;;;;;;;;;;;;;;; +;;;; Constants +;;;;;;;;;;;;;;;;;;;;; + +(defconstant +fail+ nil "Indicates unification failure") + +(defconstant +no-bindings+ '((nil)) + "Indicates unification success, with no variables.") + +(defconstant *mundo-abierto* nil) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;; Functions for the user +;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;; Resets *fact-list* to NIL +(defun erase-facts () (setq *fact-list* nil)) + +(defun set-hypothesis-list (h) (setq *hypothesis-list* h)) + + +;; Returns a list of solutions, each one satisfying all the hypothesis contained +;; in *hypothesis-list* +(defun motor-inferencia () + (consulta *hypothesis-list*)) + + + +;;;;;;;;;;;;;;;;;;;;;;;; +;;;; Auxiliary functions +;;;;;;;;;;;;;;;;;;;;;;;; + +#|____________________________________________________________________________ +FUNCTION: CONSULTA + +COMMENTS: +CONSULTA receives a list of hypothesis (variable ), and returns +a list of binding lists (each binding list being a solution). + +EXAMPLES: +hypotheses is: +((brothers ?x ?y) (neighbours juan ?x)). + +That is, we are searching the brothers of the possible neighbors of Juan. + +The function can return in this case: + +(((?x . sergio) (?y . javier)) ((?x . julian) (?y . mario)) ((?x . julian) (?y . pedro))). +That is, the neighbors of Juan (Sergio and Julian) have 3 brothers in total(Javier, Mario, Pedro) +____________________________________________________________________________|# + +(defun consulta (hypotheses) + (if (null hypotheses) (list +no-bindings+) + (mapcan #'(lambda (b) + (mapcar #'(lambda (x) (une-bindings-con-bindings b x)) + (consulta (subst-bindings b (rest hypotheses))))) + (find-hypothesis-value (first hypotheses))))) + + + +#|____________________________________________________________________________ +FUNCTION: FIND-HYPOTHESIS-VALUE + +COMMENTS: +This function manages the query a single query (only one hypothesis) given a binding list. +It tries (in the following order) to: +- Answer the query from *fact-list* +- Answer the query from the rules in *rule-list* +- Ask the user + +The function returns a list of solutions (list of binding lists). + +EXAMPLES: +If hypothesis is (brothers ?x ?y) +and the function returns: +(((?x . sergio) (?y . javier)) ((?x . julian) (?y . maria)) ((?x . alberto) (?y . pedro))). + +Means that Sergio and Javier and brothers, Julian and Mario are brothers, and Alberto and Pedro are brothers. +____________________________________________________________________________|# + +(defun find-hypothesis-value (hypothesis) + (let (rules) + (cond + ((equality? hypothesis) + (value-from-equality hypothesis)) + ((value-from-facts hypothesis)) + ((setq good-rules (find-rules hypothesis)) + (value-from-rules hypothesis good-rules)) + (t (ask-user hypothesis))))) + + + +; une-bindings-con-bindings takes two binding lists and returns a binding list +; Assumes that b1 and b2 are not +fail+ +(defun une-bindings-con-bindings (b1 b2) + (cond + ((equal b1 +no-bindings+) b2) + ((equal b2 +no-bindings+) b1) + (T (append b1 b2)))) + + + +#|____________________________________________________________________________ +FUNCTION: VALUE-FROM-FACTS + +COMMENTS: +Returns all the solutions of obtained directly from *fact-list* + +EXAMPLES: +> (setf *fact-list* '((man luis) (man pedro)(woman mart)(man daniel)(woman laura))) + +> (value-from-facts '(man ?x)) +returns: + +(((?X . LUIS)) ((?X . PEDRO)) ((?X . DANIEL))) +____________________________________________________________________________|# + +(defun value-from-facts (hypothesis) + (mapcan #'(lambda(x) (let ((aux (unify hypothesis x))) + (when aux (list aux)))) *fact-list*)) + + + + +#|____________________________________________________________________________ +FUNCTION: FIND-RULES + +COMMENTS: +Returns the rules in *rule-list* whose THENs unify with the term given in +The variables in the rules that satisfy this requirement are renamed. + +EXAMPLES: +> (setq *rule-list* + '((R1 (pertenece ?E (?E . ?_))) + (R2 (pertenece ?E (?_ . ?Xs)) :- ((pertenece ?E ?Xs))))) + +Then: +> (FIND-RULES (PERTENECE 1 (2 5))) +returns: +((R2 (PERTENECE ?E.1 (?_ . ?XS.2)) :- ((PERTENECE ?E.1 ?XS.2)))) +That is, only the THEN of rule R2 unify with + +However, +> (FIND-RULES (PERTENECE 1 (1 6 7))) + +returns: +((R1 (PERTENECE ?E.6 (?E.6 . ?_))) + (R2 (PERTENECE ?E.7 (?_ . ?XS.8)) :- ((PERTENECE ?E.7 ?XS.8)))) +So the THEN of both rules unify with +____________________________________________________________________________|# + +(defun find-rules (hypothesis) + (mapcan #'(lambda(b) (let ((renamed-rule (rename-variables b))) + (when (in-then? hypothesis renamed-rule) + (list renamed-rule)))) *rule-list*)) + +(defun in-then? (hypothesis rule) + (unless (null (rule-then rule)) + (not (equal +fail+ (unify hypothesis (rule-then rule)))))) + + + +#|____________________________________________________________________________ +FUNCTION: VALUE-FROM-RULES + +COMMENTS: +Returns all the solutions to found using all the rules given in +the list . Note that a single rule can have multiple solutions. +____________________________________________________________________________|# +(defun value-from-rules (hypothesis rules) + (mapcan #'(lambda (r) (eval-rule hypothesis r)) rules)) + +(defun limpia-vinculos (termino bindings) + (unify termino (subst-bindings bindings termino))) + + +#|____________________________________________________________________________ +FUNCTION: EVAL-RULE + +COMMENTS: +Returns all the solutions found using the rule given as input argument. + +EXAMPLES: +> (setq *rule-list* + '((R1 (pertenece ?E (?E . ?_))) + (R2 (pertenece ?E (?_ . ?Xs)) :- ((pertenece ?E ?Xs))))) +Then: +> (EVAL-RULE + (PERTENECE 1 (1 6 7)) + (R1 (PERTENECE ?E.42 (?E.42 . ?_)))) +returns: +(((NIL))) +That is, the query (PERTENECE 1 (1 6 7)) can be proven from the given rule, and +no binding in the variables in the query is necessary (in fact, the query has no variables). +On the other hand: +> (EVAL-RULE + (PERTENECE 1 (7)) + (R2 (PERTENECE ?E.49 (?_ . ?XS.50)) :- ((PERTENECE ?E.49 ?XS.50)))) +returns: +NIL +That is, the query can not be proven from the rule R2. +____________________________________________________________________________|# + +(defun eval-rule (hypothesis rule) + (let ((bindings-then + (unify (rule-then rule) hypothesis))) + (unless (equal +fail+ bindings-then) + (if (rule-ifs rule) + (mapcar #'(lambda(b) (limpia-vinculos hypothesis (append bindings-then b))) + (consulta (subst-bindings bindings-then (rule-ifs rule)))) + (list (limpia-vinculos hypothesis bindings-then)))))) + + +(defun ask-user (hypothesis) + (let ((question hypothesis)) + (cond + ((variables-in question) +fail+) + ((not-in-fact-list? question) +fail+) + (*mundo-abierto* + (format t "~%Es cierto el hecho ~S? (T/nil)" question) + (cond + ((read) (add-fact question) +no-bindings+) + (T (add-fact (list 'NOT question)) +fail+))) + (T +fail+)))) + + +; value-from-equality: +(defun value-from-equality (hypothesis) + (let ((new-bindings (unify (second hypothesis) (third hypothesis)))) + (if (not (equal +fail+ new-bindings)) + (list new-bindings)))) + + + +#|____________________________________________________________________________ +FUNCTION: UNIFY + +COMMENTS: +Finds the most general unifier of two input expressions, taking into account the +bindings specified in the input +In case the two expressions can unify, the function returns the total bindings necessary +for that unification. Otherwise, returns +fail+ + +EXAMPLES: +> (unify '1 '1) +((NIL)) ;; which is the constant +no-bindings+ +> (unify 1 '2) +nil ;; which is the constant +fail+ +> (unify '?x 1) +((?x . 1)) +> (unify '(1 1) ?x) +((? x 1 1)) +> (unify '?_ '?x) +((NIL)) +> (unify '(p ?x 1 2) '(p ?y ?_ ?_)) +((?x . ?y)) +> (unify '(?a . ?_) '(1 2 3)) +((?a . 1)) +> (unify '(?_ ?_) '(1 2)) +((nil)) +> (unify '(?a . ?b) '(1 2 3)) +((?b 2 3) (?a . 1)) +> (unify '(?a . ?b) '(?v . ?d)) +((?b . ?d) (?a . ?v)) +> (unify '(?eval (+ 1 1)) '1) +nil +> (unify '(?eval (+ 1 1)) '2) +(nil)) +____________________________________________________________________________|# + +(defun unify (x y &optional (bindings +no-bindings+)) + "See if x and y match with given bindings. If they do, + return a binding list that would make them equal [p 303]." + (cond ((eq bindings +fail+) +fail+) + ((eql x y) bindings) + ((eval? x) (unify-eval x y bindings)) + ((eval? y) (unify-eval y x bindings)) + ((variable? x) (unify-var x y bindings)) + ((variable? y) (unify-var y x bindings)) + ((and (consp x) (consp y)) + (unify (rest x) (rest y) + (unify (first x) (first y) bindings))) + (t +fail+))) + + +;; rename-variables: renombra ?X por ?X.1, ?Y por ?Y.2 etc. salvo ?_ que no se renombra +(defun rename-variables (x) + "Replace all variables in x with new ones. Excepto ?_" + (sublis (mapcar #'(lambda (var) + (if (anonymous-var? var) + (make-binding var var) + (make-binding var (new-variable var)))) + (variables-in x)) + x)) + + + +;;;; Auxiliary Functions + +(defun unify-var (var x bindings) + "Unify var with x, using (and maybe extending) bindings [p 303]." + (cond ((or (anonymous-var? var)(anonymous-var? x)) bindings) + ((get-binding var bindings) + (unify (lookup var bindings) x bindings)) + ((and (variable? x) (get-binding x bindings)) + (unify var (lookup x bindings) bindings)) + ((occurs-in? var x bindings) + +fail+) + (t (extend-bindings var x bindings)))) + +(defun variable? (x) + "Is x a variable (a symbol starting with ?)?" + (and (symbolp x) (eql (char (symbol-name x) 0) #\?))) + +(defun get-binding (var bindings) + "Find a (variable . value) pair in a binding list." + (assoc var bindings)) + +(defun binding-var (binding) + "Get the variable part of a single binding." + (car binding)) + +(defun binding-val (binding) + "Get the value part of a single binding." + (cdr binding)) + +(defun make-binding (var val) (cons var val)) + +(defun lookup (var bindings) + "Get the value part (for var) from a binding list." + (binding-val (get-binding var bindings))) + +(defun extend-bindings (var val bindings) + "Add a (var . value) pair to a binding list." + (append + (unless (eq bindings +no-bindings+) bindings) + (list (make-binding var val)))) + +(defun occurs-in? (var x bindings) + "Does var occur anywhere inside x?" + (cond ((eq var x) t) + ((and (variable? x) (get-binding x bindings)) + (occurs-in? var (lookup x bindings) bindings)) + ((consp x) (or (occurs-in? var (first x) bindings) + (occurs-in? var (rest x) bindings))) + (t nil))) + +(defun subst-bindings (bindings x) + "Substitute the value of variables in bindings into x, + taking recursively bound variables into account." + (cond ((eq bindings +fail+) +fail+) + ((eq bindings +no-bindings+) x) + ((and (listp x) (eq '?eval (car x))) + (subst-bindings-quote bindings x)) + ((and (variable? x) (get-binding x bindings)) + (subst-bindings bindings (lookup x bindings))) + ((atom x) x) + (t (cons (subst-bindings bindings (car x)) ;; s/reuse-cons/cons + (subst-bindings bindings (cdr x)))))) + +(defun unifier (x y) + "Return something that unifies with both x and y (or fail)." + (subst-bindings (unify x y) x)) + +(defun variables-in (exp) + "Return a list of all the variables in EXP." + (unique-find-anywhere-if #'variable? exp)) + +(defun unique-find-anywhere-if (predicate tree &optional found-so-far) + "Return a list of leaves of tree satisfying predicate, + with duplicates removed." + (if (atom tree) + (if (funcall predicate tree) + (pushnew tree found-so-far) + found-so-far) + (unique-find-anywhere-if + predicate + (first tree) + (unique-find-anywhere-if predicate (rest tree) + found-so-far)))) + +(defun find-anywhere-if (predicate tree) + "Does predicate apply to any atom in the tree?" + (if (atom tree) + (funcall predicate tree) + (or (find-anywhere-if predicate (first tree)) + (find-anywhere-if predicate (rest tree))))) + +(defun new-variable (var) + "Create a new variable. Assumes user never types variables of form ?X.9" + (gentemp (format nil "~S." var))) +; (gentemp "?") ) +;;; + +(defun anonymous-var? (x) + (eq x '?_)) + +(defun subst-bindings-quote (bindings x) + "Substitute the value of variables in bindings into x, + taking recursively bound variables into account." + (cond ((eq bindings +fail+) +fail+) + ((eq bindings +no-bindings+) x) + ((and (variable? x) (get-binding x bindings)) + (if (variable? (lookup x bindings)) + (subst-bindings-quote bindings (lookup x bindings)) + (subst-bindings-quote bindings (list 'quote (lookup x bindings))) + ) + ) + ((atom x) x) + (t (cons (subst-bindings-quote bindings (car x)) ;; s/reuse-cons/cons + (subst-bindings-quote bindings (cdr x)))))) + +(defun eval? (x) + (and (consp x) (eq (first x) '?eval))) + +(defun unify-eval (x y bindings) + (let ((exp (subst-bindings-quote bindings (second x)))) + (if (variables-in exp) + +fail+ + (unify (eval exp) y bindings)))) + + + +(defun rule-ifs (rule) (fourth rule)) +(defun rule-then (rule) (second rule)) + + +(defun equality? (term) + (and (consp term) (eql (first term) '?=))) + + +(defun in-fact-list? (expresion) + (some #'(lambda(x) (equal x expresion)) *fact-list*)) + +(defun not-in-fact-list? (expresion) + (if (eq (car expresion) 'NOT) + (in-fact-list? (second expresion)) + (in-fact-list? (list 'NOT expresion)))) + + +;; add-fact: + +(defun add-fact (fact) + (setq *fact-list* (cons fact *fact-list*))) + + +(defun variable? (x) + "Is x a variable (a symbol starting with ?) except ?eval and ?=" + (and (not (equal x '?eval)) (not (equal x '?=)) + (symbolp x) (eql (char (symbol-name x) 0) #\?))) + + +;; EOF \ No newline at end of file diff --git a/samples/Component Pascal/Example.cp b/samples/Component Pascal/Example.cp new file mode 100644 index 00000000..5bace2c4 --- /dev/null +++ b/samples/Component Pascal/Example.cp @@ -0,0 +1,130 @@ +MODULE ObxControls; +(** + project = "BlackBox" + organization = "www.oberon.ch" + contributors = "Oberon microsystems" + version = "System/Rsrc/About" + copyright = "System/Rsrc/About" + license = "Docu/BB-License" + changes = "" + issues = "" + +**) + +IMPORT Dialog, Ports, Properties, Views; + +CONST beginner = 0; advanced = 1; expert = 2; guru = 3; (* user classes *) + +TYPE + View = POINTER TO RECORD (Views.View) + size: INTEGER (* border size in mm *) + END; + +VAR + data*: RECORD + class*: INTEGER; (* current user class *) + list*: Dialog.List; (* list of currently available sizes, derived from class *) + width*: INTEGER (* width of next view to be opened. Derived from + class, or entered through a text entry field *) + END; + + predef: ARRAY 6 OF INTEGER; (* table of predefined sizes *) + + +PROCEDURE SetList; +BEGIN + IF data.class = beginner THEN + data.list.SetLen(1); + data.list.SetItem(0, "default") + ELSIF data.class = advanced THEN + data.list.SetLen(4); + data.list.SetItem(0, "default"); + data.list.SetItem(1, "small"); + data.list.SetItem(2, "medium"); + data.list.SetItem(3, "large"); + ELSE + data.list.SetLen(6); + data.list.SetItem(0, "default"); + data.list.SetItem(1, "small"); + data.list.SetItem(2, "medium"); + data.list.SetItem(3, "large"); + data.list.SetItem(4, "tiny"); + data.list.SetItem(5, "huge"); + END +END SetList; + +(* View *) + +PROCEDURE (v: View) CopyFromSimpleView (source: Views.View); +BEGIN + v.size := source(View).size +END CopyFromSimpleView; + +PROCEDURE (v: View) Restore (f: Views.Frame; l, t, r, b: INTEGER); +BEGIN (* fill view with a red square of size v.size *) + IF v.size = 0 THEN v.size := predef[0] END; (* lazy initialization of size *) + f.DrawRect(0, 0, v.size, v.size, Ports.fill, Ports.red) +END Restore; + +PROCEDURE (v: View) HandlePropMsg (VAR msg: Views.PropMessage); +BEGIN + WITH msg: Properties.SizePref DO + IF v.size = 0 THEN v.size := predef[0] END; (* lazy initialization of size *) + msg.w := v.size; msg.h := v.size (* tell environment about desired width and height *) + ELSE (* ignore other messages *) + END +END HandlePropMsg; + +(* notifiers *) + +PROCEDURE ClassNotify* (op, from, to: INTEGER); +BEGIN (* react to change in data.class *) + IF op = Dialog.changed THEN + IF (to = beginner) OR (to = advanced) & (data.list.index > 3) THEN + (* if class is reduced, make sure that selection contains legal elements *) + data.list.index := 0; data.width := predef[0]; (* modify interactor *) + Dialog.Update(data) (* redraw controls where necessary *) + END; + SetList; + Dialog.UpdateList(data.list) (* reconstruct list box contents *) + END +END ClassNotify; + +PROCEDURE ListNotify* (op, from, to: INTEGER); +BEGIN (* reacto to change in data.list (index to was selected) *) + IF op = Dialog.changed THEN + data.width := predef[to]; (* modify interactor *) + Dialog.Update(data) (* redraw controls where necessary *) + END +END ListNotify; + +(* guards *) + +PROCEDURE ListGuard* (VAR par: Dialog.Par); +BEGIN (* disable list box for a beginner *) + par.disabled := data.class = beginner +END ListGuard; + +PROCEDURE WidthGuard* (VAR par: Dialog.Par); +BEGIN (* make text entry field read-only if user is not guru *) + par.readOnly := data.class # guru +END WidthGuard; + +(* commands *) + +PROCEDURE Open*; + VAR v: View; +BEGIN + NEW(v); (* create and initialize a new view *) + v.size := data.width * Ports.mm; (* define view's size in function of class *) + Views.OpenAux(v, "Example") (* open the view in a window *) +END Open; + +BEGIN (* initialization of global variables *) + predef[0] := 40; predef[1] := 30; predef[2] := 50; (* predefined sizes *) + predef[3] := 70; predef[4] := 20; predef[5] := 100; + data.class := beginner; (* default values *) + data.list.index := 0; + data.width := predef[0]; + SetList +END ObxControls. diff --git a/samples/Component Pascal/Example2.cps b/samples/Component Pascal/Example2.cps new file mode 100644 index 00000000..4c4b3930 --- /dev/null +++ b/samples/Component Pascal/Example2.cps @@ -0,0 +1,71 @@ +MODULE ObxFact; +(** + project = "BlackBox" + organization = "www.oberon.ch" + contributors = "Oberon microsystems" + version = "System/Rsrc/About" + copyright = "System/Rsrc/About" + license = "Docu/BB-License" + changes = "" + issues = "" + +**) + +IMPORT + Stores, Models, TextModels, TextControllers, Integers; + +PROCEDURE Read(r: TextModels.Reader; VAR x: Integers.Integer); + VAR i, len, beg: INTEGER; ch: CHAR; buf: POINTER TO ARRAY OF CHAR; +BEGIN + r.ReadChar(ch); + WHILE ~r.eot & (ch <= " ") DO r.ReadChar(ch) END; + ASSERT(~r.eot & (((ch >= "0") & (ch <= "9")) OR (ch = "-"))); + beg := r.Pos() - 1; len := 0; + REPEAT INC(len); r.ReadChar(ch) UNTIL r.eot OR (ch < "0") OR (ch > "9"); + NEW(buf, len + 1); + i := 0; r.SetPos(beg); + REPEAT r.ReadChar(buf[i]); INC(i) UNTIL i = len; + buf[i] := 0X; + Integers.ConvertFromString(buf^, x) +END Read; + +PROCEDURE Write(w: TextModels.Writer; x: Integers.Integer); + VAR i: INTEGER; +BEGIN + IF Integers.Sign(x) < 0 THEN w.WriteChar("-") END; + i := Integers.Digits10Of(x); + IF i # 0 THEN + REPEAT DEC(i); w.WriteChar(Integers.ThisDigit10(x, i)) UNTIL i = 0 + ELSE w.WriteChar("0") + END +END Write; + +PROCEDURE Compute*; + VAR beg, end, i, n: INTEGER; ch: CHAR; + s: Stores.Operation; + r: TextModels.Reader; w: TextModels.Writer; attr: TextModels.Attributes; + c: TextControllers.Controller; + x: Integers.Integer; +BEGIN + c := TextControllers.Focus(); + IF (c # NIL) & c.HasSelection() THEN + c.GetSelection(beg, end); + r := c.text.NewReader(NIL); r.SetPos(beg); r.ReadChar(ch); + WHILE ~r.eot & (beg < end) & (ch <= " ") DO r.ReadChar(ch); INC(beg) END; + IF ~r.eot & (beg < end) THEN + r.ReadPrev; Read(r, x); + end := r.Pos(); r.ReadPrev; attr :=r.attr; + IF (Integers.Sign(x) > 0) & (Integers.Compare(x, Integers.Long(MAX(LONGINT))) <= 0) THEN + n := SHORT(Integers.Short(x)); i := 2; x := Integers.Long(1); + WHILE i <= n DO x := Integers.Product(x, Integers.Long(i)); INC(i) END; + Models.BeginScript(c.text, "computation", s); + c.text.Delete(beg, end); + w := c.text.NewWriter(NIL); w.SetPos(beg); w.SetAttr(attr); + Write(w, x); + Models.EndScript(c.text, s) + END + END + END +END Compute; + +END ObxFact. \ No newline at end of file diff --git a/samples/Crystal/const_spec.cr b/samples/Crystal/const_spec.cr new file mode 100644 index 00000000..3ab20f14 --- /dev/null +++ b/samples/Crystal/const_spec.cr @@ -0,0 +1,169 @@ +#!/usr/bin/env bin/crystal --run +require "../../spec_helper" + +describe "Codegen: const" do + it "define a constant" do + run("A = 1; A").to_i.should eq(1) + end + + it "support nested constant" do + run("class B; A = 1; end; B::A").to_i.should eq(1) + end + + it "support constant inside a def" do + run(" + class Foo + A = 1 + + def foo + A + end + end + + Foo.new.foo + ").to_i.should eq(1) + end + + it "finds nearest constant first" do + run(" + A = 1 + + class Foo + A = 2.5_f32 + + def foo + A + end + end + + Foo.new.foo + ").to_f32.should eq(2.5) + end + + it "allows constants with same name" do + run(" + A = 1 + + class Foo + A = 2.5_f32 + + def foo + A + end + end + + A + Foo.new.foo + ").to_f32.should eq(2.5) + end + + it "constants with expression" do + run(" + A = 1 + 1 + A + ").to_i.should eq(2) + end + + it "finds global constant" do + run(" + A = 1 + + class Foo + def foo + A + end + end + + Foo.new.foo + ").to_i.should eq(1) + end + + it "define a constant in lib" do + run("lib Foo; A = 1; end; Foo::A").to_i.should eq(1) + end + + it "invokes block in const" do + run("require \"prelude\"; A = [\"1\"].map { |x| x.to_i }; A[0]").to_i.should eq(1) + end + + it "declare constants in right order" do + run("A = 1 + 1; B = true ? A : 0; B").to_i.should eq(2) + end + + it "uses correct types lookup" do + run(" + module A + class B + def foo + 1 + end + end + + C = B.new; + end + + def foo + A::C.foo + end + + foo + ").to_i.should eq(1) + end + + it "codegens variable assignment in const" do + run(" + class Foo + def initialize(@x) + end + + def x + @x + end + end + + A = begin + f = Foo.new(1) + f + end + + def foo + A.x + end + + foo + ").to_i.should eq(1) + end + + it "declaring var" do + run(" + BAR = begin + a = 1 + while 1 == 2 + b = 2 + end + a + end + class Foo + def compile + BAR + end + end + + Foo.new.compile + ").to_i.should eq(1) + end + + it "initialize const that might raise an exception" do + run(" + require \"prelude\" + CONST = (raise \"OH NO\" if 1 == 2) + + def doit + CONST + rescue + end + + doit.nil? + ").to_b.should be_true + end +end diff --git a/samples/Crystal/declare_var_spec.cr b/samples/Crystal/declare_var_spec.cr new file mode 100644 index 00000000..c6a44127 --- /dev/null +++ b/samples/Crystal/declare_var_spec.cr @@ -0,0 +1,79 @@ +#!/usr/bin/env bin/crystal --run +require "../../spec_helper" + +describe "Type inference: declare var" do + it "types declare var" do + assert_type("a :: Int32") { int32 } + end + + it "types declare var and reads it" do + assert_type("a :: Int32; a") { int32 } + end + + it "types declare var and changes its type" do + assert_type("a :: Int32; while 1 == 2; a = 'a'; end; a") { union_of(int32, char) } + end + + it "declares instance var which appears in initialize" do + result = assert_type(" + class Foo + @x :: Int32 + end + + Foo.new") { types["Foo"] } + + mod = result.program + + foo = mod.types["Foo"] as NonGenericClassType + foo.instance_vars["@x"].type.should eq(mod.int32) + end + + it "declares instance var of generic class" do + result = assert_type(" + class Foo(T) + @x :: T + end + + Foo(Int32).new") do + foo = types["Foo"] as GenericClassType + foo_i32 = foo.instantiate([int32] of Type | ASTNode) + foo_i32.lookup_instance_var("@x").type.should eq(int32) + foo_i32 + end + end + + it "declares instance var of generic class after reopen" do + result = assert_type(" + class Foo(T) + end + + f = Foo(Int32).new + + class Foo(T) + @x :: T + end + + f") do + foo = types["Foo"] as GenericClassType + foo_i32 = foo.instantiate([int32] of Type | ASTNode) + foo_i32.lookup_instance_var("@x").type.should eq(int32) + foo_i32 + end + end + + it "declares an instance variable in initialize" do + assert_type(" + class Foo + def initialize + @x :: Int32 + end + + def x + @x + end + end + + Foo.new.x + ") { int32 } + end +end diff --git a/samples/Crystal/transformer.cr b/samples/Crystal/transformer.cr new file mode 100644 index 00000000..8bb78fbe --- /dev/null +++ b/samples/Crystal/transformer.cr @@ -0,0 +1,515 @@ +module Crystal + class ASTNode + def transform(transformer) + transformer.before_transform self + node = transformer.transform self + transformer.after_transform self + node + end + end + + class Transformer + def before_transform(node) + end + + def after_transform(node) + end + + def transform(node : Expressions) + exps = [] of ASTNode + node.expressions.each do |exp| + new_exp = exp.transform(self) + if new_exp + if new_exp.is_a?(Expressions) + exps.concat new_exp.expressions + else + exps << new_exp + end + end + end + + if exps.length == 1 + exps[0] + else + node.expressions = exps + node + end + end + + def transform(node : Call) + if node_obj = node.obj + node.obj = node_obj.transform(self) + end + transform_many node.args + + if node_block = node.block + node.block = node_block.transform(self) + end + + if node_block_arg = node.block_arg + node.block_arg = node_block_arg.transform(self) + end + + node + end + + def transform(node : And) + node.left = node.left.transform(self) + node.right = node.right.transform(self) + node + end + + def transform(node : Or) + node.left = node.left.transform(self) + node.right = node.right.transform(self) + node + end + + def transform(node : StringInterpolation) + transform_many node.expressions + node + end + + def transform(node : ArrayLiteral) + transform_many node.elements + + if node_of = node.of + node.of = node_of.transform(self) + end + + node + end + + def transform(node : HashLiteral) + transform_many node.keys + transform_many node.values + + if of_key = node.of_key + node.of_key = of_key.transform(self) + end + + if of_value = node.of_value + node.of_value = of_value.transform(self) + end + + node + end + + def transform(node : If) + node.cond = node.cond.transform(self) + node.then = node.then.transform(self) + node.else = node.else.transform(self) + node + end + + def transform(node : Unless) + node.cond = node.cond.transform(self) + node.then = node.then.transform(self) + node.else = node.else.transform(self) + node + end + + def transform(node : IfDef) + node.cond = node.cond.transform(self) + node.then = node.then.transform(self) + node.else = node.else.transform(self) + node + end + + def transform(node : MultiAssign) + transform_many node.targets + transform_many node.values + node + end + + def transform(node : SimpleOr) + node.left = node.left.transform(self) + node.right = node.right.transform(self) + node + end + + def transform(node : Def) + transform_many node.args + node.body = node.body.transform(self) + + if receiver = node.receiver + node.receiver = receiver.transform(self) + end + + if block_arg = node.block_arg + node.block_arg = block_arg.transform(self) + end + + node + end + + def transform(node : Macro) + transform_many node.args + node.body = node.body.transform(self) + + if receiver = node.receiver + node.receiver = receiver.transform(self) + end + + if block_arg = node.block_arg + node.block_arg = block_arg.transform(self) + end + + node + end + + def transform(node : PointerOf) + node.exp = node.exp.transform(self) + node + end + + def transform(node : SizeOf) + node.exp = node.exp.transform(self) + node + end + + def transform(node : InstanceSizeOf) + node.exp = node.exp.transform(self) + node + end + + def transform(node : IsA) + node.obj = node.obj.transform(self) + node.const = node.const.transform(self) + node + end + + def transform(node : RespondsTo) + node.obj = node.obj.transform(self) + node + end + + def transform(node : Case) + node.cond = node.cond.transform(self) + transform_many node.whens + + if node_else = node.else + node.else = node_else.transform(self) + end + + node + end + + def transform(node : When) + transform_many node.conds + node.body = node.body.transform(self) + node + end + + def transform(node : ImplicitObj) + node + end + + def transform(node : ClassDef) + node.body = node.body.transform(self) + + if superclass = node.superclass + node.superclass = superclass.transform(self) + end + + node + end + + def transform(node : ModuleDef) + node.body = node.body.transform(self) + node + end + + def transform(node : While) + node.cond = node.cond.transform(self) + node.body = node.body.transform(self) + node + end + + def transform(node : Generic) + node.name = node.name.transform(self) + transform_many node.type_vars + node + end + + def transform(node : ExceptionHandler) + node.body = node.body.transform(self) + transform_many node.rescues + + if node_ensure = node.ensure + node.ensure = node_ensure.transform(self) + end + + node + end + + def transform(node : Rescue) + node.body = node.body.transform(self) + transform_many node.types + node + end + + def transform(node : Union) + transform_many node.types + node + end + + def transform(node : Hierarchy) + node.name = node.name.transform(self) + node + end + + def transform(node : Metaclass) + node.name = node.name.transform(self) + node + end + + def transform(node : Arg) + if default_value = node.default_value + node.default_value = default_value.transform(self) + end + + if restriction = node.restriction + node.restriction = restriction.transform(self) + end + + node + end + + def transform(node : BlockArg) + node.fun = node.fun.transform(self) + node + end + + def transform(node : Fun) + transform_many node.inputs + + if output = node.output + node.output = output.transform(self) + end + + node + end + + def transform(node : Block) + node.args.map! { |exp| exp.transform(self) as Var } + node.body = node.body.transform(self) + node + end + + def transform(node : FunLiteral) + node.def.body = node.def.body.transform(self) + node + end + + def transform(node : FunPointer) + if obj = node.obj + node.obj = obj.transform(self) + end + node + end + + def transform(node : Return) + transform_many node.exps + node + end + + def transform(node : Break) + transform_many node.exps + node + end + + def transform(node : Next) + transform_many node.exps + node + end + + def transform(node : Yield) + if scope = node.scope + node.scope = scope.transform(self) + end + transform_many node.exps + node + end + + def transform(node : Include) + node.name = node.name.transform(self) + node + end + + def transform(node : Extend) + node.name = node.name.transform(self) + node + end + + def transform(node : RangeLiteral) + node.from = node.from.transform(self) + node.to = node.to.transform(self) + node + end + + def transform(node : Assign) + node.target = node.target.transform(self) + node.value = node.value.transform(self) + node + end + + def transform(node : Nop) + node + end + + def transform(node : NilLiteral) + node + end + + def transform(node : BoolLiteral) + node + end + + def transform(node : NumberLiteral) + node + end + + def transform(node : CharLiteral) + node + end + + def transform(node : StringLiteral) + node + end + + def transform(node : SymbolLiteral) + node + end + + def transform(node : RegexLiteral) + node + end + + def transform(node : Var) + node + end + + def transform(node : MetaVar) + node + end + + def transform(node : InstanceVar) + node + end + + def transform(node : ClassVar) + node + end + + def transform(node : Global) + node + end + + def transform(node : Require) + node + end + + def transform(node : Path) + node + end + + def transform(node : Self) + node + end + + def transform(node : LibDef) + node.body = node.body.transform(self) + node + end + + def transform(node : FunDef) + if body = node.body + node.body = body.transform(self) + end + node + end + + def transform(node : TypeDef) + node + end + + def transform(node : StructDef) + node + end + + def transform(node : UnionDef) + node + end + + def transform(node : EnumDef) + node + end + + def transform(node : ExternalVar) + node + end + + def transform(node : IndirectRead) + node.obj = node.obj.transform(self) + node + end + + def transform(node : IndirectWrite) + node.obj = node.obj.transform(self) + node.value = node.value.transform(self) + node + end + + def transform(node : TypeOf) + transform_many node.expressions + node + end + + def transform(node : Primitive) + node + end + + def transform(node : Not) + node + end + + def transform(node : TypeFilteredNode) + node + end + + def transform(node : TupleLiteral) + transform_many node.exps + node + end + + def transform(node : Cast) + node.obj = node.obj.transform(self) + node.to = node.to.transform(self) + node + end + + def transform(node : DeclareVar) + node.var = node.var.transform(self) + node.declared_type = node.declared_type.transform(self) + node + end + + def transform(node : Alias) + node.value = node.value.transform(self) + node + end + + def transform(node : TupleIndexer) + node + end + + def transform(node : Attribute) + node + end + + def transform_many(exps) + exps.map! { |exp| exp.transform(self) } if exps + end + end +end diff --git a/samples/Cycript/utils.cy b/samples/Cycript/utils.cy new file mode 100644 index 00000000..72e677b7 --- /dev/null +++ b/samples/Cycript/utils.cy @@ -0,0 +1,580 @@ +(function(utils) { + // Load C functions declared in utils.loadFuncs + var shouldLoadCFuncs = true; + // Expose the C functions to cycript's global scope + var shouldExposeCFuncs = true; + // Expose C constants to cycript's global scope + var shouldExposeConsts = true; + // Expose functions defined here to cycript's global scope + var shouldExposeFuncs = true; + // Which functions to expose + var funcsToExpose = ["exec", "include", "sizeof", "logify", "apply", "str2voidPtr", "voidPtr2str", "double2voidPtr", "voidPtr2double", "isMemoryReadable", "isObject", "makeStruct"]; + + // C functions that utils.loadFuncs loads + var CFuncsDeclarations = [ + // + "void *calloc(size_t num, size_t size)", + // + "char *strcpy(char *restrict dst, const char *restrict src)", + "char *strdup(const char *s1)", + "void* memset(void* dest, int ch, size_t count)", + // + "FILE *fopen(const char *, const char *)", + "int fclose(FILE *)", + "size_t fread(void *restrict, size_t, size_t, FILE *restrict)", + "size_t fwrite(const void *restrict, size_t, size_t, FILE *restrict)", + // + "mach_port_t mach_task_self()", + "kern_return_t task_for_pid(mach_port_name_t target_tport, int pid, mach_port_name_t *tn)", + "kern_return_t mach_vm_protect(vm_map_t target_task, mach_vm_address_t address, mach_vm_size_t size, boolean_t set_maximum, vm_prot_t new_protection)", + "kern_return_t mach_vm_write(vm_map_t target_task, mach_vm_address_t address, vm_offset_t data, mach_msg_type_number_t dataCnt)", + "kern_return_t mach_vm_read(vm_map_t target_task, mach_vm_address_t address, mach_vm_size_t size, vm_offset_t *data, mach_msg_type_number_t *dataCnt)", + ]; + + /* + Replacement for eval that can handle @encode etc. + + Usage: + cy# utils.exec("@encode(void *(int, char))") + @encode(void*(int,char)) + */ + utils.exec = function(str) { + var mkdir = @encode(int (const char *, int))(dlsym(RTLD_DEFAULT, "mkdir")); + var tempnam = @encode(char *(const char *, const char *))(dlsym(RTLD_DEFAULT, "tempnam")); + var fopen = @encode(void *(const char *, const char *))(dlsym(RTLD_DEFAULT, "fopen")); + var fclose = @encode(int (void *))(dlsym(RTLD_DEFAULT, "fclose")); + var fwrite = @encode(int (const char *, int, int, void *))(dlsym(RTLD_DEFAULT, "fwrite")); + var symlink = @encode(int (const char *, const char *))(dlsym(RTLD_DEFAULT, "symlink")); + var unlink = @encode(int (const char *))(dlsym(RTLD_DEFAULT, "unlink")); + var getenv = @encode(const char *(const char *))(dlsym(RTLD_DEFAULT, "getenv")); + var setenv = @encode(int (const char *, const char *, int))(dlsym(RTLD_DEFAULT, "setenv")); + + var libdir = "/usr/lib/cycript0.9"; + var dir = libdir + "/tmp"; + + mkdir(dir, 0777); + + // This is needed because tempnam seems to ignore the first argument on i386 + var old_tmpdir = getenv("TMPDIR"); + setenv("TMPDIR", dir, 1); + + // No freeing :( + var f = tempnam(dir, "exec-"); + setenv("TMPDIR", old_tmpdir, 1); + if(!f) { + return false; + } + + symlink(f, f + ".cy"); + + str = "exports.result = " + str; + + var handle = fopen(f, "w"); + fwrite(str, str.length, 1, handle); + fclose(handle); + + var r; + var except = null; + try { + r = require(f.replace(libdir + "/", "")); + } catch(e) { + except = e; + } + + unlink(f + ".cy"); + unlink(f); + + if(except !== null) { + throw except; + } + + return r.result; + }; + + /* + Applies known typedefs + Used in utils.include and utils.makeStruct + + Usage: + cy# utils.applyTypedefs("mach_vm_address_t") + "uint64_t" + */ + utils.applyTypedefs = function(str) { + var typedefs = { + "struct": "", + "restrict": "", + "FILE": "void", + "size_t": "uint64_t", + "uintptr_t": "unsigned long", + "kern_return_t": "int", + "mach_port_t": "unsigned int", + "mach_port_name_t": "unsigned int", + "vm_offset_t": "unsigned long", + "vm_size_t": "unsigned long", + "mach_vm_address_t": "uint64_t", + "mach_vm_offset_t": "uint64_t", + "mach_vm_size_t": "uint64_t", + "vm_map_offset_t": "uint64_t", + "vm_map_address_t": "uint64_t", + "vm_map_size_t": "uint64_t", + "mach_port_context_t": "uint64_t", + "vm_map_t": "unsigned int", + "boolean_t": "unsigned int", + "vm_prot_t": "int", + "mach_msg_type_number_t": "unsigned int", + "cpu_type_t": "int", + "cpu_subtype_t": "int", + "cpu_threadtype_t": "int", + }; + + for(var k in typedefs) { + str = str.replace(new RegExp("(\\s|\\*|,|\\(|^)" + k + "(\\s|\\*|,|\\)|$)", "g"), "$1" + typedefs[k] + "$2"); + } + + return str; + }; + + /* + Parses a C function declaration and returns the function name and cycript type + If load is true, tries to load it into cycript using utils.exec + + Usage: + cy# var str = "void *calloc(size_t num, size_t size)"; + "void *calloc(size_t num, size_t size)" + cy# utils.include(str) + ["calloc","@encode(void *(uint64_t num, uint64_t size))(140735674376857)"] + cy# var ret = utils.include(str, true) + ["calloc",0x7fff93e0e299] + cy# ret[1].type + @encode(void*(unsigned long long int,unsigned long long int)) + cy# ret[1](100, 1) + 0x100444100 + */ + utils.include = function(str, load) { + var re = /^\s*([^(]*(?:\s+|\*))(\w*)\s*\(([^)]*)\)\s*;?\s*$/; + var match = re.exec(str); + if(!match) { + return -1; + } + var rType = utils.applyTypedefs(match[1]); + var name = match[2]; + var args = match[3]; + + var argsRe = /([^,]+)(?:,|$)/g; + var argsTypes = []; + while((match = argsRe.exec(args)) !== null) { + var type = utils.applyTypedefs(match[1]); + argsTypes.push(type); + } + + var encodeString = "@encode("; + encodeString += rType + "("; + encodeString += argsTypes.join(", ") + "))"; + + var fun = dlsym(RTLD_DEFAULT, name); + if(fun !== null) { + encodeString += "(" + fun + ")"; + if(load) { + return [name, utils.exec(encodeString)]; + } + } else if(load) { + throw "Function couldn't be found with dlsym!"; + } + + return [name, encodeString]; + }; + + /* + Loads the function declaration in the defs array using utils.exec and exposes to cycript's global scope + Is automatically called if shouldLoadCFuncs is true + */ + utils.funcs = {}; + utils.loadfuncs = function(expose) { + for(var i = 0; i < CFuncsDeclarations.length; i++) { + try { + var o = utils.include(CFuncsDeclarations[i], true); + utils.funcs[o[0]] = o[1]; + if(expose) { + Cycript.all[o[0]] = o[1]; + } + } catch(e) { + system.print("Failed to load function: " + i); + try { + system.print(utils.include(CFuncsDeclarations[i])); + } catch(e2) { + + } + } + } + }; + + /* + Calculates the size of a type like the C operator sizeof + + Usage: + cy# utils.sizeof(int) + 4 + cy# utils.sizeof(@encode(void *)) + 8 + cy# utils.sizeof("mach_vm_address_t") + 8 + */ + utils.sizeof = function(type) { + if(typeof type === "string") { + type = utils.applyTypedefs(type); + type = utils.exec("@encode(" + type + ")"); + } + + // (const) char * has "infinite" preceision + if(type.toString().slice(-1) === "*") { + return utils.sizeof(@encode(void *)); + } + + // float and double + if(type.toString() === @encode(float).toString()) { + return 4; + } else if (type.toString() === @encode(double).toString()) { + return 8; + } + + var typeInstance = type(0); + + if(typeInstance instanceof Object) { + // Arrays + if("length" in typeInstance) { + return typeInstance.length * utils.sizeof(typeInstance.type); + } + + // Structs + if(typeInstance.toString() === "[object Struct]") { + var typeStr = type.toString(); + var arrayTypeStr = "[2" + typeStr + "]"; + var arrayType = new Type(arrayTypeStr); + + var arrayInstance = new arrayType; + + return @encode(void *)(&(arrayInstance[1])) - @encode(void *)(&(arrayInstance[0])); + } + } + + for(var i = 0; i < 5; i++) { + var maxSigned = Math.pow(2, 8 * Math.pow(2, i) - 1) - 1; + if(i === 3) { + // Floating point fix ;^) + maxSigned /= 1000; + } + + // can't use !== or sizeof(void *) === 0.5 + if(type(maxSigned) != maxSigned) { + return Math.pow(2, i - 1); + } + } + }; + + /* + Logs a specific message sent to an instance of a class like logify.pl in theos + Requires Cydia Substrate (com.saurik.substrate.MS) and NSLog (org.cycript.NSLog) modules + Returns the old message returned by MS.hookMessage (Note: this is not just the old message!) + + Usage: + cy# var oldm = utils.logify(objc_getMetaClass(NSNumber), @selector(numberWithDouble:)) + ... + cy# var n = [NSNumber numberWithDouble:1.5] + 2014-07-28 02:26:39.805 cycript[71213:507] +[ numberWithDouble:1.5] + 2014-07-28 02:26:39.806 cycript[71213:507] = 1.5 + @1.5 + */ + utils.logify = function(cls, sel) { + @import com.saurik.substrate.MS; + @import org.cycript.NSLog; + + var oldm = {}; + + MS.hookMessage(cls, sel, function() { + var args = [].slice.call(arguments); + + var selFormat = sel.toString().replace(/:/g, ":%@ ").trim(); + var logFormat = "%@[<%@: 0x%@> " + selFormat + "]"; + + var standardArgs = [logFormat, class_isMetaClass(cls)? "+": "-", cls.toString(), (&this).valueOf().toString(16)]; + var logArgs = standardArgs.concat(args); + + NSLog.apply(null, logArgs); + + var r = oldm->apply(this, arguments); + + if(r !== undefined) { + NSLog(" = %@", r); + } + + return r; + }, oldm); + + return oldm; + }; + + /* + Calls a C function by providing its name and arguments + Doesn't support structs + Return value is always a void pointer + + Usage: + cy# utils.apply("printf", ["%s %.3s, %d -> %c, float: %f\n", "foo", "barrrr", 97, 97, 1.5]) + foo bar, 97 -> a, float: 1.500000 + 0x22 + */ + utils.apply = function(fun, args) { + if(!(args instanceof Array)) { + throw "Args needs to be an array!"; + } + + var argc = args.length; + var voidPtr = @encode(void *); + var argTypes = []; + for(var i = 0; i < argc; i++) { + var argType = voidPtr; + + var arg = args[i]; + if(typeof arg === "string") { + argType = @encode(char *); + } + if(typeof arg === "number" && arg % 1 !== 0) { + argType = @encode(double); + } + + argTypes.push(argType); + } + + var type = voidPtr.functionWith.apply(voidPtr, argTypes); + + if(typeof fun === "string") { + fun = dlsym(RTLD_DEFAULT, fun); + } + + if(!fun) { + throw "Function not found!"; + } + + return type(fun).apply(null, args); + }; + + /* + Converts a string (char *) to a void pointer (void *) + You can't cast to strings to void pointers and vice versa in cycript. Blame saurik. + + Usage: + cy# var voidPtr = utils.str2voidPtr("foobar") + 0x100331590 + cy# utils.voidPtr2str(voidPtr) + "foobar" + */ + utils.str2voidPtr = function(str) { + var strdup = @encode(void *(char *))(dlsym(RTLD_DEFAULT, "strdup")); + return strdup(str); + }; + + /* + The inverse function of str2voidPtr + */ + utils.voidPtr2str = function(voidPtr) { + var strdup = @encode(char *(void *))(dlsym(RTLD_DEFAULT, "strdup")); + return strdup(voidPtr); + }; + + /* + Converts a double into a void pointer + This can be used to view the binary representation of a floating point number + + Usage: + cy# var n = utils.double2voidPtr(-1.5) + 0xbff8000000000000 + cy# utils.voidPtr2double(n) + -1.5 + */ + utils.double2voidPtr = function(n) { + var doublePtr = new double; + *doublePtr = n; + + var voidPtrPtr = @encode(void **)(doublePtr); + + return *voidPtrPtr; + }; + + /* + The inverse function of double2voidPtr + */ + utils.voidPtr2double = function(voidPtr) { + var voidPtrPtr = new @encode(void **); + *voidPtrPtr = voidPtr; + + var doublePtr = @encode(double *)(voidPtrPtr); + + return *doublePtr; + }; + + /* + Determines in a safe way if a memory location is readable + + Usage: + cy# utils.isMemoryReadable(0) + false + cy# utils.isMemoryReadable(0x1337) + false + cy# utils.isMemoryReadable(NSObject) + true + cy# var a = malloc(100); utils.isMemoryReadable(a) + true + */ + utils.isMemoryReadable = function(ptr) { + if(typeof ptr === "string") { + return true; + } + + var fds = new @encode(int [2]); + utils.apply("pipe", [fds]); + var result = utils.apply("write", [fds[1], ptr, 1]) == 1; + + utils.apply("close", [fds[0]]); + utils.apply("close", [fds[1]]); + + return result; + }; + + /* + Determines in a safe way if the memory location contains an Objective-C object + + Usage: + cy# utils.isObject(0) + false + cy# utils.isObject(0x1337) + false + cy# utils.isObject(NSObject) + true + cy# utils.isObject(objc_getMetaClass(NSObject)) + true + cy# utils.isObject([new NSObject init]) + true + cy# var a = malloc(100); utils.isObject(a) + false + cy# *@encode(void **)(a) = NSObject; utils.isObject(a) + true + */ + utils.isObject = function(obj) { + obj = @encode(void *)(obj); + var lastObj = -1; + + function objc_isa_ptr(obj) { + // See http://www.sealiesoftware.com/blog/archive/2013/09/24/objc_explain_Non-pointer_isa.html + var objc_debug_isa_class_mask = 0x00000001fffffffa; + obj = (obj & 1)? (obj & objc_debug_isa_class_mask): obj; + + if((obj & (utils.sizeof(@encode(void *)) - 1)) != 0) { + return null; + } else { + return obj; + } + } + + function ptrValue(obj) { + return obj? obj.valueOf(): null; + } + + var foundMetaClass = false; + + for(obj = objc_isa_ptr(obj); utils.isMemoryReadable(obj); ) { + obj = *@encode(void **)(obj); + + if(ptrValue(obj) == ptrValue(lastObj)) { + foundMetaClass = true; + break; + } + + lastObj = obj; + } + + if(!foundMetaClass) { + return false; + } + + if(lastObj === -1 || lastObj === null) { + return false; + } + + var obj_class = objc_isa_ptr(@encode(void **)(obj)[1]); + + if(!utils.isMemoryReadable(obj_class)) { + return false; + } + + var metaclass = objc_isa_ptr(@encode(void **)(obj_class)[0]); + var superclass = objc_isa_ptr(@encode(void **)(obj_class)[1]); + + return ptrValue(obj) == ptrValue(metaclass) && superclass == null; + }; + + /* + Creates a cycript struct type from a C struct definition + + Usage: + cy# var foo = makeStruct("int a; short b; char c; uint64_t d; double e;", "foo"); + @encode(foo) + cy# var f = new foo + &{a:0,b:0,c:0,d:0,e:0} + cy# f->a = 100; f + &{a:100,b:0,c:0,d:0,e:0} + cy# *@encode(int *)(f) + 100 + */ + utils.makeStruct = function(str, name) { + var fieldRe = /(?:\s|\n)*([^;]+\s*(?:\s|\*))([^;]+)\s*;/g; + + if(!name) { + name = "struct" + Math.floor(Math.random() * 100000); + } + var typeStr = "{" + name + "="; + + while((match = fieldRe.exec(str)) !== null) { + var fieldType = utils.applyTypedefs(match[1]); + var fieldName = match[2]; + var encodedType = utils.exec("@encode(" + fieldType + ")").toString(); + + typeStr += '"' + fieldName + '"' + encodedType; + } + + typeStr += "}"; + + return new Type(typeStr); + }; + + // Various constants + utils.constants = { + VM_PROT_NONE: 0x0, + VM_PROT_READ: 0x1, + VM_PROT_WRITE: 0x2, + VM_PROT_EXECUTE: 0x4, + VM_PROT_NO_CHANGE: 0x8, + VM_PROT_COPY: 0x10, + VM_PROT_WANTS_COPY: 0x10, + VM_PROT_IS_MASK: 0x40, + }; + var c = utils.constants; + c.VM_PROT_DEFAULT = c.VM_PROT_READ | c.VM_PROT_WRITE; + c.VM_PROT_ALL = c.VM_PROT_READ | c.VM_PROT_WRITE | c.VM_PROT_EXECUTE; + + if(shouldExposeConsts) { + for(var k in c) { + Cycript.all[k] = c[k]; + } + } + + if(shouldExposeFuncs) { + for(var i = 0; i < funcsToExpose.length; i++) { + var name = funcsToExpose[i]; + Cycript.all[name] = utils[name]; + } + } + + if(shouldLoadCFuncs) { + utils.loadfuncs(shouldExposeCFuncs); + } +})(exports); diff --git a/samples/Dogescript/example.djs b/samples/Dogescript/example.djs new file mode 100644 index 00000000..6903cc5a --- /dev/null +++ b/samples/Dogescript/example.djs @@ -0,0 +1,16 @@ +quiet + wow + such language + very syntax + github recognized wow +loud + +such language much friendly + rly friendly is true + plz console.loge with 'such friend, very inclusive' + but + plz console.loge with 'no love for doge' + wow +wow + +module.exports is language \ No newline at end of file diff --git a/samples/E/Extends.E b/samples/E/Extends.E new file mode 100644 index 00000000..002a9105 --- /dev/null +++ b/samples/E/Extends.E @@ -0,0 +1,31 @@ +# from +# http://wiki.erights.org/wiki/Walnut/Ordinary_Programming/Objects_and_Functions +def makeVehicle(self) { + def vehicle { + to milesTillEmpty() { + return self.milesPerGallon() * self.getFuelRemaining() + } + } + return vehicle +} + +def makeCar() { + var fuelRemaining := 20 + def car extends makeVehicle(car) { + to milesPerGallon() {return 19} + to getFuelRemaining() {return fuelRemaining} + } + return car +} + +def makeJet() { + var fuelRemaining := 2000 + def jet extends makeVehicle(jet) { + to milesPerGallon() {return 2} + to getFuelRemaining() {return fuelRemaining} + } + return jet +} + +def car := makeCar() +println(`The car can go ${car.milesTillEmpty()} miles.`) diff --git a/samples/E/Functions.E b/samples/E/Functions.E new file mode 100644 index 00000000..086e4f7a --- /dev/null +++ b/samples/E/Functions.E @@ -0,0 +1,21 @@ +# from +# http://wiki.erights.org/wiki/Walnut/Ordinary_Programming/Objects_and_Functions +def makeCar(var name) { + var x := 0 + var y := 0 + def car { + to moveTo(newX,newY) { + x := newX + y := newY + } + to getX() {return x} + to getY() {return y} + to setName(newName) {name := newName} + to getName() {return name} + } + return car +} +# Now use the makeCar function to make a car, which we will move and print +def sportsCar := makeCar("Ferrari") +sportsCar.moveTo(10,20) +println(`The car ${sportsCar.getName()} is at X location ${sportsCar.getX()}`) diff --git a/samples/E/Guards.E b/samples/E/Guards.E new file mode 100644 index 00000000..e3e841ae --- /dev/null +++ b/samples/E/Guards.E @@ -0,0 +1,69 @@ +# from +# http://wiki.erights.org/wiki/Walnut/Advanced_Topics/Build_your_Own_Guards +def makeVOCPair(brandName :String) :near { + + var myTempContents := def none {} + + def brand { + to __printOn(out :TextWriter) :void { + out.print(brandName) + } + } + + def ProveAuth { + to __printOn(out :TextWriter) :void { + out.print(`<$brandName prover>`) + } + to getBrand() :near { return brand } + to coerce(specimen, optEjector) :near { + def sealedBox { + to getBrand() :near { return brand } + to offerContent() :void { + myTempContents := specimen + } + } + return sealedBox + } + } + def CheckAuth { + to __printOn(out :TextWriter) :void { + out.print(`<$brandName checker template>`) + } + to getBrand() :near { return brand } + match [`get`, authList :any[]] { + def checker { + to __printOn(out :TextWriter) :void { + out.print(`<$brandName checker>`) + } + to getBrand() :near { return brand } + to coerce(specimenBox, optEjector) :any { + myTempContents := null + if (specimenBox.__respondsTo("offerContent", 0)) { + # XXX Using __respondsTo/2 here is a kludge + specimenBox.offerContent() + } else { + myTempContents := specimenBox + } + for auth in authList { + if (auth == myTempContents) { + return auth + } + } + myTempContents := none + throw.eject(optEjector, + `Unmatched $brandName authorization`) + } + } + } + match [`__respondsTo`, [`get`, _]] { + true + } + match [`__respondsTo`, [_, _]] { + false + } + match [`__getAllegedType`, []] { + null.__getAllegedType() + } + } + return [ProveAuth, CheckAuth] +} diff --git a/samples/E/IO.E b/samples/E/IO.E new file mode 100644 index 00000000..e96e41ad --- /dev/null +++ b/samples/E/IO.E @@ -0,0 +1,14 @@ +# E sample from +# http://wiki.erights.org/wiki/Walnut/Ordinary_Programming/InputOutput +#File objects for hardwired files: +def file1 := +def file2 := + +#Using a variable for a file name: +def filePath := "c:\\docs\\myFile.txt" +def file3 := [filePath] + +#Using a single character to specify a Windows drive +def file4 := +def file5 := +def file6 := diff --git a/samples/E/Promises.E b/samples/E/Promises.E new file mode 100644 index 00000000..ae03c6ec --- /dev/null +++ b/samples/E/Promises.E @@ -0,0 +1,9 @@ +# E snippet from +# http://wiki.erights.org/wiki/Walnut/Distributed_Computing/Promises +when (tempVow) -> { + #...use tempVow +} catch prob { + #.... report problem +} finally { + #....log event +} diff --git a/samples/E/minChat.E b/samples/E/minChat.E new file mode 100644 index 00000000..b422a71e --- /dev/null +++ b/samples/E/minChat.E @@ -0,0 +1,18 @@ +# from +# http://wiki.erights.org/wiki/Walnut/Secure_Distributed_Computing/Auditing_minChat +pragma.syntax("0.9") +to send(message) { + when (friend<-receive(message)) -> { + chatUI.showMessage("self", message) + } catch prob {chatUI.showMessage("system", "connection lost")} +} +to receive(message) {chatUI.showMessage("friend", message)} +to receiveFriend(friendRcvr) { + bind friend := friendRcvr + chatUI.showMessage("system", "friend has arrived") +} +to save(file) {file.setText(makeURIFromObject(chatController))} +to load(file) { + bind friend := getObjectFromURI(file.getText()) + friend <- receiveFriend(chatController) +} diff --git a/samples/Eagle/Eagle.brd b/samples/Eagle/Eagle.brd new file mode 100644 index 00000000..27f3cbdd --- /dev/null +++ b/samples/Eagle/Eagle.brd @@ -0,0 +1,1396 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Resistors, Capacitors, Inductors</b><p> +Based on the previous libraries: +<ul> +<li>r.lbr +<li>cap.lbr +<li>cap-fe.lbr +<li>captant.lbr +<li>polcap.lbr +<li>ipc-smd.lbr +</ul> +All SMD packages are defined according to the IPC specifications and CECC<p> +<author>Created by librarian@cadsoft.de</author><p> +<p> +for Electrolyt Capacitors see also :<p> +www.bccomponents.com <p> +www.panasonic.com<p> +www.kemet.com<p> +http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b> +<p> +for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> + +<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0> +<tr valign="top"> + +<! <td width="10">&nbsp;</td> +<td width="90%"> + +<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> +<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> + <TR> + <TD COLSPAN=8> + <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> + </B> + </TD><TD>&nbsp;</TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > + 3005P<BR> + 3006P<BR> + 3006W<BR> + 3006Y<BR> + 3009P<BR> + 3009W<BR> + 3009Y<BR> + 3057J<BR> + 3057L<BR> + 3057P<BR> + 3057Y<BR> + 3059J<BR> + 3059L<BR> + 3059P<BR> + 3059Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 89P<BR> + 89W<BR> + 89X<BR> + 89PH<BR> + 76P<BR> + 89XH<BR> + 78SLT<BR> + 78L&nbsp;ALT<BR> + 56P&nbsp;ALT<BR> + 78P&nbsp;ALT<BR> + T8S<BR> + 78L<BR> + 56P<BR> + 78P<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + T18/784<BR> + 783<BR> + 781<BR> + -<BR> + -<BR> + -<BR> + 2199<BR> + 1697/1897<BR> + 1680/1880<BR> + 2187<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 8035EKP/CT20/RJ-20P<BR> + -<BR> + RJ-20X<BR> + -<BR> + -<BR> + -<BR> + 1211L<BR> + 8012EKQ&nbsp;ALT<BR> + 8012EKR&nbsp;ALT<BR> + 1211P<BR> + 8012EKJ<BR> + 8012EKL<BR> + 8012EKQ<BR> + 8012EKR<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 2101P<BR> + 2101W<BR> + 2101Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 2102L<BR> + 2102S<BR> + 2102Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVMCOG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 43P<BR> + 43W<BR> + 43Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 40L<BR> + 40P<BR> + 40Y<BR> + 70Y-T602<BR> + 70L<BR> + 70P<BR> + 70Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + RT/RTR12<BR> + RT/RTR12<BR> + RT/RTR12<BR> + -<BR> + RJ/RJR12<BR> + RJ/RJR12<BR> + RJ/RJR12<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3250L<BR> + 3250P<BR> + 3250W<BR> + 3250X<BR> + 3252P<BR> + 3252W<BR> + 3252X<BR> + 3260P<BR> + 3260W<BR> + 3260X<BR> + 3262P<BR> + 3262W<BR> + 3262X<BR> + 3266P<BR> + 3266W<BR> + 3266X<BR> + 3290H<BR> + 3290P<BR> + 3290W<BR> + 3292P<BR> + 3292W<BR> + 3292X<BR> + 3296P<BR> + 3296W<BR> + 3296X<BR> + 3296Y<BR> + 3296Z<BR> + 3299P<BR> + 3299W<BR> + 3299X<BR> + 3299Y<BR> + 3299Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + -<BR> + 64W&nbsp;ALT<BR> + -<BR> + 64P&nbsp;ALT<BR> + 64W&nbsp;ALT<BR> + 64X&nbsp;ALT<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66P<BR> + 66W<BR> + 66X<BR> + 67P<BR> + 67W<BR> + 67X<BR> + 67Y<BR> + 67Z<BR> + 68P<BR> + 68W<BR> + 68X<BR> + 67Y&nbsp;ALT<BR> + 67Z&nbsp;ALT<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 5050<BR> + 5091<BR> + 5080<BR> + 5087<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + T63YB<BR> + T63XB<BR> + -<BR> + -<BR> + -<BR> + 5887<BR> + 5891<BR> + 5880<BR> + -<BR> + -<BR> + -<BR> + T93Z<BR> + T93YA<BR> + T93XA<BR> + T93YB<BR> + T93XB<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 8026EKP<BR> + 8026EKW<BR> + 8026EKM<BR> + 8026EKP<BR> + 8026EKB<BR> + 8026EKM<BR> + 1309X<BR> + 1309P<BR> + 1309W<BR> + 8024EKP<BR> + 8024EKW<BR> + 8024EKN<BR> + RJ-9P/CT9P<BR> + RJ-9W<BR> + RJ-9X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3105P/3106P<BR> + 3105W/3106W<BR> + 3105X/3106X<BR> + 3105Y/3106Y<BR> + 3105Z/3105Z<BR> + 3102P<BR> + 3102W<BR> + 3102X<BR> + 3102Y<BR> + 3102Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMCBG<BR> + EVMCCG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 55-1-X<BR> + 55-4-X<BR> + 55-3-X<BR> + 55-2-X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 50-2-X<BR> + 50-4-X<BR> + 50-3-X<BR> + -<BR> + -<BR> + -<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 64Y<BR> + 64Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3323P<BR> + 3323S<BR> + 3323W<BR> + 3329H<BR> + 3329P<BR> + 3329W<BR> + 3339H<BR> + 3339P<BR> + 3339W<BR> + 3352E<BR> + 3352H<BR> + 3352K<BR> + 3352P<BR> + 3352T<BR> + 3352V<BR> + 3352W<BR> + 3362H<BR> + 3362M<BR> + 3362P<BR> + 3362R<BR> + 3362S<BR> + 3362U<BR> + 3362W<BR> + 3362X<BR> + 3386B<BR> + 3386C<BR> + 3386F<BR> + 3386H<BR> + 3386K<BR> + 3386M<BR> + 3386P<BR> + 3386S<BR> + 3386W<BR> + 3386X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 25P<BR> + 25S<BR> + 25RX<BR> + 82P<BR> + 82M<BR> + 82PA<BR> + -<BR> + -<BR> + -<BR> + 91E<BR> + 91X<BR> + 91T<BR> + 91B<BR> + 91A<BR> + 91V<BR> + 91W<BR> + 25W<BR> + 25V<BR> + 25P<BR> + -<BR> + 25S<BR> + 25U<BR> + 25RX<BR> + 25X<BR> + 72XW<BR> + 72XL<BR> + 72PM<BR> + 72RX<BR> + -<BR> + 72PX<BR> + 72P<BR> + 72RXW<BR> + 72RXL<BR> + 72X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + T7YB<BR> + T7YA<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + TXD<BR> + TYA<BR> + TYP<BR> + -<BR> + TYD<BR> + TX<BR> + -<BR> + 150SX<BR> + 100SX<BR> + 102T<BR> + 101S<BR> + 190T<BR> + 150TX<BR> + 101<BR> + -<BR> + -<BR> + 101SX<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ET6P<BR> + ET6S<BR> + ET6X<BR> + RJ-6W/8014EMW<BR> + RJ-6P/8014EMP<BR> + RJ-6X/8014EMX<BR> + TM7W<BR> + TM7P<BR> + TM7X<BR> + -<BR> + 8017SMS<BR> + -<BR> + 8017SMB<BR> + 8017SMA<BR> + -<BR> + -<BR> + CT-6W<BR> + CT-6H<BR> + CT-6P<BR> + CT-6R<BR> + -<BR> + CT-6V<BR> + CT-6X<BR> + -<BR> + -<BR> + 8038EKV<BR> + -<BR> + 8038EKX<BR> + -<BR> + -<BR> + 8038EKP<BR> + 8038EKZ<BR> + 8038EKW<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 3321H<BR> + 3321P<BR> + 3321N<BR> + 1102H<BR> + 1102P<BR> + 1102T<BR> + RVA0911V304A<BR> + -<BR> + RVA0911H413A<BR> + RVG0707V100A<BR> + RVA0607V(H)306A<BR> + RVA1214H213A<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3104B<BR> + 3104C<BR> + 3104F<BR> + 3104H<BR> + -<BR> + 3104M<BR> + 3104P<BR> + 3104S<BR> + 3104W<BR> + 3104X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + EVMQ0G<BR> + EVMQIG<BR> + EVMQ3G<BR> + EVMS0G<BR> + EVMQ0G<BR> + EVMG0G<BR> + -<BR> + -<BR> + -<BR> + EVMK4GA00B<BR> + EVM30GA00B<BR> + EVMK0GA00B<BR> + EVM38GA00B<BR> + EVMB6<BR> + EVLQ0<BR> + -<BR> + EVMMSG<BR> + EVMMBG<BR> + EVMMAG<BR> + -<BR> + -<BR> + EVMMCS<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMM1<BR> + -<BR> + -<BR> + EVMM0<BR> + -<BR> + -<BR> + EVMM3<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 62-3-1<BR> + 62-1-2<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67R<BR> + -<BR> + 67P<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67X<BR> + 63V<BR> + 63S<BR> + 63M<BR> + -<BR> + -<BR> + 63H<BR> + 63P<BR> + -<BR> + -<BR> + 63X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P>&nbsp;<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> + <TR> + <TD COLSPAN=7> + <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> + <P> + <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3224G<BR> + 3224J<BR> + 3224W<BR> + 3269P<BR> + 3269W<BR> + 3269X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 44G<BR> + 44J<BR> + 44W<BR> + 84P<BR> + 84W<BR> + 84X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST63Z<BR> + ST63Y<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST5P<BR> + ST5W<BR> + ST5X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=7>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=7> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3314G<BR> + 3314J<BR> + 3364A/B<BR> + 3364C/D<BR> + 3364W/X<BR> + 3313G<BR> + 3313J<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 23B<BR> + 23A<BR> + 21X<BR> + 21W<BR> + -<BR> + 22B<BR> + 22A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST5YL/ST53YL<BR> + ST5YJ/5T53YJ<BR> + ST-23A<BR> + ST-22B<BR> + ST-22<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST-4B<BR> + ST-4A<BR> + -<BR> + -<BR> + -<BR> + ST-3B<BR> + ST-3A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVM-6YS<BR> + EVM-1E<BR> + EVM-1G<BR> + EVM-1D<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + G4B<BR> + G4A<BR> + TR04-3S1<BR> + TRG04-2S1<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + DVR-43A<BR> + CVR-42C<BR> + CVR-42A/C<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P> +<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> +<P> + +&nbsp; +<P> +</td> +</tr> +</table> + + +<b>RESISTOR</b><p> + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>Pin Header Connectors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>PIN HEADER</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/Eagle/Eagle.sch b/samples/Eagle/Eagle.sch new file mode 100644 index 00000000..5a72a868 --- /dev/null +++ b/samples/Eagle/Eagle.sch @@ -0,0 +1,3612 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Frames for Sheet and Layout</b> + + + + + + + + + + + + + + + + + + + + +>DRAWING_NAME +>LAST_DATE_TIME +>SHEET +Sheet: + + + + + +<b>FRAME</b><p> +DIN A4, landscape with location and doc. field + + + + + + + + + + + + + + +<b>Resistors, Capacitors, Inductors</b><p> +Based on the previous libraries: +<ul> +<li>r.lbr +<li>cap.lbr +<li>cap-fe.lbr +<li>captant.lbr +<li>polcap.lbr +<li>ipc-smd.lbr +</ul> +All SMD packages are defined according to the IPC specifications and CECC<p> +<author>Created by librarian@cadsoft.de</author><p> +<p> +for Electrolyt Capacitors see also :<p> +www.bccomponents.com <p> +www.panasonic.com<p> +www.kemet.com<p> +http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b> +<p> +for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> + +<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0> +<tr valign="top"> + +<! <td width="10">&nbsp;</td> +<td width="90%"> + +<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> +<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> + <TR> + <TD COLSPAN=8> + <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> + </B> + </TD><TD>&nbsp;</TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > + 3005P<BR> + 3006P<BR> + 3006W<BR> + 3006Y<BR> + 3009P<BR> + 3009W<BR> + 3009Y<BR> + 3057J<BR> + 3057L<BR> + 3057P<BR> + 3057Y<BR> + 3059J<BR> + 3059L<BR> + 3059P<BR> + 3059Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 89P<BR> + 89W<BR> + 89X<BR> + 89PH<BR> + 76P<BR> + 89XH<BR> + 78SLT<BR> + 78L&nbsp;ALT<BR> + 56P&nbsp;ALT<BR> + 78P&nbsp;ALT<BR> + T8S<BR> + 78L<BR> + 56P<BR> + 78P<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + T18/784<BR> + 783<BR> + 781<BR> + -<BR> + -<BR> + -<BR> + 2199<BR> + 1697/1897<BR> + 1680/1880<BR> + 2187<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 8035EKP/CT20/RJ-20P<BR> + -<BR> + RJ-20X<BR> + -<BR> + -<BR> + -<BR> + 1211L<BR> + 8012EKQ&nbsp;ALT<BR> + 8012EKR&nbsp;ALT<BR> + 1211P<BR> + 8012EKJ<BR> + 8012EKL<BR> + 8012EKQ<BR> + 8012EKR<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 2101P<BR> + 2101W<BR> + 2101Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 2102L<BR> + 2102S<BR> + 2102Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVMCOG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 43P<BR> + 43W<BR> + 43Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 40L<BR> + 40P<BR> + 40Y<BR> + 70Y-T602<BR> + 70L<BR> + 70P<BR> + 70Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + RT/RTR12<BR> + RT/RTR12<BR> + RT/RTR12<BR> + -<BR> + RJ/RJR12<BR> + RJ/RJR12<BR> + RJ/RJR12<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3250L<BR> + 3250P<BR> + 3250W<BR> + 3250X<BR> + 3252P<BR> + 3252W<BR> + 3252X<BR> + 3260P<BR> + 3260W<BR> + 3260X<BR> + 3262P<BR> + 3262W<BR> + 3262X<BR> + 3266P<BR> + 3266W<BR> + 3266X<BR> + 3290H<BR> + 3290P<BR> + 3290W<BR> + 3292P<BR> + 3292W<BR> + 3292X<BR> + 3296P<BR> + 3296W<BR> + 3296X<BR> + 3296Y<BR> + 3296Z<BR> + 3299P<BR> + 3299W<BR> + 3299X<BR> + 3299Y<BR> + 3299Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + -<BR> + 64W&nbsp;ALT<BR> + -<BR> + 64P&nbsp;ALT<BR> + 64W&nbsp;ALT<BR> + 64X&nbsp;ALT<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66P<BR> + 66W<BR> + 66X<BR> + 67P<BR> + 67W<BR> + 67X<BR> + 67Y<BR> + 67Z<BR> + 68P<BR> + 68W<BR> + 68X<BR> + 67Y&nbsp;ALT<BR> + 67Z&nbsp;ALT<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 5050<BR> + 5091<BR> + 5080<BR> + 5087<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + T63YB<BR> + T63XB<BR> + -<BR> + -<BR> + -<BR> + 5887<BR> + 5891<BR> + 5880<BR> + -<BR> + -<BR> + -<BR> + T93Z<BR> + T93YA<BR> + T93XA<BR> + T93YB<BR> + T93XB<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 8026EKP<BR> + 8026EKW<BR> + 8026EKM<BR> + 8026EKP<BR> + 8026EKB<BR> + 8026EKM<BR> + 1309X<BR> + 1309P<BR> + 1309W<BR> + 8024EKP<BR> + 8024EKW<BR> + 8024EKN<BR> + RJ-9P/CT9P<BR> + RJ-9W<BR> + RJ-9X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3105P/3106P<BR> + 3105W/3106W<BR> + 3105X/3106X<BR> + 3105Y/3106Y<BR> + 3105Z/3105Z<BR> + 3102P<BR> + 3102W<BR> + 3102X<BR> + 3102Y<BR> + 3102Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMCBG<BR> + EVMCCG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 55-1-X<BR> + 55-4-X<BR> + 55-3-X<BR> + 55-2-X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 50-2-X<BR> + 50-4-X<BR> + 50-3-X<BR> + -<BR> + -<BR> + -<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 64Y<BR> + 64Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3323P<BR> + 3323S<BR> + 3323W<BR> + 3329H<BR> + 3329P<BR> + 3329W<BR> + 3339H<BR> + 3339P<BR> + 3339W<BR> + 3352E<BR> + 3352H<BR> + 3352K<BR> + 3352P<BR> + 3352T<BR> + 3352V<BR> + 3352W<BR> + 3362H<BR> + 3362M<BR> + 3362P<BR> + 3362R<BR> + 3362S<BR> + 3362U<BR> + 3362W<BR> + 3362X<BR> + 3386B<BR> + 3386C<BR> + 3386F<BR> + 3386H<BR> + 3386K<BR> + 3386M<BR> + 3386P<BR> + 3386S<BR> + 3386W<BR> + 3386X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 25P<BR> + 25S<BR> + 25RX<BR> + 82P<BR> + 82M<BR> + 82PA<BR> + -<BR> + -<BR> + -<BR> + 91E<BR> + 91X<BR> + 91T<BR> + 91B<BR> + 91A<BR> + 91V<BR> + 91W<BR> + 25W<BR> + 25V<BR> + 25P<BR> + -<BR> + 25S<BR> + 25U<BR> + 25RX<BR> + 25X<BR> + 72XW<BR> + 72XL<BR> + 72PM<BR> + 72RX<BR> + -<BR> + 72PX<BR> + 72P<BR> + 72RXW<BR> + 72RXL<BR> + 72X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + T7YB<BR> + T7YA<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + TXD<BR> + TYA<BR> + TYP<BR> + -<BR> + TYD<BR> + TX<BR> + -<BR> + 150SX<BR> + 100SX<BR> + 102T<BR> + 101S<BR> + 190T<BR> + 150TX<BR> + 101<BR> + -<BR> + -<BR> + 101SX<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ET6P<BR> + ET6S<BR> + ET6X<BR> + RJ-6W/8014EMW<BR> + RJ-6P/8014EMP<BR> + RJ-6X/8014EMX<BR> + TM7W<BR> + TM7P<BR> + TM7X<BR> + -<BR> + 8017SMS<BR> + -<BR> + 8017SMB<BR> + 8017SMA<BR> + -<BR> + -<BR> + CT-6W<BR> + CT-6H<BR> + CT-6P<BR> + CT-6R<BR> + -<BR> + CT-6V<BR> + CT-6X<BR> + -<BR> + -<BR> + 8038EKV<BR> + -<BR> + 8038EKX<BR> + -<BR> + -<BR> + 8038EKP<BR> + 8038EKZ<BR> + 8038EKW<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 3321H<BR> + 3321P<BR> + 3321N<BR> + 1102H<BR> + 1102P<BR> + 1102T<BR> + RVA0911V304A<BR> + -<BR> + RVA0911H413A<BR> + RVG0707V100A<BR> + RVA0607V(H)306A<BR> + RVA1214H213A<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3104B<BR> + 3104C<BR> + 3104F<BR> + 3104H<BR> + -<BR> + 3104M<BR> + 3104P<BR> + 3104S<BR> + 3104W<BR> + 3104X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + EVMQ0G<BR> + EVMQIG<BR> + EVMQ3G<BR> + EVMS0G<BR> + EVMQ0G<BR> + EVMG0G<BR> + -<BR> + -<BR> + -<BR> + EVMK4GA00B<BR> + EVM30GA00B<BR> + EVMK0GA00B<BR> + EVM38GA00B<BR> + EVMB6<BR> + EVLQ0<BR> + -<BR> + EVMMSG<BR> + EVMMBG<BR> + EVMMAG<BR> + -<BR> + -<BR> + EVMMCS<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMM1<BR> + -<BR> + -<BR> + EVMM0<BR> + -<BR> + -<BR> + EVMM3<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 62-3-1<BR> + 62-1-2<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67R<BR> + -<BR> + 67P<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67X<BR> + 63V<BR> + 63S<BR> + 63M<BR> + -<BR> + -<BR> + 63H<BR> + 63P<BR> + -<BR> + -<BR> + 63X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P>&nbsp;<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> + <TR> + <TD COLSPAN=7> + <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> + <P> + <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3224G<BR> + 3224J<BR> + 3224W<BR> + 3269P<BR> + 3269W<BR> + 3269X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 44G<BR> + 44J<BR> + 44W<BR> + 84P<BR> + 84W<BR> + 84X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST63Z<BR> + ST63Y<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST5P<BR> + ST5W<BR> + ST5X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=7>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=7> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3314G<BR> + 3314J<BR> + 3364A/B<BR> + 3364C/D<BR> + 3364W/X<BR> + 3313G<BR> + 3313J<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 23B<BR> + 23A<BR> + 21X<BR> + 21W<BR> + -<BR> + 22B<BR> + 22A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST5YL/ST53YL<BR> + ST5YJ/5T53YJ<BR> + ST-23A<BR> + ST-22B<BR> + ST-22<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST-4B<BR> + ST-4A<BR> + -<BR> + -<BR> + -<BR> + ST-3B<BR> + ST-3A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVM-6YS<BR> + EVM-1E<BR> + EVM-1G<BR> + EVM-1D<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + G4B<BR> + G4A<BR> + TR04-3S1<BR> + TRG04-2S1<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + DVR-43A<BR> + CVR-42C<BR> + CVR-42A/C<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P> +<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> +<P> + +&nbsp; +<P> +</td> +</tr> +</table> + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> wave soldering<p> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> wave soldering<p> +Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.10 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.12 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.10 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.12 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +type 0204, grid 5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0204, grid 7.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0207, grid 10 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0207, grid 12 mm + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>RESISTOR</b><p> +type 0207, grid 15mm + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>RESISTOR</b><p> +type 0207, grid 2.5 mm + + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0207, grid 5 mm + + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0207, grid 7.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0309, grid 10mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0309, grid 12.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0411, grid 12.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0411, grid 15 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0411, grid 3.81 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0414, grid 15 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0414, grid 5 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0617, grid 17.5 mm + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0617, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0617, grid 5 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0922, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>RESISTOR</b><p> +type 0613, grid 5 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0613, grid 15 mm + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0817, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +0817 + + + + +<b>RESISTOR</b><p> +type 0817, grid 6.35 mm + + + + + + +>NAME +>VALUE +0817 + + + +<b>RESISTOR</b><p> +type V234, grid 12.5 mm + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type V235, grid 17.78 mm + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type V526-0, grid 2.5 mm + + + + + + + + + + +>NAME +>VALUE + + +<b>Mini MELF 0102 Axial</b> + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0922, grid 7.5 mm + + + + + + +>NAME +>VALUE +0922 + + + +<b>CECC Size RC2211</b> Reflow Soldering<p> +source Beyschlag + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC2211</b> Wave Soldering<p> +source Beyschlag + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC3715</b> Reflow Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC3715</b> Wave Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC6123</b> Reflow Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC6123</b> Wave Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type RDH, grid 15 mm + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +RDH + + + + +<b>RESISTOR</b><p> +type 0204, grid 2.5 mm + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0309, grid 2.5 mm + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> chip<p> +Source: http://www.vishay.com/docs/20008/dcrcw.pdf + + +>NAME +>VALUE + + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RNC55<br> +Source: VISHAY .. vta56.pdf + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RNC60<br> +Source: VISHAY .. vta56.pdf + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR52<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR53<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR54<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR55<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR56<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Package 4527</b><p> +Source: http://www.vishay.com/docs/31059/wsrhigh.pdf + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + +>NAME +>VALUE + + +<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p> +Source: http://www.vishay.com .. dcrcw.pdf + + + + +>NAME +>VALUE + + + + +<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p> +Source: http://www.murata.com .. GRM43DR72E224KW01.pdf + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<B>RESISTOR</B>, American symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Pin Header Connectors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>PIN HEADER</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/EmberScript/momentComponent.em b/samples/EmberScript/momentComponent.em new file mode 100644 index 00000000..cdca9dc5 --- /dev/null +++ b/samples/EmberScript/momentComponent.em @@ -0,0 +1,23 @@ +class App.FromNowView extends Ember.View + tagName: 'time' + template: Ember.Handlebars.compile '{{view.output}}' + output: ~> + return moment(@value).fromNow() + + didInsertElement: -> + @tick() + + tick: -> + f = -> + @notifyPropertyChange 'output' + @tick() + + nextTick = Ember.run.later(this, f, 1000) + @set 'nextTick', nextTick + + willDestroyElement: -> + nextTick = @nextTick + Ember.run.cancel nextTick + +Ember.Handlebars.helper 'fromNow', App.FromNowView + diff --git a/samples/Frege/CommandLineClock.fr b/samples/Frege/CommandLineClock.fr new file mode 100644 index 00000000..5bdde621 --- /dev/null +++ b/samples/Frege/CommandLineClock.fr @@ -0,0 +1,44 @@ +{-- + This program displays the + current time on stdandard output + every other second. + -} + +module examples.CommandLineClock where + +data Date = native java.util.Date where + native new :: () -> IO (MutableIO Date) -- new Date() + native toString :: Mutable s Date -> ST s String -- d.toString() + +--- 'IO' action to give us the current time as 'String' +current :: IO String +current = do + d <- Date.new () + d.toString + +{- + "java.lang.Thread.sleep" takes a "long" and + returns nothing, but may throw an InterruptedException. + This is without doubt an IO action. + + public static void sleep(long millis) + throws InterruptedException + + Encoded in Frege: + - argument type long Long + - result void () + - does IO IO () + - throws ... throws .... + +-} +-- .... defined in frege.java.Lang +-- native sleep java.lang.Thread.sleep :: Long -> IO () throws InterruptedException + + +main args = + forever do + current >>= print + print "\r" + stdout.flush + Thread.sleep 999 + \ No newline at end of file diff --git a/samples/Frege/Concurrent.fr b/samples/Frege/Concurrent.fr new file mode 100644 index 00000000..5f9df994 --- /dev/null +++ b/samples/Frege/Concurrent.fr @@ -0,0 +1,147 @@ +module examples.Concurrent where + +import System.Random +import Java.Net (URL) +import Control.Concurrent as C + +main2 args = do + m <- newEmptyMVar + forkIO do + m.put 'x' + m.put 'y' + m.put 'z' + replicateM_ 3 do + c <- m.take + print "got: " + println c + + +example1 = do + forkIO (replicateM_ 100000 (putChar 'a')) + replicateM_ 100000 (putChar 'b') + +example2 = do + s <- getLine + case s.long of + Right n -> forkIO (setReminder n) >> example2 + Left _ -> println ("exiting ...") + +setReminder :: Long -> IO () +setReminder n = do + println ("Ok, I remind you in " ++ show n ++ " seconds") + Thread.sleep (1000L*n) + println (show n ++ " seconds is up!") + +table = "table" + +mainPhil _ = do + [fork1,fork2,fork3,fork4,fork5] <- mapM MVar.new [1..5] + forkIO (philosopher "Kant" fork5 fork1) + forkIO (philosopher "Locke" fork1 fork2) + forkIO (philosopher "Wittgenstein" fork2 fork3) + forkIO (philosopher "Nozick" fork3 fork4) + forkIO (philosopher "Mises" fork4 fork5) + return () + +philosopher :: String -> MVar Int -> MVar Int -> IO () +philosopher me left right = do + g <- Random.newStdGen + let phil g = do + let (tT,g1) = Random.randomR (60L, 120L) g + (eT, g2) = Random.randomR (80L, 160L) g1 + thinkTime = 300L * tT + eatTime = 300L * eT + + println(me ++ " is going to the dining room and takes his seat.") + fl <- left.take + println (me ++ " takes up left fork (" ++ show fl ++ ")") + rFork <- right.poll + case rFork of + Just fr -> do + println (me ++ " takes up right fork. (" ++ show fr ++ ")") + println (me ++ " is going to eat for " ++ show eatTime ++ "ms") + Thread.sleep eatTime + println (me ++ " finished eating.") + right.put fr + println (me ++ " took down right fork.") + left.put fl + println (me ++ " took down left fork.") + table.notifyAll + println(me ++ " is going to think for " ++ show thinkTime ++ "ms.") + Thread.sleep thinkTime + phil g2 + Nothing -> do + println (me ++ " finds right fork is already in use.") + left.put fl + println (me ++ " took down left fork.") + table.notifyAll + println (me ++ " is going to the bar to await notifications from table.") + table.wait + println (me ++ " got notice that something changed at the table.") + phil g2 + + inter :: InterruptedException -> IO () + inter _ = return () + + phil g `catch` inter + + +getURL xx = do + url <- URL.new xx + con <- url.openConnection + con.connect + is <- con.getInputStream + typ <- con.getContentType + -- stderr.println ("content-type is " ++ show typ) + ir <- InputStreamReader.new is (fromMaybe "UTF-8" (charset typ)) + `catch` unsupportedEncoding is + br <- BufferedReader.new ir + br.getLines + where + unsupportedEncoding :: InputStream -> UnsupportedEncodingException -> IO InputStreamReader + unsupportedEncoding is x = do + stderr.println x.catched + InputStreamReader.new is "UTF-8" + + charset ctyp = do + typ <- ctyp + case typ of + m~´charset=(\S+)´ -> m.group 1 + _ -> Nothing + + +type SomeException = Throwable + +main ["dining"] = mainPhil [] + +main _ = do + m1 <- MVar.newEmpty + m2 <- MVar.newEmpty + m3 <- MVar.newEmpty + + forkIO do + r <- (catchAll . getURL) "http://www.wikipedia.org/wiki/Haskell" + m1.put r + + forkIO do + r <- (catchAll . getURL) "htto://www.wikipedia.org/wiki/Java" + m2.put r + + forkIO do + r <- (catchAll . getURL) "http://www.wikipedia.org/wiki/Frege" + m3.put r + + r1 <- m1.take + r2 <- m2.take + r3 <- m3.take + println (result r1, result r2, result r3) + -- case r3 of + -- Right ss -> mapM_ putStrLn ss + -- Left _ -> return () + where + result :: (SomeException|[String]) -> (String|Int) + result (Left x) = Left x.getClass.getName + result (Right y) = (Right . sum . map length) y + -- mapM_ putStrLn r2 + + \ No newline at end of file diff --git a/samples/Frege/Sudoku.fr b/samples/Frege/Sudoku.fr new file mode 100644 index 00000000..88bfd966 --- /dev/null +++ b/samples/Frege/Sudoku.fr @@ -0,0 +1,561 @@ +package examples.Sudoku where + +import Data.TreeMap (Tree, keys) +import Data.List as DL hiding (find, union) + + +type Element = Int -- 1,2,3,4,5,6,7,8,9 +type Zelle = [Element] -- set of candidates +type Position = Int -- 0..80 +type Feld = (Position, Zelle) +type Brett = [Feld] + +--- data type for assumptions and conclusions +data Assumption = + !ISNOT Position Element + | !IS Position Element + + +derive Eq Assumption +derive Ord Assumption +instance Show Assumption where + show (IS p e) = pname p ++ "=" ++ e.show + show (ISNOT p e) = pname p ++ "/" ++ e.show + +showcs cs = joined " " (map Assumption.show cs) + +elements :: [Element] -- all possible elements +elements = [1 .. 9] + +{- + a b c d e f g h i + 0 1 2 | 3 4 5 | 6 7 8 1 + 9 10 11 |12 13 14 |15 16 17 2 + 18 19 20 |21 22 23 |24 25 26 3 + ---------|---------|-------- + 27 28 29 |30 31 32 |33 34 35 4 + 36 37 38 |39 40 41 |42 43 44 5 + 45 46 47 |48 49 50 |51 52 53 6 + ---------|---------|-------- + 54 55 56 |57 58 59 |60 61 62 7 + 63 64 65 |66 67 68 |69 70 71 8 + 72 73 74 |75 76 77 |78 79 80 9 +-} + +positions :: [Position] -- all possible positions +positions = [0..80] +rowstarts :: [Position] -- all positions where a row is starting +rowstarts = [0,9,18,27,36,45,54,63,72] +colstarts :: [Position] -- all positions where a column is starting +colstarts = [0,1,2,3,4,5,6,7,8] +boxstarts :: [Position] -- all positions where a box is starting +boxstarts = [0,3,6,27,30,33,54,57,60] +boxmuster :: [Position] -- pattern for a box, by adding upper left position results in real box +boxmuster = [0,1,2,9,10,11,18,19,20] + + +--- extract field for position +getf :: Brett -> Position -> Feld +getf (f:fs) p + | fst f == p = f + | otherwise = getf fs p +getf [] p = (p,[]) + + +--- extract cell for position +getc :: Brett -> Position -> Zelle +getc b p = snd (getf b p) + +--- compute the list of all positions that belong to the same row as a given position +row :: Position -> [Position] +row p = [z..(z+8)] where z = (p `quot` 9) * 9 + +--- compute the list of all positions that belong to the same col as a given position +col :: Position -> [Position] +col p = map (c+) rowstarts where c = p `mod` 9 + +--- compute the list of all positions that belong to the same box as a given position +box :: Position -> [Position] +box p = map (z+) boxmuster where + ri = p `div` 27 * 27 -- 0, 27 or 54, depending on row + ci = p `mod` 9 -- column index 0..8, 0,1,2 is left, 3,4,5 is middle, 6,7,8 is right + cs = ci `div` 3 * 3 -- 0, 3 or 6 + z = ri + cs + +--- check if candidate set has exactly one member, i.e. field has been solved +single :: Zelle -> Bool +single [_] = true +single _ = false + +unsolved :: Zelle -> Bool +unsolved [_] = false +unsolved _ = true + +-- list of rows, cols, boxes +allrows = map row rowstarts +allcols = map col colstarts +allboxs = map box boxstarts +allrcb = zip (repeat "row") allrows + ++ zip (repeat "col") allcols + ++ zip (repeat "box") allboxs + + +containers :: [(Position -> [Position], String)] +containers = [(row, "row"), (col, "col"), (box, "box")] + +-- ----------------- PRINTING ------------------------------------ +-- printable coordinate of field, upper left is a1, lower right is i9 +pname p = packed [chr (ord 'a' + p `mod` 9), chr (ord '1' + p `div` 9)] + +-- print board +printb b = mapM_ p1line allrows >> println "" + where + p1line row = do + print (joined "" (map pfld line)) + where line = map (getc b) row + +-- print field (brief) +-- ? = no candidate +-- 5 = field is 5 +-- . = some candidates +pfld [] = "?" +pfld [x] = show x +pfld zs = "0" + +-- print initial/final board +result msg b = do + println ("Result: " ++ msg) + print ("Board: ") + printb b + return b + +res012 b = case concatMap (getc b) [0,1,2] of + [a,b,c] -> a*100+b*10+c + _ -> 9999999 + +-- -------------------------- BOARD ALTERATION ACTIONS --------------------------------- +-- print a message about what is done to the board and return the new board +turnoff1 :: Position -> Zelle -> Brett -> IO Brett +turnoff1 i off b + | single nc = do + -- print (pname i) + -- print ": set to " + -- print (head nc) + -- println " (naked single)" + return newb + | otherwise = return newb + where + cell = getc b i + nc = filter (`notElem` off) cell + newb = (i, nc) : [ f | f <- b, fst f != i ] + +turnoff :: Int -> Zelle -> String -> Brett -> IO Brett +turnoff i off msg b = do + -- print (pname i) + -- print ": set to " + -- print nc + -- print " by clearing " + -- print off + -- print " " + -- println msg + return newb + where + cell = getc b i + nc = filter (`notElem` off) cell + newb = (i, nc) : [ f | f <- b, fst f != i ] + +turnoffh ps off msg b = foldM toh b ps + where + toh b p = turnoff p off msg b + +setto :: Position -> Element -> String -> Brett -> IO Brett +setto i n cname b = do + -- print (pname i) + -- print ": set to " + -- print n + -- print " (hidden single in " + -- print cname + -- println ")" + return newb + where + nf = [n] + newb = (i, nf) : [ f | f <- b, fst f != i ] + + +-- ----------------------------- SOLVING STRATEGIES --------------------------------------------- +-- reduce candidate sets that contains numbers already in same row, col or box +-- This finds (and logs) NAKED SINGLEs in passing. +reduce b = [ turnoff1 p sss | (p,cell) <- b, -- for each field + unsolved cell, -- with more than 1 candidate + -- single fields in containers that are candidates of that field + sss = [ s | (rcb, _) <- containers, [s] <- map (getc b) (rcb p), s `elem` cell], + sss != [] ] -- collect field index, elements to remove from candidate set + +-- look for a number that appears in exactly 1 candidate set of a container +-- this number can go in no other place (HIDDEN SINGLE) +hiddenSingle b = [ setto i n cname | -- select index, number, containername + (cname, rcb) <- allrcb, -- FOR rcb IN allrcb + n <- elements, -- FOR n IN elements + fs = filter (unsolved • snd) (map (getf b) rcb), + occurs = filter ((n `elem`) • snd) fs, + length occurs == 1, + (i, _) <- occurs ] + +-- look for NAKED PAIRS, TRIPLES, QUADS +nakedPair n b = [ turnoff p t ("(naked tuple in " ++ nm ++ ")") | -- SELECT pos, tuple, name + -- n <- [2,3,4], // FOR n IN [2,3,4] + (nm, rcb) <- allrcb, -- FOR rcb IN containers + fs = map (getf b) rcb, -- let fs = fields for rcb positions + u = (fold union [] . filter unsolved . map snd) fs, -- let u = union of non single candidates + t <- n `outof` u, -- FOR t IN n-tuples + hit = (filter ((`subset` t) . snd) . filter (unsolved . snd)) fs, + length hit == n, + (p, cell) <- fs, + p `notElem` map fst hit, + any (`elem` cell) t + ] + +-- look for HIDDEN PAIRS, TRIPLES or QUADS +hiddenPair n b = [ turnoff p off ("(hidden " ++ show t ++ " in " ++ nm ++ ")") | -- SELECT pos, tuple, name + -- n <- [2,3,4], // FOR n IN [2,3,4] + (nm, rcb) <- allrcb, -- FOR rcb IN containers + fs = map (getf b) rcb, -- let fs = fields for rcb positions + u = (fold union [] . filter ((>1) . length) . map snd) fs, -- let u = union of non single candidates + t <- n `outof` u, -- FOR t IN n-tuples + hit = (filter (any ( `elem` t) . snd) . filter (unsolved . snd)) fs, + length hit == n, + off = (fold union [] . map snd) hit `minus` t, + off != [], + (p, cell) <- hit, + ! (cell `subset` t) + ] + +a `subset` b = all (`elem` b) a +a `union` b = uniq (sort (a ++ b)) +a `minus` b = filter (`notElem` b) a +a `common` b = filter (`elem` b) a +n `outof` as + | length as < n = [] + | [] <- as = [] + | 1 >= n = map (:[]) as + | (a:bs) <- as = map (a:) ((n-1) `outof` bs) ++ (n `outof` bs) + | otherwise = undefined -- cannot happen because either as is empty or not + +same f a b = b `elem` f a + +intersectionlist = [(allboxs, row, "box/row intersection"), (allboxs, col, "box/col intersection"), + (allrows ++ allcols, box, "line/box intersection")] +intersections b = [ + turnoff pos [c] reason | -- SELECT position, candidate, reson + (from, container, reason) <- intersectionlist, + rcb <- from, + fs = (filter (unsolved . snd) . map (getf b)) rcb, -- fs = fields in from with more than 1 candidate + c <- (fold union [] • map snd) fs, -- FOR c IN union of candidates + cpos = (map fst • filter ((c `elem`) • snd)) fs, -- cpos = positions where c occurs + cpos != [], -- WHERE cpos is not empty + all (same container (head cpos)) (tail cpos), -- WHERE all positions are in the intersection + -- we can remove all occurences of c that are in container, but not in from + (pos, cell) <- map (getf b) (container (head cpos)), + c `elem` cell, + pos `notElem` rcb ] + + +-- look for an XY Wing +-- - there exists a cell A with candidates X and Y +-- - there exists a cell B with candidates X and Z that shares a container with A +-- - there exists a cell C with candidates Y and Z that shares a container with A +-- reasoning +-- - if A is X, B will be Z +-- - if A is Y, C will be Z +-- - since A will indeed be X or Y -> B or C will be Z +-- - thus, no cell that can see B and C can be Z +xyWing board = [ turnoff p [z] ("xy wing " ++ pname b ++ " " ++ pname c ++ " because of " ++ pname a) | + (a, [x,y]) <- board, -- there exists a cell a with candidates x and y + rcba = map (getf board) (row a ++ col a ++ box a), -- rcba = all fields that share a container with a + (b, [b1, b2]) <- rcba, + b != a, + b1 == x && b2 != y || b2 == x && b1 != y, -- there exists a cell B with candidates x and z + z = if b1 == x then b2 else b1, + (c, [c1, c2]) <- rcba, + c != a, c!= b, + c1 == y && c2 == z || c1 == z && c2 == y, -- there exists a cell C with candidates y and z + ps = (uniq . sort) ((row b ++ col b ++ box b) `common` (row c ++ col c ++ box c)), + -- remove z in ps + (p, cs) <- map (getf board) ps, + p != b, p != c, + z `elem` cs ] + +-- look for a N-Fish (2: X-Wing, 3: Swordfish, 4: Jellyfish) +-- When all candidates for a particular digit in N rows are located +-- in only N columns, we can eliminate all candidates from those N columns +-- which are not located on those N rows +fish n board = fish "row" allrows row col ++ fish "col" allcols col row where + fishname 2 = "X-Wing" + fishname 3 = "Swordfish" + fishname 4 = "Jellyfish" + fishname _ = "unknown fish" + fish nm allrows row col = [ turnoff p [x] (fishname n ++ " in " ++ nm ++ " " ++ show (map (pname . head) rset)) | + rset <- n `outof` allrows, -- take n rows (or cols) + x <- elements, -- look for certain number + rflds = map (filter ((>1) . length . snd) . map (getf board)) rset, -- unsolved fields in the rowset + colss = (map (map (head . col . fst) . filter ((x `elem`) . snd)) rflds), -- where x occurs in candidates + all ((>1) . length) colss, -- x must appear in at least 2 cols + cols = fold union [] colss, + length cols == n, + cstart <- cols, + (p, cell) <- map (getf board) (col cstart), + x `elem` cell, + all (p `notElem`) rset] + + +-- compute immediate consequences of an assumption of the form (p `IS` e) or (p `ISNOT` e) +conseq board (IS p e) = uniq (sort ([ p `ISNOT` x | x <- getc board p, x != e ] ++ + [ a `ISNOT` e | + (a,cs) <- map (getf board) (row p ++ col p ++ box p), + a != p, + e `elem` cs + ])) +conseq board (ISNOT p e) = uniq (sort ([ p `IS` x | cs = getc board p, length cs == 2, x <- cs, x != e ] ++ + [ a `IS` e | + cp <- [row p, box p, col p], + as = (filter ((e `elem`) . getc board) . filter (p!=)) cp, + length as == 1, + a = head as + ])) + +-- check if two assumptions contradict each other +contradicts (IS a x) (IS b y) = a==b && x!=y +contradicts (IS a x) (ISNOT b y) = a==b && x==y +contradicts (ISNOT a x) (IS b y) = a==b && x==y +contradicts (ISNOT _ _) (ISNOT _ _) = false + +-- get the Position of an Assumption +aPos (IS p _) = p +aPos (ISNOT p _) = p + +-- get List of elements that must be turned off when assumption is true/false +toClear board true (IS p x) = filter (x!=) (getc board p) +toClear board false (IS p x) = [x] +toClear board true (ISNOT p x) = [x] +toClear board false (ISNOT p x) = filter (x!=) (getc board p) + + +-- look for assumptions whose implications contradict themself +chain board paths = [ solution a (head cs) (reverse cs) | + (a, css) <- paths, + cs <- take 1 [ cs | cs <- css, contradicts a (head cs) ] + ] + where + solution a c cs = turnoff (aPos a) (toClear board false a) reason where + reason = "Assumption " ++ show a ++ " implies " ++ show c ++ "\n\t" + ++ showcs cs ++ "\n\t" + ++ "Therefore, " ++ show a ++ " must be false." + +-- look for an assumption that yields to contradictory implications +-- this assumption must be false +chainContra board paths = [ solution a (reverse pro) (reverse contra) | + (a, css) <- paths, -- FOR ALL assumptions "a" with list of conlusions "css" + (pro, contra) <- take 1 [ (pro, contra) | + pro <- (uniqBy (using head) . sortBy (comparing head)) css, -- FOR ALL conslusion chains "pro" + c = head pro, -- LET "c" BE the final conclusion + contra <- take 1 (filter ((contradicts c) . head) css) -- THE FIRST conclusion that contradicts c + ] + ] + where + solution a pro con = turnoff (aPos a) (toClear board false a) reason where + reason = ("assumption " ++ show a ++ " leads to contradictory conclusions\n\t" + ++ showcs pro ++ "\n\t" ++ showcs con) + + + +-- look for a common implication c of some assumptions ai, where at least 1 ai is true +-- so that (a0 OR a1 OR a2 OR ...) IMPLIES c +-- For all cells pi in same container that have x as candidate, we can construct (p0==x OR p1==x OR ... OR pi==x) +-- For a cell p with candidates ci, we can construct (p==c0 OR p==c1) +cellRegionChain board paths = [ solution b as (map head os) | + as <- cellas ++ regionas, -- one of as must be true + iss = filter ((`elem` as) . fst) paths, -- the implications for as + (a, ass) <- take 1 iss, -- implications for first assumption + fs <- (uniqBy (using head) . sortBy (comparing head)) ass, + b = head fs, -- final conclusions of first assumption + os = [fs] : map (take 1 . filter ((b==) . head) . snd) (tail iss), -- look for implications with same conclusion + all ([]!=) os] + where + cellas = [ map (p `IS`) candidates | (p, candidates@(_:_:_)) <- board ] + regionas = [ map (`IS` e) ps | + region <- map (map (getf board)) (allrows ++ allcols ++ allboxs), + e <- elements, + ps = map fst (filter ((e `elem`) . snd) region), + length ps > 1 ] + solution b as oss = turnoff (aPos b) (toClear board true b) reason where + reason = "all of the assumptions " ++ joined ", " (map show as) ++ " imply " ++ show b ++ "\n\t" + ++ joined "\n\t" (map (showcs . reverse) oss) ++ "\n\t" + ++ "One of them must be true, so " ++ show b ++ " must be true." + + +{- + Wir brauchen für einige Funktionen eine Datenstruktur wie + [ (Assumption, [[Assumption]]) ] + d.i. eine Liste von möglichen Annahmen samt aller Schlußketten. + Idealerweise sollte die Schlußkette in umgekehrter Reihenfolge vorliegen, + dann kann man einfach finden: + - Annahmen, die zum Selbstwiderspruch führen. + - alles, was aus einer bestimmten Annahme folgt (map (map head) [[a]]) + -... +-} +--- Liste aller Annahmen für ein bestimmtes Brett +assumptions :: Brett -> [Assumption] +assumptions board = [ a | + (p, cs) <- board, + !(single cs), + a <- map (ISNOT p) cs ++ map (IS p) cs ] + +consequences :: Brett -> [Assumption] -> [[Assumption]] +consequences board as = map (conseq board) as + +acstree :: Brett -> Tree Assumption [Assumption] +acstree board = Tree.fromList (zip as cs) + where + as = assumptions board + cs = consequences board as + +-- bypass maybe on tree lookup +find :: Tree Assumption [Assumption] -> Assumption -> [Assumption] +find t a + | Just cs <- t.lookup a = cs + | otherwise = error ("no consequences for " ++ show a) + +-- for performance resons, we confine ourselves to implication chains of length 20 per assumption +mkPaths :: Tree Assumption [Assumption] -> [ (Assumption, [[Assumption]]) ] +mkPaths acst = map impl (keys acst) -- {[a1], [a2], [a3] ] + where + -- [Assumption] -> [(a, [chains, ordered by length] + impl a = (a, impls [[a]]) + impls ns = (take 1000 • concat • takeUntil null • iterate expandchain) ns + -- expandchain :: [[Assumption]] -> [[Assumption]] + expandchain css = [ (n:a:as) | + (a : as) <- css, -- list of assumptions + n <- find acst a, -- consequences of a + n `notElem` as -- avoid loops + ] + -- uni (a:as) = a : uni (filter ((head a !=) • head) as) + -- uni [] = empty + -- empty = [] + + +-- ------------------ SOLVE A SUDOKU -------------------------- +-- Apply all available strategies until nothing changes anymore +-- Strategy functions are supposed to return a list of +-- functions, which, when applied to a board, give a changed board. +-- When a strategy does not find anything to alter, +-- it returns [], and the next strategy can be tried. +solve b + | all (single . snd) b = result "Solved" b + | any (([]==) . snd) b = result "not solvable" b + | res@(_:_) <- reduce b = apply b res >>=solve -- compute smallest candidate sets + -- comment "candidate sets are up to date" = () + | res@(_:_) <- hiddenSingle b = apply b res >>= solve -- find HIDDEN SINGLES + -- comment "no more hidden singles" = () + | res@(_:_) <- intersections b = apply b res >>= solve -- find locked candidates + -- comment "no more intersections" = () + | res@(_:_) <- nakedPair 2 b = apply b res >>= solve -- find NAKED PAIRS, TRIPLES or QUADRUPELS + -- comment "no more naked pairs" = () + | res@(_:_) <- hiddenPair 2 b = apply b res >>= solve -- find HIDDEN PAIRS, TRIPLES or QUADRUPELS + -- comment "no more hidden pairs" = () + -- res@(_:_) <- nakedPair 3 b = apply b res >>= solve // find NAKED PAIRS, TRIPLES or QUADRUPELS + -- | comment "no more naked triples" = () + -- res@(_:_) <- hiddenPair 3 b = apply b res >>= solve // find HIDDEN PAIRS, TRIPLES or QUADRUPELS + -- | comment "no more hidden triples" = () + -- res@(_:_) <- nakedPair 4 b = apply b res >>=solve // find NAKED PAIRS, TRIPLES or QUADRUPELS + -- | comment "no more naked quadruples" = () + -- res@(_:_) <- hiddenPair 4 b = apply b res >>=solve // find HIDDEN PAIRS, TRIPLES or QUADRUPELS + -- | comment "no more hidden quadruples" = () + | res@(_:_) <- xyWing b = apply b res >>=solve -- find XY WINGS + -- comment "no more xy wings" = () + | res@(_:_) <- fish 2 b = apply b res >>=solve -- find 2-FISH + -- comment "no more x-wings" = () + -- res@(_:_) <- fish 3 b = apply b res >>=solve // find 3-FISH + -- | comment "no more swordfish" = () + -- res@(_:_) <- fish 4 b = apply b res >>=solve // find 4-FISH + -- | comment "no more jellyfish" = () + -- | comment pcomment = () + | res@(_:_) <- chain b paths = apply b (take 9 res) >>= solve -- find forcing chains + | res@(_:_) <- cellRegionChain b paths = apply b (take 9 res) >>= solve -- find common conclusion for true assumption + | res@(_:_) <- chainContra b paths = apply b (take 9 res) >>= solve -- find assumptions that allow to infer both a and !a + -- comment "consistent conclusions only" = () + + | otherwise = result "ambiguous" b + where + apply brd fs = foldM (\b\f -> f b) brd fs + paths = mkPaths (acstree b) + -- pcomment = show (length paths) ++ " assumptions with " ++ show (fold (+) 0 (map (length <~ snd) paths)) + -- ++ " implication chains" + +-- comment com = do stderr << com << "\n" for false +-- log com = do stderr << com << "\n" for true + +--- turn a string into a row +mkrow :: String -> [Zelle] +mkrow s = mkrow1 xs + where + xs = s ++ "---------" -- make sure at least 9 elements + mkrow1 xs = (take 9 • filter ([]!=) • map f • unpacked) xs + f x | x >= '1' && x <= '9' = [ord x - ord '0'] + | x == ' ' = [] -- ignored + | otherwise = elements + +main ["-h"] = main [] +main ["-help"] = main [] +main [] = do + mapM_ stderr.println [ + "usage: java Sudoku file ...", + " java Sudoku position", + "where position is a 81 char string consisting of digits", + "One can get such a string by going to", + "http://www.sudokuoftheday.com/pages/s-o-t-d.php", + "Right click on the puzzle and open it in new tab", + "Copy the 81 digits from the URL in the address field of your browser.", + "", + "There is also a file with hard sudokus in examples/top95.txt\n"] + return () + + +main [s@#^[0-9\W]{81}$#] = solve board >> return () + where + board = zip positions felder + felder = decode s + +main files = forM_ files sudoku + where + sudoku file = do + br <- openReader file + lines <- BufferedReader.getLines br + bs <- process lines + ss <- mapM (\b -> print "Puzzle: " >> printb b >> solve b) bs + println ("Euler: " ++ show (sum (map res012 ss))) + return () + +-- "--3-" => [1..9, 1..9, [3], 1..9] +decode s = map candi (unpacked s) where + candi c | c >= '1' && c <= '9' = [(ord c - ord '0')] + | otherwise = elements +process [] = return [] +process (s:ss) + | length s == 81 = consider b1 + | length s == 9, + length acht == 8, + all ((9==) • length) acht = consider b2 + | otherwise = do + stderr.println ("skipped line: " ++ s) + process ss + where + acht = take 8 ss + neun = fold (++) "" (s:acht) + b1 = zip positions (decode s) + b2 = zip positions (decode neun) + consider b = do + -- print "Puzzle: " + -- printb b + bs <- process ss + return (b:bs) + diff --git a/samples/Frege/SwingExamples.fr b/samples/Frege/SwingExamples.fr new file mode 100644 index 00000000..73569546 --- /dev/null +++ b/samples/Frege/SwingExamples.fr @@ -0,0 +1,79 @@ +package examples.SwingExamples where + +import Java.Awt (ActionListener) +import Java.Swing + + +main _ = do + rs <- mapM Runnable.new [helloWorldGUI, buttonDemoGUI, celsiusConverterGUI] + mapM_ invokeLater rs + println "Hit enter to end ...." + s <- getLine + return () + +celsiusConverterGUI = do + tempTextField <- JTextField.new() + celsiusLabel <- JLabel.new () + convertButton <- JButton.new () + fahrenheitLabel <- JLabel.new () + frame <- JFrame.new () + frame.setDefaultCloseOperation JFrame.dispose_on_close + frame.setTitle "Celsius Converter" + celsiusLabel.setText "Celsius" + convertButton.setText "Convert" + let convertButtonActionPerformed _ = do + celsius <- tempTextField.getText + case celsius.double of + Left _ -> fahrenheitLabel.setText ("not a valid number: " ++ celsius) + Right c -> fahrenheitLabel.setText (show (c*1.8 + 32.0).long ++ " Fahrenheit") + return () + ActionListener.new convertButtonActionPerformed >>= convertButton.addActionListener + fahrenheitLabel.setText "Fahrenheit" + contentPane <- frame.getContentPane + layout <- GroupLayout.new contentPane + contentPane.setLayout layout + -- TODO continue + -- http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/uiswing/examples/learn/CelsiusConverterProject/src/learn/CelsiusConverterGUI.java + frame.pack + frame.setVisible true + +helloWorldGUI = do + frame <- JFrame.new "Hello World Frege" + frame.setDefaultCloseOperation(JFrame.dispose_on_close) + label <- JLabel.new "Hello World!" + cp <- frame.getContentPane + cp.add label + frame.pack + frame.setVisible true + +buttonDemoGUI = do + frame <- JFrame.new "Button Demo" + frame.setDefaultCloseOperation(JFrame.dispose_on_close) + newContentPane <- JPanel.new () + b1::JButton <- JButton.new "Disable middle button" + b1.setVerticalTextPosition SwingConstants.center + b1.setHorizontalTextPosition SwingConstants.leading + b2::JButton <- JButton.new "Middle button" + b2.setVerticalTextPosition SwingConstants.center + b2.setHorizontalTextPosition SwingConstants.leading + b3::JButton <- JButton.new "Enable middle button" + b3.setVerticalTextPosition SwingConstants.center + b3.setHorizontalTextPosition SwingConstants.leading + b3.setEnabled false + let action1 _ = do + b2.setEnabled false + b1.setEnabled false + b3.setEnabled true + action3 _ = do + b2.setEnabled true + b1.setEnabled true + b3.setEnabled false + ActionListener.new action1 >>= b1.addActionListener + ActionListener.new action3 >>= b3.addActionListener + newContentPane.add b1 + newContentPane.add b2 + newContentPane.add b3 + newContentPane.setOpaque true + frame.setContentPane newContentPane + frame.pack + frame.setVisible true diff --git a/samples/G-code/duettest.g b/samples/G-code/duettest.g new file mode 100644 index 00000000..bd8b73a4 --- /dev/null +++ b/samples/G-code/duettest.g @@ -0,0 +1,57 @@ +; RepRapPro Ormerod +; Board test GCodes +M111 S1; Debug on +G21 ; mm +G90 ; Absolute positioning +M83 ; Extrusion relative +M906 X800 Y800 Z800 E800 ; Motor currents (mA) +T0 ; Extruder 0 +G1 X50 F500 +G1 X0 +G4 P500 +G1 Y50 F500 +G1 Y0 +G4 P500 +G1 Z20 F200 +G1 Z0 +G4 P500 +G1 E20 F200 +G1 E-20 +G4 P500 +M106 S255 +G4 P500 +M106 S0 +G4 P500 +M105 +G10 P0 S100 +T0 +M140 S100 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +G4 P5000 +M105 +M0 + + + + diff --git a/samples/G-code/lm.g b/samples/G-code/lm.g new file mode 100644 index 00000000..4b60a136 --- /dev/null +++ b/samples/G-code/lm.g @@ -0,0 +1,25912 @@ +48 36266 43 38 + 0 0.259 + 1 0.00232 + 2 0.0392 + 3 0.0317 + 4 0.141 + 6 0.000138 + 7 0.0468 + 8 0.036 + 9 0.0021 + 10 0.00146 + 13 0.0395 + 14 0.0443 + 15 0.00874 + 16 0.000331 + 18 0.013 + 19 0.0104 + 20 0.0106 + 21 0.121 + 22 0.0148 + 23 0.00816 + 24 0.000772 + 25 0.000165 + 26 0.004 + 28 0.0217 + 29 0.0184 + 30 0.00976 + 31 0.0173 + 32 0.00767 + 33 0.0122 + 34 5.51e-05 + 35 5.51e-05 + 36 0.000276 + 37 0.000551 + 38 2.76e-05 + 39 0.00645 + 40 0.000138 + 41 0.0352 + 42 0.00447 + 43 0.000221 + 44 0.00149 + 45 0.0171 + 46 0.00105 + 47 0.0106 + + 0 4 3 0 + 2 0.25 + 13 0.5 + 19 0.25 + + 2 619 18 15 + 0 0.00323 + 3 0.00808 + 4 0.00808 + 7 0.00162 + 8 0.784 + 9 0.042 + 10 0.00646 + 13 0.0517 + 14 0.00323 + 15 0.00969 + 20 0.00162 + 28 0.00162 + 29 0.00162 + 30 0.00485 + 31 0.0307 + 41 0.0178 + 42 0.00969 + 46 0.0145 + + 3 1 1 0 + 3 1 + + 4 1 1 0 + 4 1 + + 8 526 12 0 + 4 0.0076 + 7 0.0019 + 8 0.901 + 10 0.0019 + 13 0.0342 + 15 0.0019 + 29 0.0019 + 30 0.0057 + 31 0.019 + 41 0.0114 + 42 0.00951 + 46 0.0038 + + 9 37 5 0 + 3 0.027 + 8 0.162 + 9 0.703 + 41 0.0811 + 42 0.027 + + 10 3 1 0 + 10 1 + + 13 15 4 0 + 3 0.0667 + 13 0.8 + 14 0.0667 + 41 0.0667 + + 14 1 1 0 + 14 1 + + 15 5 1 0 + 15 1 + + 20 1 1 0 + 20 1 + + 21 5 3 0 + 0 0.2 + 8 0.6 + 41 0.2 + + 28 1 1 0 + 28 1 + + 31 10 2 0 + 13 0.1 + 31 0.9 + + 39 1 1 0 + 3 1 + + 45 7 1 0 + 46 1 + + 48 2 2 0 + 0 0.5 + 3 0.5 + + 3 1036 24 8 + 0 0.00869 + 2 0.00965 + 3 0.0425 + 4 0.496 + 7 0.0734 + 8 0.0502 + 9 0.000965 + 13 0.00579 + 14 0.000965 + 15 0.029 + 18 0.0463 + 20 0.0299 + 24 0.000965 + 26 0.000965 + 28 0.00579 + 30 0.00483 + 31 0.0029 + 32 0.00193 + 33 0.0029 + 38 0.000965 + 39 0.166 + 41 0.0154 + 42 0.0029 + 45 0.000965 + + 2 4 4 0 + 7 0.25 + 13 0.25 + 28 0.25 + 39 0.25 + + 3 39 6 0 + 4 0.128 + 7 0.385 + 8 0.0256 + 18 0.0769 + 32 0.0256 + 39 0.359 + + 8 34 10 0 + 0 0.0294 + 2 0.0882 + 3 0.0294 + 4 0.5 + 8 0.0882 + 18 0.0294 + 20 0.0882 + 28 0.0294 + 32 0.0294 + 39 0.0882 + + 9 2 2 0 + 0 0.5 + 13 0.5 + + 13 769 21 0 + 0 0.0065 + 2 0.0065 + 3 0.0325 + 4 0.635 + 7 0.078 + 8 0.0611 + 9 0.0013 + 13 0.0026 + 14 0.0013 + 15 0.0351 + 18 0.0572 + 20 0.0364 + 24 0.0013 + 26 0.0013 + 28 0.0052 + 30 0.0065 + 31 0.0039 + 33 0.0039 + 41 0.0195 + 42 0.0039 + 45 0.0013 + + 14 2 2 0 + 2 0.5 + 41 0.5 + + 41 1 1 0 + 13 1 + + 47 184 9 0 + 0 0.0109 + 2 0.00543 + 3 0.0978 + 4 0.0163 + 8 0.00543 + 13 0.00543 + 15 0.0163 + 38 0.00543 + 39 0.837 + + 4 59 13 4 + 0 0.305 + 2 0.0847 + 7 0.186 + 10 0.0169 + 13 0.0678 + 21 0.0339 + 28 0.0678 + 29 0.0678 + 30 0.0169 + 31 0.0339 + 41 0.0508 + 42 0.0169 + 47 0.0508 + + 2 5 2 0 + 0 0.2 + 7 0.8 + + 21 4 2 0 + 0 0.75 + 31 0.25 + + 47 8 5 0 + 2 0.375 + 7 0.25 + 10 0.125 + 29 0.125 + 47 0.125 + + 48 3 3 0 + 0 0.333 + 41 0.333 + 42 0.333 + + 6 14 7 1 + 4 0.143 + 6 0.357 + 7 0.143 + 13 0.0714 + 20 0.0714 + 40 0.0714 + 45 0.143 + + 6 5 3 0 + 4 0.4 + 7 0.4 + 20 0.2 + + 7 72 19 3 + 0 0.222 + 2 0.0139 + 3 0.0278 + 7 0.0278 + 8 0.0278 + 9 0.0139 + 13 0.0694 + 14 0.0833 + 15 0.0278 + 21 0.153 + 22 0.0139 + 28 0.0278 + 29 0.0417 + 30 0.0139 + 31 0.0833 + 33 0.0278 + 41 0.0694 + 42 0.0278 + 47 0.0278 + + 8 21 10 0 + 0 0.0952 + 9 0.0476 + 13 0.0476 + 14 0.0476 + 21 0.286 + 22 0.0476 + 28 0.0476 + 31 0.19 + 33 0.0476 + 41 0.143 + + 13 5 5 0 + 3 0.2 + 7 0.2 + 13 0.2 + 42 0.2 + 47 0.2 + + 21 6 5 0 + 0 0.333 + 8 0.167 + 14 0.167 + 29 0.167 + 41 0.167 + + 8 10450 37 10 + 0 0.257 + 1 0.0022 + 2 0.0624 + 3 0.00545 + 4 0.0268 + 7 0.0371 + 8 0.0275 + 9 0.00191 + 10 0.00383 + 13 0.0362 + 14 0.0615 + 15 0.00766 + 16 0.000287 + 18 0.00287 + 19 0.00957 + 20 0.00268 + 21 0.235 + 22 0.0462 + 23 0.0262 + 24 0.000287 + 26 0.00373 + 28 0.0187 + 29 0.0162 + 30 0.00612 + 31 0.0156 + 32 0.00689 + 33 0.0111 + 37 0.000574 + 39 0.00593 + 40 0.000191 + 41 0.0333 + 42 0.00201 + 43 9.57e-05 + 44 0.000383 + 45 0.0185 + 46 0.000957 + 47 0.00785 + + 2 485 30 0 + 0 0.103 + 2 0.0206 + 3 0.00412 + 4 0.181 + 7 0.146 + 8 0.0701 + 9 0.00412 + 13 0.00619 + 14 0.00206 + 15 0.00825 + 18 0.0247 + 19 0.00206 + 20 0.0309 + 21 0.0577 + 22 0.0186 + 23 0.0144 + 24 0.00206 + 26 0.0165 + 28 0.0227 + 29 0.0124 + 30 0.0206 + 31 0.00619 + 32 0.00412 + 33 0.0144 + 40 0.00206 + 41 0.126 + 42 0.00825 + 45 0.0454 + 46 0.00206 + 47 0.0227 + + 8 227 22 0 + 0 0.0308 + 2 0.0837 + 3 0.0176 + 4 0.348 + 7 0.185 + 8 0.0617 + 10 0.00881 + 18 0.0176 + 19 0.00441 + 20 0.0352 + 23 0.00441 + 26 0.022 + 28 0.00441 + 29 0.0264 + 30 0.0132 + 31 0.00441 + 32 0.00441 + 33 0.00441 + 41 0.0264 + 42 0.00441 + 46 0.00441 + 47 0.0881 + + 9 9 5 0 + 0 0.222 + 2 0.111 + 4 0.444 + 20 0.111 + 28 0.111 + + 10 12 2 0 + 4 0.5 + 18 0.5 + + 23 4 1 0 + 4 1 + + 26 11 6 0 + 0 0.0909 + 4 0.273 + 7 0.364 + 29 0.0909 + 41 0.0909 + 45 0.0909 + + 41 91 20 0 + 0 0.0879 + 2 0.022 + 3 0.011 + 4 0.187 + 7 0.231 + 8 0.022 + 15 0.011 + 18 0.011 + 20 0.011 + 21 0.033 + 22 0.022 + 23 0.022 + 28 0.011 + 29 0.011 + 30 0.011 + 31 0.011 + 41 0.143 + 42 0.022 + 45 0.0879 + 47 0.033 + + 42 4 3 0 + 4 0.5 + 7 0.25 + 21 0.25 + + 46 9 1 0 + 45 1 + + 47 9595 37 0 + 0 0.272 + 1 0.0024 + 2 0.0646 + 3 0.00521 + 4 0.00803 + 7 0.0258 + 8 0.0247 + 9 0.00188 + 10 0.00396 + 13 0.0391 + 14 0.0669 + 15 0.00782 + 16 0.000313 + 18 0.00073 + 19 0.0102 + 20 0.000313 + 21 0.252 + 22 0.0492 + 23 0.0275 + 24 0.000208 + 26 0.00271 + 28 0.0189 + 29 0.0162 + 30 0.00521 + 31 0.0165 + 32 0.00719 + 33 0.0113 + 37 0.000625 + 39 0.00646 + 40 0.000104 + 41 0.0278 + 42 0.00146 + 43 0.000104 + 44 0.000417 + 45 0.0158 + 46 0.000834 + 47 0.005 + + 9 882 28 4 + 0 0.22 + 1 0.00227 + 2 0.0737 + 3 0.0317 + 4 0.0249 + 7 0.0181 + 8 0.0159 + 13 0.0964 + 14 0.0351 + 15 0.00227 + 18 0.00113 + 19 0.0204 + 20 0.00113 + 21 0.339 + 22 0.00113 + 24 0.00113 + 26 0.00227 + 28 0.0147 + 29 0.0238 + 30 0.017 + 31 0.0068 + 32 0.00907 + 33 0.0102 + 34 0.00113 + 41 0.017 + 42 0.00113 + 45 0.00794 + 47 0.00454 + + 2 26 16 0 + 0 0.0769 + 1 0.0385 + 4 0.0385 + 7 0.0385 + 13 0.0385 + 14 0.115 + 19 0.0385 + 21 0.0385 + 28 0.115 + 29 0.0385 + 30 0.0769 + 32 0.0385 + 33 0.0385 + 41 0.154 + 45 0.0769 + 47 0.0385 + + 8 15 7 0 + 4 0.2 + 7 0.4 + 8 0.0667 + 13 0.0667 + 20 0.0667 + 28 0.0667 + 30 0.133 + + 41 7 7 0 + 0 0.143 + 2 0.143 + 4 0.143 + 7 0.143 + 14 0.143 + 28 0.143 + 32 0.143 + + 47 829 27 0 + 0 0.23 + 1 0.00121 + 2 0.0772 + 3 0.0338 + 4 0.0169 + 7 0.00965 + 8 0.0157 + 13 0.1 + 14 0.0326 + 15 0.00241 + 18 0.00121 + 19 0.0193 + 21 0.359 + 22 0.00121 + 24 0.00121 + 26 0.00241 + 28 0.00844 + 29 0.0241 + 30 0.0133 + 31 0.00724 + 32 0.00724 + 33 0.00965 + 34 0.00121 + 41 0.0133 + 42 0.00121 + 45 0.00603 + 47 0.00362 + + 10 101 11 2 + 0 0.0495 + 2 0.0495 + 4 0.277 + 7 0.119 + 8 0.119 + 18 0.158 + 20 0.0792 + 21 0.119 + 29 0.0099 + 42 0.0099 + 46 0.0099 + + 8 29 4 0 + 2 0.0345 + 4 0.552 + 18 0.241 + 20 0.172 + + 47 68 11 0 + 0 0.0735 + 2 0.0588 + 4 0.162 + 7 0.176 + 8 0.176 + 18 0.103 + 20 0.0294 + 21 0.176 + 29 0.0147 + 42 0.0147 + 46 0.0147 + + 13 1069 25 11 + 0 0.0131 + 2 0.0215 + 3 0.836 + 4 0.0187 + 7 0.0159 + 8 0.00935 + 9 0.00187 + 10 0.000935 + 13 0.0337 + 14 0.00281 + 15 0.00468 + 18 0.00281 + 20 0.00468 + 21 0.00468 + 22 0.000935 + 25 0.000935 + 26 0.00187 + 28 0.00374 + 29 0.00187 + 30 0.00281 + 31 0.00468 + 33 0.000935 + 41 0.00655 + 45 0.00281 + 47 0.00187 + + 2 32 12 0 + 2 0.0938 + 4 0.219 + 7 0.125 + 8 0.0938 + 15 0.0625 + 18 0.0312 + 20 0.0938 + 28 0.0312 + 30 0.0625 + 31 0.0625 + 33 0.0312 + 41 0.0938 + + 3 3 3 0 + 4 0.333 + 26 0.333 + 41 0.333 + + 8 23 10 0 + 0 0.304 + 2 0.13 + 3 0.0435 + 4 0.087 + 8 0.0435 + 13 0.13 + 21 0.13 + 41 0.0435 + 45 0.0435 + 47 0.0435 + + 9 4 2 0 + 0 0.25 + 4 0.75 + + 13 11 5 0 + 3 0.364 + 4 0.0909 + 7 0.182 + 8 0.273 + 26 0.0909 + + 21 1 1 0 + 25 1 + + 29 5 3 0 + 3 0.4 + 4 0.2 + 13 0.4 + + 31 13 6 0 + 0 0.154 + 3 0.308 + 4 0.154 + 7 0.0769 + 13 0.231 + 21 0.0769 + + 41 5 3 0 + 7 0.4 + 8 0.2 + 20 0.4 + + 42 2 2 0 + 18 0.5 + 47 0.5 + + 47 967 20 0 + 0 0.00414 + 2 0.0165 + 3 0.913 + 4 0.00207 + 7 0.00724 + 8 0.00207 + 9 0.00207 + 10 0.00103 + 13 0.029 + 14 0.0031 + 15 0.0031 + 18 0.00103 + 21 0.00103 + 22 0.00103 + 28 0.0031 + 29 0.00207 + 30 0.00103 + 31 0.0031 + 41 0.00207 + 45 0.00207 + + 14 13 7 0 + 2 0.0769 + 3 0.538 + 4 0.0769 + 14 0.0769 + 33 0.0769 + 42 0.0769 + 47 0.0769 + + 15 172 19 7 + 0 0.0174 + 2 0.064 + 3 0.0116 + 4 0.279 + 7 0.157 + 8 0.0291 + 15 0.198 + 18 0.0174 + 20 0.0116 + 26 0.00581 + 28 0.0116 + 31 0.0174 + 33 0.0116 + 41 0.0465 + 42 0.00581 + 43 0.00581 + 44 0.00581 + 45 0.0116 + 47 0.093 + + 2 6 4 0 + 4 0.5 + 7 0.167 + 8 0.167 + 41 0.167 + + 3 4 2 0 + 4 0.5 + 20 0.5 + + 8 54 11 0 + 0 0.0185 + 4 0.37 + 7 0.278 + 8 0.037 + 15 0.0185 + 18 0.037 + 26 0.0185 + 33 0.0185 + 41 0.0556 + 45 0.0185 + 47 0.13 + + 13 3 3 0 + 3 0.333 + 8 0.333 + 15 0.333 + + 15 30 10 0 + 2 0.1 + 3 0.0333 + 4 0.433 + 7 0.133 + 8 0.0333 + 15 0.0667 + 28 0.0333 + 33 0.0333 + 45 0.0333 + 47 0.1 + + 41 35 8 0 + 2 0.0286 + 4 0.286 + 7 0.143 + 15 0.286 + 18 0.0286 + 28 0.0286 + 41 0.0857 + 47 0.114 + + 47 39 10 0 + 0 0.0513 + 2 0.179 + 7 0.0513 + 15 0.487 + 31 0.0769 + 41 0.0256 + 42 0.0256 + 43 0.0256 + 44 0.0256 + 47 0.0513 + + 20 2 2 0 + 2 0.5 + 7 0.5 + + 21 3162 36 12 + 0 0.285 + 1 0.00316 + 2 0.038 + 3 0.00506 + 4 0.189 + 7 0.0664 + 8 0.00538 + 9 0.000633 + 13 0.0417 + 14 0.0237 + 15 0.00253 + 16 0.000316 + 18 0.0104 + 19 0.012 + 20 0.012 + 21 0.0904 + 22 0.00285 + 23 0.0038 + 24 0.00158 + 25 0.000316 + 26 0.00633 + 28 0.0266 + 29 0.0256 + 30 0.0139 + 31 0.0202 + 32 0.013 + 33 0.0164 + 35 0.000316 + 37 0.00158 + 41 0.0332 + 42 0.00506 + 43 0.000633 + 44 0.00127 + 45 0.031 + 46 0.000316 + 47 0.0104 + + 7 3 3 0 + 2 0.333 + 13 0.333 + 24 0.333 + + 8 1970 32 0 + 0 0.342 + 1 0.00305 + 2 0.0396 + 3 0.00457 + 4 0.177 + 7 0.0503 + 8 0.00508 + 9 0.000508 + 13 0.0315 + 14 0.0107 + 15 0.00152 + 18 0.00812 + 19 0.0142 + 20 0.00914 + 21 0.0985 + 22 0.00254 + 23 0.00254 + 24 0.00152 + 26 0.00558 + 28 0.0223 + 29 0.0198 + 30 0.0117 + 31 0.0173 + 32 0.0107 + 33 0.0183 + 37 0.00254 + 41 0.0294 + 42 0.00508 + 43 0.00102 + 44 0.00152 + 45 0.0421 + 47 0.0102 + + 9 279 22 0 + 0 0.305 + 1 0.00358 + 2 0.0287 + 3 0.00358 + 4 0.219 + 7 0.0645 + 13 0.0287 + 14 0.0179 + 19 0.00717 + 21 0.0358 + 26 0.0108 + 28 0.0538 + 29 0.0538 + 30 0.0323 + 31 0.0215 + 32 0.0251 + 33 0.0179 + 41 0.0394 + 42 0.0108 + 45 0.00717 + 46 0.00358 + 47 0.0108 + + 10 12 3 0 + 2 0.0833 + 4 0.667 + 18 0.25 + + 13 2 1 0 + 21 1 + + 21 123 19 0 + 0 0.358 + 1 0.00813 + 2 0.0732 + 4 0.0244 + 7 0.0325 + 13 0.0407 + 14 0.0976 + 15 0.00813 + 20 0.00813 + 21 0.0732 + 28 0.0244 + 29 0.0163 + 31 0.0488 + 32 0.0244 + 35 0.00813 + 41 0.0732 + 42 0.0244 + 45 0.0407 + 47 0.0163 + + 22 35 12 0 + 0 0.4 + 2 0.114 + 4 0.143 + 7 0.0286 + 13 0.0571 + 19 0.0286 + 21 0.0286 + 28 0.0571 + 29 0.0286 + 30 0.0286 + 32 0.0286 + 41 0.0571 + + 23 2 1 0 + 47 1 + + 31 380 26 0 + 0 0.1 + 2 0.0316 + 3 0.0158 + 4 0.395 + 7 0.168 + 8 0.0105 + 9 0.00263 + 13 0.0132 + 14 0.00263 + 18 0.0289 + 20 0.05 + 21 0.0368 + 22 0.00526 + 23 0.0132 + 25 0.00263 + 26 0.0132 + 28 0.0184 + 29 0.0184 + 30 0.00526 + 31 0.00526 + 32 0.00526 + 33 0.0105 + 41 0.0211 + 44 0.00263 + 45 0.0105 + 47 0.0132 + + 41 5 4 0 + 0 0.4 + 4 0.2 + 31 0.2 + 45 0.2 + + 45 6 5 0 + 0 0.167 + 4 0.167 + 7 0.333 + 19 0.167 + 45 0.167 + + 47 339 26 0 + 0 0.112 + 1 0.0059 + 2 0.0206 + 4 0.056 + 7 0.0649 + 8 0.00885 + 13 0.145 + 14 0.106 + 15 0.0118 + 16 0.00295 + 18 0.00885 + 19 0.0177 + 21 0.165 + 22 0.0059 + 23 0.0059 + 24 0.00295 + 26 0.00295 + 28 0.0383 + 29 0.0501 + 30 0.0265 + 31 0.0442 + 32 0.0206 + 33 0.0206 + 41 0.0472 + 45 0.0059 + 47 0.00295 + + 22 504 23 6 + 0 0.246 + 2 0.0417 + 3 0.00198 + 4 0.188 + 7 0.0258 + 13 0.0516 + 14 0.0675 + 15 0.00992 + 18 0.00397 + 19 0.0298 + 20 0.00198 + 21 0.101 + 24 0.00198 + 26 0.00595 + 28 0.0417 + 29 0.0218 + 30 0.0357 + 31 0.0198 + 32 0.00397 + 33 0.0159 + 41 0.0397 + 45 0.0179 + 47 0.0258 + + 8 431 21 0 + 0 0.262 + 2 0.0464 + 4 0.213 + 7 0.0255 + 13 0.0441 + 14 0.0534 + 15 0.00464 + 18 0.00464 + 19 0.0255 + 21 0.111 + 24 0.00232 + 26 0.00696 + 28 0.0394 + 29 0.0116 + 30 0.0302 + 31 0.0186 + 32 0.00464 + 33 0.0139 + 41 0.0418 + 45 0.0162 + 47 0.0232 + + 21 5 5 0 + 2 0.2 + 7 0.2 + 14 0.2 + 30 0.2 + 41 0.2 + + 30 3 2 0 + 0 0.667 + 7 0.333 + + 31 18 8 0 + 0 0.389 + 14 0.111 + 15 0.167 + 20 0.0556 + 29 0.111 + 33 0.0556 + 41 0.0556 + 45 0.0556 + + 45 3 2 0 + 4 0.667 + 30 0.333 + + 47 42 13 0 + 0 0.0476 + 3 0.0238 + 13 0.167 + 14 0.19 + 19 0.0952 + 21 0.0714 + 28 0.0714 + 29 0.0952 + 30 0.0714 + 31 0.0476 + 33 0.0238 + 45 0.0238 + 47 0.0714 + + 23 292 18 1 + 0 0.0651 + 2 0.0514 + 3 0.0274 + 4 0.634 + 8 0.0171 + 13 0.0103 + 14 0.00342 + 15 0.00342 + 18 0.0548 + 19 0.00342 + 20 0.0548 + 21 0.0171 + 28 0.00342 + 31 0.00342 + 32 0.00342 + 41 0.0205 + 42 0.00342 + 47 0.024 + + 21 11 4 0 + 2 0.0909 + 4 0.727 + 31 0.0909 + 41 0.0909 + + 24 7 2 0 + 0 0.857 + 21 0.143 + + 26 11 1 0 + 8 1 + + 28 10 7 0 + 2 0.1 + 15 0.1 + 19 0.1 + 21 0.1 + 26 0.3 + 28 0.2 + 45 0.1 + + 29 10 4 0 + 2 0.2 + 13 0.6 + 21 0.1 + 32 0.1 + + 30 47 15 1 + 0 0.447 + 2 0.0213 + 4 0.0426 + 7 0.0213 + 10 0.0213 + 13 0.0426 + 14 0.0213 + 21 0.106 + 22 0.0638 + 28 0.0213 + 31 0.0426 + 32 0.0213 + 41 0.0426 + 45 0.0426 + 47 0.0426 + + 2 3 2 0 + 4 0.667 + 7 0.333 + + 31 750 26 3 + 0 0.145 + 1 0.00133 + 2 0.0187 + 3 0.00267 + 4 0.0187 + 7 0.00933 + 8 0.00267 + 9 0.00133 + 13 0.0373 + 14 0.04 + 15 0.00133 + 19 0.00533 + 20 0.00133 + 21 0.583 + 22 0.028 + 23 0.0107 + 25 0.00133 + 28 0.0187 + 29 0.016 + 30 0.004 + 31 0.004 + 32 0.004 + 33 0.0147 + 41 0.00667 + 45 0.00933 + 47 0.0147 + + 2 19 10 0 + 2 0.0526 + 4 0.211 + 7 0.0526 + 8 0.105 + 14 0.0526 + 15 0.0526 + 21 0.105 + 22 0.0526 + 41 0.0526 + 47 0.263 + + 41 2 2 0 + 4 0.5 + 41 0.5 + + 47 728 24 0 + 0 0.15 + 1 0.00137 + 2 0.0179 + 3 0.00275 + 4 0.0124 + 7 0.00824 + 9 0.00137 + 13 0.0385 + 14 0.0398 + 19 0.00549 + 20 0.00137 + 21 0.598 + 22 0.0275 + 23 0.011 + 25 0.00137 + 28 0.0192 + 29 0.0151 + 30 0.00412 + 31 0.00412 + 32 0.00412 + 33 0.0151 + 41 0.00412 + 45 0.00962 + 47 0.00824 + + 32 2 1 0 + 14 1 + + 37 1 1 0 + 47 1 + + 39 235 16 2 + 2 0.017 + 4 0.66 + 7 0.034 + 8 0.0809 + 9 0.0128 + 13 0.00426 + 18 0.0468 + 20 0.0426 + 28 0.017 + 29 0.00851 + 30 0.00426 + 31 0.0128 + 36 0.0128 + 41 0.034 + 42 0.00851 + 44 0.00426 + + 3 172 15 0 + 2 0.0233 + 4 0.721 + 7 0.0291 + 8 0.0698 + 9 0.00581 + 13 0.00581 + 18 0.0407 + 20 0.0233 + 28 0.0233 + 29 0.0116 + 30 0.00581 + 31 0.0174 + 41 0.00581 + 42 0.0116 + 44 0.00581 + + 8 62 8 0 + 4 0.484 + 7 0.0484 + 8 0.113 + 9 0.0323 + 18 0.0645 + 20 0.0968 + 36 0.0484 + 41 0.113 + + 41 151 10 6 + 2 0.00662 + 3 0.00662 + 8 0.603 + 9 0.0464 + 13 0.0331 + 14 0.00662 + 15 0.232 + 21 0.0464 + 31 0.0132 + 42 0.00662 + + 2 11 4 0 + 8 0.545 + 9 0.273 + 13 0.0909 + 31 0.0909 + + 8 109 4 0 + 8 0.642 + 13 0.0183 + 15 0.321 + 21 0.0183 + + 9 2 1 0 + 9 1 + + 13 4 3 0 + 3 0.25 + 8 0.25 + 13 0.5 + + 21 13 4 0 + 8 0.385 + 9 0.154 + 14 0.0769 + 21 0.385 + + 49 1 1 0 + 2 1 + + 42 10 6 0 + 7 0.1 + 8 0.4 + 9 0.1 + 13 0.2 + 15 0.1 + 46 0.1 + + 45 91 17 2 + 0 0.473 + 1 0.011 + 2 0.0989 + 3 0.011 + 4 0.044 + 7 0.0879 + 8 0.033 + 9 0.011 + 13 0.0549 + 14 0.011 + 18 0.011 + 19 0.011 + 21 0.0769 + 22 0.033 + 28 0.011 + 30 0.011 + 31 0.011 + + 21 18 5 0 + 0 0.722 + 2 0.0556 + 4 0.0556 + 7 0.0556 + 21 0.111 + + 48 7 3 0 + 0 0.429 + 7 0.143 + 13 0.429 + + 46 13 3 0 + 8 0.692 + 9 0.0769 + 41 0.231 + + 47 14411 40 29 + 0 0.326 + 1 0.00291 + 2 0.0278 + 3 0.005 + 4 0.176 + 7 0.0572 + 8 0.0154 + 9 0.000555 + 10 0.000416 + 13 0.043 + 14 0.0509 + 15 0.00638 + 16 0.000416 + 18 0.0164 + 19 0.0131 + 20 0.0133 + 21 0.0505 + 22 0.000833 + 23 0.000139 + 24 0.000971 + 25 0.000208 + 26 0.00465 + 28 0.0271 + 29 0.0232 + 30 0.0121 + 31 0.021 + 32 0.00965 + 33 0.0153 + 34 6.94e-05 + 35 6.94e-05 + 36 0.000347 + 37 0.000625 + 40 0.000139 + 41 0.0389 + 42 0.00527 + 43 0.000208 + 44 0.0018 + 45 0.0184 + 46 0.000833 + 47 0.0134 + + 0 4 3 0 + 2 0.25 + 13 0.5 + 19 0.25 + + 2 4 3 0 + 0 0.5 + 7 0.25 + 29 0.25 + + 3 814 22 0 + 0 0.0111 + 2 0.0111 + 3 0.00614 + 4 0.63 + 7 0.0934 + 8 0.0639 + 9 0.00123 + 13 0.00369 + 14 0.00123 + 15 0.0319 + 18 0.059 + 20 0.0381 + 24 0.00123 + 26 0.00123 + 28 0.00614 + 30 0.00614 + 31 0.00369 + 32 0.00246 + 33 0.00369 + 41 0.0197 + 42 0.00369 + 45 0.00123 + + 4 55 12 0 + 0 0.327 + 2 0.0727 + 7 0.164 + 13 0.0727 + 21 0.0364 + 28 0.0727 + 29 0.0727 + 30 0.0182 + 31 0.0364 + 41 0.0545 + 42 0.0182 + 47 0.0545 + + 6 8 5 0 + 4 0.25 + 7 0.25 + 20 0.125 + 40 0.125 + 45 0.25 + + 7 60 17 0 + 0 0.267 + 2 0.0167 + 3 0.0333 + 7 0.0333 + 8 0.0333 + 13 0.0833 + 14 0.0833 + 15 0.0333 + 21 0.117 + 28 0.0333 + 29 0.0333 + 30 0.0167 + 31 0.1 + 33 0.0333 + 41 0.0167 + 42 0.0333 + 47 0.0333 + + 8 6320 35 0 + 0 0.424 + 1 0.00364 + 2 0.0198 + 3 0.00301 + 4 0.0399 + 7 0.0562 + 8 0.00918 + 9 0.000316 + 10 0.000949 + 13 0.0546 + 14 0.0835 + 15 0.00411 + 16 0.000475 + 18 0.00475 + 19 0.0158 + 20 0.00443 + 21 0.0685 + 22 0.00127 + 23 0.000158 + 24 0.000475 + 26 0.00459 + 28 0.0309 + 29 0.0267 + 30 0.0101 + 31 0.0258 + 32 0.0114 + 33 0.0184 + 37 0.000633 + 40 0.000158 + 41 0.0375 + 42 0.00301 + 44 0.000475 + 45 0.0209 + 46 0.00111 + 47 0.013 + + 9 432 27 0 + 0 0.449 + 1 0.00463 + 2 0.0648 + 3 0.00926 + 4 0.0394 + 7 0.0347 + 8 0.00231 + 13 0.0509 + 14 0.0417 + 15 0.00463 + 18 0.00231 + 19 0.0417 + 20 0.00231 + 21 0.0255 + 24 0.00231 + 26 0.00231 + 28 0.0278 + 29 0.0486 + 30 0.0347 + 31 0.0139 + 32 0.0185 + 33 0.0208 + 34 0.00231 + 41 0.0301 + 42 0.00231 + 45 0.0139 + 47 0.00926 + + 10 72 9 0 + 0 0.0694 + 2 0.0278 + 4 0.361 + 7 0.167 + 18 0.222 + 20 0.111 + 29 0.0139 + 42 0.0139 + 46 0.0139 + + 13 133 22 0 + 0 0.105 + 2 0.0602 + 3 0.0602 + 4 0.128 + 7 0.0902 + 8 0.0752 + 13 0.18 + 14 0.0226 + 15 0.015 + 18 0.0226 + 20 0.0376 + 21 0.0226 + 25 0.00752 + 26 0.015 + 28 0.0226 + 29 0.015 + 30 0.0226 + 31 0.0376 + 33 0.00752 + 41 0.0226 + 45 0.015 + 47 0.015 + + 14 5 5 0 + 4 0.2 + 14 0.2 + 33 0.2 + 42 0.2 + 47 0.2 + + 15 130 17 0 + 0 0.0231 + 2 0.0462 + 4 0.369 + 7 0.2 + 8 0.0385 + 15 0.0308 + 18 0.0231 + 20 0.0154 + 26 0.00769 + 28 0.0154 + 31 0.0231 + 33 0.0154 + 41 0.0385 + 43 0.00769 + 44 0.00769 + 45 0.0154 + 47 0.123 + + 21 2958 36 0 + 0 0.305 + 1 0.00338 + 2 0.0389 + 3 0.00507 + 4 0.2 + 7 0.069 + 8 0.00541 + 9 0.000338 + 13 0.0433 + 14 0.0237 + 15 0.0027 + 16 0.000338 + 18 0.0112 + 19 0.0128 + 20 0.0128 + 21 0.0541 + 22 0.00101 + 23 0.000338 + 24 0.00169 + 25 0.000338 + 26 0.00676 + 28 0.0284 + 29 0.0274 + 30 0.0145 + 31 0.0213 + 32 0.0139 + 33 0.0176 + 35 0.000338 + 37 0.00169 + 41 0.0311 + 42 0.00541 + 43 0.000338 + 44 0.00135 + 45 0.027 + 46 0.000338 + 47 0.0112 + + 22 451 23 0 + 0 0.275 + 2 0.0466 + 3 0.00222 + 4 0.208 + 7 0.0288 + 13 0.0355 + 14 0.071 + 15 0.0111 + 18 0.00443 + 19 0.0333 + 20 0.00222 + 21 0.0244 + 24 0.00222 + 26 0.00665 + 28 0.0466 + 29 0.0244 + 30 0.0399 + 31 0.0222 + 32 0.00443 + 33 0.0177 + 41 0.0443 + 45 0.02 + 47 0.0288 + + 23 286 18 0 + 0 0.0664 + 2 0.0524 + 3 0.028 + 4 0.647 + 8 0.0035 + 13 0.0105 + 14 0.0035 + 15 0.0035 + 18 0.0559 + 19 0.0035 + 20 0.0559 + 21 0.0105 + 28 0.0035 + 31 0.0035 + 32 0.0035 + 41 0.021 + 42 0.0035 + 47 0.0245 + + 24 7 2 0 + 0 0.857 + 21 0.143 + + 28 9 6 0 + 15 0.111 + 19 0.111 + 21 0.111 + 26 0.333 + 28 0.222 + 45 0.111 + + 29 5 4 0 + 2 0.4 + 13 0.2 + 21 0.2 + 32 0.2 + + 30 38 12 0 + 0 0.553 + 4 0.0526 + 7 0.0263 + 13 0.0263 + 14 0.0263 + 21 0.0789 + 28 0.0263 + 31 0.0526 + 32 0.0263 + 41 0.0526 + 45 0.0263 + 47 0.0526 + + 31 286 25 0 + 0 0.381 + 1 0.0035 + 2 0.0105 + 3 0.00699 + 4 0.042 + 7 0.0245 + 8 0.0035 + 9 0.0035 + 13 0.0385 + 14 0.105 + 15 0.0035 + 19 0.014 + 20 0.0035 + 21 0.119 + 22 0.0035 + 25 0.0035 + 28 0.049 + 29 0.042 + 30 0.0105 + 31 0.0105 + 32 0.0105 + 33 0.0385 + 41 0.014 + 45 0.021 + 47 0.0385 + + 32 2 1 0 + 14 1 + + 39 234 16 0 + 2 0.0128 + 4 0.662 + 7 0.0342 + 8 0.0812 + 9 0.0128 + 13 0.00427 + 18 0.047 + 20 0.0427 + 28 0.0171 + 29 0.00855 + 30 0.00427 + 31 0.0128 + 36 0.0128 + 41 0.0342 + 42 0.00855 + 44 0.00427 + + 44 1 1 0 + 3 1 + + 45 74 15 0 + 0 0.581 + 1 0.0135 + 2 0.027 + 3 0.0135 + 4 0.0541 + 7 0.108 + 8 0.0405 + 13 0.0676 + 14 0.0135 + 18 0.0135 + 19 0.0135 + 21 0.0135 + 28 0.0135 + 30 0.0135 + 31 0.0135 + + 48 753 27 0 + 0 0.493 + 1 0.00531 + 2 0.0372 + 3 0.00133 + 4 0.089 + 7 0.0266 + 8 0.00266 + 13 0.0505 + 14 0.0398 + 15 0.00133 + 18 0.0186 + 19 0.00797 + 20 0.00797 + 21 0.0544 + 24 0.00266 + 26 0.00266 + 28 0.0133 + 29 0.0133 + 30 0.0093 + 31 0.00664 + 32 0.00531 + 33 0.0146 + 41 0.0452 + 42 0.0186 + 45 0.0212 + 46 0.00266 + 47 0.0093 + + 49 148 24 0 + 0 0.412 + 1 0.00676 + 2 0.0405 + 3 0.00676 + 4 0.142 + 7 0.027 + 13 0.00676 + 14 0.0203 + 15 0.0135 + 18 0.0135 + 19 0.00676 + 21 0.0405 + 26 0.00676 + 28 0.0608 + 29 0.0135 + 30 0.00676 + 31 0.0405 + 32 0.0135 + 33 0.0135 + 41 0.0473 + 42 0.00676 + 45 0.0203 + 46 0.00676 + 47 0.027 + + 55 268 22 0 + 0 0.31 + 2 0.0373 + 3 0.00373 + 4 0.00746 + 7 0.0187 + 13 0.0224 + 14 0.0261 + 16 0.00373 + 18 0.00373 + 19 0.00746 + 21 0.0299 + 24 0.00373 + 26 0.0149 + 28 0.0299 + 29 0.056 + 30 0.0261 + 31 0.00746 + 33 0.00746 + 41 0.347 + 42 0.0187 + 45 0.00746 + 47 0.0112 + + 57 3 3 0 + 2 0.333 + 13 0.333 + 41 0.333 + + 60 843 26 0 + 0 0.0119 + 2 0.00949 + 3 0.00356 + 4 0.619 + 7 0.051 + 8 0.0605 + 13 0.00356 + 15 0.013 + 16 0.00119 + 18 0.0652 + 19 0.00119 + 20 0.0522 + 21 0.00237 + 28 0.0142 + 29 0.00119 + 30 0.00593 + 31 0.0225 + 32 0.00237 + 33 0.00119 + 36 0.00237 + 41 0.019 + 42 0.0107 + 43 0.00119 + 44 0.0202 + 45 0.00237 + 47 0.00237 + + 48 771 28 1 + 0 0.481 + 1 0.00519 + 2 0.0389 + 3 0.00259 + 4 0.0908 + 7 0.0259 + 8 0.00259 + 13 0.0493 + 14 0.0389 + 15 0.0013 + 18 0.0182 + 19 0.00778 + 20 0.00778 + 21 0.0584 + 22 0.0013 + 24 0.00259 + 26 0.00259 + 28 0.013 + 29 0.013 + 30 0.00908 + 31 0.00649 + 32 0.00519 + 33 0.0143 + 41 0.0441 + 42 0.0182 + 45 0.0298 + 46 0.00259 + 47 0.00908 + + 8 2 2 0 + 14 0.5 + 29 0.5 + + 49 153 24 9 + 0 0.399 + 1 0.00654 + 2 0.0392 + 3 0.00654 + 4 0.137 + 7 0.0261 + 13 0.00654 + 14 0.0196 + 15 0.0131 + 18 0.0131 + 19 0.00654 + 21 0.0588 + 26 0.00654 + 28 0.0588 + 29 0.0131 + 30 0.00654 + 31 0.0392 + 32 0.0131 + 33 0.0131 + 41 0.0523 + 42 0.00654 + 45 0.0261 + 46 0.00654 + 47 0.0261 + + 4 2 2 0 + 7 0.5 + 47 0.5 + + 8 94 19 0 + 0 0.457 + 1 0.0106 + 2 0.0319 + 4 0.17 + 7 0.0106 + 14 0.0106 + 19 0.0106 + 21 0.0532 + 26 0.0106 + 28 0.0638 + 29 0.0213 + 30 0.0106 + 31 0.0319 + 32 0.0213 + 33 0.0106 + 41 0.0319 + 45 0.0213 + 46 0.0106 + 47 0.0106 + + 9 3 1 0 + 28 1 + + 22 4 4 0 + 2 0.25 + 13 0.25 + 31 0.25 + 47 0.25 + + 30 3 3 0 + 14 0.333 + 18 0.333 + 41 0.333 + + 31 27 11 0 + 0 0.37 + 2 0.037 + 3 0.037 + 4 0.185 + 7 0.0741 + 18 0.037 + 21 0.0741 + 31 0.037 + 33 0.037 + 45 0.0741 + 47 0.037 + + 47 5 5 0 + 0 0.2 + 15 0.2 + 21 0.2 + 31 0.2 + 42 0.2 + + 48 3 3 0 + 0 0.333 + 14 0.333 + 15 0.333 + + 55 2 1 0 + 41 1 + + 50 5 4 0 + 8 0.4 + 13 0.2 + 28 0.2 + 46 0.2 + + 55 276 23 7 + 0 0.301 + 2 0.0362 + 3 0.0109 + 4 0.00725 + 7 0.0181 + 13 0.0217 + 14 0.029 + 16 0.00362 + 18 0.00362 + 19 0.00725 + 21 0.0435 + 24 0.00362 + 26 0.0145 + 28 0.029 + 29 0.0543 + 30 0.0254 + 31 0.00725 + 33 0.00725 + 41 0.337 + 42 0.0181 + 44 0.00362 + 45 0.00725 + 47 0.0109 + + 8 141 15 0 + 0 0.206 + 2 0.0355 + 4 0.00709 + 7 0.0213 + 13 0.0142 + 14 0.00709 + 16 0.00709 + 19 0.0142 + 21 0.0567 + 29 0.00709 + 30 0.0142 + 33 0.00709 + 41 0.582 + 45 0.00709 + 47 0.0142 + + 9 97 15 0 + 0 0.423 + 2 0.0309 + 7 0.0206 + 13 0.0309 + 14 0.0309 + 21 0.0309 + 24 0.0103 + 26 0.0412 + 28 0.0515 + 29 0.144 + 30 0.0412 + 33 0.0103 + 41 0.0722 + 42 0.0515 + 47 0.0103 + + 21 8 6 0 + 0 0.25 + 3 0.125 + 13 0.125 + 14 0.25 + 30 0.125 + 45 0.125 + + 22 12 6 0 + 0 0.333 + 2 0.0833 + 21 0.0833 + 28 0.25 + 31 0.167 + 41 0.0833 + + 47 5 4 0 + 0 0.2 + 3 0.4 + 14 0.2 + 44 0.2 + + 48 1 1 0 + 18 1 + + 55 2 2 0 + 2 0.5 + 4 0.5 + + 57 5 5 0 + 2 0.2 + 9 0.2 + 13 0.2 + 31 0.2 + 41 0.2 + + 58 4 3 0 + 0 0.25 + 2 0.5 + 21 0.25 + + 60 843 26 5 + 0 0.0119 + 2 0.00949 + 3 0.00356 + 4 0.619 + 7 0.051 + 8 0.0605 + 13 0.00356 + 15 0.013 + 16 0.00119 + 18 0.0652 + 19 0.00119 + 20 0.0522 + 21 0.00237 + 28 0.0142 + 29 0.00119 + 30 0.00593 + 31 0.0225 + 32 0.00237 + 33 0.00119 + 36 0.00237 + 41 0.019 + 42 0.0107 + 43 0.00119 + 44 0.0202 + 45 0.00237 + 47 0.00237 + + 9 7 5 0 + 0 0.286 + 15 0.143 + 28 0.286 + 41 0.143 + 45 0.143 + + 13 117 18 0 + 0 0.0256 + 2 0.00855 + 4 0.282 + 7 0.308 + 8 0.00855 + 13 0.00855 + 15 0.0855 + 16 0.00855 + 18 0.0427 + 20 0.0598 + 21 0.00855 + 28 0.0256 + 29 0.00855 + 31 0.0171 + 32 0.00855 + 36 0.00855 + 41 0.0342 + 42 0.0513 + + 14 5 4 0 + 4 0.4 + 18 0.2 + 30 0.2 + 43 0.2 + + 21 4 3 0 + 0 0.5 + 21 0.25 + 28 0.25 + + 47 702 21 0 + 0 0.00285 + 2 0.00997 + 3 0.00427 + 4 0.689 + 7 0.00997 + 8 0.0712 + 13 0.00285 + 18 0.0698 + 19 0.00142 + 20 0.0513 + 28 0.00712 + 30 0.0057 + 31 0.0242 + 32 0.00142 + 33 0.00142 + 36 0.00142 + 41 0.0128 + 42 0.00427 + 44 0.0242 + 45 0.00142 + 47 0.00285 + + 64 4 2 0 + 9 0.25 + 13 0.75 + +49 42427 42 32 + 0 0.124 + 1 0.000896 + 2 0.0365 + 3 0.00983 + 4 0.00596 + 5 0.00099 + 6 0.000165 + 7 0.0272 + 8 0.00695 + 9 0.00104 + 10 0.000754 + 12 0.0316 + 13 0.111 + 14 0.0815 + 15 0.04 + 16 0.00189 + 17 9.43e-05 + 18 0.000707 + 19 0.0424 + 20 4.71e-05 + 21 0.054 + 22 0.00429 + 23 0.00099 + 24 0.00568 + 26 0.00653 + 28 0.0383 + 29 0.0368 + 30 0.025 + 31 0.0372 + 32 0.0107 + 33 0.0115 + 34 0.00938 + 35 0.00481 + 37 0.00033 + 40 9.43e-05 + 41 0.112 + 42 0.0079 + 43 0.000754 + 44 0.00113 + 45 0.00988 + 46 0.00189 + 47 0.0968 + + 2 138 19 10 + 2 0.0145 + 3 0.0145 + 4 0.0725 + 7 0.087 + 8 0.029 + 9 0.0145 + 10 0.00725 + 13 0.029 + 14 0.00725 + 19 0.00725 + 21 0.536 + 22 0.0725 + 24 0.00725 + 26 0.00725 + 31 0.00725 + 41 0.0435 + 45 0.00725 + 46 0.00725 + 47 0.029 + + 2 2 2 0 + 2 0.5 + 3 0.5 + + 7 9 1 0 + 7 1 + + 8 5 2 0 + 7 0.6 + 8 0.4 + + 9 2 1 0 + 9 1 + + 10 1 1 0 + 10 1 + + 13 3 2 0 + 4 0.333 + 13 0.667 + + 21 82 7 0 + 8 0.0122 + 13 0.0122 + 21 0.878 + 22 0.0122 + 26 0.0122 + 41 0.061 + 47 0.0122 + + 22 10 2 0 + 14 0.1 + 22 0.9 + + 24 1 1 0 + 24 1 + + 47 20 10 0 + 2 0.05 + 4 0.45 + 8 0.05 + 13 0.05 + 19 0.05 + 21 0.05 + 31 0.05 + 45 0.05 + 46 0.05 + 47 0.15 + + 3 35 11 3 + 2 0.0286 + 4 0.0286 + 7 0.0286 + 14 0.114 + 16 0.0286 + 26 0.371 + 28 0.0286 + 29 0.114 + 30 0.0286 + 31 0.0286 + 41 0.2 + + 13 3 3 0 + 4 0.333 + 26 0.333 + 28 0.333 + + 26 10 4 0 + 7 0.1 + 14 0.1 + 29 0.1 + 41 0.7 + + 47 20 6 0 + 2 0.05 + 14 0.15 + 26 0.55 + 29 0.15 + 30 0.05 + 31 0.05 + + 4 146 26 8 + 0 0.151 + 1 0.00685 + 2 0.00685 + 3 0.0274 + 4 0.00685 + 7 0.349 + 8 0.0205 + 12 0.00685 + 13 0.0342 + 14 0.0616 + 15 0.0137 + 17 0.0274 + 19 0.0205 + 21 0.0479 + 26 0.00685 + 28 0.0342 + 29 0.0137 + 30 0.0205 + 31 0.0342 + 33 0.00685 + 34 0.00685 + 41 0.0274 + 42 0.0137 + 44 0.00685 + 45 0.0274 + 47 0.0205 + + 2 10 6 0 + 0 0.5 + 1 0.1 + 15 0.1 + 21 0.1 + 26 0.1 + 31 0.1 + + 7 9 8 0 + 8 0.111 + 13 0.222 + 15 0.111 + 21 0.111 + 29 0.111 + 31 0.111 + 45 0.111 + 47 0.111 + + 8 4 3 0 + 8 0.25 + 17 0.5 + 45 0.25 + + 9 4 3 0 + 0 0.5 + 13 0.25 + 31 0.25 + + 13 9 7 0 + 3 0.111 + 7 0.111 + 8 0.111 + 12 0.111 + 19 0.222 + 41 0.222 + 45 0.111 + + 21 17 10 0 + 0 0.294 + 7 0.0588 + 13 0.0588 + 14 0.0588 + 21 0.176 + 29 0.0588 + 30 0.0588 + 41 0.0588 + 42 0.118 + 45 0.0588 + + 22 14 6 0 + 0 0.429 + 17 0.143 + 28 0.214 + 31 0.0714 + 33 0.0714 + 47 0.0714 + + 47 77 16 0 + 0 0.0519 + 2 0.013 + 3 0.039 + 4 0.013 + 7 0.636 + 13 0.013 + 14 0.0909 + 19 0.013 + 21 0.026 + 28 0.013 + 30 0.026 + 31 0.013 + 34 0.013 + 41 0.013 + 44 0.013 + 47 0.013 + + 5 2 2 0 + 7 0.5 + 14 0.5 + + 6 14 7 2 + 2 0.0714 + 6 0.5 + 13 0.0714 + 21 0.0714 + 41 0.143 + 42 0.0714 + 45 0.0714 + + 6 7 6 0 + 2 0.143 + 13 0.143 + 21 0.143 + 41 0.286 + 42 0.143 + 45 0.143 + + 47 7 1 0 + 6 1 + + 7 947 30 7 + 0 0.103 + 2 0.0454 + 3 0.00528 + 4 0.0127 + 7 0.0275 + 8 0.0158 + 9 0.0116 + 12 0.00422 + 13 0.13 + 14 0.106 + 15 0.0106 + 19 0.0106 + 21 0.0232 + 22 0.0422 + 23 0.00106 + 24 0.00528 + 28 0.0465 + 29 0.0232 + 30 0.0338 + 31 0.038 + 32 0.0106 + 33 0.0095 + 34 0.00106 + 35 0.00106 + 41 0.229 + 42 0.0106 + 44 0.00106 + 45 0.00317 + 46 0.00317 + 47 0.0348 + + 2 12 7 0 + 2 0.0833 + 21 0.0833 + 28 0.167 + 30 0.25 + 32 0.0833 + 33 0.167 + 47 0.167 + + 4 49 14 0 + 4 0.0408 + 7 0.0204 + 8 0.0612 + 12 0.0204 + 13 0.286 + 14 0.102 + 15 0.0408 + 19 0.0408 + 21 0.0816 + 24 0.0408 + 28 0.102 + 31 0.102 + 41 0.0408 + 47 0.0204 + + 8 3 3 0 + 9 0.333 + 14 0.333 + 47 0.333 + + 10 127 17 0 + 0 0.0551 + 2 0.134 + 3 0.00787 + 7 0.165 + 8 0.0157 + 12 0.0157 + 13 0.00787 + 14 0.0394 + 15 0.00787 + 21 0.0315 + 28 0.0709 + 30 0.0236 + 31 0.0157 + 34 0.00787 + 41 0.299 + 42 0.0394 + 47 0.063 + + 13 5 3 0 + 0 0.4 + 13 0.2 + 31 0.4 + + 21 75 20 0 + 0 0.107 + 2 0.0133 + 4 0.0267 + 7 0.0133 + 8 0.08 + 13 0.12 + 14 0.0667 + 15 0.0133 + 21 0.0533 + 22 0.107 + 24 0.04 + 28 0.0267 + 29 0.0133 + 31 0.0133 + 32 0.0133 + 35 0.0133 + 41 0.0933 + 42 0.0133 + 46 0.0133 + 47 0.16 + + 47 667 27 0 + 0 0.12 + 2 0.0345 + 3 0.006 + 4 0.012 + 7 0.003 + 8 0.006 + 9 0.015 + 12 0.0015 + 13 0.145 + 14 0.124 + 15 0.009 + 19 0.012 + 21 0.0135 + 22 0.048 + 23 0.0015 + 28 0.0375 + 29 0.0315 + 30 0.039 + 31 0.039 + 32 0.012 + 33 0.0105 + 41 0.25 + 42 0.006 + 44 0.0015 + 45 0.0045 + 46 0.003 + 47 0.0135 + + 8 249 26 3 + 0 0.0723 + 2 0.0723 + 3 0.012 + 4 0.0201 + 7 0.0482 + 8 0.0161 + 13 0.12 + 14 0.108 + 15 0.0281 + 19 0.0161 + 21 0.0281 + 22 0.0201 + 23 0.0161 + 24 0.00803 + 28 0.0683 + 29 0.0482 + 30 0.0442 + 31 0.0281 + 32 0.0161 + 33 0.0161 + 41 0.0643 + 42 0.00402 + 44 0.00402 + 45 0.00803 + 46 0.00402 + 47 0.108 + + 2 3 2 0 + 30 0.333 + 41 0.667 + + 13 11 8 0 + 2 0.0909 + 7 0.0909 + 13 0.273 + 28 0.0909 + 29 0.182 + 31 0.0909 + 41 0.0909 + 47 0.0909 + + 21 2 2 0 + 4 0.5 + 28 0.5 + + 9 115 18 1 + 0 0.0696 + 2 0.0348 + 3 0.0783 + 4 0.0435 + 8 0.0087 + 13 0.2 + 14 0.139 + 15 0.0087 + 21 0.0261 + 28 0.0522 + 29 0.191 + 30 0.0174 + 31 0.0087 + 32 0.0261 + 33 0.0174 + 41 0.0087 + 45 0.0174 + 47 0.0522 + + 7 9 6 0 + 0 0.222 + 4 0.111 + 13 0.111 + 14 0.333 + 28 0.111 + 45 0.111 + + 10 136 9 1 + 2 0.00735 + 4 0.00735 + 7 0.934 + 13 0.00735 + 14 0.00735 + 18 0.00735 + 19 0.00735 + 33 0.00735 + 41 0.0147 + + 2 1 1 0 + 18 1 + + 11 6 1 0 + 47 1 + + 13 104 21 2 + 0 0.0577 + 2 0.0481 + 3 0.0481 + 4 0.0865 + 7 0.0577 + 8 0.135 + 13 0.0865 + 14 0.0385 + 18 0.00962 + 19 0.0192 + 21 0.00962 + 26 0.0288 + 28 0.0577 + 29 0.0385 + 30 0.125 + 31 0.0577 + 32 0.00962 + 33 0.00962 + 34 0.00962 + 41 0.0577 + 42 0.00962 + + 7 12 8 0 + 0 0.25 + 2 0.0833 + 8 0.0833 + 19 0.0833 + 21 0.0833 + 29 0.0833 + 41 0.25 + 42 0.0833 + + 26 3 3 0 + 14 0.333 + 28 0.333 + 30 0.333 + + 14 6 3 0 + 3 0.333 + 13 0.5 + 41 0.167 + + 15 28 4 0 + 15 0.0714 + 18 0.0357 + 45 0.0714 + 47 0.821 + + 17 5 4 0 + 0 0.2 + 7 0.2 + 31 0.2 + 47 0.4 + + 19 7 4 0 + 3 0.143 + 14 0.571 + 34 0.143 + 45 0.143 + + 21 18349 40 5 + 0 0.129 + 1 0.000872 + 2 0.038 + 3 0.00283 + 4 0.00474 + 5 0.00114 + 7 0.0186 + 8 0.0055 + 9 0.000708 + 10 0.00125 + 12 0.0355 + 13 0.106 + 14 0.0861 + 15 0.0422 + 16 0.00202 + 18 0.00049 + 19 0.0463 + 20 5.45e-05 + 21 0.0809 + 22 0.00665 + 23 0.00196 + 24 0.00501 + 26 0.00605 + 28 0.0338 + 29 0.0305 + 30 0.0215 + 31 0.0337 + 32 0.00948 + 33 0.0101 + 34 0.0104 + 35 0.00534 + 37 0.000381 + 40 0.000109 + 41 0.105 + 42 0.00741 + 43 0.000708 + 44 0.00109 + 45 0.00981 + 46 0.00191 + 47 0.0966 + + 2 72 20 0 + 0 0.125 + 2 0.0417 + 4 0.0417 + 8 0.0139 + 13 0.125 + 14 0.111 + 15 0.0139 + 19 0.0556 + 21 0.0694 + 22 0.0278 + 23 0.0139 + 28 0.0556 + 30 0.0556 + 31 0.0556 + 33 0.0139 + 40 0.0139 + 41 0.0694 + 42 0.0278 + 45 0.0278 + 47 0.0417 + + 21 918 33 0 + 0 0.0915 + 2 0.0447 + 3 0.00109 + 4 0.00871 + 7 0.0229 + 8 0.012 + 9 0.00109 + 10 0.00763 + 12 0.0272 + 13 0.127 + 14 0.0915 + 15 0.0196 + 16 0.00218 + 18 0.00109 + 19 0.0272 + 21 0.0664 + 24 0.0185 + 26 0.00218 + 28 0.0566 + 29 0.037 + 30 0.0403 + 31 0.0632 + 32 0.0174 + 33 0.0153 + 34 0.00436 + 35 0.00109 + 41 0.0436 + 42 0.00871 + 43 0.00327 + 44 0.00218 + 45 0.0251 + 46 0.00436 + 47 0.105 + + 22 11 7 0 + 2 0.182 + 13 0.0909 + 19 0.0909 + 24 0.0909 + 28 0.273 + 31 0.182 + 47 0.0909 + + 26 2 2 0 + 2 0.5 + 29 0.5 + + 47 17337 40 0 + 0 0.131 + 1 0.000923 + 2 0.0375 + 3 0.00294 + 4 0.00438 + 5 0.00121 + 7 0.0185 + 8 0.00513 + 9 0.000692 + 10 0.000923 + 12 0.0362 + 13 0.105 + 14 0.0858 + 15 0.0435 + 16 0.00202 + 18 0.000461 + 19 0.0473 + 20 5.77e-05 + 21 0.0817 + 22 0.00692 + 23 0.00202 + 24 0.00427 + 26 0.00629 + 28 0.0322 + 29 0.0302 + 30 0.0204 + 31 0.032 + 32 0.00911 + 33 0.00981 + 34 0.0108 + 35 0.00559 + 37 0.000404 + 40 5.77e-05 + 41 0.109 + 42 0.00727 + 43 0.000577 + 44 0.00104 + 45 0.00894 + 46 0.00179 + 47 0.0964 + + 22 773 27 5 + 0 0.0414 + 1 0.00129 + 2 0.0388 + 3 0.00259 + 4 0.0233 + 7 0.0103 + 8 0.00647 + 12 0.0155 + 13 0.364 + 14 0.0893 + 15 0.0168 + 18 0.00129 + 19 0.0142 + 21 0.0349 + 24 0.00776 + 26 0.0194 + 28 0.0699 + 29 0.066 + 30 0.0401 + 31 0.0375 + 32 0.0233 + 33 0.022 + 35 0.00259 + 41 0.00906 + 42 0.00388 + 45 0.00259 + 47 0.0362 + + 2 10 6 0 + 2 0.2 + 14 0.1 + 26 0.2 + 32 0.2 + 33 0.1 + 41 0.2 + + 7 39 17 0 + 0 0.282 + 2 0.0513 + 4 0.0256 + 7 0.0256 + 8 0.0256 + 12 0.0769 + 13 0.128 + 14 0.0513 + 15 0.0513 + 19 0.0513 + 26 0.0769 + 28 0.0256 + 29 0.0256 + 32 0.0256 + 41 0.0256 + 42 0.0256 + 47 0.0256 + + 8 4 3 0 + 28 0.25 + 41 0.25 + 47 0.5 + + 21 119 22 0 + 0 0.0504 + 1 0.0084 + 2 0.0756 + 4 0.0336 + 7 0.0336 + 12 0.0168 + 13 0.0672 + 14 0.0672 + 15 0.0252 + 19 0.0168 + 21 0.134 + 24 0.0168 + 26 0.0252 + 28 0.109 + 29 0.0084 + 30 0.0588 + 31 0.0588 + 32 0.0252 + 41 0.0168 + 42 0.0168 + 45 0.0168 + 47 0.118 + + 47 601 24 0 + 0 0.025 + 2 0.0283 + 3 0.00333 + 4 0.0216 + 7 0.00499 + 8 0.00666 + 12 0.0116 + 13 0.446 + 14 0.0965 + 15 0.0133 + 18 0.00166 + 19 0.0116 + 21 0.0183 + 24 0.00666 + 26 0.0116 + 28 0.0649 + 29 0.0815 + 30 0.0399 + 31 0.0366 + 32 0.02 + 33 0.0266 + 35 0.00333 + 41 0.00166 + 47 0.0183 + + 23 76 21 2 + 0 0.184 + 2 0.0263 + 3 0.0132 + 4 0.0921 + 7 0.0395 + 12 0.0263 + 13 0.0789 + 14 0.0658 + 18 0.0132 + 19 0.0395 + 21 0.0132 + 26 0.0132 + 28 0.0132 + 29 0.0526 + 30 0.0132 + 31 0.0395 + 32 0.0132 + 33 0.0263 + 41 0.105 + 42 0.0395 + 47 0.0921 + + 21 35 14 0 + 0 0.0571 + 2 0.0571 + 3 0.0286 + 4 0.143 + 13 0.0857 + 14 0.0571 + 18 0.0286 + 19 0.0571 + 21 0.0286 + 29 0.0571 + 30 0.0286 + 41 0.143 + 42 0.0857 + 47 0.143 + + 47 36 15 0 + 0 0.306 + 4 0.0278 + 7 0.0556 + 12 0.0556 + 13 0.0833 + 14 0.0833 + 19 0.0278 + 26 0.0278 + 28 0.0278 + 29 0.0556 + 31 0.0833 + 32 0.0278 + 33 0.0556 + 41 0.0278 + 47 0.0556 + + 24 97 16 1 + 0 0.144 + 2 0.0103 + 4 0.0206 + 8 0.0206 + 9 0.0103 + 13 0.134 + 14 0.0928 + 19 0.0309 + 21 0.0412 + 28 0.155 + 29 0.134 + 30 0.0722 + 31 0.0309 + 32 0.0206 + 33 0.0515 + 41 0.0309 + + 21 3 3 0 + 21 0.333 + 30 0.333 + 33 0.333 + + 26 19 7 2 + 3 0.526 + 8 0.0526 + 13 0.158 + 14 0.0526 + 21 0.105 + 30 0.0526 + 31 0.0526 + + 3 11 2 0 + 3 0.909 + 14 0.0909 + + 13 3 1 0 + 13 1 + + 28 9 5 0 + 2 0.111 + 21 0.111 + 26 0.111 + 41 0.556 + 42 0.111 + + 31 2 2 0 + 28 0.5 + 30 0.5 + + 37 3 2 0 + 28 0.333 + 47 0.667 + + 41 6 3 0 + 7 0.167 + 13 0.167 + 21 0.667 + + 42 2 2 0 + 21 0.5 + 31 0.5 + + 45 5 4 0 + 0 0.4 + 13 0.2 + 14 0.2 + 42 0.2 + + 47 19808 40 27 + 0 0.133 + 1 0.000959 + 2 0.0361 + 3 0.00979 + 4 0.00464 + 5 0.00106 + 7 0.022 + 8 0.00687 + 9 0.000808 + 10 0.000353 + 12 0.0339 + 13 0.105 + 14 0.0777 + 15 0.0428 + 16 0.00202 + 18 0.000757 + 19 0.0454 + 20 5.05e-05 + 21 0.0318 + 22 0.000252 + 23 5.05e-05 + 24 0.00596 + 26 0.00651 + 28 0.0409 + 29 0.0394 + 30 0.0268 + 31 0.0399 + 32 0.0114 + 33 0.0123 + 34 0.01 + 35 0.00515 + 37 0.000353 + 40 0.000101 + 41 0.12 + 42 0.00838 + 43 0.000808 + 44 0.00121 + 45 0.0105 + 46 0.00202 + 47 0.104 + + 2 16 11 0 + 3 0.0625 + 8 0.0625 + 13 0.0625 + 14 0.0625 + 19 0.0625 + 21 0.125 + 31 0.0625 + 41 0.125 + 45 0.0625 + 46 0.0625 + 47 0.25 + + 3 23 10 0 + 4 0.0435 + 7 0.0435 + 14 0.174 + 16 0.0435 + 26 0.087 + 28 0.0435 + 29 0.174 + 30 0.0435 + 31 0.0435 + 41 0.304 + + 4 91 25 0 + 0 0.242 + 1 0.011 + 2 0.011 + 3 0.044 + 4 0.011 + 7 0.022 + 8 0.033 + 12 0.011 + 13 0.0549 + 14 0.0989 + 15 0.022 + 19 0.033 + 21 0.0549 + 26 0.011 + 28 0.0549 + 29 0.022 + 30 0.033 + 31 0.0549 + 33 0.011 + 34 0.011 + 41 0.044 + 42 0.022 + 44 0.011 + 45 0.044 + 47 0.033 + + 6 6 5 0 + 2 0.167 + 13 0.167 + 41 0.333 + 42 0.167 + 45 0.167 + + 7 750 29 0 + 0 0.131 + 2 0.0453 + 3 0.00667 + 4 0.004 + 7 0.0347 + 8 0.0187 + 9 0.00267 + 12 0.00533 + 13 0.0747 + 14 0.056 + 15 0.0133 + 19 0.0133 + 21 0.024 + 22 0.00133 + 24 0.00667 + 28 0.0587 + 29 0.0293 + 30 0.0427 + 31 0.048 + 32 0.0133 + 33 0.012 + 34 0.00133 + 35 0.00133 + 41 0.289 + 42 0.0133 + 44 0.00133 + 45 0.004 + 46 0.004 + 47 0.044 + + 8 223 25 0 + 0 0.0807 + 2 0.0583 + 3 0.0135 + 4 0.00448 + 7 0.0404 + 8 0.0179 + 13 0.13 + 14 0.112 + 15 0.0269 + 19 0.0179 + 21 0.0314 + 22 0.00448 + 24 0.00897 + 28 0.0673 + 29 0.0538 + 30 0.0493 + 31 0.0314 + 32 0.0179 + 33 0.0179 + 41 0.0717 + 42 0.00448 + 44 0.00448 + 45 0.00897 + 46 0.00448 + 47 0.121 + + 9 67 16 0 + 0 0.119 + 2 0.0299 + 4 0.0149 + 13 0.0597 + 14 0.0746 + 15 0.0149 + 21 0.0299 + 28 0.0896 + 29 0.328 + 30 0.0299 + 31 0.0149 + 32 0.0448 + 33 0.0299 + 41 0.0149 + 45 0.0149 + 47 0.0896 + + 10 8 7 0 + 4 0.125 + 13 0.125 + 14 0.125 + 18 0.125 + 19 0.125 + 33 0.125 + 41 0.25 + + 11 6 1 0 + 47 1 + + 13 69 19 0 + 0 0.087 + 2 0.029 + 3 0.029 + 7 0.0145 + 8 0.0435 + 13 0.116 + 14 0.058 + 18 0.0145 + 19 0.029 + 21 0.0145 + 28 0.087 + 29 0.058 + 30 0.188 + 31 0.087 + 32 0.0145 + 33 0.0145 + 34 0.0145 + 41 0.087 + 42 0.0145 + + 14 4 2 0 + 13 0.75 + 41 0.25 + + 15 27 4 0 + 15 0.037 + 18 0.037 + 45 0.0741 + 47 0.852 + + 17 4 3 0 + 0 0.25 + 31 0.25 + 47 0.5 + + 19 7 4 0 + 3 0.143 + 14 0.571 + 34 0.143 + 45 0.143 + + 21 16535 40 0 + 0 0.143 + 1 0.000968 + 2 0.0372 + 3 0.00302 + 4 0.00423 + 5 0.00127 + 7 0.0161 + 8 0.00593 + 9 0.000786 + 10 0.000363 + 12 0.0394 + 13 0.102 + 14 0.0788 + 15 0.0469 + 16 0.00224 + 18 0.000544 + 19 0.0513 + 20 6.05e-05 + 21 0.0339 + 22 0.000181 + 23 6.05e-05 + 24 0.00538 + 26 0.00659 + 28 0.0374 + 29 0.0337 + 30 0.0238 + 31 0.0374 + 32 0.0105 + 33 0.0112 + 34 0.0116 + 35 0.00593 + 37 0.000423 + 40 0.000121 + 41 0.117 + 42 0.00816 + 43 0.000786 + 44 0.00121 + 45 0.0107 + 46 0.00212 + 47 0.107 + + 22 466 26 0 + 0 0.0687 + 1 0.00215 + 2 0.0429 + 4 0.00858 + 7 0.0172 + 8 0.00644 + 12 0.0258 + 13 0.0987 + 14 0.088 + 15 0.0279 + 18 0.00215 + 19 0.0236 + 21 0.0236 + 24 0.0129 + 26 0.0322 + 28 0.116 + 29 0.109 + 30 0.0665 + 31 0.0622 + 32 0.0386 + 33 0.0365 + 35 0.00429 + 41 0.015 + 42 0.00644 + 45 0.00429 + 47 0.0601 + + 23 72 20 0 + 0 0.194 + 2 0.0278 + 3 0.0139 + 4 0.0833 + 12 0.0278 + 13 0.0833 + 14 0.0694 + 18 0.0139 + 19 0.0417 + 21 0.0139 + 26 0.0139 + 28 0.0139 + 29 0.0556 + 30 0.0139 + 31 0.0417 + 32 0.0139 + 33 0.0278 + 41 0.111 + 42 0.0417 + 47 0.0972 + + 24 90 14 0 + 0 0.156 + 4 0.0111 + 8 0.0111 + 13 0.133 + 14 0.1 + 19 0.0333 + 21 0.0333 + 28 0.156 + 29 0.144 + 30 0.0778 + 31 0.0333 + 32 0.0222 + 33 0.0556 + 41 0.0333 + + 26 2 2 0 + 30 0.5 + 31 0.5 + + 28 8 4 0 + 2 0.125 + 21 0.125 + 41 0.625 + 42 0.125 + + 31 2 2 0 + 28 0.5 + 30 0.5 + + 37 3 2 0 + 28 0.333 + 47 0.667 + + 45 4 3 0 + 0 0.5 + 13 0.25 + 14 0.25 + + 48 5 4 0 + 0 0.2 + 13 0.4 + 14 0.2 + 30 0.2 + + 49 347 26 0 + 0 0.0519 + 2 0.0202 + 4 0.00288 + 7 0.0202 + 8 0.0144 + 10 0.00288 + 13 0.15 + 14 0.098 + 15 0.0144 + 16 0.00288 + 18 0.00288 + 19 0.0173 + 21 0.0288 + 24 0.0231 + 28 0.0778 + 29 0.0605 + 30 0.0663 + 31 0.107 + 32 0.0288 + 33 0.0403 + 34 0.00288 + 41 0.0951 + 42 0.0173 + 44 0.00288 + 45 0.0115 + 47 0.0403 + + 55 960 29 0 + 0 0.026 + 1 0.00104 + 2 0.0177 + 3 0.132 + 4 0.00208 + 7 0.12 + 8 0.00417 + 9 0.00104 + 13 0.155 + 14 0.0521 + 15 0.0354 + 16 0.00104 + 19 0.00729 + 21 0.00833 + 24 0.00833 + 26 0.00104 + 28 0.0156 + 29 0.0667 + 30 0.00938 + 31 0.0406 + 32 0.00313 + 33 0.00208 + 34 0.00313 + 35 0.00104 + 41 0.142 + 42 0.00313 + 43 0.00313 + 45 0.00938 + 47 0.128 + + 60 5 4 0 + 0 0.2 + 28 0.2 + 29 0.4 + 33 0.2 + + 48 5 4 0 + 0 0.2 + 13 0.4 + 14 0.2 + 30 0.2 + + 49 357 27 2 + 0 0.0504 + 2 0.0224 + 4 0.0028 + 7 0.028 + 8 0.014 + 10 0.0028 + 13 0.148 + 14 0.098 + 15 0.014 + 16 0.0028 + 18 0.0028 + 19 0.0168 + 21 0.028 + 24 0.0252 + 26 0.0028 + 28 0.0756 + 29 0.0588 + 30 0.0644 + 31 0.104 + 32 0.028 + 33 0.0392 + 34 0.0028 + 41 0.0924 + 42 0.0196 + 44 0.0028 + 45 0.014 + 47 0.0392 + + 21 15 6 0 + 2 0.133 + 14 0.0667 + 21 0.0667 + 28 0.0667 + 31 0.0667 + 41 0.6 + + 41 3 3 0 + 13 0.333 + 14 0.333 + 42 0.333 + + 55 962 29 6 + 0 0.026 + 1 0.00104 + 2 0.0177 + 3 0.132 + 4 0.00208 + 7 0.121 + 8 0.00416 + 9 0.00104 + 13 0.156 + 14 0.052 + 15 0.0353 + 16 0.00104 + 19 0.00728 + 21 0.00832 + 24 0.00832 + 26 0.00104 + 28 0.0156 + 29 0.0665 + 30 0.00936 + 31 0.0405 + 32 0.00312 + 33 0.00208 + 34 0.00312 + 35 0.00104 + 41 0.141 + 42 0.00312 + 43 0.00312 + 45 0.00936 + 47 0.128 + + 6 1 1 0 + 30 1 + + 7 114 18 0 + 0 0.0263 + 2 0.00877 + 3 0.14 + 7 0.184 + 9 0.00877 + 13 0.132 + 14 0.0439 + 15 0.0614 + 21 0.0175 + 26 0.00877 + 29 0.0351 + 30 0.00877 + 31 0.0439 + 34 0.00877 + 35 0.00877 + 41 0.132 + 45 0.0263 + 47 0.105 + + 9 39 13 0 + 0 0.0769 + 2 0.0256 + 7 0.0769 + 13 0.0513 + 15 0.0256 + 24 0.0256 + 28 0.103 + 29 0.41 + 30 0.0256 + 31 0.0769 + 33 0.0256 + 41 0.0513 + 47 0.0256 + + 21 527 25 0 + 0 0.0266 + 2 0.0152 + 3 0.108 + 4 0.0038 + 7 0.0892 + 8 0.00759 + 13 0.186 + 14 0.0455 + 15 0.0493 + 16 0.0019 + 19 0.00759 + 21 0.0114 + 24 0.0133 + 28 0.00759 + 29 0.0531 + 30 0.00569 + 31 0.055 + 32 0.0038 + 33 0.0019 + 34 0.0038 + 41 0.108 + 42 0.0019 + 43 0.0038 + 45 0.0114 + 47 0.178 + + 22 269 17 0 + 0 0.0186 + 1 0.00372 + 2 0.0112 + 3 0.201 + 7 0.16 + 13 0.123 + 14 0.0743 + 19 0.0112 + 28 0.026 + 29 0.052 + 30 0.0112 + 31 0.00743 + 32 0.00372 + 41 0.227 + 42 0.00743 + 43 0.00372 + 47 0.0595 + + 47 5 3 0 + 2 0.6 + 13 0.2 + 14 0.2 + + 57 3 3 0 + 7 0.333 + 21 0.333 + 47 0.333 + + 60 5 4 0 + 0 0.2 + 28 0.2 + 29 0.4 + 33 0.2 + +50 1035 26 5 + 0 0.0058 + 2 0.0213 + 7 0.0174 + 8 0.0232 + 13 0.111 + 14 0.0889 + 15 0.0193 + 16 0.00193 + 19 0.00193 + 21 0.382 + 22 0.00193 + 24 0.00193 + 26 0.00483 + 28 0.00773 + 29 0.0058 + 30 0.00966 + 31 0.00773 + 32 0.00386 + 33 0.00773 + 41 0.222 + 42 0.0174 + 43 0.00193 + 44 0.00193 + 45 0.00193 + 46 0.00966 + 47 0.0213 + + 2 22 4 0 + 13 0.227 + 14 0.0455 + 22 0.0455 + 41 0.682 + + 7 223 5 3 + 7 0.00897 + 13 0.00897 + 14 0.00448 + 21 0.928 + 41 0.0493 + + 7 2 2 0 + 14 0.5 + 41 0.5 + + 21 11 2 0 + 13 0.182 + 41 0.818 + + 47 209 2 0 + 7 0.00957 + 21 0.99 + + 21 472 24 5 + 0 0.00636 + 2 0.0466 + 7 0.0275 + 8 0.0254 + 13 0.106 + 14 0.0932 + 15 0.0212 + 16 0.00212 + 19 0.00212 + 21 0.373 + 24 0.00212 + 28 0.00847 + 29 0.00636 + 30 0.0106 + 31 0.00847 + 32 0.00424 + 33 0.00847 + 41 0.189 + 42 0.0191 + 43 0.00212 + 44 0.00212 + 45 0.00212 + 46 0.0106 + 47 0.0233 + + 7 206 14 0 + 7 0.00485 + 8 0.0146 + 13 0.117 + 14 0.0922 + 15 0.00971 + 21 0.612 + 28 0.00485 + 29 0.00485 + 30 0.00485 + 31 0.00485 + 32 0.00971 + 41 0.0874 + 42 0.0243 + 46 0.00971 + + 8 4 3 0 + 0 0.25 + 8 0.5 + 33 0.25 + + 21 174 21 0 + 0 0.0115 + 7 0.00575 + 8 0.0402 + 13 0.149 + 14 0.144 + 15 0.046 + 16 0.00575 + 19 0.00575 + 24 0.00575 + 28 0.0172 + 29 0.0115 + 30 0.023 + 31 0.0172 + 33 0.0172 + 41 0.391 + 42 0.0172 + 43 0.00575 + 44 0.00575 + 45 0.00575 + 46 0.0172 + 47 0.0575 + + 26 5 3 0 + 41 0.6 + 42 0.2 + 47 0.2 + + 47 83 3 0 + 2 0.265 + 7 0.133 + 21 0.602 + + 28 5 1 0 + 26 1 + + 47 302 24 2 + 0 0.00993 + 7 0.00662 + 8 0.0397 + 13 0.189 + 14 0.152 + 15 0.0331 + 16 0.00331 + 19 0.00331 + 21 0.00993 + 22 0.00331 + 24 0.00331 + 28 0.0132 + 29 0.00993 + 30 0.0166 + 31 0.0132 + 32 0.00662 + 33 0.0132 + 41 0.381 + 42 0.0298 + 43 0.00331 + 44 0.00331 + 45 0.00331 + 46 0.0166 + 47 0.0364 + + 2 22 4 0 + 13 0.227 + 14 0.0455 + 22 0.0455 + 41 0.682 + + 7 15 4 0 + 13 0.133 + 14 0.0667 + 21 0.0667 + 41 0.733 + +51 1504 36 26 + 0 0.00399 + 2 0.0259 + 3 0.0153 + 4 0.000665 + 6 0.000665 + 7 0.118 + 8 0.00798 + 9 0.00266 + 10 0.000665 + 13 0.0465 + 14 0.0226 + 15 0.0426 + 16 0.00199 + 19 0.00266 + 21 0.0326 + 22 0.000665 + 24 0.00133 + 25 0.00864 + 27 0.00332 + 28 0.0166 + 29 0.00399 + 30 0.000665 + 31 0.00399 + 32 0.00332 + 33 0.00199 + 34 0.00798 + 35 0.00665 + 37 0.00798 + 40 0.00532 + 41 0.0951 + 42 0.0864 + 43 0.00465 + 44 0.00598 + 45 0.0598 + 46 0.00332 + 47 0.347 + + 2 50 6 0 + 13 0.14 + 14 0.02 + 41 0.24 + 42 0.04 + 45 0.02 + 47 0.54 + + 4 3 2 0 + 7 0.667 + 28 0.333 + + 7 7 5 0 + 2 0.143 + 35 0.286 + 41 0.143 + 45 0.143 + 47 0.286 + + 8 5 4 0 + 4 0.2 + 7 0.4 + 21 0.2 + 47 0.2 + + 21 48 11 0 + 2 0.229 + 7 0.167 + 10 0.0208 + 21 0.146 + 28 0.0208 + 35 0.0208 + 37 0.0833 + 41 0.0417 + 42 0.0208 + 45 0.0417 + 47 0.208 + + 35 4 4 0 + 2 0.25 + 21 0.25 + 42 0.25 + 43 0.25 + + 40 3 2 0 + 15 0.667 + 27 0.333 + + 41 96 15 8 + 0 0.0104 + 3 0.167 + 6 0.0104 + 8 0.0521 + 13 0.156 + 14 0.0417 + 15 0.323 + 16 0.0312 + 19 0.0312 + 21 0.0938 + 27 0.0417 + 28 0.0104 + 29 0.0104 + 30 0.0104 + 43 0.0104 + + 2 4 2 0 + 13 0.75 + 28 0.25 + + 45 2 2 0 + 19 0.5 + 29 0.5 + + 49 7 6 0 + 8 0.143 + 13 0.143 + 19 0.143 + 21 0.286 + 27 0.143 + 43 0.143 + + 55 48 9 0 + 3 0.312 + 8 0.0208 + 13 0.146 + 14 0.0208 + 15 0.292 + 16 0.0417 + 19 0.0208 + 21 0.0833 + 27 0.0625 + + 57 16 2 0 + 8 0.0625 + 15 0.938 + + 64 6 4 0 + 0 0.167 + 8 0.167 + 13 0.5 + 30 0.167 + + 69 2 2 0 + 3 0.5 + 6 0.5 + + 71 3 2 0 + 8 0.333 + 21 0.667 + + 42 78 15 4 + 3 0.0128 + 8 0.0128 + 13 0.218 + 14 0.167 + 15 0.269 + 21 0.0385 + 25 0.103 + 28 0.0128 + 29 0.0128 + 31 0.0385 + 32 0.0128 + 33 0.0128 + 43 0.0513 + 46 0.0128 + 47 0.0256 + + 45 24 6 0 + 13 0.125 + 14 0.125 + 15 0.5 + 21 0.0417 + 33 0.0417 + 43 0.167 + + 55 20 10 0 + 3 0.05 + 8 0.05 + 13 0.05 + 14 0.1 + 15 0.15 + 25 0.3 + 28 0.05 + 29 0.05 + 31 0.15 + 46 0.05 + + 62 19 3 0 + 13 0.632 + 14 0.211 + 15 0.158 + + 69 5 3 0 + 14 0.2 + 25 0.4 + 47 0.4 + + 45 37 5 0 + 41 0.0811 + 42 0.649 + 43 0.027 + 44 0.0541 + 47 0.189 + + 47 495 24 19 + 0 0.00404 + 2 0.0283 + 3 0.00202 + 7 0.178 + 13 0.0242 + 14 0.00606 + 15 0.00202 + 21 0.0121 + 24 0.00202 + 28 0.0202 + 29 0.00404 + 31 0.00202 + 32 0.00404 + 33 0.00202 + 34 0.0121 + 35 0.00202 + 37 0.00606 + 40 0.00404 + 41 0.0444 + 42 0.0525 + 44 0.00606 + 45 0.0525 + 46 0.00202 + 47 0.527 + + 2 42 5 0 + 13 0.119 + 41 0.19 + 42 0.0238 + 45 0.0238 + 47 0.643 + + 4 3 2 0 + 7 0.667 + 28 0.333 + + 21 24 7 0 + 2 0.0833 + 7 0.292 + 21 0.0417 + 28 0.0417 + 41 0.0417 + 45 0.0833 + 47 0.417 + + 41 2 2 0 + 13 0.5 + 21 0.5 + + 42 4 3 0 + 13 0.25 + 32 0.25 + 47 0.5 + + 45 8 2 0 + 44 0.125 + 47 0.875 + + 48 41 8 0 + 0 0.0244 + 7 0.439 + 21 0.0488 + 28 0.0244 + 37 0.0488 + 42 0.0244 + 45 0.0488 + 47 0.341 + + 49 47 8 0 + 2 0.0851 + 7 0.255 + 28 0.0213 + 37 0.0213 + 41 0.0638 + 42 0.0213 + 45 0.0213 + 47 0.511 + + 51 5 3 0 + 7 0.2 + 42 0.6 + 47 0.2 + + 52 7 3 0 + 40 0.143 + 45 0.429 + 47 0.429 + + 55 145 12 0 + 2 0.0138 + 7 0.166 + 14 0.0069 + 29 0.0069 + 33 0.0069 + 34 0.0414 + 35 0.0069 + 41 0.0276 + 42 0.0828 + 44 0.0069 + 45 0.0483 + 47 0.586 + + 57 55 15 0 + 0 0.0182 + 3 0.0182 + 7 0.127 + 13 0.0909 + 14 0.0182 + 15 0.0182 + 21 0.0182 + 28 0.0182 + 31 0.0182 + 41 0.0182 + 42 0.0364 + 44 0.0182 + 45 0.0364 + 46 0.0182 + 47 0.527 + + 64 18 4 0 + 2 0.0556 + 7 0.111 + 45 0.111 + 47 0.722 + + 65 1 1 0 + 40 1 + + 69 15 6 0 + 7 0.533 + 21 0.0667 + 29 0.0667 + 41 0.0667 + 42 0.0667 + 47 0.2 + + 71 13 7 0 + 2 0.231 + 14 0.0769 + 24 0.0769 + 28 0.154 + 41 0.0769 + 42 0.0769 + 47 0.308 + + 72 11 5 0 + 2 0.0909 + 28 0.0909 + 42 0.0909 + 45 0.273 + 47 0.455 + + 73 2 1 0 + 28 1 + + 74 17 4 0 + 7 0.0588 + 32 0.0588 + 41 0.0588 + 47 0.824 + + 48 49 12 3 + 0 0.0204 + 7 0.367 + 13 0.0408 + 15 0.0408 + 21 0.0612 + 28 0.0204 + 37 0.0408 + 40 0.0204 + 41 0.0204 + 42 0.0204 + 45 0.0612 + 47 0.286 + + 41 5 2 0 + 42 0.2 + 47 0.8 + + 42 2 2 0 + 15 0.5 + 21 0.5 + + 47 34 10 0 + 0 0.0294 + 7 0.529 + 13 0.0588 + 21 0.0588 + 28 0.0294 + 37 0.0588 + 40 0.0294 + 41 0.0294 + 45 0.0588 + 47 0.118 + + 49 64 14 3 + 2 0.0625 + 7 0.188 + 8 0.0156 + 13 0.0312 + 14 0.0156 + 19 0.0156 + 21 0.0312 + 28 0.0156 + 35 0.0156 + 37 0.0156 + 41 0.156 + 42 0.0469 + 45 0.0156 + 47 0.375 + + 41 8 2 0 + 41 0.125 + 47 0.875 + + 47 35 11 0 + 2 0.0286 + 7 0.314 + 8 0.0286 + 13 0.0571 + 14 0.0286 + 21 0.0571 + 35 0.0286 + 37 0.0286 + 41 0.2 + 42 0.0286 + 47 0.2 + + 49 3 3 0 + 2 0.333 + 7 0.333 + 28 0.333 + + 51 11 5 0 + 7 0.0909 + 41 0.0909 + 42 0.636 + 45 0.0909 + 47 0.0909 + + 52 11 4 0 + 40 0.0909 + 41 0.182 + 45 0.455 + 47 0.273 + + 55 273 23 6 + 2 0.00733 + 7 0.0879 + 8 0.00366 + 9 0.011 + 13 0.0183 + 14 0.0293 + 15 0.00733 + 21 0.033 + 25 0.00733 + 28 0.00366 + 29 0.00366 + 31 0.00366 + 33 0.00366 + 34 0.022 + 35 0.00366 + 37 0.00733 + 40 0.00733 + 41 0.194 + 42 0.117 + 44 0.011 + 45 0.103 + 46 0.00366 + 47 0.311 + + 2 2 2 0 + 33 0.5 + 47 0.5 + + 40 2 2 0 + 40 0.5 + 45 0.5 + + 41 57 7 0 + 2 0.0175 + 13 0.0175 + 21 0.0175 + 41 0.526 + 42 0.0351 + 45 0.0526 + 47 0.333 + + 42 26 3 0 + 42 0.0385 + 44 0.0769 + 47 0.885 + + 47 162 22 0 + 2 0.00617 + 7 0.13 + 8 0.00617 + 9 0.0185 + 13 0.0185 + 14 0.0432 + 15 0.0123 + 21 0.0494 + 25 0.0123 + 28 0.00617 + 29 0.00617 + 31 0.00617 + 34 0.037 + 35 0.00617 + 37 0.0123 + 40 0.00617 + 41 0.13 + 42 0.167 + 44 0.00617 + 45 0.142 + 46 0.00617 + 47 0.173 + + 62 5 2 0 + 7 0.6 + 47 0.4 + + 57 74 16 5 + 0 0.0135 + 3 0.0135 + 7 0.0946 + 8 0.0135 + 13 0.0676 + 14 0.0135 + 15 0.0135 + 21 0.0135 + 28 0.027 + 31 0.0135 + 41 0.243 + 42 0.027 + 44 0.0135 + 45 0.027 + 46 0.0135 + 47 0.392 + + 41 7 5 0 + 41 0.143 + 42 0.143 + 44 0.143 + 45 0.143 + 47 0.429 + + 42 24 3 0 + 41 0.458 + 45 0.0417 + 47 0.5 + + 47 26 12 0 + 0 0.0385 + 3 0.0385 + 7 0.192 + 13 0.192 + 14 0.0385 + 15 0.0385 + 21 0.0385 + 28 0.0385 + 31 0.0385 + 41 0.0385 + 46 0.0385 + 47 0.269 + + 55 9 3 0 + 7 0.222 + 42 0.111 + 47 0.667 + + 58 4 1 0 + 41 1 + + 58 8 5 0 + 13 0.125 + 15 0.5 + 32 0.125 + 46 0.125 + 47 0.125 + + 62 55 11 1 + 3 0.0727 + 7 0.0909 + 8 0.0182 + 9 0.0182 + 13 0.0182 + 14 0.0182 + 22 0.0182 + 35 0.0182 + 42 0.345 + 45 0.236 + 47 0.145 + + 42 3 1 0 + 47 1 + + 64 37 10 1 + 2 0.027 + 7 0.0541 + 8 0.0541 + 13 0.0541 + 21 0.108 + 35 0.0811 + 41 0.162 + 42 0.027 + 45 0.0811 + 47 0.351 + + 41 8 4 0 + 2 0.125 + 7 0.125 + 45 0.125 + 47 0.625 + + 65 1 1 0 + 40 1 + + 69 29 9 1 + 7 0.276 + 14 0.0345 + 21 0.103 + 25 0.103 + 29 0.0345 + 40 0.0345 + 41 0.103 + 42 0.207 + 47 0.103 + + 42 3 1 0 + 47 1 + + 71 17 7 0 + 2 0.235 + 14 0.0588 + 24 0.0588 + 28 0.118 + 41 0.235 + 42 0.0588 + 47 0.235 + + 72 11 5 0 + 2 0.0909 + 28 0.0909 + 42 0.0909 + 45 0.273 + 47 0.455 + + 73 2 1 0 + 28 1 + + 74 19 6 0 + 0 0.0526 + 7 0.0526 + 28 0.0526 + 32 0.0526 + 41 0.0526 + 47 0.737 + +52 280 19 10 + 2 0.0214 + 4 0.0179 + 7 0.00714 + 8 0.0107 + 13 0.00357 + 15 0.00357 + 20 0.00357 + 27 0.0286 + 28 0.05 + 29 0.0143 + 30 0.0143 + 33 0.00714 + 40 0.0107 + 41 0.225 + 42 0.0214 + 44 0.05 + 45 0.175 + 46 0.00714 + 47 0.329 + + 0 3 1 0 + 4 1 + + 13 6 4 0 + 8 0.5 + 41 0.167 + 44 0.167 + 47 0.167 + + 15 3 3 0 + 15 0.333 + 20 0.333 + 47 0.333 + + 21 18 5 0 + 28 0.0556 + 33 0.0556 + 41 0.111 + 42 0.0556 + 47 0.722 + + 27 86 13 0 + 2 0.0233 + 4 0.0116 + 7 0.0116 + 27 0.0349 + 28 0.0349 + 29 0.0233 + 30 0.0233 + 40 0.0233 + 41 0.221 + 42 0.0116 + 44 0.0581 + 45 0.267 + 47 0.256 + + 28 13 4 0 + 41 0.769 + 45 0.0769 + 46 0.0769 + 47 0.0769 + + 41 5 3 0 + 13 0.2 + 27 0.4 + 28 0.4 + + 45 3 3 0 + 2 0.333 + 28 0.333 + 47 0.333 + + 47 127 15 3 + 2 0.0236 + 4 0.00787 + 7 0.00787 + 27 0.00787 + 28 0.0472 + 29 0.0157 + 30 0.0157 + 33 0.00787 + 40 0.00787 + 41 0.228 + 42 0.0236 + 44 0.0551 + 45 0.181 + 46 0.00787 + 47 0.362 + + 21 17 5 0 + 28 0.0588 + 33 0.0588 + 41 0.0588 + 42 0.0588 + 47 0.765 + + 28 11 4 0 + 41 0.727 + 45 0.0909 + 46 0.0909 + 47 0.0909 + + 52 2 2 0 + 28 0.5 + 44 0.5 + + 52 2 2 0 + 28 0.5 + 44 0.5 + +53 81 5 3 + 2 0.0494 + 7 0.0494 + 42 0.173 + 44 0.0617 + 47 0.667 + + 13 2 1 0 + 44 1 + + 44 5 3 0 + 2 0.4 + 7 0.2 + 42 0.4 + + 47 38 4 1 + 2 0.0526 + 7 0.0526 + 42 0.184 + 47 0.711 + + 44 5 3 0 + 2 0.4 + 7 0.2 + 42 0.4 + +54 1410 26 10 + 0 0.00142 + 2 0.0128 + 3 0.0163 + 4 0.351 + 7 0.044 + 8 0.0326 + 13 0.00355 + 14 0.000709 + 15 0.241 + 16 0.00213 + 18 0.0184 + 20 0.0348 + 21 0.00142 + 26 0.00426 + 28 0.00284 + 29 0.00284 + 30 0.00142 + 31 0.000709 + 33 0.00426 + 34 0.00142 + 39 0.000709 + 41 0.178 + 44 0.00284 + 45 0.0163 + 46 0.00142 + 47 0.0227 + + 3 2 2 0 + 4 0.5 + 39 0.5 + + 4 5 4 0 + 7 0.4 + 21 0.2 + 33 0.2 + 41 0.2 + + 8 11 9 0 + 4 0.0909 + 7 0.0909 + 8 0.0909 + 18 0.0909 + 20 0.0909 + 29 0.0909 + 41 0.0909 + 45 0.182 + 47 0.182 + + 13 19 9 0 + 2 0.0526 + 3 0.158 + 4 0.105 + 7 0.0526 + 8 0.211 + 15 0.158 + 30 0.0526 + 31 0.0526 + 45 0.158 + + 15 697 20 3 + 0 0.00143 + 2 0.0115 + 3 0.01 + 4 0.34 + 7 0.0373 + 8 0.0301 + 13 0.0043 + 15 0.135 + 18 0.0158 + 20 0.0316 + 26 0.0043 + 28 0.00287 + 29 0.00143 + 33 0.00143 + 34 0.00143 + 41 0.344 + 44 0.00287 + 45 0.00574 + 46 0.00143 + 47 0.0172 + + 15 89 12 0 + 2 0.0112 + 3 0.0337 + 4 0.629 + 7 0.0787 + 8 0.0449 + 13 0.0112 + 15 0.0674 + 20 0.0674 + 26 0.0112 + 34 0.0112 + 41 0.0225 + 45 0.0112 + + 41 231 8 0 + 2 0.013 + 4 0.61 + 7 0.0216 + 8 0.026 + 15 0.238 + 18 0.0346 + 20 0.0519 + 33 0.00433 + + 47 371 18 0 + 0 0.0027 + 2 0.0108 + 3 0.0108 + 4 0.097 + 7 0.0377 + 8 0.027 + 13 0.00539 + 15 0.0889 + 18 0.00809 + 20 0.0108 + 26 0.00539 + 28 0.00539 + 29 0.0027 + 41 0.639 + 44 0.00539 + 45 0.00809 + 46 0.0027 + 47 0.0323 + + 16 7 2 0 + 3 0.286 + 15 0.714 + + 41 235 2 0 + 15 0.987 + 16 0.0128 + + 47 411 22 5 + 0 0.00243 + 2 0.0219 + 3 0.0268 + 4 0.596 + 7 0.0754 + 8 0.0438 + 13 0.00487 + 15 0.0146 + 18 0.0316 + 20 0.0584 + 21 0.00243 + 26 0.0073 + 28 0.00487 + 29 0.00487 + 30 0.00243 + 33 0.0073 + 34 0.00243 + 41 0.0195 + 44 0.00487 + 45 0.0268 + 46 0.00243 + 47 0.0389 + + 4 5 4 0 + 7 0.4 + 21 0.2 + 33 0.2 + 41 0.2 + + 8 8 6 0 + 7 0.125 + 18 0.125 + 29 0.125 + 41 0.125 + 45 0.25 + 47 0.25 + + 13 11 7 0 + 2 0.0909 + 3 0.182 + 4 0.182 + 7 0.0909 + 15 0.0909 + 30 0.0909 + 45 0.273 + + 15 365 20 0 + 0 0.00274 + 2 0.0219 + 3 0.0192 + 4 0.638 + 7 0.0712 + 8 0.0466 + 13 0.00548 + 15 0.0137 + 18 0.0301 + 20 0.0603 + 26 0.00822 + 28 0.00548 + 29 0.00274 + 33 0.00274 + 34 0.00274 + 41 0.0164 + 44 0.00548 + 45 0.011 + 46 0.00274 + 47 0.0329 + + 16 2 1 0 + 3 1 + + 54 6 4 0 + 4 0.5 + 7 0.167 + 20 0.167 + 33 0.167 + + 55 10 8 0 + 4 0.3 + 8 0.1 + 14 0.1 + 18 0.1 + 20 0.1 + 41 0.1 + 45 0.1 + 47 0.1 + +55 887998 48 60 + 0 0.0273 + 1 0.000351 + 2 0.0385 + 3 0.0187 + 4 0.0895 + 5 1.13e-05 + 6 0.00017 + 7 0.269 + 8 0.0578 + 9 0.00198 + 10 0.00144 + 11 4.5e-06 + 12 0.000276 + 13 0.0448 + 14 0.00865 + 15 0.0601 + 16 0.00132 + 17 0.000474 + 18 0.00933 + 19 0.00118 + 20 0.00947 + 21 0.00895 + 22 0.00032 + 23 7.09e-05 + 24 0.0044 + 25 2.93e-05 + 26 0.0257 + 27 9.01e-06 + 28 0.0421 + 29 0.0397 + 30 0.0252 + 31 0.0126 + 32 0.00881 + 33 0.0183 + 34 0.0013 + 35 0.000993 + 36 2.14e-05 + 37 0.00439 + 38 1.46e-05 + 39 9.01e-06 + 40 0.000164 + 41 0.0609 + 42 0.00956 + 43 0.000404 + 44 0.0025 + 45 0.0118 + 46 0.00365 + 47 0.078 + + 0 15 6 0 + 7 0.0667 + 13 0.133 + 14 0.0667 + 15 0.6 + 19 0.0667 + 44 0.0667 + + 2 4952 33 24 + 0 0.00101 + 2 0.000404 + 3 0.0186 + 4 0.00323 + 6 0.000202 + 7 0.00424 + 8 0.0307 + 9 0.000808 + 10 0.000404 + 13 0.33 + 14 0.202 + 15 0.361 + 16 0.0224 + 18 0.000404 + 19 0.00141 + 20 0.000808 + 21 0.00101 + 26 0.000202 + 28 0.00121 + 29 0.000202 + 30 0.00363 + 31 0.000808 + 32 0.000202 + 33 0.000404 + 34 0.000202 + 40 0.000202 + 41 0.00687 + 42 0.00182 + 43 0.000202 + 44 0.000202 + 45 0.000202 + 46 0.00283 + 47 0.00263 + + 3 95 6 0 + 3 0.884 + 7 0.0105 + 8 0.0105 + 13 0.0632 + 21 0.0105 + 41 0.0211 + + 4 22 10 0 + 0 0.0909 + 3 0.0455 + 4 0.273 + 7 0.227 + 8 0.0455 + 13 0.0909 + 15 0.0909 + 21 0.0455 + 32 0.0455 + 47 0.0455 + + 6 1 1 0 + 6 1 + + 8 278 11 0 + 3 0.0036 + 4 0.0216 + 8 0.432 + 9 0.00719 + 13 0.439 + 14 0.0396 + 15 0.036 + 31 0.00719 + 40 0.0036 + 41 0.0036 + 42 0.00719 + + 9 4 2 0 + 3 0.5 + 9 0.5 + + 10 2 1 0 + 10 1 + + 13 1555 11 0 + 4 0.00257 + 8 0.0167 + 13 0.826 + 14 0.134 + 15 0.00257 + 16 0.000643 + 30 0.0045 + 41 0.00836 + 42 0.00129 + 46 0.00193 + 47 0.00129 + + 14 982 10 0 + 3 0.00102 + 7 0.00102 + 8 0.00204 + 13 0.196 + 14 0.785 + 15 0.0102 + 16 0.00102 + 19 0.00204 + 33 0.00102 + 41 0.00102 + + 15 1822 10 0 + 8 0.0011 + 13 0.00549 + 14 0.000549 + 15 0.945 + 16 0.0406 + 18 0.0011 + 19 0.0011 + 30 0.000549 + 41 0.00384 + 43 0.000549 + + 16 66 3 0 + 14 0.0152 + 15 0.455 + 16 0.53 + + 19 5 3 0 + 7 0.2 + 15 0.2 + 19 0.6 + + 20 5 2 0 + 7 0.2 + 20 0.8 + + 21 4 2 0 + 13 0.5 + 21 0.5 + + 28 4 1 0 + 28 1 + + 30 15 3 0 + 13 0.333 + 14 0.0667 + 30 0.6 + + 31 4 2 0 + 13 0.75 + 31 0.25 + + 45 12 3 0 + 15 0.0833 + 42 0.167 + 46 0.75 + + 47 9 8 0 + 0 0.111 + 3 0.111 + 13 0.222 + 14 0.111 + 28 0.111 + 41 0.111 + 45 0.111 + 46 0.111 + + 48 3 2 0 + 13 0.667 + 31 0.333 + + 49 1 1 0 + 41 1 + + 54 2 2 0 + 15 0.5 + 41 0.5 + + 55 57 18 0 + 0 0.0351 + 2 0.0351 + 3 0.0351 + 7 0.193 + 13 0.0877 + 14 0.0526 + 15 0.0877 + 21 0.0175 + 26 0.0175 + 28 0.0175 + 29 0.0175 + 30 0.0175 + 33 0.0175 + 34 0.0175 + 41 0.105 + 42 0.0526 + 46 0.0175 + 47 0.175 + + 56 1 1 0 + 7 1 + + 57 2 2 0 + 41 0.5 + 44 0.5 + + 3 14951 40 22 + 0 0.0276 + 1 0.000334 + 2 0.0587 + 3 0.0198 + 4 0.0795 + 7 0.288 + 8 0.0544 + 9 0.000401 + 10 0.00114 + 12 0.000134 + 13 0.0364 + 14 0.00408 + 15 0.0177 + 16 6.69e-05 + 18 0.0093 + 19 0.001 + 20 0.00816 + 21 0.0375 + 24 0.00294 + 25 6.69e-05 + 26 0.066 + 28 0.0289 + 29 0.106 + 30 0.0142 + 31 0.0122 + 32 0.00375 + 33 0.0142 + 34 0.00127 + 35 0.000201 + 37 0.000936 + 38 0.00087 + 39 0.000535 + 40 0.000334 + 41 0.0413 + 42 0.026 + 43 0.000669 + 44 0.00261 + 45 0.00348 + 46 0.00107 + 47 0.0286 + + 2 89 12 0 + 0 0.0337 + 2 0.0112 + 4 0.124 + 7 0.461 + 8 0.0449 + 13 0.0225 + 20 0.0225 + 21 0.0337 + 28 0.0112 + 41 0.213 + 45 0.0112 + 46 0.0112 + + 3 284 22 0 + 0 0.00704 + 2 0.0141 + 3 0.00352 + 4 0.0141 + 7 0.387 + 8 0.0176 + 13 0.00352 + 14 0.0106 + 15 0.00352 + 21 0.0176 + 26 0.268 + 28 0.0141 + 29 0.13 + 30 0.00352 + 31 0.0211 + 33 0.0106 + 34 0.00704 + 39 0.00704 + 41 0.0141 + 42 0.0352 + 45 0.00352 + 47 0.00704 + + 7 3 1 0 + 4 1 + + 8 787 30 0 + 0 0.0419 + 1 0.00127 + 2 0.0801 + 3 0.0102 + 4 0.131 + 7 0.26 + 8 0.0305 + 13 0.00635 + 14 0.00254 + 15 0.0152 + 18 0.0343 + 20 0.0267 + 21 0.0178 + 24 0.0127 + 26 0.0165 + 28 0.0394 + 29 0.0496 + 30 0.0267 + 31 0.0114 + 32 0.00508 + 33 0.033 + 34 0.00127 + 35 0.00127 + 37 0.00254 + 39 0.00127 + 41 0.0343 + 42 0.0114 + 44 0.00127 + 45 0.00381 + 47 0.0902 + + 9 19 8 0 + 0 0.158 + 7 0.263 + 13 0.0526 + 28 0.0526 + 29 0.158 + 30 0.0526 + 41 0.0526 + 47 0.211 + + 10 28 4 0 + 4 0.643 + 7 0.0357 + 18 0.25 + 20 0.0714 + + 13 4530 37 0 + 0 0.0232 + 1 0.000442 + 2 0.0433 + 3 0.00596 + 4 0.0656 + 7 0.201 + 8 0.0272 + 9 0.000221 + 10 0.000662 + 12 0.000221 + 13 0.0347 + 14 0.00177 + 15 0.034 + 18 0.0102 + 20 0.00927 + 21 0.0408 + 24 0.00419 + 25 0.000221 + 26 0.0682 + 28 0.0563 + 29 0.179 + 30 0.0143 + 31 0.015 + 32 0.00574 + 33 0.0232 + 34 0.000442 + 35 0.000442 + 37 0.0011 + 39 0.000442 + 40 0.0011 + 41 0.0219 + 42 0.07 + 43 0.00177 + 44 0.00287 + 45 0.00419 + 46 0.0011 + 47 0.0302 + + 14 4275 34 0 + 0 0.0262 + 2 0.106 + 3 0.00819 + 4 0.116 + 7 0.244 + 8 0.0952 + 9 0.000234 + 10 0.00257 + 13 0.0732 + 14 0.00444 + 15 0.0133 + 16 0.000234 + 18 0.0101 + 19 0.00211 + 20 0.00959 + 21 0.0428 + 24 0.00281 + 26 0.0414 + 28 0.018 + 29 0.0648 + 30 0.0131 + 31 0.0159 + 32 0.00327 + 33 0.00912 + 34 0.00211 + 37 0.000468 + 39 0.000468 + 41 0.0409 + 42 0.00795 + 43 0.000234 + 44 0.00234 + 45 0.00234 + 46 0.000234 + 47 0.0201 + + 15 275 26 0 + 0 0.0182 + 2 0.0291 + 3 0.00364 + 4 0.2 + 7 0.153 + 8 0.0327 + 13 0.0436 + 15 0.08 + 18 0.04 + 19 0.00364 + 20 0.0291 + 21 0.00727 + 26 0.0182 + 28 0.0473 + 29 0.0509 + 30 0.0109 + 31 0.0145 + 32 0.00364 + 33 0.0545 + 34 0.0109 + 41 0.0582 + 42 0.00727 + 44 0.00727 + 45 0.00364 + 46 0.00364 + 47 0.0691 + + 16 24 11 0 + 0 0.0417 + 2 0.0417 + 4 0.375 + 7 0.167 + 8 0.0417 + 28 0.0417 + 29 0.0833 + 30 0.0833 + 33 0.0417 + 46 0.0417 + 47 0.0417 + + 18 25 6 0 + 4 0.04 + 7 0.64 + 15 0.2 + 26 0.04 + 28 0.04 + 29 0.04 + + 21 20 6 0 + 2 0.05 + 4 0.1 + 7 0.7 + 20 0.05 + 41 0.05 + 44 0.05 + + 30 15 6 0 + 4 0.267 + 7 0.333 + 18 0.0667 + 20 0.0667 + 28 0.133 + 47 0.133 + + 31 22 12 0 + 0 0.0909 + 2 0.0455 + 4 0.0909 + 7 0.273 + 8 0.0455 + 13 0.136 + 20 0.0455 + 29 0.0909 + 30 0.0455 + 39 0.0455 + 41 0.0455 + 47 0.0455 + + 41 29 8 0 + 2 0.0345 + 3 0.0345 + 4 0.069 + 7 0.172 + 8 0.241 + 21 0.069 + 28 0.0345 + 41 0.345 + + 43 1 1 0 + 44 1 + + 45 9 6 0 + 2 0.222 + 4 0.222 + 7 0.222 + 15 0.111 + 20 0.111 + 28 0.111 + + 46 4 3 0 + 8 0.25 + 13 0.25 + 45 0.5 + + 47 4447 34 0 + 0 0.0324 + 1 0.00045 + 2 0.0322 + 3 0.0501 + 4 0.0369 + 7 0.422 + 8 0.0515 + 9 0.000899 + 10 0.000675 + 12 0.000225 + 13 0.0103 + 14 0.00652 + 15 0.00225 + 19 0.00112 + 20 0.000225 + 21 0.0376 + 24 0.000675 + 26 0.0911 + 28 0.00967 + 29 0.0902 + 30 0.0139 + 31 0.00607 + 32 0.00225 + 33 0.00472 + 34 0.00045 + 37 0.000899 + 38 0.00292 + 41 0.0573 + 42 0.00382 + 43 0.000225 + 44 0.00247 + 45 0.00337 + 46 0.00135 + 47 0.0232 + + 48 43 14 0 + 0 0.0233 + 4 0.233 + 7 0.163 + 8 0.0233 + 13 0.0698 + 15 0.0233 + 18 0.093 + 28 0.0233 + 29 0.0233 + 33 0.0233 + 37 0.0233 + 41 0.209 + 46 0.0233 + 47 0.0465 + + 54 7 4 0 + 2 0.143 + 4 0.429 + 7 0.286 + 8 0.143 + + 55 9 8 0 + 2 0.111 + 4 0.222 + 7 0.111 + 8 0.111 + 15 0.111 + 20 0.111 + 32 0.111 + 33 0.111 + + 4 80857 41 32 + 0 0.0477 + 1 0.000742 + 2 0.0329 + 3 0.0128 + 4 0.00155 + 5 2.47e-05 + 6 2.47e-05 + 7 0.398 + 8 0.00234 + 9 0.000247 + 10 0.000371 + 12 0.000408 + 13 0.0102 + 14 0.0123 + 15 0.00247 + 16 9.89e-05 + 17 0.00409 + 18 2.47e-05 + 19 0.00233 + 21 0.0171 + 22 0.002 + 23 1.24e-05 + 24 0.00694 + 26 0.0309 + 28 0.0629 + 29 0.0511 + 30 0.0334 + 31 0.0145 + 32 0.0125 + 33 0.0213 + 34 0.00146 + 35 0.00124 + 37 0.00651 + 40 4.95e-05 + 41 0.0794 + 42 0.0066 + 43 0.00042 + 44 0.00117 + 45 0.0123 + 46 0.0031 + 47 0.107 + + 2 16 6 0 + 7 0.312 + 26 0.0625 + 28 0.25 + 30 0.188 + 32 0.0625 + 47 0.125 + + 3 1180 26 0 + 0 0.0127 + 2 0.0314 + 3 0.00169 + 7 0.618 + 8 0.00169 + 13 0.00678 + 14 0.00254 + 15 0.000847 + 17 0.00169 + 21 0.00763 + 24 0.00254 + 26 0.0178 + 28 0.0356 + 29 0.0322 + 30 0.0322 + 31 0.00847 + 32 0.00339 + 33 0.00763 + 34 0.000847 + 37 0.00508 + 41 0.05 + 42 0.00763 + 44 0.00169 + 45 0.00254 + 46 0.00254 + 47 0.105 + + 4 71 16 0 + 0 0.0423 + 7 0.394 + 8 0.0141 + 13 0.0141 + 21 0.0423 + 24 0.0141 + 28 0.0845 + 29 0.0141 + 30 0.0563 + 31 0.0282 + 32 0.0423 + 33 0.0282 + 41 0.0282 + 42 0.0141 + 45 0.0563 + 47 0.127 + + 6 18 9 0 + 0 0.0556 + 2 0.111 + 7 0.389 + 8 0.0556 + 28 0.111 + 31 0.0556 + 35 0.0556 + 41 0.0556 + 47 0.111 + + 7 1 1 0 + 15 1 + + 8 17405 38 0 + 0 0.078 + 1 0.00109 + 2 0.0307 + 3 0.00167 + 4 0.000862 + 5 0.000115 + 7 0.426 + 8 0.00184 + 9 5.75e-05 + 10 0.000632 + 12 0.000402 + 13 0.00718 + 14 0.00431 + 15 0.00218 + 16 5.75e-05 + 17 0.00287 + 19 0.00247 + 21 0.0196 + 22 5.75e-05 + 24 0.00678 + 26 0.0298 + 28 0.0666 + 29 0.0525 + 30 0.0357 + 31 0.0159 + 32 0.0133 + 33 0.0219 + 34 0.000804 + 35 0.000919 + 37 0.00368 + 40 5.75e-05 + 41 0.0705 + 42 0.00672 + 43 0.000172 + 44 0.000689 + 45 0.0106 + 46 0.00195 + 47 0.0812 + + 9 397 24 0 + 0 0.0907 + 2 0.063 + 7 0.378 + 13 0.00504 + 14 0.00756 + 15 0.00756 + 16 0.00252 + 17 0.00252 + 19 0.0101 + 21 0.0126 + 24 0.00252 + 26 0.0327 + 28 0.0932 + 29 0.0403 + 30 0.0529 + 31 0.0126 + 32 0.0277 + 33 0.0428 + 37 0.00252 + 41 0.0479 + 42 0.00756 + 44 0.00252 + 45 0.00252 + 47 0.0529 + + 10 727 22 0 + 0 0.144 + 1 0.00275 + 2 0.0151 + 7 0.38 + 13 0.00275 + 17 0.00138 + 19 0.00138 + 21 0.0578 + 24 0.00138 + 26 0.0289 + 28 0.0385 + 29 0.0399 + 30 0.00825 + 31 0.0165 + 32 0.0206 + 33 0.0179 + 37 0.00138 + 41 0.0894 + 42 0.011 + 44 0.00275 + 45 0.0179 + 47 0.1 + + 12 2 2 0 + 0 0.5 + 2 0.5 + + 13 38560 39 0 + 0 0.0431 + 1 0.000726 + 2 0.0281 + 3 0.0249 + 4 0.00114 + 6 2.59e-05 + 7 0.377 + 8 0.00319 + 9 0.000441 + 10 0.000363 + 12 0.000441 + 13 0.0138 + 14 0.0218 + 15 0.00265 + 16 7.78e-05 + 17 0.00423 + 18 5.19e-05 + 19 0.00202 + 21 0.0182 + 22 0.00412 + 24 0.00747 + 26 0.0309 + 28 0.0659 + 29 0.0534 + 30 0.0347 + 31 0.0155 + 32 0.0119 + 33 0.0219 + 34 0.00187 + 35 0.00119 + 37 0.00778 + 40 2.59e-05 + 41 0.0783 + 42 0.00578 + 43 0.000622 + 44 0.00137 + 45 0.0108 + 46 0.00371 + 47 0.101 + + 14 5945 33 0 + 0 0.0192 + 2 0.0441 + 4 0.00404 + 7 0.376 + 8 0.00202 + 10 0.000336 + 12 0.000168 + 13 0.00673 + 14 0.00471 + 15 0.000505 + 16 0.000168 + 17 0.0116 + 19 0.000505 + 21 0.0104 + 23 0.000168 + 24 0.00976 + 26 0.031 + 28 0.0833 + 29 0.0474 + 30 0.0368 + 31 0.00908 + 32 0.0172 + 33 0.02 + 34 0.00118 + 35 0.0032 + 37 0.00622 + 41 0.076 + 42 0.00706 + 43 0.000168 + 44 0.00135 + 45 0.0163 + 46 0.00219 + 47 0.152 + + 15 8602 35 0 + 0 0.0117 + 1 0.000465 + 2 0.0398 + 3 0.000581 + 4 0.00221 + 7 0.483 + 8 0.000581 + 12 0.000698 + 13 0.00581 + 14 0.00174 + 15 0.00267 + 16 0.000116 + 17 0.00093 + 19 0.00105 + 21 0.00523 + 22 0.000116 + 24 0.00302 + 26 0.038 + 28 0.0367 + 29 0.031 + 30 0.0208 + 31 0.0086 + 32 0.00732 + 33 0.0166 + 34 0.00221 + 35 0.00105 + 37 0.0086 + 40 0.000116 + 41 0.114 + 42 0.00546 + 43 0.000116 + 44 0.000814 + 45 0.00802 + 46 0.0057 + 47 0.135 + + 16 411 25 0 + 0 0.00243 + 2 0.0706 + 4 0.00243 + 7 0.406 + 13 0.0243 + 14 0.00487 + 17 0.00243 + 21 0.0219 + 24 0.00973 + 26 0.0487 + 28 0.0535 + 29 0.0316 + 30 0.0219 + 31 0.0073 + 32 0.00487 + 33 0.0073 + 34 0.00487 + 35 0.00243 + 37 0.0292 + 40 0.00243 + 41 0.0925 + 42 0.00487 + 44 0.00243 + 45 0.0122 + 47 0.129 + + 19 14 8 0 + 2 0.143 + 7 0.214 + 21 0.0714 + 26 0.143 + 29 0.0714 + 41 0.0714 + 45 0.143 + 47 0.143 + + 20 23 9 0 + 7 0.304 + 21 0.087 + 24 0.087 + 28 0.174 + 30 0.0435 + 31 0.0435 + 32 0.13 + 35 0.0435 + 45 0.087 + + 21 134 19 0 + 0 0.231 + 2 0.0149 + 4 0.00746 + 7 0.291 + 14 0.0224 + 15 0.00746 + 19 0.0224 + 21 0.0448 + 24 0.0149 + 26 0.0224 + 28 0.0522 + 29 0.0299 + 30 0.0522 + 33 0.0299 + 37 0.00746 + 41 0.0746 + 42 0.0149 + 45 0.0373 + 47 0.0224 + + 22 13 7 0 + 0 0.0769 + 4 0.0769 + 7 0.462 + 28 0.0769 + 29 0.0769 + 30 0.154 + 33 0.0769 + + 23 34 11 0 + 0 0.206 + 2 0.0294 + 7 0.235 + 21 0.0294 + 26 0.0294 + 28 0.0294 + 29 0.0588 + 31 0.0882 + 42 0.0294 + 45 0.0588 + 47 0.206 + + 30 600 27 0 + 0 0.0817 + 1 0.00333 + 2 0.0267 + 7 0.398 + 8 0.00167 + 13 0.005 + 14 0.00167 + 15 0.00333 + 17 0.005 + 19 0.00167 + 21 0.015 + 24 0.01 + 26 0.0333 + 28 0.055 + 29 0.0433 + 30 0.0367 + 31 0.00833 + 32 0.0217 + 33 0.045 + 34 0.00167 + 37 0.00667 + 41 0.0767 + 42 0.00833 + 43 0.00167 + 45 0.00833 + 46 0.00167 + 47 0.0983 + + 31 594 25 0 + 0 0.0303 + 2 0.0354 + 4 0.00673 + 7 0.468 + 8 0.00168 + 9 0.00168 + 13 0.00842 + 14 0.00337 + 17 0.00337 + 19 0.00168 + 21 0.00673 + 22 0.00168 + 24 0.0118 + 26 0.0286 + 28 0.0724 + 29 0.0825 + 30 0.0488 + 31 0.0152 + 32 0.0168 + 33 0.0118 + 37 0.00673 + 41 0.0488 + 42 0.00842 + 45 0.00168 + 47 0.0774 + + 39 26 10 0 + 2 0.0769 + 7 0.5 + 13 0.0385 + 14 0.0385 + 21 0.0385 + 26 0.115 + 29 0.0769 + 30 0.0385 + 41 0.0385 + 47 0.0385 + + 44 28 10 0 + 0 0.0714 + 2 0.107 + 7 0.393 + 19 0.0357 + 21 0.0357 + 28 0.0357 + 30 0.0357 + 35 0.0357 + 41 0.0357 + 45 0.214 + + 45 444 26 0 + 0 0.0968 + 1 0.00901 + 2 0.0203 + 7 0.358 + 9 0.00225 + 13 0.027 + 14 0.0045 + 15 0.0113 + 16 0.00225 + 17 0.00676 + 19 0.0113 + 21 0.0158 + 24 0.0045 + 26 0.027 + 28 0.0676 + 29 0.0968 + 30 0.0495 + 31 0.045 + 32 0.00676 + 33 0.0518 + 37 0.00225 + 41 0.0293 + 42 0.0135 + 45 0.00225 + 46 0.00225 + 47 0.036 + + 47 2538 32 0 + 0 0.0303 + 2 0.0693 + 3 0.0146 + 4 0.00473 + 7 0.265 + 8 0.00197 + 10 0.000394 + 12 0.000394 + 13 0.00709 + 14 0.00512 + 15 0.00197 + 17 0.0106 + 19 0.0118 + 21 0.0296 + 24 0.00591 + 26 0.0209 + 28 0.0571 + 29 0.0201 + 30 0.0197 + 31 0.00906 + 32 0.0197 + 33 0.015 + 34 0.000394 + 35 0.00236 + 37 0.00591 + 41 0.0563 + 42 0.0146 + 43 0.00118 + 44 0.00355 + 45 0.0583 + 46 0.00197 + 47 0.235 + + 48 2419 31 0 + 0 0.0864 + 1 0.000413 + 2 0.0364 + 3 0.00165 + 4 0.000827 + 6 0.000413 + 7 0.329 + 8 0.00248 + 10 0.000827 + 12 0.000413 + 13 0.00537 + 14 0.000827 + 15 0.00661 + 17 0.000413 + 19 0.00331 + 21 0.0215 + 24 0.0103 + 26 0.0302 + 28 0.0566 + 29 0.127 + 30 0.0463 + 31 0.0265 + 32 0.012 + 33 0.0294 + 37 0.00248 + 41 0.0744 + 42 0.00951 + 43 0.000413 + 45 0.0112 + 46 0.000827 + 47 0.0661 + + 49 8 4 0 + 0 0.375 + 7 0.375 + 29 0.125 + 32 0.125 + + 54 240 13 0 + 0 0.0125 + 2 0.0125 + 7 0.292 + 13 0.00417 + 26 0.00833 + 28 0.00833 + 29 0.0208 + 30 0.0208 + 31 0.0167 + 33 0.0208 + 41 0.383 + 42 0.00417 + 47 0.196 + + 55 157 17 0 + 0 0.0318 + 2 0.00637 + 7 0.395 + 13 0.00637 + 19 0.00637 + 21 0.00637 + 24 0.0127 + 26 0.0318 + 28 0.0446 + 29 0.0637 + 30 0.0318 + 31 0.0318 + 32 0.00637 + 33 0.0318 + 34 0.00637 + 41 0.146 + 47 0.14 + + 56 123 14 0 + 0 0.065 + 2 0.0325 + 7 0.463 + 21 0.0244 + 26 0.0325 + 28 0.0732 + 30 0.0244 + 31 0.00813 + 32 0.0325 + 33 0.0244 + 41 0.114 + 42 0.0163 + 45 0.00813 + 47 0.0813 + + 58 10 6 0 + 0 0.1 + 7 0.4 + 28 0.1 + 29 0.1 + 45 0.2 + 47 0.1 + + 60 63 9 0 + 0 0.0476 + 2 0.0317 + 7 0.714 + 21 0.0159 + 26 0.0476 + 28 0.0952 + 29 0.0159 + 30 0.0159 + 41 0.0159 + + 68 43 11 0 + 0 0.0465 + 2 0.0233 + 4 0.0465 + 7 0.628 + 26 0.0465 + 28 0.0233 + 29 0.0233 + 30 0.0465 + 33 0.0465 + 41 0.0233 + 47 0.0465 + + 5 861 24 0 + 0 0.00581 + 2 0.0918 + 7 0.18 + 8 0.00465 + 10 0.00348 + 13 0.0186 + 14 0.00465 + 15 0.00232 + 16 0.00116 + 19 0.00232 + 21 0.029 + 28 0.0163 + 29 0.0395 + 30 0.00465 + 31 0.00232 + 32 0.0279 + 33 0.0151 + 34 0.00813 + 37 0.0267 + 41 0.143 + 42 0.00813 + 44 0.00232 + 45 0.167 + 47 0.195 + + 6 150 19 6 + 2 0.0133 + 3 0.00667 + 4 0.127 + 6 0.193 + 7 0.12 + 8 0.02 + 15 0.28 + 18 0.0133 + 19 0.00667 + 20 0.0133 + 25 0.0133 + 26 0.0133 + 28 0.0133 + 29 0.00667 + 32 0.00667 + 33 0.00667 + 41 0.0333 + 45 0.0667 + 47 0.0467 + + 6 29 12 0 + 2 0.0345 + 4 0.241 + 6 0.172 + 7 0.138 + 8 0.0345 + 15 0.0345 + 18 0.069 + 28 0.0345 + 29 0.0345 + 41 0.0345 + 45 0.069 + 47 0.103 + + 13 12 4 0 + 4 0.25 + 6 0.583 + 8 0.0833 + 15 0.0833 + + 14 7 3 0 + 3 0.143 + 6 0.714 + 7 0.143 + + 15 42 2 0 + 6 0.0476 + 15 0.952 + + 46 2 1 0 + 45 1 + + 47 53 14 0 + 2 0.0189 + 4 0.151 + 6 0.17 + 7 0.226 + 19 0.0189 + 20 0.0377 + 25 0.0377 + 26 0.0377 + 28 0.0189 + 32 0.0189 + 33 0.0189 + 41 0.0755 + 45 0.0943 + 47 0.0755 + + 7 318 24 10 + 0 0.044 + 2 0.0314 + 3 0.0157 + 4 0.00314 + 7 0.151 + 8 0.0126 + 10 0.00314 + 13 0.132 + 14 0.0975 + 15 0.0943 + 18 0.00314 + 21 0.0535 + 26 0.0283 + 28 0.0566 + 29 0.0409 + 30 0.022 + 31 0.022 + 32 0.00943 + 33 0.0252 + 35 0.00314 + 41 0.0472 + 42 0.00943 + 45 0.00943 + 47 0.0849 + + 3 47 13 0 + 0 0.0851 + 3 0.0638 + 7 0.468 + 13 0.0426 + 15 0.0213 + 21 0.0213 + 26 0.106 + 29 0.0213 + 30 0.0426 + 31 0.0213 + 41 0.0638 + 42 0.0213 + 47 0.0213 + + 4 30 11 0 + 0 0.167 + 7 0.233 + 15 0.1 + 21 0.1 + 26 0.0667 + 28 0.0333 + 31 0.0333 + 33 0.0667 + 41 0.1 + 45 0.0333 + 47 0.0667 + + 8 19 11 0 + 0 0.0526 + 4 0.0526 + 7 0.0526 + 8 0.0526 + 14 0.0526 + 21 0.105 + 26 0.0526 + 28 0.316 + 29 0.105 + 31 0.105 + 41 0.0526 + + 13 86 17 0 + 0 0.0116 + 2 0.0116 + 3 0.0116 + 7 0.0581 + 8 0.0233 + 10 0.0116 + 13 0.337 + 14 0.267 + 18 0.0116 + 21 0.0698 + 28 0.0116 + 29 0.0349 + 30 0.0116 + 32 0.0116 + 33 0.0233 + 41 0.0581 + 47 0.0349 + + 14 2 2 0 + 45 0.5 + 47 0.5 + + 15 49 8 0 + 7 0.0204 + 13 0.184 + 14 0.102 + 15 0.531 + 28 0.0204 + 30 0.0408 + 31 0.0612 + 47 0.0408 + + 21 3 2 0 + 2 0.333 + 28 0.667 + + 39 2 2 0 + 21 0.5 + 26 0.5 + + 47 67 17 0 + 0 0.0448 + 2 0.119 + 7 0.149 + 8 0.0149 + 13 0.0149 + 14 0.0149 + 21 0.0597 + 28 0.104 + 29 0.0746 + 30 0.0149 + 32 0.0299 + 33 0.0448 + 35 0.0149 + 41 0.0299 + 42 0.0149 + 45 0.0149 + 47 0.239 + + 55 6 5 0 + 7 0.333 + 13 0.167 + 14 0.167 + 41 0.167 + 42 0.167 + + 8 48850 43 29 + 0 0.0133 + 1 0.000184 + 2 0.0351 + 3 0.0255 + 4 0.357 + 6 0.000143 + 7 0.172 + 8 0.0864 + 9 0.00254 + 10 0.00328 + 12 6.14e-05 + 13 0.0137 + 14 0.00282 + 15 0.0132 + 16 0.000246 + 17 2.05e-05 + 18 0.0354 + 19 0.000676 + 20 0.0406 + 21 0.00948 + 22 0.00086 + 23 0.00102 + 24 0.00264 + 25 2.05e-05 + 26 0.0131 + 28 0.0268 + 29 0.0167 + 30 0.0198 + 31 0.0105 + 32 0.00571 + 33 0.0085 + 34 0.000655 + 35 0.000205 + 36 6.14e-05 + 37 0.00192 + 40 4.09e-05 + 41 0.0306 + 42 0.00268 + 43 0.000368 + 44 0.00086 + 45 0.0123 + 46 0.000512 + 47 0.0316 + + 2 152 23 0 + 0 0.00658 + 2 0.0132 + 3 0.0263 + 4 0.289 + 7 0.23 + 8 0.0395 + 9 0.00658 + 13 0.0132 + 15 0.0263 + 18 0.0263 + 20 0.0197 + 21 0.0132 + 24 0.00658 + 26 0.0263 + 28 0.0263 + 30 0.0197 + 32 0.0132 + 33 0.0197 + 41 0.0855 + 42 0.00658 + 44 0.00658 + 45 0.0526 + 47 0.0263 + + 3 710 19 0 + 0 0.00282 + 2 0.00282 + 3 0.00845 + 4 0.785 + 7 0.141 + 8 0.00282 + 14 0.00282 + 18 0.0183 + 20 0.0127 + 21 0.00141 + 26 0.00141 + 28 0.00282 + 29 0.00563 + 30 0.00282 + 32 0.00141 + 33 0.00141 + 41 0.00141 + 42 0.00282 + 45 0.00282 + + 4 67 13 0 + 0 0.134 + 2 0.0299 + 7 0.328 + 21 0.0597 + 24 0.0149 + 26 0.0149 + 28 0.164 + 29 0.0149 + 30 0.0597 + 37 0.0149 + 41 0.0299 + 45 0.0149 + 47 0.119 + + 6 2 2 0 + 3 0.5 + 8 0.5 + + 8 3996 36 0 + 0 0.0133 + 1 0.000501 + 2 0.0511 + 3 0.0198 + 4 0.362 + 7 0.183 + 8 0.0568 + 9 0.00025 + 10 0.0015 + 13 0.00701 + 14 0.000501 + 15 0.00475 + 18 0.0455 + 19 0.001 + 20 0.048 + 21 0.00551 + 22 0.000751 + 23 0.00025 + 24 0.00375 + 26 0.00976 + 28 0.0263 + 29 0.0235 + 30 0.0205 + 31 0.00826 + 32 0.00676 + 33 0.00826 + 35 0.000501 + 37 0.00225 + 40 0.00025 + 41 0.04 + 42 0.00601 + 43 0.000501 + 44 0.000501 + 45 0.01 + 46 0.00025 + 47 0.0313 + + 9 12 8 0 + 0 0.0833 + 2 0.0833 + 4 0.417 + 7 0.0833 + 18 0.0833 + 31 0.0833 + 45 0.0833 + 47 0.0833 + + 10 7 3 0 + 4 0.429 + 7 0.143 + 18 0.429 + + 13 26070 40 0 + 0 0.011 + 1 0.000153 + 2 0.024 + 3 0.0157 + 4 0.465 + 6 0.000192 + 7 0.112 + 8 0.0908 + 9 0.00226 + 10 0.00315 + 13 0.0171 + 14 0.00345 + 15 0.0185 + 16 0.000345 + 18 0.043 + 19 0.000575 + 20 0.0436 + 21 0.00832 + 22 0.000921 + 23 0.000806 + 24 0.00146 + 25 3.84e-05 + 26 0.00809 + 28 0.0181 + 29 0.0136 + 30 0.0134 + 31 0.00951 + 32 0.00326 + 33 0.0061 + 34 0.000614 + 35 0.000115 + 36 7.67e-05 + 37 0.00119 + 41 0.0252 + 42 0.00153 + 43 0.000422 + 44 0.000959 + 45 0.0114 + 46 0.00046 + 47 0.0233 + + 14 13431 41 0 + 0 0.0187 + 1 0.000223 + 2 0.0561 + 3 0.0497 + 4 0.12 + 6 0.000149 + 7 0.281 + 8 0.11 + 9 0.00439 + 10 0.00499 + 12 0.000223 + 13 0.00864 + 14 0.00127 + 15 0.00849 + 16 0.000149 + 18 0.0237 + 19 0.00067 + 20 0.0344 + 21 0.00834 + 22 0.000968 + 23 0.00119 + 24 0.00499 + 26 0.0237 + 28 0.0472 + 29 0.0201 + 30 0.0331 + 31 0.0135 + 32 0.0108 + 33 0.0134 + 34 0.000968 + 35 0.000298 + 36 7.45e-05 + 37 0.00328 + 40 7.45e-05 + 41 0.0369 + 42 0.00335 + 43 0.000298 + 44 0.00067 + 45 0.00752 + 46 0.000819 + 47 0.0462 + + 15 1891 29 0 + 0 0.00635 + 2 0.0212 + 3 0.028 + 4 0.366 + 7 0.24 + 8 0.0317 + 9 0.00159 + 10 0.000529 + 13 0.027 + 14 0.0111 + 15 0.01 + 18 0.0296 + 19 0.000529 + 20 0.0317 + 21 0.00687 + 24 0.000529 + 26 0.0169 + 28 0.0164 + 29 0.0196 + 30 0.0206 + 31 0.0169 + 32 0.00212 + 33 0.0074 + 37 0.00106 + 41 0.0365 + 42 0.0037 + 45 0.0037 + 46 0.000529 + 47 0.0418 + + 16 101 21 0 + 2 0.0594 + 3 0.0396 + 4 0.168 + 7 0.277 + 8 0.0396 + 10 0.0099 + 13 0.0297 + 15 0.0198 + 20 0.0396 + 21 0.0099 + 26 0.0297 + 28 0.0198 + 29 0.0099 + 30 0.0297 + 31 0.0198 + 32 0.0099 + 33 0.0198 + 41 0.0495 + 42 0.0198 + 45 0.0099 + 47 0.0891 + + 18 12 5 0 + 4 0.583 + 7 0.0833 + 8 0.0833 + 13 0.167 + 47 0.0833 + + 21 3 3 0 + 2 0.333 + 4 0.333 + 15 0.333 + + 30 120 24 0 + 0 0.00833 + 2 0.158 + 3 0.0333 + 4 0.267 + 7 0.15 + 8 0.0333 + 10 0.00833 + 13 0.00833 + 14 0.00833 + 15 0.00833 + 18 0.05 + 20 0.05 + 21 0.0167 + 24 0.00833 + 26 0.0167 + 28 0.0333 + 29 0.00833 + 30 0.0333 + 31 0.00833 + 32 0.00833 + 33 0.025 + 41 0.025 + 45 0.00833 + 47 0.025 + + 31 89 15 0 + 0 0.0225 + 2 0.0112 + 3 0.0112 + 4 0.258 + 7 0.247 + 8 0.124 + 13 0.0674 + 15 0.0337 + 18 0.0562 + 20 0.0337 + 21 0.0112 + 28 0.0225 + 29 0.0449 + 30 0.0337 + 47 0.0225 + + 39 13 2 0 + 4 0.923 + 19 0.0769 + + 41 312 24 0 + 0 0.0128 + 2 0.00962 + 3 0.00641 + 4 0.471 + 7 0.17 + 8 0.0417 + 15 0.00321 + 18 0.00641 + 20 0.0577 + 21 0.00641 + 23 0.00321 + 24 0.00321 + 26 0.0128 + 28 0.0128 + 29 0.00641 + 30 0.00962 + 31 0.00321 + 32 0.00962 + 33 0.016 + 34 0.00321 + 41 0.0641 + 42 0.00641 + 45 0.0192 + 47 0.0449 + + 43 3 3 0 + 2 0.333 + 4 0.333 + 44 0.333 + + 44 7 5 0 + 2 0.143 + 4 0.286 + 7 0.286 + 21 0.143 + 29 0.143 + + 45 95 14 0 + 0 0.0105 + 2 0.0211 + 3 0.0105 + 4 0.537 + 7 0.147 + 8 0.0526 + 13 0.0105 + 18 0.0316 + 20 0.0421 + 28 0.0421 + 30 0.0211 + 31 0.0105 + 41 0.0526 + 47 0.0105 + + 46 136 9 0 + 2 0.00735 + 4 0.00735 + 8 0.0221 + 16 0.00735 + 19 0.00735 + 20 0.00735 + 21 0.0147 + 41 0.0147 + 45 0.912 + + 47 1224 33 0 + 0 0.018 + 2 0.0359 + 3 0.0098 + 4 0.393 + 7 0.151 + 8 0.0237 + 9 0.000817 + 10 0.00163 + 13 0.0106 + 14 0.00408 + 18 0.000817 + 19 0.00163 + 20 0.0474 + 21 0.0637 + 22 0.00163 + 23 0.00817 + 24 0.00163 + 26 0.0147 + 28 0.0221 + 29 0.0327 + 30 0.0163 + 31 0.00817 + 32 0.00654 + 33 0.0106 + 34 0.00163 + 35 0.000817 + 37 0.0049 + 41 0.0408 + 42 0.00572 + 43 0.000817 + 44 0.00327 + 45 0.00654 + 47 0.0507 + + 48 199 22 0 + 0 0.0101 + 2 0.0201 + 3 0.00503 + 4 0.533 + 7 0.121 + 8 0.0452 + 17 0.00503 + 18 0.0653 + 20 0.0704 + 21 0.0151 + 23 0.00503 + 24 0.00503 + 26 0.00503 + 28 0.0101 + 30 0.0151 + 31 0.00503 + 32 0.0101 + 33 0.00503 + 41 0.0201 + 42 0.00503 + 45 0.00503 + 47 0.0201 + + 54 13 5 0 + 4 0.385 + 7 0.308 + 8 0.154 + 20 0.0769 + 29 0.0769 + + 55 22 9 0 + 2 0.0455 + 3 0.0455 + 4 0.455 + 7 0.0909 + 8 0.0455 + 18 0.0909 + 20 0.0909 + 21 0.0909 + 30 0.0455 + + 56 68 12 0 + 2 0.0147 + 3 0.0294 + 4 0.309 + 7 0.221 + 8 0.0441 + 20 0.0882 + 26 0.0441 + 28 0.0735 + 29 0.0294 + 30 0.0441 + 31 0.0294 + 41 0.0735 + + 58 17 5 0 + 0 0.118 + 4 0.588 + 7 0.176 + 24 0.0588 + 33 0.0588 + + 60 30 3 0 + 4 0.9 + 7 0.0333 + 20 0.0667 + + 68 40 12 0 + 2 0.025 + 4 0.475 + 7 0.15 + 8 0.025 + 20 0.025 + 26 0.05 + 28 0.075 + 29 0.025 + 30 0.025 + 37 0.025 + 41 0.05 + 47 0.05 + + 9 1597 31 14 + 0 0.0601 + 1 0.00125 + 2 0.0507 + 3 0.015 + 4 0.249 + 7 0.193 + 8 0.0106 + 12 0.000626 + 13 0.0025 + 14 0.00689 + 15 0.0025 + 16 0.000626 + 18 0.0113 + 19 0.0025 + 20 0.0144 + 21 0.0244 + 24 0.00626 + 26 0.0288 + 28 0.102 + 29 0.0394 + 30 0.0557 + 31 0.01 + 32 0.0276 + 33 0.0244 + 34 0.000626 + 37 0.000626 + 41 0.025 + 42 0.00313 + 43 0.000626 + 45 0.01 + 47 0.02 + + 2 4 4 0 + 0 0.25 + 7 0.25 + 28 0.25 + 41 0.25 + + 3 5 1 0 + 4 1 + + 8 103 16 0 + 0 0.0291 + 2 0.117 + 4 0.214 + 7 0.243 + 21 0.0194 + 24 0.00971 + 26 0.0777 + 28 0.0485 + 29 0.0583 + 30 0.0485 + 31 0.0194 + 32 0.0291 + 33 0.0194 + 41 0.0291 + 45 0.0194 + 47 0.0194 + + 13 734 28 0 + 0 0.0436 + 1 0.00136 + 2 0.0354 + 3 0.0109 + 4 0.384 + 7 0.147 + 8 0.00954 + 12 0.00136 + 13 0.00136 + 14 0.00817 + 15 0.00545 + 16 0.00136 + 18 0.0177 + 19 0.00545 + 20 0.0123 + 21 0.0123 + 24 0.0109 + 26 0.03 + 28 0.0858 + 29 0.0245 + 30 0.045 + 31 0.00545 + 32 0.0232 + 33 0.0204 + 41 0.0327 + 42 0.00545 + 45 0.00545 + 47 0.0136 + + 14 473 26 0 + 0 0.0402 + 2 0.0465 + 3 0.0275 + 4 0.0867 + 7 0.296 + 8 0.0148 + 13 0.00211 + 14 0.00423 + 18 0.0106 + 20 0.0169 + 21 0.0127 + 24 0.00211 + 26 0.0317 + 28 0.123 + 29 0.0613 + 30 0.0677 + 31 0.00846 + 32 0.0317 + 33 0.0296 + 34 0.00211 + 37 0.00211 + 41 0.0233 + 42 0.00211 + 43 0.00211 + 45 0.0148 + 47 0.0402 + + 15 39 8 0 + 2 0.0513 + 4 0.513 + 7 0.154 + 20 0.0513 + 28 0.103 + 29 0.0256 + 30 0.0769 + 41 0.0256 + + 16 2 2 0 + 8 0.5 + 29 0.5 + + 30 2 2 0 + 2 0.5 + 26 0.5 + + 41 17 7 0 + 4 0.471 + 7 0.235 + 20 0.0588 + 30 0.0588 + 31 0.0588 + 32 0.0588 + 33 0.0588 + + 45 3 3 0 + 0 0.333 + 4 0.333 + 33 0.333 + + 46 1 1 0 + 45 1 + + 47 201 18 0 + 0 0.194 + 1 0.00498 + 2 0.0896 + 3 0.0149 + 4 0.0746 + 7 0.109 + 8 0.00995 + 13 0.00995 + 14 0.0149 + 20 0.00498 + 21 0.109 + 28 0.154 + 29 0.0398 + 30 0.0647 + 31 0.0249 + 32 0.0398 + 33 0.0299 + 45 0.00995 + + 48 4 3 0 + 4 0.25 + 7 0.25 + 20 0.5 + + 56 5 4 0 + 7 0.2 + 28 0.2 + 30 0.4 + 47 0.2 + + 10 1526 27 9 + 0 0.00197 + 2 0.0262 + 3 0.019 + 4 0.479 + 7 0.106 + 8 0.00524 + 13 0.00262 + 14 0.000655 + 18 0.132 + 19 0.000655 + 20 0.0511 + 21 0.0059 + 24 0.00459 + 26 0.00328 + 28 0.0105 + 29 0.0151 + 30 0.00655 + 31 0.00262 + 32 0.00328 + 33 0.00721 + 34 0.00131 + 35 0.00131 + 37 0.00262 + 41 0.0256 + 42 0.00262 + 45 0.0177 + 47 0.0655 + + 3 13 2 0 + 4 0.923 + 7 0.0769 + + 8 156 15 0 + 2 0.0128 + 3 0.0449 + 4 0.429 + 7 0.147 + 8 0.00641 + 18 0.154 + 20 0.0897 + 21 0.00641 + 28 0.00641 + 29 0.00641 + 35 0.00641 + 41 0.0192 + 42 0.00641 + 45 0.0321 + 47 0.0321 + + 13 661 14 0 + 2 0.00756 + 3 0.0121 + 4 0.632 + 7 0.0242 + 8 0.00756 + 13 0.00151 + 18 0.219 + 19 0.00151 + 20 0.059 + 28 0.00151 + 33 0.00151 + 37 0.00151 + 41 0.00756 + 47 0.0227 + + 14 291 20 0 + 2 0.0447 + 3 0.0412 + 4 0.316 + 7 0.22 + 8 0.00687 + 13 0.00344 + 14 0.00344 + 18 0.0962 + 20 0.0481 + 21 0.00687 + 26 0.00687 + 29 0.00687 + 33 0.0103 + 34 0.00344 + 35 0.00344 + 37 0.00344 + 41 0.055 + 42 0.00344 + 45 0.0447 + 47 0.0756 + + 15 19 9 0 + 2 0.0526 + 3 0.0526 + 4 0.211 + 7 0.263 + 26 0.0526 + 28 0.0526 + 33 0.105 + 41 0.0526 + 47 0.158 + + 16 3 3 0 + 4 0.333 + 7 0.333 + 32 0.333 + + 31 3 3 0 + 3 0.333 + 18 0.333 + 20 0.333 + + 47 359 21 0 + 0 0.00836 + 2 0.0501 + 4 0.351 + 7 0.139 + 13 0.00557 + 20 0.0279 + 21 0.0167 + 24 0.0195 + 26 0.00557 + 28 0.0362 + 29 0.0557 + 30 0.0279 + 31 0.00836 + 32 0.0111 + 33 0.0139 + 34 0.00279 + 37 0.00279 + 41 0.039 + 42 0.00557 + 45 0.0195 + 47 0.153 + + 56 3 3 0 + 4 0.333 + 31 0.333 + 37 0.333 + + 12 5 4 0 + 4 0.4 + 15 0.2 + 45 0.2 + 46 0.2 + + 13 129892 43 24 + 0 0.0054 + 1 0.000123 + 2 0.0201 + 3 0.0473 + 4 0.298 + 6 0.000123 + 7 0.0813 + 8 0.21 + 9 0.00684 + 10 0.00527 + 12 3.85e-05 + 13 0.123 + 14 0.0094 + 15 0.0406 + 16 0.000762 + 18 0.0276 + 19 0.000362 + 20 0.0287 + 21 0.00234 + 22 5.39e-05 + 23 7.7e-06 + 24 0.000993 + 25 1.54e-05 + 26 0.0052 + 27 1.54e-05 + 28 0.0115 + 29 0.00598 + 30 0.0138 + 31 0.00949 + 32 0.00208 + 33 0.00347 + 34 0.000223 + 35 0.000108 + 36 1.54e-05 + 37 0.000908 + 40 0.0001 + 41 0.0179 + 42 0.00142 + 43 0.000508 + 44 0.000608 + 45 0.00449 + 46 0.00184 + 47 0.0122 + + 2 1627 31 0 + 0 0.0086 + 2 0.0172 + 3 0.00738 + 4 0.189 + 7 0.205 + 8 0.144 + 9 0.00553 + 10 0.00246 + 13 0.0688 + 14 0.00738 + 15 0.0277 + 16 0.00123 + 18 0.0332 + 20 0.0424 + 21 0.00307 + 24 0.00123 + 26 0.0117 + 28 0.0203 + 29 0.0086 + 30 0.0178 + 31 0.0135 + 32 0.00246 + 33 0.00676 + 37 0.000615 + 41 0.119 + 42 0.0043 + 43 0.00123 + 44 0.00123 + 45 0.00615 + 46 0.000615 + 47 0.0209 + + 3 92 11 0 + 3 0.0217 + 4 0.478 + 7 0.174 + 8 0.0435 + 13 0.0217 + 15 0.0109 + 18 0.163 + 20 0.0217 + 30 0.0109 + 41 0.0435 + 45 0.0109 + + 4 1 1 0 + 31 1 + + 8 268 24 0 + 0 0.00373 + 2 0.123 + 3 0.0336 + 4 0.243 + 7 0.127 + 8 0.097 + 9 0.00373 + 10 0.0112 + 13 0.104 + 14 0.00373 + 15 0.0373 + 18 0.0672 + 20 0.0299 + 26 0.00746 + 28 0.0187 + 29 0.0149 + 30 0.0149 + 31 0.00373 + 33 0.00373 + 37 0.00373 + 41 0.0261 + 42 0.00373 + 45 0.00746 + 47 0.0112 + + 10 1 1 0 + 45 1 + + 13 15006 38 0 + 0 0.004 + 1 0.0002 + 2 0.0364 + 3 0.0287 + 4 0.304 + 6 0.000267 + 7 0.0826 + 8 0.211 + 9 0.00553 + 10 0.0072 + 13 0.0804 + 14 0.00653 + 15 0.0508 + 16 0.0004 + 18 0.0394 + 19 0.0002 + 20 0.0337 + 21 0.00187 + 22 6.66e-05 + 24 0.0008 + 25 0.000133 + 26 0.00433 + 28 0.0114 + 29 0.00513 + 30 0.0114 + 31 0.011 + 32 0.0022 + 33 0.0046 + 35 0.0002 + 37 0.001 + 40 0.0004 + 41 0.028 + 42 0.00233 + 43 0.0006 + 44 0.000666 + 45 0.0076 + 46 0.0016 + 47 0.0133 + + 14 9907 35 0 + 0 0.00757 + 2 0.0784 + 3 0.0262 + 4 0.0705 + 7 0.178 + 8 0.229 + 9 0.0139 + 10 0.00737 + 13 0.0728 + 14 0.00262 + 15 0.0373 + 16 0.000101 + 18 0.0196 + 19 0.000303 + 20 0.0263 + 21 0.00313 + 23 0.000101 + 24 0.00444 + 26 0.0146 + 28 0.0333 + 29 0.013 + 30 0.028 + 31 0.0133 + 32 0.00616 + 33 0.0125 + 34 0.000808 + 35 0.000202 + 37 0.00384 + 41 0.0365 + 42 0.00303 + 43 0.000202 + 44 0.000505 + 45 0.00757 + 46 0.00212 + 47 0.0461 + + 15 788 27 0 + 0 0.00635 + 2 0.0127 + 3 0.0178 + 4 0.0787 + 7 0.085 + 8 0.184 + 13 0.221 + 14 0.0127 + 15 0.225 + 16 0.0152 + 18 0.0127 + 20 0.019 + 24 0.00127 + 26 0.00888 + 28 0.00381 + 29 0.0114 + 30 0.00888 + 31 0.00381 + 33 0.014 + 35 0.00127 + 37 0.00254 + 41 0.0292 + 42 0.00127 + 44 0.00254 + 45 0.00381 + 46 0.00254 + 47 0.0152 + + 16 9 7 0 + 2 0.222 + 4 0.222 + 7 0.111 + 13 0.111 + 14 0.111 + 15 0.111 + 20 0.111 + + 18 2901 26 0 + 0 0.00103 + 2 0.00483 + 3 0.00345 + 4 0.694 + 7 0.0476 + 8 0.0958 + 9 0.00276 + 10 0.00207 + 13 0.0589 + 14 0.00414 + 15 0.0269 + 19 0.000345 + 20 0.0203 + 21 0.000689 + 26 0.00483 + 28 0.00172 + 29 0.0031 + 30 0.00552 + 31 0.00172 + 32 0.00138 + 33 0.00138 + 41 0.00276 + 42 0.000345 + 44 0.000345 + 45 0.000689 + 47 0.0138 + + 20 2 2 0 + 7 0.5 + 26 0.5 + + 21 3 3 0 + 2 0.333 + 7 0.333 + 21 0.333 + + 26 2 2 0 + 3 0.5 + 29 0.5 + + 29 11 5 0 + 3 0.273 + 4 0.0909 + 7 0.0909 + 8 0.273 + 13 0.273 + + 30 102 12 0 + 2 0.186 + 4 0.412 + 7 0.0392 + 8 0.118 + 10 0.0294 + 13 0.0588 + 15 0.0392 + 18 0.0392 + 20 0.0196 + 31 0.0196 + 41 0.0294 + 45 0.0098 + + 31 13 5 0 + 7 0.538 + 8 0.154 + 13 0.0769 + 15 0.154 + 41 0.0769 + + 41 247 24 0 + 0 0.00405 + 2 0.0162 + 4 0.19 + 7 0.243 + 8 0.0729 + 9 0.00405 + 10 0.00405 + 13 0.0567 + 15 0.00405 + 18 0.0162 + 20 0.0364 + 21 0.00405 + 26 0.0162 + 28 0.0121 + 29 0.0121 + 30 0.0202 + 31 0.0162 + 32 0.00405 + 33 0.0202 + 41 0.174 + 42 0.0162 + 44 0.00405 + 45 0.0202 + 47 0.0324 + + 42 4 2 0 + 4 0.5 + 7 0.5 + + 43 15 3 0 + 2 0.0667 + 8 0.2 + 44 0.733 + + 45 36 10 0 + 2 0.0556 + 3 0.0556 + 4 0.389 + 7 0.25 + 8 0.111 + 15 0.0278 + 26 0.0278 + 30 0.0278 + 42 0.0278 + 47 0.0278 + + 46 101 7 0 + 4 0.0198 + 7 0.0099 + 8 0.307 + 13 0.119 + 15 0.0099 + 20 0.0198 + 45 0.515 + + 47 98717 41 0 + 0 0.0055 + 1 0.000132 + 2 0.0119 + 3 0.0547 + 4 0.312 + 6 0.000122 + 7 0.0697 + 8 0.213 + 9 0.00656 + 10 0.00492 + 12 5.06e-05 + 13 0.137 + 14 0.0107 + 15 0.0387 + 16 0.00079 + 18 0.0272 + 19 0.000405 + 20 0.0283 + 21 0.00239 + 22 6.08e-05 + 24 0.000709 + 26 0.00422 + 27 2.03e-05 + 28 0.00951 + 29 0.00538 + 30 0.013 + 31 0.0091 + 32 0.00169 + 33 0.00229 + 34 0.000213 + 35 8.1e-05 + 36 2.03e-05 + 37 0.000618 + 40 7.09e-05 + 41 0.0127 + 42 0.00106 + 43 0.000537 + 44 0.000476 + 45 0.00321 + 46 0.00193 + 47 0.00844 + + 48 12 4 0 + 4 0.667 + 7 0.0833 + 18 0.167 + 47 0.0833 + + 58 9 5 0 + 2 0.111 + 8 0.222 + 13 0.333 + 14 0.222 + 20 0.111 + + 14 59133 41 12 + 0 0.00551 + 1 8.46e-05 + 2 0.028 + 3 0.0954 + 4 0.101 + 6 0.000135 + 7 0.098 + 8 0.238 + 9 0.00913 + 10 0.00495 + 12 6.76e-05 + 13 0.172 + 14 0.0106 + 15 0.0368 + 16 0.000507 + 18 0.019 + 19 0.000287 + 20 0.0275 + 21 0.00211 + 22 1.69e-05 + 23 3.38e-05 + 24 0.00215 + 26 0.00883 + 28 0.0216 + 29 0.0107 + 30 0.0221 + 31 0.0124 + 32 0.00499 + 33 0.00504 + 34 0.00093 + 35 0.000237 + 36 3.38e-05 + 37 0.00277 + 40 6.76e-05 + 41 0.0213 + 42 0.00235 + 43 0.000541 + 44 0.000321 + 45 0.00424 + 46 0.00194 + 47 0.0282 + + 2 995 29 0 + 0 0.00603 + 2 0.0101 + 3 0.0141 + 4 0.112 + 7 0.22 + 8 0.166 + 9 0.0111 + 10 0.00503 + 13 0.112 + 14 0.00101 + 15 0.0211 + 18 0.0221 + 19 0.00101 + 20 0.0332 + 21 0.00402 + 24 0.00302 + 26 0.0121 + 28 0.0322 + 29 0.00503 + 30 0.0251 + 31 0.0121 + 32 0.00704 + 33 0.00603 + 35 0.00101 + 37 0.00201 + 41 0.109 + 42 0.00201 + 46 0.00201 + 47 0.0442 + + 7 1 1 0 + 21 1 + + 8 4 4 0 + 10 0.25 + 15 0.25 + 31 0.25 + 47 0.25 + + 13 1104 26 0 + 0 0.000906 + 2 0.0435 + 3 0.0154 + 4 0.302 + 7 0.0462 + 8 0.232 + 9 0.00181 + 10 0.00543 + 13 0.137 + 14 0.00996 + 15 0.067 + 18 0.0362 + 20 0.0272 + 21 0.000906 + 26 0.00181 + 28 0.00634 + 29 0.00181 + 30 0.00453 + 31 0.0127 + 33 0.00362 + 40 0.000906 + 41 0.0317 + 42 0.00181 + 44 0.000906 + 45 0.00272 + 47 0.00634 + + 14 561 28 0 + 0 0.00891 + 1 0.00178 + 2 0.082 + 3 0.0321 + 4 0.0731 + 7 0.152 + 8 0.225 + 9 0.00535 + 10 0.0125 + 13 0.0927 + 14 0.00891 + 15 0.0392 + 16 0.00178 + 18 0.0232 + 20 0.0214 + 21 0.00178 + 26 0.016 + 28 0.0107 + 29 0.0214 + 30 0.025 + 31 0.016 + 32 0.0125 + 33 0.00713 + 37 0.00535 + 41 0.0232 + 42 0.00891 + 45 0.00535 + 47 0.0677 + + 15 46 14 0 + 2 0.087 + 4 0.0652 + 7 0.174 + 8 0.0652 + 13 0.152 + 14 0.0217 + 15 0.217 + 24 0.0217 + 26 0.0217 + 30 0.0217 + 34 0.0217 + 37 0.0217 + 41 0.0435 + 47 0.0652 + + 18 545 28 0 + 0 0.00183 + 2 0.0183 + 3 0.0312 + 4 0.27 + 7 0.196 + 8 0.128 + 10 0.00734 + 13 0.0569 + 14 0.00917 + 15 0.0404 + 18 0.00734 + 20 0.0514 + 21 0.00183 + 24 0.00183 + 26 0.0202 + 28 0.0422 + 29 0.0183 + 30 0.0239 + 31 0.0147 + 32 0.00183 + 33 0.011 + 34 0.00183 + 37 0.0055 + 41 0.011 + 42 0.0055 + 45 0.00734 + 46 0.00183 + 47 0.0128 + + 21 2 2 0 + 7 0.5 + 45 0.5 + + 30 5 3 0 + 3 0.2 + 13 0.4 + 28 0.4 + + 41 126 20 0 + 3 0.00794 + 4 0.0794 + 7 0.23 + 8 0.0714 + 13 0.0952 + 14 0.00794 + 15 0.0159 + 18 0.0317 + 20 0.0397 + 21 0.00794 + 26 0.0159 + 28 0.0159 + 29 0.0159 + 30 0.0397 + 32 0.0159 + 33 0.00794 + 41 0.238 + 42 0.0317 + 45 0.0159 + 47 0.0159 + + 46 7 3 0 + 8 0.286 + 14 0.143 + 45 0.571 + + 47 55733 41 0 + 0 0.00562 + 1 7.18e-05 + 2 0.0276 + 3 0.1 + 4 0.0954 + 6 0.000144 + 7 0.095 + 8 0.241 + 9 0.0094 + 10 0.00484 + 12 7.18e-05 + 13 0.176 + 14 0.0108 + 15 0.0363 + 16 0.00052 + 18 0.0186 + 19 0.000287 + 20 0.0273 + 21 0.00208 + 22 1.79e-05 + 23 3.59e-05 + 24 0.00219 + 26 0.0087 + 28 0.0216 + 29 0.0108 + 30 0.0223 + 31 0.0124 + 32 0.00499 + 33 0.00497 + 34 0.000951 + 35 0.000233 + 36 3.59e-05 + 37 0.00278 + 40 5.38e-05 + 41 0.0191 + 42 0.00221 + 43 0.000574 + 44 0.000323 + 45 0.0042 + 46 0.00201 + 47 0.0281 + + 15 90066 40 28 + 0 0.00298 + 1 4.44e-05 + 2 0.0414 + 3 0.00516 + 4 0.0969 + 6 0.000544 + 7 0.163 + 8 0.0247 + 9 0.000611 + 10 0.000244 + 12 7.77e-05 + 13 0.0143 + 14 0.00192 + 15 0.379 + 16 0.00816 + 18 0.00975 + 19 0.000155 + 20 0.0042 + 21 0.00236 + 24 0.000744 + 25 2.22e-05 + 26 0.0111 + 28 0.00883 + 29 0.0172 + 30 0.00653 + 31 0.0057 + 32 0.00205 + 33 0.0132 + 34 0.00101 + 35 0.000489 + 36 2.22e-05 + 37 0.00244 + 40 0.000644 + 41 0.0659 + 42 0.00489 + 43 0.000533 + 44 0.00461 + 45 0.00521 + 46 0.00472 + 47 0.0883 + + 0 7 5 0 + 4 0.143 + 7 0.429 + 8 0.143 + 41 0.143 + 47 0.143 + + 2 1783 31 0 + 0 0.00112 + 2 0.0202 + 3 0.00449 + 4 0.0892 + 6 0.000561 + 7 0.192 + 8 0.0135 + 13 0.00953 + 14 0.0101 + 15 0.306 + 16 0.0107 + 18 0.0129 + 20 0.00449 + 21 0.00112 + 24 0.00224 + 26 0.0107 + 28 0.00729 + 29 0.00897 + 30 0.00897 + 31 0.00168 + 32 0.000561 + 33 0.0028 + 34 0.000561 + 37 0.00112 + 40 0.00449 + 41 0.183 + 42 0.00449 + 44 0.0028 + 45 0.00393 + 46 0.000561 + 47 0.0802 + + 3 170 13 0 + 2 0.0118 + 3 0.0235 + 4 0.494 + 7 0.118 + 8 0.0471 + 15 0.0529 + 18 0.0706 + 20 0.129 + 28 0.0118 + 33 0.00588 + 41 0.0176 + 45 0.00588 + 47 0.0118 + + 4 9 5 0 + 0 0.111 + 2 0.111 + 7 0.222 + 15 0.444 + 45 0.111 + + 6 42 14 0 + 0 0.0238 + 2 0.0238 + 4 0.0476 + 6 0.0714 + 7 0.0952 + 8 0.0476 + 13 0.0238 + 15 0.357 + 26 0.0238 + 30 0.0238 + 33 0.0476 + 40 0.0476 + 41 0.0476 + 47 0.119 + + 7 26 10 0 + 4 0.0769 + 7 0.0769 + 13 0.0385 + 14 0.0385 + 15 0.385 + 18 0.0385 + 26 0.0385 + 41 0.154 + 45 0.115 + 47 0.0385 + + 8 530 25 0 + 0 0.00189 + 2 0.0226 + 3 0.0245 + 4 0.219 + 7 0.117 + 8 0.0528 + 9 0.00377 + 10 0.00377 + 13 0.017 + 15 0.408 + 18 0.00566 + 20 0.0151 + 26 0.00189 + 28 0.00377 + 29 0.00755 + 30 0.00755 + 31 0.00566 + 32 0.00189 + 33 0.00566 + 34 0.00189 + 37 0.00189 + 41 0.0283 + 44 0.00189 + 45 0.00189 + 47 0.0396 + + 13 5143 34 0 + 0 0.00136 + 2 0.0212 + 3 0.0148 + 4 0.396 + 6 0.000194 + 7 0.0609 + 8 0.0791 + 9 0.00331 + 10 0.000972 + 13 0.00719 + 14 0.000778 + 15 0.278 + 16 0.00486 + 18 0.0282 + 19 0.000583 + 20 0.0249 + 21 0.00156 + 24 0.000583 + 26 0.0035 + 28 0.00681 + 29 0.00506 + 30 0.00817 + 31 0.00564 + 32 0.00156 + 33 0.00506 + 37 0.00117 + 40 0.000583 + 41 0.0124 + 42 0.00117 + 43 0.000194 + 44 0.00117 + 45 0.00136 + 46 0.000194 + 47 0.021 + + 14 2150 33 0 + 0 0.00465 + 2 0.0488 + 3 0.0512 + 4 0.107 + 7 0.158 + 8 0.0963 + 9 0.00884 + 10 0.00279 + 13 0.00186 + 14 0.00093 + 15 0.25 + 16 0.00186 + 18 0.00837 + 20 0.0163 + 21 0.00279 + 24 0.00186 + 26 0.0223 + 28 0.0219 + 29 0.0107 + 30 0.0163 + 31 0.00744 + 32 0.00279 + 33 0.00651 + 34 0.00093 + 36 0.000465 + 37 0.0014 + 41 0.047 + 42 0.00279 + 43 0.00093 + 44 0.0014 + 45 0.00233 + 46 0.00093 + 47 0.093 + + 15 33917 38 0 + 0 0.00433 + 1 2.95e-05 + 2 0.0472 + 3 0.00448 + 4 0.102 + 6 0.000383 + 7 0.168 + 8 0.0195 + 9 0.000206 + 10 0.000236 + 12 5.9e-05 + 13 0.0196 + 14 0.00162 + 15 0.265 + 16 0.00363 + 18 0.0144 + 19 0.000147 + 20 0.00419 + 21 0.00242 + 24 0.000885 + 26 0.0134 + 28 0.00867 + 29 0.0286 + 30 0.00678 + 31 0.00436 + 32 0.00236 + 33 0.0287 + 34 0.00115 + 35 0.000649 + 37 0.00327 + 40 0.000472 + 41 0.0754 + 42 0.00669 + 43 0.000118 + 44 0.00313 + 45 0.00566 + 46 0.0108 + 47 0.142 + + 16 1508 30 0 + 0 0.00265 + 2 0.059 + 3 0.0106 + 4 0.115 + 7 0.208 + 8 0.0232 + 13 0.00464 + 14 0.00133 + 15 0.273 + 16 0.00133 + 18 0.0199 + 20 0.00862 + 21 0.000663 + 24 0.00133 + 25 0.000663 + 26 0.00995 + 28 0.00597 + 29 0.00995 + 30 0.00862 + 31 0.00464 + 33 0.00597 + 34 0.000663 + 35 0.000663 + 37 0.00133 + 41 0.0603 + 42 0.0179 + 43 0.000663 + 44 0.000663 + 45 0.00663 + 47 0.137 + + 18 5065 34 0 + 0 0.0101 + 2 0.0369 + 3 0.00118 + 4 0.0539 + 7 0.243 + 8 0.00967 + 9 0.000197 + 13 0.00296 + 14 0.00079 + 15 0.351 + 16 0.00415 + 18 0.00079 + 19 0.000197 + 20 0.000592 + 21 0.00494 + 24 0.00257 + 26 0.017 + 28 0.0265 + 29 0.0186 + 30 0.0128 + 31 0.00731 + 32 0.00592 + 33 0.0113 + 34 0.000592 + 35 0.000395 + 36 0.000197 + 37 0.00138 + 41 0.0661 + 42 0.00415 + 43 0.000197 + 44 0.00118 + 45 0.00395 + 46 0.00237 + 47 0.0971 + + 19 6 3 0 + 7 0.333 + 15 0.5 + 45 0.167 + + 21 4 1 0 + 47 1 + + 29 4 3 0 + 4 0.5 + 15 0.25 + 20 0.25 + + 30 22 6 0 + 2 0.0455 + 4 0.273 + 8 0.0909 + 15 0.5 + 18 0.0455 + 29 0.0455 + + 40 80 12 0 + 2 0.0625 + 4 0.0625 + 7 0.15 + 13 0.0125 + 15 0.463 + 16 0.0375 + 18 0.0125 + 31 0.0125 + 41 0.075 + 44 0.05 + 45 0.0125 + 47 0.05 + + 41 441 25 0 + 0 0.00454 + 2 0.0635 + 3 0.00227 + 4 0.0385 + 7 0.413 + 8 0.00907 + 13 0.0204 + 14 0.00454 + 15 0.0794 + 16 0.00454 + 18 0.00907 + 20 0.00454 + 21 0.00454 + 26 0.0181 + 28 0.00907 + 29 0.00454 + 30 0.00907 + 31 0.00454 + 37 0.00227 + 40 0.00227 + 41 0.204 + 42 0.0136 + 44 0.00227 + 45 0.0068 + 47 0.0658 + + 43 18 4 0 + 4 0.0556 + 13 0.0556 + 15 0.5 + 44 0.389 + + 44 6 5 0 + 2 0.167 + 4 0.167 + 15 0.333 + 26 0.167 + 32 0.167 + + 45 26 8 0 + 3 0.0385 + 4 0.192 + 7 0.154 + 8 0.0385 + 15 0.423 + 33 0.0385 + 41 0.0769 + 45 0.0385 + + 46 51 8 0 + 4 0.0196 + 7 0.0196 + 8 0.0196 + 15 0.333 + 18 0.0196 + 28 0.0196 + 45 0.49 + 47 0.0784 + + 47 38960 39 0 + 0 0.00108 + 1 7.7e-05 + 2 0.0398 + 3 0.00198 + 4 0.0551 + 6 0.000796 + 7 0.158 + 8 0.0203 + 9 0.000231 + 10 2.57e-05 + 12 0.000128 + 13 0.0134 + 14 0.00218 + 15 0.515 + 16 0.0138 + 18 0.0037 + 19 0.000128 + 20 0.000385 + 21 0.00223 + 24 0.000282 + 25 2.57e-05 + 26 0.00893 + 28 0.00649 + 29 0.0102 + 30 0.00454 + 31 0.00685 + 32 0.00149 + 33 0.00249 + 34 0.00113 + 35 0.000488 + 37 0.00223 + 40 0.000719 + 41 0.0599 + 42 0.00357 + 43 0.001 + 44 0.00706 + 45 0.0049 + 46 0.0011 + 47 0.0488 + + 48 41 7 0 + 4 0.146 + 7 0.0488 + 8 0.0244 + 15 0.707 + 18 0.0244 + 28 0.0244 + 47 0.0244 + + 54 5 3 0 + 4 0.6 + 7 0.2 + 47 0.2 + + 55 2 2 0 + 3 0.5 + 8 0.5 + + 58 35 7 0 + 2 0.0571 + 4 0.0857 + 7 0.0857 + 8 0.0857 + 15 0.629 + 20 0.0286 + 30 0.0286 + + 68 6 2 0 + 4 0.5 + 7 0.5 + + 16 2650 32 9 + 0 0.00189 + 2 0.0325 + 3 0.0136 + 4 0.156 + 7 0.0634 + 8 0.0408 + 9 0.000755 + 10 0.00113 + 13 0.00453 + 14 0.000755 + 15 0.57 + 16 0.0158 + 18 0.0125 + 19 0.000377 + 20 0.00189 + 21 0.0034 + 26 0.00377 + 28 0.00453 + 29 0.00113 + 30 0.00415 + 31 0.00151 + 32 0.000377 + 33 0.00226 + 34 0.000377 + 37 0.00113 + 40 0.00189 + 41 0.0208 + 42 0.00189 + 44 0.00113 + 45 0.00528 + 46 0.000377 + 47 0.0298 + + 2 111 10 0 + 3 0.00901 + 4 0.468 + 7 0.0631 + 8 0.018 + 15 0.288 + 18 0.00901 + 26 0.018 + 41 0.0541 + 45 0.018 + 47 0.0541 + + 8 8 3 0 + 3 0.125 + 15 0.75 + 45 0.125 + + 13 94 10 0 + 2 0.0426 + 3 0.0106 + 4 0.0638 + 7 0.0106 + 8 0.0426 + 13 0.0106 + 15 0.787 + 16 0.0106 + 20 0.0106 + 41 0.0106 + + 14 27 7 0 + 2 0.111 + 4 0.111 + 7 0.0741 + 15 0.593 + 16 0.037 + 28 0.037 + 47 0.037 + + 15 731 19 0 + 0 0.00137 + 2 0.0369 + 4 0.0301 + 7 0.0451 + 8 0.00274 + 13 0.0041 + 15 0.774 + 16 0.00684 + 18 0.0301 + 20 0.00274 + 21 0.00274 + 26 0.00137 + 29 0.00137 + 30 0.00137 + 33 0.00274 + 40 0.00547 + 41 0.0219 + 45 0.00137 + 47 0.0274 + + 16 42 11 0 + 3 0.143 + 4 0.119 + 7 0.119 + 8 0.119 + 15 0.167 + 26 0.0238 + 28 0.0238 + 41 0.0714 + 42 0.0238 + 45 0.0238 + 47 0.167 + + 18 66 8 0 + 2 0.0152 + 4 0.439 + 7 0.0303 + 8 0.0303 + 15 0.439 + 20 0.0152 + 26 0.0152 + 47 0.0152 + + 41 8 4 0 + 7 0.125 + 15 0.25 + 41 0.5 + 42 0.125 + + 47 1553 32 0 + 0 0.00258 + 2 0.0328 + 3 0.0174 + 4 0.191 + 7 0.0753 + 8 0.0599 + 9 0.00129 + 10 0.00193 + 13 0.00515 + 14 0.00129 + 15 0.495 + 16 0.0225 + 18 0.00644 + 19 0.000644 + 20 0.000644 + 21 0.00451 + 26 0.00322 + 28 0.00644 + 29 0.00129 + 30 0.00644 + 31 0.00258 + 32 0.000644 + 33 0.00258 + 34 0.000644 + 37 0.00193 + 40 0.000644 + 41 0.0161 + 42 0.00193 + 44 0.00193 + 45 0.0058 + 46 0.000644 + 47 0.0283 + + 17 321 24 2 + 0 0.0592 + 1 0.00312 + 2 0.0436 + 7 0.364 + 8 0.00312 + 9 0.00312 + 13 0.00623 + 14 0.00623 + 15 0.00312 + 19 0.00623 + 21 0.0343 + 24 0.00935 + 26 0.0218 + 28 0.103 + 29 0.0498 + 30 0.0498 + 31 0.0374 + 32 0.0156 + 33 0.0218 + 37 0.0125 + 41 0.0405 + 42 0.00312 + 45 0.0187 + 47 0.0841 + + 20 19 9 0 + 0 0.0526 + 7 0.316 + 26 0.0526 + 28 0.158 + 29 0.105 + 30 0.158 + 32 0.0526 + 42 0.0526 + 47 0.0526 + + 55 18 11 0 + 0 0.0556 + 2 0.0556 + 7 0.333 + 21 0.0556 + 26 0.111 + 28 0.0556 + 30 0.0556 + 31 0.0556 + 37 0.111 + 41 0.0556 + 47 0.0556 + + 18 8667 14 1 + 0 0.000115 + 3 0.00288 + 6 0.000231 + 8 0.00138 + 13 0.335 + 14 0.0631 + 15 0.587 + 16 0.00762 + 19 0.000808 + 21 0.000692 + 28 0.000577 + 30 0.000115 + 31 0.000346 + 32 0.000115 + + 13 4 4 0 + 13 0.25 + 14 0.25 + 15 0.25 + 21 0.25 + + 19 17428 40 9 + 0 0.00947 + 1 0.000115 + 2 0.0516 + 3 0.00138 + 4 0.0023 + 5 5.74e-05 + 7 0.171 + 8 0.00482 + 9 0.000402 + 10 0.000574 + 12 0.00304 + 13 0.0332 + 14 0.0155 + 15 0.00419 + 16 0.00023 + 18 5.74e-05 + 19 0.00161 + 21 0.0168 + 22 0.000402 + 23 5.74e-05 + 24 0.000115 + 26 0.00637 + 27 5.74e-05 + 28 0.0543 + 29 0.101 + 30 0.0205 + 31 0.0106 + 32 0.0237 + 33 0.0276 + 34 0.00861 + 35 0.0122 + 37 0.0274 + 40 5.74e-05 + 41 0.12 + 42 0.011 + 43 0.000516 + 44 0.00161 + 45 0.0876 + 46 0.0315 + 47 0.139 + + 2 7 5 0 + 2 0.286 + 7 0.286 + 26 0.143 + 34 0.143 + 41 0.143 + + 8 10 7 0 + 7 0.1 + 21 0.1 + 28 0.1 + 29 0.2 + 30 0.3 + 33 0.1 + 45 0.1 + + 13 15 7 0 + 2 0.0667 + 7 0.267 + 28 0.133 + 29 0.333 + 32 0.0667 + 33 0.0667 + 47 0.0667 + + 14 6 5 0 + 4 0.167 + 7 0.333 + 41 0.167 + 45 0.167 + 47 0.167 + + 15 4 4 0 + 4 0.25 + 15 0.25 + 18 0.25 + 47 0.25 + + 18 7 5 0 + 26 0.143 + 28 0.143 + 30 0.286 + 41 0.286 + 42 0.143 + + 41 1 1 0 + 15 1 + + 46 1 1 0 + 8 1 + + 48 4 3 0 + 7 0.5 + 33 0.25 + 41 0.25 + + 20 8397 36 20 + 0 0.0151 + 1 0.000357 + 2 0.0497 + 3 0.000357 + 4 0.00691 + 7 0.425 + 8 0.00214 + 9 0.000238 + 10 0.000119 + 12 0.000238 + 13 0.00429 + 14 0.00155 + 15 0.00131 + 16 0.000119 + 17 0.0031 + 18 0.000238 + 19 0.000238 + 21 0.00893 + 24 0.0168 + 26 0.0355 + 28 0.134 + 29 0.0905 + 30 0.0537 + 31 0.022 + 32 0.0139 + 33 0.0257 + 34 0.000834 + 35 0.00143 + 37 0.00631 + 41 0.025 + 42 0.00441 + 43 0.000119 + 44 0.000715 + 45 0.00965 + 46 0.00131 + 47 0.0381 + + 3 122 14 0 + 0 0.0164 + 2 0.0902 + 7 0.549 + 13 0.0082 + 15 0.0082 + 26 0.041 + 28 0.082 + 29 0.107 + 30 0.0246 + 31 0.0082 + 32 0.0082 + 33 0.0082 + 45 0.0082 + 47 0.041 + + 8 1980 30 0 + 0 0.0232 + 2 0.0399 + 3 0.000505 + 4 0.00253 + 7 0.483 + 8 0.00202 + 9 0.000505 + 13 0.00253 + 14 0.00101 + 15 0.00202 + 16 0.000505 + 17 0.00101 + 19 0.000505 + 21 0.00808 + 24 0.0121 + 26 0.0348 + 28 0.122 + 29 0.0884 + 30 0.05 + 31 0.0197 + 32 0.0136 + 33 0.0242 + 35 0.000505 + 37 0.00354 + 41 0.0217 + 42 0.00707 + 44 0.00101 + 45 0.00707 + 46 0.00101 + 47 0.0258 + + 9 23 6 0 + 2 0.0435 + 7 0.696 + 28 0.0435 + 29 0.087 + 41 0.0435 + 47 0.087 + + 10 78 15 0 + 0 0.0641 + 2 0.0256 + 7 0.449 + 8 0.0128 + 14 0.0128 + 26 0.0897 + 28 0.0256 + 29 0.0513 + 30 0.0256 + 31 0.0256 + 32 0.0128 + 37 0.0256 + 41 0.115 + 42 0.0128 + 47 0.0513 + + 13 3723 32 0 + 0 0.0142 + 2 0.047 + 4 0.00967 + 7 0.385 + 8 0.00161 + 9 0.000269 + 12 0.000537 + 13 0.00537 + 14 0.00161 + 15 0.00161 + 17 0.00322 + 18 0.000537 + 19 0.000269 + 21 0.0094 + 24 0.0172 + 26 0.033 + 28 0.132 + 29 0.107 + 30 0.0543 + 31 0.0277 + 32 0.0126 + 33 0.0312 + 34 0.00134 + 35 0.00134 + 37 0.00779 + 41 0.0263 + 42 0.00349 + 43 0.000269 + 44 0.000806 + 45 0.0145 + 46 0.00134 + 47 0.0486 + + 14 1627 27 0 + 0 0.00922 + 1 0.00184 + 2 0.0719 + 4 0.00676 + 7 0.406 + 8 0.00369 + 10 0.000615 + 13 0.00307 + 14 0.00246 + 17 0.00676 + 21 0.0117 + 24 0.0252 + 26 0.0363 + 28 0.154 + 29 0.0615 + 30 0.0639 + 31 0.0191 + 32 0.024 + 33 0.0234 + 34 0.000615 + 35 0.00307 + 37 0.00553 + 41 0.024 + 42 0.00492 + 45 0.00492 + 46 0.00123 + 47 0.0252 + + 15 368 17 0 + 0 0.00272 + 2 0.0272 + 4 0.00815 + 7 0.478 + 13 0.00272 + 24 0.0136 + 26 0.0408 + 28 0.163 + 29 0.111 + 30 0.0489 + 31 0.00815 + 33 0.0163 + 35 0.00272 + 37 0.0109 + 41 0.0109 + 45 0.00272 + 47 0.0516 + + 21 5 4 0 + 0 0.4 + 7 0.2 + 30 0.2 + 41 0.2 + + 29 1 1 0 + 42 1 + + 30 55 11 0 + 2 0.0727 + 7 0.436 + 8 0.0182 + 21 0.0182 + 24 0.0727 + 26 0.0364 + 28 0.218 + 29 0.0182 + 30 0.0545 + 33 0.0182 + 41 0.0364 + + 31 52 13 0 + 0 0.0192 + 2 0.0385 + 7 0.442 + 24 0.0192 + 26 0.0577 + 28 0.173 + 29 0.0962 + 30 0.0385 + 31 0.0192 + 37 0.0192 + 41 0.0192 + 46 0.0192 + 47 0.0385 + + 43 1 1 0 + 44 1 + + 44 5 3 0 + 7 0.6 + 32 0.2 + 45 0.2 + + 45 40 10 0 + 2 0.05 + 7 0.4 + 26 0.1 + 28 0.1 + 29 0.075 + 30 0.125 + 31 0.025 + 33 0.05 + 41 0.025 + 47 0.05 + + 47 34 12 0 + 0 0.0294 + 2 0.0588 + 3 0.0588 + 7 0.5 + 26 0.0294 + 28 0.0294 + 29 0.0294 + 30 0.0588 + 31 0.0294 + 33 0.0294 + 41 0.0294 + 47 0.118 + + 48 185 19 0 + 0 0.00541 + 2 0.027 + 4 0.00541 + 7 0.465 + 13 0.0162 + 17 0.00541 + 21 0.0216 + 24 0.0108 + 26 0.0216 + 28 0.195 + 29 0.0811 + 30 0.0486 + 31 0.0108 + 32 0.00541 + 33 0.0108 + 41 0.0378 + 45 0.00541 + 46 0.00541 + 47 0.0216 + + 54 23 6 0 + 2 0.13 + 7 0.522 + 13 0.0435 + 26 0.087 + 28 0.087 + 47 0.13 + + 56 36 12 0 + 2 0.0278 + 4 0.0278 + 7 0.5 + 26 0.0556 + 28 0.167 + 29 0.0278 + 31 0.0278 + 33 0.0278 + 34 0.0278 + 37 0.0278 + 41 0.0278 + 47 0.0556 + + 60 7 4 0 + 2 0.143 + 7 0.571 + 26 0.143 + 30 0.143 + + 68 4 3 0 + 4 0.25 + 7 0.5 + 28 0.25 + + 21 1703 33 27 + 0 0.102 + 1 0.00176 + 2 0.0552 + 3 0.0182 + 4 0.0804 + 7 0.203 + 8 0.00411 + 10 0.00117 + 12 0.000587 + 13 0.0393 + 14 0.0252 + 15 0.0153 + 18 0.00117 + 19 0.00294 + 20 0.00294 + 21 0.0687 + 23 0.000587 + 24 0.00646 + 26 0.00763 + 28 0.0399 + 29 0.0341 + 30 0.0164 + 31 0.0188 + 32 0.00881 + 33 0.0241 + 34 0.00411 + 37 0.00528 + 41 0.0781 + 42 0.017 + 44 0.00294 + 45 0.0153 + 46 0.00117 + 47 0.0981 + + 2 4 2 0 + 0 0.25 + 7 0.75 + + 3 108 17 0 + 0 0.13 + 1 0.00926 + 2 0.0648 + 7 0.296 + 13 0.0185 + 15 0.037 + 21 0.0463 + 24 0.00926 + 26 0.00926 + 28 0.0463 + 29 0.13 + 32 0.00926 + 33 0.0278 + 37 0.00926 + 41 0.0648 + 44 0.00926 + 47 0.0833 + + 4 458 23 0 + 0 0.138 + 1 0.00437 + 2 0.0852 + 3 0.00437 + 7 0.17 + 13 0.0524 + 14 0.0306 + 15 0.0131 + 21 0.048 + 24 0.00873 + 28 0.0218 + 29 0.0349 + 30 0.024 + 31 0.0284 + 32 0.00873 + 33 0.0328 + 34 0.00437 + 37 0.00218 + 41 0.105 + 42 0.024 + 45 0.0197 + 46 0.00218 + 47 0.138 + + 7 11 7 0 + 0 0.0909 + 7 0.182 + 14 0.364 + 21 0.0909 + 24 0.0909 + 30 0.0909 + 42 0.0909 + + 8 298 28 0 + 0 0.094 + 2 0.0235 + 3 0.0101 + 4 0.225 + 7 0.124 + 8 0.00671 + 10 0.00336 + 13 0.0268 + 14 0.0168 + 15 0.0134 + 18 0.00671 + 19 0.00336 + 20 0.0168 + 21 0.057 + 24 0.0101 + 26 0.0168 + 28 0.057 + 29 0.0436 + 30 0.0268 + 31 0.0101 + 32 0.0201 + 33 0.0302 + 37 0.0101 + 41 0.047 + 42 0.0101 + 45 0.0268 + 46 0.00336 + 47 0.0604 + + 9 27 12 0 + 0 0.148 + 4 0.0741 + 7 0.259 + 8 0.037 + 15 0.037 + 21 0.037 + 26 0.0741 + 28 0.0741 + 29 0.037 + 30 0.0741 + 33 0.037 + 41 0.111 + + 10 5 1 0 + 4 1 + + 13 130 21 0 + 0 0.115 + 2 0.0231 + 3 0.0231 + 4 0.0615 + 7 0.192 + 8 0.00769 + 13 0.0308 + 14 0.0154 + 15 0.0231 + 21 0.0538 + 26 0.00769 + 28 0.0231 + 29 0.0154 + 30 0.00769 + 31 0.0231 + 33 0.0154 + 37 0.0154 + 41 0.154 + 42 0.0231 + 44 0.00769 + 47 0.162 + + 14 42 13 0 + 0 0.0714 + 2 0.119 + 7 0.0952 + 13 0.0238 + 15 0.0476 + 19 0.0238 + 21 0.0476 + 33 0.0238 + 34 0.0238 + 41 0.262 + 42 0.0238 + 45 0.0476 + 47 0.19 + + 15 57 11 0 + 2 0.0351 + 3 0.263 + 7 0.0526 + 13 0.105 + 14 0.0702 + 28 0.0175 + 31 0.0175 + 32 0.0351 + 41 0.193 + 42 0.0175 + 47 0.193 + + 16 5 3 0 + 2 0.4 + 15 0.4 + 21 0.2 + + 17 8 5 0 + 7 0.25 + 21 0.125 + 29 0.125 + 33 0.125 + 47 0.375 + + 18 4 1 0 + 13 1 + + 19 3 3 0 + 7 0.333 + 41 0.333 + 45 0.333 + + 20 17 8 0 + 0 0.0588 + 2 0.118 + 7 0.235 + 21 0.118 + 28 0.176 + 41 0.118 + 44 0.0588 + 47 0.118 + + 21 57 20 0 + 0 0.0702 + 2 0.0877 + 4 0.0175 + 7 0.123 + 8 0.0175 + 13 0.0175 + 14 0.0526 + 15 0.0351 + 21 0.0351 + 28 0.158 + 29 0.0351 + 30 0.0175 + 31 0.0702 + 32 0.0351 + 33 0.0351 + 34 0.0175 + 41 0.0175 + 42 0.0351 + 44 0.0175 + 47 0.105 + + 22 8 6 0 + 0 0.25 + 4 0.125 + 7 0.125 + 19 0.25 + 41 0.125 + 47 0.125 + + 28 3 3 0 + 0 0.333 + 45 0.333 + 47 0.333 + + 30 5 4 0 + 0 0.2 + 2 0.4 + 4 0.2 + 28 0.2 + + 31 26 9 0 + 0 0.115 + 3 0.0385 + 4 0.423 + 7 0.192 + 8 0.0385 + 30 0.0385 + 37 0.0385 + 41 0.0385 + 47 0.0769 + + 39 2 2 0 + 2 0.5 + 28 0.5 + + 40 2 1 0 + 3 1 + + 47 369 26 0 + 0 0.0623 + 2 0.0379 + 3 0.0108 + 4 0.106 + 7 0.347 + 8 0.00271 + 10 0.00271 + 12 0.00271 + 13 0.0461 + 14 0.0244 + 15 0.00542 + 19 0.00271 + 21 0.144 + 23 0.00271 + 24 0.00542 + 26 0.0108 + 28 0.0379 + 29 0.0244 + 30 0.00542 + 31 0.0217 + 33 0.0108 + 34 0.00542 + 37 0.00271 + 41 0.019 + 45 0.00813 + 47 0.0515 + + 48 7 5 0 + 0 0.286 + 4 0.143 + 41 0.143 + 42 0.143 + 45 0.286 + + 49 2 2 0 + 33 0.5 + 42 0.5 + + 55 30 12 0 + 0 0.167 + 2 0.0667 + 7 0.1 + 14 0.0333 + 21 0.1 + 28 0.0333 + 30 0.0333 + 33 0.0333 + 41 0.133 + 42 0.167 + 44 0.0333 + 47 0.1 + + 56 3 3 0 + 0 0.333 + 4 0.333 + 34 0.333 + + 22 205 23 5 + 0 0.039 + 2 0.0195 + 3 0.00488 + 4 0.0634 + 7 0.0585 + 8 0.0146 + 13 0.146 + 14 0.0585 + 15 0.0634 + 16 0.00488 + 19 0.00488 + 21 0.0683 + 24 0.0146 + 26 0.00488 + 28 0.0293 + 29 0.0634 + 30 0.0293 + 31 0.0634 + 32 0.00976 + 33 0.0244 + 41 0.0195 + 45 0.0146 + 47 0.18 + + 4 128 16 0 + 0 0.00781 + 2 0.0156 + 3 0.00781 + 7 0.0156 + 8 0.0234 + 13 0.234 + 14 0.0859 + 15 0.102 + 16 0.00781 + 19 0.00781 + 21 0.0391 + 24 0.00781 + 29 0.0859 + 31 0.0781 + 41 0.0156 + 47 0.266 + + 8 34 14 0 + 0 0.0588 + 2 0.0588 + 4 0.265 + 7 0.147 + 14 0.0294 + 21 0.0294 + 24 0.0294 + 28 0.0294 + 30 0.118 + 31 0.0294 + 33 0.0294 + 41 0.0588 + 45 0.0588 + 47 0.0588 + + 13 4 4 0 + 0 0.25 + 4 0.25 + 26 0.25 + 47 0.25 + + 47 34 12 0 + 0 0.118 + 4 0.0588 + 7 0.118 + 21 0.235 + 24 0.0294 + 28 0.0882 + 29 0.0588 + 30 0.0294 + 31 0.0588 + 32 0.0588 + 33 0.118 + 45 0.0294 + + 48 3 3 0 + 4 0.333 + 7 0.333 + 28 0.333 + + 23 73 13 2 + 0 0.0411 + 2 0.0685 + 4 0.466 + 7 0.151 + 8 0.0137 + 13 0.0274 + 18 0.0137 + 20 0.0137 + 29 0.0137 + 32 0.0137 + 33 0.0137 + 41 0.0548 + 47 0.11 + + 8 50 11 0 + 0 0.06 + 2 0.04 + 4 0.6 + 7 0.1 + 8 0.02 + 13 0.02 + 18 0.02 + 20 0.02 + 32 0.02 + 41 0.02 + 47 0.08 + + 47 19 8 0 + 2 0.105 + 4 0.211 + 7 0.263 + 13 0.0526 + 29 0.0526 + 33 0.0526 + 41 0.105 + 47 0.158 + + 24 4 3 0 + 22 0.25 + 24 0.25 + 30 0.5 + + 25 14 3 0 + 15 0.0714 + 42 0.0714 + 47 0.857 + + 26 6 4 0 + 3 0.333 + 13 0.333 + 21 0.167 + 47 0.167 + + 27 8 5 0 + 0 0.125 + 4 0.125 + 26 0.125 + 30 0.125 + 45 0.5 + + 28 126 20 5 + 0 0.0317 + 2 0.0952 + 4 0.0159 + 7 0.0159 + 12 0.00794 + 13 0.00794 + 14 0.00794 + 19 0.00794 + 21 0.0317 + 26 0.46 + 28 0.0952 + 30 0.0238 + 32 0.00794 + 34 0.00794 + 35 0.00794 + 41 0.00794 + 42 0.0238 + 44 0.0238 + 45 0.0556 + 47 0.0635 + + 2 4 3 0 + 26 0.25 + 28 0.25 + 44 0.5 + + 3 4 3 0 + 2 0.25 + 14 0.25 + 26 0.5 + + 13 10 6 0 + 0 0.1 + 2 0.2 + 26 0.2 + 41 0.1 + 42 0.1 + 47 0.3 + + 14 16 7 0 + 2 0.312 + 4 0.0625 + 12 0.0625 + 13 0.0625 + 26 0.312 + 35 0.0625 + 42 0.125 + + 47 80 13 0 + 0 0.0375 + 2 0.0375 + 4 0.0125 + 7 0.025 + 19 0.0125 + 21 0.05 + 26 0.538 + 28 0.125 + 30 0.025 + 32 0.0125 + 34 0.0125 + 45 0.0625 + 47 0.05 + + 29 40 11 2 + 2 0.125 + 4 0.025 + 7 0.025 + 13 0.325 + 14 0.025 + 15 0.15 + 20 0.025 + 21 0.025 + 31 0.025 + 41 0.2 + 42 0.05 + + 8 11 3 0 + 13 0.545 + 31 0.0909 + 41 0.364 + + 14 10 5 0 + 7 0.1 + 13 0.4 + 14 0.1 + 15 0.2 + 42 0.2 + + 30 1783 33 10 + 0 0.00673 + 2 0.0432 + 3 0.0107 + 4 0.337 + 7 0.204 + 8 0.0707 + 9 0.00112 + 10 0.00112 + 13 0.06 + 14 0.00393 + 15 0.0123 + 16 0.00112 + 18 0.0488 + 19 0.000561 + 20 0.0308 + 21 0.00393 + 22 0.000561 + 24 0.00393 + 26 0.0123 + 28 0.0275 + 29 0.0123 + 30 0.0157 + 31 0.00617 + 32 0.00449 + 33 0.00897 + 36 0.000561 + 37 0.0028 + 41 0.0314 + 42 0.0028 + 43 0.000561 + 45 0.00505 + 46 0.000561 + 47 0.0286 + + 2 15 6 0 + 4 0.2 + 7 0.467 + 22 0.0667 + 28 0.0667 + 41 0.133 + 47 0.0667 + + 3 8 1 0 + 4 1 + + 8 96 15 0 + 0 0.0104 + 2 0.0312 + 3 0.0104 + 4 0.417 + 7 0.25 + 8 0.0104 + 13 0.0104 + 15 0.0104 + 18 0.0938 + 20 0.0312 + 26 0.0104 + 28 0.0312 + 29 0.0312 + 30 0.0208 + 47 0.0312 + + 13 884 28 0 + 0 0.00226 + 2 0.0351 + 3 0.00792 + 4 0.436 + 7 0.0995 + 8 0.0735 + 13 0.106 + 14 0.00339 + 15 0.0181 + 16 0.00226 + 18 0.0622 + 20 0.0328 + 21 0.00226 + 24 0.00452 + 26 0.00452 + 28 0.0158 + 29 0.0102 + 30 0.00905 + 31 0.00566 + 32 0.00113 + 33 0.00679 + 36 0.00113 + 37 0.00113 + 41 0.0317 + 42 0.00113 + 43 0.00113 + 45 0.00566 + 47 0.0192 + + 14 489 28 0 + 0 0.0123 + 2 0.0654 + 3 0.0204 + 4 0.131 + 7 0.299 + 8 0.115 + 9 0.00409 + 10 0.00409 + 13 0.0245 + 14 0.00613 + 15 0.0102 + 18 0.0389 + 19 0.00204 + 20 0.0389 + 21 0.00204 + 24 0.00409 + 26 0.0204 + 28 0.0389 + 29 0.00818 + 30 0.0307 + 31 0.00409 + 32 0.0143 + 33 0.0102 + 37 0.00613 + 41 0.0327 + 42 0.00613 + 46 0.00204 + 47 0.0491 + + 15 59 12 0 + 2 0.0339 + 3 0.0169 + 4 0.593 + 7 0.136 + 8 0.0169 + 18 0.0508 + 20 0.0339 + 26 0.0339 + 31 0.0169 + 33 0.0169 + 41 0.0339 + 47 0.0169 + + 30 4 4 0 + 4 0.25 + 7 0.25 + 29 0.25 + 41 0.25 + + 46 3 1 0 + 45 1 + + 47 198 20 0 + 0 0.0152 + 2 0.0455 + 4 0.237 + 7 0.439 + 8 0.00505 + 14 0.00505 + 20 0.00505 + 21 0.0202 + 24 0.00505 + 26 0.0202 + 28 0.0606 + 29 0.0253 + 30 0.0101 + 31 0.0152 + 33 0.0202 + 37 0.00505 + 41 0.0354 + 42 0.00505 + 45 0.00505 + 47 0.0202 + + 48 8 5 0 + 4 0.5 + 8 0.125 + 18 0.125 + 20 0.125 + 26 0.125 + + 31 1447 30 13 + 0 0.0104 + 2 0.0297 + 3 0.02 + 4 0.411 + 7 0.157 + 8 0.0643 + 9 0.00138 + 10 0.00207 + 13 0.0145 + 14 0.00138 + 15 0.00484 + 16 0.000691 + 18 0.0408 + 19 0.000691 + 20 0.0359 + 21 0.0221 + 24 0.00415 + 26 0.0194 + 28 0.0235 + 29 0.0111 + 30 0.027 + 31 0.00484 + 32 0.00346 + 33 0.00898 + 37 0.000691 + 41 0.0235 + 42 0.0152 + 43 0.00138 + 45 0.00829 + 47 0.0318 + + 2 4 2 0 + 4 0.5 + 47 0.5 + + 3 16 4 0 + 4 0.75 + 7 0.125 + 13 0.0625 + 14 0.0625 + + 8 111 18 0 + 0 0.00901 + 2 0.045 + 4 0.342 + 7 0.252 + 8 0.0811 + 9 0.00901 + 18 0.018 + 20 0.027 + 21 0.018 + 26 0.027 + 28 0.027 + 29 0.00901 + 30 0.00901 + 31 0.00901 + 33 0.00901 + 41 0.027 + 45 0.00901 + 47 0.0721 + + 13 747 27 0 + 0 0.00803 + 2 0.0241 + 3 0.0161 + 4 0.483 + 7 0.123 + 8 0.0589 + 9 0.00134 + 10 0.00268 + 13 0.00803 + 14 0.00134 + 15 0.00535 + 18 0.0589 + 19 0.00134 + 20 0.0455 + 21 0.0201 + 24 0.00402 + 26 0.012 + 28 0.0187 + 29 0.012 + 30 0.0228 + 31 0.00268 + 32 0.00402 + 33 0.00669 + 41 0.0214 + 42 0.00669 + 45 0.00669 + 47 0.0241 + + 14 423 27 0 + 0 0.0165 + 2 0.0473 + 3 0.0402 + 4 0.199 + 7 0.215 + 8 0.0922 + 10 0.00236 + 13 0.0331 + 15 0.00709 + 16 0.00236 + 18 0.0284 + 20 0.0213 + 21 0.026 + 24 0.00709 + 26 0.0355 + 28 0.0402 + 29 0.0142 + 30 0.0473 + 31 0.00946 + 32 0.00473 + 33 0.0165 + 37 0.00236 + 41 0.0165 + 42 0.0355 + 43 0.00473 + 45 0.00709 + 47 0.0284 + + 15 45 6 0 + 4 0.711 + 7 0.178 + 20 0.0222 + 21 0.0444 + 30 0.0222 + 41 0.0222 + + 18 3 2 0 + 4 0.333 + 41 0.667 + + 30 4 3 0 + 0 0.25 + 7 0.25 + 41 0.5 + + 41 7 2 0 + 4 0.714 + 41 0.286 + + 46 3 1 0 + 45 1 + + 47 45 6 0 + 4 0.733 + 7 0.0222 + 20 0.0444 + 21 0.0444 + 42 0.0444 + 47 0.111 + + 48 19 4 0 + 4 0.737 + 18 0.0526 + 20 0.158 + 26 0.0526 + + 60 8 1 0 + 4 1 + + 32 7 4 0 + 7 0.571 + 15 0.143 + 16 0.143 + 41 0.143 + + 33 22 11 0 + 0 0.136 + 2 0.227 + 4 0.0909 + 7 0.0909 + 13 0.0455 + 19 0.0909 + 21 0.0909 + 32 0.0455 + 41 0.0909 + 42 0.0455 + 44 0.0455 + + 34 68 18 2 + 2 0.0441 + 7 0.103 + 8 0.0294 + 13 0.0147 + 14 0.0294 + 15 0.0147 + 21 0.0147 + 28 0.0147 + 30 0.0147 + 32 0.0147 + 33 0.0147 + 35 0.0147 + 37 0.0147 + 41 0.397 + 42 0.0441 + 45 0.0147 + 46 0.0147 + 47 0.191 + + 13 4 3 0 + 7 0.5 + 8 0.25 + 28 0.25 + + 14 3 2 0 + 30 0.333 + 47 0.667 + + 35 8 6 0 + 0 0.125 + 2 0.125 + 26 0.125 + 28 0.125 + 33 0.125 + 47 0.375 + + 36 7 3 0 + 13 0.143 + 14 0.143 + 41 0.714 + + 37 5 4 0 + 7 0.2 + 21 0.2 + 28 0.4 + 33 0.2 + + 38 13 6 0 + 7 0.308 + 24 0.0769 + 26 0.385 + 28 0.0769 + 29 0.0769 + 33 0.0769 + + 39 1798 26 1 + 0 0.0289 + 2 0.191 + 4 0.015 + 6 0.00111 + 7 0.391 + 8 0.0106 + 13 0.00334 + 14 0.00167 + 15 0.00278 + 18 0.00222 + 19 0.00167 + 20 0.00222 + 21 0.0384 + 24 0.00222 + 26 0.12 + 28 0.0211 + 29 0.0651 + 30 0.0117 + 31 0.0117 + 32 0.00222 + 33 0.00612 + 41 0.0184 + 42 0.0139 + 43 0.000556 + 44 0.035 + 47 0.00222 + + 3 8 5 0 + 2 0.25 + 4 0.25 + 20 0.25 + 33 0.125 + 41 0.125 + + 40 83 3 0 + 15 0.964 + 16 0.012 + 21 0.0241 + + 41 1289 21 18 + 0 0.000776 + 2 0.000776 + 3 0.0279 + 7 0.00155 + 8 0.26 + 9 0.014 + 10 0.00388 + 11 0.00155 + 13 0.206 + 14 0.102 + 15 0.353 + 16 0.00698 + 19 0.00233 + 21 0.00233 + 22 0.000776 + 24 0.000776 + 29 0.000776 + 30 0.00465 + 31 0.00853 + 33 0.000776 + 43 0.000776 + + 2 27 6 0 + 3 0.0741 + 8 0.037 + 13 0.481 + 14 0.111 + 15 0.259 + 33 0.037 + + 3 25 1 0 + 3 1 + + 8 318 11 0 + 0 0.00314 + 3 0.0252 + 8 0.836 + 9 0.0252 + 13 0.0597 + 14 0.00314 + 15 0.00629 + 16 0.00314 + 24 0.00314 + 30 0.0126 + 31 0.022 + + 9 9 3 0 + 8 0.556 + 9 0.333 + 13 0.111 + + 10 1 1 0 + 10 1 + + 13 240 5 0 + 8 0.05 + 13 0.729 + 14 0.162 + 15 0.0542 + 31 0.00417 + + 14 117 4 0 + 8 0.0256 + 13 0.248 + 14 0.718 + 21 0.00855 + + 15 430 6 0 + 8 0.00233 + 9 0.00233 + 13 0.0093 + 15 0.981 + 19 0.00233 + 43 0.00233 + + 16 9 2 0 + 15 0.222 + 16 0.778 + + 21 9 4 0 + 2 0.111 + 8 0.444 + 13 0.222 + 15 0.222 + + 31 4 3 0 + 8 0.5 + 13 0.25 + 31 0.25 + + 46 11 2 0 + 13 0.727 + 15 0.273 + + 48 53 7 0 + 8 0.698 + 9 0.0943 + 10 0.0755 + 13 0.0566 + 14 0.0189 + 30 0.0189 + 31 0.0377 + + 49 1 1 0 + 21 1 + + 50 1 1 0 + 22 1 + + 55 16 8 0 + 3 0.0625 + 11 0.0625 + 13 0.25 + 14 0.188 + 15 0.188 + 19 0.125 + 29 0.0625 + 30 0.0625 + + 61 1 1 0 + 16 1 + + 64 6 5 0 + 7 0.333 + 11 0.167 + 13 0.167 + 14 0.167 + 21 0.167 + + 42 86 19 4 + 0 0.0116 + 4 0.0233 + 7 0.0233 + 8 0.0581 + 11 0.0233 + 13 0.0698 + 14 0.0233 + 15 0.0116 + 19 0.0116 + 21 0.0116 + 25 0.0116 + 27 0.0233 + 28 0.0116 + 29 0.0116 + 30 0.0116 + 40 0.0116 + 42 0.0116 + 46 0.0116 + 47 0.628 + + 2 6 3 0 + 8 0.333 + 13 0.333 + 27 0.333 + + 15 31 2 0 + 15 0.0323 + 47 0.968 + + 55 24 14 0 + 7 0.0833 + 8 0.0417 + 11 0.0833 + 13 0.0833 + 14 0.0833 + 21 0.0417 + 25 0.0417 + 28 0.0417 + 29 0.0417 + 30 0.0417 + 40 0.0417 + 42 0.0417 + 46 0.0417 + 47 0.292 + + 62 2 2 0 + 0 0.5 + 19 0.5 + + 43 48 9 1 + 3 0.0208 + 4 0.0208 + 8 0.0625 + 13 0.312 + 15 0.396 + 18 0.0625 + 20 0.0208 + 28 0.0208 + 40 0.0833 + + 15 13 4 0 + 4 0.0769 + 13 0.0769 + 15 0.769 + 40 0.0769 + + 44 91 19 7 + 0 0.011 + 2 0.033 + 3 0.011 + 4 0.319 + 7 0.121 + 8 0.0769 + 13 0.033 + 14 0.022 + 15 0.0879 + 20 0.0549 + 23 0.011 + 26 0.033 + 28 0.044 + 30 0.011 + 34 0.011 + 40 0.044 + 41 0.011 + 42 0.011 + 47 0.0549 + + 4 2 2 0 + 0 0.5 + 26 0.5 + + 8 10 5 0 + 4 0.4 + 7 0.2 + 8 0.2 + 26 0.1 + 40 0.1 + + 13 25 9 0 + 3 0.04 + 4 0.44 + 7 0.08 + 8 0.12 + 13 0.04 + 15 0.08 + 20 0.12 + 23 0.04 + 28 0.04 + + 15 33 12 0 + 2 0.0606 + 4 0.303 + 7 0.152 + 8 0.0303 + 13 0.0303 + 15 0.182 + 20 0.0303 + 28 0.0303 + 30 0.0303 + 34 0.0303 + 40 0.0909 + 41 0.0303 + + 19 2 2 0 + 2 0.5 + 13 0.5 + + 55 10 5 0 + 4 0.1 + 7 0.2 + 28 0.1 + 42 0.1 + 47 0.5 + + 60 2 1 0 + 14 1 + + 45 1242 32 20 + 0 0.0266 + 1 0.000805 + 2 0.0282 + 3 0.0121 + 4 0.357 + 7 0.153 + 8 0.0837 + 9 0.00242 + 10 0.00161 + 13 0.0346 + 14 0.00322 + 15 0.0225 + 18 0.0548 + 19 0.00161 + 20 0.0322 + 21 0.00483 + 22 0.000805 + 24 0.00322 + 26 0.00886 + 28 0.0242 + 29 0.0169 + 30 0.0298 + 31 0.0185 + 32 0.00242 + 33 0.0137 + 40 0.000805 + 41 0.0145 + 42 0.00805 + 44 0.00564 + 45 0.000805 + 46 0.00242 + 47 0.0298 + + 3 11 6 0 + 0 0.0909 + 2 0.0909 + 4 0.545 + 7 0.0909 + 8 0.0909 + 33 0.0909 + + 4 35 13 0 + 0 0.143 + 2 0.0286 + 4 0.0286 + 7 0.229 + 13 0.0571 + 21 0.0571 + 28 0.0857 + 29 0.0286 + 30 0.0286 + 33 0.0571 + 41 0.0857 + 42 0.0571 + 47 0.114 + + 6 4 3 0 + 2 0.25 + 4 0.5 + 42 0.25 + + 8 363 25 0 + 0 0.00826 + 2 0.00551 + 3 0.0165 + 4 0.551 + 7 0.107 + 8 0.0606 + 9 0.00275 + 10 0.00275 + 13 0.00826 + 15 0.00275 + 18 0.0468 + 19 0.00275 + 20 0.0358 + 21 0.00551 + 22 0.00275 + 24 0.00551 + 26 0.00826 + 28 0.0275 + 29 0.0193 + 30 0.0303 + 31 0.0193 + 33 0.00551 + 41 0.0138 + 42 0.00275 + 47 0.00826 + + 10 6 2 0 + 4 0.833 + 20 0.167 + + 13 292 19 0 + 2 0.0445 + 3 0.00685 + 4 0.5 + 7 0.0616 + 8 0.12 + 9 0.00342 + 13 0.0753 + 14 0.00685 + 15 0.0103 + 18 0.0651 + 20 0.0342 + 26 0.00685 + 28 0.00685 + 29 0.00342 + 30 0.0103 + 31 0.0205 + 41 0.00342 + 46 0.0103 + 47 0.0103 + + 14 68 17 0 + 0 0.0147 + 2 0.0294 + 3 0.0147 + 4 0.103 + 7 0.0588 + 8 0.338 + 9 0.0147 + 10 0.0147 + 13 0.162 + 15 0.0147 + 18 0.118 + 19 0.0147 + 20 0.0294 + 28 0.0294 + 30 0.0147 + 31 0.0147 + 33 0.0147 + + 15 97 14 0 + 2 0.0103 + 3 0.0103 + 4 0.34 + 7 0.0412 + 8 0.0928 + 13 0.0309 + 15 0.196 + 18 0.134 + 20 0.0412 + 31 0.0103 + 33 0.0103 + 40 0.0103 + 44 0.0103 + 47 0.0619 + + 16 3 3 0 + 8 0.333 + 20 0.333 + 29 0.333 + + 20 6 5 0 + 4 0.167 + 7 0.333 + 8 0.167 + 18 0.167 + 33 0.167 + + 21 5 5 0 + 4 0.2 + 7 0.2 + 24 0.2 + 29 0.2 + 33 0.2 + + 22 2 2 0 + 20 0.5 + 26 0.5 + + 27 4 3 0 + 2 0.5 + 30 0.25 + 32 0.25 + + 30 6 3 0 + 4 0.667 + 7 0.167 + 31 0.167 + + 31 8 6 0 + 0 0.125 + 8 0.25 + 18 0.25 + 20 0.125 + 29 0.125 + 31 0.125 + + 48 28 9 0 + 0 0.0714 + 4 0.5 + 7 0.179 + 8 0.0357 + 13 0.0357 + 18 0.0357 + 29 0.0357 + 30 0.0714 + 31 0.0357 + + 54 10 7 0 + 0 0.1 + 2 0.1 + 3 0.1 + 4 0.2 + 15 0.2 + 18 0.2 + 20 0.1 + + 55 237 25 0 + 0 0.0717 + 1 0.00422 + 2 0.0422 + 3 0.00844 + 4 0.00844 + 7 0.409 + 8 0.00422 + 13 0.00422 + 14 0.00422 + 15 0.00844 + 18 0.00422 + 21 0.00422 + 24 0.00422 + 26 0.0211 + 28 0.0549 + 29 0.0338 + 30 0.0759 + 31 0.0211 + 32 0.00844 + 33 0.0338 + 41 0.038 + 42 0.0211 + 44 0.0211 + 45 0.00422 + 47 0.0886 + + 56 22 6 0 + 3 0.0455 + 4 0.364 + 8 0.318 + 18 0.0909 + 20 0.136 + 21 0.0455 + + 62 21 8 0 + 0 0.0952 + 3 0.0476 + 4 0.286 + 7 0.333 + 14 0.0476 + 20 0.0952 + 42 0.0476 + 44 0.0476 + + 46 382 21 10 + 3 0.0105 + 6 0.00524 + 8 0.387 + 9 0.00262 + 10 0.00524 + 13 0.304 + 14 0.0183 + 15 0.162 + 16 0.0105 + 18 0.00524 + 19 0.00524 + 21 0.00262 + 27 0.00262 + 28 0.00785 + 29 0.00262 + 30 0.0131 + 31 0.0157 + 40 0.00524 + 41 0.0288 + 46 0.00262 + 47 0.00262 + + 2 14 5 0 + 13 0.643 + 14 0.143 + 15 0.0714 + 41 0.0714 + 47 0.0714 + + 3 2 2 0 + 9 0.5 + 15 0.5 + + 8 15 5 0 + 6 0.0667 + 8 0.467 + 13 0.333 + 28 0.0667 + 31 0.0667 + + 13 206 14 0 + 3 0.00971 + 8 0.422 + 10 0.00485 + 13 0.325 + 14 0.0146 + 15 0.136 + 16 0.0146 + 18 0.00971 + 19 0.00971 + 27 0.00485 + 28 0.00971 + 30 0.0194 + 31 0.0146 + 46 0.00485 + + 14 99 11 0 + 3 0.0202 + 6 0.0101 + 8 0.495 + 10 0.0101 + 13 0.333 + 14 0.0202 + 15 0.0606 + 16 0.0101 + 21 0.0101 + 29 0.0101 + 31 0.0202 + + 15 30 5 0 + 8 0.1 + 13 0.0667 + 15 0.767 + 30 0.0333 + 40 0.0333 + + 45 3 1 0 + 41 1 + + 48 1 1 0 + 40 1 + + 55 6 1 0 + 41 1 + + 58 3 1 0 + 15 1 + + 47 311752 45 53 + 0 0.0388 + 1 0.0005 + 2 0.0469 + 3 0.00405 + 4 0.00179 + 5 1.6e-05 + 6 7.7e-05 + 7 0.382 + 8 0.00254 + 9 0.000189 + 10 9.3e-05 + 12 0.000388 + 13 0.0121 + 14 0.00672 + 15 0.00325 + 16 0.000112 + 17 0.000106 + 18 0.000202 + 19 0.00157 + 20 7.7e-05 + 21 0.0104 + 22 0.00016 + 23 1.28e-05 + 24 0.00627 + 25 3.85e-05 + 26 0.0366 + 27 6.42e-06 + 28 0.0599 + 29 0.0565 + 30 0.0332 + 31 0.0151 + 32 0.0125 + 33 0.026 + 34 0.00184 + 35 0.00141 + 36 1.92e-05 + 37 0.00624 + 40 9.94e-05 + 41 0.0842 + 42 0.0135 + 43 0.00033 + 44 0.00341 + 45 0.0148 + 46 0.00455 + 47 0.111 + + 0 3 3 0 + 7 0.333 + 14 0.333 + 44 0.333 + + 2 61 15 0 + 0 0.0656 + 2 0.0328 + 7 0.344 + 21 0.0164 + 26 0.0164 + 29 0.0164 + 30 0.0492 + 32 0.0164 + 33 0.0328 + 34 0.0164 + 41 0.0984 + 42 0.0492 + 44 0.0164 + 45 0.0164 + 47 0.213 + + 3 11856 34 0 + 0 0.0347 + 1 0.000422 + 2 0.066 + 3 0.000506 + 4 0.000759 + 7 0.359 + 8 0.00793 + 13 0.038 + 14 0.00506 + 15 0.00793 + 16 8.43e-05 + 18 0.000169 + 19 0.0011 + 21 0.038 + 24 0.00371 + 25 8.43e-05 + 26 0.083 + 28 0.0361 + 29 0.134 + 30 0.0172 + 31 0.0135 + 32 0.00472 + 33 0.0179 + 34 0.0016 + 35 0.000253 + 37 0.00118 + 40 0.000253 + 41 0.0499 + 42 0.0328 + 43 0.000843 + 44 0.00321 + 45 0.00346 + 46 0.00118 + 47 0.0361 + + 4 79613 41 0 + 0 0.0484 + 1 0.000754 + 2 0.0331 + 3 0.013 + 4 0.000666 + 5 2.51e-05 + 6 2.51e-05 + 7 0.404 + 8 0.00131 + 9 0.000214 + 10 7.54e-05 + 12 0.000415 + 13 0.0103 + 14 0.0123 + 15 0.0024 + 16 0.0001 + 17 0.000301 + 18 1.26e-05 + 19 0.00236 + 21 0.0111 + 22 0.000377 + 23 1.26e-05 + 24 0.00705 + 26 0.0314 + 28 0.0638 + 29 0.0519 + 30 0.0339 + 31 0.0147 + 32 0.0126 + 33 0.0216 + 34 0.00148 + 35 0.00126 + 37 0.00661 + 40 5.02e-05 + 41 0.0806 + 42 0.00671 + 43 0.000427 + 44 0.00117 + 45 0.0121 + 46 0.00315 + 47 0.108 + + 5 861 24 0 + 0 0.00581 + 2 0.0918 + 7 0.18 + 8 0.00465 + 10 0.00348 + 13 0.0186 + 14 0.00465 + 15 0.00232 + 16 0.00116 + 19 0.00232 + 21 0.029 + 28 0.0163 + 29 0.0395 + 30 0.00465 + 31 0.00232 + 32 0.0279 + 33 0.0151 + 34 0.00813 + 37 0.0267 + 41 0.143 + 42 0.00813 + 44 0.00232 + 45 0.167 + 47 0.195 + + 6 48 13 0 + 2 0.0208 + 4 0.0208 + 7 0.375 + 19 0.0208 + 25 0.0417 + 26 0.0417 + 28 0.0417 + 29 0.0208 + 32 0.0208 + 33 0.0208 + 41 0.104 + 45 0.125 + 47 0.146 + + 7 266 22 0 + 0 0.0526 + 2 0.0376 + 3 0.00376 + 7 0.18 + 8 0.0113 + 10 0.00376 + 13 0.147 + 14 0.105 + 15 0.015 + 21 0.0188 + 26 0.0338 + 28 0.0639 + 29 0.0489 + 30 0.0263 + 31 0.0263 + 32 0.0113 + 33 0.0301 + 35 0.00376 + 41 0.0564 + 42 0.0113 + 45 0.0113 + 47 0.102 + + 8 19385 39 0 + 0 0.0334 + 1 0.000464 + 2 0.0742 + 3 0.00284 + 4 0.00212 + 6 0.000258 + 7 0.434 + 8 0.00175 + 9 5.16e-05 + 12 0.000155 + 13 0.0156 + 14 0.00655 + 15 0.00542 + 16 0.000206 + 18 0.000516 + 19 0.00119 + 20 5.16e-05 + 21 0.00774 + 22 0.000155 + 24 0.00665 + 25 5.16e-05 + 26 0.0329 + 28 0.0675 + 29 0.0412 + 30 0.0447 + 31 0.0181 + 32 0.0144 + 33 0.0214 + 34 0.0016 + 35 0.000516 + 36 0.000103 + 37 0.00464 + 41 0.0594 + 42 0.00645 + 43 0.000258 + 44 0.00165 + 45 0.0122 + 46 0.000413 + 47 0.0797 + + 9 1078 30 0 + 0 0.0891 + 1 0.00186 + 2 0.0714 + 3 0.000928 + 4 0.000928 + 7 0.286 + 8 0.00371 + 12 0.000928 + 13 0.00278 + 14 0.00742 + 15 0.00371 + 16 0.000928 + 18 0.00278 + 19 0.00371 + 21 0.0111 + 24 0.00928 + 26 0.0427 + 28 0.151 + 29 0.0584 + 30 0.0826 + 31 0.0139 + 32 0.0408 + 33 0.0362 + 34 0.000928 + 37 0.000928 + 41 0.0288 + 42 0.00464 + 43 0.000928 + 45 0.0121 + 47 0.0297 + + 10 467 25 0 + 0 0.00642 + 2 0.0814 + 3 0.00214 + 4 0.00642 + 7 0.343 + 8 0.00214 + 13 0.00642 + 14 0.00214 + 19 0.00214 + 21 0.00857 + 24 0.015 + 26 0.0107 + 28 0.0343 + 29 0.0493 + 30 0.0214 + 31 0.00857 + 32 0.0107 + 33 0.0236 + 34 0.00428 + 35 0.00428 + 37 0.00857 + 41 0.0814 + 42 0.00857 + 45 0.045 + 47 0.214 + + 12 2 2 0 + 45 0.5 + 46 0.5 + + 13 22292 40 0 + 0 0.0312 + 1 0.000718 + 2 0.0474 + 3 0.000942 + 4 0.00493 + 7 0.47 + 8 0.00287 + 9 0.000449 + 10 8.97e-05 + 12 0.000224 + 13 0.0139 + 14 0.00453 + 15 0.00359 + 16 0.000135 + 18 0.000224 + 19 0.00144 + 20 4.49e-05 + 21 0.00763 + 22 8.97e-05 + 24 0.00574 + 25 8.97e-05 + 26 0.0302 + 27 4.49e-05 + 28 0.0663 + 29 0.0343 + 30 0.0394 + 31 0.0156 + 32 0.012 + 33 0.0202 + 34 0.00112 + 35 0.000538 + 37 0.00529 + 40 4.49e-05 + 41 0.0834 + 42 0.00745 + 43 0.000179 + 44 0.00242 + 45 0.0131 + 46 0.00112 + 47 0.0713 + + 14 14611 37 0 + 0 0.0223 + 1 0.000342 + 2 0.0463 + 3 0.000137 + 4 0.0011 + 6 6.84e-05 + 7 0.397 + 8 0.0024 + 9 0.000274 + 10 6.84e-05 + 12 0.000274 + 13 0.00609 + 14 0.00342 + 15 0.000342 + 18 0.000274 + 19 0.000753 + 21 0.00527 + 22 6.84e-05 + 24 0.00862 + 26 0.0357 + 28 0.0862 + 29 0.0426 + 30 0.0557 + 31 0.0153 + 32 0.0201 + 33 0.0203 + 34 0.00356 + 35 0.000958 + 37 0.0112 + 40 0.000137 + 41 0.0757 + 42 0.00897 + 43 0.000205 + 44 0.00103 + 45 0.0125 + 46 0.000958 + 47 0.114 + + 15 39318 40 0 + 0 0.00677 + 1 0.000102 + 2 0.0486 + 3 0.00145 + 4 0.00305 + 6 0.000178 + 7 0.372 + 8 0.00542 + 9 0.000203 + 10 7.63e-05 + 12 0.000153 + 13 0.0124 + 14 0.0032 + 15 0.0044 + 16 5.09e-05 + 18 0.000382 + 19 0.000254 + 20 0.000254 + 21 0.00387 + 24 0.0017 + 25 2.54e-05 + 26 0.0255 + 28 0.0202 + 29 0.0393 + 30 0.0134 + 31 0.011 + 32 0.00471 + 33 0.0302 + 34 0.00231 + 35 0.00112 + 36 5.09e-05 + 37 0.0056 + 40 0.000203 + 41 0.14 + 42 0.0104 + 43 0.000102 + 44 0.00972 + 45 0.00946 + 46 0.01 + 47 0.202 + + 16 399 24 0 + 0 0.0125 + 2 0.0501 + 4 0.00752 + 7 0.421 + 8 0.00251 + 13 0.00752 + 14 0.00501 + 15 0.00251 + 20 0.00251 + 21 0.01 + 26 0.0251 + 28 0.0301 + 29 0.00752 + 30 0.0226 + 31 0.00501 + 32 0.00251 + 33 0.015 + 34 0.00251 + 37 0.00752 + 41 0.115 + 42 0.0125 + 44 0.00752 + 45 0.0276 + 47 0.198 + + 17 312 24 0 + 0 0.0609 + 1 0.00321 + 2 0.0449 + 7 0.372 + 8 0.00321 + 9 0.00321 + 13 0.00641 + 14 0.00641 + 15 0.00321 + 19 0.00641 + 21 0.00962 + 24 0.00962 + 26 0.0224 + 28 0.106 + 29 0.0513 + 30 0.0513 + 31 0.0385 + 32 0.016 + 33 0.0224 + 37 0.0128 + 41 0.0417 + 42 0.00321 + 45 0.0192 + 47 0.0865 + + 18 4 1 0 + 28 1 + + 19 17392 39 0 + 0 0.00949 + 1 0.000115 + 2 0.0515 + 3 0.00138 + 4 0.00149 + 5 5.75e-05 + 7 0.171 + 8 0.00477 + 9 0.000402 + 10 0.000575 + 12 0.00305 + 13 0.0331 + 14 0.0155 + 15 0.00385 + 16 0.00023 + 19 0.00161 + 21 0.0166 + 22 0.000402 + 23 5.75e-05 + 24 0.000115 + 26 0.00638 + 27 5.75e-05 + 28 0.0544 + 29 0.101 + 30 0.0205 + 31 0.0106 + 32 0.0237 + 33 0.0277 + 34 0.00862 + 35 0.0122 + 37 0.0274 + 40 5.75e-05 + 41 0.12 + 42 0.011 + 43 0.000517 + 44 0.00149 + 45 0.0877 + 46 0.0316 + 47 0.14 + + 20 8301 36 0 + 0 0.0153 + 1 0.000361 + 2 0.0496 + 3 0.000361 + 4 0.00422 + 7 0.429 + 8 0.00169 + 9 0.000241 + 10 0.00012 + 12 0.000241 + 13 0.00361 + 14 0.00108 + 15 0.00133 + 16 0.00012 + 17 0.00012 + 18 0.000241 + 19 0.000241 + 21 0.00675 + 24 0.017 + 26 0.0359 + 28 0.136 + 29 0.0916 + 30 0.0543 + 31 0.0223 + 32 0.0141 + 33 0.026 + 34 0.000723 + 35 0.00145 + 37 0.00638 + 41 0.0253 + 42 0.00446 + 43 0.00012 + 44 0.000602 + 45 0.00904 + 46 0.00133 + 47 0.0385 + + 21 1441 29 0 + 0 0.12 + 1 0.00208 + 2 0.0625 + 3 0.00625 + 4 0.00208 + 7 0.237 + 8 0.00278 + 12 0.000694 + 13 0.0437 + 14 0.0278 + 15 0.0153 + 19 0.00278 + 21 0.0396 + 24 0.00763 + 26 0.00902 + 28 0.0472 + 29 0.0402 + 30 0.0194 + 31 0.0222 + 32 0.0104 + 33 0.0285 + 34 0.00486 + 37 0.00625 + 41 0.0861 + 42 0.0201 + 44 0.00347 + 45 0.0146 + 46 0.00139 + 47 0.116 + + 22 181 22 0 + 0 0.0442 + 2 0.0221 + 3 0.00552 + 7 0.0663 + 8 0.0166 + 13 0.166 + 14 0.0663 + 15 0.0718 + 16 0.00552 + 19 0.00552 + 21 0.0331 + 24 0.0166 + 26 0.00552 + 28 0.0331 + 29 0.0718 + 30 0.0331 + 31 0.0718 + 32 0.011 + 33 0.0276 + 41 0.0166 + 45 0.00552 + 47 0.204 + + 23 35 9 0 + 0 0.0571 + 2 0.143 + 7 0.314 + 13 0.0571 + 29 0.0286 + 32 0.0286 + 33 0.0286 + 41 0.114 + 47 0.229 + + 24 2 2 0 + 22 0.5 + 24 0.5 + + 25 13 2 0 + 42 0.0769 + 47 0.923 + + 27 3 3 0 + 0 0.333 + 26 0.333 + 30 0.333 + + 28 113 18 0 + 0 0.0354 + 2 0.0708 + 7 0.0177 + 12 0.00885 + 14 0.00885 + 19 0.00885 + 21 0.00885 + 26 0.513 + 28 0.106 + 30 0.0265 + 32 0.00885 + 34 0.00885 + 35 0.00885 + 41 0.00885 + 42 0.0265 + 44 0.0177 + 45 0.0442 + 47 0.0708 + + 29 19 7 0 + 2 0.263 + 7 0.0526 + 13 0.0526 + 15 0.0526 + 31 0.0526 + 41 0.421 + 42 0.105 + + 30 714 22 0 + 0 0.0154 + 2 0.0868 + 7 0.51 + 8 0.0014 + 13 0.0028 + 14 0.0028 + 19 0.0014 + 21 0.0028 + 24 0.0098 + 26 0.0308 + 28 0.0672 + 29 0.0308 + 30 0.0336 + 31 0.0084 + 32 0.0112 + 33 0.0224 + 37 0.007 + 41 0.0714 + 42 0.007 + 43 0.0014 + 45 0.0042 + 47 0.0714 + + 31 540 22 0 + 0 0.0278 + 2 0.0722 + 4 0.00185 + 7 0.419 + 13 0.0037 + 14 0.00185 + 15 0.00556 + 21 0.0111 + 24 0.0111 + 26 0.0519 + 28 0.063 + 29 0.0296 + 30 0.0685 + 31 0.00556 + 32 0.00926 + 33 0.0241 + 37 0.00185 + 41 0.0556 + 42 0.0407 + 43 0.0037 + 45 0.00741 + 47 0.0852 + + 32 6 3 0 + 7 0.667 + 15 0.167 + 41 0.167 + + 33 18 9 0 + 0 0.167 + 2 0.278 + 7 0.111 + 19 0.111 + 21 0.0556 + 32 0.0556 + 41 0.111 + 42 0.0556 + 44 0.0556 + + 34 67 17 0 + 2 0.0448 + 7 0.104 + 8 0.0299 + 13 0.0149 + 14 0.0299 + 15 0.0149 + 28 0.0149 + 30 0.0149 + 32 0.0149 + 33 0.0149 + 35 0.0149 + 37 0.0149 + 41 0.403 + 42 0.0448 + 45 0.0149 + 46 0.0149 + 47 0.194 + + 35 8 6 0 + 0 0.125 + 2 0.125 + 26 0.125 + 28 0.125 + 33 0.125 + 47 0.375 + + 36 7 3 0 + 13 0.143 + 14 0.143 + 41 0.714 + + 37 4 3 0 + 7 0.25 + 28 0.5 + 33 0.25 + + 38 13 6 0 + 7 0.308 + 24 0.0769 + 26 0.385 + 28 0.0769 + 29 0.0769 + 33 0.0769 + + 39 1743 25 0 + 0 0.0298 + 2 0.197 + 4 0.000574 + 6 0.00115 + 7 0.402 + 8 0.00344 + 13 0.00229 + 14 0.00172 + 15 0.00287 + 19 0.00172 + 20 0.000574 + 21 0.0384 + 24 0.00229 + 26 0.124 + 28 0.0218 + 29 0.0671 + 30 0.012 + 31 0.0103 + 32 0.00229 + 33 0.00631 + 41 0.0189 + 42 0.0143 + 43 0.000574 + 44 0.0361 + 47 0.00229 + + 41 2 2 0 + 0 0.5 + 3 0.5 + + 42 57 4 0 + 14 0.0175 + 40 0.0175 + 42 0.0175 + 47 0.947 + + 44 39 13 0 + 0 0.0256 + 2 0.0769 + 4 0.0256 + 7 0.282 + 14 0.0513 + 15 0.0513 + 26 0.0769 + 28 0.103 + 34 0.0256 + 40 0.103 + 41 0.0256 + 42 0.0256 + 47 0.128 + + 45 468 24 0 + 0 0.0662 + 1 0.00214 + 2 0.0491 + 3 0.00427 + 7 0.404 + 13 0.0128 + 14 0.00427 + 15 0.00427 + 18 0.00427 + 19 0.00214 + 21 0.00427 + 24 0.00855 + 26 0.0235 + 28 0.0641 + 29 0.0449 + 30 0.0726 + 31 0.0406 + 32 0.00641 + 33 0.0363 + 41 0.0299 + 42 0.0192 + 44 0.015 + 45 0.00214 + 47 0.0791 + + 48 1258 29 0 + 0 0.0819 + 1 0.000795 + 2 0.0429 + 4 0.00238 + 7 0.431 + 13 0.00477 + 14 0.00159 + 15 0.00238 + 18 0.000795 + 19 0.00238 + 21 0.0127 + 23 0.000795 + 24 0.00477 + 25 0.00159 + 26 0.0334 + 28 0.0787 + 29 0.0437 + 30 0.0437 + 31 0.0151 + 32 0.0207 + 33 0.0231 + 35 0.000795 + 36 0.000795 + 37 0.00397 + 41 0.0453 + 42 0.0167 + 45 0.0175 + 46 0.000795 + 47 0.0652 + + 49 116 18 0 + 0 0.0776 + 2 0.0776 + 3 0.0172 + 7 0.241 + 13 0.0517 + 14 0.00862 + 21 0.00862 + 26 0.00862 + 28 0.0517 + 29 0.0431 + 30 0.0345 + 31 0.0345 + 32 0.00862 + 34 0.00862 + 41 0.284 + 42 0.0259 + 46 0.00862 + 47 0.00862 + + 50 10 7 0 + 0 0.2 + 14 0.1 + 28 0.1 + 29 0.1 + 30 0.2 + 33 0.2 + 42 0.1 + + 53 7 4 0 + 2 0.143 + 7 0.143 + 42 0.429 + 47 0.286 + + 54 72 13 0 + 0 0.0139 + 2 0.0556 + 4 0.0139 + 7 0.417 + 26 0.0417 + 28 0.0278 + 29 0.0278 + 30 0.0139 + 33 0.0278 + 34 0.0139 + 41 0.111 + 46 0.0139 + 47 0.222 + + 55 80263 43 0 + 0 0.0575 + 1 0.000536 + 2 0.0458 + 3 0.000461 + 4 0.00156 + 5 2.49e-05 + 6 8.72e-05 + 7 0.377 + 8 0.00127 + 9 9.97e-05 + 10 2.49e-05 + 12 0.00015 + 13 0.00471 + 14 0.00257 + 15 0.00239 + 16 9.97e-05 + 17 9.97e-05 + 18 0.000174 + 19 0.00179 + 20 0.000125 + 21 0.00893 + 22 6.23e-05 + 24 0.00776 + 25 3.74e-05 + 26 0.0369 + 28 0.0637 + 29 0.0564 + 30 0.0373 + 31 0.0168 + 32 0.0133 + 33 0.0337 + 34 0.000648 + 35 0.000336 + 36 1.25e-05 + 37 0.00262 + 40 8.72e-05 + 41 0.0805 + 42 0.0217 + 43 0.000336 + 44 0.00209 + 45 0.00795 + 46 0.00182 + 47 0.111 + + 57 11 7 0 + 2 0.273 + 24 0.0909 + 28 0.182 + 33 0.182 + 41 0.0909 + 42 0.0909 + 44 0.0909 + + 58 14 6 0 + 0 0.0714 + 2 0.0714 + 7 0.643 + 28 0.0714 + 31 0.0714 + 41 0.0714 + + 60 8061 34 0 + 0 0.0514 + 1 0.000124 + 2 0.0294 + 3 0.000496 + 4 0.00062 + 7 0.386 + 8 0.00248 + 9 0.000124 + 13 0.016 + 14 0.00657 + 15 0.00385 + 16 0.000124 + 18 0.000496 + 19 0.00124 + 21 0.0112 + 22 0.000124 + 23 0.000124 + 24 0.00844 + 26 0.154 + 28 0.0624 + 29 0.08 + 30 0.0249 + 31 0.02 + 32 0.00893 + 33 0.0238 + 34 0.000744 + 37 0.00211 + 41 0.0215 + 42 0.0383 + 43 0.000124 + 44 0.0203 + 45 0.00136 + 46 0.000248 + 47 0.0226 + + 62 34 6 0 + 7 0.647 + 26 0.0882 + 30 0.0294 + 42 0.0294 + 45 0.0588 + 47 0.147 + + 64 40 15 0 + 0 0.1 + 2 0.025 + 7 0.2 + 13 0.025 + 19 0.05 + 24 0.025 + 26 0.05 + 28 0.1 + 29 0.05 + 30 0.025 + 31 0.075 + 33 0.075 + 41 0.1 + 45 0.075 + 47 0.025 + + 68 95 14 0 + 0 0.0105 + 2 0.0211 + 7 0.516 + 21 0.0105 + 26 0.0421 + 28 0.0737 + 29 0.0105 + 30 0.0632 + 31 0.0105 + 32 0.0211 + 33 0.0632 + 41 0.0211 + 42 0.0211 + 47 0.116 + + 48 4567 37 18 + 0 0.0274 + 1 0.000219 + 2 0.0125 + 3 0.0103 + 4 0.53 + 7 0.119 + 8 0.0458 + 9 0.00153 + 10 0.000438 + 13 0.00613 + 14 0.000438 + 15 0.0101 + 16 0.000219 + 18 0.0469 + 19 0.00153 + 20 0.0405 + 21 0.00504 + 22 0.000876 + 23 0.000219 + 24 0.00131 + 25 0.000438 + 26 0.0092 + 28 0.0217 + 29 0.0123 + 30 0.0138 + 31 0.00963 + 32 0.00569 + 33 0.00635 + 35 0.000219 + 36 0.000438 + 37 0.00109 + 40 0.000219 + 41 0.0243 + 42 0.0046 + 45 0.0109 + 46 0.000438 + 47 0.018 + + 3 17 2 0 + 4 0.941 + 18 0.0588 + + 4 16 7 0 + 0 0.375 + 7 0.125 + 21 0.188 + 28 0.0625 + 32 0.125 + 37 0.0625 + 45 0.0625 + + 8 500 23 0 + 0 0.03 + 2 0.016 + 3 0.024 + 4 0.448 + 7 0.148 + 8 0.034 + 13 0.014 + 15 0.006 + 18 0.058 + 20 0.064 + 22 0.002 + 26 0.008 + 28 0.012 + 29 0.016 + 30 0.012 + 31 0.02 + 32 0.004 + 33 0.016 + 35 0.002 + 41 0.036 + 42 0.014 + 45 0.004 + 47 0.012 + + 9 5 4 0 + 2 0.2 + 4 0.4 + 7 0.2 + 30 0.2 + + 13 2669 34 0 + 0 0.0217 + 1 0.000375 + 2 0.00712 + 3 0.0045 + 4 0.651 + 7 0.0573 + 8 0.0476 + 9 0.00225 + 10 0.000375 + 13 0.00525 + 14 0.000749 + 15 0.00599 + 18 0.0555 + 19 0.00187 + 20 0.0412 + 21 0.00337 + 22 0.000749 + 23 0.000375 + 24 0.00112 + 25 0.000375 + 26 0.00599 + 28 0.0139 + 29 0.0109 + 30 0.0105 + 31 0.00974 + 32 0.003 + 33 0.003 + 36 0.000749 + 40 0.000375 + 41 0.0161 + 42 0.00187 + 45 0.00599 + 46 0.000749 + 47 0.00862 + + 14 854 30 0 + 0 0.0457 + 2 0.0269 + 3 0.0234 + 4 0.196 + 7 0.292 + 8 0.0679 + 9 0.00117 + 10 0.00117 + 13 0.00468 + 15 0.0304 + 16 0.00117 + 18 0.0222 + 19 0.00117 + 20 0.0293 + 21 0.0082 + 22 0.00117 + 24 0.00351 + 25 0.00117 + 26 0.0152 + 28 0.0504 + 29 0.0222 + 30 0.0258 + 31 0.0082 + 32 0.0129 + 33 0.0141 + 37 0.00351 + 41 0.0293 + 42 0.0082 + 45 0.0152 + 47 0.0386 + + 15 246 19 0 + 0 0.0122 + 2 0.0203 + 3 0.00813 + 4 0.537 + 7 0.142 + 8 0.0122 + 13 0.00407 + 15 0.00407 + 18 0.0407 + 20 0.0325 + 21 0.00407 + 26 0.0285 + 28 0.0163 + 30 0.0163 + 32 0.00813 + 33 0.00407 + 37 0.00407 + 41 0.0407 + 47 0.065 + + 16 8 5 0 + 4 0.25 + 7 0.375 + 26 0.125 + 41 0.125 + 47 0.125 + + 18 2 1 0 + 13 1 + + 30 11 5 0 + 4 0.545 + 7 0.0909 + 20 0.182 + 28 0.0909 + 45 0.0909 + + 31 14 5 0 + 4 0.429 + 7 0.214 + 18 0.143 + 20 0.143 + 42 0.0714 + + 41 40 10 0 + 2 0.025 + 3 0.025 + 4 0.55 + 7 0.075 + 18 0.05 + 20 0.075 + 21 0.025 + 30 0.025 + 41 0.125 + 47 0.025 + + 46 19 2 0 + 4 0.158 + 45 0.842 + + 47 89 12 0 + 0 0.0225 + 4 0.753 + 7 0.0674 + 8 0.0112 + 19 0.0112 + 20 0.0112 + 21 0.0225 + 28 0.0562 + 30 0.0112 + 31 0.0112 + 32 0.0112 + 41 0.0112 + + 48 29 9 0 + 0 0.069 + 4 0.414 + 7 0.069 + 18 0.0345 + 20 0.0345 + 26 0.0345 + 28 0.0345 + 41 0.276 + 45 0.0345 + + 55 7 5 0 + 4 0.286 + 7 0.286 + 20 0.143 + 28 0.143 + 47 0.143 + + 56 9 4 0 + 4 0.444 + 7 0.333 + 8 0.111 + 47 0.111 + + 58 6 4 0 + 4 0.333 + 7 0.333 + 8 0.167 + 42 0.167 + + 49 130 21 9 + 0 0.0692 + 2 0.0769 + 3 0.0154 + 4 0.0615 + 7 0.215 + 13 0.0462 + 14 0.00769 + 18 0.00769 + 21 0.0231 + 26 0.00769 + 28 0.0462 + 29 0.0385 + 30 0.0308 + 31 0.0308 + 32 0.00769 + 34 0.00769 + 41 0.262 + 42 0.0231 + 45 0.00769 + 46 0.00769 + 47 0.00769 + + 3 7 3 0 + 7 0.429 + 30 0.143 + 41 0.429 + + 4 51 12 0 + 0 0.0588 + 2 0.118 + 7 0.294 + 13 0.118 + 28 0.0588 + 29 0.0392 + 30 0.0392 + 31 0.0588 + 32 0.0196 + 41 0.157 + 42 0.0196 + 47 0.0196 + + 8 6 4 0 + 7 0.5 + 28 0.167 + 29 0.167 + 31 0.167 + + 13 19 10 0 + 0 0.0526 + 4 0.368 + 7 0.158 + 14 0.0526 + 28 0.0526 + 29 0.0526 + 30 0.0526 + 41 0.105 + 42 0.0526 + 45 0.0526 + + 14 4 4 0 + 4 0.25 + 7 0.25 + 26 0.25 + 29 0.25 + + 15 5 3 0 + 18 0.2 + 41 0.6 + 42 0.2 + + 41 3 2 0 + 3 0.667 + 7 0.333 + + 47 1 1 0 + 34 1 + + 55 29 7 0 + 0 0.138 + 2 0.138 + 7 0.069 + 21 0.069 + 28 0.0345 + 41 0.517 + 46 0.0345 + + 50 14 10 0 + 0 0.143 + 14 0.143 + 15 0.0714 + 28 0.0714 + 29 0.0714 + 30 0.143 + 32 0.0714 + 33 0.143 + 41 0.0714 + 42 0.0714 + + 53 7 4 0 + 2 0.143 + 7 0.143 + 42 0.429 + 47 0.286 + + 54 390 20 6 + 0 0.00256 + 2 0.0154 + 3 0.0282 + 4 0.618 + 7 0.0769 + 8 0.0359 + 13 0.00256 + 15 0.0128 + 18 0.0308 + 20 0.059 + 26 0.00769 + 28 0.00513 + 29 0.00513 + 30 0.00256 + 33 0.00513 + 34 0.00256 + 41 0.0205 + 45 0.0256 + 46 0.00256 + 47 0.041 + + 8 28 2 0 + 3 0.0714 + 4 0.929 + + 13 239 11 0 + 2 0.00418 + 3 0.0167 + 4 0.762 + 7 0.0251 + 8 0.0418 + 15 0.00837 + 18 0.046 + 20 0.0753 + 33 0.00837 + 41 0.00837 + 47 0.00418 + + 14 26 8 0 + 2 0.0769 + 3 0.115 + 4 0.462 + 18 0.0385 + 20 0.115 + 28 0.0385 + 41 0.0385 + 47 0.115 + + 15 74 17 0 + 0 0.0135 + 2 0.0405 + 3 0.027 + 4 0.189 + 7 0.27 + 8 0.0541 + 13 0.0135 + 15 0.0405 + 26 0.027 + 28 0.0135 + 29 0.027 + 30 0.0135 + 34 0.0135 + 41 0.0676 + 45 0.027 + 46 0.0135 + 47 0.149 + + 18 3 2 0 + 7 0.667 + 26 0.333 + + 46 8 1 0 + 45 1 + + 55 80957 43 26 + 0 0.057 + 1 0.000531 + 2 0.0461 + 3 0.000581 + 4 0.00351 + 5 2.47e-05 + 6 8.65e-05 + 7 0.374 + 8 0.00166 + 9 9.88e-05 + 10 4.94e-05 + 12 0.000148 + 13 0.00473 + 14 0.00267 + 15 0.00241 + 16 9.88e-05 + 17 0.000371 + 18 0.000259 + 19 0.00178 + 20 0.000259 + 21 0.00965 + 22 7.41e-05 + 24 0.0077 + 25 3.71e-05 + 26 0.0366 + 28 0.0632 + 29 0.0559 + 30 0.037 + 31 0.0167 + 32 0.0131 + 33 0.0334 + 34 0.000642 + 35 0.000334 + 36 1.24e-05 + 37 0.00259 + 40 8.65e-05 + 41 0.0801 + 42 0.0218 + 43 0.000371 + 44 0.0022 + 45 0.0108 + 46 0.00188 + 47 0.11 + + 0 4 4 0 + 7 0.25 + 29 0.25 + 30 0.25 + 32 0.25 + + 2 4 3 0 + 4 0.25 + 7 0.5 + 47 0.25 + + 3 137 16 0 + 0 0.0073 + 2 0.0146 + 7 0.577 + 13 0.0073 + 14 0.0146 + 24 0.0146 + 26 0.0292 + 28 0.0438 + 29 0.0365 + 30 0.0073 + 31 0.0073 + 32 0.0438 + 33 0.0365 + 34 0.0073 + 41 0.0803 + 47 0.073 + + 4 2 2 0 + 13 0.5 + 26 0.5 + + 8 1730 27 0 + 0 0.0254 + 2 0.0353 + 3 0.00116 + 4 0.00578 + 7 0.478 + 8 0.000578 + 9 0.000578 + 13 0.00347 + 18 0.00116 + 21 0.00925 + 24 0.00925 + 26 0.0364 + 28 0.0572 + 29 0.041 + 30 0.0272 + 31 0.00925 + 32 0.00578 + 33 0.0168 + 34 0.00116 + 35 0.00173 + 37 0.00173 + 41 0.102 + 42 0.00694 + 44 0.000578 + 45 0.00347 + 46 0.00347 + 47 0.115 + + 9 15 7 0 + 7 0.467 + 26 0.0667 + 28 0.0667 + 29 0.0667 + 31 0.0667 + 33 0.0667 + 41 0.2 + + 10 202 18 0 + 0 0.114 + 2 0.0248 + 3 0.00495 + 7 0.347 + 15 0.00495 + 20 0.00495 + 21 0.0248 + 24 0.00495 + 26 0.00495 + 28 0.0248 + 29 0.0198 + 30 0.0347 + 31 0.0198 + 32 0.00495 + 33 0.00495 + 41 0.262 + 42 0.0099 + 47 0.0842 + + 13 3620 33 0 + 0 0.0177 + 2 0.0282 + 3 0.0011 + 4 0.0113 + 7 0.41 + 8 0.00414 + 10 0.000276 + 13 0.00249 + 14 0.00166 + 15 0.00138 + 17 0.0011 + 18 0.000276 + 19 0.000552 + 20 0.0011 + 21 0.00912 + 24 0.00691 + 26 0.0373 + 28 0.0715 + 29 0.0561 + 30 0.0331 + 31 0.0133 + 32 0.0127 + 33 0.0218 + 34 0.000552 + 35 0.000276 + 37 0.00331 + 41 0.0956 + 42 0.00635 + 43 0.000552 + 44 0.00138 + 45 0.0047 + 46 0.00221 + 47 0.142 + + 14 1127 28 0 + 0 0.00532 + 2 0.024 + 3 0.00177 + 4 0.0071 + 7 0.482 + 8 0.0071 + 13 0.00532 + 14 0.00177 + 15 0.000887 + 17 0.00177 + 21 0.00266 + 24 0.00621 + 26 0.0417 + 28 0.0816 + 29 0.0488 + 30 0.039 + 31 0.0177 + 32 0.0115 + 33 0.0195 + 34 0.00266 + 35 0.00177 + 37 0.00799 + 41 0.0532 + 42 0.00444 + 44 0.00177 + 45 0.00444 + 46 0.000887 + 47 0.117 + + 15 868 28 0 + 0 0.0104 + 2 0.0657 + 3 0.0023 + 4 0.00806 + 7 0.468 + 8 0.00691 + 13 0.0023 + 14 0.00115 + 15 0.00115 + 18 0.00461 + 20 0.00115 + 21 0.0023 + 24 0.00115 + 26 0.0415 + 28 0.0173 + 29 0.0242 + 30 0.0161 + 31 0.00461 + 32 0.00346 + 33 0.0242 + 34 0.0023 + 37 0.00115 + 41 0.0668 + 42 0.0127 + 44 0.00115 + 45 0.00806 + 46 0.0023 + 47 0.199 + + 16 33 9 0 + 2 0.0303 + 7 0.455 + 20 0.0606 + 28 0.0909 + 30 0.0303 + 32 0.0303 + 41 0.0606 + 45 0.0303 + 47 0.212 + + 18 5 4 0 + 2 0.4 + 7 0.2 + 26 0.2 + 45 0.2 + + 23 2 2 0 + 2 0.5 + 33 0.5 + + 30 87 11 0 + 2 0.023 + 7 0.575 + 26 0.046 + 28 0.103 + 29 0.0345 + 30 0.0345 + 31 0.023 + 33 0.023 + 41 0.092 + 42 0.0115 + 47 0.0345 + + 31 59 13 0 + 2 0.0339 + 4 0.0339 + 7 0.475 + 14 0.0169 + 24 0.0169 + 26 0.0339 + 28 0.0508 + 29 0.102 + 30 0.0508 + 31 0.0169 + 41 0.0169 + 46 0.0169 + 47 0.136 + + 41 5 5 0 + 2 0.2 + 4 0.2 + 7 0.2 + 28 0.2 + 41 0.2 + + 43 4 2 0 + 7 0.25 + 44 0.75 + + 45 68 11 0 + 0 0.0441 + 2 0.0147 + 7 0.426 + 15 0.0147 + 26 0.0735 + 28 0.0735 + 29 0.132 + 30 0.0294 + 33 0.0441 + 41 0.0294 + 47 0.118 + + 46 6 2 0 + 19 0.167 + 45 0.833 + + 47 72658 43 0 + 0 0.0614 + 1 0.000592 + 2 0.0476 + 3 0.000495 + 4 0.0029 + 5 2.75e-05 + 6 9.63e-05 + 7 0.366 + 8 0.00143 + 9 9.63e-05 + 10 4.13e-05 + 12 0.000165 + 13 0.00491 + 14 0.00278 + 15 0.00256 + 16 0.00011 + 17 0.00033 + 18 0.000193 + 19 0.00193 + 20 0.000179 + 21 0.00988 + 22 8.26e-05 + 24 0.0078 + 25 4.13e-05 + 26 0.0365 + 28 0.0633 + 29 0.0569 + 30 0.0378 + 31 0.0172 + 32 0.0135 + 33 0.0349 + 34 0.000578 + 35 0.000289 + 36 1.38e-05 + 37 0.00255 + 40 9.63e-05 + 41 0.0789 + 42 0.0236 + 43 0.000385 + 44 0.00228 + 45 0.0115 + 46 0.00183 + 47 0.107 + + 48 235 20 0 + 0 0.0255 + 2 0.0255 + 4 0.00851 + 7 0.417 + 14 0.00851 + 19 0.00426 + 21 0.0128 + 24 0.0128 + 26 0.034 + 28 0.0638 + 29 0.0213 + 30 0.0255 + 31 0.017 + 32 0.00851 + 33 0.0213 + 41 0.0979 + 42 0.00851 + 45 0.00426 + 46 0.00426 + 47 0.179 + + 54 12 2 0 + 7 0.833 + 28 0.167 + + 55 7 6 0 + 7 0.286 + 13 0.143 + 26 0.143 + 28 0.143 + 29 0.143 + 47 0.143 + + 57 19 7 0 + 4 0.0526 + 7 0.526 + 26 0.0526 + 29 0.105 + 30 0.0526 + 33 0.0526 + 41 0.158 + + 60 22 6 0 + 7 0.682 + 21 0.0455 + 28 0.0455 + 30 0.0455 + 41 0.0909 + 47 0.0909 + + 68 8 5 0 + 7 0.375 + 28 0.25 + 30 0.125 + 32 0.125 + 47 0.125 + + 56 295 15 2 + 2 0.00678 + 3 0.0542 + 4 0.42 + 7 0.00339 + 8 0.251 + 9 0.0169 + 10 0.0102 + 15 0.00339 + 20 0.122 + 21 0.0102 + 30 0.00678 + 31 0.0102 + 34 0.00339 + 41 0.00678 + 45 0.0746 + + 15 2 2 0 + 7 0.5 + 8 0.5 + + 46 2 1 0 + 45 1 + + 57 38 11 4 + 2 0.132 + 13 0.0526 + 14 0.0263 + 15 0.5 + 24 0.0263 + 28 0.0526 + 33 0.0526 + 41 0.0526 + 42 0.0263 + 44 0.0263 + 45 0.0526 + + 18 19 2 0 + 13 0.0526 + 15 0.947 + + 41 4 4 0 + 2 0.25 + 24 0.25 + 41 0.25 + 45 0.25 + + 47 4 4 0 + 13 0.25 + 14 0.25 + 28 0.25 + 33 0.25 + + 55 5 4 0 + 2 0.4 + 28 0.2 + 41 0.2 + 44 0.2 + + 58 108 17 5 + 0 0.00926 + 2 0.00926 + 3 0.037 + 4 0.0926 + 6 0.0185 + 7 0.0833 + 8 0.167 + 13 0.102 + 15 0.333 + 16 0.00926 + 18 0.0185 + 20 0.0278 + 28 0.00926 + 31 0.00926 + 40 0.0185 + 41 0.0185 + 46 0.037 + + 8 10 7 0 + 0 0.1 + 2 0.1 + 4 0.1 + 7 0.2 + 8 0.3 + 18 0.1 + 20 0.1 + + 13 37 10 0 + 3 0.0811 + 4 0.216 + 6 0.027 + 7 0.0811 + 8 0.216 + 13 0.135 + 15 0.162 + 18 0.027 + 20 0.027 + 46 0.027 + + 14 21 10 0 + 4 0.0476 + 6 0.0476 + 7 0.0952 + 8 0.238 + 13 0.19 + 15 0.19 + 20 0.0476 + 28 0.0476 + 31 0.0476 + 46 0.0476 + + 15 31 5 0 + 7 0.0645 + 8 0.0323 + 15 0.806 + 16 0.0323 + 40 0.0645 + + 47 5 4 0 + 3 0.2 + 13 0.2 + 41 0.2 + 46 0.4 + + 60 8217 36 21 + 0 0.0504 + 1 0.000122 + 2 0.0288 + 3 0.00231 + 4 0.00828 + 7 0.378 + 8 0.00633 + 9 0.000122 + 10 0.000122 + 13 0.0158 + 14 0.00645 + 15 0.00377 + 16 0.000122 + 18 0.00316 + 19 0.00122 + 20 0.000852 + 21 0.0113 + 22 0.000122 + 23 0.000122 + 24 0.00828 + 26 0.151 + 28 0.0612 + 29 0.0785 + 30 0.0245 + 31 0.0207 + 32 0.00876 + 33 0.0234 + 34 0.00073 + 37 0.00207 + 41 0.0211 + 42 0.0376 + 43 0.000122 + 44 0.0202 + 45 0.00146 + 46 0.000243 + 47 0.0221 + + 2 2 2 0 + 31 0.5 + 41 0.5 + + 3 8 4 0 + 0 0.25 + 26 0.375 + 28 0.125 + 29 0.25 + + 4 63 16 0 + 0 0.143 + 2 0.111 + 7 0.143 + 13 0.0317 + 14 0.0317 + 15 0.0159 + 24 0.0317 + 26 0.0317 + 28 0.0317 + 29 0.0476 + 31 0.0159 + 32 0.0159 + 33 0.0317 + 41 0.206 + 42 0.0159 + 47 0.0952 + + 7 7 5 0 + 0 0.429 + 2 0.143 + 7 0.143 + 13 0.143 + 45 0.143 + + 8 300 22 0 + 0 0.0933 + 2 0.0467 + 4 0.0267 + 7 0.31 + 8 0.00333 + 13 0.01 + 15 0.00667 + 18 0.03 + 20 0.00333 + 21 0.0133 + 24 0.0133 + 26 0.02 + 28 0.0867 + 29 0.05 + 30 0.0367 + 31 0.0267 + 32 0.00667 + 33 0.0333 + 37 0.00333 + 41 0.04 + 42 0.09 + 47 0.05 + + 9 5 5 0 + 2 0.2 + 28 0.2 + 29 0.2 + 32 0.2 + 41 0.2 + + 13 1033 27 0 + 0 0.0552 + 1 0.000968 + 2 0.0387 + 3 0.000968 + 4 0.0155 + 7 0.284 + 8 0.0029 + 13 0.00581 + 14 0.0106 + 15 0.00194 + 18 0.0029 + 19 0.00194 + 21 0.0271 + 24 0.00678 + 26 0.0736 + 28 0.0697 + 29 0.0794 + 30 0.0368 + 31 0.0281 + 32 0.0126 + 33 0.0523 + 37 0.000968 + 41 0.0542 + 42 0.092 + 44 0.00678 + 45 0.00194 + 47 0.0368 + + 14 1393 31 0 + 0 0.0682 + 2 0.0223 + 3 0.00144 + 4 0.0215 + 7 0.363 + 8 0.0223 + 9 0.000718 + 13 0.0625 + 14 0.00718 + 15 0.00287 + 16 0.000718 + 18 0.00718 + 19 0.00287 + 20 0.00359 + 21 0.0122 + 24 0.00861 + 26 0.0818 + 28 0.0653 + 29 0.0639 + 30 0.023 + 31 0.0294 + 32 0.0108 + 33 0.0294 + 34 0.000718 + 37 0.0101 + 41 0.0251 + 42 0.0101 + 43 0.000718 + 44 0.00144 + 45 0.00287 + 47 0.038 + + 15 70 16 0 + 0 0.0143 + 2 0.0286 + 4 0.0857 + 7 0.386 + 8 0.0143 + 18 0.0143 + 20 0.0143 + 28 0.0857 + 29 0.0571 + 30 0.0286 + 31 0.0143 + 33 0.0571 + 41 0.0286 + 42 0.0429 + 46 0.0143 + 47 0.114 + + 16 12 5 0 + 0 0.0833 + 4 0.333 + 7 0.25 + 28 0.167 + 47 0.167 + + 20 18 11 0 + 0 0.111 + 2 0.111 + 7 0.167 + 26 0.0556 + 28 0.0556 + 29 0.111 + 30 0.0556 + 32 0.0556 + 33 0.111 + 41 0.111 + 42 0.0556 + + 21 4 3 0 + 18 0.25 + 31 0.5 + 42 0.25 + + 31 5 3 0 + 0 0.4 + 7 0.4 + 33 0.2 + + 45 1 1 0 + 32 1 + + 46 1 1 0 + 45 1 + + 47 5237 31 0 + 0 0.0405 + 2 0.0258 + 3 0.00306 + 4 0.000573 + 7 0.409 + 8 0.00286 + 10 0.000191 + 13 0.00592 + 14 0.00573 + 15 0.0042 + 18 0.000382 + 19 0.000764 + 21 0.0084 + 22 0.000191 + 23 0.000191 + 24 0.00802 + 26 0.198 + 28 0.0571 + 29 0.0852 + 30 0.0223 + 31 0.0164 + 32 0.00726 + 33 0.0145 + 34 0.000955 + 37 0.000191 + 41 0.00955 + 42 0.0315 + 44 0.03 + 45 0.000382 + 46 0.000191 + 47 0.0107 + + 48 4 4 0 + 7 0.25 + 28 0.25 + 41 0.25 + 47 0.25 + + 55 19 8 0 + 0 0.105 + 2 0.158 + 7 0.368 + 26 0.105 + 28 0.0526 + 42 0.105 + 45 0.0526 + 47 0.0526 + + 56 14 6 0 + 4 0.0714 + 7 0.571 + 24 0.0714 + 29 0.0714 + 33 0.143 + 47 0.0714 + + 58 1 1 0 + 45 1 + + 60 15 4 0 + 7 0.8 + 8 0.0667 + 26 0.0667 + 31 0.0667 + + 62 60 9 3 + 7 0.367 + 18 0.0167 + 26 0.05 + 30 0.0167 + 34 0.0167 + 41 0.0167 + 42 0.05 + 45 0.383 + 47 0.0833 + + 2 10 3 0 + 7 0.7 + 26 0.2 + 30 0.1 + + 46 14 1 0 + 45 1 + + 47 13 6 0 + 7 0.308 + 34 0.0769 + 41 0.0769 + 42 0.154 + 45 0.154 + 47 0.231 + + 64 48 16 4 + 0 0.0833 + 2 0.0208 + 7 0.188 + 13 0.0208 + 19 0.0417 + 24 0.0208 + 26 0.0417 + 28 0.0833 + 29 0.0417 + 30 0.0208 + 31 0.0625 + 33 0.0625 + 41 0.208 + 45 0.0625 + 46 0.0208 + 47 0.0208 + + 2 5 4 0 + 7 0.4 + 28 0.2 + 29 0.2 + 45 0.2 + + 41 9 7 0 + 0 0.222 + 2 0.111 + 7 0.222 + 19 0.111 + 24 0.111 + 26 0.111 + 47 0.111 + + 42 11 8 0 + 0 0.0909 + 7 0.364 + 13 0.0909 + 26 0.0909 + 28 0.0909 + 29 0.0909 + 30 0.0909 + 33 0.0909 + + 47 22 9 0 + 0 0.0455 + 7 0.0455 + 19 0.0455 + 28 0.0455 + 31 0.136 + 33 0.0909 + 41 0.455 + 45 0.0909 + 46 0.0455 + + 68 206 22 3 + 0 0.00971 + 2 0.00971 + 3 0.00971 + 4 0.209 + 7 0.238 + 8 0.194 + 9 0.00485 + 13 0.0146 + 15 0.0291 + 18 0.034 + 20 0.0194 + 21 0.00485 + 26 0.0194 + 28 0.034 + 29 0.00485 + 30 0.0388 + 31 0.0146 + 32 0.00971 + 33 0.0291 + 41 0.00971 + 42 0.00971 + 47 0.0534 + + 8 17 5 0 + 7 0.294 + 8 0.529 + 15 0.0588 + 32 0.0588 + 47 0.0588 + + 13 71 12 0 + 2 0.0282 + 4 0.465 + 7 0.127 + 8 0.183 + 9 0.0141 + 13 0.0423 + 15 0.0423 + 26 0.0141 + 30 0.0141 + 33 0.0282 + 41 0.0141 + 47 0.0282 + + 14 113 19 0 + 0 0.0177 + 3 0.0177 + 4 0.0796 + 7 0.274 + 8 0.159 + 15 0.0177 + 18 0.0619 + 20 0.0354 + 21 0.00885 + 26 0.0265 + 28 0.0619 + 29 0.00885 + 30 0.0619 + 31 0.0265 + 32 0.00885 + 33 0.0354 + 41 0.00885 + 42 0.0177 + 47 0.0708 + + 69 5 3 0 + 4 0.2 + 18 0.4 + 45 0.4 + +56 3353 24 19 + 2 0.24 + 3 0.0289 + 4 0.15 + 6 0.000596 + 7 0.00209 + 8 0.17 + 9 0.00716 + 10 0.00388 + 13 0.0674 + 14 0.0155 + 15 0.0692 + 16 0.00418 + 18 0.0746 + 20 0.0435 + 21 0.00507 + 30 0.00537 + 31 0.00775 + 34 0.00119 + 36 0.00119 + 39 0.000596 + 40 0.000298 + 41 0.0537 + 42 0.000596 + 45 0.0474 + + 2 8 4 0 + 13 0.375 + 14 0.125 + 15 0.375 + 16 0.125 + + 3 22 9 1 + 2 0.318 + 4 0.136 + 8 0.182 + 15 0.0455 + 18 0.0909 + 20 0.0455 + 21 0.0455 + 39 0.0909 + 45 0.0455 + + 47 7 4 0 + 8 0.429 + 21 0.143 + 39 0.286 + 45 0.143 + + 4 10 4 0 + 2 0.1 + 21 0.1 + 41 0.1 + 45 0.7 + + 6 8 2 0 + 6 0.25 + 45 0.75 + + 7 3 1 0 + 15 1 + + 8 253 14 4 + 2 0.506 + 3 0.0356 + 4 0.107 + 7 0.00395 + 8 0.119 + 9 0.0119 + 13 0.00395 + 15 0.00791 + 18 0.0711 + 20 0.0395 + 30 0.00395 + 31 0.00395 + 41 0.0632 + 45 0.0237 + + 8 21 4 0 + 2 0.857 + 18 0.0476 + 41 0.0476 + 45 0.0476 + + 13 140 14 0 + 2 0.464 + 3 0.00714 + 4 0.15 + 7 0.00714 + 8 0.157 + 9 0.00714 + 13 0.00714 + 15 0.00714 + 18 0.0786 + 20 0.0357 + 30 0.00714 + 31 0.00714 + 41 0.0357 + 45 0.0286 + + 14 76 10 0 + 2 0.5 + 3 0.0526 + 4 0.0263 + 8 0.105 + 9 0.0263 + 15 0.0132 + 18 0.0789 + 20 0.0526 + 41 0.132 + 45 0.0132 + + 47 3 1 0 + 3 1 + + 13 596 17 4 + 2 0.201 + 3 0.0185 + 4 0.0839 + 8 0.309 + 9 0.00503 + 10 0.00336 + 13 0.173 + 14 0.0101 + 15 0.0436 + 18 0.0453 + 20 0.0185 + 30 0.0134 + 31 0.0101 + 34 0.00168 + 36 0.00168 + 41 0.052 + 45 0.0101 + + 13 101 12 0 + 2 0.337 + 3 0.0198 + 4 0.129 + 8 0.248 + 9 0.0099 + 10 0.0099 + 13 0.0891 + 15 0.0297 + 20 0.0198 + 31 0.0099 + 41 0.0891 + 45 0.0099 + + 14 94 9 0 + 2 0.479 + 4 0.0638 + 8 0.266 + 9 0.0106 + 13 0.0319 + 15 0.0106 + 20 0.0319 + 31 0.0213 + 41 0.0851 + + 30 4 1 0 + 2 1 + + 47 392 17 0 + 2 0.0893 + 3 0.023 + 4 0.0791 + 8 0.339 + 9 0.00255 + 10 0.00255 + 13 0.23 + 14 0.0153 + 15 0.0536 + 18 0.0689 + 20 0.0153 + 30 0.0204 + 31 0.00765 + 34 0.00255 + 36 0.00255 + 41 0.0357 + 45 0.0128 + + 14 320 16 1 + 2 0.0781 + 3 0.0375 + 4 0.0531 + 8 0.312 + 9 0.00625 + 10 0.00625 + 13 0.306 + 14 0.00313 + 15 0.0281 + 18 0.0188 + 20 0.0281 + 21 0.00938 + 30 0.00938 + 31 0.0281 + 41 0.0719 + 45 0.00313 + + 13 6 4 0 + 2 0.333 + 13 0.167 + 20 0.167 + 41 0.333 + + 15 301 16 6 + 2 0.159 + 3 0.0133 + 4 0.0897 + 7 0.0133 + 8 0.0399 + 9 0.00332 + 13 0.00664 + 14 0.0332 + 15 0.412 + 16 0.00997 + 18 0.0365 + 20 0.0133 + 21 0.00332 + 40 0.00332 + 41 0.0399 + 45 0.123 + + 7 3 3 0 + 2 0.333 + 15 0.333 + 40 0.333 + + 13 17 9 0 + 2 0.0588 + 4 0.294 + 8 0.235 + 14 0.0588 + 15 0.118 + 18 0.0588 + 20 0.0588 + 41 0.0588 + 45 0.0588 + + 14 6 6 0 + 2 0.167 + 3 0.167 + 4 0.167 + 8 0.167 + 9 0.167 + 15 0.167 + + 15 119 11 0 + 2 0.261 + 4 0.118 + 7 0.0084 + 8 0.0336 + 14 0.0672 + 15 0.252 + 16 0.0084 + 18 0.042 + 20 0.0084 + 41 0.0672 + 45 0.134 + + 16 9 5 0 + 2 0.222 + 15 0.222 + 18 0.111 + 20 0.222 + 45 0.222 + + 47 139 13 0 + 2 0.0719 + 3 0.0216 + 4 0.0432 + 7 0.0216 + 8 0.0216 + 13 0.0144 + 14 0.00719 + 15 0.612 + 16 0.0144 + 18 0.0216 + 21 0.00719 + 41 0.0216 + 45 0.122 + + 16 14 4 0 + 2 0.143 + 4 0.143 + 15 0.643 + 41 0.0714 + + 21 5 2 0 + 2 0.8 + 41 0.2 + + 30 11 4 0 + 2 0.273 + 8 0.273 + 13 0.364 + 20 0.0909 + + 31 9 3 0 + 2 0.556 + 4 0.222 + 21 0.222 + + 45 9 6 0 + 2 0.111 + 3 0.111 + 13 0.222 + 14 0.111 + 18 0.333 + 20 0.111 + + 47 1311 20 13 + 2 0.304 + 3 0.0297 + 4 0.188 + 7 0.00153 + 8 0.12 + 9 0.00763 + 10 0.00458 + 13 0.00763 + 14 0.0168 + 15 0.0259 + 16 0.00458 + 18 0.0931 + 20 0.0549 + 21 0.00458 + 30 0.00305 + 31 0.00534 + 34 0.00153 + 36 0.00153 + 41 0.0686 + 45 0.0572 + + 4 9 3 0 + 2 0.111 + 41 0.111 + 45 0.778 + + 6 6 1 0 + 45 1 + + 8 224 12 0 + 2 0.571 + 3 0.0268 + 4 0.116 + 7 0.00446 + 8 0.0402 + 9 0.00893 + 15 0.00446 + 18 0.0804 + 20 0.0446 + 30 0.00446 + 41 0.0714 + 45 0.0268 + + 13 298 15 0 + 2 0.396 + 3 0.00671 + 4 0.154 + 8 0.134 + 9 0.00671 + 10 0.00336 + 13 0.00336 + 15 0.0302 + 18 0.0906 + 20 0.0369 + 31 0.00671 + 34 0.00336 + 36 0.00336 + 41 0.104 + 45 0.0201 + + 14 117 13 0 + 2 0.197 + 3 0.0855 + 4 0.12 + 8 0.197 + 9 0.00855 + 10 0.0171 + 13 0.0342 + 15 0.0256 + 18 0.0342 + 20 0.0598 + 30 0.00855 + 31 0.0171 + 41 0.197 + + 15 154 13 0 + 2 0.292 + 4 0.162 + 7 0.00649 + 8 0.039 + 13 0.00649 + 14 0.0649 + 15 0.026 + 16 0.013 + 18 0.0455 + 20 0.026 + 21 0.00649 + 41 0.0779 + 45 0.234 + + 21 5 2 0 + 2 0.8 + 41 0.2 + + 31 9 3 0 + 2 0.556 + 4 0.222 + 21 0.222 + + 45 9 6 0 + 2 0.111 + 3 0.111 + 13 0.222 + 14 0.111 + 18 0.333 + 20 0.111 + + 48 10 4 0 + 2 0.6 + 4 0.2 + 18 0.1 + 20 0.1 + + 55 17 5 0 + 2 0.412 + 3 0.0588 + 4 0.0588 + 18 0.0588 + 45 0.412 + + 56 414 19 0 + 2 0.101 + 3 0.0459 + 4 0.297 + 8 0.181 + 9 0.0121 + 10 0.00725 + 13 0.00483 + 14 0.0266 + 15 0.0411 + 16 0.00966 + 18 0.14 + 20 0.087 + 21 0.00725 + 30 0.00483 + 31 0.00725 + 34 0.00242 + 36 0.00242 + 41 0.0121 + 45 0.00966 + + 62 2 1 0 + 45 1 + + 48 11 5 0 + 2 0.545 + 4 0.182 + 8 0.0909 + 18 0.0909 + 20 0.0909 + + 55 22 6 0 + 2 0.318 + 3 0.0909 + 4 0.0455 + 18 0.0455 + 42 0.0909 + 45 0.409 + + 56 419 19 0 + 2 0.1 + 3 0.0453 + 4 0.294 + 8 0.179 + 9 0.0119 + 10 0.00716 + 13 0.00477 + 14 0.0263 + 15 0.0406 + 16 0.00955 + 18 0.138 + 20 0.0859 + 21 0.00716 + 30 0.00477 + 31 0.00716 + 34 0.00239 + 36 0.00239 + 41 0.0119 + 45 0.0215 + + 62 2 1 0 + 45 1 + +57 191766 42 26 + 0 0.0127 + 1 6.26e-05 + 2 0.00876 + 3 0.0413 + 4 0.00784 + 6 9.91e-05 + 7 0.0115 + 8 0.0343 + 9 0.00545 + 10 0.00283 + 12 0.000167 + 13 0.352 + 14 0.15 + 15 0.0378 + 16 0.00175 + 18 0.000245 + 19 0.00638 + 20 5.21e-06 + 21 0.0315 + 22 0.00242 + 23 0.000209 + 24 0.00711 + 25 3.65e-05 + 26 0.000136 + 27 7.3e-05 + 28 0.0277 + 29 0.0264 + 30 0.0277 + 31 0.0819 + 32 0.00613 + 33 0.00986 + 34 0.000375 + 35 0.000261 + 37 9.39e-05 + 40 4.17e-05 + 41 0.0447 + 42 0.00376 + 43 0.00162 + 44 0.00109 + 45 0.00293 + 46 0.00618 + 47 0.0445 + + 2 77 17 3 + 0 0.013 + 3 0.0519 + 4 0.0519 + 8 0.013 + 9 0.013 + 13 0.338 + 14 0.0779 + 15 0.026 + 18 0.013 + 19 0.013 + 21 0.0519 + 24 0.026 + 28 0.026 + 31 0.013 + 41 0.221 + 42 0.026 + 46 0.026 + + 7 4 3 0 + 24 0.25 + 31 0.25 + 41 0.5 + + 47 57 10 0 + 3 0.0702 + 4 0.0702 + 8 0.0175 + 13 0.439 + 14 0.0702 + 15 0.0351 + 18 0.0175 + 21 0.0702 + 41 0.193 + 42 0.0175 + + 57 14 10 0 + 0 0.0714 + 9 0.0714 + 13 0.0714 + 14 0.143 + 19 0.0714 + 24 0.0714 + 28 0.0714 + 41 0.286 + 42 0.0714 + 46 0.0714 + + 4 29 13 2 + 0 0.103 + 7 0.069 + 8 0.103 + 13 0.0345 + 14 0.103 + 24 0.069 + 28 0.0345 + 29 0.0345 + 32 0.069 + 33 0.103 + 41 0.207 + 46 0.0345 + 47 0.0345 + + 7 18 9 0 + 0 0.111 + 7 0.111 + 14 0.0556 + 24 0.111 + 29 0.0556 + 32 0.0556 + 33 0.167 + 41 0.278 + 47 0.0556 + + 57 11 8 0 + 0 0.0909 + 8 0.273 + 13 0.0909 + 14 0.182 + 28 0.0909 + 32 0.0909 + 41 0.0909 + 46 0.0909 + + 6 16 6 1 + 3 0.0625 + 6 0.188 + 13 0.188 + 15 0.188 + 41 0.188 + 44 0.188 + + 6 3 1 0 + 44 1 + + 7 83565 41 0 + 0 0.0129 + 1 7.18e-05 + 2 0.00859 + 3 0.0374 + 4 0.00881 + 6 7.18e-05 + 7 0.0117 + 8 0.0334 + 9 0.00596 + 10 0.00335 + 12 0.000168 + 13 0.369 + 14 0.156 + 15 0.0407 + 16 0.00188 + 18 0.000239 + 19 0.006 + 21 0.0348 + 22 0.00268 + 23 0.000215 + 24 0.00704 + 25 2.39e-05 + 26 0.000132 + 27 1.2e-05 + 28 0.0257 + 29 0.0221 + 30 0.0204 + 31 0.0807 + 32 0.00594 + 33 0.00902 + 34 0.000419 + 35 0.000299 + 37 8.38e-05 + 40 3.59e-05 + 41 0.0318 + 42 0.00281 + 43 0.0017 + 44 0.00107 + 45 0.00294 + 46 0.0061 + 47 0.0473 + + 8 392 18 5 + 0 0.0281 + 2 0.00255 + 3 0.00255 + 8 0.0051 + 13 0.0765 + 14 0.436 + 20 0.00255 + 21 0.0179 + 24 0.00255 + 29 0.00255 + 30 0.00255 + 31 0.00255 + 41 0.342 + 42 0.0281 + 44 0.0051 + 45 0.0051 + 46 0.0332 + 47 0.0051 + + 7 342 7 0 + 8 0.00292 + 13 0.0614 + 14 0.488 + 41 0.377 + 42 0.0322 + 44 0.00585 + 46 0.0322 + + 14 1 1 0 + 20 1 + + 26 12 8 0 + 3 0.0833 + 13 0.167 + 14 0.0833 + 21 0.0833 + 31 0.0833 + 41 0.25 + 45 0.167 + 47 0.0833 + + 47 25 9 0 + 0 0.44 + 2 0.04 + 8 0.04 + 13 0.12 + 14 0.12 + 21 0.12 + 24 0.04 + 29 0.04 + 30 0.04 + + 57 10 5 0 + 13 0.3 + 21 0.3 + 41 0.2 + 46 0.1 + 47 0.1 + + 9 2 2 0 + 0 0.5 + 33 0.5 + + 13 8 5 0 + 3 0.125 + 8 0.125 + 13 0.5 + 28 0.125 + 41 0.125 + + 15 11 5 0 + 15 0.455 + 16 0.0909 + 42 0.0909 + 45 0.273 + 47 0.0909 + + 21 467 30 5 + 0 0.0428 + 2 0.0428 + 3 0.00214 + 4 0.00214 + 7 0.0171 + 8 0.03 + 10 0.00214 + 13 0.107 + 14 0.122 + 15 0.0107 + 18 0.00428 + 19 0.0214 + 21 0.0685 + 22 0.00214 + 24 0.00214 + 28 0.0364 + 29 0.0321 + 30 0.0193 + 31 0.0664 + 32 0.00642 + 33 0.0236 + 34 0.00214 + 37 0.00214 + 41 0.165 + 42 0.0257 + 43 0.00428 + 44 0.00857 + 45 0.0193 + 46 0.00642 + 47 0.105 + + 7 289 25 0 + 0 0.0346 + 2 0.0554 + 3 0.00346 + 7 0.0138 + 8 0.0381 + 10 0.00346 + 13 0.111 + 14 0.135 + 15 0.0138 + 19 0.00692 + 21 0.0554 + 22 0.00346 + 28 0.0208 + 29 0.0138 + 31 0.0727 + 32 0.00692 + 33 0.00346 + 37 0.00346 + 41 0.221 + 42 0.0311 + 43 0.00692 + 44 0.00346 + 45 0.0138 + 46 0.00692 + 47 0.121 + + 21 10 7 0 + 0 0.1 + 13 0.1 + 14 0.2 + 29 0.1 + 41 0.3 + 44 0.1 + 47 0.1 + + 30 4 3 0 + 41 0.5 + 44 0.25 + 47 0.25 + + 47 90 23 0 + 0 0.0556 + 2 0.0333 + 7 0.0444 + 8 0.0111 + 13 0.133 + 14 0.1 + 15 0.0111 + 18 0.0111 + 19 0.0667 + 21 0.144 + 24 0.0111 + 28 0.0444 + 29 0.0444 + 30 0.0556 + 31 0.0667 + 32 0.0111 + 33 0.0667 + 34 0.0111 + 41 0.0111 + 42 0.0111 + 45 0.0111 + 46 0.0111 + 47 0.0333 + + 57 62 18 0 + 0 0.0645 + 4 0.0161 + 8 0.0323 + 13 0.0484 + 14 0.0968 + 18 0.0161 + 19 0.0323 + 21 0.0323 + 28 0.0968 + 29 0.0968 + 30 0.0645 + 31 0.0645 + 33 0.0645 + 41 0.0645 + 42 0.0323 + 44 0.0161 + 45 0.0323 + 47 0.129 + + 22 7 7 0 + 0 0.143 + 21 0.143 + 22 0.143 + 30 0.143 + 33 0.143 + 41 0.143 + 47 0.143 + + 24 55 11 0 + 0 0.0182 + 13 0.0909 + 14 0.0545 + 19 0.0545 + 28 0.2 + 29 0.109 + 30 0.145 + 31 0.236 + 32 0.0182 + 33 0.0545 + 41 0.0182 + + 26 8661 35 0 + 0 0.00185 + 2 0.00496 + 3 0.0928 + 4 0.00127 + 6 0.000231 + 7 0.00947 + 8 0.068 + 9 0.00266 + 10 0.000115 + 13 0.286 + 14 0.103 + 15 0.02 + 16 0.000924 + 19 0.00935 + 21 0.0461 + 22 0.00173 + 23 0.000231 + 24 0.00877 + 26 0.000115 + 27 0.000693 + 28 0.0462 + 29 0.0701 + 30 0.076 + 31 0.0876 + 32 0.00774 + 33 0.0162 + 35 0.000115 + 40 0.000115 + 41 0.0264 + 42 0.00196 + 43 0.00127 + 44 0.000231 + 45 0.000462 + 46 0.00531 + 47 0.00231 + + 28 3 3 0 + 2 0.333 + 14 0.333 + 41 0.333 + + 29 2 1 0 + 41 1 + + 30 1062 21 2 + 2 0.00847 + 3 0.00659 + 7 0.00282 + 8 0.00282 + 13 0.0574 + 14 0.0433 + 15 0.0122 + 16 0.00188 + 19 0.00282 + 21 0.0104 + 22 0.000942 + 28 0.000942 + 29 0.00188 + 30 0.000942 + 31 0.0132 + 41 0.65 + 42 0.0377 + 44 0.00188 + 45 0.00282 + 46 0.0113 + 47 0.13 + + 47 613 20 0 + 2 0.00326 + 3 0.00979 + 7 0.00326 + 8 0.00489 + 13 0.0897 + 14 0.0669 + 15 0.0212 + 16 0.00326 + 19 0.00326 + 21 0.0179 + 22 0.00163 + 28 0.00163 + 29 0.00326 + 31 0.0179 + 41 0.622 + 42 0.0636 + 44 0.00326 + 45 0.00163 + 46 0.00653 + 47 0.0555 + + 57 448 12 0 + 2 0.0156 + 3 0.00223 + 7 0.00223 + 13 0.0134 + 14 0.0112 + 19 0.00223 + 30 0.00223 + 31 0.0067 + 41 0.69 + 45 0.00446 + 46 0.0179 + 47 0.232 + + 31 361 21 3 + 2 0.0166 + 3 0.036 + 4 0.00554 + 7 0.0166 + 8 0.036 + 9 0.00277 + 13 0.108 + 14 0.0526 + 15 0.00277 + 21 0.0139 + 28 0.00277 + 30 0.00277 + 31 0.0139 + 32 0.00277 + 41 0.593 + 42 0.00554 + 43 0.00277 + 44 0.00277 + 45 0.0111 + 46 0.00277 + 47 0.0693 + + 7 2 1 0 + 14 1 + + 47 57 12 0 + 2 0.105 + 4 0.0175 + 7 0.0351 + 8 0.0702 + 13 0.0351 + 21 0.0351 + 28 0.0175 + 41 0.404 + 42 0.0175 + 44 0.0175 + 45 0.0526 + 47 0.193 + + 57 302 18 0 + 3 0.043 + 4 0.00331 + 7 0.0132 + 8 0.0298 + 9 0.00331 + 13 0.123 + 14 0.0563 + 15 0.00331 + 21 0.00993 + 30 0.00331 + 31 0.0166 + 32 0.00331 + 41 0.632 + 42 0.00331 + 43 0.00331 + 45 0.00331 + 46 0.00331 + 47 0.0464 + + 41 8 6 0 + 2 0.125 + 13 0.125 + 14 0.125 + 15 0.125 + 18 0.25 + 21 0.25 + + 42 3 1 0 + 25 1 + + 45 10 7 0 + 0 0.2 + 3 0.1 + 13 0.2 + 14 0.1 + 19 0.1 + 21 0.2 + 47 0.1 + + 46 2 1 0 + 21 1 + + 47 94690 41 22 + 0 0.0128 + 1 6.34e-05 + 2 0.00877 + 3 0.0418 + 4 0.00773 + 6 8.45e-05 + 7 0.0116 + 8 0.0327 + 9 0.00546 + 10 0.00276 + 12 0.000169 + 13 0.357 + 14 0.151 + 15 0.0383 + 16 0.00177 + 18 0.000232 + 19 0.00646 + 21 0.0268 + 22 0.00233 + 23 0.000211 + 24 0.0072 + 25 2.11e-05 + 26 0.000137 + 27 7.39e-05 + 28 0.0281 + 29 0.0267 + 30 0.0257 + 31 0.0814 + 32 0.00621 + 33 0.00998 + 34 0.00038 + 35 0.000253 + 37 9.5e-05 + 40 4.22e-05 + 41 0.0452 + 42 0.00379 + 43 0.00163 + 44 0.0011 + 45 0.00291 + 46 0.00625 + 47 0.045 + + 2 75 16 0 + 0 0.0133 + 3 0.0533 + 4 0.0533 + 8 0.0133 + 9 0.0133 + 13 0.347 + 14 0.08 + 15 0.0267 + 19 0.0133 + 21 0.0533 + 24 0.0267 + 28 0.0133 + 31 0.0133 + 41 0.227 + 42 0.0267 + 46 0.0267 + + 4 29 13 0 + 0 0.103 + 7 0.069 + 8 0.103 + 13 0.0345 + 14 0.103 + 24 0.069 + 28 0.0345 + 29 0.0345 + 32 0.069 + 33 0.103 + 41 0.207 + 46 0.0345 + 47 0.0345 + + 6 13 5 0 + 3 0.0769 + 13 0.231 + 15 0.231 + 41 0.231 + 44 0.231 + + 7 82196 41 0 + 0 0.0132 + 1 7.3e-05 + 2 0.00869 + 3 0.0379 + 4 0.00861 + 6 7.3e-05 + 7 0.0119 + 8 0.0297 + 9 0.00592 + 10 0.00316 + 12 0.00017 + 13 0.375 + 14 0.158 + 15 0.0413 + 16 0.00191 + 18 0.000243 + 19 0.0061 + 21 0.0258 + 22 0.00248 + 23 0.000219 + 24 0.00715 + 25 2.43e-05 + 26 0.000134 + 27 1.22e-05 + 28 0.0261 + 29 0.0225 + 30 0.0207 + 31 0.082 + 32 0.00603 + 33 0.00917 + 34 0.000426 + 35 0.00028 + 37 8.52e-05 + 40 3.65e-05 + 41 0.0323 + 42 0.00286 + 43 0.0017 + 44 0.00107 + 45 0.00293 + 46 0.00618 + 47 0.0481 + + 8 387 17 0 + 0 0.0284 + 2 0.00258 + 3 0.00258 + 8 0.00258 + 13 0.0775 + 14 0.442 + 21 0.0103 + 24 0.00258 + 29 0.00258 + 30 0.00258 + 31 0.00258 + 41 0.346 + 42 0.0284 + 44 0.00517 + 45 0.00517 + 46 0.0336 + 47 0.00517 + + 9 2 2 0 + 0 0.5 + 33 0.5 + + 13 7 5 0 + 3 0.143 + 8 0.143 + 13 0.429 + 28 0.143 + 41 0.143 + + 15 11 5 0 + 15 0.455 + 16 0.0909 + 42 0.0909 + 45 0.273 + 47 0.0909 + + 21 439 28 0 + 0 0.0456 + 2 0.0456 + 3 0.00228 + 4 0.00228 + 7 0.0182 + 8 0.0296 + 13 0.114 + 14 0.125 + 15 0.0114 + 18 0.00456 + 19 0.0228 + 21 0.0296 + 24 0.00228 + 28 0.0387 + 29 0.0342 + 30 0.0205 + 31 0.0706 + 32 0.00683 + 33 0.0251 + 34 0.00228 + 37 0.00228 + 41 0.173 + 42 0.0273 + 43 0.00456 + 44 0.00911 + 45 0.0137 + 46 0.00683 + 47 0.112 + + 22 7 7 0 + 0 0.143 + 21 0.143 + 22 0.143 + 30 0.143 + 33 0.143 + 41 0.143 + 47 0.143 + + 24 55 11 0 + 0 0.0182 + 13 0.0909 + 14 0.0545 + 19 0.0545 + 28 0.2 + 29 0.109 + 30 0.145 + 31 0.236 + 32 0.0182 + 33 0.0545 + 41 0.0182 + + 26 8601 35 0 + 0 0.00186 + 2 0.00488 + 3 0.0935 + 4 0.00128 + 6 0.000233 + 7 0.00953 + 8 0.0671 + 9 0.00267 + 10 0.000116 + 13 0.288 + 14 0.103 + 15 0.0201 + 16 0.00093 + 19 0.00942 + 21 0.0414 + 22 0.00163 + 23 0.000233 + 24 0.00884 + 26 0.000116 + 27 0.000698 + 28 0.0465 + 29 0.0706 + 30 0.0765 + 31 0.0882 + 32 0.00779 + 33 0.0163 + 35 0.000116 + 40 0.000116 + 41 0.0265 + 42 0.00198 + 43 0.00128 + 44 0.000233 + 45 0.000465 + 46 0.00535 + 47 0.00233 + + 29 2 1 0 + 41 1 + + 30 1055 21 0 + 2 0.00853 + 3 0.00664 + 7 0.00284 + 8 0.00284 + 13 0.0578 + 14 0.0436 + 15 0.0123 + 16 0.0019 + 19 0.00284 + 21 0.00379 + 22 0.000948 + 28 0.000948 + 29 0.0019 + 30 0.000948 + 31 0.0133 + 41 0.654 + 42 0.0379 + 44 0.0019 + 45 0.00284 + 46 0.0114 + 47 0.131 + + 31 358 21 0 + 2 0.0168 + 3 0.0363 + 4 0.00559 + 7 0.0168 + 8 0.0363 + 9 0.00279 + 13 0.109 + 14 0.0531 + 15 0.00279 + 21 0.00559 + 28 0.00279 + 30 0.00279 + 31 0.014 + 32 0.00279 + 41 0.598 + 42 0.00559 + 43 0.00279 + 44 0.00279 + 45 0.0112 + 46 0.00279 + 47 0.0698 + + 41 2 2 0 + 2 0.5 + 15 0.5 + + 45 9 7 0 + 0 0.222 + 3 0.111 + 13 0.222 + 14 0.111 + 19 0.111 + 21 0.111 + 47 0.111 + + 49 623 28 0 + 0 0.0674 + 2 0.0369 + 3 0.00321 + 4 0.00642 + 7 0.00482 + 8 0.0161 + 9 0.00161 + 12 0.00161 + 13 0.114 + 14 0.0867 + 15 0.0112 + 19 0.00963 + 21 0.0321 + 22 0.00161 + 24 0.00963 + 28 0.0161 + 29 0.0289 + 30 0.0144 + 31 0.0754 + 32 0.00482 + 33 0.0144 + 37 0.00161 + 41 0.319 + 42 0.0385 + 44 0.00321 + 45 0.0161 + 46 0.00482 + 47 0.0594 + + 50 17 10 0 + 8 0.176 + 13 0.118 + 14 0.0588 + 24 0.0588 + 28 0.0588 + 30 0.0588 + 31 0.118 + 33 0.0588 + 41 0.235 + 45 0.0588 + + 55 135 19 0 + 0 0.141 + 2 0.0593 + 7 0.133 + 8 0.0148 + 13 0.0815 + 14 0.0519 + 15 0.00741 + 21 0.037 + 24 0.00741 + 26 0.00741 + 28 0.0444 + 29 0.0444 + 31 0.0741 + 32 0.00741 + 33 0.0296 + 41 0.156 + 42 0.037 + 46 0.00741 + 47 0.0593 + + 57 656 25 0 + 0 0.0244 + 2 0.00915 + 3 0.00457 + 4 0.00305 + 7 0.00457 + 8 0.0457 + 9 0.0061 + 12 0.00152 + 13 0.245 + 14 0.148 + 15 0.0259 + 19 0.00915 + 21 0.0152 + 24 0.0061 + 28 0.0884 + 29 0.0381 + 30 0.061 + 31 0.123 + 32 0.0213 + 33 0.0274 + 41 0.0396 + 42 0.0152 + 45 0.00305 + 46 0.00305 + 47 0.0305 + + 74 5 2 0 + 41 0.2 + 47 0.8 + + 49 628 28 4 + 0 0.0669 + 2 0.0366 + 3 0.00318 + 4 0.00637 + 7 0.00478 + 8 0.0175 + 9 0.00159 + 12 0.00159 + 13 0.113 + 14 0.086 + 15 0.0111 + 19 0.00955 + 21 0.035 + 22 0.00159 + 24 0.00955 + 28 0.0159 + 29 0.0287 + 30 0.0143 + 31 0.0748 + 32 0.00478 + 33 0.0143 + 37 0.00159 + 41 0.318 + 42 0.0382 + 44 0.00318 + 45 0.0175 + 46 0.00478 + 47 0.0589 + + 21 11 6 0 + 0 0.273 + 2 0.0909 + 13 0.0909 + 14 0.182 + 21 0.0909 + 41 0.273 + + 26 36 15 0 + 0 0.0278 + 2 0.0833 + 8 0.0833 + 13 0.306 + 14 0.0833 + 15 0.0278 + 19 0.0278 + 21 0.0556 + 28 0.0278 + 29 0.0556 + 30 0.0278 + 31 0.0833 + 33 0.0278 + 41 0.0556 + 44 0.0278 + + 48 1 1 0 + 7 1 + + 57 6 3 0 + 21 0.333 + 33 0.167 + 42 0.5 + + 50 17 10 0 + 8 0.176 + 13 0.118 + 14 0.0588 + 24 0.0588 + 28 0.0588 + 30 0.0588 + 31 0.118 + 33 0.0588 + 41 0.235 + 45 0.0588 + + 55 142 21 4 + 0 0.134 + 2 0.0563 + 3 0.00704 + 7 0.141 + 8 0.0141 + 13 0.0775 + 14 0.0493 + 15 0.00704 + 21 0.0423 + 24 0.00704 + 26 0.00704 + 28 0.0423 + 29 0.0423 + 30 0.00704 + 31 0.0704 + 32 0.00704 + 33 0.0282 + 41 0.162 + 42 0.0352 + 46 0.00704 + 47 0.0563 + + 41 2 2 0 + 30 0.5 + 41 0.5 + + 47 5 3 0 + 2 0.2 + 3 0.2 + 7 0.6 + + 55 3 2 0 + 8 0.333 + 41 0.667 + + 57 5 4 0 + 2 0.2 + 13 0.2 + 26 0.2 + 41 0.4 + + 57 1537 25 1 + 0 0.0104 + 2 0.013 + 3 0.00195 + 4 0.00846 + 7 0.00195 + 8 0.028 + 9 0.0026 + 12 0.000651 + 13 0.108 + 14 0.0638 + 15 0.0111 + 19 0.0039 + 21 0.0592 + 24 0.0026 + 28 0.0377 + 29 0.0163 + 30 0.318 + 31 0.249 + 32 0.00911 + 33 0.0117 + 41 0.0176 + 42 0.00846 + 45 0.00195 + 46 0.0013 + 47 0.013 + + 7 8 4 0 + 0 0.125 + 4 0.125 + 31 0.125 + 41 0.625 + + 74 5 2 0 + 41 0.2 + 47 0.8 + +58 7648 40 29 + 0 0.00628 + 2 0.0209 + 3 0.0234 + 4 0.0068 + 6 0.00157 + 7 0.0111 + 8 0.028 + 9 0.00144 + 10 0.00105 + 11 0.000262 + 12 0.00144 + 13 0.168 + 14 0.125 + 15 0.117 + 16 0.00405 + 18 0.00131 + 19 0.00902 + 20 0.000785 + 21 0.0369 + 22 0.00105 + 23 0.000262 + 24 0.00105 + 26 0.000785 + 28 0.00732 + 29 0.0034 + 30 0.00288 + 31 0.011 + 32 0.00366 + 33 0.00484 + 34 0.00209 + 35 0.000523 + 37 0.00235 + 40 0.0123 + 41 0.151 + 42 0.0554 + 43 0.000523 + 44 0.132 + 45 0.00392 + 46 0.036 + 47 0.00314 + + 0 2 1 0 + 2 1 + + 2 101 4 0 + 15 0.0099 + 41 0.327 + 42 0.406 + 44 0.257 + + 4 1 1 0 + 28 1 + + 7 6 3 0 + 41 0.333 + 42 0.167 + 44 0.5 + + 8 16 2 0 + 2 0.125 + 44 0.875 + + 13 22 5 0 + 2 0.0909 + 8 0.136 + 13 0.182 + 15 0.0455 + 44 0.545 + + 15 36 5 0 + 2 0.0556 + 15 0.139 + 41 0.0278 + 44 0.75 + 45 0.0278 + + 21 14 6 0 + 2 0.214 + 7 0.143 + 12 0.0714 + 41 0.143 + 42 0.286 + 44 0.143 + + 28 3 2 0 + 2 0.333 + 44 0.667 + + 32 2 1 0 + 2 1 + + 41 1008 32 9 + 0 0.0129 + 2 0.0595 + 3 0.0188 + 4 0.0109 + 6 0.00198 + 7 0.0218 + 8 0.0506 + 9 0.00298 + 10 0.000992 + 11 0.000992 + 12 0.00198 + 13 0.309 + 14 0.143 + 15 0.143 + 16 0.00397 + 18 0.00198 + 19 0.0139 + 21 0.101 + 22 0.00397 + 23 0.000992 + 24 0.00397 + 26 0.00198 + 28 0.0109 + 29 0.00893 + 30 0.00496 + 31 0.0268 + 32 0.00794 + 33 0.0129 + 34 0.00694 + 35 0.00198 + 37 0.00794 + 43 0.000992 + + 2 23 12 0 + 0 0.0435 + 3 0.0435 + 4 0.0435 + 6 0.0435 + 8 0.087 + 13 0.261 + 14 0.087 + 15 0.087 + 21 0.087 + 31 0.087 + 32 0.0435 + 33 0.087 + + 46 99 15 0 + 0 0.0202 + 4 0.0202 + 7 0.0202 + 8 0.121 + 13 0.424 + 14 0.152 + 15 0.0606 + 16 0.0101 + 19 0.0303 + 21 0.0505 + 24 0.0101 + 28 0.0303 + 31 0.0202 + 32 0.0202 + 43 0.0101 + + 49 51 12 0 + 0 0.0196 + 2 0.294 + 3 0.0196 + 7 0.0588 + 8 0.0784 + 13 0.216 + 14 0.118 + 15 0.0588 + 21 0.0588 + 28 0.0196 + 29 0.0196 + 31 0.0392 + + 52 6 3 0 + 7 0.5 + 13 0.333 + 30 0.167 + + 55 139 10 0 + 0 0.0144 + 3 0.0216 + 8 0.0144 + 10 0.00719 + 13 0.122 + 14 0.129 + 15 0.619 + 21 0.0576 + 31 0.00719 + 33 0.00719 + + 57 77 19 0 + 0 0.013 + 2 0.26 + 7 0.0649 + 8 0.039 + 13 0.221 + 14 0.104 + 15 0.0779 + 16 0.039 + 21 0.026 + 22 0.013 + 26 0.013 + 28 0.013 + 29 0.013 + 30 0.013 + 31 0.013 + 33 0.026 + 34 0.013 + 35 0.013 + 37 0.026 + + 62 507 29 0 + 0 0.00789 + 2 0.0375 + 3 0.0256 + 4 0.0158 + 6 0.00197 + 7 0.00986 + 8 0.0375 + 9 0.00592 + 11 0.00197 + 12 0.00197 + 13 0.349 + 14 0.168 + 15 0.0671 + 18 0.00394 + 19 0.0158 + 21 0.142 + 22 0.00592 + 23 0.00197 + 24 0.00592 + 26 0.00197 + 28 0.00789 + 29 0.00986 + 30 0.00394 + 31 0.0355 + 32 0.00789 + 33 0.00986 + 34 0.00592 + 35 0.00197 + 37 0.00986 + + 64 50 16 0 + 0 0.02 + 2 0.08 + 7 0.04 + 8 0.12 + 12 0.02 + 13 0.32 + 14 0.06 + 15 0.04 + 19 0.02 + 21 0.06 + 28 0.04 + 29 0.02 + 32 0.02 + 33 0.06 + 34 0.06 + 37 0.02 + + 66 45 12 0 + 2 0.0444 + 3 0.0222 + 7 0.0444 + 8 0.0222 + 13 0.378 + 14 0.156 + 15 0.0889 + 19 0.0444 + 21 0.133 + 29 0.0222 + 30 0.0222 + 31 0.0222 + + 42 412 25 9 + 0 0.00971 + 2 0.0146 + 3 0.034 + 4 0.00485 + 7 0.0121 + 8 0.0558 + 9 0.00243 + 10 0.00243 + 12 0.00243 + 13 0.354 + 14 0.26 + 15 0.102 + 16 0.00971 + 18 0.00243 + 19 0.00485 + 21 0.034 + 26 0.00243 + 28 0.017 + 29 0.00485 + 30 0.00485 + 31 0.0243 + 32 0.00971 + 33 0.00728 + 43 0.00243 + 46 0.0218 + + 2 40 13 0 + 3 0.05 + 4 0.025 + 8 0.125 + 13 0.325 + 14 0.025 + 15 0.075 + 21 0.1 + 28 0.025 + 29 0.05 + 30 0.05 + 31 0.05 + 32 0.075 + 46 0.025 + + 48 11 7 0 + 2 0.0909 + 3 0.0909 + 7 0.0909 + 8 0.0909 + 13 0.182 + 14 0.364 + 15 0.0909 + + 49 27 10 0 + 0 0.037 + 3 0.037 + 8 0.0741 + 12 0.037 + 13 0.481 + 14 0.148 + 15 0.0741 + 18 0.037 + 21 0.037 + 31 0.037 + + 51 3 3 0 + 13 0.333 + 15 0.333 + 26 0.333 + + 55 119 16 0 + 0 0.0168 + 2 0.0084 + 3 0.042 + 7 0.0084 + 8 0.0168 + 9 0.0084 + 13 0.345 + 14 0.319 + 15 0.118 + 16 0.0168 + 19 0.0084 + 21 0.0336 + 28 0.0168 + 31 0.0084 + 43 0.0084 + 46 0.0252 + + 57 81 15 0 + 0 0.0123 + 2 0.037 + 3 0.0617 + 4 0.0123 + 7 0.0247 + 8 0.0247 + 10 0.0123 + 13 0.309 + 14 0.321 + 15 0.037 + 21 0.0494 + 28 0.0123 + 31 0.037 + 33 0.0123 + 46 0.037 + + 62 65 12 0 + 2 0.0154 + 7 0.0154 + 8 0.138 + 13 0.385 + 14 0.277 + 15 0.0308 + 19 0.0154 + 21 0.0154 + 28 0.0154 + 31 0.0462 + 33 0.0308 + 46 0.0154 + + 64 38 8 0 + 8 0.0263 + 13 0.368 + 14 0.158 + 15 0.316 + 16 0.0526 + 28 0.0263 + 32 0.0263 + 46 0.0263 + + 69 15 3 0 + 13 0.467 + 14 0.333 + 15 0.2 + + 44 1007 29 18 + 0 0.00794 + 2 0.000993 + 3 0.0566 + 4 0.0119 + 6 0.00397 + 7 0.0129 + 8 0.0298 + 9 0.000993 + 10 0.000993 + 12 0.00199 + 13 0.183 + 14 0.229 + 15 0.291 + 16 0.00695 + 18 0.00199 + 19 0.0139 + 20 0.00298 + 21 0.00894 + 28 0.00894 + 29 0.00199 + 30 0.00397 + 31 0.00497 + 32 0.00199 + 33 0.00199 + 37 0.000993 + 40 0.0467 + 41 0.00993 + 46 0.0437 + 47 0.00894 + + 2 26 9 0 + 0 0.0769 + 6 0.0385 + 13 0.423 + 14 0.192 + 15 0.0769 + 16 0.0385 + 28 0.0385 + 30 0.0769 + 31 0.0385 + + 8 14 7 0 + 4 0.214 + 7 0.214 + 8 0.214 + 9 0.0714 + 13 0.143 + 15 0.0714 + 40 0.0714 + + 9 1 1 0 + 20 1 + + 13 12 7 0 + 3 0.167 + 4 0.333 + 7 0.167 + 10 0.0833 + 13 0.0833 + 15 0.0833 + 31 0.0833 + + 14 2 2 0 + 8 0.5 + 41 0.5 + + 15 27 6 0 + 4 0.111 + 15 0.667 + 16 0.037 + 19 0.0741 + 28 0.037 + 40 0.0741 + + 21 2 2 0 + 0 0.5 + 14 0.5 + + 28 2 1 0 + 28 1 + + 45 24 5 0 + 13 0.375 + 14 0.0417 + 15 0.458 + 18 0.0417 + 46 0.0833 + + 48 24 10 0 + 0 0.0417 + 2 0.0417 + 3 0.25 + 4 0.0417 + 8 0.125 + 13 0.333 + 14 0.0417 + 15 0.0417 + 16 0.0417 + 40 0.0417 + + 49 12 7 0 + 0 0.0833 + 8 0.25 + 12 0.167 + 13 0.25 + 15 0.0833 + 33 0.0833 + 47 0.0833 + + 51 3 3 0 + 8 0.333 + 15 0.333 + 47 0.333 + + 52 5 2 0 + 13 0.8 + 21 0.2 + + 55 676 20 0 + 3 0.0621 + 4 0.00148 + 6 0.00444 + 7 0.00888 + 8 0.00888 + 13 0.129 + 14 0.266 + 15 0.354 + 16 0.00592 + 18 0.00148 + 19 0.0163 + 20 0.00296 + 21 0.00296 + 28 0.00296 + 29 0.00148 + 31 0.00148 + 40 0.0636 + 41 0.00888 + 46 0.0562 + 47 0.00148 + + 57 52 14 0 + 0 0.0192 + 3 0.0192 + 8 0.0962 + 13 0.385 + 14 0.25 + 15 0.0385 + 19 0.0192 + 21 0.0385 + 28 0.0192 + 29 0.0192 + 30 0.0192 + 31 0.0385 + 41 0.0192 + 46 0.0192 + + 62 63 14 0 + 0 0.0317 + 3 0.0476 + 7 0.0159 + 8 0.0794 + 13 0.302 + 14 0.159 + 15 0.111 + 21 0.0635 + 28 0.0159 + 32 0.0317 + 33 0.0159 + 37 0.0159 + 46 0.0159 + 47 0.0952 + + 64 23 7 0 + 3 0.087 + 8 0.0435 + 13 0.565 + 14 0.174 + 28 0.0435 + 41 0.0435 + 46 0.0435 + + 69 25 5 0 + 3 0.04 + 13 0.16 + 14 0.56 + 15 0.2 + 30 0.04 + + 45 30 4 0 + 41 0.0667 + 42 0.1 + 44 0.8 + 46 0.0333 + + 46 105 4 1 + 13 0.00952 + 33 0.00952 + 41 0.962 + 46 0.019 + + 42 1 1 0 + 13 1 + + 47 2420 38 11 + 0 0.00909 + 2 0.0298 + 3 0.0364 + 4 0.0107 + 6 0.00248 + 7 0.0165 + 8 0.0434 + 9 0.00207 + 10 0.00124 + 11 0.000413 + 12 0.00207 + 13 0.26 + 14 0.194 + 15 0.163 + 16 0.0062 + 18 0.00207 + 19 0.012 + 20 0.00124 + 21 0.0496 + 22 0.00165 + 23 0.000413 + 24 0.00165 + 26 0.00124 + 28 0.0116 + 29 0.00537 + 30 0.00455 + 31 0.0174 + 32 0.00579 + 33 0.00744 + 34 0.00331 + 35 0.000826 + 37 0.00372 + 40 0.0194 + 41 0.0306 + 42 0.00248 + 43 0.000826 + 46 0.0351 + 47 0.00496 + + 2 12 3 0 + 15 0.0833 + 41 0.833 + 42 0.0833 + + 41 884 32 0 + 0 0.0113 + 2 0.0679 + 3 0.0192 + 4 0.0124 + 6 0.00226 + 7 0.0249 + 8 0.0577 + 9 0.00339 + 10 0.00113 + 11 0.00113 + 12 0.00226 + 13 0.337 + 14 0.145 + 15 0.0679 + 16 0.00339 + 18 0.00226 + 19 0.0158 + 21 0.11 + 22 0.00452 + 23 0.00113 + 24 0.00452 + 26 0.00226 + 28 0.0124 + 29 0.0102 + 30 0.00566 + 31 0.0305 + 32 0.00905 + 33 0.0147 + 34 0.00792 + 35 0.00226 + 37 0.00905 + 43 0.00113 + + 42 407 25 0 + 0 0.00983 + 2 0.0147 + 3 0.0344 + 4 0.00491 + 7 0.0123 + 8 0.0565 + 9 0.00246 + 10 0.00246 + 12 0.00246 + 13 0.359 + 14 0.263 + 15 0.0958 + 16 0.00983 + 18 0.00246 + 19 0.00246 + 21 0.0344 + 26 0.00246 + 28 0.0172 + 29 0.00491 + 30 0.00491 + 31 0.0246 + 32 0.00983 + 33 0.00737 + 43 0.00246 + 46 0.0197 + + 44 1007 29 0 + 0 0.00794 + 2 0.000993 + 3 0.0566 + 4 0.0119 + 6 0.00397 + 7 0.0129 + 8 0.0298 + 9 0.000993 + 10 0.000993 + 12 0.00199 + 13 0.183 + 14 0.229 + 15 0.291 + 16 0.00695 + 18 0.00199 + 19 0.0139 + 20 0.00298 + 21 0.00894 + 28 0.00894 + 29 0.00199 + 30 0.00397 + 31 0.00497 + 32 0.00199 + 33 0.00199 + 37 0.000993 + 40 0.0467 + 41 0.00993 + 46 0.0437 + 47 0.00894 + + 49 6 3 0 + 41 0.667 + 42 0.167 + 46 0.167 + + 51 1 1 0 + 42 1 + + 55 5 3 0 + 41 0.4 + 46 0.4 + 47 0.2 + + 57 9 5 0 + 2 0.333 + 14 0.111 + 15 0.111 + 41 0.333 + 42 0.111 + + 62 70 9 0 + 4 0.0143 + 8 0.0143 + 14 0.0286 + 16 0.0143 + 34 0.0143 + 41 0.557 + 42 0.0286 + 46 0.3 + 47 0.0286 + + 64 3 2 0 + 2 0.667 + 46 0.333 + + 66 12 2 0 + 41 0.333 + 46 0.667 + + 48 48 7 0 + 0 0.0208 + 13 0.0417 + 21 0.146 + 41 0.0208 + 42 0.229 + 44 0.5 + 45 0.0417 + + 49 102 7 3 + 7 0.0098 + 14 0.0098 + 21 0.0392 + 41 0.539 + 42 0.275 + 44 0.118 + 46 0.0098 + + 41 4 1 0 + 42 1 + + 47 57 5 0 + 14 0.0175 + 21 0.0526 + 41 0.684 + 42 0.14 + 44 0.105 + + 48 6 3 0 + 21 0.167 + 41 0.333 + 44 0.5 + + 51 8 3 0 + 41 0.125 + 42 0.5 + 44 0.375 + + 52 12 3 0 + 41 0.5 + 42 0.0833 + 44 0.417 + + 55 985 13 2 + 3 0.00102 + 7 0.00203 + 8 0.00102 + 9 0.00102 + 13 0.00102 + 19 0.00203 + 21 0.0223 + 41 0.143 + 42 0.121 + 44 0.686 + 45 0.0122 + 46 0.00609 + 47 0.00102 + + 41 101 4 0 + 41 0.109 + 42 0.0297 + 44 0.851 + 46 0.0099 + + 69 25 2 0 + 41 0.96 + 46 0.04 + + 57 225 9 1 + 2 0.0178 + 13 0.00889 + 14 0.00889 + 15 0.00444 + 41 0.356 + 42 0.364 + 44 0.231 + 45 0.00444 + 46 0.00444 + + 41 12 2 0 + 42 0.917 + 44 0.0833 + + 58 4 3 0 + 13 0.5 + 21 0.25 + 46 0.25 + + 62 781 11 2 + 4 0.00128 + 8 0.00128 + 14 0.00256 + 16 0.00128 + 34 0.00128 + 41 0.699 + 42 0.0858 + 44 0.0807 + 45 0.0128 + 46 0.111 + 47 0.00256 + + 41 5 3 0 + 41 0.2 + 42 0.4 + 45 0.4 + + 46 2 1 0 + 45 1 + + 64 117 8 0 + 2 0.0171 + 10 0.00855 + 15 0.00855 + 21 0.00855 + 41 0.427 + 42 0.325 + 44 0.197 + 46 0.00855 + + 66 86 2 0 + 41 0.57 + 46 0.43 + + 67 6 3 0 + 41 0.167 + 44 0.167 + 45 0.667 + + 68 4 3 0 + 21 0.25 + 42 0.5 + 44 0.25 + + 69 68 9 0 + 10 0.0147 + 13 0.0294 + 14 0.0441 + 15 0.176 + 19 0.118 + 21 0.0147 + 41 0.0147 + 42 0.221 + 44 0.368 + +59 5288 19 7 + 0 0.00265 + 2 0.000378 + 3 0.000378 + 4 0.00151 + 7 0.000378 + 8 0.00227 + 9 0.000378 + 13 0.0223 + 14 0.0129 + 15 0.00227 + 19 0.0318 + 21 0.000756 + 24 0.000756 + 28 0.326 + 29 0.179 + 30 0.151 + 31 0.169 + 32 0.0416 + 33 0.0552 + + 2 2 1 0 + 24 1 + + 7 65 11 0 + 8 0.0154 + 13 0.0308 + 14 0.0154 + 15 0.0154 + 19 0.0769 + 28 0.154 + 29 0.277 + 30 0.108 + 31 0.215 + 32 0.0308 + 33 0.0615 + + 8 6 4 0 + 8 0.167 + 14 0.167 + 28 0.5 + 31 0.167 + + 21 84 12 0 + 0 0.0119 + 3 0.0119 + 13 0.0833 + 14 0.0238 + 15 0.0119 + 19 0.0714 + 28 0.238 + 29 0.107 + 30 0.155 + 31 0.226 + 32 0.0238 + 33 0.0357 + + 23 1 1 0 + 0 1 + + 24 2483 18 1 + 0 0.00201 + 2 0.000805 + 4 0.00161 + 7 0.000403 + 8 0.00161 + 9 0.000403 + 13 0.0201 + 14 0.0117 + 15 0.00161 + 19 0.0294 + 21 0.000805 + 24 0.000403 + 28 0.333 + 29 0.178 + 30 0.153 + 31 0.166 + 32 0.0427 + 33 0.056 + + 2 2 1 0 + 13 1 + + 47 2642 18 4 + 0 0.00265 + 3 0.000379 + 4 0.00151 + 7 0.000379 + 8 0.00227 + 9 0.000379 + 13 0.0223 + 14 0.0129 + 15 0.00227 + 19 0.0318 + 21 0.000757 + 24 0.000379 + 28 0.326 + 29 0.179 + 30 0.151 + 31 0.169 + 32 0.0416 + 33 0.0553 + + 7 65 11 0 + 8 0.0154 + 13 0.0308 + 14 0.0154 + 15 0.0154 + 19 0.0769 + 28 0.154 + 29 0.277 + 30 0.108 + 31 0.215 + 32 0.0308 + 33 0.0615 + + 8 6 4 0 + 8 0.167 + 14 0.167 + 28 0.5 + 31 0.167 + + 21 84 12 0 + 0 0.0119 + 3 0.0119 + 13 0.0833 + 14 0.0238 + 15 0.0119 + 19 0.0714 + 28 0.238 + 29 0.107 + 30 0.155 + 31 0.226 + 32 0.0238 + 33 0.0357 + + 23 1 1 0 + 0 1 + +60 27233 41 25 + 0 0.0313 + 1 7.34e-05 + 2 0.0264 + 3 0.111 + 4 0.0584 + 7 0.296 + 8 0.0205 + 9 0.0164 + 10 0.0061 + 13 0.0187 + 14 0.00639 + 15 0.00323 + 16 0.000147 + 17 0.000257 + 18 0.00804 + 19 0.000808 + 20 0.00463 + 21 0.0559 + 22 0.00382 + 23 7.34e-05 + 24 0.0051 + 25 0.00011 + 26 0.11 + 28 0.038 + 29 0.0476 + 30 0.0154 + 31 0.0166 + 32 0.00543 + 33 0.0142 + 34 0.000441 + 36 0.000147 + 37 0.00125 + 38 0.0047 + 39 0.00683 + 41 0.0143 + 42 0.0234 + 43 0.000184 + 44 0.0134 + 45 0.00114 + 46 0.00022 + 47 0.0135 + + 2 230 9 4 + 3 0.626 + 4 0.0304 + 7 0.00435 + 8 0.00435 + 13 0.265 + 14 0.0565 + 31 0.00435 + 41 0.00435 + 43 0.00435 + + 3 94 4 0 + 3 0.543 + 4 0.0426 + 13 0.404 + 31 0.0106 + + 7 4 3 0 + 3 0.25 + 4 0.5 + 7 0.25 + + 9 51 3 0 + 3 0.627 + 13 0.176 + 14 0.196 + + 39 43 5 0 + 3 0.907 + 4 0.0233 + 14 0.0233 + 41 0.0233 + 43 0.0233 + + 3 6618 35 9 + 0 0.011 + 2 0.0193 + 3 0.317 + 4 0.0252 + 7 0.221 + 8 0.0113 + 9 0.000151 + 10 0.0192 + 13 0.0119 + 14 0.00287 + 15 0.00181 + 16 0.000151 + 18 0.00468 + 19 0.000302 + 20 0.00181 + 21 0.0979 + 22 0.000151 + 24 0.00121 + 25 0.000453 + 26 0.116 + 28 0.00861 + 29 0.0323 + 30 0.00378 + 31 0.00423 + 32 0.00212 + 33 0.00242 + 34 0.000453 + 38 0.0192 + 39 0.0264 + 41 0.0068 + 42 0.0258 + 43 0.000151 + 44 0.000453 + 45 0.000907 + 47 0.00181 + + 2 115 19 0 + 0 0.0261 + 2 0.0435 + 3 0.209 + 4 0.0609 + 7 0.243 + 8 0.0435 + 13 0.0174 + 14 0.0087 + 19 0.0087 + 21 0.0261 + 26 0.0087 + 28 0.0261 + 29 0.0174 + 31 0.0261 + 32 0.0087 + 33 0.0087 + 38 0.0087 + 39 0.191 + 45 0.0174 + + 3 2100 30 0 + 0 0.0229 + 2 0.0143 + 4 0.0305 + 7 0.277 + 8 0.0162 + 10 0.00143 + 13 0.00286 + 14 0.00667 + 15 0.00524 + 16 0.000476 + 18 0.0138 + 20 0.00571 + 21 0.0419 + 22 0.000476 + 24 0.00238 + 25 0.00143 + 26 0.224 + 28 0.0181 + 29 0.0929 + 30 0.00857 + 31 0.00905 + 32 0.000952 + 33 0.00476 + 34 0.00143 + 38 0.0576 + 39 0.0376 + 41 0.0171 + 42 0.0786 + 44 0.000476 + 47 0.00571 + + 7 33 11 0 + 0 0.0303 + 2 0.0606 + 3 0.0303 + 7 0.303 + 13 0.0303 + 21 0.303 + 31 0.0303 + 32 0.0606 + 33 0.0303 + 41 0.0909 + 42 0.0303 + + 8 4 2 0 + 3 0.5 + 4 0.5 + + 9 13 8 0 + 0 0.154 + 2 0.0769 + 10 0.0769 + 28 0.0769 + 29 0.231 + 30 0.0769 + 32 0.0769 + 41 0.231 + + 13 293 22 0 + 0 0.0205 + 2 0.0751 + 3 0.294 + 4 0.0546 + 7 0.171 + 8 0.0102 + 10 0.00341 + 13 0.0102 + 14 0.00683 + 15 0.00341 + 18 0.00341 + 21 0.041 + 26 0.232 + 28 0.0137 + 29 0.00683 + 30 0.00683 + 31 0.0102 + 32 0.0137 + 33 0.00683 + 39 0.00683 + 42 0.00341 + 45 0.00683 + + 14 71 14 0 + 0 0.0986 + 2 0.127 + 3 0.0423 + 4 0.0141 + 7 0.254 + 14 0.0141 + 21 0.127 + 26 0.169 + 28 0.0563 + 29 0.0141 + 41 0.0282 + 42 0.0282 + 44 0.0141 + 45 0.0141 + + 26 310 22 0 + 0 0.0194 + 3 0.171 + 4 0.0258 + 7 0.155 + 8 0.0194 + 9 0.00323 + 10 0.00323 + 13 0.216 + 19 0.00323 + 21 0.0419 + 24 0.00645 + 28 0.0226 + 29 0.0323 + 30 0.0129 + 31 0.00323 + 32 0.0129 + 33 0.00645 + 39 0.232 + 42 0.00323 + 43 0.00323 + 44 0.00323 + 45 0.00323 + + 47 3678 16 0 + 2 0.016 + 3 0.525 + 4 0.0188 + 7 0.198 + 8 0.00734 + 10 0.0329 + 14 0.000272 + 18 0.000272 + 21 0.139 + 24 0.000272 + 26 0.0593 + 29 0.000272 + 31 0.000272 + 38 0.00136 + 41 0.000272 + 42 0.000272 + + 4 242 23 7 + 0 0.0124 + 2 0.0248 + 3 0.00413 + 4 0.00413 + 7 0.343 + 10 0.0289 + 13 0.0207 + 14 0.00413 + 17 0.0289 + 21 0.165 + 24 0.0165 + 26 0.0331 + 28 0.0702 + 29 0.0702 + 30 0.0165 + 31 0.0248 + 32 0.00413 + 33 0.0289 + 41 0.00826 + 42 0.00826 + 44 0.00413 + 46 0.00413 + 47 0.0744 + + 2 7 5 0 + 7 0.286 + 29 0.286 + 31 0.143 + 32 0.143 + 47 0.143 + + 3 79 19 0 + 0 0.0253 + 2 0.038 + 3 0.0127 + 7 0.278 + 10 0.0253 + 13 0.0506 + 17 0.0127 + 21 0.0127 + 24 0.0127 + 26 0.0253 + 28 0.0633 + 29 0.127 + 30 0.0253 + 33 0.038 + 41 0.0253 + 42 0.0253 + 44 0.0127 + 46 0.0127 + 47 0.177 + + 8 39 9 0 + 7 0.154 + 10 0.0769 + 13 0.0256 + 14 0.0256 + 21 0.513 + 26 0.0769 + 28 0.0769 + 29 0.0256 + 30 0.0256 + + 9 7 3 0 + 7 0.429 + 26 0.429 + 28 0.143 + + 13 35 12 0 + 0 0.0286 + 2 0.0571 + 4 0.0286 + 7 0.429 + 17 0.114 + 21 0.143 + 24 0.0286 + 28 0.0286 + 29 0.0286 + 31 0.0286 + 33 0.0571 + 47 0.0286 + + 39 24 9 0 + 7 0.208 + 17 0.0417 + 21 0.0833 + 28 0.25 + 29 0.0833 + 30 0.0417 + 31 0.167 + 33 0.0833 + 47 0.0417 + + 47 41 6 0 + 7 0.634 + 10 0.0488 + 17 0.0244 + 21 0.244 + 24 0.0244 + 47 0.0244 + + 7 1759 31 14 + 0 0.0352 + 1 0.000569 + 2 0.0222 + 3 0.0188 + 4 0.00227 + 7 0.204 + 8 0.0824 + 9 0.252 + 10 0.00114 + 13 0.00569 + 14 0.0131 + 15 0.00114 + 16 0.000569 + 19 0.00114 + 21 0.0495 + 22 0.0563 + 24 0.00682 + 26 0.0324 + 28 0.0591 + 29 0.0233 + 30 0.021 + 31 0.0171 + 32 0.00625 + 33 0.0347 + 37 0.00625 + 41 0.0148 + 42 0.00455 + 44 0.00284 + 45 0.00227 + 46 0.00114 + 47 0.0222 + + 3 910 26 0 + 0 0.0297 + 2 0.0176 + 3 0.0275 + 4 0.0022 + 7 0.137 + 8 0.112 + 9 0.289 + 13 0.0011 + 14 0.0044 + 15 0.0011 + 16 0.0011 + 21 0.0593 + 22 0.0725 + 24 0.0022 + 26 0.0396 + 28 0.0418 + 29 0.0286 + 30 0.0231 + 31 0.0154 + 32 0.0044 + 33 0.0396 + 37 0.0011 + 41 0.0187 + 42 0.00549 + 45 0.0011 + 47 0.0242 + + 4 45 17 0 + 0 0.0222 + 3 0.0444 + 4 0.0222 + 7 0.0889 + 8 0.0222 + 9 0.333 + 10 0.0222 + 13 0.0222 + 14 0.0444 + 21 0.0444 + 22 0.156 + 24 0.0222 + 29 0.0222 + 31 0.0444 + 33 0.0222 + 41 0.0222 + 42 0.0444 + + 7 5 2 0 + 3 0.8 + 9 0.2 + + 8 11 4 0 + 8 0.0909 + 14 0.364 + 21 0.273 + 22 0.273 + + 10 161 20 0 + 0 0.0435 + 1 0.00621 + 2 0.0497 + 7 0.404 + 8 0.00621 + 13 0.00621 + 14 0.00621 + 21 0.00621 + 24 0.0248 + 26 0.0248 + 28 0.137 + 29 0.0248 + 30 0.0435 + 31 0.0248 + 32 0.00621 + 33 0.0186 + 37 0.0621 + 41 0.0248 + 45 0.00621 + 47 0.0745 + + 13 26 13 0 + 0 0.115 + 4 0.0385 + 9 0.346 + 13 0.0385 + 21 0.0769 + 22 0.0769 + 26 0.0385 + 30 0.0385 + 31 0.0385 + 33 0.0769 + 42 0.0385 + 45 0.0385 + 47 0.0385 + + 14 16 5 0 + 2 0.125 + 7 0.0625 + 9 0.375 + 14 0.375 + 46 0.0625 + + 17 27 10 0 + 0 0.0741 + 7 0.111 + 9 0.481 + 21 0.0741 + 22 0.0741 + 26 0.037 + 28 0.037 + 30 0.037 + 32 0.037 + 45 0.037 + + 21 16 8 0 + 0 0.125 + 3 0.0625 + 8 0.0625 + 9 0.438 + 13 0.0625 + 21 0.0625 + 22 0.0625 + 41 0.125 + + 26 53 12 0 + 7 0.472 + 13 0.0377 + 14 0.0566 + 19 0.0189 + 21 0.0189 + 24 0.0189 + 28 0.226 + 31 0.0189 + 32 0.0377 + 33 0.0377 + 41 0.0377 + 47 0.0189 + + 28 2 1 0 + 22 1 + + 38 10 8 0 + 2 0.2 + 8 0.1 + 9 0.1 + 21 0.1 + 26 0.1 + 28 0.2 + 29 0.1 + 33 0.1 + + 39 470 23 0 + 0 0.0404 + 2 0.0213 + 7 0.287 + 8 0.0809 + 9 0.27 + 10 0.00213 + 13 0.00638 + 14 0.00638 + 15 0.00213 + 19 0.00213 + 21 0.0404 + 22 0.034 + 24 0.00851 + 26 0.0298 + 28 0.0596 + 29 0.0191 + 30 0.0149 + 31 0.0149 + 32 0.00638 + 33 0.034 + 44 0.0106 + 46 0.00213 + 47 0.00638 + + 47 3 3 0 + 2 0.333 + 9 0.333 + 21 0.333 + + 8 256 17 9 + 0 0.0117 + 2 0.00391 + 3 0.0156 + 4 0.195 + 7 0.117 + 10 0.00781 + 15 0.00391 + 21 0.594 + 22 0.00391 + 26 0.00781 + 28 0.00391 + 29 0.00391 + 30 0.00781 + 31 0.00781 + 33 0.00781 + 39 0.00391 + 41 0.00391 + + 3 37 9 0 + 0 0.0541 + 4 0.459 + 7 0.297 + 26 0.027 + 28 0.027 + 29 0.027 + 30 0.027 + 31 0.0541 + 33 0.027 + + 7 140 4 0 + 0 0.00714 + 4 0.00714 + 7 0.00714 + 21 0.979 + + 13 4 3 0 + 4 0.5 + 7 0.25 + 41 0.25 + + 14 3 3 0 + 2 0.333 + 7 0.333 + 33 0.333 + + 21 1 1 0 + 30 1 + + 26 4 3 0 + 4 0.25 + 7 0.5 + 15 0.25 + + 39 8 3 0 + 4 0.625 + 7 0.25 + 21 0.125 + + 41 1 1 0 + 39 1 + + 47 56 7 0 + 3 0.0714 + 4 0.411 + 7 0.196 + 10 0.0357 + 21 0.25 + 22 0.0179 + 26 0.0179 + + 9 511 25 2 + 0 0.0509 + 2 0.133 + 3 0.0254 + 4 0.0274 + 7 0.29 + 8 0.00196 + 13 0.0157 + 14 0.00783 + 15 0.00391 + 19 0.00196 + 20 0.00196 + 21 0.047 + 24 0.00391 + 26 0.0391 + 28 0.0685 + 29 0.0705 + 30 0.0352 + 31 0.0391 + 32 0.00587 + 33 0.0235 + 37 0.00391 + 41 0.0509 + 42 0.0157 + 45 0.00196 + 47 0.0352 + + 7 443 23 0 + 0 0.0587 + 2 0.0384 + 4 0.0316 + 7 0.334 + 13 0.0158 + 14 0.00677 + 15 0.00451 + 19 0.00226 + 20 0.00226 + 21 0.0519 + 24 0.00451 + 26 0.0451 + 28 0.079 + 29 0.0813 + 30 0.0406 + 31 0.0451 + 32 0.00677 + 33 0.0271 + 37 0.00451 + 41 0.0587 + 42 0.0181 + 45 0.00226 + 47 0.0406 + + 47 67 5 0 + 2 0.761 + 3 0.194 + 8 0.0149 + 14 0.0149 + 21 0.0149 + + 10 163 2 0 + 2 0.00613 + 7 0.994 + + 13 383 11 5 + 3 0.765 + 4 0.094 + 7 0.0731 + 8 0.0104 + 10 0.00522 + 20 0.00261 + 21 0.0339 + 24 0.00261 + 26 0.00783 + 33 0.00261 + 42 0.00261 + + 2 23 1 0 + 3 1 + + 7 3 2 0 + 4 0.667 + 7 0.333 + + 26 108 3 0 + 3 0.972 + 7 0.0185 + 21 0.00926 + + 39 1 1 0 + 20 1 + + 47 248 10 0 + 3 0.665 + 4 0.137 + 7 0.101 + 8 0.0161 + 10 0.00806 + 21 0.0484 + 24 0.00403 + 26 0.0121 + 33 0.00403 + 42 0.00403 + + 14 104 11 4 + 2 0.00962 + 3 0.683 + 4 0.00962 + 7 0.173 + 8 0.0288 + 15 0.00962 + 21 0.0385 + 26 0.00962 + 28 0.0192 + 41 0.00962 + 45 0.00962 + + 3 1 1 0 + 4 1 + + 7 10 6 0 + 2 0.1 + 3 0.4 + 7 0.1 + 28 0.2 + 41 0.1 + 45 0.1 + + 47 82 4 0 + 3 0.707 + 7 0.207 + 8 0.0366 + 21 0.0488 + + 58 1 1 0 + 15 1 + + 15 2 2 0 + 3 0.5 + 15 0.5 + + 17 43 7 0 + 4 0.0233 + 7 0.628 + 10 0.0698 + 14 0.0233 + 21 0.209 + 28 0.0233 + 31 0.0233 + + 21 1368 30 13 + 0 0.0775 + 2 0.0702 + 3 0.00146 + 4 0.0139 + 7 0.284 + 8 0.00439 + 13 0.0168 + 14 0.0102 + 15 0.00512 + 18 0.00146 + 19 0.00292 + 20 0.00146 + 21 0.0694 + 23 0.000731 + 24 0.0146 + 26 0.0373 + 28 0.0877 + 29 0.0687 + 30 0.0234 + 31 0.0307 + 32 0.0183 + 33 0.0424 + 36 0.000731 + 37 0.00219 + 41 0.0387 + 42 0.0175 + 43 0.000731 + 44 0.00512 + 45 0.00219 + 47 0.0497 + + 3 628 30 0 + 0 0.0955 + 2 0.0446 + 3 0.00318 + 4 0.00796 + 7 0.247 + 8 0.00159 + 13 0.0175 + 14 0.00478 + 15 0.00955 + 18 0.00159 + 19 0.00318 + 20 0.00318 + 21 0.0525 + 23 0.00159 + 24 0.00637 + 26 0.0318 + 28 0.0732 + 29 0.0971 + 30 0.0271 + 31 0.035 + 32 0.0223 + 33 0.0589 + 36 0.00159 + 37 0.00318 + 41 0.0478 + 42 0.0159 + 43 0.00159 + 44 0.00796 + 45 0.00318 + 47 0.0732 + + 4 38 10 0 + 2 0.0526 + 7 0.263 + 14 0.0263 + 21 0.0789 + 28 0.0263 + 29 0.0789 + 31 0.0526 + 33 0.105 + 41 0.132 + 47 0.184 + + 7 71 14 0 + 0 0.0845 + 2 0.0423 + 7 0.183 + 8 0.0423 + 21 0.394 + 24 0.0423 + 26 0.0141 + 28 0.0282 + 29 0.0282 + 32 0.0141 + 33 0.0563 + 41 0.0141 + 42 0.0282 + 47 0.0282 + + 8 152 20 0 + 0 0.0461 + 2 0.0592 + 4 0.00658 + 7 0.375 + 8 0.00658 + 13 0.0132 + 14 0.0263 + 21 0.0461 + 24 0.0329 + 26 0.0526 + 28 0.164 + 29 0.0526 + 30 0.0197 + 31 0.0197 + 32 0.0132 + 33 0.0132 + 37 0.00658 + 41 0.0132 + 42 0.0132 + 47 0.0197 + + 9 15 9 0 + 0 0.0667 + 4 0.133 + 7 0.267 + 21 0.0667 + 26 0.0667 + 28 0.0667 + 32 0.133 + 41 0.133 + 45 0.0667 + + 13 12 8 0 + 2 0.25 + 21 0.0833 + 24 0.0833 + 28 0.0833 + 29 0.0833 + 32 0.0833 + 41 0.0833 + 47 0.25 + + 14 4 3 0 + 7 0.5 + 24 0.25 + 29 0.25 + + 17 9 6 0 + 2 0.111 + 7 0.222 + 24 0.111 + 29 0.222 + 33 0.111 + 47 0.222 + + 21 59 17 0 + 0 0.0508 + 2 0.0169 + 7 0.102 + 13 0.0508 + 14 0.0847 + 19 0.0339 + 21 0.0169 + 24 0.0169 + 26 0.0169 + 28 0.288 + 29 0.0508 + 31 0.0678 + 32 0.0339 + 33 0.0508 + 41 0.0847 + 42 0.0169 + 47 0.0169 + + 26 21 10 0 + 0 0.19 + 2 0.0952 + 7 0.19 + 14 0.0476 + 15 0.0476 + 28 0.19 + 30 0.0952 + 33 0.0476 + 41 0.0476 + 42 0.0476 + + 38 11 8 0 + 7 0.182 + 21 0.0909 + 24 0.0909 + 26 0.182 + 28 0.182 + 29 0.0909 + 31 0.0909 + 42 0.0909 + + 39 296 20 0 + 0 0.0811 + 2 0.0676 + 4 0.0372 + 7 0.409 + 8 0.00338 + 13 0.0236 + 18 0.00338 + 21 0.0304 + 24 0.0101 + 26 0.0608 + 28 0.0709 + 29 0.0405 + 30 0.0338 + 31 0.0338 + 32 0.0101 + 33 0.0203 + 41 0.0203 + 42 0.0236 + 44 0.00676 + 47 0.0135 + + 47 51 3 0 + 2 0.529 + 7 0.255 + 21 0.216 + + 22 108 17 2 + 0 0.0556 + 2 0.0648 + 4 0.037 + 7 0.333 + 8 0.0185 + 13 0.00926 + 14 0.00926 + 21 0.0278 + 24 0.0185 + 26 0.00926 + 28 0.0185 + 29 0.0926 + 30 0.13 + 31 0.0556 + 33 0.037 + 41 0.0463 + 47 0.037 + + 26 2 2 0 + 0 0.5 + 28 0.5 + + 47 6 3 0 + 2 0.667 + 13 0.167 + 14 0.167 + + 24 3 3 0 + 21 0.333 + 28 0.333 + 41 0.333 + + 25 3 2 0 + 7 0.667 + 30 0.333 + + 26 510 10 4 + 3 0.608 + 7 0.104 + 8 0.00784 + 13 0.212 + 14 0.0118 + 21 0.0412 + 22 0.00392 + 24 0.00196 + 28 0.00784 + 32 0.00196 + + 3 345 9 0 + 3 0.539 + 7 0.0957 + 13 0.304 + 14 0.0145 + 21 0.0261 + 22 0.0029 + 24 0.0029 + 28 0.0116 + 32 0.0029 + + 8 1 1 0 + 8 1 + + 39 157 7 0 + 3 0.783 + 7 0.115 + 8 0.0127 + 13 0.00637 + 14 0.00637 + 21 0.0701 + 22 0.00637 + + 47 1 1 0 + 8 1 + + 31 6 2 0 + 4 0.833 + 20 0.167 + + 38 128 14 0 + 2 0.0312 + 4 0.102 + 7 0.43 + 8 0.0312 + 13 0.0156 + 18 0.0391 + 21 0.0859 + 24 0.00781 + 26 0.195 + 28 0.0156 + 29 0.0156 + 31 0.00781 + 42 0.0156 + 47 0.00781 + + 39 5335 31 2 + 0 0.0274 + 2 0.0231 + 3 0.00075 + 4 0.108 + 7 0.384 + 8 0.0249 + 10 0.00394 + 13 0.00506 + 14 0.00281 + 15 0.00356 + 18 0.0135 + 19 0.000375 + 20 0.00862 + 21 0.0583 + 24 0.00375 + 26 0.153 + 28 0.0319 + 29 0.0437 + 30 0.0144 + 31 0.0172 + 32 0.00356 + 33 0.00619 + 34 0.000562 + 36 0.000187 + 37 0.000187 + 41 0.00656 + 42 0.0191 + 44 0.0313 + 45 0.000187 + 46 0.000187 + 47 0.0045 + + 3 165 16 0 + 0 0.0182 + 2 0.0242 + 4 0.103 + 7 0.582 + 8 0.0242 + 15 0.00606 + 18 0.0121 + 20 0.00606 + 21 0.0727 + 26 0.0121 + 28 0.0485 + 29 0.0182 + 31 0.0364 + 33 0.00606 + 42 0.0121 + 44 0.0182 + + 8 1 1 0 + 20 1 + + 41 2 2 0 + 8 0.5 + 38 0.5 + + 45 3 3 0 + 0 0.333 + 21 0.333 + 28 0.333 + + 46 2 2 0 + 9 0.5 + 10 0.5 + + 47 9444 38 17 + 0 0.0451 + 1 0.000106 + 2 0.026 + 3 0.00381 + 4 0.0736 + 7 0.334 + 8 0.019 + 9 0.000106 + 10 0.000106 + 13 0.0197 + 14 0.00805 + 15 0.00455 + 16 0.000212 + 18 0.0115 + 19 0.00116 + 20 0.00667 + 21 0.0109 + 22 0.000106 + 23 0.000106 + 24 0.0072 + 26 0.132 + 28 0.0547 + 29 0.0686 + 30 0.0222 + 31 0.0236 + 32 0.00784 + 33 0.0205 + 34 0.000635 + 36 0.000212 + 37 0.0018 + 39 0.00106 + 41 0.0205 + 42 0.0338 + 43 0.000212 + 44 0.0194 + 45 0.00148 + 46 0.000212 + 47 0.0195 + + 2 79 4 0 + 3 0.367 + 13 0.468 + 14 0.152 + 31 0.0127 + + 3 1998 31 0 + 0 0.0365 + 2 0.017 + 4 0.044 + 7 0.278 + 8 0.019 + 9 0.000501 + 13 0.0395 + 14 0.00901 + 15 0.00601 + 16 0.000501 + 18 0.015 + 19 0.001 + 20 0.00601 + 21 0.01 + 22 0.000501 + 24 0.0035 + 26 0.212 + 28 0.0285 + 29 0.107 + 30 0.0125 + 31 0.0135 + 32 0.00701 + 33 0.00801 + 34 0.0015 + 39 0.00501 + 41 0.022 + 42 0.0856 + 43 0.000501 + 44 0.0015 + 45 0.003 + 47 0.00601 + + 4 139 20 0 + 0 0.0216 + 2 0.0288 + 3 0.00719 + 7 0.273 + 13 0.036 + 14 0.00719 + 21 0.0144 + 24 0.0216 + 26 0.0432 + 28 0.122 + 29 0.122 + 30 0.0288 + 31 0.0432 + 32 0.00719 + 33 0.0504 + 41 0.0144 + 42 0.0144 + 44 0.00719 + 46 0.00719 + 47 0.129 + + 7 944 27 0 + 0 0.0657 + 1 0.00106 + 2 0.0371 + 4 0.00212 + 7 0.374 + 8 0.0053 + 13 0.00636 + 14 0.0138 + 15 0.00212 + 16 0.00106 + 19 0.00212 + 21 0.0169 + 24 0.0127 + 26 0.0604 + 28 0.11 + 29 0.0434 + 30 0.0392 + 31 0.0318 + 32 0.0117 + 33 0.0646 + 37 0.0117 + 41 0.0275 + 42 0.00847 + 44 0.0053 + 45 0.00318 + 46 0.00106 + 47 0.0413 + + 8 45 12 0 + 0 0.0667 + 2 0.0222 + 4 0.244 + 7 0.422 + 15 0.0222 + 26 0.0222 + 28 0.0222 + 29 0.0222 + 30 0.0444 + 31 0.0444 + 33 0.0444 + 41 0.0222 + + 9 422 23 0 + 0 0.0616 + 2 0.0403 + 4 0.0166 + 7 0.351 + 13 0.0166 + 14 0.00711 + 15 0.00474 + 19 0.00237 + 20 0.00237 + 21 0.0213 + 24 0.00474 + 26 0.0474 + 28 0.0829 + 29 0.0853 + 30 0.0427 + 31 0.0474 + 32 0.00711 + 33 0.0284 + 37 0.00474 + 41 0.0616 + 42 0.019 + 45 0.00237 + 47 0.0427 + + 13 8 7 0 + 4 0.125 + 7 0.25 + 20 0.125 + 21 0.125 + 24 0.125 + 33 0.125 + 42 0.125 + + 14 8 6 0 + 2 0.125 + 4 0.125 + 7 0.25 + 26 0.125 + 28 0.25 + 41 0.125 + + 17 3 3 0 + 14 0.333 + 28 0.333 + 31 0.333 + + 21 1259 30 0 + 0 0.0842 + 2 0.054 + 3 0.00159 + 4 0.0127 + 7 0.296 + 8 0.00397 + 13 0.0183 + 14 0.0103 + 15 0.00556 + 18 0.00159 + 19 0.00318 + 20 0.00159 + 21 0.0286 + 23 0.000794 + 24 0.0159 + 26 0.0397 + 28 0.0953 + 29 0.0747 + 30 0.0254 + 31 0.0334 + 32 0.0199 + 33 0.0461 + 36 0.000794 + 37 0.00238 + 41 0.0421 + 42 0.0191 + 43 0.000794 + 44 0.00556 + 45 0.00238 + 47 0.054 + + 22 100 16 0 + 0 0.06 + 2 0.03 + 4 0.01 + 7 0.36 + 8 0.02 + 13 0.01 + 21 0.03 + 24 0.02 + 26 0.01 + 28 0.02 + 29 0.1 + 30 0.14 + 31 0.06 + 33 0.04 + 41 0.05 + 47 0.04 + + 24 2 2 0 + 28 0.5 + 41 0.5 + + 26 5 2 0 + 28 0.8 + 32 0.2 + + 31 6 2 0 + 4 0.833 + 20 0.167 + + 38 105 13 0 + 2 0.019 + 4 0.124 + 7 0.429 + 8 0.0381 + 13 0.019 + 18 0.0476 + 24 0.00952 + 26 0.238 + 28 0.019 + 29 0.019 + 31 0.00952 + 42 0.019 + 47 0.00952 + + 39 4310 30 0 + 0 0.0339 + 2 0.0186 + 3 0.000928 + 4 0.128 + 7 0.366 + 8 0.029 + 10 0.000232 + 13 0.00603 + 14 0.00348 + 15 0.00441 + 18 0.0167 + 19 0.000464 + 20 0.0107 + 21 0.00348 + 24 0.00464 + 26 0.152 + 28 0.0394 + 29 0.0541 + 30 0.0179 + 31 0.0202 + 32 0.00441 + 33 0.00766 + 34 0.000696 + 36 0.000232 + 37 0.000232 + 41 0.00812 + 42 0.0237 + 44 0.0387 + 45 0.000232 + 47 0.00557 + + 45 3 3 0 + 0 0.333 + 21 0.333 + 28 0.333 + + 55 4 3 0 + 7 0.5 + 42 0.25 + 45 0.25 + + 58 1 1 0 + 14 1 + +61 127 13 5 + 2 0.0315 + 3 0.00787 + 4 0.0315 + 8 0.0157 + 13 0.189 + 14 0.0709 + 15 0.00787 + 21 0.15 + 24 0.00787 + 28 0.0157 + 41 0.441 + 42 0.0157 + 46 0.0157 + + 47 47 8 0 + 2 0.0426 + 4 0.0426 + 13 0.191 + 14 0.0851 + 28 0.0213 + 41 0.574 + 42 0.0213 + 46 0.0213 + + 49 32 6 0 + 2 0.0625 + 4 0.0625 + 13 0.0938 + 14 0.0625 + 24 0.0312 + 41 0.688 + + 55 24 7 0 + 8 0.0833 + 13 0.0833 + 14 0.0417 + 15 0.0417 + 21 0.667 + 41 0.0417 + 46 0.0417 + + 57 11 4 0 + 13 0.455 + 14 0.0909 + 28 0.0909 + 41 0.364 + + 64 1 1 0 + 3 1 + +62 295300 46 32 + 0 0.00594 + 1 0.000213 + 2 0.0265 + 3 0.00539 + 4 0.00642 + 5 0.0029 + 6 5.08e-05 + 7 0.092 + 8 0.0115 + 9 0.000735 + 10 0.000362 + 11 4.06e-05 + 12 0.000328 + 13 0.0983 + 14 0.0637 + 15 0.0501 + 16 0.00223 + 17 1.35e-05 + 18 0.000511 + 19 0.0512 + 20 4.74e-05 + 21 0.0258 + 22 0.00043 + 23 4.74e-05 + 24 0.000969 + 25 2.37e-05 + 26 0.00111 + 27 0.000102 + 28 0.0131 + 29 0.035 + 30 0.00893 + 31 0.0163 + 32 0.0106 + 33 0.0136 + 34 0.0284 + 35 0.0149 + 36 6.77e-06 + 37 0.0127 + 40 0.000139 + 41 0.079 + 42 0.0087 + 43 0.000972 + 44 0.00109 + 45 0.0288 + 46 0.00572 + 47 0.275 + + 0 8 5 0 + 2 0.125 + 13 0.375 + 14 0.25 + 15 0.125 + 37 0.125 + + 2 2293 7 5 + 9 0.000436 + 13 0.000436 + 41 0.00741 + 42 0.00174 + 45 0.044 + 46 0.000436 + 47 0.945 + + 55 1575 4 0 + 41 0.0019 + 45 0.047 + 46 0.000635 + 47 0.95 + + 57 241 3 0 + 42 0.0083 + 45 0.0124 + 47 0.979 + + 62 101 4 0 + 41 0.109 + 42 0.0099 + 45 0.0594 + 47 0.822 + + 66 1 1 0 + 41 1 + + 69 19 5 0 + 9 0.0526 + 13 0.0526 + 41 0.0526 + 45 0.105 + 47 0.737 + + 4 32 9 0 + 4 0.0312 + 8 0.0312 + 14 0.156 + 15 0.312 + 19 0.25 + 34 0.0625 + 35 0.0312 + 41 0.0938 + 42 0.0312 + + 7 39 2 0 + 45 0.0256 + 47 0.974 + + 12 4 3 0 + 14 0.25 + 19 0.5 + 37 0.25 + + 21 199 25 5 + 0 0.0101 + 2 0.0201 + 7 0.101 + 8 0.0201 + 12 0.0201 + 13 0.0704 + 14 0.0452 + 15 0.0201 + 19 0.0452 + 21 0.0151 + 23 0.00503 + 24 0.00503 + 25 0.00503 + 28 0.00503 + 29 0.106 + 31 0.0302 + 32 0.00503 + 33 0.00503 + 35 0.00503 + 37 0.00503 + 41 0.0704 + 42 0.0151 + 45 0.0251 + 46 0.0101 + 47 0.337 + + 41 7 2 0 + 45 0.143 + 47 0.857 + + 55 44 5 0 + 2 0.0682 + 37 0.0227 + 41 0.114 + 45 0.0455 + 47 0.75 + + 57 7 1 0 + 47 1 + + 64 5 1 0 + 47 1 + + 69 122 24 0 + 0 0.0164 + 2 0.0082 + 7 0.148 + 8 0.0328 + 12 0.0328 + 13 0.107 + 14 0.0738 + 15 0.0328 + 19 0.0738 + 21 0.0164 + 23 0.0082 + 24 0.0082 + 25 0.0082 + 28 0.0082 + 29 0.172 + 31 0.0492 + 32 0.0082 + 33 0.0082 + 35 0.0082 + 41 0.0656 + 42 0.0246 + 45 0.0164 + 46 0.0164 + 47 0.0574 + + 26 5 3 0 + 8 0.6 + 13 0.2 + 19 0.2 + + 40 10 6 0 + 8 0.1 + 13 0.4 + 14 0.2 + 19 0.1 + 21 0.1 + 27 0.1 + + 41 12917 37 14 + 0 0.00356 + 2 0.00434 + 3 0.0433 + 4 0.0079 + 5 0.000155 + 6 7.74e-05 + 7 0.00596 + 8 0.0321 + 9 0.00341 + 10 0.00147 + 11 0.000387 + 12 0.000774 + 13 0.376 + 14 0.157 + 15 0.124 + 16 0.00426 + 18 0.000387 + 19 0.0109 + 20 7.74e-05 + 21 0.16 + 22 0.00395 + 23 0.000232 + 24 0.00348 + 26 0.000155 + 27 0.00194 + 28 0.00898 + 29 0.00681 + 30 0.00457 + 31 0.0181 + 32 0.00341 + 33 0.00735 + 34 0.000542 + 35 0.000232 + 37 0.000387 + 42 0.000155 + 43 0.00333 + 46 0.000232 + + 2 15 7 0 + 8 0.133 + 13 0.267 + 14 0.133 + 15 0.267 + 18 0.0667 + 19 0.0667 + 27 0.0667 + + 21 6 3 0 + 13 0.667 + 19 0.167 + 28 0.167 + + 45 125 16 0 + 0 0.008 + 2 0.016 + 3 0.016 + 4 0.008 + 8 0.024 + 13 0.256 + 14 0.216 + 15 0.12 + 16 0.008 + 19 0.04 + 21 0.112 + 28 0.008 + 29 0.024 + 30 0.016 + 31 0.032 + 33 0.096 + + 46 950 26 0 + 0 0.0158 + 2 0.00105 + 3 0.0158 + 4 0.0179 + 7 0.00947 + 8 0.0884 + 9 0.00737 + 10 0.00105 + 12 0.00632 + 13 0.379 + 14 0.154 + 15 0.0674 + 16 0.00526 + 19 0.0442 + 21 0.0695 + 22 0.00105 + 24 0.0126 + 26 0.00105 + 28 0.0316 + 29 0.0147 + 30 0.00947 + 31 0.0337 + 32 0.00421 + 33 0.00632 + 42 0.00211 + 43 0.00105 + + 48 3 3 0 + 0 0.333 + 13 0.333 + 14 0.333 + + 49 375 22 0 + 2 0.016 + 3 0.032 + 4 0.008 + 7 0.0107 + 8 0.008 + 9 0.00267 + 10 0.00267 + 13 0.339 + 14 0.216 + 15 0.171 + 16 0.00533 + 18 0.00533 + 19 0.0347 + 21 0.112 + 24 0.008 + 27 0.00267 + 30 0.00267 + 31 0.00533 + 32 0.00533 + 33 0.00533 + 34 0.00267 + 43 0.00533 + + 55 9312 33 0 + 0 0.00268 + 2 0.00129 + 3 0.0493 + 4 0.00709 + 5 0.000215 + 7 0.00473 + 8 0.0306 + 9 0.00365 + 10 0.00183 + 11 0.000537 + 12 0.00043 + 13 0.39 + 14 0.156 + 15 0.113 + 16 0.00397 + 18 0.000107 + 19 0.00655 + 20 0.000107 + 21 0.165 + 22 0.00515 + 23 0.000322 + 24 0.00279 + 26 0.000107 + 27 0.00215 + 28 0.00805 + 29 0.00677 + 30 0.00451 + 31 0.0183 + 32 0.00333 + 33 0.00698 + 37 0.00043 + 43 0.00365 + 46 0.000322 + + 57 600 21 0 + 2 0.0383 + 3 0.035 + 4 0.01 + 7 0.0183 + 8 0.00167 + 13 0.258 + 14 0.132 + 15 0.275 + 16 0.00667 + 19 0.0117 + 21 0.182 + 22 0.00167 + 27 0.00167 + 29 0.00167 + 30 0.00167 + 31 0.00333 + 32 0.00333 + 34 0.00833 + 35 0.005 + 37 0.00167 + 43 0.00333 + + 58 38 9 0 + 2 0.0263 + 8 0.0263 + 9 0.0263 + 13 0.474 + 14 0.132 + 15 0.105 + 21 0.158 + 32 0.0263 + 33 0.0263 + + 62 430 21 0 + 0 0.00465 + 2 0.00233 + 3 0.0256 + 4 0.00233 + 7 0.0093 + 8 0.0209 + 9 0.00233 + 13 0.302 + 14 0.184 + 15 0.258 + 16 0.00233 + 19 0.0093 + 21 0.135 + 24 0.00698 + 28 0.00698 + 29 0.00698 + 30 0.00233 + 31 0.00465 + 32 0.00233 + 33 0.00698 + 43 0.00465 + + 64 201 16 0 + 0 0.00498 + 2 0.0448 + 3 0.0846 + 4 0.00498 + 7 0.0199 + 8 0.0149 + 13 0.269 + 14 0.114 + 15 0.124 + 16 0.0149 + 21 0.269 + 22 0.00498 + 28 0.00995 + 31 0.00995 + 33 0.00498 + 34 0.00498 + + 66 1 1 0 + 2 1 + + 69 839 21 0 + 0 0.00119 + 3 0.0262 + 4 0.00834 + 7 0.00119 + 8 0.0274 + 13 0.398 + 14 0.16 + 15 0.113 + 16 0.00238 + 18 0.00119 + 19 0.00715 + 21 0.205 + 24 0.00119 + 27 0.00238 + 28 0.00477 + 29 0.00358 + 30 0.00358 + 31 0.0238 + 32 0.00238 + 33 0.00477 + 43 0.00238 + + 74 11 7 0 + 6 0.0909 + 13 0.364 + 14 0.182 + 19 0.0909 + 29 0.0909 + 32 0.0909 + 33 0.0909 + + 42 133 20 7 + 3 0.00752 + 4 0.015 + 8 0.0602 + 11 0.0226 + 13 0.233 + 14 0.143 + 15 0.0677 + 19 0.0226 + 21 0.0226 + 24 0.00752 + 25 0.0301 + 28 0.00752 + 29 0.015 + 40 0.00752 + 41 0.015 + 42 0.00752 + 43 0.00752 + 45 0.00752 + 46 0.015 + 47 0.286 + + 45 19 6 0 + 13 0.0526 + 15 0.158 + 19 0.158 + 24 0.0526 + 29 0.0526 + 47 0.526 + + 49 4 4 0 + 8 0.25 + 14 0.25 + 15 0.25 + 28 0.25 + + 55 51 14 0 + 8 0.0392 + 11 0.0392 + 13 0.255 + 14 0.118 + 15 0.0588 + 21 0.0196 + 25 0.0196 + 29 0.0196 + 40 0.0196 + 41 0.0196 + 42 0.0196 + 43 0.0196 + 46 0.0392 + 47 0.314 + + 57 6 3 0 + 4 0.167 + 13 0.167 + 47 0.667 + + 62 17 6 0 + 13 0.353 + 14 0.176 + 15 0.0588 + 21 0.118 + 45 0.0588 + 47 0.235 + + 66 6 3 0 + 4 0.167 + 8 0.667 + 13 0.167 + + 69 22 8 0 + 3 0.0455 + 8 0.0455 + 11 0.0455 + 13 0.227 + 14 0.409 + 15 0.0455 + 25 0.136 + 41 0.0455 + + 43 32 6 0 + 11 0.0938 + 13 0.344 + 14 0.125 + 15 0.281 + 18 0.0312 + 19 0.125 + + 44 156 17 1 + 0 0.00641 + 2 0.0128 + 4 0.00641 + 7 0.0385 + 8 0.00641 + 13 0.0128 + 14 0.0128 + 21 0.0192 + 28 0.0256 + 29 0.00641 + 32 0.00641 + 33 0.00641 + 35 0.00641 + 41 0.0192 + 45 0.0128 + 46 0.00641 + 47 0.795 + + 57 22 1 0 + 47 1 + + 45 2718 26 8 + 0 0.0011 + 2 0.00478 + 3 0.00258 + 4 0.0011 + 7 0.0118 + 8 0.000736 + 13 0.0545 + 14 0.0309 + 15 0.0213 + 16 0.000736 + 18 0.000736 + 19 0.0169 + 21 0.00331 + 28 0.00184 + 29 0.00258 + 31 0.0118 + 32 0.000736 + 33 0.00736 + 37 0.000368 + 40 0.000368 + 41 0.0982 + 42 0.0232 + 44 0.00221 + 45 0.000736 + 46 0.000736 + 47 0.699 + + 2 87 1 0 + 47 1 + + 48 56 9 0 + 2 0.0179 + 4 0.0179 + 13 0.5 + 14 0.25 + 15 0.0179 + 19 0.125 + 31 0.0357 + 33 0.0179 + 42 0.0179 + + 49 64 7 0 + 13 0.0625 + 14 0.0312 + 15 0.0312 + 19 0.0156 + 41 0.0781 + 42 0.0625 + 47 0.719 + + 55 1037 20 0 + 0 0.00193 + 2 0.00964 + 7 0.0251 + 13 0.0135 + 14 0.000964 + 15 0.00193 + 19 0.0116 + 21 0.00482 + 28 0.00386 + 29 0.00482 + 31 0.026 + 32 0.00193 + 33 0.0145 + 37 0.000964 + 40 0.000964 + 41 0.165 + 42 0.0328 + 44 0.00482 + 46 0.00193 + 47 0.673 + + 57 75 6 0 + 2 0.0133 + 7 0.04 + 31 0.0133 + 41 0.0533 + 42 0.0133 + 47 0.867 + + 62 945 9 0 + 7 0.00317 + 29 0.00106 + 31 0.00106 + 33 0.00106 + 41 0.0254 + 42 0.0159 + 44 0.00106 + 45 0.00212 + 47 0.949 + + 64 96 4 0 + 2 0.0104 + 41 0.104 + 42 0.0417 + 47 0.844 + + 69 334 18 0 + 0 0.00299 + 3 0.021 + 4 0.00599 + 8 0.00599 + 13 0.305 + 14 0.198 + 15 0.159 + 16 0.00599 + 18 0.00599 + 19 0.0778 + 21 0.012 + 28 0.00299 + 29 0.00299 + 31 0.00299 + 33 0.00898 + 41 0.15 + 42 0.00599 + 47 0.0269 + + 46 1060 13 6 + 3 0.000943 + 8 0.00283 + 13 0.0236 + 14 0.0123 + 15 0.0236 + 16 0.00189 + 19 0.000943 + 21 0.000943 + 30 0.000943 + 40 0.0151 + 41 0.899 + 46 0.00472 + 47 0.0132 + + 49 3 3 0 + 13 0.333 + 15 0.333 + 47 0.333 + + 55 921 6 0 + 13 0.00217 + 14 0.00217 + 40 0.0163 + 41 0.967 + 46 0.00434 + 47 0.0076 + + 57 3 2 0 + 41 0.333 + 47 0.667 + + 62 10 2 0 + 41 0.7 + 47 0.3 + + 64 3 2 0 + 8 0.667 + 41 0.333 + + 69 99 12 0 + 3 0.0101 + 8 0.0101 + 13 0.222 + 14 0.111 + 15 0.242 + 16 0.0202 + 19 0.0101 + 21 0.0101 + 30 0.0101 + 40 0.0101 + 41 0.333 + 46 0.0101 + + 47 95402 42 25 + 0 0.00867 + 1 0.000325 + 2 0.0289 + 3 0.0027 + 4 0.00311 + 6 1.05e-05 + 7 0.141 + 8 0.0136 + 9 0.00066 + 10 0.000136 + 12 0.000419 + 13 0.0355 + 14 0.0168 + 15 0.00423 + 16 0.000199 + 17 2.1e-05 + 18 3.14e-05 + 19 0.00112 + 21 0.00595 + 22 0.00022 + 23 2.1e-05 + 24 0.00122 + 25 1.05e-05 + 26 0.00167 + 28 0.0194 + 29 0.0534 + 30 0.0131 + 31 0.0233 + 32 0.016 + 33 0.0203 + 34 0.0436 + 35 0.023 + 36 1.05e-05 + 37 0.0196 + 40 2.1e-05 + 41 0.0307 + 42 0.0112 + 43 0.000199 + 44 0.00087 + 45 0.0302 + 46 0.00213 + 47 0.426 + + 2 2188 5 0 + 41 0.000457 + 42 0.00183 + 45 0.0064 + 46 0.000457 + 47 0.991 + + 4 5 4 0 + 8 0.2 + 34 0.4 + 35 0.2 + 41 0.2 + + 7 38 1 0 + 47 1 + + 21 173 25 0 + 0 0.0116 + 2 0.00578 + 7 0.116 + 8 0.0231 + 12 0.0173 + 13 0.0636 + 14 0.0405 + 15 0.0173 + 19 0.0289 + 21 0.00578 + 23 0.00578 + 24 0.00578 + 25 0.00578 + 28 0.00578 + 29 0.121 + 31 0.0347 + 32 0.00578 + 33 0.00578 + 35 0.00578 + 37 0.00578 + 41 0.0462 + 42 0.0173 + 45 0.00578 + 46 0.0116 + 47 0.387 + + 26 5 3 0 + 8 0.6 + 13 0.2 + 19 0.2 + + 41 29 9 0 + 2 0.069 + 4 0.0345 + 7 0.379 + 15 0.0345 + 21 0.0345 + 31 0.069 + 34 0.241 + 35 0.103 + 37 0.0345 + + 42 40 3 0 + 4 0.025 + 45 0.025 + 47 0.95 + + 44 146 14 0 + 0 0.00685 + 2 0.0137 + 4 0.00685 + 7 0.0411 + 8 0.00685 + 14 0.00685 + 21 0.00685 + 28 0.0274 + 29 0.00685 + 32 0.00685 + 33 0.00685 + 35 0.00685 + 45 0.00685 + 47 0.849 + + 45 2081 17 0 + 0 0.00144 + 2 0.000481 + 7 0.0154 + 13 0.000961 + 14 0.000481 + 21 0.000481 + 28 0.0024 + 29 0.00288 + 31 0.0149 + 32 0.000961 + 33 0.00865 + 37 0.000481 + 41 0.0139 + 42 0.0207 + 44 0.00192 + 45 0.000481 + 47 0.914 + + 46 14 1 0 + 47 1 + + 48 401 21 0 + 0 0.00249 + 2 0.0125 + 7 0.0499 + 13 0.0125 + 14 0.00249 + 15 0.00748 + 16 0.00249 + 21 0.00748 + 24 0.00499 + 28 0.0698 + 29 0.122 + 30 0.0374 + 31 0.387 + 32 0.0249 + 33 0.0249 + 34 0.00249 + 37 0.00249 + 41 0.0823 + 42 0.00249 + 45 0.00998 + 47 0.132 + + 49 2499 23 0 + 0 0.0016 + 2 0.0272 + 7 0.0344 + 8 0.0004 + 12 0.0004 + 13 0.0068 + 14 0.0024 + 15 0.0016 + 21 0.006 + 24 0.0008 + 28 0.0012 + 29 0.0012 + 30 0.0012 + 31 0.0016 + 32 0.002 + 33 0.0016 + 34 0.0656 + 35 0.0324 + 37 0.0012 + 41 0.0312 + 42 0.0156 + 45 0.0228 + 47 0.741 + + 50 6 1 0 + 47 1 + + 51 15 6 0 + 2 0.0667 + 7 0.0667 + 32 0.0667 + 33 0.0667 + 45 0.2 + 47 0.533 + + 52 43 8 0 + 2 0.0233 + 28 0.0233 + 41 0.0233 + 42 0.0233 + 44 0.0233 + 45 0.209 + 46 0.0233 + 47 0.651 + + 53 30 4 0 + 2 0.0333 + 7 0.0333 + 42 0.1 + 47 0.833 + + 55 52582 38 0 + 0 0.00203 + 1 0.000342 + 2 0.0449 + 3 0.00038 + 4 0.00443 + 7 0.183 + 8 0.00304 + 9 0.000133 + 10 0.000133 + 12 1.9e-05 + 13 0.0151 + 14 0.00688 + 15 0.000856 + 16 3.8e-05 + 17 3.8e-05 + 18 1.9e-05 + 19 0.000513 + 21 0.00382 + 22 0.000114 + 24 0.000114 + 26 0.000228 + 28 0.0187 + 29 0.071 + 30 0.00837 + 31 0.0106 + 32 0.018 + 33 0.0195 + 34 0.0097 + 35 0.00778 + 36 1.9e-05 + 37 0.0328 + 41 0.0205 + 42 0.0131 + 43 0.000114 + 44 0.00103 + 45 0.0401 + 46 0.00202 + 47 0.461 + + 57 4707 21 0 + 2 0.0191 + 4 0.00085 + 7 0.0416 + 8 0.000212 + 13 0.000637 + 14 0.000212 + 21 0.00085 + 28 0.000637 + 29 0.000212 + 31 0.00106 + 32 0.000212 + 33 0.000425 + 34 0.00722 + 35 0.00297 + 37 0.00149 + 40 0.000212 + 41 0.0161 + 42 0.0117 + 44 0.00085 + 45 0.021 + 47 0.872 + + 58 17 7 0 + 4 0.0588 + 7 0.294 + 34 0.235 + 35 0.118 + 37 0.118 + 42 0.0588 + 47 0.118 + + 62 4872 24 0 + 0 0.00144 + 2 0.00944 + 4 0.00123 + 7 0.0515 + 8 0.000205 + 13 0.00205 + 14 0.000411 + 15 0.000205 + 19 0.000205 + 21 0.00164 + 28 0.00164 + 29 0.0133 + 30 0.00144 + 31 0.00103 + 32 0.00226 + 33 0.00431 + 34 0.00554 + 35 0.00144 + 37 0.00513 + 41 0.00513 + 42 0.016 + 44 0.000821 + 45 0.0525 + 47 0.821 + + 64 1775 16 0 + 0 0.00113 + 2 0.0293 + 4 0.00169 + 7 0.0958 + 21 0.00225 + 29 0.00451 + 30 0.000563 + 32 0.00282 + 33 0.00169 + 34 0.000563 + 35 0.000563 + 37 0.00113 + 41 0.0169 + 42 0.0135 + 45 0.093 + 47 0.735 + + 66 16 3 0 + 2 0.0625 + 42 0.0625 + 47 0.875 + + 68 15 7 0 + 7 0.0667 + 13 0.0667 + 28 0.0667 + 31 0.0667 + 42 0.0667 + 45 0.0667 + 47 0.6 + + 69 23688 39 0 + 0 0.0296 + 1 0.000549 + 2 0.0054 + 3 0.01 + 4 0.00198 + 6 4.22e-05 + 7 0.13 + 8 0.0475 + 9 0.00236 + 10 0.000253 + 12 0.00148 + 13 0.107 + 14 0.0514 + 15 0.0146 + 16 0.000675 + 18 8.44e-05 + 19 0.00308 + 21 0.0139 + 22 0.000633 + 23 4.22e-05 + 24 0.00443 + 26 0.00621 + 28 0.0343 + 29 0.0511 + 30 0.0331 + 31 0.0616 + 32 0.0226 + 33 0.0358 + 34 0.144 + 35 0.0708 + 37 0.00414 + 40 4.22e-05 + 41 0.0661 + 42 0.00515 + 43 0.000549 + 44 0.000675 + 45 0.0068 + 46 0.00393 + 47 0.0277 + + 74 7 5 0 + 2 0.286 + 41 0.143 + 42 0.143 + 45 0.143 + 47 0.286 + + 48 954 28 7 + 0 0.00105 + 2 0.00629 + 3 0.00314 + 4 0.00524 + 7 0.021 + 8 0.00314 + 13 0.155 + 14 0.142 + 15 0.0304 + 16 0.00314 + 18 0.00105 + 19 0.169 + 21 0.0136 + 22 0.00105 + 24 0.0021 + 28 0.0294 + 29 0.0514 + 30 0.0157 + 31 0.162 + 32 0.0105 + 33 0.0115 + 34 0.00105 + 37 0.00105 + 41 0.0388 + 42 0.0021 + 45 0.0629 + 46 0.00105 + 47 0.0556 + + 41 16 6 0 + 2 0.125 + 21 0.0625 + 41 0.0625 + 42 0.0625 + 45 0.125 + 47 0.562 + + 47 806 26 0 + 0 0.00124 + 2 0.00372 + 3 0.00372 + 4 0.0062 + 7 0.0223 + 8 0.00372 + 13 0.176 + 14 0.164 + 15 0.036 + 16 0.00372 + 19 0.102 + 21 0.0149 + 22 0.00124 + 24 0.00248 + 28 0.0211 + 29 0.0521 + 30 0.0136 + 31 0.185 + 32 0.0124 + 33 0.00993 + 37 0.00124 + 41 0.0397 + 42 0.00124 + 45 0.0682 + 46 0.00124 + 47 0.0533 + + 49 5 4 0 + 2 0.2 + 13 0.4 + 14 0.2 + 18 0.2 + + 55 19 8 0 + 13 0.0526 + 28 0.211 + 29 0.263 + 30 0.105 + 31 0.158 + 33 0.0526 + 41 0.105 + 47 0.0526 + + 62 36 5 0 + 7 0.0278 + 13 0.0278 + 14 0.0278 + 19 0.889 + 45 0.0278 + + 64 63 9 0 + 13 0.0317 + 14 0.0159 + 19 0.683 + 28 0.111 + 29 0.0317 + 30 0.0317 + 31 0.0476 + 33 0.0317 + 41 0.0159 + + 69 2 2 0 + 34 0.5 + 41 0.5 + + 49 6007 36 13 + 0 0.00117 + 2 0.0255 + 3 0.00117 + 4 0.00383 + 5 0.00333 + 7 0.0146 + 8 0.00133 + 9 0.000333 + 10 0.000166 + 12 0.000166 + 13 0.122 + 14 0.107 + 15 0.101 + 16 0.00449 + 18 0.00117 + 19 0.108 + 21 0.0103 + 23 0.000166 + 24 0.000333 + 28 0.000499 + 29 0.000666 + 30 0.000832 + 31 0.000832 + 32 0.000999 + 33 0.000999 + 34 0.0276 + 35 0.0135 + 37 0.000499 + 40 0.000333 + 41 0.106 + 42 0.00916 + 43 0.000832 + 44 0.000666 + 45 0.0201 + 46 0.0025 + 47 0.308 + + 41 1889 16 0 + 2 0.0238 + 4 0.000529 + 7 0.00106 + 13 0.00318 + 14 0.00159 + 15 0.00106 + 19 0.000529 + 21 0.00424 + 32 0.000529 + 40 0.00106 + 41 0.157 + 42 0.00794 + 44 0.00159 + 45 0.0312 + 46 0.000529 + 47 0.764 + + 44 2 2 0 + 2 0.5 + 45 0.5 + + 45 7 4 0 + 7 0.143 + 14 0.286 + 15 0.286 + 47 0.286 + + 47 59 15 0 + 4 0.0169 + 8 0.0339 + 13 0.237 + 14 0.22 + 15 0.102 + 19 0.0169 + 21 0.0339 + 28 0.0169 + 29 0.0339 + 30 0.0339 + 31 0.0339 + 32 0.0169 + 33 0.0169 + 41 0.119 + 47 0.0678 + + 48 9 4 0 + 14 0.111 + 21 0.111 + 41 0.222 + 47 0.556 + + 49 30 9 0 + 2 0.0333 + 7 0.0333 + 13 0.0667 + 14 0.133 + 15 0.2 + 19 0.233 + 41 0.1 + 42 0.0333 + 47 0.167 + + 55 493 13 0 + 2 0.178 + 7 0.0365 + 9 0.00203 + 13 0.00203 + 14 0.00609 + 21 0.0183 + 32 0.00203 + 34 0.00203 + 37 0.00406 + 41 0.0953 + 42 0.0325 + 45 0.069 + 47 0.552 + + 57 31 7 0 + 2 0.161 + 14 0.0323 + 41 0.0645 + 42 0.0323 + 44 0.0323 + 45 0.0645 + 47 0.613 + + 58 78 5 0 + 2 0.0641 + 41 0.0128 + 42 0.0256 + 45 0.0641 + 47 0.833 + + 62 11 4 0 + 2 0.182 + 42 0.0909 + 45 0.182 + 47 0.545 + + 64 6 3 0 + 2 0.167 + 45 0.5 + 47 0.333 + + 66 3 2 0 + 21 0.667 + 47 0.333 + + 69 3383 34 0 + 0 0.00207 + 2 0.00118 + 3 0.00207 + 4 0.00621 + 5 0.00591 + 7 0.0195 + 8 0.00177 + 9 0.000296 + 10 0.000296 + 12 0.000296 + 13 0.21 + 14 0.181 + 15 0.175 + 16 0.00798 + 18 0.00207 + 19 0.189 + 21 0.0118 + 23 0.000296 + 24 0.000591 + 28 0.000591 + 29 0.000591 + 30 0.000887 + 31 0.000887 + 32 0.000887 + 33 0.00148 + 34 0.0488 + 35 0.0239 + 37 0.000296 + 41 0.0822 + 42 0.00562 + 43 0.00148 + 45 0.00414 + 46 0.00414 + 47 0.00739 + + 50 8 3 0 + 14 0.125 + 19 0.125 + 47 0.75 + + 51 20 7 0 + 2 0.05 + 7 0.05 + 32 0.05 + 33 0.05 + 41 0.05 + 45 0.35 + 47 0.4 + + 52 51 9 1 + 2 0.0196 + 27 0.0196 + 28 0.0196 + 41 0.098 + 42 0.0196 + 44 0.0196 + 45 0.235 + 46 0.0196 + 47 0.549 + + 55 4 3 0 + 28 0.25 + 45 0.5 + 46 0.25 + + 53 30 4 0 + 2 0.0333 + 7 0.0333 + 42 0.1 + 47 0.833 + + 55 67719 43 18 + 0 0.00162 + 1 0.000266 + 2 0.0581 + 3 0.000753 + 4 0.0036 + 5 1.48e-05 + 7 0.143 + 8 0.00282 + 9 0.000266 + 10 0.00034 + 12 2.95e-05 + 13 0.019 + 14 0.00755 + 15 0.00347 + 16 8.86e-05 + 17 2.95e-05 + 18 4.43e-05 + 19 0.00157 + 21 0.0104 + 22 0.000192 + 23 1.48e-05 + 24 8.86e-05 + 25 1.48e-05 + 26 0.000177 + 27 1.48e-05 + 28 0.0146 + 29 0.0552 + 30 0.00653 + 31 0.00828 + 32 0.0141 + 33 0.0153 + 34 0.00755 + 35 0.00604 + 36 1.48e-05 + 37 0.0255 + 40 4.43e-05 + 41 0.159 + 42 0.0118 + 43 0.000295 + 44 0.00233 + 45 0.0466 + 46 0.0162 + 47 0.358 + + 4 27 11 0 + 7 0.037 + 8 0.037 + 13 0.037 + 14 0.037 + 28 0.037 + 29 0.0741 + 32 0.037 + 41 0.0741 + 45 0.037 + 46 0.037 + 47 0.556 + + 12 3 3 0 + 2 0.333 + 33 0.333 + 42 0.333 + + 21 9 5 0 + 7 0.111 + 13 0.111 + 28 0.333 + 29 0.222 + 31 0.222 + + 41 1402 27 0 + 0 0.000713 + 2 0.0464 + 4 0.000713 + 7 0.0464 + 8 0.000713 + 10 0.000713 + 13 0.0728 + 14 0.00499 + 15 0.0278 + 19 0.000713 + 21 0.0107 + 27 0.000713 + 28 0.000713 + 29 0.0157 + 30 0.000713 + 31 0.00143 + 32 0.00713 + 33 0.00214 + 34 0.00214 + 37 0.00285 + 41 0.0449 + 42 0.0157 + 43 0.000713 + 44 0.00357 + 45 0.0271 + 46 0.00143 + 47 0.66 + + 42 27 7 0 + 2 0.111 + 7 0.148 + 21 0.037 + 29 0.0741 + 41 0.111 + 45 0.185 + 47 0.333 + + 43 29 2 0 + 7 0.069 + 44 0.931 + + 45 366 17 0 + 2 0.0273 + 7 0.167 + 13 0.0109 + 14 0.00273 + 21 0.00273 + 22 0.00273 + 28 0.0328 + 29 0.29 + 30 0.0355 + 31 0.0082 + 32 0.0109 + 33 0.082 + 34 0.00273 + 37 0.00273 + 41 0.0765 + 42 0.00273 + 47 0.243 + + 46 63 7 0 + 2 0.0159 + 7 0.0159 + 28 0.0317 + 29 0.0159 + 34 0.0159 + 41 0.0159 + 45 0.889 + + 47 833 26 0 + 0 0.0072 + 2 0.0336 + 3 0.0012 + 4 0.0096 + 7 0.0204 + 8 0.0192 + 9 0.0012 + 13 0.0636 + 14 0.0156 + 15 0.048 + 16 0.0012 + 18 0.0024 + 19 0.0876 + 21 0.0168 + 28 0.0396 + 29 0.0564 + 30 0.0072 + 31 0.376 + 32 0.0072 + 33 0.0264 + 34 0.0048 + 41 0.0264 + 42 0.0108 + 43 0.0024 + 45 0.0888 + 47 0.0264 + + 48 482 15 0 + 0 0.00622 + 2 0.027 + 7 0.0373 + 14 0.00207 + 28 0.344 + 29 0.0996 + 30 0.168 + 31 0.0705 + 32 0.0975 + 33 0.104 + 41 0.0228 + 42 0.00415 + 44 0.00415 + 45 0.00207 + 47 0.0104 + + 49 2900 25 0 + 0 0.00069 + 2 0.0714 + 3 0.000345 + 4 0.00103 + 7 0.108 + 8 0.00069 + 13 0.0121 + 14 0.00448 + 15 0.000345 + 21 0.0031 + 28 0.00586 + 29 0.0366 + 30 0.00138 + 31 0.00276 + 32 0.00931 + 33 0.00931 + 34 0.00586 + 35 0.00655 + 37 0.0169 + 41 0.128 + 42 0.0134 + 44 0.0031 + 45 0.0345 + 46 0.0031 + 47 0.521 + + 55 480 19 0 + 2 0.0854 + 4 0.00417 + 7 0.0437 + 13 0.0104 + 15 0.00208 + 21 0.00833 + 28 0.0896 + 29 0.0854 + 30 0.0479 + 31 0.0146 + 32 0.05 + 33 0.0646 + 35 0.00208 + 37 0.0125 + 41 0.102 + 42 0.0333 + 45 0.0167 + 46 0.00208 + 47 0.325 + + 57 150 18 0 + 0 0.0133 + 1 0.00667 + 2 0.0467 + 4 0.00667 + 7 0.06 + 13 0.0467 + 14 0.02 + 29 0.0333 + 30 0.0133 + 32 0.0267 + 33 0.00667 + 34 0.00667 + 37 0.02 + 41 0.187 + 42 0.0133 + 44 0.02 + 45 0.0267 + 47 0.447 + + 58 218 11 0 + 2 0.0505 + 7 0.0275 + 14 0.00459 + 21 0.00459 + 28 0.00459 + 34 0.00459 + 35 0.00459 + 41 0.0367 + 42 0.0183 + 45 0.0826 + 47 0.761 + + 62 10 5 0 + 2 0.1 + 14 0.1 + 19 0.2 + 37 0.1 + 47 0.5 + + 64 14 5 0 + 2 0.143 + 19 0.0714 + 32 0.0714 + 45 0.0714 + 47 0.643 + + 68 3 3 0 + 30 0.333 + 31 0.333 + 32 0.333 + + 69 60692 42 0 + 0 0.00158 + 1 0.00028 + 2 0.0584 + 3 0.000807 + 4 0.00377 + 5 1.65e-05 + 7 0.151 + 8 0.00282 + 9 0.00028 + 10 0.000362 + 12 3.3e-05 + 13 0.0177 + 14 0.00774 + 15 0.00254 + 16 8.24e-05 + 17 3.3e-05 + 18 1.65e-05 + 19 0.000478 + 21 0.0109 + 22 0.000198 + 23 1.65e-05 + 24 9.89e-05 + 25 1.65e-05 + 26 0.000198 + 28 0.0117 + 29 0.0552 + 30 0.00512 + 31 0.00315 + 32 0.0136 + 33 0.0144 + 34 0.00796 + 35 0.00639 + 36 1.65e-05 + 37 0.0274 + 40 4.94e-05 + 41 0.167 + 42 0.0115 + 43 0.00028 + 44 0.00185 + 45 0.047 + 46 0.0179 + 47 0.35 + + 57 5900 27 12 + 2 0.0561 + 3 0.000339 + 4 0.00102 + 7 0.0334 + 8 0.000508 + 9 0.000169 + 13 0.0149 + 14 0.00797 + 15 0.00831 + 16 0.000169 + 19 0.000339 + 21 0.00746 + 28 0.000508 + 29 0.000169 + 31 0.000847 + 32 0.000169 + 33 0.000339 + 34 0.00576 + 35 0.00237 + 37 0.00119 + 40 0.000678 + 41 0.117 + 42 0.0103 + 44 0.00441 + 45 0.0295 + 46 0.000508 + 47 0.696 + + 41 4850 19 0 + 2 0.0485 + 3 0.000206 + 4 0.000412 + 7 0.0221 + 13 0.00536 + 14 0.00103 + 15 0.00227 + 21 0.00515 + 28 0.000206 + 29 0.000206 + 34 0.000206 + 37 0.000412 + 40 0.000619 + 41 0.132 + 42 0.00928 + 44 0.00536 + 45 0.0262 + 46 0.000412 + 47 0.74 + + 42 18 3 0 + 42 0.111 + 45 0.0556 + 47 0.833 + + 44 2 1 0 + 45 1 + + 46 2 1 0 + 45 1 + + 47 28 11 0 + 7 0.107 + 8 0.0357 + 13 0.107 + 14 0.0357 + 31 0.179 + 32 0.0357 + 37 0.0357 + 41 0.0714 + 42 0.0357 + 45 0.0714 + 47 0.286 + + 49 12 5 0 + 2 0.167 + 13 0.167 + 35 0.0833 + 41 0.0833 + 47 0.5 + + 55 612 13 0 + 2 0.126 + 4 0.00327 + 7 0.127 + 13 0.031 + 21 0.0261 + 28 0.00327 + 33 0.00163 + 37 0.00654 + 40 0.00163 + 41 0.0392 + 42 0.018 + 45 0.049 + 47 0.567 + + 57 50 8 0 + 2 0.02 + 7 0.02 + 14 0.02 + 15 0.02 + 41 0.08 + 42 0.02 + 45 0.02 + 47 0.8 + + 58 106 7 0 + 2 0.0755 + 13 0.00943 + 41 0.00943 + 42 0.00943 + 45 0.066 + 46 0.00943 + 47 0.821 + + 62 14 4 0 + 2 0.286 + 9 0.0714 + 21 0.0714 + 47 0.571 + + 64 6 4 0 + 8 0.167 + 19 0.167 + 45 0.167 + 47 0.5 + + 69 196 17 0 + 2 0.0153 + 3 0.0051 + 4 0.0102 + 7 0.0408 + 8 0.0051 + 13 0.189 + 14 0.204 + 15 0.189 + 16 0.0051 + 19 0.0051 + 21 0.0102 + 33 0.0051 + 34 0.168 + 35 0.0663 + 41 0.0714 + 45 0.0051 + 47 0.0051 + + 58 579 32 8 + 0 0.00173 + 2 0.0311 + 3 0.00864 + 4 0.0155 + 7 0.0138 + 8 0.019 + 9 0.00345 + 10 0.00173 + 11 0.00173 + 13 0.337 + 14 0.162 + 15 0.0725 + 16 0.00345 + 18 0.00345 + 19 0.0104 + 21 0.154 + 22 0.00518 + 23 0.00173 + 24 0.00173 + 28 0.00345 + 29 0.00345 + 30 0.00345 + 31 0.0173 + 32 0.00345 + 33 0.00864 + 34 0.00691 + 35 0.00345 + 37 0.00345 + 41 0.0691 + 42 0.00173 + 46 0.0242 + 47 0.00345 + + 41 32 9 0 + 2 0.0312 + 3 0.0312 + 13 0.25 + 14 0.0312 + 21 0.0625 + 32 0.0312 + 41 0.156 + 46 0.375 + 47 0.0312 + + 42 3 3 0 + 21 0.333 + 41 0.333 + 47 0.333 + + 45 95 13 0 + 2 0.0421 + 4 0.0316 + 7 0.0211 + 8 0.0211 + 13 0.368 + 14 0.158 + 15 0.0526 + 19 0.0105 + 21 0.168 + 31 0.0316 + 33 0.0105 + 37 0.0105 + 41 0.0737 + + 55 212 26 0 + 0 0.00472 + 2 0.0425 + 3 0.0142 + 4 0.00943 + 7 0.00943 + 8 0.0236 + 9 0.00472 + 10 0.00472 + 11 0.00472 + 13 0.259 + 14 0.118 + 15 0.0283 + 19 0.0142 + 21 0.278 + 22 0.00943 + 23 0.00472 + 24 0.00472 + 28 0.00472 + 29 0.00943 + 30 0.00472 + 31 0.0236 + 32 0.00472 + 33 0.0189 + 37 0.00472 + 41 0.0849 + 46 0.00943 + + 57 3 3 0 + 2 0.333 + 21 0.333 + 42 0.333 + + 62 13 9 0 + 3 0.0769 + 7 0.0769 + 8 0.0769 + 9 0.0769 + 13 0.308 + 14 0.0769 + 21 0.154 + 31 0.0769 + 41 0.0769 + + 64 6 3 0 + 2 0.5 + 13 0.167 + 21 0.333 + + 69 207 17 0 + 4 0.0193 + 7 0.0145 + 8 0.0145 + 13 0.435 + 14 0.237 + 15 0.14 + 16 0.00966 + 18 0.00966 + 19 0.00966 + 21 0.029 + 22 0.00483 + 28 0.00483 + 30 0.00483 + 31 0.00483 + 34 0.0193 + 35 0.00966 + 41 0.0338 + + 62 6481 29 9 + 0 0.00108 + 2 0.0227 + 4 0.000926 + 7 0.0389 + 8 0.00463 + 9 0.00108 + 13 0.00339 + 14 0.000463 + 15 0.000309 + 19 0.000309 + 21 0.00355 + 22 0.000154 + 28 0.00123 + 29 0.01 + 30 0.00108 + 31 0.000771 + 32 0.0017 + 33 0.00324 + 34 0.00417 + 35 0.00108 + 37 0.00386 + 40 0.000154 + 41 0.0728 + 42 0.0151 + 43 0.000154 + 44 0.00278 + 45 0.186 + 46 0.00154 + 47 0.617 + + 41 2566 9 0 + 2 0.00857 + 7 0.000779 + 21 0.000779 + 41 0.0744 + 42 0.00468 + 44 0.00039 + 45 0.295 + 46 0.00234 + 47 0.613 + + 42 4 2 0 + 42 0.75 + 45 0.25 + + 45 3 1 0 + 7 1 + + 46 10 1 0 + 45 1 + + 47 3515 29 0 + 0 0.00199 + 2 0.0259 + 4 0.00171 + 7 0.0512 + 8 0.00853 + 9 0.00199 + 13 0.00597 + 14 0.000853 + 15 0.000569 + 19 0.000569 + 21 0.00455 + 22 0.000284 + 28 0.00228 + 29 0.0182 + 30 0.00199 + 31 0.00142 + 32 0.00199 + 33 0.00569 + 34 0.00768 + 35 0.00199 + 37 0.00683 + 40 0.000284 + 41 0.0688 + 42 0.0216 + 43 0.000284 + 44 0.00427 + 45 0.118 + 46 0.00114 + 47 0.634 + + 49 6 4 0 + 2 0.167 + 7 0.333 + 41 0.333 + 47 0.167 + + 55 102 6 0 + 2 0.049 + 13 0.0098 + 41 0.0098 + 42 0.0196 + 45 0.0098 + 47 0.902 + + 58 17 3 0 + 2 0.118 + 45 0.0588 + 47 0.824 + + 69 256 12 0 + 2 0.102 + 7 0.254 + 21 0.0195 + 29 0.00391 + 32 0.0156 + 33 0.00391 + 37 0.00391 + 41 0.141 + 42 0.0195 + 44 0.00781 + 45 0.0664 + 47 0.363 + + 64 2370 27 7 + 0 0.000844 + 2 0.0992 + 4 0.00127 + 7 0.0726 + 8 0.0207 + 9 0.00127 + 10 0.000422 + 13 0.00464 + 14 0.00338 + 19 0.000422 + 21 0.00759 + 22 0.00169 + 29 0.00338 + 30 0.000422 + 32 0.00211 + 33 0.00127 + 34 0.000422 + 35 0.000422 + 37 0.000844 + 40 0.000844 + 41 0.101 + 42 0.0122 + 43 0.000422 + 44 0.00127 + 45 0.11 + 46 0.00127 + 47 0.55 + + 41 1979 21 0 + 0 0.000505 + 2 0.099 + 4 0.00152 + 7 0.0753 + 10 0.000505 + 13 0.00152 + 14 0.000505 + 21 0.00707 + 29 0.00303 + 32 0.00202 + 33 0.00101 + 35 0.000505 + 37 0.000505 + 40 0.000505 + 41 0.111 + 42 0.0116 + 43 0.000505 + 44 0.00152 + 45 0.106 + 46 0.000505 + 47 0.576 + + 47 74 10 0 + 8 0.662 + 9 0.0405 + 13 0.0811 + 14 0.0541 + 19 0.0135 + 21 0.0405 + 22 0.0541 + 41 0.0135 + 46 0.027 + 47 0.0135 + + 49 6 4 0 + 32 0.167 + 41 0.333 + 45 0.333 + 47 0.167 + + 55 100 11 0 + 2 0.12 + 7 0.13 + 13 0.01 + 14 0.01 + 21 0.01 + 29 0.02 + 40 0.01 + 41 0.11 + 42 0.03 + 45 0.08 + 47 0.47 + + 58 68 6 0 + 2 0.132 + 7 0.0147 + 41 0.0441 + 42 0.0147 + 45 0.118 + 47 0.676 + + 62 3 2 0 + 2 0.333 + 45 0.667 + + 69 121 13 0 + 0 0.00826 + 2 0.116 + 7 0.0496 + 13 0.00826 + 14 0.0165 + 30 0.00826 + 33 0.00826 + 34 0.00826 + 37 0.00826 + 41 0.00826 + 42 0.00826 + 45 0.231 + 47 0.521 + + 65 8 2 0 + 45 0.5 + 47 0.5 + + 66 35 6 1 + 2 0.0571 + 21 0.286 + 41 0.0286 + 42 0.2 + 44 0.0286 + 47 0.4 + + 47 3 2 0 + 2 0.667 + 42 0.333 + + 67 6 2 0 + 45 0.667 + 47 0.333 + + 68 21 11 0 + 7 0.0476 + 13 0.0476 + 14 0.0476 + 19 0.0952 + 21 0.0476 + 28 0.0476 + 31 0.0476 + 41 0.0476 + 42 0.0476 + 45 0.0952 + 47 0.429 + + 69 90079 42 2 + 0 0.00829 + 1 0.000155 + 2 0.00168 + 3 0.00775 + 4 0.0133 + 5 0.00924 + 6 0.000144 + 7 0.0348 + 8 0.0152 + 9 0.000844 + 10 0.000544 + 12 0.000444 + 13 0.201 + 14 0.151 + 15 0.13 + 16 0.00602 + 18 0.0014 + 19 0.154 + 20 0.000144 + 21 0.0443 + 22 0.000366 + 23 5.55e-05 + 24 0.00124 + 26 0.00173 + 27 2.22e-05 + 28 0.00959 + 29 0.0139 + 30 0.00948 + 31 0.0174 + 32 0.00625 + 33 0.00968 + 34 0.0385 + 35 0.0187 + 37 0.00109 + 40 9.99e-05 + 41 0.0694 + 42 0.00417 + 43 0.00219 + 44 0.000244 + 45 0.00562 + 46 0.0036 + 47 0.00728 + + 41 4 2 0 + 13 0.75 + 15 0.25 + + 69 6 5 0 + 13 0.167 + 14 0.333 + 34 0.167 + 41 0.167 + 46 0.167 + + 74 22 8 0 + 2 0.0909 + 5 0.0455 + 13 0.0455 + 18 0.0455 + 41 0.545 + 42 0.0455 + 45 0.0909 + 47 0.0909 + +63 79666 1 0 + 47 1 + +64 56433 41 26 + 0 0.0151 + 1 3.54e-05 + 2 0.021 + 3 0.00828 + 4 0.00434 + 5 7.09e-05 + 6 3.54e-05 + 7 0.0226 + 8 0.0251 + 9 0.00383 + 10 0.000656 + 12 3.54e-05 + 13 0.178 + 14 0.1 + 15 0.0189 + 16 0.00159 + 17 0.000106 + 18 0.000213 + 19 0.00564 + 21 0.0233 + 22 0.00184 + 24 0.00365 + 26 0.00124 + 28 0.0339 + 29 0.164 + 30 0.0194 + 31 0.0203 + 32 0.0433 + 33 0.0486 + 34 3.54e-05 + 35 0.000284 + 36 1.77e-05 + 37 8.86e-05 + 40 7.09e-05 + 41 0.155 + 42 0.0084 + 43 0.000939 + 44 0.00119 + 45 0.0125 + 46 0.0073 + 47 0.0483 + + 2 17 8 0 + 7 0.176 + 13 0.0588 + 22 0.0588 + 28 0.176 + 30 0.0588 + 41 0.294 + 46 0.0588 + 47 0.118 + + 4 202 17 0 + 0 0.0891 + 2 0.0594 + 3 0.0149 + 8 0.00495 + 13 0.144 + 14 0.00495 + 21 0.0149 + 24 0.0099 + 28 0.0743 + 29 0.342 + 30 0.0396 + 31 0.0347 + 32 0.099 + 33 0.0446 + 41 0.0149 + 42 0.00495 + 45 0.00495 + + 7 10218 35 1 + 0 0.0262 + 2 0.0361 + 3 0.00861 + 4 0.000587 + 7 0.0236 + 8 0.0418 + 9 0.00803 + 10 0.000685 + 12 9.79e-05 + 13 0.141 + 14 0.0686 + 15 0.0234 + 16 0.00147 + 18 0.000294 + 19 0.00832 + 21 0.065 + 22 0.00431 + 24 0.00528 + 26 0.000391 + 28 0.0397 + 29 0.102 + 30 0.0302 + 31 0.0349 + 32 0.0379 + 33 0.0506 + 34 9.79e-05 + 35 0.00108 + 37 9.79e-05 + 41 0.11 + 42 0.00851 + 43 0.00127 + 44 0.00137 + 45 0.019 + 46 0.00617 + 47 0.0931 + + 7 48 15 0 + 0 0.0208 + 8 0.0208 + 13 0.125 + 14 0.125 + 18 0.0208 + 21 0.104 + 28 0.0625 + 29 0.0208 + 30 0.0417 + 32 0.0208 + 33 0.0625 + 41 0.229 + 42 0.0417 + 46 0.0208 + 47 0.0833 + + 12 1 1 0 + 42 1 + + 13 8 7 0 + 2 0.125 + 7 0.125 + 8 0.125 + 13 0.25 + 14 0.125 + 21 0.125 + 30 0.125 + + 15 14 1 0 + 47 1 + + 21 385 23 4 + 0 0.0182 + 2 0.0779 + 3 0.0104 + 4 0.0026 + 7 0.0545 + 8 0.0234 + 13 0.0909 + 14 0.0649 + 15 0.013 + 19 0.0104 + 21 0.0571 + 24 0.013 + 28 0.0234 + 29 0.013 + 30 0.0156 + 31 0.0312 + 32 0.0026 + 33 0.0026 + 41 0.249 + 42 0.026 + 45 0.0416 + 46 0.013 + 47 0.145 + + 7 246 21 0 + 2 0.0813 + 3 0.0122 + 7 0.061 + 8 0.0325 + 13 0.0854 + 14 0.061 + 15 0.0163 + 19 0.0122 + 21 0.0285 + 24 0.00407 + 28 0.00813 + 29 0.0122 + 30 0.0122 + 31 0.0163 + 32 0.00407 + 33 0.00407 + 41 0.297 + 42 0.0407 + 45 0.0407 + 46 0.0203 + 47 0.15 + + 21 13 8 0 + 2 0.0769 + 7 0.0769 + 8 0.0769 + 13 0.231 + 14 0.154 + 21 0.231 + 29 0.0769 + 41 0.0769 + + 47 118 18 0 + 0 0.0508 + 2 0.0678 + 3 0.00847 + 4 0.00847 + 7 0.0424 + 13 0.0932 + 14 0.0593 + 15 0.00847 + 19 0.00847 + 21 0.102 + 24 0.0339 + 28 0.0508 + 29 0.00847 + 30 0.0254 + 31 0.0678 + 41 0.178 + 45 0.0424 + 47 0.144 + + 71 5 5 0 + 2 0.2 + 14 0.2 + 28 0.2 + 45 0.2 + 47 0.2 + + 26 2 1 0 + 30 1 + + 34 10 5 0 + 2 0.1 + 13 0.4 + 14 0.1 + 41 0.2 + 47 0.2 + + 35 5 2 0 + 2 0.4 + 47 0.6 + + 41 8 5 0 + 8 0.25 + 13 0.375 + 14 0.125 + 28 0.125 + 33 0.125 + + 44 5 4 0 + 2 0.2 + 8 0.4 + 14 0.2 + 30 0.2 + + 45 26 7 0 + 2 0.0385 + 13 0.0769 + 14 0.0769 + 28 0.0769 + 29 0.269 + 33 0.192 + 41 0.269 + + 47 27924 40 25 + 0 0.0152 + 1 3.58e-05 + 2 0.0212 + 3 0.00834 + 4 0.00437 + 5 7.16e-05 + 6 3.58e-05 + 7 0.0219 + 8 0.0252 + 9 0.0038 + 10 0.000573 + 12 3.58e-05 + 13 0.18 + 14 0.1 + 15 0.0191 + 16 0.00161 + 17 0.000107 + 18 0.000215 + 19 0.00569 + 21 0.0165 + 22 0.00175 + 24 0.00369 + 26 0.00125 + 28 0.0342 + 29 0.166 + 30 0.0196 + 31 0.0206 + 32 0.0438 + 33 0.0491 + 34 3.58e-05 + 35 0.000179 + 37 7.16e-05 + 40 7.16e-05 + 41 0.156 + 42 0.00849 + 43 0.000931 + 44 0.00111 + 45 0.0122 + 46 0.00734 + 47 0.0488 + + 2 12 7 0 + 7 0.25 + 13 0.0833 + 22 0.0833 + 28 0.25 + 30 0.0833 + 41 0.0833 + 47 0.167 + + 4 201 17 0 + 0 0.0896 + 2 0.0597 + 3 0.0149 + 8 0.00498 + 13 0.144 + 14 0.00498 + 21 0.00995 + 24 0.00995 + 28 0.0746 + 29 0.343 + 30 0.0398 + 31 0.0348 + 32 0.0995 + 33 0.0448 + 41 0.0149 + 42 0.00498 + 45 0.00498 + + 7 9753 35 0 + 0 0.0275 + 2 0.0378 + 3 0.00892 + 4 0.000615 + 7 0.0198 + 8 0.0437 + 9 0.00841 + 10 0.000513 + 12 0.000103 + 13 0.146 + 14 0.0687 + 15 0.0245 + 16 0.00154 + 18 0.000308 + 19 0.00872 + 21 0.0321 + 22 0.00451 + 24 0.00554 + 26 0.00041 + 28 0.0416 + 29 0.107 + 30 0.0317 + 31 0.0366 + 32 0.0397 + 33 0.053 + 34 0.000103 + 35 0.000513 + 37 0.000103 + 41 0.115 + 42 0.00892 + 43 0.00133 + 44 0.00113 + 45 0.0199 + 46 0.00646 + 47 0.0975 + + 12 1 1 0 + 42 1 + + 13 7 6 0 + 2 0.143 + 8 0.143 + 13 0.286 + 14 0.143 + 21 0.143 + 30 0.143 + + 15 14 1 0 + 47 1 + + 21 367 23 0 + 0 0.0191 + 2 0.0817 + 3 0.0109 + 4 0.00272 + 7 0.0572 + 8 0.0245 + 13 0.0899 + 14 0.0654 + 15 0.0136 + 19 0.0109 + 21 0.0191 + 24 0.0136 + 28 0.0245 + 29 0.0136 + 30 0.0163 + 31 0.0327 + 32 0.00272 + 33 0.00272 + 41 0.262 + 42 0.0272 + 45 0.0436 + 46 0.0136 + 47 0.153 + + 26 2 1 0 + 30 1 + + 34 10 5 0 + 2 0.1 + 13 0.4 + 14 0.1 + 41 0.2 + 47 0.2 + + 35 4 2 0 + 2 0.25 + 47 0.75 + + 41 2 2 0 + 28 0.5 + 33 0.5 + + 44 5 4 0 + 2 0.2 + 8 0.4 + 14 0.2 + 30 0.2 + + 45 24 7 0 + 2 0.0417 + 13 0.0833 + 14 0.0833 + 28 0.0833 + 29 0.292 + 33 0.208 + 41 0.208 + + 49 130 21 0 + 0 0.0385 + 2 0.0385 + 7 0.00769 + 8 0.0308 + 13 0.0923 + 14 0.0385 + 15 0.00769 + 19 0.00769 + 21 0.0385 + 24 0.00769 + 28 0.00769 + 29 0.0154 + 30 0.00769 + 31 0.0231 + 33 0.00769 + 41 0.369 + 42 0.0615 + 44 0.00769 + 45 0.0308 + 46 0.0154 + 47 0.146 + + 55 50 13 0 + 2 0.02 + 7 0.04 + 13 0.14 + 14 0.08 + 15 0.06 + 21 0.04 + 29 0.1 + 30 0.02 + 31 0.04 + 33 0.12 + 41 0.2 + 42 0.02 + 47 0.12 + + 57 13 9 0 + 8 0.0769 + 13 0.231 + 14 0.154 + 29 0.0769 + 31 0.0769 + 41 0.154 + 42 0.0769 + 46 0.0769 + 47 0.0769 + + 62 7901 29 0 + 0 0.00253 + 2 0.000506 + 3 0.00797 + 4 0.00367 + 7 0.00101 + 8 0.0221 + 9 0.0024 + 10 0.00101 + 13 0.172 + 14 0.078 + 15 0.00848 + 16 0.000127 + 17 0.000253 + 18 0.000127 + 19 0.00329 + 21 0.00633 + 22 0.000127 + 24 0.000759 + 28 0.0291 + 29 0.424 + 30 0.0182 + 31 0.0151 + 32 0.0938 + 33 0.0919 + 41 0.0103 + 42 0.00101 + 43 0.000506 + 45 0.00165 + 46 0.00354 + + 64 337 24 0 + 0 0.0326 + 2 0.0089 + 4 0.00593 + 7 0.0386 + 8 0.0326 + 13 0.131 + 14 0.0504 + 15 0.0089 + 19 0.0119 + 21 0.00297 + 22 0.00297 + 24 0.0119 + 26 0.00297 + 28 0.0801 + 29 0.285 + 30 0.0178 + 31 0.0148 + 32 0.0475 + 33 0.107 + 41 0.0623 + 42 0.0089 + 44 0.00297 + 45 0.0178 + 47 0.0148 + + 66 31 12 0 + 2 0.0645 + 7 0.0323 + 9 0.0645 + 13 0.226 + 14 0.0323 + 15 0.0645 + 18 0.0323 + 28 0.0323 + 29 0.0323 + 31 0.0968 + 41 0.0968 + 47 0.226 + + 68 2 2 0 + 8 0.5 + 47 0.5 + + 70 36 15 0 + 0 0.0278 + 2 0.0833 + 7 0.167 + 13 0.0278 + 19 0.0278 + 24 0.0278 + 28 0.111 + 29 0.0278 + 30 0.0278 + 31 0.0278 + 32 0.111 + 33 0.139 + 42 0.0278 + 45 0.0556 + 47 0.111 + + 71 1934 30 0 + 0 0.0274 + 2 0.0398 + 3 0.015 + 4 0.000517 + 7 0.0729 + 8 0.0217 + 9 0.00103 + 10 0.00103 + 13 0.171 + 14 0.0693 + 15 0.0274 + 18 0.000517 + 19 0.00982 + 21 0.0274 + 22 0.000517 + 24 0.0062 + 26 0.0031 + 28 0.06 + 29 0.0186 + 30 0.0129 + 31 0.0202 + 32 0.0119 + 33 0.0186 + 40 0.00103 + 41 0.204 + 42 0.014 + 44 0.00155 + 45 0.0264 + 46 0.0114 + 47 0.105 + + 72 6740 35 0 + 0 0.00608 + 1 0.000148 + 2 0.0113 + 3 0.00653 + 4 0.012 + 5 0.000297 + 6 0.000148 + 7 0.0323 + 8 0.00445 + 9 0.000148 + 10 0.000148 + 13 0.241 + 14 0.19 + 15 0.0223 + 16 0.00415 + 17 0.000148 + 19 0.00282 + 21 0.00415 + 22 0.000148 + 24 0.00267 + 26 0.00356 + 28 0.02 + 29 0.00341 + 30 0.00564 + 31 0.00356 + 32 0.0046 + 33 0.00401 + 37 0.000148 + 41 0.368 + 42 0.012 + 43 0.00134 + 44 0.00208 + 45 0.00712 + 46 0.0111 + 47 0.0126 + + 73 321 18 0 + 0 0.00312 + 2 0.0125 + 3 0.00935 + 4 0.00623 + 8 0.00623 + 13 0.424 + 14 0.137 + 15 0.0343 + 16 0.00312 + 28 0.0125 + 30 0.00623 + 31 0.00312 + 33 0.00623 + 41 0.277 + 42 0.0187 + 44 0.00312 + 45 0.00935 + 46 0.028 + + 74 14 5 0 + 7 0.286 + 41 0.143 + 42 0.143 + 45 0.143 + 47 0.286 + + 49 130 21 3 + 0 0.0385 + 2 0.0385 + 7 0.00769 + 8 0.0308 + 13 0.0923 + 14 0.0385 + 15 0.00769 + 19 0.00769 + 21 0.0385 + 24 0.00769 + 28 0.00769 + 29 0.0154 + 30 0.00769 + 31 0.0231 + 33 0.00769 + 41 0.369 + 42 0.0615 + 44 0.00769 + 45 0.0308 + 46 0.0154 + 47 0.146 + + 21 2 2 0 + 30 0.5 + 31 0.5 + + 71 10 6 0 + 8 0.1 + 14 0.1 + 41 0.3 + 42 0.2 + 46 0.1 + 47 0.2 + + 72 7 5 0 + 0 0.429 + 21 0.143 + 33 0.143 + 41 0.143 + 47 0.143 + + 55 50 13 0 + 2 0.02 + 7 0.04 + 13 0.14 + 14 0.08 + 15 0.06 + 21 0.04 + 29 0.1 + 30 0.02 + 31 0.04 + 33 0.12 + 41 0.2 + 42 0.02 + 47 0.12 + + 57 13 9 0 + 8 0.0769 + 13 0.231 + 14 0.154 + 29 0.0769 + 31 0.0769 + 41 0.154 + 42 0.0769 + 46 0.0769 + 47 0.0769 + + 62 7950 30 0 + 0 0.00252 + 2 0.000503 + 3 0.00792 + 4 0.00365 + 7 0.00126 + 8 0.022 + 9 0.00289 + 10 0.00113 + 13 0.172 + 14 0.0776 + 15 0.00843 + 16 0.000126 + 17 0.000252 + 18 0.000126 + 19 0.00327 + 21 0.00654 + 22 0.000881 + 24 0.000755 + 28 0.0289 + 29 0.421 + 30 0.0181 + 31 0.015 + 32 0.0932 + 33 0.0913 + 37 0.000126 + 41 0.0102 + 42 0.00101 + 43 0.000629 + 45 0.00453 + 46 0.00365 + + 64 340 24 0 + 0 0.0324 + 2 0.00882 + 4 0.00588 + 7 0.0382 + 8 0.0324 + 13 0.129 + 14 0.05 + 15 0.00882 + 19 0.0118 + 21 0.0118 + 22 0.00294 + 24 0.0118 + 26 0.00294 + 28 0.0794 + 29 0.282 + 30 0.0176 + 31 0.0147 + 32 0.0471 + 33 0.106 + 41 0.0618 + 42 0.00882 + 44 0.00294 + 45 0.0176 + 47 0.0147 + + 66 31 12 0 + 2 0.0645 + 7 0.0323 + 9 0.0645 + 13 0.226 + 14 0.0323 + 15 0.0645 + 18 0.0323 + 28 0.0323 + 29 0.0323 + 31 0.0968 + 41 0.0968 + 47 0.226 + + 68 2 2 0 + 8 0.5 + 47 0.5 + + 70 36 15 0 + 0 0.0278 + 2 0.0833 + 7 0.167 + 13 0.0278 + 19 0.0278 + 24 0.0278 + 28 0.111 + 29 0.0278 + 30 0.0278 + 31 0.0278 + 32 0.111 + 33 0.139 + 42 0.0278 + 45 0.0556 + 47 0.111 + + 71 1950 30 0 + 0 0.0272 + 2 0.04 + 3 0.0149 + 4 0.000513 + 7 0.0723 + 8 0.0215 + 9 0.00103 + 10 0.00205 + 13 0.169 + 14 0.0687 + 15 0.0272 + 18 0.000513 + 19 0.00974 + 21 0.0338 + 22 0.000513 + 24 0.00615 + 26 0.00308 + 28 0.0595 + 29 0.0185 + 30 0.0128 + 31 0.02 + 32 0.0118 + 33 0.0185 + 40 0.00103 + 41 0.202 + 42 0.0138 + 44 0.00154 + 45 0.0262 + 46 0.0113 + 47 0.105 + + 72 6757 36 0 + 0 0.00607 + 1 0.000148 + 2 0.0112 + 3 0.00651 + 4 0.0121 + 5 0.000296 + 6 0.000148 + 7 0.0323 + 8 0.00474 + 9 0.000148 + 10 0.000148 + 13 0.24 + 14 0.19 + 15 0.0222 + 16 0.00414 + 17 0.000148 + 19 0.00281 + 21 0.00503 + 22 0.000148 + 24 0.00266 + 26 0.00355 + 28 0.02 + 29 0.0034 + 30 0.00562 + 31 0.00355 + 32 0.00459 + 33 0.004 + 36 0.000148 + 37 0.000148 + 41 0.367 + 42 0.012 + 43 0.00133 + 44 0.00237 + 45 0.00755 + 46 0.0111 + 47 0.0126 + + 73 321 18 0 + 0 0.00312 + 2 0.0125 + 3 0.00935 + 4 0.00623 + 8 0.00623 + 13 0.424 + 14 0.137 + 15 0.0343 + 16 0.00312 + 28 0.0125 + 30 0.00623 + 31 0.00312 + 33 0.00623 + 41 0.277 + 42 0.0187 + 44 0.00312 + 45 0.00935 + 46 0.028 + + 74 14 5 0 + 7 0.286 + 41 0.143 + 42 0.143 + 45 0.143 + 47 0.286 + +65 683 22 14 + 0 0.00878 + 2 0.0293 + 7 0.00293 + 8 0.00586 + 9 0.00146 + 12 0.00146 + 13 0.0293 + 14 0.00732 + 15 0.00146 + 21 0.0351 + 28 0.00439 + 31 0.00146 + 34 0.00146 + 35 0.124 + 37 0.113 + 40 0.00586 + 41 0.0527 + 42 0.0366 + 44 0.00293 + 45 0.133 + 46 0.00293 + 47 0.398 + + 2 12 3 0 + 0 0.0833 + 44 0.0833 + 47 0.833 + + 21 11 3 0 + 0 0.0909 + 45 0.0909 + 47 0.818 + + 41 14 6 0 + 8 0.214 + 13 0.429 + 15 0.0714 + 21 0.143 + 31 0.0714 + 37 0.0714 + + 45 28 3 0 + 41 0.143 + 42 0.0357 + 47 0.821 + + 46 2 1 0 + 41 1 + + 47 198 10 1 + 0 0.00505 + 2 0.0202 + 7 0.00505 + 21 0.00505 + 28 0.00505 + 40 0.0101 + 41 0.0455 + 42 0.0606 + 45 0.157 + 47 0.687 + + 45 27 3 0 + 41 0.111 + 42 0.037 + 47 0.852 + + 58 5 3 0 + 13 0.2 + 28 0.2 + 37 0.6 + + 62 7 4 0 + 14 0.143 + 35 0.429 + 37 0.286 + 47 0.143 + + 64 12 4 0 + 0 0.0833 + 42 0.0833 + 45 0.25 + 47 0.583 + + 65 3 3 0 + 2 0.333 + 41 0.333 + 42 0.333 + + 67 184 13 0 + 0 0.00543 + 2 0.0109 + 8 0.00543 + 9 0.00543 + 12 0.00543 + 13 0.0652 + 14 0.0217 + 21 0.0489 + 34 0.00543 + 35 0.429 + 37 0.37 + 41 0.0217 + 45 0.00543 + + 69 1 1 0 + 0 1 + + 71 83 9 0 + 2 0.0843 + 21 0.0723 + 28 0.012 + 41 0.0723 + 42 0.0361 + 44 0.012 + 45 0.301 + 46 0.012 + 47 0.398 + + 72 108 9 0 + 2 0.0556 + 7 0.00926 + 21 0.0556 + 40 0.0185 + 41 0.0833 + 42 0.0648 + 45 0.278 + 46 0.00926 + 47 0.426 + +66 9695 38 20 + 0 0.00743 + 2 0.00918 + 3 0.0032 + 4 0.00196 + 5 0.000103 + 6 0.000103 + 7 0.0099 + 8 0.0141 + 9 0.00124 + 10 0.000103 + 12 0.00258 + 13 0.0709 + 14 0.033 + 15 0.00949 + 16 0.000413 + 18 0.000309 + 19 0.00825 + 21 0.0228 + 22 0.000825 + 24 0.00175 + 26 0.000413 + 28 0.00495 + 29 0.00155 + 30 0.00196 + 31 0.00495 + 32 0.00155 + 33 0.00134 + 34 0.000413 + 35 0.000722 + 37 0.000206 + 40 0.00144 + 41 0.158 + 42 0.0033 + 43 0.000619 + 44 0.000309 + 45 0.108 + 46 0.14 + 47 0.372 + + 0 88 14 2 + 2 0.227 + 3 0.0227 + 4 0.0114 + 7 0.227 + 9 0.0227 + 13 0.114 + 14 0.0227 + 18 0.0114 + 21 0.205 + 31 0.0341 + 35 0.0114 + 41 0.0227 + 42 0.0114 + 47 0.0568 + + 47 34 7 0 + 2 0.235 + 4 0.0294 + 7 0.559 + 13 0.0588 + 21 0.0588 + 35 0.0294 + 41 0.0294 + + 55 54 12 0 + 2 0.222 + 3 0.037 + 7 0.0185 + 9 0.037 + 13 0.148 + 14 0.037 + 18 0.0185 + 21 0.296 + 31 0.0556 + 41 0.0185 + 42 0.0185 + 47 0.0926 + + 2 31 3 0 + 41 0.0323 + 45 0.0323 + 47 0.935 + + 12 26 8 0 + 2 0.308 + 13 0.154 + 15 0.0769 + 21 0.231 + 35 0.0385 + 37 0.0385 + 41 0.0769 + 47 0.0769 + + 21 7 4 0 + 12 0.143 + 19 0.286 + 42 0.143 + 47 0.429 + + 33 4 2 0 + 21 0.75 + 47 0.25 + + 40 9 5 0 + 8 0.111 + 13 0.556 + 24 0.111 + 30 0.111 + 42 0.111 + + 41 1398 28 4 + 0 0.0122 + 2 0.000715 + 3 0.0179 + 4 0.00787 + 5 0.000715 + 6 0.000715 + 7 0.0114 + 8 0.0858 + 9 0.00572 + 10 0.000715 + 12 0.00143 + 13 0.408 + 14 0.192 + 15 0.0451 + 16 0.00286 + 19 0.0258 + 21 0.0672 + 22 0.00501 + 24 0.0114 + 26 0.00215 + 28 0.0315 + 29 0.00858 + 30 0.0107 + 31 0.0222 + 32 0.00858 + 33 0.00787 + 35 0.000715 + 43 0.00429 + + 46 1150 27 0 + 0 0.0139 + 3 0.0104 + 4 0.00957 + 5 0.00087 + 6 0.00087 + 7 0.013 + 8 0.0957 + 9 0.00522 + 10 0.00087 + 12 0.00174 + 13 0.415 + 14 0.17 + 15 0.0435 + 16 0.00348 + 19 0.0304 + 21 0.0661 + 22 0.00435 + 24 0.0139 + 26 0.00261 + 28 0.0322 + 29 0.0087 + 30 0.013 + 31 0.0235 + 32 0.00957 + 33 0.00609 + 35 0.00087 + 43 0.00435 + + 49 7 6 0 + 3 0.143 + 8 0.143 + 13 0.143 + 14 0.143 + 15 0.143 + 29 0.286 + + 57 6 3 0 + 13 0.333 + 14 0.167 + 21 0.5 + + 69 231 17 0 + 0 0.00433 + 2 0.00433 + 3 0.0519 + 7 0.00433 + 8 0.039 + 9 0.00866 + 13 0.385 + 14 0.303 + 15 0.0519 + 19 0.00433 + 21 0.0606 + 22 0.00866 + 28 0.0303 + 31 0.0173 + 32 0.00433 + 33 0.0173 + 43 0.00433 + + 45 1037 7 1 + 2 0.00193 + 34 0.000964 + 41 0.000964 + 42 0.00193 + 44 0.000964 + 46 0.000964 + 47 0.992 + + 69 1 1 0 + 46 1 + + 46 1179 3 0 + 40 0.0119 + 41 0.978 + 46 0.0102 + + 47 2027 21 10 + 2 0.0143 + 7 0.0192 + 9 0.000987 + 13 0.00345 + 14 0.000493 + 15 0.000987 + 18 0.000493 + 21 0.00691 + 28 0.000493 + 29 0.000493 + 31 0.00148 + 32 0.000493 + 34 0.000987 + 35 0.00148 + 37 0.000493 + 41 0.0276 + 42 0.0074 + 44 0.000493 + 45 0.00296 + 46 0.0183 + 47 0.89 + + 0 52 11 0 + 2 0.115 + 7 0.385 + 9 0.0385 + 13 0.0577 + 14 0.0192 + 18 0.0192 + 21 0.154 + 31 0.0577 + 35 0.0192 + 41 0.0385 + 47 0.0962 + + 2 30 2 0 + 45 0.0333 + 47 0.967 + + 12 20 8 0 + 2 0.25 + 13 0.2 + 15 0.1 + 21 0.15 + 35 0.05 + 37 0.05 + 41 0.1 + 47 0.1 + + 45 1033 4 0 + 2 0.000968 + 34 0.000968 + 42 0.00194 + 47 0.996 + + 49 86 6 0 + 2 0.151 + 28 0.0116 + 42 0.0116 + 44 0.0116 + 45 0.0116 + 47 0.802 + + 51 6 2 0 + 42 0.333 + 47 0.667 + + 55 11 3 0 + 2 0.182 + 42 0.364 + 47 0.455 + + 57 83 5 0 + 2 0.012 + 7 0.012 + 42 0.012 + 45 0.012 + 47 0.952 + + 62 456 3 0 + 34 0.00219 + 42 0.00439 + 47 0.993 + + 69 198 10 0 + 7 0.0909 + 21 0.0152 + 29 0.00505 + 32 0.00505 + 35 0.00505 + 41 0.253 + 42 0.00505 + 45 0.0101 + 46 0.187 + 47 0.424 + + 48 31 3 0 + 2 0.0323 + 21 0.129 + 47 0.839 + + 49 98 8 0 + 2 0.163 + 21 0.0204 + 28 0.0102 + 41 0.0714 + 42 0.0102 + 44 0.0102 + 45 0.0102 + 47 0.704 + + 51 14 3 0 + 42 0.143 + 45 0.571 + 47 0.286 + + 55 97 11 4 + 0 0.567 + 2 0.0309 + 8 0.0103 + 12 0.227 + 15 0.0103 + 21 0.0103 + 33 0.0103 + 42 0.0412 + 45 0.0309 + 46 0.0103 + 47 0.0515 + + 41 5 4 0 + 2 0.2 + 15 0.2 + 45 0.4 + 47 0.2 + + 47 5 2 0 + 2 0.2 + 42 0.8 + + 57 1 1 0 + 33 1 + + 69 83 8 0 + 0 0.639 + 2 0.012 + 8 0.012 + 12 0.265 + 21 0.012 + 45 0.012 + 46 0.012 + 47 0.0361 + + 57 99 10 3 + 2 0.0303 + 7 0.0101 + 8 0.0101 + 13 0.0202 + 14 0.0101 + 21 0.0404 + 41 0.0606 + 42 0.0101 + 45 0.0101 + 47 0.798 + + 0 9 3 0 + 21 0.333 + 42 0.111 + 47 0.556 + + 41 8 2 0 + 41 0.625 + 47 0.375 + + 69 77 7 0 + 2 0.026 + 7 0.013 + 13 0.013 + 14 0.013 + 21 0.013 + 45 0.013 + 47 0.909 + + 58 6 5 0 + 8 0.167 + 13 0.333 + 14 0.167 + 15 0.167 + 19 0.167 + + 62 1478 6 2 + 2 0.00271 + 34 0.000677 + 41 0.000677 + 42 0.00135 + 45 0.688 + 47 0.306 + + 41 1357 6 0 + 2 0.00295 + 34 0.000737 + 41 0.000737 + 42 0.00147 + 45 0.739 + 47 0.255 + + 69 111 2 0 + 45 0.036 + 47 0.964 + + 64 11 5 0 + 2 0.0909 + 13 0.0909 + 41 0.0909 + 45 0.0909 + 47 0.636 + + 65 9 3 0 + 42 0.111 + 45 0.667 + 47 0.222 + + 69 2030 25 4 + 2 0.000493 + 3 0.00197 + 4 0.00345 + 7 0.00985 + 8 0.0064 + 13 0.0404 + 14 0.0227 + 15 0.0113 + 18 0.000493 + 19 0.0202 + 21 0.036 + 22 0.000493 + 26 0.000493 + 28 0.000985 + 29 0.000985 + 30 0.00148 + 31 0.00542 + 32 0.000985 + 33 0.000493 + 35 0.000493 + 41 0.146 + 42 0.000493 + 45 0.00148 + 46 0.645 + 47 0.0414 + + 41 2 2 0 + 19 0.5 + 47 0.5 + + 47 1970 23 0 + 3 0.00203 + 4 0.00355 + 7 0.00964 + 8 0.0066 + 13 0.0416 + 14 0.0228 + 15 0.0117 + 18 0.000508 + 19 0.0203 + 21 0.0315 + 22 0.000508 + 26 0.000508 + 28 0.00102 + 29 0.000508 + 30 0.00152 + 31 0.00558 + 32 0.00102 + 33 0.000508 + 35 0.000508 + 41 0.151 + 45 0.00152 + 46 0.665 + 47 0.0208 + + 58 2 1 0 + 21 1 + + 69 54 6 0 + 2 0.0185 + 7 0.0185 + 21 0.167 + 29 0.0185 + 42 0.0185 + 47 0.759 + +67 759 24 13 + 0 0.00527 + 2 0.0527 + 4 0.00132 + 7 0.00395 + 8 0.00264 + 9 0.00264 + 12 0.00264 + 13 0.0395 + 14 0.0145 + 15 0.00922 + 19 0.00922 + 21 0.0329 + 31 0.00132 + 33 0.00132 + 34 0.00264 + 35 0.215 + 37 0.182 + 40 0.00395 + 41 0.0461 + 42 0.0237 + 44 0.00527 + 45 0.0777 + 46 0.00132 + 47 0.264 + + 0 167 13 0 + 0 0.00599 + 2 0.0778 + 8 0.00599 + 13 0.0359 + 14 0.012 + 21 0.0359 + 35 0.15 + 37 0.228 + 40 0.00599 + 41 0.0659 + 42 0.0359 + 45 0.0958 + 47 0.246 + + 2 15 2 0 + 46 0.0667 + 47 0.933 + + 12 94 11 0 + 2 0.117 + 9 0.0106 + 13 0.0319 + 14 0.0106 + 21 0.0319 + 35 0.128 + 37 0.245 + 41 0.106 + 42 0.0106 + 45 0.0532 + 47 0.255 + + 14 2 1 0 + 45 1 + + 41 17 9 1 + 4 0.0588 + 7 0.0588 + 13 0.235 + 14 0.118 + 15 0.118 + 19 0.0588 + 21 0.235 + 31 0.0588 + 33 0.0588 + + 12 7 5 0 + 4 0.143 + 13 0.286 + 14 0.286 + 19 0.143 + 31 0.143 + + 45 6 5 0 + 2 0.167 + 7 0.167 + 42 0.167 + 44 0.333 + 47 0.167 + + 46 1 1 0 + 40 1 + + 47 342 18 10 + 0 0.00585 + 2 0.038 + 7 0.00292 + 8 0.00292 + 9 0.00292 + 12 0.00292 + 13 0.0351 + 14 0.0117 + 21 0.0263 + 34 0.00292 + 35 0.237 + 37 0.202 + 40 0.00292 + 41 0.0263 + 42 0.0263 + 44 0.00585 + 45 0.076 + 47 0.292 + + 0 148 13 0 + 0 0.00676 + 2 0.0338 + 8 0.00676 + 13 0.0405 + 14 0.00676 + 21 0.0338 + 35 0.169 + 37 0.257 + 40 0.00676 + 41 0.027 + 42 0.0405 + 45 0.0946 + 47 0.277 + + 2 14 1 0 + 47 1 + + 12 82 11 0 + 2 0.0854 + 9 0.0122 + 13 0.0366 + 14 0.0122 + 21 0.0366 + 35 0.146 + 37 0.28 + 41 0.0366 + 42 0.0122 + 45 0.0488 + 47 0.293 + + 14 2 1 0 + 45 1 + + 45 5 4 0 + 7 0.2 + 42 0.2 + 44 0.4 + 47 0.2 + + 49 5 2 0 + 14 0.2 + 47 0.8 + + 55 7 6 0 + 0 0.143 + 2 0.143 + 12 0.143 + 21 0.143 + 35 0.143 + 45 0.286 + + 57 6 2 0 + 37 0.167 + 47 0.833 + + 64 6 3 0 + 41 0.333 + 45 0.167 + 47 0.5 + + 69 56 7 0 + 13 0.0536 + 14 0.0179 + 34 0.0179 + 35 0.768 + 37 0.0714 + 45 0.0357 + 47 0.0357 + + 49 5 2 0 + 14 0.2 + 47 0.8 + + 55 10 7 0 + 0 0.1 + 2 0.1 + 12 0.1 + 15 0.3 + 21 0.1 + 35 0.1 + 45 0.2 + + 57 6 2 0 + 37 0.167 + 47 0.833 + + 64 8 4 0 + 2 0.125 + 41 0.25 + 45 0.25 + 47 0.375 + + 69 67 10 0 + 13 0.0597 + 14 0.0149 + 15 0.0299 + 19 0.0896 + 21 0.0299 + 34 0.0149 + 35 0.642 + 37 0.0597 + 45 0.0299 + 47 0.0299 + +68 1958 35 27 + 0 0.0827 + 1 0.00102 + 2 0.111 + 3 0.0133 + 4 0.0511 + 7 0.072 + 8 0.116 + 9 0.00358 + 13 0.15 + 14 0.0572 + 15 0.0465 + 16 0.000511 + 18 0.00715 + 19 0.00511 + 20 0.00409 + 21 0.0235 + 22 0.00102 + 24 0.00306 + 26 0.00562 + 27 0.000511 + 28 0.0225 + 29 0.00562 + 30 0.0163 + 31 0.0235 + 32 0.00358 + 33 0.0097 + 37 0.00153 + 40 0.00153 + 41 0.0914 + 42 0.0184 + 43 0.00153 + 44 0.00102 + 45 0.00919 + 46 0.00613 + 47 0.0337 + + 2 466 18 9 + 0 0.00429 + 3 0.0343 + 7 0.0172 + 8 0.193 + 9 0.00858 + 13 0.369 + 14 0.0687 + 15 0.122 + 16 0.00215 + 19 0.00215 + 21 0.0343 + 22 0.00215 + 30 0.00429 + 31 0.00429 + 37 0.00644 + 41 0.109 + 43 0.00644 + 46 0.0107 + + 7 1 1 0 + 37 1 + + 8 110 4 0 + 8 0.109 + 13 0.682 + 14 0.0182 + 15 0.191 + + 13 55 4 0 + 8 0.545 + 13 0.345 + 14 0.0727 + 41 0.0364 + + 14 10 2 0 + 8 0.2 + 13 0.8 + + 15 19 3 0 + 8 0.474 + 14 0.0526 + 15 0.474 + + 30 3 1 0 + 8 1 + + 47 253 17 0 + 3 0.0593 + 7 0.0316 + 8 0.119 + 9 0.0158 + 13 0.265 + 14 0.0988 + 15 0.107 + 16 0.00395 + 19 0.00395 + 21 0.0593 + 22 0.00395 + 30 0.00791 + 31 0.00791 + 37 0.00791 + 41 0.182 + 43 0.0119 + 46 0.0158 + + 48 3 2 0 + 0 0.333 + 8 0.667 + + 57 1 1 0 + 0 1 + + 4 9 5 0 + 0 0.222 + 7 0.444 + 13 0.111 + 41 0.111 + 45 0.111 + + 7 4 4 0 + 2 0.25 + 8 0.25 + 21 0.25 + 41 0.25 + + 8 194 20 4 + 0 0.00515 + 2 0.572 + 3 0.0103 + 4 0.0722 + 7 0.0619 + 8 0.067 + 13 0.0155 + 15 0.0155 + 18 0.0206 + 20 0.00515 + 21 0.00515 + 26 0.0103 + 28 0.0206 + 29 0.00515 + 30 0.0155 + 31 0.00515 + 33 0.0155 + 41 0.0464 + 42 0.0103 + 47 0.0206 + + 2 58 17 0 + 0 0.0172 + 2 0.0172 + 3 0.0345 + 4 0.172 + 7 0.121 + 8 0.155 + 13 0.0517 + 15 0.0345 + 18 0.0345 + 21 0.0172 + 28 0.069 + 29 0.0172 + 30 0.0345 + 31 0.0172 + 33 0.0345 + 41 0.103 + 47 0.069 + + 13 3 3 0 + 8 0.333 + 18 0.333 + 26 0.333 + + 41 18 9 0 + 4 0.222 + 7 0.222 + 8 0.0556 + 18 0.0556 + 26 0.0556 + 30 0.0556 + 33 0.0556 + 41 0.167 + 42 0.111 + + 47 111 4 0 + 2 0.973 + 7 0.00901 + 8 0.00901 + 15 0.00901 + + 13 182 19 3 + 0 0.00549 + 2 0.308 + 3 0.00549 + 4 0.11 + 7 0.137 + 8 0.132 + 9 0.00549 + 13 0.022 + 15 0.022 + 18 0.0165 + 20 0.011 + 26 0.011 + 28 0.0165 + 30 0.022 + 31 0.00549 + 32 0.011 + 33 0.011 + 41 0.132 + 47 0.0165 + + 2 103 19 0 + 0 0.00971 + 2 0.00971 + 3 0.00971 + 4 0.136 + 7 0.204 + 8 0.214 + 9 0.00971 + 13 0.0291 + 15 0.0194 + 18 0.0194 + 20 0.00971 + 26 0.0194 + 28 0.0291 + 30 0.0291 + 31 0.00971 + 32 0.00971 + 33 0.00971 + 41 0.204 + 47 0.0194 + + 41 17 10 0 + 4 0.294 + 7 0.176 + 8 0.0588 + 15 0.0588 + 18 0.0588 + 30 0.0588 + 32 0.0588 + 33 0.0588 + 41 0.118 + 47 0.0588 + + 47 51 2 0 + 2 0.98 + 13 0.0196 + + 14 21 6 2 + 2 0.476 + 4 0.143 + 8 0.0952 + 13 0.0952 + 33 0.0476 + 41 0.143 + + 2 7 4 0 + 4 0.429 + 8 0.143 + 33 0.143 + 41 0.286 + + 47 13 3 0 + 2 0.769 + 8 0.0769 + 13 0.154 + + 15 60 9 2 + 2 0.317 + 4 0.15 + 7 0.117 + 8 0.15 + 13 0.0167 + 15 0.133 + 20 0.0167 + 41 0.0333 + 47 0.0667 + + 2 31 7 0 + 4 0.226 + 7 0.194 + 8 0.258 + 13 0.0323 + 15 0.129 + 20 0.0323 + 47 0.129 + + 47 18 2 0 + 2 0.833 + 15 0.167 + + 21 16 5 1 + 0 0.188 + 2 0.5 + 13 0.125 + 21 0.125 + 42 0.0625 + + 48 3 1 0 + 0 1 + + 30 5 3 0 + 2 0.6 + 7 0.2 + 13 0.2 + + 41 124 16 4 + 3 0.0403 + 4 0.00806 + 8 0.29 + 9 0.00806 + 13 0.387 + 14 0.0887 + 15 0.0242 + 19 0.00806 + 21 0.0403 + 22 0.00806 + 26 0.00806 + 29 0.00806 + 30 0.0323 + 31 0.0161 + 33 0.00806 + 40 0.0242 + + 2 50 12 0 + 3 0.08 + 8 0.16 + 13 0.36 + 14 0.12 + 15 0.02 + 19 0.02 + 21 0.1 + 22 0.02 + 29 0.02 + 30 0.04 + 31 0.04 + 33 0.02 + + 13 22 3 0 + 4 0.0455 + 8 0.591 + 13 0.364 + + 46 5 3 0 + 8 0.2 + 13 0.2 + 40 0.6 + + 48 9 4 0 + 3 0.111 + 8 0.667 + 9 0.111 + 30 0.111 + + 42 11 6 0 + 4 0.0909 + 7 0.0909 + 8 0.273 + 13 0.364 + 15 0.0909 + 47 0.0909 + + 45 10 7 0 + 0 0.1 + 2 0.1 + 7 0.2 + 19 0.1 + 24 0.1 + 42 0.1 + 46 0.3 + + 46 9 4 0 + 8 0.222 + 27 0.111 + 32 0.111 + 41 0.556 + + 47 494 29 16 + 0 0.164 + 1 0.00202 + 2 0.00405 + 3 0.00405 + 4 0.0911 + 7 0.132 + 8 0.0891 + 9 0.00202 + 13 0.0587 + 14 0.0688 + 15 0.0202 + 18 0.0142 + 19 0.0081 + 20 0.0081 + 21 0.0121 + 24 0.00607 + 26 0.0101 + 28 0.0445 + 29 0.0101 + 30 0.0263 + 31 0.0425 + 32 0.00607 + 33 0.0182 + 41 0.0547 + 42 0.0243 + 44 0.00202 + 45 0.0081 + 46 0.00202 + 47 0.0668 + + 4 8 4 0 + 0 0.25 + 7 0.5 + 41 0.125 + 45 0.125 + + 8 71 19 0 + 0 0.0141 + 2 0.0141 + 3 0.0282 + 4 0.197 + 7 0.155 + 8 0.155 + 13 0.0423 + 15 0.0282 + 18 0.0563 + 20 0.0141 + 21 0.0141 + 26 0.0282 + 28 0.0563 + 29 0.0141 + 30 0.0423 + 31 0.0141 + 33 0.0423 + 42 0.0282 + 47 0.0563 + + 13 93 17 0 + 0 0.0108 + 2 0.0108 + 4 0.172 + 7 0.269 + 8 0.226 + 9 0.0108 + 15 0.043 + 18 0.0323 + 20 0.0215 + 26 0.0215 + 28 0.0323 + 30 0.043 + 31 0.0108 + 32 0.0215 + 33 0.0215 + 41 0.0215 + 47 0.0323 + + 14 4 2 0 + 4 0.75 + 33 0.25 + + 15 30 5 0 + 4 0.3 + 7 0.233 + 8 0.3 + 20 0.0333 + 47 0.133 + + 21 5 3 0 + 0 0.6 + 13 0.2 + 42 0.2 + + 45 6 5 0 + 0 0.167 + 7 0.333 + 19 0.167 + 24 0.167 + 42 0.167 + + 48 60 12 0 + 0 0.533 + 1 0.0167 + 4 0.0333 + 7 0.0333 + 13 0.05 + 14 0.0667 + 28 0.0333 + 29 0.0167 + 41 0.0833 + 42 0.0333 + 45 0.0167 + 47 0.0833 + + 49 34 12 0 + 0 0.206 + 7 0.0882 + 13 0.0882 + 14 0.147 + 21 0.0294 + 28 0.118 + 29 0.0294 + 30 0.0294 + 31 0.0294 + 41 0.147 + 42 0.0294 + 47 0.0588 + + 50 2 1 0 + 41 1 + + 55 61 17 0 + 0 0.246 + 4 0.0164 + 7 0.148 + 13 0.0328 + 14 0.131 + 19 0.0328 + 21 0.0328 + 26 0.0164 + 28 0.0656 + 30 0.0328 + 31 0.0328 + 32 0.0164 + 33 0.0328 + 41 0.0656 + 42 0.0492 + 44 0.0164 + 47 0.0328 + + 57 68 17 0 + 0 0.147 + 8 0.0147 + 13 0.191 + 14 0.147 + 15 0.0588 + 19 0.0147 + 21 0.0147 + 24 0.0147 + 28 0.0294 + 29 0.0294 + 30 0.0441 + 31 0.162 + 33 0.0147 + 41 0.0441 + 42 0.0147 + 45 0.0147 + 47 0.0441 + + 62 13 6 0 + 7 0.0769 + 14 0.0769 + 31 0.154 + 41 0.0769 + 46 0.0769 + 47 0.538 + + 64 10 8 0 + 0 0.1 + 8 0.1 + 13 0.2 + 24 0.1 + 28 0.1 + 31 0.2 + 42 0.1 + 47 0.1 + + 65 1 1 0 + 45 1 + + 69 17 5 0 + 0 0.353 + 13 0.0588 + 14 0.353 + 21 0.0588 + 41 0.176 + + 48 82 14 3 + 0 0.39 + 1 0.0122 + 2 0.0366 + 4 0.0488 + 7 0.0244 + 13 0.0366 + 14 0.0488 + 21 0.0488 + 28 0.0244 + 29 0.0122 + 41 0.171 + 42 0.0366 + 45 0.0488 + 47 0.061 + + 41 24 7 0 + 0 0.333 + 14 0.0417 + 21 0.0833 + 28 0.0417 + 41 0.333 + 45 0.0417 + 47 0.125 + + 46 2 1 0 + 45 1 + + 47 2 2 0 + 14 0.5 + 42 0.5 + + 49 40 14 1 + 0 0.175 + 2 0.025 + 4 0.05 + 7 0.075 + 13 0.075 + 14 0.125 + 21 0.05 + 28 0.1 + 29 0.025 + 30 0.025 + 31 0.025 + 41 0.175 + 42 0.025 + 47 0.05 + + 41 7 4 0 + 13 0.286 + 21 0.143 + 29 0.143 + 41 0.429 + + 50 4 1 0 + 41 1 + + 51 2 2 0 + 28 0.5 + 42 0.5 + + 52 1 1 0 + 45 1 + + 55 85 19 3 + 0 0.176 + 4 0.0118 + 7 0.106 + 13 0.0235 + 14 0.106 + 19 0.0235 + 21 0.0471 + 26 0.0118 + 28 0.0471 + 30 0.0235 + 31 0.0235 + 32 0.0118 + 33 0.0235 + 41 0.176 + 42 0.118 + 44 0.0118 + 45 0.0118 + 46 0.0235 + 47 0.0235 + + 2 49 17 0 + 0 0.163 + 4 0.0204 + 7 0.143 + 13 0.0408 + 14 0.163 + 19 0.0204 + 21 0.0408 + 26 0.0204 + 28 0.0408 + 30 0.0408 + 31 0.0408 + 32 0.0204 + 33 0.0204 + 41 0.143 + 42 0.0204 + 45 0.0204 + 47 0.0408 + + 41 20 8 0 + 0 0.3 + 7 0.1 + 19 0.05 + 28 0.1 + 33 0.05 + 41 0.25 + 42 0.1 + 44 0.05 + + 47 15 5 0 + 14 0.0667 + 21 0.133 + 41 0.2 + 42 0.467 + 46 0.133 + + 57 75 19 2 + 0 0.133 + 2 0.0133 + 7 0.0133 + 8 0.0133 + 13 0.173 + 14 0.133 + 15 0.0533 + 19 0.0133 + 21 0.04 + 24 0.0133 + 28 0.0267 + 29 0.0267 + 30 0.04 + 31 0.147 + 33 0.0133 + 41 0.08 + 42 0.0133 + 45 0.0133 + 47 0.04 + + 2 53 15 0 + 0 0.113 + 2 0.0189 + 7 0.0189 + 8 0.0189 + 13 0.151 + 14 0.189 + 15 0.0566 + 21 0.0566 + 24 0.0189 + 28 0.0189 + 29 0.0377 + 30 0.0189 + 31 0.151 + 41 0.113 + 47 0.0189 + + 41 19 11 0 + 0 0.211 + 13 0.158 + 15 0.0526 + 19 0.0526 + 28 0.0526 + 30 0.105 + 31 0.158 + 33 0.0526 + 42 0.0526 + 45 0.0526 + 47 0.0526 + + 62 19 9 2 + 7 0.0526 + 14 0.0526 + 21 0.0526 + 31 0.105 + 41 0.158 + 42 0.105 + 45 0.0526 + 46 0.0526 + 47 0.368 + + 2 7 5 0 + 7 0.143 + 14 0.143 + 31 0.286 + 41 0.286 + 46 0.143 + + 42 5 1 0 + 47 1 + + 64 11 8 0 + 0 0.0909 + 8 0.0909 + 13 0.182 + 24 0.0909 + 28 0.0909 + 31 0.182 + 42 0.182 + 47 0.0909 + + 65 3 1 0 + 45 1 + + 67 2 1 0 + 45 1 + + 69 19 5 0 + 0 0.316 + 13 0.0526 + 14 0.316 + 21 0.0526 + 41 0.263 + + 71 2 2 0 + 31 0.5 + 47 0.5 + +69 294981 43 37 + 0 0.105 + 1 0.00265 + 2 0.0256 + 3 0.00552 + 4 0.00905 + 5 0.00567 + 6 9.49e-05 + 7 0.0229 + 8 0.00961 + 9 0.000532 + 10 0.000431 + 12 0.0558 + 13 0.14 + 14 0.108 + 15 0.0833 + 16 0.00388 + 18 0.000919 + 19 0.0976 + 20 9.49e-05 + 21 0.0678 + 22 0.000427 + 23 0.000122 + 24 0.00078 + 25 2.37e-05 + 26 0.0912 + 27 1.36e-05 + 28 0.00706 + 29 0.00917 + 30 0.00623 + 31 0.0111 + 32 0.00412 + 33 0.00631 + 34 0.0243 + 35 0.0121 + 37 0.000692 + 40 7.12e-05 + 41 0.0548 + 42 0.00322 + 43 0.00148 + 44 0.000363 + 45 0.00512 + 46 0.0116 + 47 0.00527 + + 0 33828 41 0 + 0 0.0459 + 1 0.000443 + 2 0.0164 + 3 0.00573 + 4 0.0196 + 5 0.0219 + 6 0.000118 + 7 0.00198 + 8 0.00399 + 9 0.000236 + 10 0.000709 + 12 0.0834 + 13 0.183 + 14 0.139 + 15 0.0942 + 16 0.00562 + 18 0.0013 + 19 0.154 + 20 8.87e-05 + 21 0.0574 + 22 0.000118 + 23 2.96e-05 + 24 0.000177 + 26 0.0434 + 28 0.00121 + 29 0.00127 + 30 0.00139 + 31 0.0018 + 32 0.00106 + 33 0.000709 + 34 0.0345 + 35 0.0178 + 37 5.91e-05 + 40 2.96e-05 + 41 0.0478 + 42 0.00328 + 43 0.00207 + 44 2.96e-05 + 45 0.00532 + 46 0.00316 + 47 0.000207 + + 1 555 24 0 + 0 0.342 + 2 0.018 + 4 0.0036 + 7 0.245 + 8 0.0018 + 13 0.0613 + 14 0.0721 + 15 0.00541 + 19 0.00541 + 20 0.0036 + 21 0.101 + 24 0.00541 + 26 0.0198 + 28 0.0126 + 29 0.0036 + 31 0.0036 + 32 0.0018 + 33 0.0036 + 41 0.0378 + 42 0.0036 + 43 0.0036 + 45 0.0144 + 46 0.0036 + 47 0.027 + + 2 411 19 14 + 0 0.00243 + 7 0.00487 + 8 0.00973 + 12 0.017 + 13 0.00973 + 14 0.0146 + 15 0.00487 + 28 0.338 + 29 0.0779 + 30 0.151 + 31 0.173 + 32 0.0779 + 33 0.09 + 34 0.00243 + 41 0.0146 + 42 0.00243 + 43 0.00243 + 44 0.00243 + 46 0.00487 + + 0 2 2 0 + 8 0.5 + 12 0.5 + + 8 2 1 0 + 8 1 + + 12 3 1 0 + 12 1 + + 13 2 1 0 + 13 1 + + 21 2 2 0 + 28 0.5 + 46 0.5 + + 28 142 4 0 + 28 0.972 + 41 0.0141 + 42 0.00704 + 43 0.00704 + + 29 33 2 0 + 29 0.97 + 41 0.0303 + + 30 64 3 0 + 7 0.0156 + 8 0.0156 + 30 0.969 + + 31 73 3 0 + 31 0.973 + 41 0.0137 + 44 0.0137 + + 32 34 3 0 + 0 0.0294 + 32 0.941 + 41 0.0294 + + 33 37 1 0 + 33 1 + + 45 1 1 0 + 46 1 + + 47 1 1 0 + 15 1 + + 69 13 6 0 + 7 0.0769 + 12 0.231 + 13 0.154 + 14 0.385 + 15 0.0769 + 34 0.0769 + + 4 9 6 0 + 0 0.111 + 7 0.111 + 13 0.111 + 19 0.111 + 26 0.222 + 41 0.333 + + 7 23 6 0 + 0 0.522 + 8 0.0435 + 13 0.087 + 14 0.0435 + 21 0.261 + 41 0.0435 + + 8 152 22 1 + 0 0.283 + 1 0.0132 + 2 0.0329 + 4 0.0197 + 7 0.0658 + 8 0.00658 + 13 0.0329 + 14 0.0724 + 15 0.0132 + 16 0.00658 + 19 0.00658 + 21 0.25 + 22 0.0197 + 23 0.00658 + 26 0.0526 + 28 0.0132 + 29 0.0132 + 32 0.00658 + 41 0.0395 + 45 0.0263 + 46 0.00658 + 47 0.0132 + + 2 3 2 0 + 4 0.667 + 22 0.333 + + 12 9669 37 0 + 0 0.000207 + 2 0.0233 + 3 0.00776 + 4 0.0185 + 5 0.00755 + 6 0.000207 + 7 0.00114 + 8 0.00259 + 9 0.00031 + 10 0.000207 + 12 0.000103 + 13 0.242 + 14 0.173 + 15 0.106 + 16 0.00641 + 18 0.00103 + 19 0.222 + 21 0.0332 + 22 0.00031 + 23 0.000103 + 24 0.000103 + 28 0.00124 + 29 0.00124 + 30 0.000931 + 31 0.00238 + 32 0.00207 + 33 0.00176 + 34 0.0602 + 35 0.0146 + 40 0.000103 + 41 0.0506 + 42 0.00434 + 43 0.00321 + 44 0.000103 + 45 0.00858 + 46 0.0031 + 47 0.000103 + + 13 318 31 3 + 0 0.0252 + 1 0.00943 + 2 0.0629 + 3 0.066 + 4 0.0377 + 7 0.145 + 8 0.0252 + 10 0.0126 + 12 0.00314 + 13 0.164 + 14 0.0283 + 15 0.0377 + 16 0.00943 + 18 0.00314 + 19 0.00314 + 21 0.066 + 24 0.00629 + 26 0.151 + 28 0.0252 + 29 0.0189 + 30 0.00943 + 31 0.0157 + 32 0.00629 + 34 0.00314 + 37 0.00314 + 41 0.0346 + 42 0.00314 + 43 0.00314 + 45 0.00943 + 46 0.00314 + 47 0.00943 + + 2 2 2 0 + 7 0.5 + 31 0.5 + + 28 3 3 0 + 7 0.333 + 12 0.333 + 45 0.333 + + 69 12 6 0 + 2 0.0833 + 3 0.0833 + 13 0.583 + 15 0.0833 + 18 0.0833 + 41 0.0833 + + 14 122 21 0 + 0 0.0656 + 2 0.123 + 3 0.0328 + 4 0.0082 + 7 0.041 + 8 0.0246 + 13 0.262 + 14 0.0164 + 15 0.254 + 18 0.0082 + 19 0.0164 + 21 0.0082 + 30 0.0082 + 34 0.0082 + 35 0.0164 + 41 0.0574 + 42 0.0082 + 43 0.0082 + 45 0.0164 + 46 0.0082 + 47 0.0082 + + 15 37 10 0 + 0 0.108 + 2 0.027 + 7 0.0541 + 15 0.297 + 18 0.027 + 26 0.0541 + 33 0.027 + 42 0.027 + 45 0.162 + 47 0.216 + + 18 30 6 0 + 4 0.1 + 5 0.367 + 7 0.0667 + 13 0.0667 + 19 0.367 + 34 0.0333 + + 21 80 22 8 + 0 0.1 + 1 0.0125 + 2 0.0875 + 7 0.112 + 8 0.025 + 10 0.0125 + 12 0.112 + 13 0.15 + 14 0.0625 + 16 0.0125 + 19 0.0875 + 21 0.0375 + 26 0.0375 + 28 0.0125 + 29 0.0125 + 31 0.0125 + 32 0.0125 + 35 0.0125 + 41 0.05 + 42 0.0125 + 45 0.0125 + 47 0.0125 + + 0 4 2 0 + 12 0.25 + 19 0.75 + + 26 4 3 0 + 2 0.25 + 13 0.5 + 31 0.25 + + 28 9 6 0 + 2 0.444 + 7 0.111 + 12 0.111 + 13 0.111 + 16 0.111 + 42 0.111 + + 30 12 7 0 + 0 0.0833 + 7 0.25 + 13 0.25 + 19 0.0833 + 26 0.0833 + 32 0.0833 + 41 0.167 + + 31 10 5 0 + 0 0.1 + 7 0.1 + 14 0.5 + 41 0.2 + 47 0.1 + + 47 15 10 0 + 0 0.267 + 1 0.0667 + 2 0.0667 + 7 0.0667 + 10 0.0667 + 13 0.0667 + 21 0.133 + 26 0.133 + 28 0.0667 + 29 0.0667 + + 49 7 6 0 + 0 0.143 + 7 0.143 + 8 0.143 + 13 0.286 + 19 0.143 + 45 0.143 + + 69 13 6 0 + 8 0.0769 + 12 0.538 + 13 0.0769 + 19 0.154 + 21 0.0769 + 35 0.0769 + + 22 3 1 0 + 0 1 + + 26 13048 39 0 + 0 0.0513 + 1 0.00107 + 2 0.0104 + 3 0.018 + 4 0.00107 + 5 7.66e-05 + 6 0.000153 + 7 0.00613 + 8 0.084 + 9 0.00429 + 10 0.00046 + 12 0.00245 + 13 0.2 + 14 0.114 + 15 0.0403 + 16 0.00215 + 18 0.000153 + 19 0.0154 + 21 0.0327 + 22 0.000996 + 23 0.000153 + 24 0.00452 + 26 7.66e-05 + 28 0.0401 + 29 0.073 + 30 0.0567 + 31 0.105 + 32 0.0336 + 33 0.0583 + 34 0.000307 + 35 0.00115 + 37 0.00452 + 41 0.0174 + 42 0.00268 + 43 0.00115 + 44 0.000383 + 45 0.00261 + 46 0.0049 + 47 0.00897 + + 28 21028 36 3 + 0 0.00471 + 1 4.76e-05 + 2 0.0342 + 3 4.76e-05 + 4 0.000856 + 7 0.00185 + 8 0.00019 + 10 0.00019 + 12 0.238 + 13 0.00623 + 14 0.00923 + 15 0.00385 + 16 4.76e-05 + 18 0.000143 + 19 0.00956 + 21 0.117 + 22 0.00105 + 23 9.51e-05 + 26 0.538 + 27 9.51e-05 + 28 0.00518 + 29 0.00271 + 30 0.000476 + 31 0.000618 + 32 0.000666 + 33 0.000808 + 34 0.00019 + 35 0.000428 + 40 0.000333 + 41 0.00704 + 42 0.00195 + 43 0.000333 + 44 0.000666 + 45 0.00818 + 46 0.000238 + 47 0.0049 + + 2 139 9 0 + 2 0.0144 + 12 0.137 + 13 0.00719 + 14 0.0144 + 15 0.00719 + 21 0.0719 + 26 0.669 + 41 0.0647 + 45 0.0144 + + 41 17 6 0 + 0 0.0588 + 12 0.294 + 21 0.0588 + 26 0.353 + 33 0.0588 + 41 0.176 + + 46 2 1 0 + 45 1 + + 29 21706 36 1 + 0 0.00438 + 1 0.00101 + 2 0.0333 + 3 0.00604 + 4 0.00392 + 7 0.00143 + 8 0.00207 + 9 0.000184 + 10 9.21e-05 + 12 0.000276 + 13 0.196 + 14 0.136 + 15 0.23 + 16 0.00792 + 18 0.0018 + 19 0.133 + 21 0.0658 + 22 0.000322 + 23 4.61e-05 + 26 0.000138 + 28 9.21e-05 + 29 0.000322 + 30 0.000461 + 31 0.000921 + 32 4.61e-05 + 33 0.000138 + 34 0.0313 + 35 0.0208 + 37 9.21e-05 + 41 0.0885 + 42 0.0024 + 43 0.00147 + 44 9.21e-05 + 45 0.00235 + 46 0.0266 + 47 0.000645 + + 2 32 10 0 + 2 0.0312 + 13 0.156 + 14 0.0625 + 15 0.156 + 19 0.188 + 21 0.188 + 22 0.0312 + 35 0.125 + 41 0.0312 + 45 0.0312 + + 30 11273 33 1 + 0 0.265 + 2 0.0353 + 3 0.00284 + 4 0.00213 + 7 0.227 + 8 0.00319 + 9 8.87e-05 + 10 0.000355 + 13 0.0685 + 14 0.0679 + 15 0.0108 + 16 0.000621 + 18 0.00115 + 19 0.00337 + 20 0.00071 + 21 0.0726 + 22 0.000355 + 24 0.00364 + 26 0.0114 + 28 0.0184 + 29 0.0169 + 30 0.00337 + 31 0.00523 + 32 0.00417 + 33 0.0047 + 37 0.0016 + 41 0.126 + 42 0.00523 + 43 0.000266 + 44 0.000532 + 45 0.00772 + 46 0.00408 + 47 0.0245 + + 2 62 14 0 + 0 0.0968 + 2 0.0161 + 3 0.0161 + 7 0.355 + 13 0.0323 + 14 0.0968 + 15 0.0161 + 19 0.0323 + 21 0.0806 + 22 0.0161 + 26 0.113 + 28 0.0323 + 33 0.0161 + 41 0.0806 + + 31 15631 38 1 + 0 0.586 + 1 0.0204 + 2 0.0168 + 3 0.00448 + 4 0.00435 + 6 6.4e-05 + 7 0.0117 + 8 0.00032 + 9 0.000128 + 10 0.000256 + 12 0.00032 + 13 0.0843 + 14 0.0769 + 15 0.00409 + 16 0.000384 + 18 0.000256 + 19 0.00186 + 21 0.11 + 22 0.000768 + 23 0.00109 + 26 0.000128 + 28 0.00211 + 29 0.00211 + 30 0.000768 + 31 0.00102 + 32 0.000768 + 33 0.00122 + 34 0.000256 + 35 0.000128 + 37 0.00109 + 40 6.4e-05 + 41 0.047 + 42 0.00237 + 43 0.000448 + 44 0.00147 + 45 0.00333 + 46 0.00224 + 47 0.0094 + + 2 71 8 0 + 0 0.69 + 1 0.0563 + 13 0.0141 + 14 0.0423 + 19 0.0141 + 21 0.0986 + 41 0.0704 + 45 0.0141 + + 32 5414 31 1 + 2 0.0296 + 3 0.00166 + 4 0.0133 + 7 0.00129 + 8 0.00332 + 9 0.000369 + 10 0.00222 + 12 0.000185 + 13 0.0334 + 14 0.401 + 15 0.0253 + 16 0.0105 + 18 0.000739 + 19 0.248 + 21 0.0876 + 22 0.000185 + 23 0.000185 + 29 0.000185 + 30 0.000369 + 31 0.00185 + 32 0.000369 + 33 0.000369 + 34 0.0567 + 35 0.0412 + 37 0.000185 + 41 0.0292 + 42 0.00332 + 43 0.00259 + 45 0.00314 + 46 0.00148 + 47 0.000185 + + 2 32 7 0 + 2 0.0312 + 14 0.406 + 19 0.219 + 21 0.0312 + 34 0.156 + 35 0.0625 + 41 0.0938 + + 33 9604 31 2 + 2 0.0311 + 3 0.00281 + 4 0.0167 + 5 0.000625 + 6 0.000416 + 7 0.00198 + 8 0.00167 + 9 0.000104 + 10 0.000104 + 13 0.207 + 14 0.0117 + 15 0.162 + 16 0.0025 + 18 0.000937 + 19 0.192 + 21 0.0798 + 22 0.000312 + 25 0.000312 + 28 0.000104 + 29 0.000625 + 30 0.000416 + 31 0.000521 + 32 0.000312 + 34 0.0715 + 35 0.0271 + 41 0.0868 + 42 0.00344 + 43 0.00281 + 45 0.00573 + 46 0.0842 + 47 0.00375 + + 2 37 10 0 + 8 0.027 + 13 0.189 + 15 0.189 + 16 0.027 + 18 0.027 + 19 0.0811 + 21 0.027 + 34 0.243 + 35 0.0541 + 41 0.135 + + 41 2 2 0 + 2 0.5 + 34 0.5 + + 41 83 16 15 + 0 0.012 + 2 0.0482 + 3 0.012 + 8 0.0241 + 12 0.012 + 13 0.205 + 14 0.012 + 15 0.0482 + 19 0.0361 + 21 0.145 + 28 0.205 + 29 0.0241 + 30 0.0361 + 31 0.0843 + 32 0.0723 + 33 0.0241 + + 0 5 3 0 + 13 0.6 + 14 0.2 + 21 0.2 + + 2 6 4 0 + 28 0.333 + 29 0.167 + 31 0.333 + 32 0.167 + + 12 4 2 0 + 13 0.5 + 19 0.5 + + 26 5 2 0 + 13 0.6 + 21 0.4 + + 28 14 2 0 + 21 0.0714 + 28 0.929 + + 29 7 4 0 + 13 0.286 + 15 0.429 + 21 0.143 + 29 0.143 + + 30 2 1 0 + 30 1 + + 31 6 2 0 + 21 0.167 + 31 0.833 + + 32 4 1 0 + 32 1 + + 33 2 1 0 + 33 1 + + 49 6 5 0 + 2 0.167 + 12 0.167 + 13 0.333 + 21 0.167 + 28 0.167 + + 55 5 3 0 + 3 0.2 + 13 0.6 + 19 0.2 + + 57 5 3 0 + 2 0.6 + 8 0.2 + 21 0.2 + + 64 3 2 0 + 8 0.333 + 21 0.667 + + 69 6 4 0 + 13 0.333 + 15 0.167 + 21 0.333 + 30 0.167 + + 42 7 3 0 + 25 0.143 + 28 0.143 + 47 0.714 + + 44 5 4 0 + 13 0.4 + 19 0.2 + 26 0.2 + 31 0.2 + + 45 119 15 9 + 0 0.193 + 2 0.0336 + 4 0.0168 + 6 0.0084 + 7 0.0336 + 12 0.0924 + 13 0.134 + 14 0.0588 + 15 0.0252 + 19 0.0672 + 21 0.0672 + 26 0.193 + 28 0.0168 + 35 0.0084 + 41 0.0504 + + 0 6 5 0 + 13 0.167 + 14 0.167 + 15 0.167 + 35 0.167 + 41 0.333 + + 28 35 5 0 + 0 0.0286 + 2 0.0286 + 12 0.2 + 21 0.114 + 26 0.629 + + 29 14 5 0 + 13 0.357 + 14 0.143 + 15 0.143 + 19 0.286 + 41 0.0714 + + 30 15 6 0 + 0 0.267 + 7 0.2 + 14 0.0667 + 21 0.2 + 28 0.133 + 41 0.133 + + 31 14 5 0 + 0 0.714 + 2 0.0714 + 13 0.0714 + 14 0.0714 + 21 0.0714 + + 32 4 3 0 + 2 0.25 + 14 0.25 + 19 0.5 + + 33 8 3 0 + 2 0.125 + 13 0.75 + 19 0.125 + + 49 10 7 0 + 0 0.3 + 4 0.1 + 12 0.2 + 13 0.1 + 14 0.1 + 26 0.1 + 41 0.1 + + 69 9 6 0 + 0 0.333 + 4 0.111 + 6 0.111 + 12 0.111 + 13 0.222 + 19 0.111 + + 46 4 3 0 + 0 0.25 + 21 0.25 + 28 0.5 + + 47 145999 43 35 + 0 0.106 + 1 0.00268 + 2 0.0245 + 3 0.00554 + 4 0.00909 + 5 0.00573 + 6 9.59e-05 + 7 0.023 + 8 0.00966 + 9 0.000527 + 10 0.000404 + 12 0.0564 + 13 0.141 + 14 0.109 + 15 0.0841 + 16 0.00392 + 18 0.000918 + 19 0.0986 + 20 9.59e-05 + 21 0.0628 + 22 0.000363 + 23 6.16e-05 + 24 0.000788 + 25 2.05e-05 + 26 0.0921 + 27 1.37e-05 + 28 0.00658 + 29 0.00915 + 30 0.00608 + 31 0.011 + 32 0.00403 + 33 0.00624 + 34 0.0245 + 35 0.0122 + 37 0.000699 + 40 6.85e-05 + 41 0.0551 + 42 0.00323 + 43 0.00149 + 44 0.000349 + 45 0.00476 + 46 0.0117 + 47 0.00533 + + 0 33747 40 0 + 0 0.046 + 1 0.000444 + 2 0.0164 + 3 0.00572 + 4 0.0196 + 5 0.022 + 6 0.000119 + 7 0.00199 + 8 0.004 + 9 0.000237 + 10 0.000711 + 12 0.0836 + 13 0.183 + 14 0.139 + 15 0.0945 + 16 0.00563 + 18 0.0013 + 19 0.155 + 20 8.89e-05 + 21 0.0558 + 22 0.000119 + 23 2.96e-05 + 24 0.000178 + 26 0.0435 + 28 0.00121 + 29 0.00127 + 30 0.00139 + 31 0.00181 + 32 0.00107 + 33 0.000711 + 34 0.0346 + 35 0.0179 + 37 5.93e-05 + 40 2.96e-05 + 41 0.0477 + 42 0.00329 + 43 0.00207 + 45 0.00516 + 46 0.00317 + 47 0.000207 + + 1 547 24 0 + 0 0.347 + 2 0.0183 + 4 0.00366 + 7 0.249 + 8 0.00183 + 13 0.0622 + 14 0.0731 + 15 0.00548 + 19 0.00548 + 20 0.00366 + 21 0.0878 + 24 0.00548 + 26 0.0201 + 28 0.0128 + 29 0.00366 + 31 0.00366 + 32 0.00183 + 33 0.00366 + 41 0.0384 + 42 0.00366 + 43 0.00366 + 45 0.0146 + 46 0.00366 + 47 0.0274 + + 2 16 6 0 + 7 0.125 + 12 0.25 + 13 0.125 + 14 0.312 + 15 0.125 + 34 0.0625 + + 4 9 6 0 + 0 0.111 + 7 0.111 + 13 0.111 + 19 0.111 + 26 0.222 + 41 0.333 + + 7 23 6 0 + 0 0.522 + 8 0.0435 + 13 0.087 + 14 0.0435 + 21 0.261 + 41 0.0435 + + 8 124 20 0 + 0 0.347 + 1 0.0161 + 2 0.0242 + 4 0.0161 + 7 0.0645 + 8 0.00806 + 13 0.0403 + 14 0.0887 + 15 0.0161 + 16 0.00806 + 19 0.00806 + 21 0.169 + 26 0.0645 + 28 0.0161 + 29 0.0161 + 32 0.00806 + 41 0.0484 + 45 0.0161 + 46 0.00806 + 47 0.0161 + + 12 9643 36 0 + 0 0.000207 + 2 0.023 + 3 0.00778 + 4 0.0186 + 5 0.00757 + 6 0.000207 + 7 0.00114 + 8 0.00259 + 9 0.000311 + 10 0.000207 + 12 0.000104 + 13 0.243 + 14 0.174 + 15 0.106 + 16 0.00643 + 18 0.00104 + 19 0.222 + 21 0.0317 + 22 0.000311 + 23 0.000104 + 24 0.000104 + 28 0.00124 + 29 0.00124 + 30 0.000933 + 31 0.00239 + 32 0.00207 + 33 0.00176 + 34 0.0604 + 35 0.0146 + 40 0.000104 + 41 0.0502 + 42 0.00436 + 43 0.00321 + 45 0.00861 + 46 0.00301 + 47 0.000104 + + 13 311 31 0 + 0 0.0257 + 1 0.00965 + 2 0.0579 + 3 0.0675 + 4 0.0386 + 7 0.148 + 8 0.0257 + 10 0.00643 + 12 0.00322 + 13 0.164 + 14 0.0289 + 15 0.0386 + 16 0.00965 + 18 0.00322 + 19 0.00322 + 21 0.0675 + 24 0.00643 + 26 0.154 + 28 0.0257 + 29 0.0193 + 30 0.00965 + 31 0.0161 + 32 0.00643 + 34 0.00322 + 37 0.00322 + 41 0.0354 + 42 0.00322 + 43 0.00322 + 45 0.00322 + 46 0.00322 + 47 0.00965 + + 14 121 21 0 + 0 0.0661 + 2 0.116 + 3 0.0331 + 4 0.00826 + 7 0.0413 + 8 0.0248 + 13 0.264 + 14 0.0165 + 15 0.256 + 18 0.00826 + 19 0.0165 + 21 0.00826 + 30 0.00826 + 34 0.00826 + 35 0.0165 + 41 0.0579 + 42 0.00826 + 43 0.00826 + 45 0.0165 + 46 0.00826 + 47 0.00826 + + 15 37 10 0 + 0 0.108 + 2 0.027 + 7 0.0541 + 15 0.297 + 18 0.027 + 26 0.0541 + 33 0.027 + 42 0.027 + 45 0.162 + 47 0.216 + + 18 30 6 0 + 4 0.1 + 5 0.367 + 7 0.0667 + 13 0.0667 + 19 0.367 + 34 0.0333 + + 21 72 21 0 + 0 0.0972 + 1 0.0139 + 2 0.0694 + 7 0.111 + 8 0.0278 + 12 0.125 + 13 0.153 + 14 0.0694 + 16 0.0139 + 19 0.0972 + 21 0.0139 + 26 0.0417 + 28 0.0139 + 29 0.0139 + 31 0.0139 + 32 0.0139 + 35 0.0139 + 41 0.0556 + 42 0.0139 + 45 0.0139 + 47 0.0139 + + 22 3 1 0 + 0 1 + + 26 13034 39 0 + 0 0.0514 + 1 0.00107 + 2 0.0104 + 3 0.018 + 4 0.000997 + 5 7.67e-05 + 6 0.000153 + 7 0.00606 + 8 0.0841 + 9 0.0043 + 10 0.00046 + 12 0.00246 + 13 0.2 + 14 0.114 + 15 0.0404 + 16 0.00215 + 18 0.000153 + 19 0.0154 + 21 0.0322 + 22 0.000997 + 23 0.000153 + 24 0.00453 + 26 7.67e-05 + 28 0.0401 + 29 0.0731 + 30 0.0568 + 31 0.105 + 32 0.0337 + 33 0.0584 + 34 0.000307 + 35 0.00115 + 37 0.00453 + 41 0.017 + 42 0.00269 + 43 0.00115 + 44 0.000384 + 45 0.00261 + 46 0.00491 + 47 0.00898 + + 28 20589 35 0 + 0 0.00481 + 1 4.86e-05 + 2 0.028 + 3 4.86e-05 + 4 0.000777 + 7 0.0016 + 8 0.000194 + 10 9.71e-05 + 12 0.243 + 13 0.00612 + 14 0.00937 + 15 0.00393 + 16 4.86e-05 + 18 0.000146 + 19 0.00976 + 21 0.109 + 22 0.000486 + 26 0.55 + 27 9.71e-05 + 28 0.00525 + 29 0.00277 + 30 0.000486 + 31 0.000631 + 32 0.00068 + 33 0.000826 + 34 0.000194 + 35 0.000437 + 40 0.000291 + 41 0.00641 + 42 0.00175 + 43 0.000291 + 44 0.000631 + 45 0.00665 + 46 0.000243 + 47 0.005 + + 29 21355 36 0 + 0 0.00445 + 1 0.00103 + 2 0.0322 + 3 0.00609 + 4 0.00393 + 7 0.00103 + 8 0.00206 + 9 0.000187 + 10 4.68e-05 + 12 0.000281 + 13 0.199 + 14 0.138 + 15 0.234 + 16 0.00805 + 18 0.00183 + 19 0.135 + 21 0.0543 + 22 0.000328 + 23 4.68e-05 + 26 0.00014 + 28 9.37e-05 + 29 0.000328 + 30 0.000468 + 31 0.000937 + 32 4.68e-05 + 33 0.00014 + 34 0.0318 + 35 0.0212 + 37 9.37e-05 + 41 0.0896 + 42 0.00244 + 43 0.0015 + 44 4.68e-05 + 45 0.00173 + 46 0.0271 + 47 0.000656 + + 30 10957 33 0 + 0 0.273 + 2 0.0305 + 3 0.00292 + 4 0.0021 + 7 0.234 + 8 0.00301 + 9 9.13e-05 + 10 0.000365 + 13 0.0703 + 14 0.0698 + 15 0.0111 + 16 0.000639 + 18 0.00119 + 19 0.00347 + 20 0.00073 + 21 0.0539 + 22 0.000365 + 24 0.00374 + 26 0.0118 + 28 0.0189 + 29 0.0174 + 30 0.00347 + 31 0.00538 + 32 0.00429 + 33 0.00484 + 37 0.00164 + 41 0.129 + 42 0.00538 + 43 0.000274 + 44 0.000548 + 45 0.00657 + 46 0.0042 + 47 0.0252 + + 31 14933 38 0 + 0 0.613 + 1 0.0214 + 2 0.0127 + 3 0.00469 + 4 0.00449 + 6 6.7e-05 + 7 0.0115 + 8 0.000335 + 9 0.000134 + 10 0.000134 + 12 0.000335 + 13 0.088 + 14 0.0805 + 15 0.00429 + 16 0.000402 + 18 0.000268 + 19 0.00194 + 21 0.0765 + 22 0.000603 + 23 0.000268 + 26 0.000134 + 28 0.00221 + 29 0.00221 + 30 0.000804 + 31 0.00107 + 32 0.000804 + 33 0.00127 + 34 0.000268 + 35 0.000134 + 37 0.00114 + 40 6.7e-05 + 41 0.0488 + 42 0.00248 + 43 0.000469 + 44 0.00154 + 45 0.00254 + 46 0.00234 + 47 0.00984 + + 32 5292 30 0 + 2 0.0238 + 3 0.0017 + 4 0.0136 + 7 0.000945 + 8 0.0034 + 9 0.000378 + 10 0.00227 + 12 0.000189 + 13 0.034 + 14 0.41 + 15 0.0259 + 16 0.0108 + 18 0.000756 + 19 0.254 + 21 0.0752 + 22 0.000189 + 29 0.000189 + 30 0.000378 + 31 0.00189 + 32 0.000378 + 33 0.000378 + 34 0.058 + 35 0.0421 + 37 0.000189 + 41 0.0291 + 42 0.0034 + 43 0.00265 + 45 0.00246 + 46 0.00151 + 47 0.000189 + + 33 9413 30 0 + 2 0.0278 + 3 0.00287 + 4 0.017 + 5 0.000637 + 6 0.000425 + 7 0.00181 + 8 0.0017 + 9 0.000106 + 13 0.212 + 14 0.0119 + 15 0.166 + 16 0.00255 + 18 0.000956 + 19 0.196 + 21 0.0667 + 22 0.000212 + 25 0.000319 + 28 0.000106 + 29 0.000637 + 30 0.000425 + 31 0.000531 + 32 0.000319 + 34 0.073 + 35 0.0276 + 41 0.0882 + 42 0.00351 + 43 0.00287 + 45 0.00499 + 46 0.0859 + 47 0.00382 + + 41 7 4 0 + 0 0.143 + 2 0.571 + 12 0.143 + 21 0.143 + + 42 5 1 0 + 47 1 + + 45 114 15 0 + 0 0.202 + 2 0.0263 + 4 0.00877 + 6 0.00877 + 7 0.0351 + 12 0.0965 + 13 0.14 + 14 0.0614 + 15 0.0263 + 19 0.0702 + 21 0.0439 + 26 0.202 + 28 0.0175 + 35 0.00877 + 41 0.0526 + + 48 40 3 0 + 2 0.925 + 21 0.025 + 41 0.05 + + 49 1672 33 0 + 0 0.197 + 1 0.00538 + 2 0.145 + 3 0.00359 + 4 0.00718 + 7 0.0317 + 8 0.0012 + 10 0.0012 + 12 0.0514 + 13 0.106 + 14 0.103 + 15 0.0532 + 16 0.00239 + 18 0.000598 + 19 0.0371 + 21 0.0568 + 26 0.0359 + 28 0.0012 + 29 0.00239 + 30 0.0012 + 31 0.0012 + 32 0.000598 + 33 0.000598 + 34 0.0179 + 35 0.0102 + 37 0.0012 + 41 0.101 + 42 0.00538 + 43 0.000598 + 44 0.00179 + 45 0.00478 + 46 0.00299 + 47 0.00897 + + 50 8 7 0 + 0 0.125 + 13 0.125 + 14 0.125 + 15 0.25 + 30 0.125 + 33 0.125 + 41 0.125 + + 53 1 1 0 + 42 1 + + 55 113 11 0 + 0 0.0619 + 2 0.708 + 7 0.0177 + 14 0.0177 + 15 0.00885 + 19 0.0177 + 21 0.00885 + 26 0.0177 + 40 0.00885 + 41 0.106 + 42 0.0265 + + 57 77 6 0 + 0 0.234 + 2 0.558 + 12 0.039 + 15 0.013 + 21 0.039 + 41 0.117 + + 58 8 4 0 + 2 0.625 + 12 0.125 + 41 0.125 + 42 0.125 + + 60 2 2 0 + 0 0.5 + 2 0.5 + + 62 5 2 0 + 2 0.8 + 15 0.2 + + 64 7 4 0 + 0 0.286 + 2 0.429 + 7 0.143 + 41 0.143 + + 69 3673 34 0 + 0 0.0792 + 1 0.00136 + 2 0.00327 + 3 0.00163 + 4 0.00517 + 5 0.000817 + 7 0.0343 + 8 0.00463 + 10 0.000545 + 12 0.0686 + 13 0.141 + 14 0.107 + 15 0.116 + 16 0.00436 + 18 0.000545 + 19 0.106 + 20 0.000272 + 21 0.0482 + 24 0.000817 + 26 0.1 + 28 0.00327 + 29 0.0049 + 30 0.00218 + 31 0.0049 + 32 0.00218 + 33 0.00272 + 34 0.0302 + 35 0.0166 + 41 0.0803 + 42 0.00762 + 43 0.00191 + 45 0.00871 + 46 0.00299 + 47 0.00681 + + 74 1 1 0 + 47 1 + + 48 42 4 0 + 2 0.881 + 9 0.0238 + 21 0.0476 + 41 0.0476 + + 49 1717 34 19 + 0 0.192 + 1 0.00524 + 2 0.142 + 3 0.00466 + 4 0.00699 + 7 0.0309 + 8 0.00116 + 10 0.00116 + 12 0.0501 + 13 0.104 + 14 0.102 + 15 0.0524 + 16 0.00233 + 18 0.000582 + 19 0.0361 + 21 0.0658 + 22 0.000582 + 26 0.0349 + 28 0.00116 + 29 0.00233 + 30 0.00116 + 31 0.00116 + 32 0.000582 + 33 0.000582 + 34 0.0175 + 35 0.0099 + 37 0.00116 + 41 0.103 + 42 0.00524 + 43 0.000582 + 44 0.00175 + 45 0.0105 + 46 0.00291 + 47 0.00874 + + 0 55 10 0 + 0 0.0364 + 2 0.491 + 7 0.0182 + 12 0.0545 + 13 0.0909 + 15 0.0909 + 19 0.0727 + 21 0.0727 + 35 0.0182 + 41 0.0545 + + 1 6 4 0 + 2 0.333 + 7 0.167 + 13 0.333 + 14 0.167 + + 8 23 9 0 + 0 0.478 + 2 0.0435 + 12 0.0435 + 13 0.0435 + 14 0.13 + 21 0.13 + 29 0.0435 + 41 0.0435 + 47 0.0435 + + 12 15 4 0 + 2 0.733 + 13 0.133 + 14 0.0667 + 21 0.0667 + + 21 3 3 0 + 13 0.333 + 26 0.333 + 41 0.333 + + 26 4 4 0 + 0 0.25 + 2 0.25 + 8 0.25 + 29 0.25 + + 28 218 14 0 + 2 0.156 + 7 0.00459 + 12 0.362 + 13 0.0183 + 14 0.0229 + 15 0.00917 + 19 0.0183 + 21 0.101 + 26 0.261 + 37 0.00459 + 41 0.0183 + 42 0.00459 + 45 0.0138 + 47 0.00459 + + 29 283 14 0 + 0 0.0247 + 2 0.194 + 13 0.184 + 14 0.0954 + 15 0.205 + 16 0.00707 + 19 0.0777 + 21 0.0565 + 34 0.0283 + 35 0.0212 + 41 0.0883 + 43 0.00353 + 45 0.0106 + 46 0.00353 + + 30 218 18 0 + 0 0.216 + 2 0.078 + 4 0.00459 + 7 0.188 + 13 0.0872 + 14 0.147 + 15 0.0138 + 19 0.0138 + 21 0.0459 + 26 0.00459 + 29 0.00459 + 30 0.00459 + 31 0.00917 + 32 0.00459 + 41 0.128 + 42 0.0183 + 45 0.00917 + 47 0.0229 + + 31 583 24 0 + 0 0.437 + 1 0.0154 + 2 0.048 + 3 0.0103 + 4 0.0103 + 7 0.00858 + 10 0.00343 + 12 0.00172 + 13 0.0978 + 14 0.11 + 15 0.00515 + 18 0.00172 + 19 0.00343 + 21 0.0703 + 28 0.00343 + 29 0.00172 + 34 0.00172 + 37 0.00172 + 41 0.132 + 42 0.00515 + 44 0.00515 + 45 0.0103 + 46 0.00343 + 47 0.012 + + 32 79 12 0 + 2 0.152 + 4 0.0253 + 13 0.0127 + 14 0.392 + 15 0.038 + 16 0.0127 + 19 0.19 + 21 0.0633 + 34 0.0506 + 35 0.038 + 41 0.0127 + 46 0.0127 + + 33 142 15 0 + 2 0.204 + 4 0.0141 + 7 0.0211 + 13 0.232 + 14 0.0141 + 15 0.106 + 16 0.00704 + 19 0.0704 + 21 0.0352 + 30 0.00704 + 34 0.12 + 35 0.0352 + 41 0.106 + 45 0.0211 + 46 0.00704 + + 41 10 2 0 + 2 0.1 + 41 0.9 + + 45 2 2 0 + 7 0.5 + 21 0.5 + + 46 1 1 0 + 4 1 + + 47 29 9 0 + 0 0.172 + 2 0.345 + 3 0.069 + 12 0.0345 + 14 0.103 + 15 0.0345 + 21 0.103 + 22 0.0345 + 41 0.103 + + 49 11 4 0 + 2 0.545 + 14 0.0909 + 35 0.0909 + 41 0.273 + + 55 6 3 0 + 2 0.5 + 41 0.333 + 42 0.167 + + 69 25 13 0 + 0 0.04 + 2 0.12 + 8 0.04 + 13 0.08 + 14 0.2 + 19 0.08 + 21 0.08 + 26 0.04 + 33 0.04 + 35 0.04 + 41 0.16 + 45 0.04 + 47 0.04 + + 50 13 9 0 + 0 0.0769 + 13 0.154 + 14 0.0769 + 15 0.154 + 30 0.0769 + 31 0.0769 + 32 0.0769 + 33 0.0769 + 41 0.231 + + 53 1 1 0 + 42 1 + + 55 130 17 5 + 0 0.0538 + 2 0.615 + 4 0.00769 + 7 0.0154 + 9 0.00769 + 13 0.00769 + 14 0.0231 + 15 0.00769 + 19 0.0154 + 21 0.0462 + 26 0.0154 + 28 0.00769 + 33 0.00769 + 40 0.00769 + 41 0.131 + 42 0.0231 + 46 0.00769 + + 31 6 2 0 + 0 0.833 + 40 0.167 + + 41 3 3 0 + 15 0.333 + 19 0.333 + 41 0.333 + + 47 89 12 0 + 0 0.0225 + 2 0.652 + 4 0.0112 + 9 0.0112 + 13 0.0112 + 21 0.0449 + 26 0.0112 + 28 0.0112 + 33 0.0112 + 41 0.169 + 42 0.0337 + 46 0.0112 + + 55 4 3 0 + 2 0.5 + 19 0.25 + 26 0.25 + + 62 10 4 0 + 2 0.6 + 7 0.2 + 14 0.1 + 41 0.1 + + 57 96 9 6 + 0 0.188 + 2 0.448 + 3 0.0104 + 8 0.0104 + 12 0.0312 + 13 0.115 + 15 0.0208 + 21 0.0312 + 41 0.146 + + 0 7 1 0 + 2 1 + + 29 7 1 0 + 2 1 + + 41 17 2 0 + 2 0.294 + 41 0.706 + + 47 36 8 0 + 0 0.472 + 2 0.167 + 3 0.0278 + 8 0.0278 + 12 0.0833 + 13 0.167 + 15 0.0278 + 21 0.0278 + + 64 3 2 0 + 13 0.667 + 21 0.333 + + 69 2 2 0 + 13 0.5 + 15 0.5 + + 58 10 6 0 + 2 0.5 + 8 0.1 + 12 0.1 + 28 0.1 + 41 0.1 + 42 0.1 + + 62 16 7 0 + 2 0.25 + 3 0.125 + 4 0.0625 + 13 0.25 + 14 0.188 + 15 0.0625 + 41 0.0625 + + 64 18 10 1 + 0 0.111 + 2 0.167 + 3 0.111 + 7 0.0556 + 8 0.0556 + 9 0.0556 + 13 0.111 + 14 0.0556 + 16 0.0556 + 41 0.222 + + 41 4 2 0 + 2 0.75 + 41 0.25 + + 69 3772 35 0 + 0 0.0771 + 1 0.00133 + 2 0.00663 + 3 0.00159 + 4 0.0061 + 5 0.000795 + 7 0.0334 + 8 0.00477 + 10 0.00053 + 12 0.0668 + 13 0.141 + 14 0.104 + 15 0.114 + 16 0.00424 + 18 0.00133 + 19 0.103 + 20 0.000265 + 21 0.0586 + 23 0.000265 + 24 0.000795 + 26 0.0978 + 28 0.00318 + 29 0.00477 + 30 0.00212 + 31 0.00477 + 32 0.00212 + 33 0.00265 + 34 0.0294 + 35 0.0162 + 41 0.0798 + 42 0.00769 + 43 0.00186 + 45 0.0109 + 46 0.00292 + 47 0.00663 + + 74 1 1 0 + 47 1 + +70 128 19 3 + 0 0.0156 + 2 0.0703 + 7 0.156 + 8 0.0234 + 13 0.0312 + 19 0.0156 + 21 0.0547 + 24 0.0312 + 28 0.172 + 29 0.0312 + 30 0.0312 + 31 0.0312 + 32 0.0781 + 33 0.109 + 37 0.00781 + 41 0.0156 + 42 0.0312 + 45 0.0312 + 47 0.0625 + + 8 3 3 0 + 2 0.333 + 21 0.333 + 37 0.333 + + 21 7 6 0 + 2 0.143 + 28 0.286 + 29 0.143 + 33 0.143 + 42 0.143 + 47 0.143 + + 47 59 17 1 + 0 0.0169 + 2 0.0678 + 7 0.169 + 8 0.0169 + 13 0.0339 + 19 0.0169 + 24 0.0339 + 28 0.186 + 29 0.0339 + 30 0.0339 + 31 0.0339 + 32 0.0847 + 33 0.119 + 41 0.0169 + 42 0.0339 + 45 0.0339 + 47 0.0678 + + 21 7 6 0 + 2 0.143 + 28 0.286 + 29 0.143 + 33 0.143 + 42 0.143 + 47 0.143 + +71 4170 32 7 + 0 0.0254 + 2 0.0451 + 3 0.0139 + 4 0.00048 + 7 0.0686 + 8 0.0206 + 9 0.000959 + 10 0.00192 + 13 0.158 + 14 0.0652 + 15 0.0254 + 18 0.00048 + 19 0.00959 + 21 0.0415 + 22 0.00048 + 24 0.00624 + 26 0.00288 + 28 0.058 + 29 0.0177 + 30 0.012 + 31 0.0197 + 32 0.011 + 33 0.0173 + 34 0.00024 + 37 0.00168 + 40 0.000959 + 41 0.194 + 42 0.0149 + 44 0.00192 + 45 0.0367 + 46 0.011 + 47 0.116 + + 2 6 1 0 + 37 1 + + 7 30 8 0 + 0 0.0333 + 3 0.0667 + 13 0.4 + 14 0.2 + 15 0.133 + 21 0.0667 + 41 0.0667 + 46 0.0333 + + 13 1 1 0 + 34 1 + + 21 24 14 0 + 0 0.0417 + 2 0.0833 + 7 0.0833 + 8 0.0833 + 13 0.0417 + 14 0.0833 + 24 0.0833 + 28 0.125 + 31 0.0833 + 40 0.0417 + 41 0.0417 + 42 0.0833 + 45 0.0417 + 47 0.0833 + + 37 2036 31 1 + 0 0.025 + 2 0.0462 + 3 0.0133 + 4 0.000491 + 7 0.0693 + 8 0.0192 + 9 0.000982 + 10 0.00196 + 13 0.155 + 14 0.0624 + 15 0.0241 + 18 0.000491 + 19 0.00982 + 21 0.0486 + 22 0.000491 + 24 0.0054 + 26 0.00295 + 28 0.057 + 29 0.0182 + 30 0.0123 + 31 0.0192 + 32 0.0113 + 33 0.0172 + 37 0.000491 + 40 0.000491 + 41 0.196 + 42 0.0142 + 44 0.00196 + 45 0.0373 + 46 0.0108 + 47 0.117 + + 2 6 3 0 + 21 0.333 + 28 0.167 + 30 0.5 + + 47 2063 30 3 + 0 0.0257 + 2 0.0441 + 3 0.0141 + 4 0.000485 + 7 0.0693 + 8 0.0208 + 9 0.000969 + 10 0.00194 + 13 0.16 + 14 0.0659 + 15 0.0257 + 18 0.000485 + 19 0.00969 + 21 0.0349 + 22 0.000485 + 24 0.0063 + 26 0.00291 + 28 0.0587 + 29 0.0179 + 30 0.0121 + 31 0.0199 + 32 0.0111 + 33 0.0175 + 40 0.000969 + 41 0.196 + 42 0.015 + 44 0.00194 + 45 0.0368 + 46 0.0111 + 47 0.117 + + 7 30 8 0 + 0 0.0333 + 3 0.0667 + 13 0.4 + 14 0.2 + 15 0.133 + 21 0.0667 + 41 0.0667 + 46 0.0333 + + 21 24 14 0 + 0 0.0417 + 2 0.0833 + 7 0.0833 + 8 0.0833 + 13 0.0417 + 14 0.0833 + 24 0.0833 + 28 0.125 + 31 0.0833 + 40 0.0417 + 41 0.0417 + 42 0.0833 + 45 0.0417 + 47 0.0833 + + 49 6 5 0 + 2 0.167 + 8 0.333 + 14 0.167 + 28 0.167 + 33 0.167 + + 49 6 5 0 + 2 0.167 + 8 0.333 + 14 0.167 + 28 0.167 + 33 0.167 + +72 14825 39 21 + 0 0.00567 + 1 0.000135 + 2 0.0114 + 3 0.00614 + 4 0.0123 + 5 0.00027 + 6 0.000135 + 7 0.0813 + 8 0.00668 + 9 0.000202 + 10 0.000337 + 13 0.22 + 14 0.173 + 15 0.0205 + 16 0.00378 + 17 0.000135 + 19 0.00256 + 21 0.00621 + 22 0.000135 + 23 0.000135 + 24 0.00243 + 26 0.0058 + 28 0.0188 + 29 0.00351 + 30 0.00513 + 31 0.00351 + 32 0.00445 + 33 0.00391 + 35 6.75e-05 + 36 0.000135 + 37 0.00256 + 40 0.000405 + 41 0.342 + 42 0.0121 + 43 0.00121 + 44 0.00216 + 45 0.0119 + 46 0.0103 + 47 0.0185 + + 3 7 1 0 + 41 1 + + 4 73 16 0 + 2 0.0411 + 3 0.0685 + 7 0.0274 + 13 0.315 + 14 0.0274 + 17 0.0137 + 21 0.0411 + 24 0.0274 + 28 0.0137 + 30 0.0137 + 31 0.0411 + 32 0.0137 + 33 0.0274 + 41 0.274 + 42 0.0274 + 45 0.0274 + + 7 358 17 0 + 2 0.00279 + 3 0.0168 + 4 0.00279 + 6 0.00279 + 8 0.0112 + 9 0.00279 + 10 0.00279 + 13 0.592 + 14 0.291 + 15 0.0223 + 19 0.00559 + 21 0.0112 + 22 0.00279 + 31 0.00279 + 41 0.014 + 42 0.0112 + 46 0.00559 + + 8 33 4 0 + 8 0.0303 + 23 0.0606 + 37 0.848 + 41 0.0606 + + 9 2 1 0 + 8 1 + + 10 5 1 0 + 41 1 + + 13 19 6 0 + 4 0.158 + 8 0.526 + 13 0.105 + 15 0.105 + 35 0.0526 + 41 0.0526 + + 14 19 5 0 + 8 0.789 + 9 0.0526 + 13 0.0526 + 15 0.0526 + 41 0.0526 + + 15 4 3 0 + 2 0.25 + 8 0.5 + 36 0.25 + + 21 17 9 2 + 0 0.0588 + 2 0.0588 + 13 0.0588 + 28 0.0588 + 29 0.0588 + 31 0.0588 + 32 0.118 + 33 0.0588 + 37 0.471 + + 35 5 4 0 + 0 0.2 + 29 0.2 + 32 0.4 + 33 0.2 + + 47 8 1 0 + 37 1 + + 23 2 1 0 + 4 1 + + 34 4214 26 0 + 0 0.00119 + 2 0.00498 + 3 0.00617 + 4 0.0038 + 7 0.0835 + 8 0.00166 + 13 0.245 + 14 0.173 + 15 0.0209 + 16 0.000237 + 19 0.00119 + 21 0.00119 + 26 0.00403 + 28 0.0038 + 29 0.000949 + 30 0.000475 + 31 0.00119 + 32 0.000475 + 33 0.000949 + 41 0.407 + 42 0.0135 + 43 0.00142 + 44 0.00237 + 45 0.00285 + 46 0.014 + 47 0.0038 + + 35 2343 31 0 + 0 0.0149 + 1 0.000427 + 2 0.0201 + 3 0.00299 + 4 0.0282 + 5 0.000854 + 7 0.0973 + 8 0.00683 + 13 0.141 + 14 0.178 + 15 0.023 + 16 0.0111 + 19 0.00469 + 21 0.0145 + 24 0.0064 + 26 0.0107 + 28 0.0405 + 29 0.00683 + 30 0.0141 + 31 0.00512 + 32 0.0102 + 33 0.00598 + 37 0.000427 + 40 0.000854 + 41 0.257 + 42 0.0102 + 43 0.00128 + 44 0.00256 + 45 0.0294 + 46 0.00555 + 47 0.0495 + + 36 159 11 0 + 2 0.0377 + 7 0.0126 + 13 0.145 + 14 0.157 + 16 0.00629 + 28 0.00629 + 32 0.00629 + 41 0.604 + 42 0.00629 + 46 0.0126 + 47 0.00629 + + 37 36 12 1 + 2 0.0556 + 7 0.222 + 8 0.0833 + 13 0.0278 + 19 0.0278 + 21 0.0833 + 28 0.333 + 33 0.0556 + 41 0.0278 + 42 0.0278 + 45 0.0278 + 47 0.0278 + + 21 8 6 0 + 7 0.125 + 8 0.25 + 21 0.125 + 28 0.125 + 33 0.25 + 42 0.125 + + 47 7352 37 14 + 0 0.00571 + 1 0.000136 + 2 0.0114 + 3 0.00598 + 4 0.0112 + 5 0.000272 + 6 0.000136 + 7 0.082 + 8 0.00449 + 9 0.000136 + 10 0.000136 + 13 0.222 + 14 0.174 + 15 0.0204 + 16 0.00381 + 17 0.000136 + 19 0.00258 + 21 0.00558 + 22 0.000136 + 24 0.00245 + 26 0.00585 + 28 0.0189 + 29 0.00354 + 30 0.00517 + 31 0.00354 + 32 0.00449 + 33 0.00394 + 36 0.000136 + 37 0.000136 + 40 0.000408 + 41 0.345 + 42 0.0122 + 43 0.00122 + 44 0.00218 + 45 0.012 + 46 0.0103 + 47 0.0186 + + 3 7 1 0 + 41 1 + + 4 73 16 0 + 2 0.0411 + 3 0.0685 + 7 0.0274 + 13 0.315 + 14 0.0274 + 17 0.0137 + 21 0.0411 + 24 0.0274 + 28 0.0137 + 30 0.0137 + 31 0.0411 + 32 0.0137 + 33 0.0274 + 41 0.274 + 42 0.0274 + 45 0.0274 + + 7 358 17 0 + 2 0.00279 + 3 0.0168 + 4 0.00279 + 6 0.00279 + 8 0.0112 + 9 0.00279 + 10 0.00279 + 13 0.592 + 14 0.291 + 15 0.0223 + 19 0.00559 + 21 0.0112 + 22 0.00279 + 31 0.00279 + 41 0.014 + 42 0.0112 + 46 0.00559 + + 10 5 1 0 + 41 1 + + 15 1 1 0 + 36 1 + + 21 9 8 0 + 0 0.111 + 2 0.111 + 13 0.111 + 28 0.111 + 29 0.111 + 31 0.111 + 32 0.222 + 33 0.111 + + 34 4211 26 0 + 0 0.00119 + 2 0.00499 + 3 0.00617 + 4 0.00356 + 7 0.0836 + 8 0.00166 + 13 0.246 + 14 0.174 + 15 0.0209 + 16 0.000237 + 19 0.00119 + 21 0.000712 + 26 0.00404 + 28 0.0038 + 29 0.00095 + 30 0.000475 + 31 0.00119 + 32 0.000475 + 33 0.00095 + 41 0.407 + 42 0.0135 + 43 0.00142 + 44 0.00237 + 45 0.00285 + 46 0.014 + 47 0.0038 + + 35 2336 31 0 + 0 0.015 + 1 0.000428 + 2 0.0201 + 3 0.003 + 4 0.0283 + 5 0.000856 + 7 0.0976 + 8 0.00642 + 13 0.141 + 14 0.178 + 15 0.0231 + 16 0.0111 + 19 0.00471 + 21 0.012 + 24 0.00642 + 26 0.0107 + 28 0.0407 + 29 0.00685 + 30 0.0141 + 31 0.00514 + 32 0.0103 + 33 0.00599 + 37 0.000428 + 40 0.000856 + 41 0.258 + 42 0.0103 + 43 0.00128 + 44 0.00257 + 45 0.0295 + 46 0.00557 + 47 0.0497 + + 36 159 11 0 + 2 0.0377 + 7 0.0126 + 13 0.145 + 14 0.157 + 16 0.00629 + 28 0.00629 + 32 0.00629 + 41 0.604 + 42 0.00629 + 46 0.0126 + 47 0.00629 + + 37 34 12 0 + 2 0.0588 + 7 0.235 + 8 0.0882 + 13 0.0294 + 19 0.0294 + 21 0.0294 + 28 0.353 + 33 0.0588 + 41 0.0294 + 42 0.0294 + 45 0.0294 + 47 0.0294 + + 55 43 9 0 + 8 0.0233 + 13 0.0233 + 14 0.0233 + 21 0.0233 + 28 0.0233 + 30 0.0233 + 33 0.0465 + 41 0.767 + 47 0.0465 + + 70 20 10 0 + 2 0.05 + 7 0.2 + 8 0.05 + 24 0.05 + 28 0.35 + 29 0.05 + 30 0.05 + 31 0.05 + 32 0.05 + 33 0.1 + + 71 7 6 0 + 7 0.143 + 8 0.143 + 14 0.143 + 28 0.286 + 29 0.143 + 31 0.143 + + 72 78 17 0 + 0 0.0128 + 2 0.0128 + 7 0.0769 + 8 0.0128 + 13 0.0513 + 21 0.0128 + 26 0.0128 + 28 0.0385 + 29 0.0385 + 31 0.0256 + 32 0.0256 + 33 0.0256 + 40 0.0128 + 41 0.564 + 42 0.0128 + 45 0.0513 + 47 0.0128 + + 55 44 9 1 + 8 0.0227 + 13 0.0227 + 14 0.0227 + 21 0.0227 + 28 0.0227 + 30 0.0227 + 33 0.0455 + 41 0.773 + 47 0.0455 + + 73 23 2 0 + 21 0.0435 + 41 0.957 + + 70 20 10 0 + 2 0.05 + 7 0.2 + 8 0.05 + 24 0.05 + 28 0.35 + 29 0.05 + 30 0.05 + 31 0.05 + 32 0.05 + 33 0.1 + + 71 7 6 0 + 7 0.143 + 8 0.143 + 14 0.143 + 28 0.286 + 29 0.143 + 31 0.143 + + 72 78 17 0 + 0 0.0128 + 2 0.0128 + 7 0.0769 + 8 0.0128 + 13 0.0513 + 21 0.0128 + 26 0.0128 + 28 0.0385 + 29 0.0385 + 31 0.0256 + 32 0.0256 + 33 0.0256 + 40 0.0128 + 41 0.564 + 42 0.0128 + 45 0.0513 + 47 0.0128 + + 73 23 5 0 + 3 0.13 + 4 0.522 + 8 0.087 + 10 0.13 + 13 0.13 + +73 782 20 2 + 0 0.00256 + 2 0.0128 + 3 0.0384 + 4 0.0767 + 8 0.0205 + 10 0.0205 + 13 0.371 + 14 0.115 + 15 0.0281 + 16 0.00256 + 28 0.0153 + 30 0.00512 + 31 0.00256 + 33 0.00512 + 41 0.23 + 42 0.0153 + 44 0.00256 + 45 0.00767 + 46 0.023 + 47 0.00512 + + 26 18 7 0 + 8 0.0556 + 13 0.444 + 14 0.0556 + 28 0.0556 + 31 0.0556 + 41 0.278 + 46 0.0556 + + 47 391 20 1 + 0 0.00256 + 2 0.0128 + 3 0.0384 + 4 0.0767 + 8 0.0205 + 10 0.0205 + 13 0.371 + 14 0.115 + 15 0.0281 + 16 0.00256 + 28 0.0153 + 30 0.00512 + 31 0.00256 + 33 0.00512 + 41 0.23 + 42 0.0153 + 44 0.00256 + 45 0.00767 + 46 0.023 + 47 0.00512 + + 26 18 7 0 + 8 0.0556 + 13 0.444 + 14 0.0556 + 28 0.0556 + 31 0.0556 + 41 0.278 + 46 0.0556 + +74 443 33 26 + 0 0.0113 + 2 0.0113 + 3 0.0361 + 4 0.0971 + 5 0.00451 + 6 0.00677 + 7 0.0474 + 8 0.00677 + 9 0.00677 + 12 0.00451 + 13 0.0564 + 14 0.0271 + 15 0.0113 + 16 0.00226 + 18 0.00451 + 19 0.00903 + 21 0.0113 + 22 0.00226 + 24 0.00451 + 25 0.00677 + 26 0.00226 + 28 0.00903 + 29 0.0226 + 30 0.00451 + 31 0.00903 + 32 0.00451 + 33 0.00226 + 40 0.00226 + 41 0.147 + 42 0.0271 + 44 0.00451 + 45 0.0406 + 47 0.357 + + 0 2 2 0 + 18 0.5 + 28 0.5 + + 2 5 3 0 + 13 0.2 + 14 0.4 + 47 0.4 + + 4 47 10 0 + 0 0.0426 + 2 0.0213 + 4 0.0213 + 7 0.149 + 13 0.0213 + 32 0.0213 + 41 0.447 + 42 0.0638 + 45 0.0851 + 47 0.128 + + 6 5 4 0 + 6 0.4 + 13 0.2 + 41 0.2 + 45 0.2 + + 7 11 9 0 + 2 0.0909 + 3 0.182 + 4 0.0909 + 13 0.0909 + 14 0.182 + 19 0.0909 + 28 0.0909 + 29 0.0909 + 41 0.0909 + + 8 4 4 0 + 14 0.25 + 22 0.25 + 26 0.25 + 44 0.25 + + 9 26 1 0 + 4 1 + + 12 1 1 0 + 12 1 + + 13 5 4 0 + 6 0.2 + 9 0.4 + 41 0.2 + 47 0.2 + + 14 4 3 0 + 2 0.25 + 8 0.5 + 9 0.25 + + 15 7 6 0 + 7 0.143 + 15 0.286 + 16 0.143 + 40 0.143 + 41 0.143 + 47 0.143 + + 21 3 3 0 + 4 0.333 + 7 0.333 + 13 0.333 + + 22 11 1 0 + 4 1 + + 25 39 4 0 + 3 0.0513 + 13 0.0513 + 14 0.0256 + 47 0.872 + + 26 6 5 0 + 3 0.333 + 7 0.167 + 13 0.167 + 14 0.167 + 29 0.167 + + 40 1 1 0 + 8 1 + + 41 9 4 0 + 0 0.111 + 13 0.333 + 21 0.444 + 33 0.111 + + 42 4 2 0 + 13 0.25 + 25 0.75 + + 47 174 22 15 + 0 0.0115 + 2 0.0115 + 3 0.046 + 4 0.0115 + 5 0.00575 + 7 0.0517 + 12 0.00575 + 13 0.0517 + 14 0.0287 + 18 0.00575 + 19 0.0115 + 24 0.00575 + 28 0.0115 + 29 0.0287 + 30 0.00575 + 31 0.0115 + 32 0.00575 + 41 0.161 + 42 0.023 + 44 0.00575 + 45 0.046 + 47 0.454 + + 0 2 2 0 + 18 0.5 + 28 0.5 + + 4 47 10 0 + 0 0.0426 + 2 0.0213 + 4 0.0213 + 7 0.149 + 13 0.0213 + 32 0.0213 + 41 0.447 + 42 0.0638 + 45 0.0851 + 47 0.128 + + 6 2 2 0 + 13 0.5 + 45 0.5 + + 7 10 9 0 + 2 0.1 + 3 0.2 + 4 0.1 + 13 0.1 + 14 0.1 + 19 0.1 + 28 0.1 + 29 0.1 + 41 0.1 + + 8 2 2 0 + 14 0.5 + 44 0.5 + + 12 1 1 0 + 12 1 + + 21 2 2 0 + 7 0.5 + 13 0.5 + + 25 39 4 0 + 3 0.0513 + 13 0.0513 + 14 0.0256 + 47 0.872 + + 26 5 4 0 + 3 0.4 + 13 0.2 + 14 0.2 + 29 0.2 + + 49 7 3 0 + 31 0.143 + 45 0.143 + 47 0.714 + + 55 15 7 0 + 3 0.0667 + 19 0.0667 + 29 0.133 + 31 0.0667 + 41 0.133 + 45 0.0667 + 47 0.467 + + 57 5 4 0 + 3 0.2 + 13 0.4 + 24 0.2 + 30 0.2 + + 64 2 2 0 + 7 0.5 + 42 0.5 + + 69 1 1 0 + 5 1 + + 74 19 3 0 + 41 0.0526 + 45 0.0526 + 47 0.895 + + 49 7 3 0 + 31 0.143 + 45 0.143 + 47 0.714 + + 55 25 12 0 + 3 0.04 + 7 0.04 + 13 0.04 + 15 0.08 + 19 0.04 + 21 0.04 + 29 0.08 + 31 0.04 + 41 0.2 + 42 0.04 + 45 0.08 + 47 0.28 + + 57 5 4 0 + 3 0.2 + 13 0.4 + 24 0.2 + 30 0.2 + + 62 3 3 0 + 29 0.333 + 42 0.333 + 47 0.333 + + 64 5 4 0 + 7 0.2 + 13 0.2 + 41 0.4 + 42 0.2 + + 69 2 2 0 + 5 0.5 + 42 0.5 + + 74 23 3 0 + 41 0.174 + 45 0.087 + 47 0.739 + diff --git a/samples/G-code/rm.g b/samples/G-code/rm.g new file mode 100644 index 00000000..89c5aa24 --- /dev/null +++ b/samples/G-code/rm.g @@ -0,0 +1,29735 @@ +48 34015 42 38 + 0 0.0085 + 2 0.0361 + 3 0.0052 + 4 0.00714 + 5 0.000206 + 6 0.000147 + 7 0.166 + 8 0.0349 + 9 0.00138 + 10 5.88e-05 + 12 0.00218 + 13 0.166 + 14 0.0529 + 15 0.0215 + 16 0.000529 + 17 0.000176 + 18 0.000118 + 19 0.00285 + 20 0.000353 + 21 0.0147 + 22 0.00171 + 23 0.000441 + 24 0.000353 + 26 0.0645 + 28 0.000147 + 29 0.0052 + 30 0.00409 + 31 0.003 + 32 0.00171 + 33 0.000823 + 34 0.0005 + 35 0.00047 + 37 0.00318 + 39 0.00173 + 40 0.223 + 41 0.136 + 42 0.0157 + 43 0.00247 + 44 0.00326 + 45 0.00173 + 46 0.00808 + 47 0.001 + + 0 6 4 0 + 21 0.167 + 30 0.167 + 40 0.333 + 41 0.333 + + 2 252 19 5 + 0 0.00397 + 3 0.0357 + 4 0.0238 + 7 0.0159 + 8 0.206 + 9 0.0437 + 10 0.00794 + 13 0.0556 + 14 0.00397 + 15 0.0119 + 21 0.341 + 22 0.0714 + 23 0.0516 + 29 0.0119 + 30 0.0238 + 31 0.0357 + 39 0.0159 + 41 0.0119 + 45 0.0278 + + 8 29 7 0 + 4 0.103 + 13 0.241 + 14 0.0345 + 21 0.138 + 29 0.0345 + 30 0.172 + 31 0.276 + + 41 42 10 0 + 3 0.0714 + 4 0.0238 + 7 0.0476 + 8 0.19 + 9 0.0476 + 10 0.0238 + 13 0.0238 + 21 0.452 + 29 0.0238 + 39 0.0952 + + 42 4 4 0 + 8 0.25 + 10 0.25 + 13 0.25 + 23 0.25 + + 46 4 1 0 + 45 1 + + 48 170 15 0 + 0 0.00588 + 3 0.0353 + 4 0.0118 + 7 0.0118 + 8 0.253 + 9 0.0529 + 13 0.0294 + 15 0.0176 + 21 0.365 + 22 0.106 + 23 0.0647 + 29 0.00588 + 31 0.00588 + 41 0.0176 + 45 0.0176 + + 3 192 10 5 + 3 0.00521 + 4 0.0104 + 7 0.0104 + 8 0.13 + 13 0.703 + 14 0.0573 + 15 0.0521 + 41 0.0156 + 43 0.0104 + 44 0.00521 + + 2 1 1 0 + 43 1 + + 3 19 5 0 + 8 0.105 + 13 0.421 + 14 0.105 + 15 0.263 + 41 0.105 + + 38 1 1 0 + 44 1 + + 39 155 8 0 + 3 0.00645 + 4 0.0129 + 8 0.142 + 13 0.748 + 14 0.0452 + 15 0.0323 + 41 0.00645 + 43 0.00645 + + 47 6 2 0 + 7 0.333 + 13 0.667 + + 4 32 7 1 + 8 0.312 + 13 0.438 + 14 0.0625 + 15 0.0312 + 39 0.0938 + 41 0.0312 + 42 0.0312 + + 47 5 3 0 + 39 0.6 + 41 0.2 + 42 0.2 + + 6 10 6 0 + 7 0.1 + 8 0.1 + 13 0.4 + 40 0.2 + 44 0.1 + 46 0.1 + + 7 50 13 2 + 2 0.04 + 3 0.02 + 7 0.32 + 8 0.02 + 9 0.02 + 13 0.04 + 14 0.04 + 21 0.18 + 26 0.1 + 30 0.02 + 31 0.02 + 40 0.14 + 41 0.04 + + 41 3 2 0 + 8 0.333 + 21 0.667 + + 47 36 10 0 + 2 0.0278 + 3 0.0278 + 7 0.389 + 9 0.0278 + 14 0.0556 + 21 0.111 + 26 0.139 + 30 0.0278 + 40 0.139 + 41 0.0556 + + 8 9595 38 23 + 0 0.00563 + 2 0.0308 + 3 0.0112 + 4 0.00834 + 5 0.000417 + 6 0.000104 + 7 0.235 + 8 0.0211 + 9 0.000208 + 12 0.00104 + 13 0.116 + 14 0.0552 + 15 0.0311 + 16 0.000521 + 19 0.00584 + 20 0.00073 + 21 0.0174 + 22 0.000521 + 24 0.000208 + 26 0.161 + 28 0.000104 + 29 0.000625 + 30 0.00396 + 31 0.00177 + 32 0.000208 + 33 0.000521 + 34 0.000625 + 35 0.000938 + 37 0.00427 + 39 0.00198 + 40 0.132 + 41 0.117 + 42 0.0148 + 43 0.00146 + 44 0.00208 + 45 0.00188 + 46 0.0127 + 47 0.000104 + + 2 518 18 0 + 0 0.00193 + 2 0.00965 + 7 0.0328 + 8 0.029 + 12 0.00193 + 13 0.342 + 14 0.322 + 15 0.00772 + 16 0.00386 + 19 0.00193 + 21 0.00579 + 26 0.0212 + 40 0.0927 + 41 0.0907 + 42 0.0116 + 43 0.00193 + 45 0.00579 + 46 0.0174 + + 3 34 6 0 + 8 0.0588 + 13 0.618 + 14 0.206 + 40 0.0294 + 41 0.0294 + 44 0.0588 + + 4 11 7 0 + 7 0.273 + 8 0.0909 + 13 0.182 + 14 0.0909 + 15 0.0909 + 21 0.0909 + 41 0.182 + + 7 20 7 0 + 7 0.15 + 8 0.05 + 13 0.1 + 14 0.35 + 15 0.05 + 40 0.2 + 41 0.1 + + 8 227 11 0 + 0 0.00441 + 2 0.0132 + 7 0.00441 + 8 0.0793 + 13 0.498 + 14 0.313 + 15 0.0529 + 30 0.00441 + 39 0.00441 + 40 0.00441 + 41 0.022 + + 9 15 3 0 + 2 0.0667 + 13 0.4 + 14 0.533 + + 10 29 4 0 + 8 0.069 + 13 0.621 + 14 0.276 + 41 0.0345 + + 13 23 7 0 + 2 0.13 + 7 0.304 + 8 0.174 + 13 0.087 + 14 0.087 + 40 0.087 + 41 0.13 + + 14 2 1 0 + 41 1 + + 15 54 8 0 + 8 0.111 + 13 0.259 + 14 0.037 + 15 0.519 + 16 0.0185 + 40 0.0185 + 41 0.0185 + 45 0.0185 + + 21 1945 28 0 + 0 0.00463 + 2 0.0221 + 3 0.0072 + 4 0.0118 + 7 0.217 + 8 0.0411 + 9 0.000514 + 13 0.202 + 14 0.074 + 15 0.0226 + 19 0.00308 + 21 0.00977 + 26 0.0833 + 28 0.000514 + 30 0.00463 + 31 0.000514 + 33 0.000514 + 34 0.000514 + 35 0.00103 + 37 0.00411 + 39 0.00103 + 40 0.128 + 41 0.116 + 42 0.0165 + 43 0.00206 + 44 0.00257 + 45 0.00206 + 46 0.0211 + + 22 423 21 0 + 0 0.00946 + 2 0.0402 + 3 0.00473 + 4 0.00946 + 7 0.229 + 8 0.0402 + 13 0.196 + 14 0.0757 + 15 0.00946 + 16 0.00236 + 19 0.00236 + 21 0.00473 + 26 0.13 + 30 0.00236 + 37 0.00709 + 39 0.00473 + 40 0.109 + 41 0.0969 + 42 0.0118 + 45 0.00236 + 46 0.0118 + + 23 263 15 0 + 0 0.0076 + 2 0.0114 + 7 0.076 + 8 0.0875 + 12 0.0038 + 13 0.441 + 14 0.205 + 15 0.0266 + 19 0.0038 + 26 0.0418 + 31 0.0114 + 40 0.0152 + 41 0.0532 + 42 0.0114 + 45 0.0038 + + 26 10 4 0 + 8 0.1 + 13 0.6 + 14 0.1 + 15 0.2 + + 37 1 1 0 + 19 1 + + 39 62 6 0 + 8 0.0968 + 13 0.742 + 14 0.0161 + 15 0.0161 + 31 0.0161 + 41 0.113 + + 41 59 8 0 + 2 0.0339 + 13 0.525 + 14 0.0678 + 15 0.288 + 16 0.0169 + 40 0.0169 + 41 0.0339 + 45 0.0169 + + 45 44 8 0 + 2 0.0227 + 7 0.0227 + 13 0.0455 + 21 0.0227 + 40 0.159 + 41 0.0455 + 42 0.0227 + 46 0.659 + + 47 5604 35 0 + 0 0.00625 + 2 0.0373 + 3 0.0162 + 4 0.00946 + 5 0.000714 + 7 0.294 + 8 0.00428 + 9 0.000178 + 12 0.00143 + 13 0.0121 + 14 0.00178 + 15 0.0316 + 19 0.00821 + 20 0.00125 + 21 0.0244 + 22 0.000892 + 24 0.000357 + 26 0.231 + 29 0.000892 + 30 0.00464 + 31 0.00214 + 32 0.000178 + 33 0.000714 + 34 0.000892 + 35 0.00125 + 37 0.00482 + 39 0.0025 + 40 0.155 + 41 0.118 + 42 0.0162 + 43 0.00161 + 44 0.00214 + 45 0.00125 + 46 0.00642 + 47 0.000178 + + 49 92 12 0 + 0 0.0109 + 2 0.0109 + 6 0.0109 + 7 0.25 + 8 0.0217 + 13 0.141 + 14 0.0761 + 26 0.141 + 40 0.152 + 41 0.141 + 42 0.0217 + 46 0.0217 + + 50 4 2 0 + 2 0.25 + 14 0.75 + + 55 141 13 0 + 0 0.00709 + 2 0.0496 + 7 0.0638 + 13 0.00709 + 21 0.0213 + 29 0.00709 + 30 0.00709 + 32 0.00709 + 37 0.0213 + 40 0.135 + 41 0.652 + 42 0.0142 + 44 0.00709 + + 60 4 2 0 + 13 0.75 + 40 0.25 + + 9 829 25 8 + 0 0.00362 + 2 0.0338 + 3 0.00362 + 4 0.00362 + 7 0.422 + 8 0.0169 + 12 0.00241 + 13 0.171 + 14 0.0627 + 15 0.0109 + 17 0.00121 + 21 0.00965 + 24 0.00483 + 26 0.0627 + 29 0.00241 + 30 0.00121 + 31 0.00121 + 32 0.00241 + 37 0.00241 + 40 0.0953 + 41 0.0724 + 42 0.00844 + 43 0.00121 + 46 0.00241 + 47 0.00121 + + 2 36 12 0 + 2 0.0278 + 7 0.111 + 8 0.0556 + 13 0.167 + 14 0.25 + 15 0.0556 + 21 0.0278 + 26 0.0556 + 40 0.111 + 41 0.0556 + 42 0.0556 + 46 0.0278 + + 4 5 2 0 + 13 0.6 + 14 0.4 + + 8 9 3 0 + 2 0.222 + 13 0.556 + 14 0.222 + + 21 279 14 0 + 2 0.00717 + 3 0.0108 + 4 0.0108 + 7 0.287 + 8 0.0358 + 13 0.348 + 14 0.0932 + 15 0.0179 + 26 0.0358 + 40 0.0824 + 41 0.0573 + 42 0.00717 + 43 0.00358 + 46 0.00358 + + 47 383 20 0 + 0 0.00261 + 2 0.0601 + 7 0.517 + 8 0.00261 + 12 0.00522 + 13 0.0261 + 14 0.00261 + 15 0.00261 + 17 0.00261 + 21 0.0183 + 24 0.0104 + 26 0.102 + 29 0.00522 + 30 0.00261 + 31 0.00261 + 32 0.00522 + 37 0.00522 + 40 0.123 + 41 0.0966 + 42 0.00783 + + 49 3 2 0 + 13 0.333 + 14 0.667 + + 55 96 9 0 + 0 0.0208 + 7 0.656 + 8 0.0104 + 13 0.156 + 14 0.0625 + 26 0.0104 + 40 0.0417 + 41 0.0312 + 47 0.0104 + + 60 7 6 0 + 7 0.143 + 13 0.143 + 14 0.286 + 15 0.143 + 40 0.143 + 41 0.143 + + 10 68 16 4 + 2 0.132 + 4 0.0294 + 7 0.103 + 8 0.0441 + 13 0.294 + 14 0.0147 + 15 0.0147 + 21 0.0147 + 30 0.0441 + 31 0.0294 + 37 0.0147 + 39 0.0147 + 40 0.0147 + 41 0.191 + 42 0.0294 + 46 0.0147 + + 4 2 2 0 + 2 0.5 + 14 0.5 + + 8 12 3 0 + 8 0.167 + 13 0.75 + 41 0.0833 + + 21 12 5 0 + 7 0.0833 + 8 0.0833 + 13 0.417 + 41 0.333 + 46 0.0833 + + 47 39 13 0 + 2 0.205 + 4 0.0513 + 7 0.154 + 13 0.0769 + 15 0.0256 + 21 0.0256 + 30 0.0769 + 31 0.0513 + 37 0.0256 + 39 0.0256 + 40 0.0256 + 41 0.205 + 42 0.0513 + + 13 1034 21 11 + 0 0.0029 + 2 0.00774 + 4 0.00193 + 7 0.0338 + 8 0.088 + 9 0.00677 + 12 0.000967 + 13 0.632 + 14 0.147 + 15 0.0126 + 21 0.000967 + 26 0.0106 + 29 0.000967 + 30 0.00387 + 31 0.00677 + 33 0.000967 + 40 0.0106 + 41 0.0155 + 42 0.000967 + 44 0.0087 + 46 0.00677 + + 2 23 5 0 + 7 0.0435 + 13 0.304 + 14 0.522 + 40 0.0435 + 41 0.087 + + 3 766 12 0 + 2 0.00392 + 8 0.0914 + 9 0.00261 + 13 0.77 + 14 0.106 + 15 0.0117 + 30 0.00392 + 31 0.00522 + 40 0.00131 + 41 0.00131 + 44 0.00131 + 46 0.00131 + + 8 37 10 0 + 0 0.0811 + 2 0.0811 + 7 0.108 + 8 0.027 + 13 0.27 + 14 0.0811 + 15 0.027 + 41 0.135 + 44 0.0811 + 46 0.108 + + 9 7 5 0 + 7 0.286 + 8 0.143 + 14 0.143 + 26 0.143 + 41 0.286 + + 10 2 2 0 + 7 0.5 + 8 0.5 + + 21 7 4 0 + 7 0.429 + 14 0.286 + 40 0.143 + 44 0.143 + + 45 2 1 0 + 46 1 + + 47 48 11 0 + 2 0.0208 + 4 0.0417 + 7 0.396 + 12 0.0208 + 15 0.0417 + 26 0.188 + 30 0.0208 + 31 0.0208 + 40 0.104 + 41 0.125 + 42 0.0208 + + 49 2 2 0 + 26 0.5 + 40 0.5 + + 55 1 1 0 + 40 1 + + 60 117 12 0 + 7 0.0171 + 8 0.154 + 9 0.0427 + 13 0.291 + 14 0.41 + 15 0.00855 + 21 0.00855 + 29 0.00855 + 31 0.0171 + 33 0.00855 + 40 0.00855 + 44 0.0256 + + 14 11 8 0 + 8 0.182 + 9 0.0909 + 13 0.0909 + 14 0.0909 + 15 0.0909 + 40 0.0909 + 41 0.182 + 44 0.182 + + 15 45 14 3 + 2 0.0444 + 7 0.178 + 8 0.0444 + 13 0.2 + 14 0.111 + 15 0.178 + 16 0.0444 + 21 0.0222 + 26 0.0444 + 40 0.0444 + 41 0.0222 + 42 0.0222 + 43 0.0222 + 47 0.0222 + + 2 5 3 0 + 14 0.4 + 15 0.4 + 40 0.2 + + 15 19 8 0 + 2 0.0526 + 8 0.105 + 13 0.368 + 14 0.105 + 15 0.211 + 26 0.0526 + 42 0.0526 + 47 0.0526 + + 47 15 8 0 + 2 0.0667 + 7 0.533 + 16 0.0667 + 21 0.0667 + 26 0.0667 + 40 0.0667 + 41 0.0667 + 43 0.0667 + + 21 402 29 7 + 0 0.0199 + 2 0.0199 + 3 0.0249 + 4 0.0896 + 6 0.00249 + 7 0.216 + 8 0.0224 + 9 0.00249 + 12 0.00249 + 13 0.0249 + 14 0.00249 + 15 0.00249 + 17 0.00249 + 18 0.00498 + 19 0.00249 + 20 0.00249 + 21 0.0373 + 22 0.0522 + 26 0.197 + 28 0.00249 + 29 0.00498 + 30 0.0796 + 31 0.00746 + 33 0.00249 + 40 0.097 + 41 0.0547 + 42 0.0174 + 46 0.00249 + 47 0.00249 + + 2 9 4 0 + 8 0.444 + 21 0.333 + 40 0.111 + 41 0.111 + + 8 48 10 0 + 2 0.0208 + 4 0.0208 + 7 0.229 + 13 0.0208 + 15 0.0208 + 21 0.0208 + 26 0.479 + 40 0.0833 + 41 0.0833 + 42 0.0208 + + 21 41 10 0 + 2 0.0244 + 4 0.0244 + 7 0.439 + 8 0.0732 + 13 0.0244 + 21 0.0244 + 26 0.22 + 40 0.0732 + 41 0.0732 + 42 0.0244 + + 23 2 2 0 + 28 0.5 + 40 0.5 + + 41 3 3 0 + 8 0.333 + 21 0.333 + 30 0.333 + + 47 282 27 0 + 0 0.0248 + 2 0.0142 + 3 0.0355 + 4 0.117 + 6 0.00355 + 7 0.188 + 8 0.00355 + 9 0.00355 + 12 0.00355 + 13 0.0248 + 14 0.00355 + 17 0.00355 + 18 0.00709 + 19 0.00355 + 20 0.00355 + 21 0.0284 + 22 0.0745 + 26 0.16 + 29 0.00709 + 30 0.11 + 31 0.00709 + 33 0.00355 + 40 0.0957 + 41 0.0496 + 42 0.0177 + 46 0.00355 + 47 0.00355 + + 55 6 5 0 + 0 0.167 + 2 0.167 + 4 0.167 + 31 0.167 + 40 0.333 + + 22 62 10 2 + 0 0.0161 + 2 0.0323 + 7 0.452 + 8 0.113 + 21 0.0161 + 22 0.0161 + 26 0.0806 + 31 0.0161 + 40 0.161 + 41 0.0968 + + 21 20 7 0 + 7 0.3 + 8 0.3 + 21 0.05 + 26 0.1 + 31 0.05 + 40 0.15 + 41 0.05 + + 47 34 7 0 + 0 0.0294 + 2 0.0588 + 7 0.5 + 22 0.0294 + 26 0.0882 + 40 0.176 + 41 0.118 + + 24 11 5 0 + 7 0.273 + 21 0.0909 + 30 0.0909 + 40 0.182 + 41 0.364 + + 26 2 2 0 + 13 0.5 + 21 0.5 + + 28 7 6 0 + 4 0.143 + 7 0.286 + 13 0.143 + 19 0.143 + 42 0.143 + 46 0.143 + + 29 12 5 1 + 7 0.167 + 8 0.417 + 13 0.25 + 26 0.0833 + 41 0.0833 + + 47 4 3 0 + 7 0.5 + 26 0.25 + 41 0.25 + + 30 83 12 4 + 0 0.0361 + 2 0.012 + 7 0.157 + 8 0.0482 + 13 0.277 + 14 0.0602 + 15 0.0482 + 26 0.0723 + 40 0.169 + 41 0.0964 + 43 0.012 + 46 0.012 + + 21 28 6 0 + 8 0.143 + 13 0.5 + 14 0.0714 + 15 0.107 + 26 0.107 + 41 0.0714 + + 45 1 1 0 + 46 1 + + 47 34 8 0 + 0 0.0588 + 2 0.0294 + 7 0.294 + 13 0.0294 + 26 0.0882 + 40 0.353 + 41 0.118 + 43 0.0294 + + 49 3 3 0 + 0 0.333 + 7 0.333 + 14 0.333 + + 31 741 29 9 + 0 0.0027 + 2 0.0243 + 3 0.0121 + 4 0.0081 + 7 0.192 + 8 0.0715 + 9 0.00135 + 12 0.00135 + 13 0.19 + 14 0.117 + 15 0.0526 + 16 0.00135 + 17 0.00135 + 19 0.0027 + 21 0.00675 + 24 0.0081 + 26 0.101 + 30 0.00135 + 31 0.00135 + 37 0.00135 + 39 0.0162 + 40 0.0931 + 41 0.0607 + 42 0.0054 + 43 0.0027 + 44 0.00135 + 45 0.00675 + 46 0.0135 + 47 0.00135 + + 2 18 7 0 + 0 0.0556 + 7 0.111 + 8 0.0556 + 13 0.222 + 14 0.389 + 40 0.111 + 46 0.0556 + + 7 1 1 0 + 46 1 + + 13 13 6 0 + 2 0.0769 + 8 0.538 + 13 0.154 + 14 0.0769 + 26 0.0769 + 40 0.0769 + + 21 379 22 0 + 2 0.0132 + 3 0.0132 + 7 0.0633 + 8 0.106 + 9 0.00264 + 13 0.322 + 14 0.201 + 15 0.095 + 16 0.00264 + 21 0.00528 + 24 0.00792 + 26 0.0343 + 30 0.00264 + 31 0.00264 + 37 0.00264 + 39 0.029 + 40 0.0475 + 41 0.0237 + 42 0.00528 + 43 0.00528 + 45 0.0106 + 46 0.00528 + + 22 17 7 0 + 2 0.118 + 7 0.471 + 13 0.0588 + 14 0.0588 + 40 0.118 + 41 0.118 + 46 0.0588 + + 23 8 6 0 + 2 0.25 + 13 0.25 + 14 0.125 + 24 0.125 + 40 0.125 + 41 0.125 + + 47 268 22 0 + 0 0.00373 + 2 0.0299 + 3 0.0112 + 4 0.0224 + 7 0.358 + 8 0.00373 + 12 0.00373 + 13 0.00746 + 15 0.00746 + 17 0.00373 + 19 0.00746 + 21 0.0112 + 24 0.00746 + 26 0.224 + 39 0.00373 + 40 0.153 + 41 0.112 + 42 0.00373 + 44 0.00373 + 45 0.00373 + 46 0.0149 + 47 0.00373 + + 49 27 11 0 + 3 0.037 + 7 0.333 + 8 0.148 + 13 0.148 + 14 0.037 + 15 0.037 + 26 0.037 + 40 0.0741 + 41 0.0741 + 42 0.037 + 46 0.037 + + 55 5 3 0 + 7 0.6 + 40 0.2 + 41 0.2 + + 39 2 1 0 + 3 1 + + 40 8 3 0 + 6 0.125 + 46 0.25 + 47 0.625 + + 41 149 17 7 + 0 0.0134 + 2 0.289 + 3 0.00671 + 7 0.101 + 8 0.134 + 9 0.0134 + 13 0.0805 + 14 0.0671 + 15 0.00671 + 19 0.0268 + 21 0.121 + 22 0.0403 + 23 0.00671 + 26 0.0403 + 31 0.0134 + 39 0.0134 + 46 0.0268 + + 8 19 10 0 + 2 0.105 + 7 0.0526 + 13 0.211 + 14 0.263 + 19 0.0526 + 21 0.105 + 26 0.0526 + 31 0.0526 + 39 0.0526 + 46 0.0526 + + 9 3 1 0 + 14 1 + + 10 1 1 0 + 23 1 + + 13 2 1 0 + 13 1 + + 48 105 16 0 + 0 0.00952 + 2 0.371 + 3 0.00952 + 7 0.0571 + 8 0.162 + 9 0.019 + 13 0.0476 + 14 0.019 + 15 0.00952 + 19 0.019 + 21 0.152 + 22 0.0571 + 26 0.019 + 31 0.00952 + 39 0.00952 + 46 0.0286 + + 55 6 2 0 + 7 0.667 + 26 0.333 + + 57 6 4 0 + 0 0.167 + 7 0.5 + 8 0.167 + 19 0.167 + + 42 16 7 0 + 2 0.375 + 7 0.125 + 14 0.125 + 21 0.188 + 26 0.0625 + 32 0.0625 + 34 0.0625 + + 44 1 1 0 + 39 1 + + 45 9 6 0 + 7 0.222 + 8 0.222 + 9 0.111 + 13 0.111 + 14 0.111 + 31 0.222 + + 46 73 14 5 + 2 0.11 + 4 0.0274 + 7 0.452 + 8 0.0274 + 13 0.0959 + 14 0.0274 + 19 0.0411 + 21 0.0548 + 26 0.0959 + 29 0.0137 + 30 0.0137 + 42 0.0137 + 44 0.0137 + 45 0.0137 + + 8 56 9 0 + 2 0.0893 + 4 0.0357 + 7 0.518 + 8 0.0179 + 13 0.107 + 14 0.0179 + 19 0.0536 + 21 0.0536 + 26 0.107 + + 13 3 3 0 + 8 0.333 + 14 0.333 + 44 0.333 + + 41 3 3 0 + 21 0.333 + 30 0.333 + 45 0.333 + + 48 5 3 0 + 2 0.6 + 7 0.2 + 42 0.2 + + 57 1 1 0 + 29 1 + + 47 14411 39 31 + 0 0.00992 + 2 0.0338 + 3 0.00222 + 4 0.00583 + 5 0.000139 + 6 0.000139 + 7 0.126 + 8 0.038 + 9 0.00104 + 12 0.00257 + 13 0.193 + 14 0.0622 + 15 0.0192 + 16 0.000625 + 17 0.000208 + 18 0.000139 + 19 0.0018 + 20 0.000278 + 21 0.00971 + 22 0.000416 + 26 0.0212 + 28 0.000139 + 29 0.00597 + 30 0.00285 + 31 0.00285 + 32 0.00201 + 33 0.000971 + 34 0.000555 + 35 0.000486 + 37 0.00347 + 39 0.00118 + 40 0.263 + 41 0.155 + 42 0.0176 + 43 0.00285 + 44 0.00298 + 45 0.00167 + 46 0.00701 + 47 0.00118 + + 0 5 3 0 + 30 0.2 + 40 0.4 + 41 0.4 + + 3 187 8 0 + 4 0.0107 + 8 0.134 + 13 0.711 + 14 0.0588 + 15 0.0535 + 41 0.016 + 43 0.0107 + 44 0.00535 + + 4 28 5 0 + 8 0.357 + 13 0.5 + 14 0.0714 + 15 0.0357 + 41 0.0357 + + 6 8 5 0 + 7 0.125 + 8 0.125 + 13 0.5 + 44 0.125 + 46 0.125 + + 7 20 7 0 + 2 0.1 + 7 0.2 + 13 0.05 + 14 0.1 + 21 0.1 + 40 0.35 + 41 0.1 + + 8 6530 37 0 + 0 0.00827 + 2 0.0409 + 3 0.00322 + 4 0.00796 + 5 0.000153 + 6 0.000153 + 7 0.169 + 8 0.0297 + 9 0.000153 + 12 0.00153 + 13 0.163 + 14 0.0809 + 15 0.0204 + 16 0.000766 + 19 0.00337 + 20 0.000613 + 21 0.0139 + 22 0.000613 + 26 0.0383 + 28 0.000153 + 29 0.000919 + 30 0.00383 + 31 0.00214 + 32 0.000306 + 33 0.000766 + 34 0.000919 + 35 0.00107 + 37 0.00551 + 39 0.000766 + 40 0.194 + 41 0.168 + 42 0.0208 + 43 0.00214 + 44 0.00306 + 45 0.00245 + 46 0.0101 + 47 0.000153 + + 9 730 23 0 + 0 0.00411 + 2 0.0384 + 3 0.00411 + 4 0.00411 + 7 0.403 + 8 0.0192 + 12 0.00274 + 13 0.185 + 14 0.0712 + 15 0.0123 + 17 0.00137 + 21 0.00959 + 26 0.037 + 29 0.00274 + 31 0.00137 + 32 0.00274 + 37 0.00274 + 40 0.108 + 41 0.0781 + 42 0.00822 + 43 0.00137 + 46 0.00137 + 47 0.00137 + + 10 56 14 0 + 2 0.143 + 4 0.0357 + 7 0.0714 + 8 0.0536 + 13 0.321 + 14 0.0179 + 15 0.0179 + 21 0.0179 + 37 0.0179 + 39 0.0179 + 40 0.0179 + 41 0.214 + 42 0.0357 + 46 0.0179 + + 13 1001 21 0 + 0 0.003 + 2 0.00799 + 4 0.002 + 7 0.021 + 8 0.0909 + 9 0.00699 + 12 0.000999 + 13 0.651 + 14 0.152 + 15 0.012 + 21 0.000999 + 26 0.000999 + 29 0.000999 + 30 0.003 + 31 0.00699 + 33 0.000999 + 40 0.011 + 41 0.014 + 42 0.000999 + 44 0.00799 + 46 0.004 + + 14 10 7 0 + 8 0.2 + 9 0.1 + 13 0.1 + 14 0.1 + 40 0.1 + 41 0.2 + 44 0.2 + + 15 39 13 0 + 2 0.0513 + 7 0.179 + 8 0.0513 + 13 0.231 + 14 0.128 + 15 0.128 + 16 0.0513 + 21 0.0256 + 40 0.0513 + 41 0.0256 + 42 0.0256 + 43 0.0256 + 47 0.0256 + + 21 161 21 0 + 0 0.0373 + 2 0.0435 + 4 0.0683 + 7 0.224 + 8 0.0373 + 9 0.00621 + 12 0.00621 + 13 0.0124 + 17 0.00621 + 18 0.0124 + 21 0.0559 + 22 0.00621 + 26 0.0248 + 30 0.00621 + 31 0.0186 + 33 0.00621 + 40 0.236 + 41 0.137 + 42 0.0435 + 46 0.00621 + 47 0.00621 + + 22 58 10 0 + 0 0.0172 + 2 0.0345 + 7 0.448 + 8 0.121 + 21 0.0172 + 22 0.0172 + 26 0.0517 + 31 0.0172 + 40 0.172 + 41 0.103 + + 24 9 4 0 + 7 0.222 + 21 0.111 + 40 0.222 + 41 0.444 + + 28 5 5 0 + 4 0.2 + 13 0.2 + 19 0.2 + 42 0.2 + 46 0.2 + + 29 10 4 0 + 7 0.1 + 8 0.5 + 13 0.3 + 41 0.1 + + 30 74 11 0 + 0 0.0405 + 2 0.0135 + 7 0.122 + 8 0.0541 + 13 0.311 + 14 0.0676 + 15 0.0541 + 26 0.027 + 40 0.189 + 41 0.108 + 43 0.0135 + + 31 530 25 0 + 0 0.00377 + 2 0.034 + 3 0.0113 + 7 0.0585 + 8 0.1 + 9 0.00189 + 12 0.00189 + 13 0.266 + 14 0.164 + 15 0.0717 + 16 0.00189 + 17 0.00189 + 21 0.00566 + 26 0.00189 + 30 0.00189 + 31 0.00189 + 37 0.00189 + 39 0.0208 + 40 0.13 + 41 0.083 + 42 0.00755 + 43 0.00377 + 45 0.00755 + 46 0.0151 + 47 0.00189 + + 40 8 3 0 + 6 0.125 + 46 0.25 + 47 0.625 + + 41 29 9 0 + 0 0.069 + 7 0.0345 + 8 0.0345 + 13 0.414 + 14 0.31 + 15 0.0345 + 26 0.0345 + 31 0.0345 + 46 0.0345 + + 42 5 4 0 + 2 0.2 + 7 0.2 + 14 0.4 + 32 0.2 + + 46 27 11 0 + 2 0.148 + 7 0.222 + 8 0.0741 + 13 0.259 + 14 0.0741 + 19 0.037 + 26 0.037 + 29 0.037 + 30 0.037 + 42 0.037 + 44 0.037 + + 48 221 17 0 + 0 0.00452 + 2 0.0136 + 7 0.0588 + 8 0.0452 + 12 0.00452 + 13 0.167 + 14 0.104 + 15 0.0226 + 16 0.00452 + 21 0.00452 + 26 0.0136 + 30 0.0136 + 40 0.385 + 41 0.109 + 42 0.0317 + 44 0.00452 + 46 0.0136 + + 49 12 4 0 + 2 0.0833 + 7 0.0833 + 40 0.5 + 41 0.333 + + 55 300 18 0 + 0 0.0467 + 2 0.0267 + 3 0.00333 + 7 0.03 + 8 0.00333 + 9 0.00333 + 12 0.0133 + 13 0.0233 + 21 0.01 + 26 0.01 + 29 0.0833 + 31 0.03 + 32 0.0133 + 37 0.00333 + 40 0.213 + 41 0.47 + 42 0.0133 + 46 0.00333 + + 57 2237 27 0 + 0 0.0152 + 2 0.0434 + 4 0.00358 + 7 0.0724 + 8 0.00134 + 12 0.00581 + 13 0.00179 + 14 0.00224 + 15 0.000447 + 19 0.000894 + 21 0.00492 + 26 0.00402 + 28 0.000447 + 29 0.0219 + 30 0.000894 + 32 0.00894 + 33 0.00268 + 34 0.000447 + 37 0.00268 + 40 0.553 + 41 0.219 + 42 0.0259 + 43 0.00134 + 44 0.000894 + 45 0.000894 + 46 0.00358 + 47 0.000894 + + 58 36 11 0 + 2 0.0556 + 7 0.0556 + 8 0.0278 + 13 0.528 + 14 0.0556 + 15 0.0278 + 26 0.0278 + 30 0.0278 + 40 0.0833 + 41 0.0833 + 47 0.0278 + + 59 7 5 0 + 3 0.143 + 7 0.286 + 8 0.286 + 21 0.143 + 40 0.143 + + 60 706 15 0 + 2 0.00142 + 4 0.00283 + 8 0.154 + 9 0.00425 + 13 0.687 + 14 0.00992 + 15 0.0793 + 21 0.00142 + 29 0.00142 + 30 0.00283 + 31 0.00567 + 41 0.0142 + 43 0.0241 + 44 0.0085 + 45 0.00283 + + 62 898 17 0 + 0 0.0189 + 2 0.0156 + 7 0.0746 + 12 0.00445 + 13 0.00111 + 21 0.00557 + 29 0.00111 + 30 0.00111 + 33 0.00111 + 34 0.00111 + 37 0.00334 + 40 0.653 + 41 0.199 + 42 0.0134 + 44 0.00111 + 46 0.00223 + 47 0.00334 + + 64 460 11 0 + 0 0.00652 + 2 0.0283 + 4 0.00217 + 5 0.00217 + 7 0.0326 + 21 0.00217 + 40 0.672 + 41 0.222 + 42 0.0283 + 46 0.00217 + 47 0.00217 + + 48 1047 22 10 + 0 0.000955 + 2 0.165 + 4 0.00573 + 7 0.449 + 8 0.0115 + 12 0.000955 + 13 0.0363 + 14 0.022 + 15 0.00478 + 16 0.000955 + 19 0.000955 + 21 0.00955 + 22 0.000955 + 26 0.0229 + 30 0.00287 + 31 0.000955 + 40 0.0812 + 41 0.129 + 42 0.0229 + 43 0.000955 + 44 0.0229 + 46 0.00764 + + 2 207 18 0 + 0 0.00483 + 2 0.0193 + 4 0.00483 + 7 0.0773 + 8 0.0435 + 12 0.00483 + 13 0.164 + 14 0.106 + 15 0.0145 + 16 0.00483 + 21 0.00966 + 26 0.00966 + 30 0.0145 + 40 0.319 + 41 0.135 + 42 0.0483 + 44 0.00966 + 46 0.00966 + + 4 3 1 0 + 2 1 + + 7 5 3 0 + 8 0.4 + 40 0.4 + 41 0.2 + + 21 10 4 0 + 2 0.1 + 15 0.1 + 40 0.4 + 41 0.4 + + 41 42 8 0 + 2 0.452 + 13 0.0238 + 15 0.0238 + 21 0.0476 + 40 0.119 + 41 0.286 + 44 0.0238 + 46 0.0238 + + 42 3 2 0 + 40 0.667 + 41 0.333 + + 44 1 1 0 + 43 1 + + 45 12 5 0 + 2 0.0833 + 7 0.167 + 40 0.167 + 41 0.167 + 46 0.417 + + 47 750 13 0 + 2 0.191 + 4 0.00667 + 7 0.603 + 8 0.00133 + 13 0.00133 + 19 0.00133 + 21 0.008 + 22 0.00133 + 26 0.028 + 31 0.00133 + 41 0.111 + 42 0.0187 + 44 0.028 + + 50 4 2 0 + 14 0.25 + 41 0.75 + + 49 35 9 3 + 2 0.0286 + 7 0.229 + 8 0.0571 + 13 0.0857 + 15 0.0857 + 21 0.0286 + 26 0.114 + 40 0.171 + 41 0.2 + + 8 16 8 0 + 2 0.0625 + 7 0.125 + 8 0.0625 + 13 0.188 + 15 0.188 + 21 0.0625 + 26 0.25 + 40 0.0625 + + 47 5 2 0 + 7 0.8 + 41 0.2 + + 48 7 3 0 + 7 0.143 + 40 0.571 + 41 0.286 + + 50 4 2 0 + 8 0.75 + 31 0.25 + + 55 335 19 8 + 0 0.0418 + 2 0.0239 + 3 0.00299 + 7 0.0478 + 8 0.00299 + 9 0.00299 + 12 0.0119 + 13 0.0209 + 21 0.00896 + 26 0.0716 + 29 0.0746 + 31 0.0269 + 32 0.0119 + 37 0.00299 + 40 0.191 + 41 0.439 + 42 0.0119 + 43 0.00299 + 46 0.00299 + + 7 4 1 0 + 40 1 + + 8 287 17 0 + 0 0.0418 + 2 0.0279 + 3 0.00348 + 7 0.0279 + 8 0.00348 + 12 0.00697 + 13 0.00697 + 21 0.00697 + 26 0.0836 + 29 0.0871 + 31 0.0314 + 32 0.0105 + 37 0.00348 + 40 0.199 + 41 0.446 + 42 0.0105 + 46 0.00348 + + 21 14 6 0 + 0 0.0714 + 7 0.357 + 12 0.0714 + 21 0.0714 + 32 0.0714 + 41 0.357 + + 31 3 3 0 + 0 0.333 + 12 0.333 + 40 0.333 + + 44 1 1 0 + 43 1 + + 47 1 1 0 + 9 1 + + 48 7 4 0 + 7 0.143 + 13 0.429 + 40 0.143 + 41 0.286 + + 49 8 4 0 + 7 0.125 + 40 0.125 + 41 0.625 + 42 0.125 + + 57 2329 28 15 + 0 0.0146 + 2 0.0416 + 4 0.00386 + 7 0.0932 + 8 0.00129 + 9 0.000429 + 12 0.00558 + 13 0.00215 + 14 0.00215 + 15 0.000859 + 19 0.000859 + 21 0.00558 + 26 0.0125 + 28 0.000429 + 29 0.021 + 30 0.000859 + 32 0.00859 + 33 0.00258 + 34 0.000429 + 37 0.00258 + 40 0.532 + 41 0.213 + 42 0.0258 + 43 0.00129 + 44 0.000859 + 45 0.000859 + 46 0.00386 + 47 0.000859 + + 2 1 1 0 + 9 1 + + 7 12 3 0 + 2 0.0833 + 7 0.333 + 40 0.583 + + 8 1515 26 0 + 0 0.0165 + 2 0.0436 + 4 0.00198 + 7 0.0904 + 8 0.00132 + 12 0.00726 + 13 0.00198 + 14 0.00198 + 15 0.00132 + 19 0.00132 + 21 0.00528 + 26 0.0112 + 28 0.00066 + 29 0.0277 + 30 0.00066 + 32 0.00858 + 33 0.00132 + 34 0.00066 + 37 0.00264 + 40 0.525 + 41 0.222 + 42 0.0205 + 43 0.00132 + 44 0.00066 + 46 0.0033 + 47 0.00066 + + 9 57 9 0 + 0 0.0351 + 2 0.0526 + 4 0.0526 + 7 0.228 + 8 0.0175 + 14 0.0175 + 40 0.421 + 41 0.14 + 42 0.0351 + + 13 19 7 0 + 0 0.0526 + 7 0.158 + 26 0.0526 + 37 0.0526 + 40 0.368 + 41 0.263 + 45 0.0526 + + 21 76 13 0 + 0 0.0132 + 2 0.0263 + 7 0.0658 + 21 0.0132 + 26 0.0658 + 29 0.0526 + 32 0.0526 + 33 0.0395 + 37 0.0132 + 40 0.408 + 41 0.224 + 42 0.0132 + 47 0.0132 + + 31 139 13 0 + 0 0.0144 + 2 0.0647 + 4 0.00719 + 7 0.0719 + 21 0.00719 + 29 0.00719 + 32 0.0144 + 33 0.00719 + 40 0.532 + 41 0.245 + 42 0.0144 + 43 0.00719 + 45 0.00719 + + 32 2 2 0 + 29 0.5 + 32 0.5 + + 42 2 2 0 + 40 0.5 + 46 0.5 + + 46 30 5 0 + 2 0.0667 + 7 0.0333 + 40 0.7 + 41 0.167 + 42 0.0333 + + 48 350 15 0 + 0 0.00571 + 2 0.0343 + 4 0.00571 + 7 0.114 + 12 0.00286 + 13 0.00286 + 14 0.00286 + 21 0.00857 + 26 0.0143 + 30 0.00286 + 40 0.569 + 41 0.186 + 42 0.0429 + 44 0.00286 + 46 0.00571 + + 55 27 3 0 + 40 0.815 + 41 0.0741 + 42 0.111 + + 57 54 7 0 + 2 0.0185 + 7 0.0185 + 12 0.0185 + 29 0.0185 + 40 0.685 + 41 0.222 + 42 0.0185 + + 58 1 1 0 + 46 1 + + 60 1 1 0 + 13 1 + + 58 55 15 3 + 2 0.0545 + 4 0.0182 + 7 0.164 + 8 0.0182 + 13 0.345 + 14 0.0364 + 15 0.0182 + 19 0.0182 + 21 0.0182 + 23 0.0182 + 26 0.0909 + 30 0.0182 + 40 0.0545 + 41 0.109 + 47 0.0182 + + 2 2 2 0 + 21 0.5 + 23 0.5 + + 8 10 5 0 + 4 0.1 + 7 0.3 + 13 0.1 + 19 0.1 + 26 0.4 + + 48 37 11 0 + 2 0.0811 + 7 0.108 + 8 0.027 + 13 0.459 + 14 0.027 + 15 0.027 + 26 0.027 + 30 0.027 + 40 0.0541 + 41 0.135 + 47 0.027 + + 59 11 6 0 + 3 0.0909 + 7 0.364 + 8 0.182 + 21 0.0909 + 26 0.182 + 40 0.0909 + + 60 708 16 1 + 2 0.00141 + 4 0.00282 + 7 0.00141 + 8 0.154 + 9 0.00424 + 13 0.685 + 14 0.00989 + 15 0.0791 + 21 0.00141 + 29 0.00141 + 30 0.00282 + 31 0.00565 + 41 0.0155 + 43 0.024 + 44 0.00847 + 45 0.00282 + + 8 1 1 0 + 29 1 + + 62 909 18 4 + 0 0.0187 + 2 0.0154 + 7 0.0781 + 12 0.0044 + 13 0.0011 + 21 0.0066 + 26 0.0011 + 29 0.0011 + 30 0.0011 + 33 0.0011 + 34 0.0011 + 37 0.0066 + 40 0.646 + 41 0.197 + 42 0.0132 + 44 0.0011 + 46 0.0033 + 47 0.0033 + + 9 6 2 0 + 7 0.5 + 40 0.5 + + 21 35 7 0 + 0 0.114 + 2 0.0286 + 33 0.0286 + 40 0.657 + 41 0.114 + 42 0.0286 + 47 0.0286 + + 31 30 2 0 + 40 0.867 + 41 0.133 + + 57 15 3 0 + 37 0.2 + 40 0.533 + 41 0.267 + + 64 463 12 2 + 0 0.00648 + 2 0.0281 + 4 0.00216 + 5 0.00216 + 7 0.0346 + 21 0.00216 + 26 0.00216 + 40 0.667 + 41 0.22 + 42 0.0302 + 46 0.00216 + 47 0.00216 + + 9 16 5 0 + 0 0.0625 + 2 0.0625 + 7 0.25 + 40 0.438 + 41 0.188 + + 58 8 2 0 + 40 0.875 + 47 0.125 + +49 42263 41 35 + 0 0.065 + 1 0.00182 + 2 0.0136 + 3 0.0157 + 4 0.0309 + 5 0.00128 + 7 0.159 + 8 0.0225 + 9 0.00199 + 10 0.000118 + 12 0.0152 + 13 0.00757 + 14 0.00327 + 15 0.00613 + 16 9.46e-05 + 17 7.1e-05 + 19 0.0103 + 20 0.00149 + 21 0.0208 + 22 0.00442 + 23 0.000189 + 24 0.00026 + 26 0.0331 + 28 0.0399 + 29 0.067 + 30 0.0304 + 31 0.063 + 32 0.0227 + 33 0.0363 + 34 0.000284 + 35 0.00133 + 37 0.00338 + 39 0.00251 + 40 0.131 + 41 0.171 + 42 0.00989 + 43 0.000875 + 44 0.000592 + 45 0.00163 + 46 0.00244 + 47 0.00128 + + 2 55 16 5 + 0 0.0182 + 3 0.109 + 4 0.0364 + 7 0.109 + 8 0.0545 + 9 0.0182 + 19 0.0182 + 21 0.236 + 22 0.109 + 26 0.0182 + 28 0.0182 + 29 0.0909 + 31 0.0727 + 39 0.0182 + 41 0.0545 + 45 0.0182 + + 4 9 4 0 + 8 0.111 + 28 0.111 + 29 0.444 + 31 0.333 + + 22 3 1 0 + 22 1 + + 41 7 4 0 + 3 0.286 + 7 0.143 + 21 0.429 + 39 0.143 + + 47 10 9 0 + 0 0.1 + 7 0.1 + 8 0.1 + 19 0.1 + 21 0.1 + 26 0.1 + 29 0.1 + 31 0.1 + 41 0.2 + + 49 23 7 0 + 3 0.174 + 4 0.087 + 7 0.174 + 8 0.0435 + 21 0.348 + 22 0.13 + 45 0.0435 + + 3 20 7 1 + 2 0.05 + 7 0.1 + 14 0.05 + 15 0.05 + 26 0.05 + 40 0.35 + 41 0.35 + + 47 8 4 0 + 2 0.125 + 15 0.125 + 26 0.125 + 41 0.625 + + 4 84 15 3 + 0 0.0357 + 4 0.0119 + 7 0.19 + 8 0.0595 + 13 0.0238 + 14 0.0238 + 26 0.0119 + 28 0.0119 + 29 0.0119 + 30 0.0119 + 31 0.0357 + 32 0.0476 + 40 0.333 + 41 0.179 + 42 0.0119 + + 7 52 8 0 + 0 0.0192 + 4 0.0192 + 7 0.115 + 8 0.0385 + 28 0.0192 + 31 0.0192 + 40 0.481 + 41 0.288 + + 21 4 2 0 + 8 0.5 + 13 0.5 + + 47 28 11 0 + 0 0.0714 + 7 0.357 + 8 0.0357 + 14 0.0714 + 26 0.0357 + 29 0.0357 + 30 0.0357 + 31 0.0714 + 32 0.143 + 40 0.107 + 42 0.0357 + + 5 2 2 0 + 0 0.5 + 35 0.5 + + 6 7 4 0 + 15 0.143 + 41 0.571 + 42 0.143 + 46 0.143 + + 7 697 30 8 + 0 0.0143 + 2 0.0201 + 3 0.187 + 4 0.0459 + 5 0.00143 + 7 0.244 + 8 0.0244 + 12 0.0043 + 13 0.01 + 14 0.00717 + 15 0.01 + 17 0.00143 + 19 0.00717 + 20 0.00574 + 21 0.0301 + 22 0.0043 + 26 0.0301 + 28 0.00717 + 29 0.0258 + 30 0.0115 + 31 0.0359 + 32 0.0043 + 33 0.00717 + 35 0.00143 + 39 0.0258 + 40 0.115 + 41 0.109 + 42 0.00287 + 45 0.00143 + 47 0.00574 + + 2 9 3 0 + 7 0.111 + 21 0.556 + 41 0.333 + + 4 7 5 0 + 0 0.143 + 4 0.143 + 19 0.143 + 40 0.286 + 41 0.286 + + 9 8 4 0 + 8 0.25 + 29 0.25 + 30 0.125 + 31 0.375 + + 13 12 10 0 + 2 0.0833 + 8 0.25 + 13 0.0833 + 29 0.0833 + 30 0.0833 + 31 0.0833 + 33 0.0833 + 40 0.0833 + 41 0.0833 + 42 0.0833 + + 21 28 11 0 + 3 0.0357 + 4 0.25 + 7 0.179 + 8 0.0714 + 13 0.107 + 15 0.0357 + 21 0.0357 + 26 0.0357 + 30 0.0714 + 40 0.107 + 41 0.0714 + + 22 33 8 0 + 8 0.182 + 21 0.0303 + 28 0.152 + 29 0.212 + 30 0.0303 + 31 0.273 + 32 0.0606 + 33 0.0606 + + 47 482 28 0 + 0 0.0145 + 2 0.0228 + 3 0.268 + 4 0.0436 + 7 0.332 + 8 0.00622 + 12 0.00207 + 13 0.00622 + 14 0.0104 + 15 0.0124 + 17 0.00207 + 19 0.0083 + 20 0.00622 + 21 0.0249 + 22 0.00622 + 26 0.0332 + 29 0.00622 + 30 0.00622 + 31 0.0207 + 32 0.00207 + 33 0.00207 + 35 0.00207 + 39 0.0373 + 40 0.0581 + 41 0.0539 + 42 0.00207 + 45 0.00207 + 47 0.0083 + + 55 114 14 0 + 0 0.0175 + 2 0.0175 + 4 0.0263 + 5 0.00877 + 7 0.0351 + 12 0.0175 + 20 0.00877 + 21 0.0175 + 26 0.0351 + 29 0.0439 + 31 0.00877 + 33 0.00877 + 40 0.404 + 41 0.351 + + 8 310 25 8 + 0 0.00323 + 2 0.00968 + 3 0.0129 + 4 0.0161 + 7 0.31 + 8 0.0161 + 9 0.00323 + 12 0.00323 + 13 0.0419 + 14 0.0226 + 15 0.029 + 19 0.00323 + 21 0.00968 + 26 0.142 + 29 0.00968 + 30 0.00645 + 32 0.00323 + 35 0.00645 + 37 0.00323 + 40 0.129 + 41 0.19 + 42 0.0129 + 43 0.00645 + 46 0.00645 + 47 0.00323 + + 2 5 3 0 + 4 0.2 + 7 0.2 + 41 0.6 + + 4 6 4 0 + 7 0.333 + 40 0.167 + 41 0.167 + 42 0.333 + + 7 5 4 0 + 13 0.2 + 29 0.2 + 40 0.4 + 41 0.2 + + 21 71 10 0 + 4 0.0423 + 7 0.451 + 13 0.0845 + 14 0.0141 + 15 0.0282 + 26 0.127 + 29 0.0141 + 35 0.0141 + 40 0.0845 + 41 0.141 + + 22 7 3 0 + 7 0.286 + 41 0.571 + 46 0.143 + + 23 4 4 0 + 9 0.25 + 14 0.25 + 26 0.25 + 41 0.25 + + 28 2 1 0 + 13 1 + + 47 204 24 0 + 0 0.0049 + 2 0.0147 + 3 0.0196 + 4 0.0049 + 7 0.275 + 8 0.0245 + 12 0.0049 + 13 0.0196 + 14 0.0245 + 15 0.0294 + 19 0.0049 + 21 0.0147 + 26 0.167 + 29 0.0049 + 30 0.0098 + 32 0.0049 + 35 0.0049 + 37 0.0049 + 40 0.142 + 41 0.191 + 42 0.0098 + 43 0.0098 + 46 0.0049 + 47 0.0049 + + 9 132 13 4 + 0 0.00758 + 2 0.0152 + 4 0.0303 + 7 0.508 + 8 0.0303 + 13 0.053 + 14 0.0152 + 15 0.0303 + 21 0.00758 + 26 0.053 + 33 0.00758 + 40 0.106 + 41 0.136 + + 4 4 3 0 + 13 0.25 + 15 0.25 + 41 0.5 + + 21 29 10 0 + 0 0.0345 + 4 0.103 + 7 0.379 + 8 0.103 + 13 0.103 + 15 0.069 + 26 0.0345 + 33 0.0345 + 40 0.103 + 41 0.0345 + + 47 55 9 0 + 2 0.0182 + 4 0.0182 + 7 0.473 + 13 0.0364 + 15 0.0182 + 21 0.0182 + 26 0.0545 + 40 0.164 + 41 0.2 + + 55 39 7 0 + 2 0.0256 + 7 0.692 + 13 0.0256 + 14 0.0256 + 26 0.0769 + 40 0.0513 + 41 0.103 + + 10 131 21 1 + 0 0.0229 + 3 0.0382 + 4 0.191 + 5 0.0153 + 7 0.183 + 8 0.0611 + 13 0.0534 + 15 0.0153 + 19 0.0458 + 20 0.00763 + 21 0.107 + 26 0.0153 + 28 0.0229 + 29 0.00763 + 30 0.0153 + 31 0.0229 + 33 0.00763 + 37 0.0153 + 40 0.0305 + 41 0.107 + 42 0.0153 + + 47 7 5 0 + 0 0.143 + 7 0.286 + 26 0.143 + 31 0.286 + 40 0.143 + + 11 6 1 0 + 41 1 + + 13 92 23 6 + 0 0.0217 + 2 0.0543 + 4 0.0326 + 7 0.293 + 8 0.0217 + 9 0.0109 + 13 0.0217 + 15 0.0109 + 19 0.0109 + 21 0.0217 + 26 0.109 + 28 0.0109 + 29 0.0326 + 30 0.0109 + 31 0.0217 + 32 0.0109 + 33 0.0109 + 34 0.0109 + 35 0.0217 + 37 0.0217 + 40 0.13 + 41 0.0978 + 42 0.0109 + + 2 3 2 0 + 7 0.667 + 42 0.333 + + 3 2 2 0 + 9 0.5 + 13 0.5 + + 4 11 9 0 + 0 0.0909 + 7 0.0909 + 13 0.0909 + 28 0.0909 + 30 0.0909 + 33 0.0909 + 35 0.182 + 37 0.182 + 40 0.0909 + + 7 6 5 0 + 7 0.167 + 8 0.167 + 26 0.167 + 40 0.333 + 41 0.167 + + 8 11 7 0 + 2 0.0909 + 7 0.182 + 8 0.0909 + 19 0.0909 + 26 0.273 + 32 0.0909 + 40 0.182 + + 47 50 12 0 + 0 0.02 + 2 0.04 + 4 0.06 + 7 0.34 + 15 0.02 + 21 0.02 + 26 0.12 + 29 0.06 + 31 0.04 + 34 0.02 + 40 0.12 + 41 0.14 + + 14 5 3 0 + 2 0.4 + 7 0.2 + 26 0.4 + + 15 26 4 0 + 4 0.0385 + 15 0.0769 + 40 0.0385 + 41 0.846 + + 19 6 4 0 + 0 0.333 + 7 0.167 + 40 0.167 + 41 0.333 + + 21 17337 41 14 + 0 0.0758 + 1 0.00225 + 2 0.01 + 3 0.0253 + 4 0.0318 + 5 0.00127 + 7 0.155 + 8 0.0237 + 9 0.00323 + 10 0.000173 + 12 0.018 + 13 0.00675 + 14 0.00271 + 15 0.00583 + 16 0.000115 + 17 5.77e-05 + 19 0.0114 + 20 0.00144 + 21 0.0224 + 22 0.00848 + 23 0.000231 + 24 0.000404 + 26 0.0337 + 28 0.0465 + 29 0.0786 + 30 0.0359 + 31 0.0731 + 32 0.0269 + 33 0.0436 + 34 0.000115 + 35 0.00121 + 37 0.00335 + 39 0.00438 + 40 0.0751 + 41 0.159 + 42 0.00594 + 43 0.000577 + 44 0.00075 + 45 0.00173 + 46 0.0026 + 47 0.000577 + + 2 80 22 0 + 0 0.0125 + 2 0.025 + 3 0.0125 + 4 0.0125 + 7 0.188 + 8 0.0125 + 10 0.0125 + 15 0.0125 + 19 0.0125 + 21 0.05 + 22 0.0125 + 26 0.025 + 28 0.0125 + 29 0.0125 + 30 0.025 + 31 0.0625 + 32 0.0125 + 40 0.175 + 41 0.262 + 42 0.025 + 44 0.0125 + 45 0.0125 + + 4 12 7 0 + 0 0.0833 + 4 0.0833 + 8 0.333 + 19 0.0833 + 22 0.0833 + 26 0.0833 + 40 0.25 + + 7 72 14 0 + 0 0.0417 + 2 0.0278 + 4 0.125 + 7 0.0556 + 8 0.0139 + 9 0.0278 + 15 0.0278 + 21 0.0139 + 26 0.0278 + 30 0.0278 + 31 0.0417 + 40 0.153 + 41 0.389 + 42 0.0278 + + 10 4 2 0 + 4 0.75 + 15 0.25 + + 19 1 1 0 + 13 1 + + 21 886 32 0 + 0 0.044 + 2 0.0135 + 3 0.00113 + 4 0.044 + 5 0.00339 + 7 0.31 + 8 0.0282 + 9 0.00226 + 10 0.00113 + 12 0.00903 + 13 0.00339 + 14 0.00339 + 15 0.00226 + 19 0.0113 + 21 0.0147 + 22 0.00564 + 26 0.035 + 28 0.0181 + 29 0.0169 + 30 0.00677 + 31 0.0406 + 32 0.00903 + 33 0.0169 + 35 0.00339 + 37 0.00564 + 40 0.159 + 41 0.172 + 42 0.0102 + 43 0.00226 + 44 0.00226 + 45 0.00113 + 46 0.00339 + + 22 117 12 0 + 2 0.00855 + 4 0.0171 + 7 0.342 + 8 0.0598 + 26 0.0427 + 28 0.0513 + 30 0.0171 + 31 0.0598 + 37 0.0171 + 40 0.094 + 41 0.274 + 42 0.0171 + + 23 34 13 0 + 0 0.0294 + 2 0.0294 + 7 0.0588 + 8 0.118 + 12 0.0882 + 14 0.0294 + 15 0.0882 + 19 0.0294 + 29 0.0294 + 31 0.235 + 32 0.0294 + 41 0.206 + 43 0.0294 + + 24 3 3 0 + 7 0.333 + 40 0.333 + 46 0.333 + + 41 2 2 0 + 3 0.5 + 4 0.5 + + 45 3 3 0 + 7 0.333 + 21 0.333 + 46 0.333 + + 47 15577 41 0 + 0 0.0812 + 1 0.0025 + 2 0.00905 + 3 0.0279 + 4 0.0315 + 5 0.00122 + 7 0.146 + 8 0.0237 + 9 0.00327 + 10 6.42e-05 + 12 0.0193 + 13 0.00719 + 14 0.00276 + 15 0.00578 + 16 0.000128 + 17 6.42e-05 + 19 0.0115 + 20 0.0016 + 21 0.0236 + 22 0.00899 + 23 0.000257 + 24 0.000449 + 26 0.0343 + 28 0.0503 + 29 0.0859 + 30 0.0391 + 31 0.0774 + 32 0.0293 + 33 0.0475 + 34 0.000128 + 35 0.00116 + 37 0.00308 + 39 0.00488 + 40 0.0583 + 41 0.149 + 42 0.00507 + 43 0.000449 + 44 0.000642 + 45 0.0018 + 46 0.0025 + 47 0.000642 + + 49 10 5 0 + 3 0.1 + 7 0.4 + 9 0.1 + 40 0.2 + 41 0.2 + + 55 526 17 0 + 0 0.0076 + 2 0.0285 + 4 0.00951 + 7 0.12 + 13 0.0019 + 15 0.0038 + 19 0.00951 + 26 0.0152 + 29 0.0152 + 30 0.0019 + 31 0.0019 + 33 0.0019 + 37 0.0057 + 40 0.395 + 41 0.363 + 42 0.0171 + 46 0.0019 + + 22 718 21 5 + 0 0.00418 + 2 0.0334 + 3 0.00139 + 4 0.0432 + 7 0.297 + 8 0.0752 + 12 0.00279 + 13 0.00279 + 21 0.00696 + 26 0.0306 + 28 0.0306 + 29 0.00696 + 30 0.00557 + 31 0.0153 + 32 0.00139 + 33 0.00418 + 40 0.298 + 41 0.127 + 42 0.0111 + 43 0.00139 + 45 0.00139 + + 2 11 5 0 + 7 0.364 + 8 0.0909 + 28 0.0909 + 40 0.0909 + 41 0.364 + + 4 13 6 0 + 7 0.231 + 8 0.385 + 13 0.0769 + 30 0.154 + 32 0.0769 + 42 0.0769 + + 21 114 13 0 + 2 0.0263 + 4 0.0263 + 7 0.289 + 8 0.325 + 12 0.00877 + 21 0.0351 + 26 0.0351 + 28 0.0439 + 30 0.0175 + 31 0.0263 + 33 0.0175 + 40 0.105 + 41 0.0439 + + 47 311 19 0 + 0 0.00322 + 2 0.0482 + 3 0.00322 + 4 0.0836 + 7 0.476 + 8 0.0161 + 12 0.00322 + 13 0.00322 + 21 0.00322 + 26 0.0482 + 28 0.0514 + 29 0.0161 + 31 0.0257 + 33 0.00322 + 40 0.109 + 41 0.09 + 42 0.00965 + 43 0.00322 + 45 0.00322 + + 55 266 9 0 + 0 0.00752 + 2 0.0226 + 4 0.00752 + 7 0.0827 + 8 0.0226 + 26 0.0113 + 40 0.628 + 41 0.203 + 42 0.015 + + 23 36 13 1 + 0 0.0278 + 4 0.0278 + 7 0.194 + 8 0.0278 + 12 0.0278 + 21 0.0278 + 26 0.0556 + 28 0.0556 + 31 0.389 + 32 0.0278 + 40 0.0556 + 41 0.0278 + 42 0.0556 + + 7 2 2 0 + 12 0.5 + 21 0.5 + + 24 95 19 2 + 0 0.0105 + 2 0.0105 + 3 0.0316 + 4 0.0421 + 7 0.232 + 8 0.0105 + 13 0.0211 + 14 0.0421 + 15 0.0105 + 20 0.0211 + 21 0.0421 + 26 0.0632 + 30 0.0316 + 39 0.0105 + 40 0.274 + 41 0.116 + 42 0.0105 + 46 0.0105 + 47 0.0105 + + 2 1 1 0 + 42 1 + + 8 1 1 0 + 0 1 + + 28 6 3 0 + 8 0.167 + 28 0.333 + 41 0.5 + + 29 1 1 0 + 42 1 + + 31 4 3 0 + 13 0.25 + 26 0.5 + 40 0.25 + + 37 3 2 0 + 4 0.333 + 41 0.667 + + 40 10 3 0 + 43 0.1 + 46 0.1 + 47 0.8 + + 41 32 10 2 + 2 0.219 + 3 0.0625 + 4 0.0312 + 7 0.219 + 8 0.0312 + 21 0.0625 + 26 0.0312 + 29 0.0625 + 31 0.0312 + 37 0.25 + + 21 2 1 0 + 29 1 + + 57 3 1 0 + 7 1 + + 42 3 3 0 + 2 0.333 + 7 0.333 + 22 0.333 + + 46 7 4 0 + 7 0.571 + 8 0.143 + 26 0.143 + 47 0.143 + + 47 19808 41 32 + 0 0.0693 + 1 0.00192 + 2 0.0136 + 3 0.00353 + 4 0.0311 + 5 0.00136 + 7 0.139 + 8 0.0218 + 9 0.00121 + 10 0.000101 + 12 0.0163 + 13 0.00777 + 14 0.00343 + 15 0.00631 + 16 0.000101 + 17 5.05e-05 + 19 0.0109 + 20 0.00157 + 21 0.0207 + 22 0.00151 + 23 0.000202 + 24 0.000202 + 26 0.0283 + 28 0.0426 + 29 0.0715 + 30 0.0323 + 31 0.0671 + 32 0.0242 + 33 0.0388 + 34 0.000303 + 35 0.00136 + 37 0.00323 + 39 0.000505 + 40 0.139 + 41 0.181 + 42 0.0104 + 43 0.000909 + 44 0.000606 + 45 0.00172 + 46 0.00242 + 47 0.00136 + + 2 21 10 0 + 0 0.0476 + 7 0.0476 + 8 0.0952 + 19 0.0476 + 21 0.0952 + 26 0.0476 + 28 0.0476 + 29 0.238 + 31 0.19 + 41 0.143 + + 3 20 7 0 + 2 0.05 + 7 0.1 + 14 0.05 + 15 0.05 + 26 0.05 + 40 0.35 + 41 0.35 + + 4 79 14 0 + 0 0.038 + 4 0.0127 + 7 0.19 + 8 0.038 + 14 0.0253 + 26 0.0127 + 28 0.0127 + 29 0.0127 + 30 0.0127 + 31 0.038 + 32 0.0506 + 40 0.354 + 41 0.19 + 42 0.0127 + + 5 2 2 0 + 0 0.5 + 35 0.5 + + 6 6 3 0 + 41 0.667 + 42 0.167 + 46 0.167 + + 7 377 27 0 + 0 0.0265 + 2 0.0371 + 3 0.00531 + 4 0.0398 + 5 0.00265 + 7 0.111 + 8 0.0371 + 12 0.00796 + 13 0.0159 + 14 0.0133 + 15 0.00531 + 19 0.0133 + 20 0.0106 + 21 0.0451 + 26 0.0292 + 28 0.0133 + 29 0.0477 + 30 0.0159 + 31 0.0663 + 32 0.00796 + 33 0.0133 + 35 0.00265 + 40 0.212 + 41 0.202 + 42 0.00531 + 45 0.00265 + 47 0.0106 + + 8 234 25 0 + 0 0.00427 + 2 0.0128 + 3 0.00427 + 4 0.0214 + 7 0.274 + 8 0.00427 + 9 0.00427 + 12 0.00427 + 13 0.047 + 14 0.0299 + 15 0.0342 + 19 0.00427 + 21 0.0128 + 26 0.0427 + 29 0.0128 + 30 0.00855 + 32 0.00427 + 35 0.00855 + 37 0.00427 + 40 0.171 + 41 0.252 + 42 0.0171 + 43 0.00855 + 46 0.00855 + 47 0.00427 + + 9 130 13 0 + 0 0.00769 + 2 0.0154 + 4 0.0308 + 7 0.508 + 8 0.0308 + 13 0.0538 + 14 0.0154 + 15 0.0308 + 21 0.00769 + 26 0.0462 + 33 0.00769 + 40 0.108 + 41 0.138 + + 10 129 21 0 + 0 0.0233 + 3 0.0388 + 4 0.194 + 5 0.0155 + 7 0.178 + 8 0.062 + 13 0.0543 + 15 0.0155 + 19 0.0465 + 20 0.00775 + 21 0.109 + 26 0.00775 + 28 0.0233 + 29 0.00775 + 30 0.0155 + 31 0.0233 + 33 0.00775 + 37 0.0155 + 40 0.031 + 41 0.109 + 42 0.0155 + + 11 6 1 0 + 41 1 + + 13 78 21 0 + 0 0.0256 + 2 0.0641 + 4 0.0385 + 7 0.269 + 8 0.0256 + 9 0.0128 + 13 0.0256 + 15 0.0128 + 19 0.0128 + 21 0.0256 + 26 0.0769 + 28 0.0128 + 29 0.0385 + 30 0.0128 + 31 0.0256 + 32 0.0128 + 33 0.0128 + 34 0.0128 + 40 0.154 + 41 0.115 + 42 0.0128 + + 14 2 1 0 + 2 1 + + 15 26 4 0 + 4 0.0385 + 15 0.0769 + 40 0.0385 + 41 0.846 + + 19 6 4 0 + 0 0.333 + 7 0.167 + 40 0.167 + 41 0.333 + + 21 15861 41 0 + 0 0.0829 + 1 0.0024 + 2 0.0109 + 3 0.00372 + 4 0.033 + 5 0.00139 + 7 0.134 + 8 0.0212 + 9 0.00132 + 10 0.000126 + 12 0.0197 + 13 0.00694 + 14 0.0029 + 15 0.00624 + 16 0.000126 + 17 6.3e-05 + 19 0.0122 + 20 0.00151 + 21 0.0221 + 22 0.00189 + 23 0.000252 + 24 0.000252 + 26 0.0281 + 28 0.0508 + 29 0.0859 + 30 0.039 + 31 0.0798 + 32 0.0294 + 33 0.0477 + 34 0.000126 + 35 0.00132 + 37 0.00347 + 39 0.000567 + 40 0.0816 + 41 0.174 + 42 0.00643 + 43 0.00063 + 44 0.000757 + 45 0.00189 + 46 0.00265 + 47 0.00063 + + 22 659 20 0 + 0 0.00455 + 2 0.0319 + 4 0.0212 + 7 0.284 + 8 0.0774 + 12 0.00303 + 13 0.00303 + 21 0.00759 + 26 0.0212 + 28 0.0334 + 29 0.00759 + 30 0.00607 + 31 0.0167 + 32 0.00152 + 33 0.00455 + 40 0.323 + 41 0.138 + 42 0.0121 + 43 0.00152 + 45 0.00152 + + 23 35 13 0 + 0 0.0286 + 4 0.0286 + 7 0.171 + 8 0.0286 + 12 0.0286 + 21 0.0286 + 26 0.0571 + 28 0.0571 + 31 0.4 + 32 0.0286 + 40 0.0571 + 41 0.0286 + 42 0.0571 + + 24 74 17 0 + 0 0.0135 + 2 0.0135 + 3 0.0135 + 4 0.0541 + 7 0.162 + 8 0.0135 + 13 0.027 + 14 0.0541 + 15 0.0135 + 20 0.027 + 21 0.0405 + 30 0.027 + 39 0.0135 + 40 0.351 + 41 0.149 + 42 0.0135 + 47 0.0135 + + 28 6 3 0 + 8 0.167 + 28 0.333 + 41 0.5 + + 29 1 1 0 + 42 1 + + 31 3 3 0 + 13 0.333 + 26 0.333 + 40 0.333 + + 37 3 2 0 + 4 0.333 + 41 0.667 + + 40 9 2 0 + 43 0.111 + 47 0.889 + + 41 5 4 0 + 7 0.2 + 26 0.2 + 29 0.4 + 31 0.2 + + 46 2 2 0 + 8 0.5 + 47 0.5 + + 49 42 5 0 + 7 0.119 + 12 0.0238 + 40 0.619 + 41 0.19 + 42 0.0476 + + 55 524 14 0 + 0 0.00573 + 2 0.0134 + 4 0.00763 + 7 0.143 + 13 0.00382 + 19 0.00191 + 21 0.00573 + 26 0.0687 + 29 0.00763 + 31 0.00191 + 40 0.458 + 41 0.191 + 42 0.0897 + 43 0.00191 + + 57 1267 29 0 + 0 0.0189 + 2 0.0316 + 3 0.00158 + 4 0.00947 + 5 0.00158 + 7 0.0805 + 8 0.00395 + 9 0.000789 + 12 0.00158 + 13 0.00316 + 15 0.00395 + 19 0.00395 + 21 0.00474 + 26 0.0166 + 29 0.00868 + 30 0.000789 + 31 0.000789 + 32 0.000789 + 33 0.000789 + 34 0.00237 + 35 0.000789 + 37 0.00474 + 40 0.514 + 41 0.257 + 42 0.0213 + 43 0.00158 + 45 0.00158 + 46 0.00158 + 47 0.00158 + + 58 3 2 0 + 30 0.333 + 40 0.667 + + 59 1 1 0 + 35 1 + + 62 30 5 0 + 0 0.0333 + 21 0.0333 + 40 0.7 + 41 0.133 + 42 0.1 + + 64 156 13 0 + 0 0.00641 + 2 0.00641 + 4 0.0128 + 7 0.00641 + 14 0.00641 + 19 0.00641 + 21 0.00641 + 26 0.0192 + 40 0.615 + 41 0.288 + 42 0.0128 + 43 0.00641 + 46 0.00641 + + 48 6 3 0 + 7 0.5 + 40 0.167 + 41 0.333 + + 49 384 14 4 + 2 0.0599 + 4 0.0234 + 7 0.695 + 8 0.00781 + 12 0.0026 + 14 0.0026 + 19 0.00521 + 21 0.0026 + 26 0.0104 + 37 0.00521 + 40 0.0703 + 41 0.0911 + 42 0.0182 + 46 0.00521 + + 2 27 5 0 + 7 0.111 + 12 0.037 + 40 0.556 + 41 0.259 + 42 0.037 + + 21 14 5 0 + 7 0.429 + 40 0.357 + 41 0.0714 + 42 0.0714 + 46 0.0714 + + 41 4 1 0 + 40 1 + + 47 327 12 0 + 2 0.0703 + 4 0.0275 + 7 0.771 + 8 0.00917 + 14 0.00306 + 19 0.00612 + 21 0.00306 + 26 0.0122 + 37 0.00612 + 41 0.0734 + 42 0.0153 + 46 0.00306 + + 55 740 14 5 + 0 0.00405 + 2 0.00946 + 4 0.00541 + 7 0.307 + 13 0.0027 + 19 0.00135 + 21 0.00541 + 26 0.132 + 29 0.00541 + 31 0.00135 + 40 0.324 + 41 0.136 + 42 0.0635 + 43 0.00135 + + 7 178 10 0 + 2 0.0112 + 7 0.275 + 13 0.0112 + 21 0.0112 + 26 0.0787 + 29 0.00562 + 31 0.00562 + 40 0.365 + 41 0.129 + 42 0.107 + + 21 514 10 0 + 2 0.00584 + 4 0.00778 + 7 0.323 + 21 0.00195 + 26 0.15 + 29 0.00195 + 40 0.321 + 41 0.132 + 42 0.0545 + 43 0.00195 + + 22 18 6 0 + 0 0.0556 + 7 0.222 + 26 0.111 + 29 0.111 + 40 0.222 + 41 0.278 + + 47 4 2 0 + 7 0.75 + 21 0.25 + + 49 10 6 0 + 0 0.2 + 2 0.1 + 7 0.1 + 19 0.1 + 26 0.2 + 41 0.3 + + 57 1294 29 10 + 0 0.0185 + 2 0.0309 + 3 0.00232 + 4 0.00927 + 5 0.00155 + 7 0.0927 + 8 0.00386 + 9 0.000773 + 12 0.00155 + 13 0.00309 + 15 0.00386 + 19 0.00386 + 21 0.00464 + 26 0.0185 + 29 0.0085 + 30 0.000773 + 31 0.000773 + 32 0.000773 + 33 0.000773 + 34 0.00232 + 35 0.000773 + 37 0.00464 + 40 0.503 + 41 0.254 + 42 0.0209 + 43 0.00232 + 45 0.00155 + 46 0.00155 + 47 0.00155 + + 7 133 14 0 + 0 0.0226 + 2 0.0226 + 3 0.00752 + 7 0.0602 + 8 0.015 + 12 0.00752 + 19 0.00752 + 26 0.0301 + 34 0.00752 + 40 0.466 + 41 0.323 + 42 0.015 + 43 0.00752 + 47 0.00752 + + 8 63 10 0 + 0 0.0159 + 2 0.0159 + 4 0.0159 + 7 0.127 + 13 0.0159 + 32 0.0159 + 33 0.0159 + 40 0.476 + 41 0.286 + 45 0.0159 + + 13 10 6 0 + 2 0.1 + 7 0.2 + 15 0.1 + 35 0.1 + 40 0.4 + 41 0.1 + + 21 614 22 0 + 0 0.0277 + 2 0.0326 + 3 0.00326 + 4 0.013 + 5 0.00163 + 7 0.0765 + 9 0.00163 + 12 0.00163 + 13 0.00326 + 15 0.00489 + 19 0.00651 + 21 0.00814 + 26 0.0212 + 29 0.013 + 30 0.00163 + 34 0.00326 + 37 0.00651 + 40 0.484 + 41 0.269 + 42 0.0163 + 45 0.00163 + 46 0.00326 + + 22 32 6 0 + 0 0.0625 + 7 0.188 + 29 0.0625 + 40 0.5 + 41 0.156 + 47 0.0312 + + 24 16 6 0 + 2 0.0625 + 7 0.188 + 8 0.0625 + 21 0.0625 + 40 0.25 + 41 0.375 + + 44 1 1 0 + 43 1 + + 49 164 12 0 + 2 0.0244 + 4 0.0122 + 7 0.183 + 8 0.0122 + 15 0.0061 + 26 0.0122 + 29 0.0061 + 37 0.0061 + 40 0.488 + 41 0.207 + 42 0.0366 + 43 0.0061 + + 55 215 9 0 + 0 0.00465 + 2 0.0465 + 5 0.00465 + 7 0.0605 + 26 0.0186 + 31 0.00465 + 40 0.6 + 41 0.223 + 42 0.0372 + + 57 20 6 0 + 7 0.05 + 13 0.05 + 37 0.05 + 40 0.65 + 41 0.15 + 42 0.05 + + 58 6 4 0 + 7 0.333 + 26 0.167 + 30 0.167 + 40 0.333 + + 59 1 1 0 + 35 1 + + 62 30 5 0 + 0 0.0333 + 21 0.0333 + 40 0.7 + 41 0.133 + 42 0.1 + + 64 159 13 2 + 0 0.00629 + 2 0.00629 + 4 0.0126 + 7 0.0126 + 14 0.00629 + 19 0.00629 + 21 0.00629 + 26 0.0189 + 40 0.61 + 41 0.289 + 42 0.0126 + 43 0.00629 + 46 0.00629 + + 21 35 6 0 + 4 0.0286 + 19 0.0286 + 21 0.0286 + 26 0.0286 + 40 0.486 + 41 0.4 + + 41 10 1 0 + 40 1 + +50 604 25 5 + 0 0.0364 + 1 0.00662 + 3 0.0166 + 4 0.212 + 7 0.166 + 8 0.113 + 9 0.00993 + 12 0.00993 + 13 0.0629 + 14 0.0662 + 15 0.0298 + 16 0.00662 + 20 0.0298 + 21 0.0298 + 22 0.00331 + 26 0.043 + 28 0.043 + 29 0.0132 + 30 0.0497 + 31 0.0232 + 32 0.00662 + 33 0.00993 + 35 0.00331 + 39 0.00331 + 45 0.00662 + + 7 209 21 0 + 0 0.00957 + 1 0.00957 + 3 0.0239 + 4 0.22 + 7 0.115 + 8 0.129 + 9 0.0144 + 13 0.0861 + 14 0.0766 + 15 0.0431 + 16 0.00478 + 20 0.0144 + 21 0.0335 + 26 0.0335 + 28 0.0622 + 30 0.0718 + 31 0.0287 + 32 0.00478 + 35 0.00478 + 39 0.00478 + 45 0.00957 + + 8 4 3 0 + 7 0.5 + 8 0.25 + 26 0.25 + + 21 83 15 3 + 0 0.108 + 4 0.181 + 7 0.289 + 8 0.0723 + 12 0.0361 + 14 0.0241 + 16 0.012 + 20 0.0723 + 21 0.0241 + 22 0.012 + 26 0.0602 + 29 0.0482 + 31 0.012 + 32 0.012 + 33 0.0361 + + 2 22 8 0 + 4 0.227 + 7 0.364 + 14 0.0909 + 20 0.0909 + 22 0.0455 + 26 0.0455 + 29 0.0909 + 31 0.0455 + + 7 11 5 0 + 4 0.364 + 7 0.0909 + 8 0.364 + 20 0.0909 + 21 0.0909 + + 21 50 12 0 + 0 0.18 + 4 0.12 + 7 0.3 + 8 0.04 + 12 0.06 + 16 0.02 + 20 0.06 + 21 0.02 + 26 0.08 + 29 0.04 + 32 0.02 + 33 0.06 + + 28 5 3 0 + 4 0.6 + 13 0.2 + 14 0.2 + + 47 302 25 4 + 0 0.0364 + 1 0.00662 + 3 0.0166 + 4 0.212 + 7 0.166 + 8 0.113 + 9 0.00993 + 12 0.00993 + 13 0.0629 + 14 0.0662 + 15 0.0298 + 16 0.00662 + 20 0.0298 + 21 0.0298 + 22 0.00331 + 26 0.043 + 28 0.043 + 29 0.0132 + 30 0.0497 + 31 0.0232 + 32 0.00662 + 33 0.00993 + 35 0.00331 + 39 0.00331 + 45 0.00662 + + 7 209 21 0 + 0 0.00957 + 1 0.00957 + 3 0.0239 + 4 0.22 + 7 0.115 + 8 0.129 + 9 0.0144 + 13 0.0861 + 14 0.0766 + 15 0.0431 + 16 0.00478 + 20 0.0144 + 21 0.0335 + 26 0.0335 + 28 0.0622 + 30 0.0718 + 31 0.0287 + 32 0.00478 + 35 0.00478 + 39 0.00478 + 45 0.00957 + + 8 4 3 0 + 7 0.5 + 8 0.25 + 26 0.25 + + 21 83 15 0 + 0 0.108 + 4 0.181 + 7 0.289 + 8 0.0723 + 12 0.0361 + 14 0.0241 + 16 0.012 + 20 0.0723 + 21 0.0241 + 22 0.012 + 26 0.0602 + 29 0.0482 + 31 0.012 + 32 0.012 + 33 0.0361 + + 28 5 3 0 + 4 0.6 + 13 0.2 + 14 0.2 + +51 1442 32 20 + 0 0.000693 + 2 0.00763 + 3 0.00139 + 4 0.0146 + 7 0.0444 + 8 0.00416 + 9 0.000693 + 12 0.000693 + 13 0.00347 + 14 0.00139 + 15 0.000693 + 19 0.00347 + 20 0.000693 + 21 0.0173 + 22 0.000693 + 26 0.00832 + 27 0.00208 + 28 0.00208 + 29 0.00277 + 30 0.00208 + 33 0.00139 + 34 0.000693 + 35 0.00139 + 37 0.00139 + 39 0.000693 + 40 0.279 + 41 0.164 + 42 0.025 + 43 0.0118 + 44 0.00139 + 46 0.0374 + 47 0.356 + + 2 42 15 1 + 3 0.0238 + 4 0.167 + 7 0.143 + 8 0.0238 + 9 0.0238 + 13 0.0238 + 14 0.0238 + 19 0.0238 + 21 0.333 + 26 0.0238 + 27 0.0238 + 28 0.0238 + 35 0.0476 + 37 0.0238 + 41 0.0714 + + 41 6 5 0 + 3 0.167 + 4 0.333 + 14 0.167 + 21 0.167 + 35 0.167 + + 4 2 2 0 + 27 0.5 + 41 0.5 + + 7 6 4 0 + 4 0.333 + 13 0.333 + 30 0.167 + 34 0.167 + + 21 42 15 5 + 3 0.0238 + 4 0.143 + 7 0.167 + 8 0.0476 + 13 0.0476 + 15 0.0238 + 19 0.0238 + 21 0.19 + 22 0.0238 + 26 0.0476 + 28 0.0476 + 37 0.0238 + 40 0.143 + 41 0.0238 + 42 0.0238 + + 2 9 4 0 + 7 0.333 + 15 0.111 + 21 0.444 + 41 0.111 + + 21 3 1 0 + 4 1 + + 47 19 10 0 + 3 0.0526 + 4 0.105 + 7 0.211 + 8 0.105 + 13 0.105 + 21 0.211 + 22 0.0526 + 26 0.0526 + 40 0.0526 + 42 0.0526 + + 49 3 2 0 + 26 0.333 + 40 0.667 + + 71 3 2 0 + 28 0.667 + 40 0.333 + + 40 210 3 0 + 43 0.00476 + 46 0.176 + 47 0.819 + + 41 31 12 2 + 2 0.0645 + 4 0.0323 + 7 0.548 + 14 0.0323 + 19 0.0323 + 20 0.0323 + 21 0.0323 + 27 0.0323 + 30 0.0645 + 39 0.0323 + 46 0.0645 + 47 0.0323 + + 51 4 3 0 + 2 0.5 + 19 0.25 + 39 0.25 + + 57 5 4 0 + 4 0.2 + 7 0.4 + 14 0.2 + 47 0.2 + + 42 16 4 0 + 7 0.125 + 8 0.0625 + 40 0.188 + 47 0.625 + + 46 38 4 0 + 7 0.0263 + 33 0.0263 + 43 0.0526 + 47 0.895 + + 47 495 14 13 + 2 0.00808 + 4 0.00202 + 7 0.00202 + 19 0.00202 + 26 0.00606 + 29 0.00404 + 33 0.00202 + 40 0.194 + 41 0.208 + 42 0.0202 + 43 0.0141 + 44 0.00202 + 46 0.0162 + 47 0.519 + + 21 5 3 0 + 19 0.2 + 40 0.6 + 41 0.2 + + 40 174 2 0 + 46 0.0115 + 47 0.989 + + 42 10 1 0 + 47 1 + + 46 36 3 0 + 33 0.0278 + 43 0.0278 + 47 0.944 + + 48 32 9 0 + 2 0.0312 + 7 0.0312 + 26 0.0625 + 40 0.188 + 41 0.531 + 42 0.0312 + 43 0.0625 + 46 0.0312 + 47 0.0312 + + 49 26 4 0 + 40 0.385 + 41 0.5 + 43 0.0769 + 47 0.0385 + + 51 4 1 0 + 40 1 + + 55 86 7 0 + 2 0.0116 + 29 0.0233 + 40 0.267 + 41 0.465 + 42 0.0465 + 46 0.0233 + 47 0.163 + + 57 51 6 0 + 26 0.0196 + 40 0.471 + 41 0.196 + 42 0.0588 + 43 0.0196 + 47 0.235 + + 62 13 4 0 + 40 0.385 + 41 0.462 + 46 0.0769 + 47 0.0769 + + 64 11 4 0 + 2 0.0909 + 40 0.455 + 41 0.0909 + 47 0.364 + + 69 17 5 0 + 4 0.0588 + 40 0.471 + 41 0.353 + 46 0.0588 + 47 0.0588 + + 71 9 6 0 + 2 0.111 + 40 0.333 + 41 0.222 + 43 0.111 + 44 0.111 + 47 0.111 + + 48 39 9 0 + 2 0.0256 + 7 0.0256 + 26 0.0513 + 40 0.308 + 41 0.436 + 42 0.0513 + 43 0.0513 + 46 0.0256 + 47 0.0256 + + 49 53 10 2 + 4 0.0377 + 7 0.132 + 8 0.0189 + 12 0.0189 + 21 0.0189 + 40 0.377 + 41 0.321 + 42 0.0189 + 43 0.0377 + 47 0.0189 + + 2 10 6 0 + 4 0.2 + 7 0.3 + 12 0.1 + 21 0.1 + 40 0.2 + 41 0.1 + + 47 21 5 0 + 7 0.0476 + 40 0.429 + 41 0.429 + 42 0.0476 + 47 0.0476 + + 51 16 5 1 + 2 0.0625 + 40 0.562 + 41 0.25 + 42 0.0625 + 46 0.0625 + + 47 5 3 0 + 2 0.2 + 41 0.6 + 42 0.2 + + 52 8 3 0 + 19 0.125 + 40 0.5 + 41 0.375 + + 55 193 13 8 + 0 0.00518 + 2 0.00518 + 7 0.0518 + 8 0.00518 + 21 0.00518 + 26 0.0155 + 29 0.0104 + 40 0.487 + 41 0.259 + 42 0.0622 + 43 0.00518 + 46 0.0155 + 47 0.0725 + + 2 9 3 0 + 0 0.111 + 40 0.778 + 41 0.111 + + 41 21 4 0 + 40 0.714 + 41 0.19 + 42 0.0476 + 46 0.0476 + + 42 17 5 0 + 40 0.706 + 41 0.0588 + 43 0.0588 + 46 0.0588 + 47 0.118 + + 45 17 2 0 + 40 0.941 + 42 0.0588 + + 47 77 9 0 + 7 0.104 + 21 0.013 + 26 0.039 + 29 0.026 + 40 0.221 + 41 0.429 + 42 0.039 + 46 0.013 + 47 0.117 + + 48 1 1 0 + 8 1 + + 52 1 1 0 + 2 1 + + 57 9 3 0 + 40 0.222 + 41 0.111 + 42 0.667 + + 57 89 8 3 + 4 0.0112 + 7 0.0562 + 26 0.0112 + 40 0.551 + 41 0.169 + 42 0.0562 + 43 0.0112 + 47 0.135 + + 47 26 5 0 + 26 0.0385 + 40 0.385 + 41 0.115 + 42 0.0385 + 47 0.423 + + 49 7 2 0 + 4 0.143 + 40 0.857 + + 55 15 4 0 + 7 0.2 + 40 0.467 + 41 0.267 + 43 0.0667 + + 62 54 5 1 + 40 0.815 + 41 0.111 + 42 0.037 + 46 0.0185 + 47 0.0185 + + 47 8 3 0 + 40 0.25 + 41 0.625 + 46 0.125 + + 64 40 4 0 + 2 0.025 + 40 0.8 + 41 0.075 + 47 0.1 + + 69 31 5 0 + 4 0.0323 + 40 0.71 + 41 0.194 + 46 0.0323 + 47 0.0323 + + 71 11 7 0 + 2 0.0909 + 7 0.0909 + 40 0.364 + 41 0.182 + 43 0.0909 + 44 0.0909 + 47 0.0909 + + 72 6 3 0 + 7 0.667 + 40 0.167 + 41 0.167 + +52 275 19 11 + 0 0.00727 + 2 0.0109 + 4 0.00727 + 7 0.0145 + 13 0.00727 + 19 0.0145 + 20 0.00727 + 21 0.00727 + 26 0.04 + 27 0.0109 + 28 0.0291 + 37 0.00727 + 40 0.142 + 41 0.52 + 42 0.00364 + 43 0.0291 + 45 0.00364 + 46 0.0364 + 47 0.102 + + 2 1 1 0 + 45 1 + + 13 5 2 0 + 40 0.8 + 46 0.2 + + 15 2 2 0 + 41 0.5 + 42 0.5 + + 21 18 5 0 + 4 0.0556 + 21 0.0556 + 37 0.0556 + 40 0.0556 + 41 0.778 + + 27 80 9 1 + 13 0.0125 + 19 0.0125 + 26 0.075 + 27 0.0125 + 28 0.025 + 40 0.225 + 41 0.538 + 43 0.0375 + 46 0.0625 + + 45 2 1 0 + 46 1 + + 28 11 4 0 + 0 0.0909 + 20 0.0909 + 28 0.182 + 41 0.636 + + 40 13 1 0 + 47 1 + + 41 1 1 0 + 27 1 + + 46 2 2 0 + 2 0.5 + 7 0.5 + + 47 127 17 7 + 0 0.00787 + 2 0.00787 + 4 0.00787 + 7 0.0157 + 13 0.00787 + 19 0.0157 + 20 0.00787 + 21 0.00787 + 26 0.0394 + 27 0.00787 + 28 0.0315 + 37 0.00787 + 40 0.102 + 41 0.559 + 43 0.0315 + 46 0.0315 + 47 0.11 + + 13 2 2 0 + 40 0.5 + 46 0.5 + + 21 17 4 0 + 4 0.0588 + 21 0.0588 + 37 0.0588 + 41 0.824 + + 27 70 9 0 + 13 0.0143 + 19 0.0143 + 26 0.0714 + 27 0.0143 + 28 0.0286 + 40 0.157 + 41 0.614 + 43 0.0429 + 46 0.0429 + + 28 11 4 0 + 0 0.0909 + 20 0.0909 + 28 0.182 + 41 0.636 + + 40 13 1 0 + 47 1 + + 46 2 2 0 + 2 0.5 + 7 0.5 + + 52 2 2 0 + 7 0.5 + 43 0.5 + + 52 4 4 0 + 2 0.25 + 7 0.25 + 41 0.25 + 43 0.25 + +53 99 14 6 + 4 0.0606 + 7 0.0808 + 8 0.0606 + 14 0.0202 + 15 0.0404 + 19 0.0404 + 21 0.0202 + 28 0.141 + 31 0.0202 + 37 0.0202 + 40 0.121 + 41 0.101 + 42 0.101 + 43 0.172 + + 8 3 1 0 + 41 1 + + 11 30 4 0 + 40 0.4 + 41 0.0667 + 42 0.167 + 43 0.367 + + 40 12 4 0 + 7 0.25 + 21 0.0833 + 28 0.583 + 37 0.0833 + + 42 2 1 0 + 15 1 + + 43 11 6 0 + 4 0.273 + 7 0.0909 + 8 0.273 + 14 0.0909 + 19 0.182 + 31 0.0909 + + 47 38 13 5 + 4 0.0789 + 7 0.105 + 8 0.0789 + 14 0.0263 + 15 0.0526 + 19 0.0526 + 21 0.0263 + 28 0.184 + 31 0.0263 + 37 0.0263 + 41 0.132 + 42 0.132 + 43 0.0789 + + 8 3 1 0 + 41 1 + + 11 10 3 0 + 41 0.2 + 42 0.5 + 43 0.3 + + 40 12 4 0 + 7 0.25 + 21 0.0833 + 28 0.583 + 37 0.0833 + + 42 2 1 0 + 15 1 + + 43 11 6 0 + 4 0.273 + 7 0.0909 + 8 0.273 + 14 0.0909 + 19 0.182 + 31 0.0909 + +54 1254 23 14 + 0 0.00159 + 2 0.00478 + 3 0.0271 + 4 0.00399 + 6 0.00159 + 7 0.112 + 8 0.0478 + 13 0.386 + 14 0.0447 + 15 0.121 + 18 0.00478 + 26 0.00638 + 29 0.00159 + 30 0.00319 + 31 0.00159 + 34 0.000797 + 40 0.00558 + 41 0.203 + 42 0.00159 + 43 0.00319 + 44 0.00239 + 45 0.00159 + 46 0.0136 + + 3 35 5 1 + 7 0.0286 + 13 0.257 + 15 0.0571 + 41 0.629 + 45 0.0286 + + 41 11 1 0 + 41 1 + + 4 4 1 0 + 8 1 + + 8 6 3 0 + 7 0.167 + 13 0.667 + 42 0.167 + + 13 18 4 0 + 7 0.722 + 26 0.167 + 40 0.0556 + 46 0.0556 + + 14 2 2 0 + 2 0.5 + 34 0.5 + + 15 371 10 3 + 3 0.062 + 4 0.0108 + 6 0.00539 + 7 0.299 + 8 0.0027 + 13 0.0108 + 26 0.0135 + 40 0.0027 + 41 0.59 + 43 0.0027 + + 15 29 4 0 + 7 0.897 + 13 0.0345 + 26 0.0345 + 41 0.0345 + + 41 232 4 0 + 3 0.0431 + 8 0.00431 + 13 0.0129 + 41 0.94 + + 47 105 7 0 + 3 0.124 + 4 0.0381 + 6 0.019 + 7 0.762 + 26 0.0381 + 40 0.00952 + 43 0.00952 + + 16 4 1 0 + 7 1 + + 40 1 1 0 + 43 1 + + 41 237 7 3 + 2 0.00844 + 3 0.0464 + 8 0.097 + 13 0.751 + 14 0.0717 + 15 0.0169 + 30 0.00844 + + 3 22 2 0 + 3 0.5 + 13 0.5 + + 15 213 6 0 + 2 0.00469 + 8 0.108 + 13 0.779 + 14 0.0798 + 15 0.0188 + 30 0.00939 + + 54 1 1 0 + 2 1 + + 47 411 18 8 + 0 0.00243 + 2 0.00487 + 7 0.0073 + 8 0.0681 + 13 0.589 + 14 0.0681 + 15 0.182 + 18 0.0073 + 29 0.00243 + 30 0.00487 + 31 0.00243 + 40 0.0073 + 41 0.0219 + 42 0.00243 + 43 0.00487 + 44 0.00243 + 45 0.00243 + 46 0.0195 + + 3 12 3 0 + 13 0.75 + 15 0.167 + 45 0.0833 + + 8 5 2 0 + 13 0.8 + 42 0.2 + + 13 1 1 0 + 40 1 + + 14 1 1 0 + 2 1 + + 15 15 5 0 + 7 0.2 + 8 0.0667 + 13 0.267 + 41 0.4 + 43 0.0667 + + 40 1 1 0 + 43 1 + + 41 225 6 0 + 2 0.00444 + 8 0.102 + 13 0.791 + 14 0.0756 + 15 0.0178 + 30 0.00889 + + 57 143 12 0 + 0 0.00699 + 8 0.021 + 13 0.294 + 14 0.0769 + 15 0.476 + 18 0.021 + 29 0.00699 + 31 0.00699 + 40 0.014 + 41 0.021 + 44 0.00699 + 46 0.049 + + 54 7 5 0 + 2 0.143 + 7 0.429 + 13 0.143 + 41 0.143 + 44 0.143 + + 55 8 5 0 + 4 0.125 + 7 0.375 + 13 0.25 + 15 0.125 + 41 0.125 + + 57 145 13 2 + 0 0.0069 + 7 0.0069 + 8 0.0207 + 13 0.29 + 14 0.0759 + 15 0.476 + 18 0.0207 + 29 0.0069 + 31 0.0069 + 40 0.0138 + 41 0.0207 + 44 0.0069 + 46 0.0483 + + 13 16 6 0 + 8 0.0625 + 13 0.312 + 14 0.0625 + 15 0.25 + 41 0.0625 + 46 0.25 + + 55 3 3 0 + 7 0.333 + 8 0.333 + 46 0.333 + + 64 1 1 0 + 46 1 + +55 743201 48 64 + 0 0.0725 + 1 0.000324 + 2 0.0381 + 3 0.0109 + 4 0.0192 + 5 9.28e-05 + 6 8.48e-05 + 7 0.218 + 8 0.0157 + 9 0.00101 + 10 0.000679 + 11 2.69e-06 + 12 0.0255 + 13 0.0155 + 14 0.00484 + 15 0.0115 + 16 0.000159 + 17 3.5e-05 + 18 0.000148 + 19 0.00383 + 20 0.000667 + 21 0.0224 + 22 0.00163 + 23 0.000167 + 24 0.000495 + 25 3.23e-05 + 26 0.0314 + 27 2.69e-06 + 28 0.00194 + 29 0.0528 + 30 0.00873 + 31 0.013 + 32 0.0128 + 33 0.0187 + 34 0.0103 + 35 0.00461 + 36 0.000354 + 37 0.00247 + 38 2.96e-05 + 39 0.00155 + 40 0.175 + 41 0.167 + 42 0.0181 + 43 0.00332 + 44 0.00367 + 45 0.00252 + 46 0.00333 + 47 0.00429 + + 0 57 13 3 + 0 0.0175 + 7 0.123 + 8 0.0877 + 13 0.0351 + 15 0.0175 + 21 0.246 + 23 0.175 + 29 0.105 + 30 0.0877 + 31 0.0526 + 41 0.0175 + 43 0.0175 + 45 0.0175 + + 13 25 7 0 + 7 0.08 + 8 0.16 + 13 0.04 + 21 0.2 + 23 0.4 + 30 0.08 + 45 0.04 + + 15 26 9 0 + 7 0.154 + 8 0.0385 + 13 0.0385 + 15 0.0385 + 21 0.346 + 29 0.231 + 30 0.0385 + 31 0.0769 + 41 0.0385 + + 19 3 3 0 + 0 0.333 + 7 0.333 + 30 0.333 + + 1 3 2 0 + 26 0.333 + 40 0.667 + + 2 6940 35 14 + 0 0.000144 + 2 0.000144 + 3 0.104 + 4 0.195 + 6 0.000144 + 7 0.0062 + 8 0.168 + 9 0.0107 + 10 0.00072 + 13 0.114 + 14 0.0501 + 15 0.186 + 16 0.00202 + 17 0.00101 + 19 0.00187 + 20 0.0399 + 21 0.0278 + 22 0.000576 + 23 0.000144 + 26 0.000432 + 28 0.000865 + 29 0.000576 + 30 0.0098 + 31 0.00548 + 33 0.00101 + 34 0.000144 + 35 0.00115 + 36 0.000144 + 37 0.000432 + 38 0.000288 + 39 0.0588 + 41 0.00346 + 42 0.000432 + 44 0.000576 + 45 0.00749 + + 3 18 3 0 + 3 0.889 + 7 0.0556 + 21 0.0556 + + 13 15 7 0 + 3 0.133 + 4 0.0667 + 8 0.2 + 21 0.267 + 28 0.133 + 30 0.133 + 33 0.0667 + + 14 6 2 0 + 30 0.167 + 33 0.833 + + 15 3 2 0 + 15 0.667 + 21 0.333 + + 41 1384 25 0 + 3 0.318 + 4 0.103 + 7 0.0224 + 8 0.0412 + 9 0.00939 + 10 0.00145 + 13 0.0549 + 14 0.0253 + 15 0.091 + 16 0.000723 + 19 0.000723 + 20 0.0065 + 21 0.0571 + 22 0.00145 + 23 0.000723 + 26 0.000723 + 28 0.000723 + 29 0.000723 + 30 0.00361 + 31 0.00289 + 34 0.000723 + 35 0.00217 + 39 0.249 + 41 0.00145 + 45 0.00434 + + 42 77 15 0 + 3 0.0649 + 4 0.156 + 8 0.0779 + 9 0.026 + 13 0.0649 + 14 0.0519 + 15 0.286 + 17 0.013 + 21 0.117 + 28 0.013 + 36 0.013 + 39 0.0519 + 41 0.039 + 44 0.013 + 45 0.013 + + 45 5 3 0 + 4 0.6 + 14 0.2 + 20 0.2 + + 46 35 7 0 + 4 0.143 + 8 0.143 + 13 0.0571 + 21 0.0286 + 22 0.0286 + 31 0.0286 + 45 0.571 + + 47 1 1 0 + 0 1 + + 55 5370 31 0 + 2 0.000186 + 3 0.0477 + 4 0.221 + 6 0.000186 + 7 0.00186 + 8 0.204 + 9 0.011 + 10 0.000559 + 13 0.131 + 14 0.0572 + 15 0.212 + 16 0.00242 + 17 0.00112 + 19 0.00223 + 20 0.0497 + 21 0.0177 + 22 0.000186 + 26 0.000372 + 28 0.000372 + 29 0.000559 + 30 0.0101 + 31 0.00615 + 33 0.000186 + 35 0.000931 + 37 0.000186 + 38 0.000372 + 39 0.0112 + 41 0.00354 + 42 0.000559 + 44 0.000559 + 45 0.00447 + + 57 4 3 0 + 7 0.25 + 13 0.5 + 21 0.25 + + 58 6 6 0 + 4 0.167 + 8 0.167 + 15 0.167 + 21 0.167 + 30 0.167 + 45 0.167 + + 62 6 2 0 + 4 0.167 + 30 0.833 + + 64 3 2 0 + 4 0.333 + 37 0.667 + + 3 8212 38 21 + 0 0.0178 + 2 0.0314 + 3 0.00499 + 4 0.0933 + 6 0.000122 + 7 0.167 + 8 0.00402 + 9 0.00244 + 10 0.000365 + 12 0.00706 + 13 0.00426 + 14 0.00146 + 15 0.00402 + 19 0.00231 + 20 0.000244 + 21 0.0108 + 22 0.000487 + 23 0.000122 + 25 0.000122 + 26 0.0899 + 28 0.000122 + 29 0.0141 + 30 0.00329 + 31 0.00548 + 32 0.0011 + 33 0.00329 + 34 0.00256 + 35 0.000852 + 37 0.00317 + 39 0.000122 + 40 0.2 + 41 0.278 + 42 0.0226 + 43 0.0167 + 44 0.0017 + 45 0.00134 + 46 0.000974 + 47 0.00195 + + 2 92 17 0 + 0 0.0326 + 2 0.0326 + 4 0.0109 + 7 0.0652 + 8 0.0109 + 12 0.0109 + 21 0.0109 + 26 0.0109 + 31 0.0109 + 33 0.0109 + 34 0.0109 + 40 0.304 + 41 0.391 + 42 0.0217 + 43 0.0217 + 44 0.0217 + 45 0.0217 + + 3 254 17 0 + 0 0.00787 + 2 0.0197 + 4 0.0276 + 7 0.217 + 8 0.00394 + 9 0.00394 + 12 0.0118 + 13 0.00787 + 14 0.00394 + 15 0.0354 + 26 0.287 + 32 0.00394 + 40 0.201 + 41 0.126 + 42 0.0236 + 43 0.0118 + 47 0.00787 + + 4 159 24 0 + 0 0.164 + 2 0.0377 + 4 0.00629 + 7 0.195 + 8 0.00629 + 10 0.0126 + 12 0.044 + 13 0.0126 + 14 0.00629 + 15 0.00629 + 19 0.00629 + 21 0.044 + 23 0.00629 + 26 0.0252 + 29 0.0314 + 31 0.0189 + 32 0.00629 + 33 0.00629 + 34 0.0126 + 35 0.0126 + 40 0.164 + 41 0.151 + 42 0.0126 + 45 0.0126 + + 7 12 7 0 + 3 0.0833 + 4 0.25 + 7 0.25 + 14 0.0833 + 21 0.0833 + 40 0.0833 + 41 0.167 + + 8 155 14 0 + 0 0.071 + 2 0.0516 + 7 0.116 + 12 0.00645 + 14 0.00645 + 19 0.0129 + 26 0.0323 + 31 0.0194 + 33 0.00645 + 34 0.00645 + 40 0.374 + 41 0.252 + 42 0.0387 + 47 0.00645 + + 9 3 2 0 + 33 0.667 + 34 0.333 + + 10 1 1 0 + 8 1 + + 13 164 20 0 + 0 0.0366 + 2 0.0549 + 4 0.0061 + 7 0.171 + 8 0.0061 + 12 0.0061 + 13 0.0061 + 14 0.0122 + 19 0.0061 + 26 0.0305 + 29 0.0061 + 30 0.0061 + 32 0.0122 + 33 0.0427 + 34 0.0061 + 40 0.14 + 41 0.378 + 42 0.0488 + 43 0.0122 + 46 0.0122 + + 14 12 7 0 + 2 0.167 + 3 0.167 + 7 0.0833 + 26 0.0833 + 30 0.0833 + 40 0.167 + 41 0.25 + + 15 1421 30 0 + 0 0.019 + 2 0.0394 + 3 0.000704 + 4 0.00281 + 7 0.0739 + 8 0.00141 + 9 0.000704 + 12 0.00563 + 13 0.00141 + 15 0.00422 + 19 0.00141 + 20 0.00141 + 21 0.00281 + 26 0.0387 + 28 0.000704 + 29 0.031 + 30 0.00211 + 31 0.00493 + 32 0.000704 + 33 0.00211 + 34 0.000704 + 37 0.00352 + 39 0.000704 + 40 0.251 + 41 0.481 + 42 0.00844 + 43 0.0169 + 44 0.00141 + 45 0.000704 + 47 0.000704 + + 20 1 1 0 + 30 1 + + 21 31 11 0 + 0 0.0323 + 2 0.0323 + 4 0.0323 + 7 0.484 + 14 0.0323 + 21 0.0323 + 26 0.0323 + 29 0.0645 + 37 0.0645 + 40 0.0968 + 41 0.0968 + + 29 1 1 0 + 14 1 + + 31 2 2 0 + 0 0.5 + 26 0.5 + + 38 13 6 0 + 4 0.0769 + 7 0.0769 + 40 0.231 + 41 0.154 + 42 0.0769 + 44 0.385 + + 39 1781 28 0 + 0 0.000561 + 2 0.0247 + 3 0.0202 + 4 0.396 + 6 0.000561 + 7 0.14 + 8 0.0101 + 9 0.000561 + 12 0.000561 + 13 0.0112 + 15 0.00225 + 19 0.00168 + 21 0.00786 + 22 0.00112 + 26 0.0415 + 29 0.000561 + 30 0.00168 + 31 0.00786 + 33 0.000561 + 34 0.00225 + 35 0.000561 + 37 0.00112 + 40 0.12 + 41 0.149 + 42 0.0118 + 43 0.0444 + 44 0.00112 + 47 0.000561 + + 41 320 10 0 + 2 0.025 + 7 0.00313 + 13 0.00313 + 25 0.00313 + 31 0.00313 + 40 0.172 + 41 0.669 + 42 0.0719 + 43 0.0188 + 47 0.0312 + + 45 3 1 0 + 46 1 + + 47 3753 32 0 + 0 0.0181 + 2 0.0306 + 3 0.000266 + 4 0.0107 + 7 0.227 + 8 0.00213 + 9 0.00453 + 10 0.000266 + 12 0.00959 + 13 0.00187 + 14 0.000799 + 15 0.00346 + 19 0.00266 + 21 0.016 + 22 0.000533 + 26 0.137 + 29 0.0168 + 30 0.0048 + 31 0.00426 + 32 0.00107 + 33 0.00293 + 34 0.00266 + 35 0.00107 + 37 0.00453 + 40 0.217 + 41 0.242 + 42 0.028 + 43 0.00533 + 44 0.000799 + 45 0.00133 + 46 0.000799 + 47 0.000266 + + 55 8 4 0 + 14 0.125 + 40 0.375 + 41 0.375 + 45 0.125 + + 60 6 5 0 + 2 0.167 + 21 0.167 + 26 0.167 + 40 0.333 + 41 0.167 + + 4 2568 37 12 + 0 0.247 + 1 0.000779 + 2 0.00857 + 3 0.00273 + 4 0.00584 + 7 0.274 + 8 0.00935 + 9 0.000389 + 10 0.000389 + 12 0.0666 + 13 0.00701 + 14 0.00117 + 15 0.00156 + 18 0.000779 + 19 0.00857 + 21 0.0238 + 22 0.000389 + 24 0.00195 + 26 0.00701 + 28 0.00389 + 29 0.0269 + 30 0.00701 + 31 0.0245 + 32 0.0218 + 33 0.0592 + 34 0.00584 + 35 0.0253 + 37 0.000389 + 38 0.000779 + 39 0.0343 + 40 0.0401 + 41 0.0666 + 42 0.0101 + 44 0.00117 + 45 0.00117 + 46 0.00117 + 47 0.00195 + + 2 6 1 0 + 7 1 + + 3 4 2 0 + 7 0.5 + 41 0.5 + + 4 9 6 0 + 0 0.111 + 7 0.111 + 12 0.111 + 33 0.222 + 35 0.111 + 41 0.333 + + 7 1 1 0 + 19 1 + + 8 9 4 0 + 7 0.556 + 12 0.111 + 26 0.111 + 29 0.222 + + 13 3 2 0 + 4 0.333 + 7 0.667 + + 15 3 2 0 + 8 0.667 + 42 0.333 + + 17 25 10 0 + 0 0.24 + 2 0.04 + 7 0.08 + 29 0.04 + 30 0.04 + 31 0.04 + 33 0.12 + 35 0.04 + 40 0.12 + 41 0.24 + + 19 8 7 0 + 12 0.125 + 24 0.125 + 29 0.25 + 32 0.125 + 33 0.125 + 40 0.125 + 41 0.125 + + 21 42 9 0 + 0 0.0476 + 7 0.571 + 29 0.0238 + 31 0.0714 + 35 0.0238 + 40 0.143 + 41 0.0238 + 42 0.0714 + 46 0.0238 + + 28 1 1 0 + 8 1 + + 60 3 3 0 + 7 0.333 + 38 0.333 + 40 0.333 + + 5 861 10 0 + 0 0.861 + 4 0.00232 + 12 0.0848 + 18 0.0128 + 19 0.00116 + 21 0.0244 + 26 0.00116 + 33 0.00697 + 35 0.00116 + 41 0.00465 + + 6 75 17 7 + 0 0.0533 + 2 0.0267 + 6 0.107 + 7 0.08 + 8 0.0133 + 12 0.0267 + 26 0.0533 + 31 0.0133 + 33 0.0533 + 39 0.0133 + 40 0.24 + 41 0.173 + 42 0.0267 + 43 0.0133 + 44 0.0267 + 45 0.0133 + 46 0.0667 + + 4 8 5 0 + 7 0.125 + 33 0.5 + 40 0.125 + 41 0.125 + 45 0.125 + + 6 17 6 0 + 6 0.176 + 7 0.235 + 40 0.118 + 41 0.235 + 43 0.0588 + 46 0.176 + + 8 5 4 0 + 0 0.2 + 6 0.4 + 26 0.2 + 44 0.2 + + 41 5 4 0 + 39 0.2 + 40 0.2 + 41 0.2 + 42 0.4 + + 43 1 1 0 + 8 1 + + 45 4 3 0 + 6 0.5 + 40 0.25 + 46 0.25 + + 47 31 9 0 + 0 0.0645 + 2 0.0645 + 12 0.0645 + 26 0.0968 + 31 0.0323 + 40 0.419 + 41 0.194 + 44 0.0323 + 46 0.0323 + + 7 103 24 7 + 0 0.117 + 2 0.00971 + 3 0.0194 + 4 0.117 + 5 0.00971 + 7 0.175 + 8 0.0291 + 12 0.0291 + 13 0.0583 + 14 0.00971 + 15 0.0194 + 18 0.0194 + 19 0.0291 + 21 0.0291 + 22 0.00971 + 24 0.00971 + 26 0.0194 + 29 0.00971 + 31 0.0485 + 33 0.0291 + 39 0.0194 + 40 0.0874 + 41 0.0874 + 47 0.00971 + + 8 2 2 0 + 7 0.5 + 15 0.5 + + 13 8 6 0 + 7 0.125 + 26 0.125 + 33 0.125 + 40 0.375 + 41 0.125 + 47 0.125 + + 21 9 4 0 + 4 0.444 + 8 0.222 + 13 0.222 + 14 0.111 + + 41 2 2 0 + 13 0.5 + 21 0.5 + + 47 62 20 0 + 0 0.177 + 2 0.0161 + 4 0.0484 + 5 0.0161 + 7 0.177 + 8 0.0161 + 12 0.0484 + 15 0.0161 + 18 0.0323 + 19 0.0484 + 21 0.0161 + 22 0.0161 + 24 0.0161 + 26 0.0161 + 29 0.0161 + 31 0.0806 + 33 0.0323 + 39 0.0323 + 40 0.0484 + 41 0.129 + + 55 10 4 0 + 3 0.1 + 4 0.5 + 13 0.3 + 40 0.1 + + 60 4 1 0 + 7 1 + + 8 1338 39 20 + 0 0.059 + 1 0.000747 + 2 0.0329 + 3 0.00673 + 4 0.0112 + 6 0.00374 + 7 0.361 + 8 0.00897 + 9 0.00747 + 10 0.00224 + 12 0.0112 + 13 0.0142 + 14 0.00673 + 15 0.00598 + 19 0.00299 + 21 0.0172 + 22 0.00299 + 24 0.000747 + 26 0.0471 + 27 0.000747 + 28 0.00374 + 29 0.0262 + 30 0.0172 + 31 0.00523 + 32 0.0105 + 33 0.00972 + 34 0.00224 + 35 0.00299 + 37 0.000747 + 38 0.00149 + 39 0.0493 + 40 0.116 + 41 0.116 + 42 0.0179 + 43 0.00448 + 44 0.00448 + 45 0.00374 + 46 0.00374 + 47 0.000747 + + 2 12 5 0 + 0 0.0833 + 7 0.25 + 14 0.167 + 40 0.333 + 41 0.167 + + 3 4 3 0 + 2 0.25 + 9 0.5 + 40 0.25 + + 4 482 34 0 + 0 0.0622 + 2 0.0456 + 3 0.0124 + 4 0.0187 + 6 0.00207 + 7 0.255 + 8 0.0104 + 9 0.0083 + 10 0.00622 + 12 0.0124 + 13 0.0104 + 14 0.00415 + 15 0.00415 + 19 0.00415 + 21 0.0187 + 22 0.00415 + 24 0.00207 + 26 0.0539 + 27 0.00207 + 28 0.00622 + 29 0.0104 + 30 0.0166 + 32 0.00622 + 33 0.0166 + 34 0.00207 + 35 0.00415 + 37 0.00207 + 38 0.00415 + 39 0.135 + 40 0.133 + 41 0.0996 + 42 0.0207 + 44 0.00207 + 45 0.00415 + + 7 4 4 0 + 7 0.25 + 12 0.25 + 21 0.25 + 26 0.25 + + 8 31 13 0 + 1 0.0323 + 7 0.226 + 14 0.0323 + 15 0.0323 + 21 0.0323 + 22 0.0323 + 26 0.0323 + 29 0.0645 + 33 0.0645 + 35 0.0323 + 40 0.161 + 41 0.226 + 44 0.0323 + + 13 49 12 0 + 0 0.0816 + 2 0.0408 + 4 0.0204 + 7 0.327 + 12 0.0612 + 14 0.0204 + 29 0.0204 + 30 0.0204 + 40 0.163 + 41 0.204 + 42 0.0204 + 46 0.0204 + + 14 11 5 0 + 2 0.0909 + 7 0.364 + 40 0.182 + 41 0.273 + 42 0.0909 + + 15 12 7 0 + 2 0.0833 + 7 0.25 + 22 0.0833 + 26 0.0833 + 29 0.333 + 40 0.0833 + 42 0.0833 + + 20 57 10 0 + 2 0.0526 + 7 0.14 + 13 0.0351 + 15 0.0175 + 21 0.0351 + 26 0.0351 + 29 0.0175 + 33 0.0175 + 40 0.368 + 41 0.281 + + 21 63 11 0 + 0 0.0635 + 2 0.0159 + 7 0.603 + 19 0.0159 + 21 0.0159 + 26 0.111 + 32 0.0159 + 40 0.0794 + 41 0.0476 + 44 0.0159 + 46 0.0159 + + 22 2 2 0 + 28 0.5 + 40 0.5 + + 23 10 4 0 + 0 0.1 + 7 0.5 + 40 0.3 + 46 0.1 + + 30 2 2 0 + 13 0.5 + 41 0.5 + + 42 2 2 0 + 14 0.5 + 26 0.5 + + 45 2 2 0 + 19 0.5 + 46 0.5 + + 47 537 30 0 + 0 0.0689 + 2 0.0149 + 3 0.00186 + 4 0.00745 + 6 0.00559 + 7 0.492 + 8 0.00745 + 9 0.00745 + 12 0.00745 + 13 0.0168 + 14 0.00372 + 15 0.00745 + 21 0.0168 + 26 0.0447 + 28 0.00186 + 29 0.0391 + 30 0.0205 + 31 0.00931 + 32 0.0168 + 33 0.00372 + 34 0.00372 + 35 0.00186 + 39 0.00186 + 40 0.0596 + 41 0.102 + 42 0.0186 + 43 0.00931 + 44 0.00559 + 46 0.00186 + 47 0.00186 + + 48 13 6 0 + 0 0.0769 + 2 0.0769 + 7 0.0769 + 31 0.0769 + 40 0.0769 + 41 0.615 + + 54 1 1 0 + 31 1 + + 55 27 14 0 + 0 0.037 + 2 0.0741 + 3 0.0741 + 4 0.037 + 7 0.185 + 8 0.111 + 13 0.0741 + 29 0.037 + 30 0.0741 + 32 0.037 + 40 0.0741 + 41 0.037 + 43 0.037 + 45 0.111 + + 60 8 6 0 + 2 0.25 + 6 0.125 + 7 0.125 + 12 0.125 + 40 0.25 + 41 0.125 + + 9 236 14 6 + 0 0.0212 + 2 0.00847 + 4 0.00847 + 7 0.619 + 12 0.00424 + 21 0.0254 + 26 0.0763 + 29 0.00424 + 30 0.00424 + 31 0.0127 + 40 0.114 + 41 0.089 + 42 0.00847 + 44 0.00424 + + 4 15 5 0 + 4 0.0667 + 7 0.6 + 31 0.0667 + 40 0.133 + 41 0.133 + + 13 7 5 0 + 0 0.143 + 7 0.429 + 12 0.143 + 40 0.143 + 41 0.143 + + 14 2 2 0 + 0 0.5 + 2 0.5 + + 21 19 4 0 + 7 0.737 + 40 0.158 + 41 0.0526 + 42 0.0526 + + 47 160 11 0 + 0 0.0125 + 2 0.00625 + 7 0.606 + 21 0.0375 + 26 0.106 + 29 0.00625 + 30 0.00625 + 40 0.112 + 41 0.0938 + 42 0.00625 + 44 0.00625 + + 55 9 4 0 + 4 0.111 + 7 0.667 + 31 0.111 + 41 0.111 + + 10 370 23 6 + 0 0.0568 + 2 0.0027 + 4 0.00811 + 5 0.0027 + 7 0.705 + 8 0.00541 + 12 0.00541 + 13 0.00811 + 19 0.00811 + 21 0.0162 + 26 0.0135 + 28 0.0027 + 29 0.0027 + 30 0.00811 + 31 0.0027 + 32 0.0324 + 37 0.0027 + 40 0.0459 + 41 0.0486 + 42 0.0135 + 44 0.0027 + 45 0.0027 + 46 0.0027 + + 2 2 2 0 + 26 0.5 + 46 0.5 + + 4 125 17 0 + 0 0.064 + 2 0.008 + 4 0.024 + 5 0.008 + 7 0.552 + 8 0.016 + 12 0.008 + 13 0.024 + 19 0.016 + 21 0.04 + 26 0.016 + 30 0.008 + 32 0.016 + 40 0.112 + 41 0.056 + 42 0.024 + 44 0.008 + + 20 10 6 0 + 7 0.3 + 26 0.2 + 37 0.1 + 40 0.1 + 41 0.2 + 45 0.1 + + 21 5 2 0 + 7 0.4 + 41 0.6 + + 47 216 12 0 + 0 0.0602 + 7 0.838 + 12 0.00463 + 19 0.00463 + 21 0.00463 + 28 0.00463 + 29 0.00463 + 30 0.00926 + 31 0.00463 + 32 0.0463 + 40 0.00926 + 41 0.00926 + + 55 6 3 0 + 7 0.333 + 41 0.5 + 42 0.167 + + 12 3 3 0 + 40 0.333 + 41 0.333 + 43 0.333 + + 13 98717 46 40 + 0 0.0625 + 1 0.000365 + 2 0.0342 + 3 0.00661 + 4 0.0085 + 5 0.000152 + 6 6.08e-05 + 7 0.33 + 8 0.00775 + 9 0.00124 + 10 5.06e-05 + 12 0.0236 + 13 0.004 + 14 0.000952 + 15 0.00478 + 16 3.04e-05 + 17 2.03e-05 + 18 2.03e-05 + 19 0.00561 + 20 0.000274 + 21 0.0242 + 22 0.00352 + 23 0.000111 + 24 0.000537 + 25 4.05e-05 + 26 0.051 + 28 0.00134 + 29 0.0429 + 30 0.00867 + 31 0.0138 + 32 0.00181 + 33 0.0202 + 34 0.0105 + 35 0.00329 + 36 0.000243 + 37 0.00321 + 38 3.04e-05 + 39 0.000263 + 40 0.146 + 41 0.15 + 42 0.015 + 43 0.00203 + 44 0.002 + 45 0.00284 + 46 0.00573 + 47 0.000669 + + 0 3 3 0 + 3 0.333 + 7 0.333 + 41 0.333 + + 2 783 25 0 + 0 0.0396 + 2 0.0179 + 4 0.00383 + 6 0.00128 + 7 0.298 + 8 0.00383 + 12 0.0204 + 21 0.0153 + 26 0.0383 + 29 0.014 + 30 0.00511 + 31 0.0153 + 32 0.014 + 33 0.0115 + 34 0.0102 + 35 0.00255 + 37 0.00383 + 40 0.25 + 41 0.183 + 42 0.0307 + 43 0.00383 + 44 0.00255 + 45 0.00511 + 46 0.00894 + 47 0.00128 + + 3 4034 35 0 + 0 0.0151 + 1 0.000496 + 2 0.0288 + 3 0.0654 + 4 0.0206 + 7 0.335 + 8 0.0107 + 9 0.00868 + 12 0.00645 + 13 0.00372 + 14 0.000496 + 15 0.00843 + 19 0.00347 + 20 0.000744 + 21 0.0121 + 22 0.00198 + 24 0.000496 + 26 0.128 + 28 0.000496 + 29 0.0129 + 30 0.00397 + 31 0.00744 + 32 0.000248 + 33 0.00645 + 34 0.00347 + 35 0.00198 + 37 0.00223 + 40 0.143 + 41 0.127 + 42 0.0273 + 43 0.00322 + 44 0.00545 + 45 0.00223 + 46 0.00149 + 47 0.000992 + + 4 30713 45 0 + 0 0.078 + 1 0.000456 + 2 0.022 + 3 0.00156 + 4 0.00834 + 5 0.000195 + 6 3.26e-05 + 7 0.359 + 8 0.00703 + 9 0.000977 + 10 9.77e-05 + 12 0.0316 + 13 0.00371 + 14 0.00107 + 15 0.00391 + 16 6.51e-05 + 18 6.51e-05 + 19 0.00834 + 20 0.000456 + 21 0.0346 + 22 0.00866 + 23 0.000195 + 24 0.000912 + 25 3.26e-05 + 26 0.0489 + 28 0.00166 + 29 0.0524 + 30 0.00853 + 31 0.0151 + 32 0.00147 + 33 0.0292 + 34 0.013 + 35 0.00293 + 36 0.000293 + 37 0.00414 + 38 3.26e-05 + 39 0.000521 + 40 0.108 + 41 0.125 + 42 0.00856 + 43 0.00143 + 44 0.000814 + 45 0.00378 + 46 0.00199 + 47 0.000358 + + 6 8 6 0 + 0 0.125 + 2 0.125 + 7 0.25 + 40 0.125 + 41 0.125 + 42 0.25 + + 7 79 12 0 + 0 0.0759 + 2 0.038 + 7 0.152 + 12 0.0253 + 15 0.0127 + 21 0.0253 + 26 0.0253 + 30 0.0253 + 31 0.0127 + 33 0.0127 + 40 0.392 + 41 0.203 + + 8 20150 43 0 + 0 0.0496 + 1 0.000397 + 2 0.0359 + 3 0.00179 + 4 0.00794 + 5 0.000199 + 6 4.96e-05 + 7 0.34 + 8 0.00591 + 9 0.000397 + 10 9.93e-05 + 12 0.0205 + 13 0.00437 + 14 0.000794 + 15 0.00536 + 16 4.96e-05 + 19 0.00541 + 20 0.000149 + 21 0.0172 + 22 0.000844 + 23 4.96e-05 + 24 0.000248 + 25 4.96e-05 + 26 0.0461 + 28 0.00124 + 29 0.032 + 30 0.0103 + 31 0.0154 + 32 0.000943 + 33 0.0144 + 34 0.00983 + 35 0.00407 + 36 0.000248 + 37 0.00323 + 39 9.93e-05 + 40 0.175 + 41 0.158 + 42 0.0168 + 43 0.00159 + 44 0.00199 + 45 0.00149 + 46 0.00928 + 47 0.000596 + + 9 517 25 0 + 0 0.0406 + 2 0.0426 + 4 0.00387 + 7 0.453 + 8 0.0058 + 12 0.0174 + 13 0.00193 + 15 0.00193 + 17 0.00193 + 19 0.00387 + 21 0.0193 + 26 0.0754 + 29 0.00774 + 30 0.0155 + 31 0.0058 + 32 0.0058 + 33 0.0193 + 34 0.00387 + 40 0.128 + 41 0.112 + 42 0.0251 + 43 0.00193 + 44 0.00193 + 45 0.00193 + 46 0.00387 + + 10 469 25 0 + 0 0.0768 + 2 0.0171 + 4 0.0149 + 7 0.36 + 8 0.0149 + 12 0.0213 + 13 0.00426 + 14 0.00426 + 15 0.0064 + 19 0.0107 + 21 0.032 + 26 0.0597 + 29 0.064 + 30 0.0107 + 31 0.00426 + 32 0.00426 + 33 0.0235 + 35 0.00426 + 37 0.00213 + 39 0.00213 + 40 0.109 + 41 0.134 + 42 0.0149 + 44 0.00213 + 46 0.00213 + + 13 12677 39 0 + 0 0.0652 + 1 0.000473 + 2 0.0461 + 3 0.00252 + 4 0.00529 + 7 0.248 + 8 0.00718 + 9 0.000631 + 12 0.0242 + 13 0.00363 + 14 0.000631 + 15 0.00552 + 17 7.89e-05 + 19 0.00387 + 20 0.000158 + 21 0.0204 + 22 0.000868 + 24 0.000158 + 26 0.0311 + 28 0.00142 + 29 0.0506 + 30 0.00812 + 31 0.0177 + 32 0.00252 + 33 0.02 + 34 0.0165 + 35 0.00371 + 36 0.000473 + 37 0.00331 + 38 7.89e-05 + 39 0.000237 + 40 0.189 + 41 0.186 + 42 0.0185 + 43 0.00174 + 44 0.00268 + 45 0.00316 + 46 0.00702 + 47 0.0011 + + 14 957 30 0 + 0 0.0742 + 1 0.00104 + 2 0.0366 + 3 0.0115 + 4 0.00522 + 7 0.222 + 8 0.00522 + 12 0.023 + 13 0.00209 + 14 0.00104 + 15 0.00522 + 19 0.00313 + 21 0.023 + 24 0.00104 + 26 0.0303 + 29 0.0815 + 30 0.00104 + 31 0.0219 + 32 0.00418 + 33 0.0136 + 34 0.0167 + 35 0.00209 + 37 0.00104 + 40 0.181 + 41 0.203 + 42 0.0167 + 43 0.00104 + 44 0.00522 + 45 0.00418 + 46 0.00313 + + 15 3706 37 0 + 0 0.0815 + 2 0.0364 + 3 0.0054 + 4 0.00729 + 7 0.181 + 8 0.00648 + 9 0.00108 + 12 0.0324 + 13 0.00863 + 14 0.00054 + 15 0.00405 + 19 0.00189 + 20 0.00027 + 21 0.0216 + 22 0.00189 + 23 0.000809 + 24 0.00027 + 26 0.0321 + 28 0.000809 + 29 0.11 + 30 0.00756 + 31 0.0165 + 32 0.0027 + 33 0.0262 + 34 0.0132 + 35 0.0108 + 36 0.000809 + 37 0.00162 + 39 0.00054 + 40 0.174 + 41 0.186 + 42 0.0135 + 43 0.0027 + 44 0.0027 + 45 0.00513 + 46 0.00243 + 47 0.00027 + + 16 73 10 0 + 0 0.0685 + 2 0.0411 + 7 0.219 + 13 0.0137 + 15 0.0411 + 21 0.0548 + 26 0.0822 + 29 0.123 + 40 0.178 + 41 0.178 + + 18 2 2 0 + 2 0.5 + 21 0.5 + + 19 13 2 0 + 7 0.231 + 41 0.769 + + 20 2788 31 0 + 0 0.0897 + 2 0.0308 + 3 0.000717 + 4 0.00825 + 5 0.00108 + 7 0.303 + 8 0.00933 + 12 0.0233 + 13 0.00287 + 14 0.000717 + 15 0.00323 + 19 0.00143 + 21 0.0326 + 22 0.00179 + 24 0.00251 + 26 0.0976 + 28 0.00395 + 29 0.0334 + 30 0.00825 + 31 0.00753 + 32 0.000717 + 33 0.0197 + 34 0.00108 + 37 0.0043 + 39 0.000359 + 40 0.145 + 41 0.142 + 42 0.0169 + 44 0.00215 + 45 0.00251 + 46 0.00359 + + 21 101 20 0 + 0 0.0693 + 2 0.0396 + 4 0.0297 + 7 0.297 + 8 0.0297 + 12 0.0396 + 14 0.0099 + 15 0.0099 + 19 0.0099 + 21 0.0297 + 26 0.0396 + 29 0.0198 + 33 0.0396 + 35 0.0099 + 40 0.0693 + 41 0.208 + 42 0.0099 + 43 0.0099 + 44 0.0198 + 46 0.0099 + + 22 4 3 0 + 7 0.25 + 8 0.25 + 41 0.5 + + 28 6 5 0 + 7 0.167 + 15 0.167 + 26 0.167 + 40 0.333 + 41 0.167 + + 29 9 3 0 + 0 0.111 + 7 0.667 + 40 0.222 + + 30 711 25 0 + 0 0.0394 + 1 0.00141 + 2 0.0338 + 4 0.00422 + 7 0.422 + 8 0.00844 + 9 0.00141 + 12 0.0197 + 13 0.00141 + 15 0.00281 + 19 0.00422 + 21 0.0127 + 26 0.0352 + 29 0.038 + 30 0.00985 + 31 0.0155 + 32 0.00422 + 33 0.0113 + 34 0.00844 + 35 0.00281 + 40 0.148 + 41 0.152 + 42 0.0197 + 45 0.00141 + 46 0.00281 + + 31 547 23 0 + 0 0.0622 + 2 0.0329 + 3 0.00183 + 4 0.00366 + 7 0.419 + 8 0.00183 + 12 0.0347 + 13 0.00183 + 14 0.00183 + 15 0.00183 + 19 0.00366 + 21 0.0165 + 26 0.0548 + 29 0.00548 + 30 0.00914 + 31 0.00548 + 33 0.0219 + 34 0.00366 + 35 0.00548 + 40 0.163 + 41 0.126 + 42 0.0201 + 44 0.00366 + + 34 4 4 0 + 2 0.25 + 7 0.25 + 40 0.25 + 44 0.25 + + 35 2 2 0 + 5 0.5 + 7 0.5 + + 40 6 5 0 + 0 0.167 + 40 0.333 + 42 0.167 + 43 0.167 + 47 0.167 + + 41 22 10 0 + 0 0.0455 + 2 0.0455 + 12 0.0455 + 26 0.0455 + 29 0.136 + 31 0.0455 + 34 0.0455 + 40 0.273 + 41 0.227 + 43 0.0909 + + 42 5 2 0 + 7 0.2 + 40 0.8 + + 43 16 9 0 + 0 0.25 + 7 0.125 + 8 0.0625 + 12 0.0625 + 29 0.0625 + 33 0.0625 + 35 0.0625 + 40 0.125 + 41 0.188 + + 44 11 2 0 + 7 0.182 + 43 0.818 + + 45 138 8 0 + 0 0.0145 + 7 0.188 + 8 0.00725 + 21 0.00725 + 26 0.029 + 40 0.116 + 41 0.0725 + 46 0.565 + + 46 169 21 0 + 0 0.0592 + 2 0.0296 + 4 0.0178 + 7 0.325 + 8 0.00592 + 12 0.0237 + 15 0.00592 + 19 0.0118 + 21 0.0118 + 26 0.0237 + 29 0.0355 + 30 0.0296 + 31 0.0118 + 33 0.0355 + 34 0.0473 + 37 0.00592 + 40 0.148 + 41 0.142 + 42 0.0178 + 44 0.00592 + 45 0.00592 + + 47 13978 39 0 + 0 0.0505 + 1 0.000215 + 2 0.0552 + 3 0.0124 + 4 0.0107 + 6 0.000215 + 7 0.343 + 8 0.0098 + 9 0.00114 + 12 0.0152 + 13 0.00501 + 14 0.00157 + 15 0.00558 + 19 0.00622 + 20 0.000215 + 21 0.022 + 22 0.00172 + 23 7.15e-05 + 24 0.000358 + 25 0.000143 + 26 0.0519 + 28 0.00143 + 29 0.028 + 30 0.00959 + 31 0.01 + 32 0.00272 + 33 0.0132 + 34 0.00637 + 35 0.00265 + 37 0.00286 + 38 7.15e-05 + 40 0.131 + 41 0.166 + 42 0.0189 + 43 0.00365 + 44 0.0015 + 45 0.0015 + 46 0.00651 + 47 0.00136 + + 48 2092 30 0 + 0 0.0344 + 2 0.0191 + 3 0.000956 + 4 0.0086 + 5 0.000478 + 7 0.497 + 8 0.0196 + 12 0.012 + 13 0.00287 + 14 0.000478 + 15 0.00191 + 19 0.00335 + 20 0.000478 + 21 0.00956 + 24 0.000478 + 26 0.0531 + 28 0.000478 + 29 0.0129 + 30 0.0139 + 31 0.0167 + 33 0.0163 + 34 0.00717 + 35 0.000956 + 37 0.00239 + 40 0.132 + 41 0.106 + 42 0.0201 + 44 0.000956 + 45 0.00143 + 46 0.00478 + + 49 17 5 0 + 7 0.529 + 21 0.0588 + 30 0.0588 + 40 0.176 + 41 0.176 + + 54 152 19 0 + 0 0.0658 + 2 0.0263 + 4 0.00658 + 7 0.289 + 12 0.0263 + 13 0.00658 + 14 0.00658 + 15 0.0132 + 19 0.00658 + 21 0.0132 + 26 0.0132 + 29 0.132 + 31 0.00658 + 33 0.0132 + 34 0.0461 + 35 0.0132 + 40 0.158 + 41 0.151 + 45 0.00658 + + 55 2721 34 0 + 0 0.0978 + 1 0.000368 + 2 0.0298 + 3 0.0011 + 4 0.00257 + 7 0.27 + 8 0.00551 + 12 0.0305 + 13 0.00147 + 14 0.000735 + 15 0.00368 + 19 0.000735 + 21 0.0243 + 22 0.0011 + 24 0.000368 + 26 0.0724 + 28 0.000368 + 29 0.0592 + 30 0.00515 + 31 0.00368 + 32 0.00147 + 33 0.0287 + 34 0.00331 + 35 0.00147 + 37 0.00184 + 39 0.000368 + 40 0.166 + 41 0.16 + 42 0.0103 + 43 0.00221 + 44 0.0011 + 45 0.00845 + 46 0.00257 + 47 0.0011 + + 57 1 1 0 + 31 1 + + 58 31 13 0 + 0 0.0968 + 2 0.0323 + 4 0.0323 + 7 0.194 + 13 0.0645 + 21 0.0323 + 26 0.0323 + 29 0.0323 + 31 0.0645 + 33 0.0645 + 40 0.194 + 41 0.129 + 46 0.0323 + + 60 950 25 0 + 0 0.0137 + 2 0.0179 + 3 0.0621 + 4 0.0189 + 7 0.479 + 8 0.0211 + 9 0.0211 + 12 0.00211 + 13 0.00105 + 15 0.00316 + 21 0.0189 + 22 0.00632 + 26 0.0653 + 29 0.0105 + 30 0.00211 + 31 0.0105 + 32 0.00526 + 33 0.00211 + 34 0.00211 + 40 0.132 + 41 0.0705 + 42 0.00947 + 43 0.00421 + 44 0.02 + 46 0.00105 + + 68 43 12 0 + 0 0.0465 + 2 0.0233 + 7 0.186 + 8 0.0233 + 12 0.0233 + 26 0.0233 + 29 0.0465 + 31 0.0465 + 36 0.0233 + 40 0.279 + 41 0.233 + 42 0.0465 + + 14 55733 44 33 + 0 0.0834 + 1 0.000718 + 2 0.044 + 3 0.0017 + 4 0.0176 + 5 8.97e-05 + 7 0.251 + 8 0.0175 + 9 0.001 + 10 3.59e-05 + 12 0.0299 + 13 0.00215 + 14 0.000807 + 15 0.0023 + 16 3.59e-05 + 17 5.38e-05 + 18 3.59e-05 + 19 0.00468 + 20 0.000161 + 21 0.0335 + 22 0.00206 + 23 0.000126 + 24 0.000646 + 25 1.79e-05 + 26 0.0419 + 28 0.00355 + 29 0.0527 + 30 0.0145 + 31 0.0224 + 32 0.0385 + 33 0.00206 + 34 0.0131 + 35 0.00736 + 36 0.000467 + 37 0.00224 + 39 0.000323 + 40 0.144 + 41 0.13 + 42 0.0201 + 43 0.00169 + 44 0.00452 + 45 0.00237 + 46 0.00397 + 47 0.00106 + + 2 903 28 0 + 0 0.0709 + 2 0.0244 + 4 0.00443 + 7 0.199 + 8 0.00443 + 9 0.00221 + 12 0.0321 + 19 0.00554 + 21 0.0377 + 22 0.00221 + 26 0.0255 + 28 0.00111 + 29 0.0532 + 30 0.0166 + 31 0.0233 + 32 0.041 + 33 0.00775 + 34 0.0177 + 35 0.00443 + 36 0.00111 + 37 0.00221 + 40 0.229 + 41 0.142 + 42 0.031 + 43 0.00554 + 45 0.00111 + 46 0.00554 + 47 0.00886 + + 3 4221 37 0 + 0 0.0315 + 2 0.0334 + 4 0.129 + 7 0.211 + 8 0.0339 + 9 0.00379 + 12 0.00782 + 13 0.00355 + 14 0.000237 + 15 0.00498 + 16 0.000237 + 19 0.00498 + 20 0.000237 + 21 0.0576 + 22 0.00426 + 23 0.000237 + 25 0.000237 + 26 0.0431 + 28 0.00118 + 29 0.0206 + 30 0.00805 + 31 0.0199 + 32 0.00877 + 33 0.00142 + 34 0.00332 + 35 0.00284 + 36 0.000474 + 37 0.00118 + 39 0.000711 + 40 0.154 + 41 0.137 + 42 0.0566 + 43 0.00237 + 44 0.00877 + 45 0.000474 + 46 0.00118 + 47 0.00166 + + 4 5302 37 0 + 0 0.151 + 1 0.00132 + 2 0.0228 + 3 0.000566 + 4 0.00622 + 7 0.247 + 8 0.0104 + 9 0.000377 + 12 0.0541 + 13 0.0017 + 14 0.00189 + 15 0.00302 + 17 0.000189 + 19 0.0164 + 20 0.000377 + 21 0.0353 + 22 0.00113 + 23 0.000189 + 24 0.00207 + 26 0.0313 + 28 0.00453 + 29 0.0621 + 30 0.00962 + 31 0.0226 + 32 0.0732 + 33 0.00245 + 34 0.0143 + 35 0.00905 + 36 0.000566 + 37 0.00226 + 40 0.101 + 41 0.0934 + 42 0.0106 + 43 0.000943 + 44 0.0017 + 45 0.00245 + 46 0.00264 + + 6 7 5 0 + 7 0.429 + 26 0.143 + 31 0.143 + 40 0.143 + 44 0.143 + + 8 12828 41 0 + 0 0.075 + 1 0.00039 + 2 0.0472 + 3 0.000468 + 4 0.00834 + 5 7.8e-05 + 7 0.251 + 8 0.0159 + 9 0.000312 + 12 0.0288 + 13 0.00195 + 14 0.00101 + 15 0.0014 + 16 7.8e-05 + 17 7.8e-05 + 18 7.8e-05 + 19 0.00366 + 21 0.0241 + 22 0.00148 + 23 7.8e-05 + 24 0.000156 + 26 0.0391 + 28 0.00226 + 29 0.0366 + 30 0.0132 + 31 0.0214 + 32 0.029 + 33 0.00187 + 34 0.0136 + 35 0.0067 + 36 0.000546 + 37 0.00249 + 39 0.000702 + 40 0.18 + 41 0.153 + 42 0.0216 + 43 0.00164 + 44 0.00639 + 45 0.00226 + 46 0.00514 + 47 0.00156 + + 9 459 25 0 + 0 0.0566 + 1 0.00218 + 2 0.0501 + 4 0.00436 + 7 0.322 + 8 0.00871 + 12 0.0392 + 13 0.00654 + 15 0.00218 + 19 0.00654 + 21 0.0349 + 26 0.0588 + 28 0.00436 + 29 0.0174 + 30 0.0174 + 31 0.0109 + 32 0.0196 + 34 0.0131 + 35 0.00654 + 37 0.00436 + 40 0.15 + 41 0.146 + 42 0.0131 + 44 0.00218 + 46 0.00218 + + 10 269 24 0 + 0 0.126 + 2 0.0112 + 4 0.00372 + 7 0.216 + 8 0.0149 + 12 0.0595 + 13 0.00372 + 19 0.0186 + 21 0.0297 + 24 0.00372 + 26 0.0335 + 28 0.00372 + 29 0.0335 + 30 0.0297 + 31 0.0112 + 32 0.1 + 33 0.00743 + 34 0.00372 + 35 0.00372 + 40 0.0818 + 41 0.167 + 42 0.0186 + 43 0.00372 + 45 0.0149 + + 13 9556 39 0 + 0 0.0876 + 1 0.00115 + 2 0.0643 + 3 0.000837 + 4 0.0068 + 5 0.000105 + 7 0.187 + 8 0.0139 + 9 0.000733 + 12 0.0274 + 13 0.00199 + 14 0.000105 + 15 0.00199 + 18 0.000105 + 19 0.00199 + 20 0.000314 + 21 0.0331 + 22 0.00167 + 23 0.000105 + 24 0.000523 + 26 0.0328 + 28 0.00262 + 29 0.0671 + 30 0.013 + 31 0.0202 + 32 0.0419 + 33 0.0023 + 34 0.0142 + 35 0.0045 + 36 0.000209 + 37 0.00188 + 40 0.173 + 41 0.167 + 42 0.0168 + 43 0.00188 + 44 0.0023 + 45 0.0023 + 46 0.00366 + 47 0.000942 + + 14 538 26 0 + 0 0.0874 + 2 0.0502 + 4 0.00929 + 7 0.18 + 8 0.00929 + 10 0.00186 + 12 0.0297 + 13 0.00558 + 15 0.00186 + 21 0.0335 + 26 0.0372 + 28 0.00186 + 29 0.0967 + 30 0.00558 + 31 0.00929 + 32 0.0409 + 33 0.00372 + 34 0.00929 + 35 0.00558 + 40 0.19 + 41 0.139 + 42 0.0353 + 44 0.00186 + 45 0.00743 + 46 0.00558 + 47 0.00186 + + 15 2001 34 0 + 0 0.125 + 1 0.001 + 2 0.037 + 3 0.006 + 4 0.005 + 7 0.147 + 8 0.013 + 12 0.0335 + 13 0.0005 + 14 0.0015 + 15 0.0045 + 19 0.003 + 21 0.026 + 22 0.003 + 23 0.0005 + 26 0.039 + 28 0.0025 + 29 0.141 + 30 0.0155 + 31 0.015 + 32 0.0465 + 33 0.004 + 34 0.0145 + 35 0.008 + 37 0.0025 + 39 0.0005 + 40 0.14 + 41 0.133 + 42 0.0145 + 43 0.0025 + 44 0.0045 + 45 0.004 + 46 0.003 + 47 0.0015 + + 16 26 9 0 + 0 0.115 + 7 0.0769 + 26 0.115 + 29 0.269 + 32 0.0385 + 40 0.231 + 41 0.0769 + 42 0.0385 + 44 0.0385 + + 19 6 5 0 + 12 0.167 + 21 0.333 + 29 0.167 + 35 0.167 + 40 0.167 + + 20 1519 34 0 + 0 0.107 + 1 0.000658 + 2 0.0434 + 3 0.00132 + 4 0.0105 + 5 0.000658 + 7 0.244 + 8 0.00658 + 9 0.00132 + 12 0.0217 + 13 0.00263 + 14 0.00197 + 15 0.000658 + 19 0.00132 + 21 0.0421 + 22 0.00263 + 23 0.000658 + 24 0.00329 + 26 0.0737 + 28 0.0118 + 29 0.029 + 30 0.00592 + 31 0.0151 + 32 0.0263 + 33 0.00197 + 35 0.00263 + 37 0.00395 + 39 0.000658 + 40 0.185 + 41 0.132 + 42 0.0132 + 43 0.000658 + 45 0.00395 + 46 0.00197 + + 21 38 15 0 + 0 0.0789 + 2 0.0263 + 7 0.316 + 12 0.0263 + 21 0.0263 + 26 0.105 + 29 0.0263 + 30 0.0526 + 31 0.0526 + 32 0.0526 + 35 0.0526 + 40 0.0263 + 41 0.105 + 42 0.0263 + 46 0.0263 + + 23 2 1 0 + 21 1 + + 28 16 6 0 + 7 0.562 + 12 0.125 + 26 0.0625 + 28 0.125 + 32 0.0625 + 41 0.0625 + + 29 9 5 0 + 7 0.444 + 12 0.222 + 15 0.111 + 21 0.111 + 40 0.111 + + 30 480 24 0 + 0 0.0562 + 2 0.0542 + 4 0.00417 + 7 0.296 + 8 0.0104 + 12 0.0229 + 13 0.00208 + 15 0.00417 + 19 0.00417 + 21 0.0208 + 22 0.00208 + 26 0.0312 + 29 0.0521 + 30 0.00625 + 31 0.0146 + 32 0.0229 + 33 0.00208 + 34 0.0104 + 35 0.00417 + 39 0.00208 + 40 0.2 + 41 0.169 + 42 0.00625 + 46 0.00208 + + 31 394 24 0 + 0 0.0558 + 2 0.0508 + 4 0.00761 + 5 0.00254 + 7 0.289 + 8 0.0228 + 12 0.0431 + 19 0.00761 + 21 0.0305 + 26 0.0431 + 29 0.0203 + 30 0.0178 + 31 0.0152 + 32 0.0279 + 33 0.00254 + 34 0.0178 + 35 0.00761 + 40 0.15 + 41 0.142 + 42 0.0127 + 43 0.00254 + 44 0.0203 + 45 0.00508 + 46 0.00508 + + 34 3 2 0 + 7 0.667 + 44 0.333 + + 41 4 4 0 + 7 0.25 + 12 0.25 + 26 0.25 + 41 0.25 + + 42 3 3 0 + 7 0.333 + 40 0.333 + 46 0.333 + + 43 15 7 0 + 0 0.0667 + 2 0.133 + 7 0.0667 + 12 0.133 + 21 0.0667 + 40 0.133 + 41 0.4 + + 44 4 1 0 + 43 1 + + 45 61 6 0 + 0 0.0492 + 7 0.115 + 26 0.0328 + 40 0.148 + 41 0.0984 + 46 0.557 + + 46 98 17 0 + 0 0.0408 + 2 0.051 + 4 0.0102 + 7 0.214 + 8 0.0306 + 21 0.0102 + 26 0.0918 + 29 0.0102 + 30 0.0102 + 31 0.0306 + 32 0.0306 + 34 0.0612 + 35 0.0102 + 36 0.0102 + 40 0.163 + 41 0.173 + 42 0.051 + + 47 13576 41 0 + 0 0.0748 + 1 0.000737 + 2 0.0447 + 3 0.00464 + 4 0.00722 + 5 7.37e-05 + 7 0.329 + 8 0.018 + 9 0.00147 + 10 7.37e-05 + 12 0.0322 + 13 0.0025 + 14 0.000958 + 15 0.00214 + 17 7.37e-05 + 19 0.00412 + 20 0.000221 + 21 0.0351 + 22 0.00258 + 23 7.37e-05 + 24 0.000737 + 26 0.0542 + 28 0.00567 + 29 0.0577 + 30 0.022 + 31 0.0306 + 32 0.0463 + 33 0.00147 + 34 0.0171 + 35 0.0127 + 36 0.000737 + 37 0.00302 + 39 0.000221 + 40 0.0806 + 41 0.0854 + 42 0.0123 + 43 0.00125 + 44 0.00133 + 45 0.00243 + 46 0.00258 + 47 0.00081 + + 48 813 27 0 + 0 0.0652 + 1 0.00123 + 2 0.0271 + 4 0.00738 + 7 0.26 + 8 0.0726 + 9 0.00123 + 12 0.0123 + 15 0.00123 + 19 0.00369 + 21 0.0308 + 26 0.0308 + 28 0.00369 + 29 0.0246 + 30 0.0271 + 31 0.0308 + 32 0.0185 + 33 0.00123 + 34 0.00984 + 35 0.00615 + 40 0.194 + 41 0.143 + 42 0.016 + 43 0.00123 + 44 0.00123 + 45 0.00123 + 46 0.00861 + + 54 11 8 0 + 2 0.0909 + 7 0.0909 + 21 0.0909 + 26 0.0909 + 29 0.182 + 32 0.273 + 34 0.0909 + 40 0.0909 + + 55 1044 28 0 + 0 0.136 + 1 0.000958 + 2 0.0345 + 3 0.000958 + 4 0.00287 + 7 0.221 + 8 0.0125 + 12 0.0354 + 13 0.00192 + 15 0.000958 + 21 0.0172 + 22 0.00287 + 24 0.00192 + 26 0.0489 + 28 0.00479 + 29 0.0766 + 30 0.00958 + 31 0.00287 + 32 0.0326 + 33 0.00287 + 34 0.000958 + 35 0.000958 + 37 0.00192 + 40 0.199 + 41 0.126 + 42 0.0153 + 45 0.0067 + 46 0.000958 + + 58 20 11 0 + 0 0.1 + 1 0.05 + 2 0.1 + 7 0.15 + 8 0.05 + 21 0.05 + 31 0.05 + 40 0.2 + 41 0.15 + 42 0.05 + 44 0.05 + + 60 1381 27 0 + 0 0.034 + 2 0.021 + 4 0.0587 + 7 0.254 + 8 0.0391 + 9 0.00145 + 12 0.0101 + 13 0.00217 + 14 0.000724 + 15 0.00579 + 19 0.00145 + 21 0.0434 + 22 0.00362 + 26 0.0268 + 29 0.0224 + 30 0.0101 + 31 0.0203 + 32 0.00507 + 33 0.000724 + 34 0.00434 + 35 0.00217 + 40 0.177 + 41 0.159 + 42 0.0485 + 43 0.00362 + 44 0.0434 + 46 0.000724 + + 68 113 16 0 + 0 0.0619 + 2 0.0265 + 4 0.00885 + 7 0.142 + 8 0.00885 + 12 0.0177 + 21 0.0531 + 26 0.00885 + 29 0.0442 + 31 0.00885 + 32 0.0177 + 33 0.00885 + 34 0.0354 + 40 0.363 + 41 0.177 + 42 0.0177 + + 15 38960 40 26 + 0 0.0826 + 1 7.7e-05 + 2 0.0494 + 3 0.039 + 4 0.00503 + 5 5.13e-05 + 6 2.57e-05 + 7 0.091 + 8 0.00395 + 9 0.000231 + 12 0.0263 + 13 0.00357 + 14 0.00113 + 15 0.00572 + 17 2.57e-05 + 18 0.000642 + 19 0.00167 + 20 0.000282 + 21 0.0216 + 22 0.000796 + 24 7.7e-05 + 26 0.0177 + 28 0.0021 + 29 0.128 + 30 0.00359 + 31 0.00182 + 32 0.00347 + 33 0.0401 + 34 0.00228 + 35 0.00139 + 37 0.00126 + 39 0.000616 + 40 0.125 + 41 0.3 + 42 0.016 + 43 0.00726 + 44 0.00667 + 45 0.00195 + 46 0.00385 + 47 0.00316 + + 2 1047 29 0 + 0 0.0965 + 2 0.0506 + 4 0.00573 + 7 0.085 + 8 0.00669 + 12 0.022 + 13 0.00382 + 14 0.000955 + 15 0.00287 + 18 0.000955 + 19 0.000955 + 21 0.0172 + 26 0.0086 + 28 0.00191 + 29 0.11 + 30 0.00382 + 32 0.0181 + 33 0.0162 + 34 0.00573 + 35 0.000955 + 37 0.000955 + 40 0.226 + 41 0.29 + 42 0.0162 + 43 0.000955 + 44 0.00191 + 45 0.000955 + 46 0.00287 + 47 0.000955 + + 3 26 9 0 + 2 0.0385 + 3 0.0385 + 7 0.154 + 12 0.0385 + 15 0.0385 + 29 0.192 + 40 0.0769 + 41 0.385 + 42 0.0385 + + 4 2090 35 0 + 0 0.116 + 2 0.0656 + 3 0.0172 + 4 0.0067 + 7 0.201 + 8 0.0067 + 9 0.000957 + 12 0.0536 + 13 0.00335 + 14 0.00431 + 15 0.011 + 19 0.00239 + 20 0.00144 + 21 0.0292 + 22 0.00191 + 24 0.000478 + 26 0.0316 + 28 0.00574 + 29 0.0914 + 30 0.00526 + 31 0.00526 + 32 0.00526 + 33 0.0421 + 34 0.00431 + 35 0.00335 + 37 0.000957 + 39 0.000478 + 40 0.106 + 41 0.15 + 42 0.011 + 43 0.00144 + 44 0.00383 + 45 0.00335 + 46 0.00383 + 47 0.00287 + + 6 28 8 0 + 0 0.0714 + 2 0.179 + 7 0.0357 + 29 0.107 + 40 0.0714 + 41 0.464 + 42 0.0357 + 44 0.0357 + + 7 37 9 0 + 2 0.0811 + 3 0.0811 + 12 0.027 + 26 0.027 + 29 0.0541 + 40 0.378 + 41 0.27 + 42 0.027 + 46 0.0541 + + 8 578 29 0 + 0 0.045 + 2 0.0346 + 3 0.0225 + 4 0.00865 + 7 0.133 + 8 0.00346 + 9 0.00173 + 12 0.026 + 13 0.00173 + 14 0.00346 + 15 0.00173 + 19 0.00519 + 21 0.00519 + 26 0.0242 + 28 0.00346 + 29 0.026 + 30 0.00692 + 31 0.00173 + 32 0.00692 + 33 0.0173 + 34 0.0104 + 35 0.00346 + 37 0.00519 + 40 0.253 + 41 0.325 + 42 0.0138 + 44 0.00346 + 46 0.00173 + 47 0.00519 + + 9 2 2 0 + 0 0.5 + 33 0.5 + + 13 164 20 0 + 0 0.0793 + 2 0.0244 + 3 0.0122 + 7 0.0976 + 12 0.0122 + 13 0.0122 + 15 0.0122 + 21 0.0183 + 26 0.0122 + 29 0.122 + 30 0.0061 + 31 0.0061 + 33 0.0427 + 34 0.0061 + 37 0.0122 + 40 0.122 + 41 0.317 + 42 0.0427 + 44 0.0305 + 46 0.0122 + + 15 19923 36 0 + 0 0.0786 + 2 0.0509 + 3 0.00181 + 4 0.00467 + 7 0.0876 + 8 0.00301 + 9 0.000151 + 12 0.0213 + 13 0.00221 + 14 0.000803 + 15 0.00427 + 18 0.000452 + 19 0.00136 + 20 0.000201 + 21 0.0202 + 22 0.000803 + 24 5.02e-05 + 26 0.013 + 28 0.00176 + 29 0.151 + 30 0.00351 + 31 0.00131 + 32 0.00296 + 33 0.0504 + 34 0.00171 + 35 0.00161 + 37 0.000653 + 39 0.000452 + 40 0.113 + 41 0.34 + 42 0.0163 + 43 0.00407 + 44 0.0102 + 45 0.00216 + 46 0.00371 + 47 0.00386 + + 16 534 23 0 + 0 0.0337 + 2 0.073 + 4 0.00375 + 7 0.0974 + 8 0.00187 + 12 0.015 + 13 0.00375 + 15 0.00187 + 21 0.00749 + 26 0.0169 + 28 0.00187 + 29 0.152 + 30 0.00562 + 32 0.00375 + 33 0.0169 + 34 0.00187 + 35 0.00375 + 39 0.00187 + 40 0.204 + 41 0.307 + 42 0.0393 + 44 0.00187 + 47 0.00562 + + 20 11 8 0 + 0 0.0909 + 2 0.0909 + 7 0.182 + 26 0.0909 + 31 0.0909 + 40 0.273 + 41 0.0909 + 44 0.0909 + + 21 37 10 0 + 0 0.0541 + 2 0.027 + 7 0.108 + 13 0.0541 + 15 0.0541 + 29 0.027 + 33 0.027 + 40 0.243 + 41 0.378 + 42 0.027 + + 30 7 3 0 + 0 0.143 + 40 0.571 + 41 0.286 + + 31 8 7 0 + 2 0.125 + 7 0.25 + 12 0.125 + 33 0.125 + 34 0.125 + 41 0.125 + 42 0.125 + + 40 23 10 0 + 2 0.13 + 6 0.0435 + 7 0.13 + 29 0.087 + 33 0.0435 + 40 0.0435 + 41 0.391 + 43 0.0435 + 44 0.0435 + 47 0.0435 + + 41 51 7 0 + 2 0.0392 + 3 0.098 + 7 0.0196 + 29 0.0588 + 40 0.275 + 41 0.471 + 42 0.0392 + + 43 10 4 0 + 0 0.3 + 2 0.2 + 29 0.1 + 41 0.4 + + 44 8 2 0 + 41 0.125 + 43 0.875 + + 45 19 5 0 + 3 0.0526 + 7 0.211 + 40 0.105 + 41 0.211 + 46 0.421 + + 46 22 9 0 + 0 0.0909 + 7 0.0455 + 26 0.0455 + 29 0.0455 + 33 0.0455 + 40 0.0909 + 41 0.545 + 42 0.0455 + 46 0.0455 + + 47 14081 39 0 + 0 0.0871 + 1 0.000213 + 2 0.0447 + 3 0.101 + 4 0.0054 + 5 0.000142 + 7 0.076 + 8 0.0049 + 9 0.000142 + 12 0.0304 + 13 0.0054 + 14 0.00107 + 15 0.00746 + 17 7.1e-05 + 18 0.00107 + 19 0.00206 + 20 0.000284 + 21 0.0248 + 22 0.000781 + 24 7.1e-05 + 26 0.0229 + 28 0.00213 + 29 0.108 + 30 0.0032 + 31 0.00206 + 32 0.00284 + 33 0.0295 + 34 0.0022 + 35 0.00071 + 37 0.00199 + 39 0.000923 + 40 0.127 + 41 0.266 + 42 0.0149 + 43 0.0135 + 44 0.00241 + 45 0.00178 + 46 0.00355 + 47 0.0022 + + 48 43 13 0 + 0 0.14 + 2 0.0698 + 3 0.0233 + 7 0.14 + 8 0.0233 + 12 0.0698 + 26 0.0465 + 29 0.0698 + 31 0.0233 + 33 0.0233 + 40 0.186 + 41 0.163 + 42 0.0233 + + 54 20 6 0 + 0 0.05 + 7 0.3 + 29 0.1 + 33 0.05 + 40 0.3 + 41 0.2 + + 55 144 17 0 + 0 0.0347 + 2 0.0347 + 3 0.0139 + 7 0.236 + 12 0.0208 + 13 0.00694 + 21 0.0139 + 26 0.0208 + 29 0.181 + 30 0.0139 + 33 0.0347 + 40 0.111 + 41 0.25 + 42 0.00694 + 44 0.00694 + 46 0.00694 + 47 0.00694 + + 58 27 6 0 + 7 0.037 + 12 0.037 + 31 0.037 + 33 0.0741 + 40 0.593 + 41 0.222 + + 60 6 5 0 + 0 0.167 + 3 0.167 + 7 0.333 + 9 0.167 + 14 0.167 + + 16 1553 34 14 + 0 0.122 + 2 0.0599 + 3 0.00129 + 4 0.00515 + 5 0.000644 + 7 0.109 + 8 0.00515 + 9 0.000644 + 12 0.0399 + 13 0.00515 + 14 0.00193 + 15 0.00451 + 19 0.00258 + 20 0.000644 + 21 0.0258 + 22 0.000644 + 26 0.0232 + 28 0.000644 + 29 0.111 + 30 0.0058 + 31 0.00386 + 32 0.0367 + 33 0.0155 + 34 0.000644 + 35 0.0167 + 36 0.000644 + 40 0.127 + 41 0.214 + 42 0.0328 + 43 0.00386 + 44 0.00386 + 45 0.00193 + 46 0.00386 + 47 0.0135 + + 2 42 15 0 + 0 0.0714 + 2 0.0238 + 7 0.0952 + 19 0.0238 + 21 0.0714 + 28 0.0238 + 29 0.0238 + 31 0.0238 + 33 0.0238 + 35 0.0238 + 40 0.143 + 41 0.31 + 42 0.0714 + 45 0.0238 + 47 0.0476 + + 3 16 9 0 + 0 0.125 + 2 0.125 + 7 0.25 + 8 0.0625 + 12 0.0625 + 30 0.0625 + 31 0.0625 + 35 0.0625 + 41 0.188 + + 4 295 23 0 + 0 0.183 + 2 0.0542 + 4 0.00339 + 5 0.00339 + 7 0.0881 + 8 0.0136 + 12 0.0746 + 13 0.0102 + 19 0.00339 + 20 0.00339 + 21 0.0475 + 26 0.0373 + 29 0.119 + 30 0.0102 + 31 0.00339 + 32 0.0847 + 33 0.00339 + 35 0.0102 + 40 0.0915 + 41 0.132 + 42 0.0169 + 43 0.00339 + 45 0.00339 + + 8 87 15 0 + 0 0.207 + 2 0.023 + 7 0.115 + 12 0.0345 + 21 0.0115 + 26 0.023 + 29 0.046 + 31 0.0115 + 32 0.0805 + 34 0.0115 + 35 0.069 + 36 0.0115 + 40 0.149 + 41 0.161 + 42 0.046 + + 13 6 5 0 + 0 0.167 + 12 0.167 + 26 0.167 + 30 0.167 + 41 0.333 + + 15 766 24 0 + 0 0.0888 + 2 0.0614 + 3 0.00261 + 4 0.00522 + 7 0.101 + 8 0.00131 + 12 0.017 + 13 0.00392 + 15 0.00261 + 21 0.0157 + 22 0.00131 + 26 0.0144 + 29 0.144 + 30 0.00131 + 32 0.00653 + 33 0.0261 + 35 0.00653 + 40 0.148 + 41 0.273 + 42 0.0405 + 43 0.00392 + 44 0.00783 + 46 0.00522 + 47 0.0235 + + 16 35 13 0 + 0 0.0857 + 2 0.0286 + 4 0.0286 + 7 0.0857 + 12 0.0571 + 21 0.0571 + 26 0.0286 + 29 0.0286 + 32 0.0286 + 33 0.0286 + 40 0.0857 + 41 0.343 + 42 0.114 + + 21 5 4 0 + 0 0.2 + 2 0.2 + 7 0.2 + 42 0.4 + + 30 2 2 0 + 2 0.5 + 32 0.5 + + 45 1 1 0 + 46 1 + + 47 257 24 0 + 0 0.128 + 2 0.0778 + 4 0.00389 + 7 0.152 + 8 0.00778 + 9 0.00389 + 12 0.0623 + 13 0.00778 + 14 0.0117 + 15 0.0195 + 19 0.00778 + 21 0.0272 + 26 0.0389 + 29 0.0739 + 30 0.00778 + 31 0.00778 + 32 0.0661 + 35 0.0311 + 40 0.105 + 41 0.136 + 42 0.00778 + 43 0.00778 + 45 0.00389 + 46 0.00389 + + 48 8 7 0 + 7 0.125 + 12 0.125 + 32 0.125 + 33 0.125 + 40 0.125 + 41 0.25 + 47 0.125 + + 55 10 7 0 + 4 0.1 + 7 0.2 + 12 0.1 + 21 0.1 + 29 0.1 + 40 0.3 + 41 0.1 + + 60 11 6 0 + 0 0.273 + 7 0.0909 + 30 0.0909 + 35 0.182 + 40 0.182 + 41 0.182 + + 17 3 1 0 + 4 1 + + 18 8656 34 12 + 0 0.00508 + 2 0.0067 + 3 0.0261 + 4 0.000231 + 6 0.000231 + 7 0.00208 + 8 0.207 + 9 0.00173 + 10 0.026 + 12 0.00104 + 13 0.417 + 14 0.13 + 15 0.104 + 16 0.00381 + 19 0.000116 + 21 0.00555 + 22 0.000347 + 23 0.00208 + 26 0.000231 + 28 0.000347 + 29 0.00439 + 30 0.0117 + 31 0.00739 + 32 0.000462 + 33 0.00104 + 38 0.000578 + 39 0.0101 + 40 0.00485 + 41 0.00601 + 42 0.000231 + 43 0.000924 + 44 0.000231 + 45 0.0117 + 46 0.000231 + + 3 25 6 0 + 3 0.04 + 8 0.36 + 13 0.36 + 14 0.12 + 40 0.08 + 41 0.04 + + 6 2 2 0 + 13 0.5 + 46 0.5 + + 8 12 4 0 + 13 0.417 + 14 0.417 + 15 0.0833 + 29 0.0833 + + 13 2900 22 0 + 2 0.00103 + 3 0.0238 + 6 0.00069 + 7 0.00103 + 8 0.236 + 9 0.00172 + 10 0.04 + 13 0.477 + 14 0.132 + 15 0.0441 + 16 0.00103 + 21 0.00483 + 22 0.000345 + 23 0.0031 + 30 0.00793 + 31 0.00655 + 39 0.00931 + 40 0.00207 + 41 0.000345 + 42 0.000345 + 43 0.00069 + 45 0.00724 + + 14 544 15 0 + 2 0.00368 + 3 0.011 + 7 0.00184 + 8 0.0974 + 9 0.00184 + 10 0.00184 + 13 0.417 + 14 0.415 + 15 0.0129 + 23 0.00184 + 26 0.00368 + 30 0.0147 + 31 0.00735 + 40 0.00184 + 45 0.00735 + + 15 5059 31 0 + 0 0.0083 + 2 0.0103 + 3 0.0289 + 4 0.000395 + 7 0.00277 + 8 0.205 + 9 0.00178 + 10 0.0213 + 12 0.00178 + 13 0.381 + 14 0.0996 + 15 0.147 + 16 0.00534 + 19 0.000198 + 21 0.00672 + 22 0.000395 + 23 0.00158 + 29 0.00731 + 30 0.0134 + 31 0.00791 + 32 0.000791 + 33 0.00178 + 38 0.000988 + 39 0.0117 + 40 0.00633 + 41 0.00988 + 42 0.000198 + 43 0.00119 + 44 0.000395 + 45 0.015 + 46 0.000198 + + 16 66 9 0 + 0 0.0152 + 3 0.0303 + 8 0.121 + 13 0.545 + 14 0.0455 + 15 0.167 + 16 0.0455 + 30 0.0152 + 31 0.0152 + + 21 3 2 0 + 13 0.667 + 40 0.333 + + 28 1 1 0 + 0 1 + + 47 4 2 0 + 15 0.25 + 28 0.75 + + 55 3 2 0 + 2 0.333 + 13 0.667 + + 57 19 6 0 + 3 0.0526 + 8 0.0526 + 13 0.421 + 15 0.368 + 30 0.0526 + 39 0.0526 + + 19 17366 41 5 + 0 0.301 + 1 0.000173 + 2 0.0076 + 3 0.000864 + 4 0.012 + 5 0.000115 + 6 5.76e-05 + 7 0.0348 + 8 0.00749 + 9 0.00132 + 10 0.000115 + 12 0.124 + 13 0.00202 + 14 0.000749 + 15 0.000576 + 17 0.000115 + 18 0.000633 + 19 0.00161 + 20 0.000115 + 21 0.0537 + 22 0.00155 + 23 0.000173 + 24 0.00455 + 26 0.0163 + 28 0.0117 + 29 0.166 + 30 0.00242 + 31 0.0019 + 32 0.0774 + 33 0.106 + 34 0.000288 + 35 0.000633 + 37 0.00121 + 39 0.000288 + 40 0.0313 + 41 0.021 + 42 0.00334 + 43 0.000461 + 44 0.000921 + 45 0.00346 + 46 0.000461 + + 4 12 6 0 + 0 0.417 + 7 0.0833 + 12 0.25 + 29 0.0833 + 33 0.0833 + 40 0.0833 + + 13 2 2 0 + 26 0.5 + 40 0.5 + + 15 4 4 0 + 0 0.25 + 29 0.25 + 33 0.25 + 37 0.25 + + 21 3 2 0 + 12 0.667 + 41 0.333 + + 44 2 1 0 + 43 1 + + 20 34 11 0 + 0 0.0882 + 1 0.0588 + 13 0.0882 + 15 0.0294 + 21 0.0294 + 30 0.235 + 39 0.324 + 40 0.0294 + 41 0.0588 + 42 0.0294 + 43 0.0294 + + 21 674 33 12 + 0 0.049 + 2 0.0208 + 3 0.0089 + 4 0.0831 + 6 0.00148 + 7 0.2 + 8 0.0386 + 9 0.0134 + 12 0.0119 + 13 0.0326 + 14 0.0208 + 15 0.0208 + 19 0.0163 + 20 0.00148 + 21 0.0371 + 22 0.0089 + 26 0.0252 + 28 0.00297 + 29 0.00445 + 30 0.00593 + 31 0.00742 + 32 0.00445 + 33 0.0104 + 34 0.00148 + 37 0.00148 + 39 0.0089 + 40 0.168 + 41 0.169 + 42 0.0178 + 43 0.00148 + 44 0.00297 + 46 0.00148 + 47 0.00148 + + 2 50 13 0 + 3 0.02 + 4 0.38 + 8 0.02 + 9 0.02 + 13 0.14 + 14 0.08 + 15 0.1 + 21 0.06 + 28 0.02 + 39 0.02 + 40 0.06 + 41 0.06 + 42 0.02 + + 3 49 11 0 + 2 0.0408 + 3 0.0204 + 7 0.0612 + 8 0.0204 + 13 0.0816 + 29 0.0204 + 37 0.0204 + 40 0.571 + 41 0.122 + 42 0.0204 + 47 0.0204 + + 4 39 12 0 + 0 0.0256 + 4 0.0256 + 6 0.0256 + 7 0.0513 + 8 0.359 + 9 0.179 + 21 0.0256 + 22 0.154 + 30 0.0256 + 33 0.0256 + 40 0.0769 + 41 0.0256 + + 13 84 16 0 + 0 0.0714 + 2 0.0476 + 7 0.202 + 12 0.0119 + 13 0.0119 + 14 0.0119 + 19 0.0238 + 21 0.0238 + 26 0.0476 + 31 0.0119 + 33 0.0357 + 40 0.19 + 41 0.226 + 42 0.0595 + 44 0.0119 + 46 0.0119 + + 14 20 6 0 + 7 0.1 + 15 0.05 + 32 0.05 + 40 0.45 + 41 0.3 + 42 0.05 + + 15 7 5 0 + 2 0.143 + 29 0.143 + 40 0.143 + 41 0.429 + 42 0.143 + + 21 46 11 0 + 4 0.0435 + 7 0.674 + 8 0.0217 + 15 0.0217 + 19 0.0435 + 21 0.0435 + 26 0.0217 + 30 0.0217 + 31 0.0217 + 40 0.0652 + 41 0.0217 + + 41 60 12 0 + 3 0.05 + 4 0.333 + 7 0.0167 + 8 0.1 + 9 0.0167 + 13 0.117 + 14 0.117 + 15 0.0833 + 20 0.0167 + 21 0.1 + 33 0.0167 + 41 0.0333 + + 42 7 2 0 + 4 0.857 + 15 0.143 + + 47 289 26 0 + 0 0.0865 + 2 0.0242 + 3 0.00346 + 4 0.0242 + 7 0.263 + 8 0.0104 + 12 0.0242 + 13 0.0104 + 14 0.00346 + 15 0.00346 + 19 0.0242 + 21 0.0138 + 26 0.0346 + 28 0.00346 + 29 0.00346 + 30 0.00692 + 31 0.0104 + 32 0.00692 + 33 0.00692 + 34 0.00346 + 39 0.0173 + 40 0.163 + 41 0.235 + 42 0.0104 + 43 0.00346 + 44 0.00346 + + 49 2 2 0 + 4 0.5 + 14 0.5 + + 55 10 4 0 + 21 0.5 + 26 0.1 + 40 0.1 + 41 0.3 + + 22 48 11 2 + 2 0.0625 + 7 0.521 + 8 0.0417 + 12 0.0208 + 21 0.0208 + 29 0.0208 + 31 0.0208 + 37 0.0208 + 40 0.0833 + 41 0.167 + 42 0.0208 + + 4 2 2 0 + 8 0.5 + 40 0.5 + + 14 2 2 0 + 29 0.5 + 40 0.5 + + 23 19 8 1 + 7 0.579 + 8 0.0526 + 19 0.0526 + 21 0.105 + 29 0.0526 + 31 0.0526 + 40 0.0526 + 41 0.0526 + + 4 4 4 0 + 8 0.25 + 31 0.25 + 40 0.25 + 41 0.25 + + 24 8 3 0 + 7 0.5 + 40 0.25 + 41 0.25 + + 25 13 2 0 + 3 0.0769 + 42 0.923 + + 26 52 5 0 + 3 0.808 + 14 0.0192 + 15 0.0192 + 28 0.0385 + 39 0.115 + + 27 6 4 0 + 40 0.333 + 41 0.167 + 42 0.333 + 46 0.167 + + 28 92 16 2 + 0 0.0109 + 2 0.0326 + 4 0.087 + 7 0.424 + 8 0.0326 + 13 0.0109 + 15 0.0109 + 21 0.0435 + 26 0.0761 + 29 0.0217 + 40 0.0978 + 41 0.087 + 42 0.0217 + 45 0.0109 + 46 0.0217 + 47 0.0109 + + 13 5 4 0 + 7 0.2 + 26 0.4 + 29 0.2 + 45 0.2 + + 21 3 3 0 + 4 0.333 + 7 0.333 + 47 0.333 + + 29 6 5 0 + 4 0.167 + 7 0.333 + 8 0.167 + 29 0.167 + 33 0.167 + + 30 261 26 5 + 0 0.069 + 2 0.0307 + 3 0.00383 + 4 0.00766 + 7 0.429 + 8 0.0192 + 12 0.0268 + 13 0.00383 + 14 0.00383 + 19 0.00383 + 21 0.0307 + 22 0.00383 + 26 0.0307 + 29 0.023 + 30 0.00383 + 31 0.00766 + 32 0.00383 + 33 0.0153 + 37 0.00383 + 39 0.0115 + 40 0.138 + 41 0.0958 + 42 0.0153 + 43 0.00383 + 44 0.00383 + 46 0.0115 + + 2 9 3 0 + 7 0.778 + 21 0.111 + 40 0.111 + + 4 47 12 0 + 0 0.191 + 2 0.0213 + 3 0.0213 + 7 0.277 + 12 0.106 + 21 0.0426 + 29 0.0426 + 33 0.0851 + 39 0.0638 + 40 0.0426 + 41 0.0638 + 42 0.0426 + + 8 17 8 0 + 7 0.353 + 12 0.0588 + 21 0.0588 + 26 0.0588 + 29 0.0588 + 31 0.0588 + 40 0.118 + 41 0.235 + + 13 28 11 0 + 0 0.0357 + 2 0.0714 + 4 0.0357 + 7 0.536 + 8 0.0357 + 13 0.0357 + 14 0.0357 + 22 0.0357 + 26 0.0714 + 41 0.0714 + 44 0.0357 + + 47 136 19 0 + 0 0.0588 + 2 0.0294 + 4 0.00735 + 7 0.397 + 8 0.0221 + 12 0.00735 + 19 0.00735 + 21 0.0294 + 26 0.0368 + 29 0.0147 + 30 0.00735 + 31 0.00735 + 32 0.00735 + 37 0.00735 + 40 0.206 + 41 0.11 + 42 0.0147 + 43 0.00735 + 46 0.0221 + + 31 60 15 7 + 0 0.0333 + 2 0.0333 + 3 0.0167 + 4 0.0167 + 7 0.0833 + 12 0.05 + 14 0.0167 + 24 0.0167 + 26 0.0333 + 29 0.0833 + 30 0.0167 + 39 0.483 + 40 0.0667 + 41 0.0333 + 45 0.0167 + + 3 2 2 0 + 2 0.5 + 14 0.5 + + 4 33 6 0 + 0 0.0303 + 2 0.0303 + 3 0.0303 + 12 0.0303 + 39 0.848 + 40 0.0303 + + 13 7 6 0 + 4 0.143 + 7 0.286 + 12 0.143 + 26 0.143 + 41 0.143 + 45 0.143 + + 15 2 1 0 + 29 1 + + 21 2 2 0 + 7 0.5 + 41 0.5 + + 47 8 5 0 + 0 0.125 + 12 0.125 + 24 0.125 + 29 0.375 + 40 0.25 + + 55 2 2 0 + 26 0.5 + 30 0.5 + + 32 3 3 0 + 0 0.333 + 32 0.333 + 33 0.333 + + 33 65 17 5 + 0 0.0154 + 3 0.0462 + 4 0.169 + 7 0.138 + 8 0.0923 + 10 0.0154 + 13 0.0154 + 14 0.0308 + 19 0.0615 + 21 0.0308 + 22 0.0154 + 26 0.108 + 30 0.0154 + 34 0.0154 + 40 0.0154 + 41 0.2 + 45 0.0154 + + 2 6 3 0 + 4 0.5 + 7 0.333 + 8 0.167 + + 13 24 10 0 + 4 0.125 + 7 0.125 + 8 0.0417 + 13 0.0417 + 14 0.0417 + 19 0.0833 + 21 0.0417 + 26 0.167 + 34 0.0417 + 41 0.292 + + 14 3 3 0 + 8 0.333 + 19 0.333 + 45 0.333 + + 15 8 6 0 + 0 0.125 + 3 0.25 + 4 0.125 + 7 0.125 + 8 0.25 + 41 0.125 + + 47 17 12 0 + 3 0.0588 + 4 0.0588 + 7 0.176 + 8 0.0588 + 10 0.0588 + 19 0.0588 + 21 0.0588 + 22 0.0588 + 26 0.0588 + 30 0.0588 + 40 0.0588 + 41 0.235 + + 34 58 6 0 + 0 0.259 + 4 0.0172 + 12 0.379 + 21 0.0345 + 29 0.19 + 33 0.121 + + 35 6 4 0 + 0 0.333 + 26 0.167 + 40 0.333 + 41 0.167 + + 39 1790 1 0 + 3 1 + + 40 1001 17 7 + 0 0.000999 + 3 0.002 + 4 0.000999 + 12 0.000999 + 13 0.000999 + 14 0.002 + 15 0.00599 + 21 0.000999 + 26 0.000999 + 31 0.000999 + 35 0.000999 + 42 0.004 + 43 0.0679 + 44 0.0509 + 45 0.000999 + 46 0.014 + 47 0.844 + + 3 10 3 0 + 21 0.1 + 26 0.1 + 47 0.8 + + 15 187 8 0 + 0 0.00535 + 12 0.00535 + 15 0.0321 + 43 0.337 + 44 0.267 + 45 0.00535 + 46 0.0214 + 47 0.326 + + 55 492 11 0 + 3 0.00407 + 4 0.00203 + 13 0.00203 + 14 0.00407 + 31 0.00203 + 35 0.00203 + 42 0.00813 + 43 0.00203 + 44 0.00203 + 46 0.0061 + 47 0.965 + + 57 129 3 0 + 43 0.00775 + 46 0.0233 + 47 0.969 + + 62 40 1 0 + 47 1 + + 67 1 1 0 + 46 1 + + 69 35 1 0 + 47 1 + + 41 20629 39 17 + 0 0.0576 + 1 0.000145 + 2 0.0758 + 3 0.0369 + 4 0.147 + 6 0.000436 + 7 0.0581 + 8 0.0435 + 9 0.00145 + 10 0.000436 + 12 0.0155 + 13 0.0636 + 14 0.0132 + 15 0.126 + 16 0.00097 + 17 4.85e-05 + 19 0.00102 + 20 0.00305 + 21 0.044 + 22 0.000291 + 23 0.000242 + 24 0.000145 + 26 0.01 + 27 4.85e-05 + 28 0.000436 + 29 0.0714 + 30 0.0248 + 31 0.0326 + 32 0.00315 + 33 0.0252 + 34 0.0794 + 35 0.028 + 36 0.00499 + 37 0.014 + 39 0.00155 + 42 0.000145 + 44 0.000339 + 45 0.00344 + 46 0.0109 + + 2 7 3 0 + 7 0.429 + 21 0.429 + 22 0.143 + + 3 358 9 0 + 0 0.0112 + 2 0.00559 + 3 0.888 + 4 0.00279 + 7 0.0447 + 26 0.0196 + 31 0.0196 + 32 0.00559 + 46 0.00279 + + 13 26 10 0 + 3 0.0385 + 4 0.0385 + 6 0.0385 + 7 0.269 + 21 0.0385 + 26 0.0385 + 29 0.0385 + 30 0.0385 + 34 0.0385 + 46 0.423 + + 14 11 6 0 + 0 0.0909 + 6 0.0909 + 7 0.0909 + 13 0.0909 + 21 0.273 + 46 0.364 + + 15 18 9 0 + 0 0.0556 + 2 0.0556 + 3 0.0556 + 4 0.0556 + 7 0.278 + 14 0.0556 + 21 0.111 + 29 0.278 + 33 0.0556 + + 27 1 1 0 + 46 1 + + 48 242 18 0 + 0 0.211 + 2 0.0165 + 4 0.0207 + 7 0.128 + 8 0.0165 + 12 0.0868 + 13 0.0165 + 15 0.00826 + 21 0.062 + 22 0.00413 + 26 0.0372 + 29 0.062 + 30 0.0207 + 31 0.215 + 32 0.0124 + 33 0.0579 + 34 0.0207 + 37 0.00413 + + 49 44 13 0 + 0 0.136 + 2 0.159 + 4 0.182 + 7 0.205 + 12 0.0227 + 13 0.0227 + 15 0.0682 + 21 0.0455 + 29 0.0227 + 30 0.0455 + 31 0.0455 + 32 0.0227 + 46 0.0227 + + 55 17277 39 0 + 0 0.0341 + 1 0.000116 + 2 0.0865 + 3 0.0252 + 4 0.17 + 6 0.000347 + 7 0.0512 + 8 0.0478 + 9 0.00145 + 10 0.000463 + 12 0.00666 + 13 0.0737 + 14 0.0153 + 15 0.148 + 16 0.00116 + 17 5.79e-05 + 19 0.000868 + 20 0.00359 + 21 0.0416 + 22 0.000232 + 23 0.000289 + 24 5.79e-05 + 26 0.007 + 27 5.79e-05 + 28 0.000405 + 29 0.0587 + 30 0.0212 + 31 0.0301 + 32 0.00127 + 33 0.0201 + 34 0.0843 + 35 0.0312 + 36 0.00561 + 37 0.0149 + 39 0.00185 + 42 0.000174 + 44 0.000347 + 45 0.00313 + 46 0.0102 + + 56 4 3 0 + 12 0.25 + 30 0.25 + 46 0.5 + + 57 1015 30 0 + 0 0.106 + 1 0.000985 + 2 0.0177 + 3 0.00394 + 4 0.0236 + 6 0.000985 + 7 0.164 + 8 0.0433 + 9 0.00394 + 12 0.0286 + 13 0.00591 + 14 0.00197 + 15 0.0197 + 20 0.000985 + 21 0.07 + 24 0.000985 + 26 0.0424 + 28 0.000985 + 29 0.0562 + 30 0.1 + 31 0.067 + 32 0.00788 + 33 0.0177 + 34 0.144 + 35 0.0256 + 36 0.00493 + 37 0.0246 + 44 0.000985 + 45 0.00296 + 46 0.0118 + + 58 63 17 0 + 0 0.0317 + 2 0.0317 + 3 0.0159 + 4 0.27 + 7 0.0794 + 8 0.0476 + 9 0.0159 + 13 0.159 + 15 0.0159 + 21 0.0317 + 29 0.0317 + 30 0.0317 + 33 0.0159 + 34 0.0317 + 35 0.127 + 37 0.0159 + 45 0.0476 + + 61 13 6 0 + 0 0.308 + 7 0.0769 + 12 0.231 + 29 0.231 + 31 0.0769 + 33 0.0769 + + 62 20 11 0 + 0 0.05 + 2 0.05 + 3 0.05 + 4 0.1 + 7 0.1 + 8 0.1 + 13 0.15 + 21 0.05 + 29 0.05 + 30 0.1 + 46 0.2 + + 64 1038 24 0 + 0 0.286 + 2 0.0231 + 4 0.0116 + 7 0.0222 + 8 0.0106 + 10 0.000963 + 12 0.0983 + 13 0.00771 + 14 0.00482 + 15 0.0154 + 19 0.00482 + 21 0.0626 + 26 0.0125 + 28 0.000963 + 29 0.283 + 30 0.0164 + 31 0.0135 + 32 0.0183 + 33 0.0877 + 34 0.00289 + 35 0.000963 + 37 0.000963 + 45 0.00867 + 46 0.00578 + + 68 2 2 0 + 0 0.5 + 33 0.5 + + 69 481 24 0 + 0 0.254 + 2 0.0187 + 4 0.0125 + 7 0.0915 + 8 0.0166 + 12 0.0977 + 13 0.00832 + 14 0.00208 + 15 0.00832 + 19 0.00208 + 21 0.0478 + 24 0.00208 + 26 0.027 + 29 0.166 + 30 0.0291 + 31 0.0187 + 32 0.0208 + 33 0.0956 + 34 0.0499 + 35 0.00624 + 36 0.00208 + 37 0.00416 + 45 0.00416 + 46 0.0146 + + 42 2040 38 16 + 0 0.0211 + 2 0.0422 + 3 0.259 + 4 0.102 + 5 0.00049 + 7 0.0284 + 8 0.0373 + 9 0.00294 + 10 0.00049 + 11 0.00098 + 12 0.00686 + 13 0.0422 + 14 0.0304 + 15 0.123 + 16 0.00098 + 19 0.00343 + 20 0.00392 + 21 0.0338 + 22 0.00049 + 25 0.00049 + 26 0.00833 + 28 0.00588 + 29 0.0137 + 30 0.0191 + 31 0.0132 + 32 0.00196 + 33 0.00392 + 34 0.0123 + 35 0.00539 + 37 0.00637 + 38 0.00098 + 39 0.0574 + 40 0.00441 + 42 0.00049 + 44 0.00049 + 45 0.0152 + 46 0.00098 + 47 0.0897 + + 3 11 1 0 + 47 1 + + 13 23 4 0 + 7 0.087 + 8 0.0435 + 26 0.13 + 47 0.739 + + 14 55 4 0 + 2 0.0182 + 7 0.0182 + 40 0.127 + 47 0.836 + + 15 54 1 0 + 47 1 + + 16 10 2 0 + 40 0.2 + 47 0.8 + + 40 3 2 0 + 15 0.333 + 39 0.667 + + 41 3 2 0 + 13 0.333 + 39 0.667 + + 46 11 7 0 + 4 0.364 + 7 0.0909 + 8 0.0909 + 12 0.0909 + 13 0.0909 + 14 0.182 + 15 0.0909 + + 48 5 5 0 + 0 0.2 + 2 0.2 + 7 0.2 + 12 0.2 + 21 0.2 + + 49 2 2 0 + 7 0.5 + 29 0.5 + + 55 1709 36 0 + 0 0.0164 + 2 0.0474 + 3 0.305 + 4 0.116 + 5 0.000585 + 7 0.0199 + 8 0.0392 + 9 0.00351 + 10 0.000585 + 11 0.00117 + 12 0.00293 + 13 0.0486 + 14 0.0339 + 15 0.143 + 16 0.00117 + 19 0.00351 + 20 0.00468 + 21 0.0363 + 22 0.000585 + 25 0.000585 + 26 0.00644 + 28 0.00702 + 29 0.00995 + 30 0.0164 + 31 0.0135 + 32 0.000585 + 33 0.0041 + 34 0.0117 + 35 0.00585 + 37 0.00702 + 38 0.00117 + 39 0.0655 + 42 0.000585 + 44 0.000585 + 45 0.0164 + 47 0.00819 + + 57 51 19 0 + 0 0.118 + 2 0.0196 + 4 0.0588 + 7 0.216 + 8 0.0588 + 12 0.0588 + 15 0.0392 + 19 0.0196 + 21 0.0392 + 26 0.0196 + 29 0.0392 + 30 0.0784 + 33 0.0196 + 34 0.0784 + 35 0.0196 + 37 0.0196 + 45 0.0196 + 46 0.0196 + 47 0.0588 + + 58 39 9 0 + 3 0.179 + 7 0.0256 + 8 0.0256 + 21 0.0256 + 29 0.0513 + 31 0.0513 + 34 0.0256 + 45 0.0256 + 47 0.59 + + 62 5 4 0 + 2 0.2 + 7 0.2 + 30 0.4 + 46 0.2 + + 64 34 15 0 + 0 0.176 + 2 0.0294 + 4 0.0882 + 7 0.0882 + 8 0.0588 + 12 0.118 + 13 0.0294 + 14 0.0588 + 21 0.0294 + 26 0.0294 + 29 0.118 + 30 0.0294 + 31 0.0588 + 32 0.0294 + 47 0.0588 + + 69 20 11 0 + 0 0.1 + 4 0.05 + 7 0.1 + 8 0.05 + 21 0.1 + 26 0.05 + 29 0.1 + 30 0.15 + 32 0.1 + 45 0.05 + 47 0.15 + + 43 97 22 8 + 0 0.0928 + 2 0.0825 + 4 0.0206 + 6 0.0103 + 7 0.144 + 12 0.0412 + 15 0.0103 + 19 0.0103 + 21 0.0206 + 26 0.0103 + 29 0.0103 + 30 0.0103 + 31 0.0103 + 32 0.0206 + 33 0.0619 + 34 0.0103 + 35 0.0103 + 40 0.134 + 41 0.113 + 42 0.103 + 44 0.0103 + 47 0.0619 + + 13 12 7 0 + 0 0.0833 + 2 0.0833 + 7 0.0833 + 33 0.333 + 40 0.0833 + 41 0.167 + 42 0.167 + + 14 8 7 0 + 0 0.25 + 7 0.125 + 12 0.125 + 31 0.125 + 32 0.125 + 34 0.125 + 35 0.125 + + 15 12 9 0 + 0 0.167 + 4 0.0833 + 7 0.0833 + 12 0.0833 + 26 0.0833 + 29 0.0833 + 40 0.0833 + 42 0.25 + 47 0.0833 + + 40 2 1 0 + 47 1 + + 55 37 13 0 + 0 0.027 + 2 0.135 + 4 0.027 + 6 0.027 + 7 0.189 + 15 0.027 + 19 0.027 + 33 0.027 + 40 0.216 + 41 0.135 + 42 0.108 + 44 0.027 + 47 0.027 + + 57 16 10 0 + 0 0.188 + 2 0.125 + 7 0.125 + 12 0.125 + 21 0.0625 + 30 0.0625 + 32 0.0625 + 40 0.0625 + 41 0.0625 + 47 0.125 + + 58 2 1 0 + 41 1 + + 69 2 2 0 + 21 0.5 + 40 0.5 + + 44 52 11 0 + 2 0.0769 + 3 0.0192 + 4 0.0577 + 7 0.25 + 8 0.0385 + 13 0.0385 + 15 0.25 + 21 0.0192 + 30 0.0385 + 35 0.0192 + 39 0.192 + + 45 238 22 10 + 0 0.0252 + 2 0.0252 + 3 0.0084 + 4 0.126 + 6 0.0168 + 7 0.0924 + 8 0.0798 + 9 0.0042 + 12 0.0042 + 13 0.0924 + 15 0.311 + 16 0.0084 + 19 0.0546 + 21 0.0294 + 26 0.0042 + 28 0.021 + 30 0.0168 + 31 0.0252 + 32 0.0042 + 34 0.0168 + 35 0.021 + 37 0.0126 + + 2 30 9 0 + 0 0.0333 + 3 0.0333 + 4 0.0667 + 8 0.133 + 9 0.0333 + 13 0.167 + 15 0.467 + 16 0.0333 + 37 0.0333 + + 8 5 4 0 + 6 0.2 + 8 0.2 + 15 0.4 + 21 0.2 + + 13 11 6 0 + 3 0.0909 + 4 0.0909 + 6 0.0909 + 7 0.0909 + 15 0.545 + 30 0.0909 + + 41 40 14 0 + 0 0.025 + 2 0.05 + 4 0.225 + 7 0.05 + 8 0.075 + 12 0.025 + 13 0.125 + 15 0.175 + 16 0.025 + 19 0.05 + 21 0.05 + 28 0.05 + 30 0.025 + 35 0.05 + + 42 21 8 0 + 0 0.143 + 4 0.143 + 7 0.0476 + 8 0.143 + 13 0.0476 + 19 0.381 + 31 0.0476 + 37 0.0476 + + 46 8 3 0 + 4 0.25 + 13 0.125 + 15 0.625 + + 55 107 16 0 + 2 0.00935 + 4 0.121 + 6 0.0187 + 7 0.15 + 8 0.0467 + 13 0.0935 + 15 0.355 + 19 0.028 + 21 0.0187 + 26 0.00935 + 28 0.028 + 30 0.00935 + 31 0.0467 + 34 0.028 + 35 0.028 + 37 0.00935 + + 57 5 4 0 + 2 0.2 + 7 0.4 + 8 0.2 + 34 0.2 + + 58 6 4 0 + 0 0.167 + 2 0.333 + 21 0.333 + 30 0.167 + + 69 1 1 0 + 32 1 + + 46 898 32 13 + 0 0.0635 + 1 0.00223 + 2 0.0668 + 3 0.00445 + 4 0.0568 + 7 0.345 + 8 0.0212 + 12 0.0167 + 13 0.00557 + 14 0.00223 + 15 0.0167 + 19 0.0078 + 20 0.00111 + 21 0.0323 + 26 0.0646 + 29 0.0212 + 30 0.0212 + 31 0.0345 + 32 0.00334 + 33 0.0167 + 34 0.0624 + 35 0.0111 + 36 0.00223 + 37 0.0122 + 40 0.00334 + 41 0.00668 + 42 0.0323 + 43 0.00334 + 44 0.0379 + 45 0.00891 + 46 0.00223 + 47 0.0134 + + 6 2 2 0 + 0 0.5 + 41 0.5 + + 8 3 3 0 + 7 0.333 + 33 0.333 + 42 0.333 + + 13 251 24 0 + 0 0.0598 + 1 0.00398 + 2 0.0478 + 4 0.00797 + 7 0.498 + 8 0.012 + 12 0.0398 + 19 0.00398 + 21 0.0279 + 26 0.0876 + 29 0.012 + 30 0.0159 + 31 0.0359 + 33 0.00797 + 34 0.0518 + 35 0.00797 + 37 0.012 + 40 0.00797 + 41 0.00398 + 42 0.0279 + 43 0.00398 + 44 0.0159 + 46 0.00398 + 47 0.00398 + + 14 66 15 0 + 0 0.0606 + 2 0.0606 + 7 0.333 + 8 0.0303 + 12 0.0152 + 19 0.0152 + 21 0.0455 + 26 0.152 + 29 0.0152 + 31 0.0455 + 32 0.0455 + 34 0.0455 + 35 0.0606 + 37 0.0152 + 42 0.0606 + + 15 21 11 0 + 2 0.0476 + 4 0.0476 + 7 0.286 + 12 0.0952 + 21 0.0952 + 26 0.0476 + 33 0.0952 + 34 0.0476 + 40 0.0476 + 41 0.143 + 46 0.0476 + + 40 11 3 0 + 15 0.182 + 21 0.0909 + 47 0.727 + + 41 222 23 0 + 0 0.0721 + 2 0.045 + 3 0.018 + 4 0.203 + 7 0.0856 + 8 0.0405 + 12 0.0045 + 13 0.018 + 14 0.00901 + 15 0.0541 + 19 0.00901 + 20 0.0045 + 21 0.0495 + 26 0.018 + 29 0.045 + 30 0.036 + 31 0.045 + 33 0.0225 + 34 0.144 + 35 0.018 + 36 0.00901 + 37 0.0135 + 45 0.036 + + 42 2 2 0 + 33 0.5 + 47 0.5 + + 55 241 21 0 + 0 0.0207 + 1 0.00415 + 2 0.12 + 4 0.0124 + 7 0.448 + 8 0.0166 + 15 0.00415 + 19 0.0083 + 21 0.0124 + 26 0.083 + 29 0.0083 + 30 0.0207 + 31 0.0332 + 33 0.0083 + 34 0.0249 + 37 0.0124 + 41 0.00415 + 42 0.0539 + 43 0.0083 + 44 0.0913 + 47 0.00415 + + 56 26 9 0 + 0 0.269 + 7 0.231 + 12 0.0385 + 19 0.0385 + 29 0.115 + 33 0.0385 + 34 0.0385 + 37 0.0385 + 44 0.192 + + 57 34 10 0 + 0 0.147 + 2 0.118 + 7 0.471 + 8 0.0294 + 13 0.0294 + 21 0.0294 + 26 0.0294 + 30 0.0588 + 31 0.0294 + 42 0.0588 + + 62 10 6 0 + 0 0.2 + 7 0.2 + 21 0.1 + 33 0.1 + 42 0.1 + 44 0.3 + + 65 1 1 0 + 47 1 + + 47 311752 46 59 + 0 0.0863 + 1 0.000289 + 2 0.0341 + 3 0.00328 + 4 0.0119 + 5 0.000103 + 6 4.49e-05 + 7 0.192 + 8 0.0132 + 9 0.000908 + 10 0.000763 + 12 0.0303 + 13 0.0146 + 14 0.00451 + 15 0.00615 + 16 0.000122 + 17 2.57e-05 + 18 0.000176 + 19 0.00338 + 20 0.000186 + 21 0.0233 + 22 0.00185 + 23 0.00017 + 24 0.000565 + 25 2.89e-05 + 26 0.031 + 28 0.00225 + 29 0.0626 + 30 0.00728 + 31 0.0105 + 32 0.0152 + 33 0.0222 + 34 0.00651 + 35 0.00307 + 36 0.00017 + 37 0.00209 + 38 1.92e-05 + 39 0.000504 + 40 0.207 + 41 0.166 + 42 0.0179 + 43 0.0038 + 44 0.00306 + 45 0.00251 + 46 0.00252 + 47 0.00512 + + 0 56 13 0 + 0 0.0179 + 7 0.125 + 8 0.0893 + 13 0.0357 + 15 0.0179 + 21 0.25 + 23 0.179 + 29 0.107 + 30 0.0714 + 31 0.0536 + 41 0.0179 + 43 0.0179 + 45 0.0179 + + 1 3 2 0 + 26 0.333 + 40 0.667 + + 2 3 2 0 + 0 0.333 + 21 0.667 + + 3 7697 38 0 + 0 0.019 + 2 0.0298 + 3 0.00065 + 4 0.099 + 6 0.00013 + 7 0.178 + 8 0.00429 + 9 0.00208 + 10 0.00013 + 12 0.00754 + 13 0.00455 + 14 0.00143 + 15 0.00429 + 19 0.00247 + 20 0.00026 + 21 0.0052 + 22 0.00026 + 23 0.00013 + 25 0.00013 + 26 0.0958 + 28 0.00013 + 29 0.0151 + 30 0.00338 + 31 0.00559 + 32 0.00117 + 33 0.00351 + 34 0.00273 + 35 0.000909 + 37 0.00338 + 39 0.00013 + 40 0.212 + 41 0.251 + 42 0.0227 + 43 0.0178 + 44 0.00182 + 45 0.0013 + 46 0.00065 + 47 0.00208 + + 4 2457 34 0 + 0 0.258 + 1 0.000814 + 2 0.00895 + 3 0.00204 + 4 0.00611 + 7 0.286 + 8 0.00773 + 9 0.000407 + 10 0.000407 + 12 0.0696 + 13 0.00692 + 14 0.00122 + 15 0.00122 + 18 0.000814 + 19 0.00895 + 21 0.0232 + 24 0.00204 + 26 0.00733 + 28 0.00407 + 29 0.0281 + 30 0.00692 + 31 0.0248 + 32 0.0228 + 33 0.0619 + 34 0.00611 + 35 0.0265 + 37 0.000407 + 40 0.0419 + 41 0.0696 + 42 0.0106 + 44 0.000407 + 45 0.00122 + 46 0.000814 + 47 0.00204 + + 5 861 10 0 + 0 0.861 + 4 0.00232 + 12 0.0848 + 18 0.0128 + 19 0.00116 + 21 0.0244 + 26 0.00116 + 33 0.00697 + 35 0.00116 + 41 0.00465 + + 6 59 14 0 + 0 0.0678 + 2 0.0339 + 7 0.102 + 12 0.0339 + 26 0.0678 + 31 0.0169 + 33 0.0678 + 40 0.254 + 41 0.203 + 42 0.0339 + 43 0.0169 + 44 0.0339 + 45 0.0169 + 46 0.0508 + + 7 79 19 0 + 0 0.152 + 2 0.0127 + 4 0.0506 + 5 0.0127 + 7 0.228 + 8 0.0127 + 12 0.038 + 18 0.0253 + 19 0.038 + 21 0.0253 + 22 0.0127 + 24 0.0127 + 26 0.0253 + 29 0.0127 + 31 0.0633 + 33 0.038 + 40 0.114 + 41 0.114 + 47 0.0127 + + 8 1187 34 0 + 0 0.0666 + 1 0.000842 + 2 0.0371 + 3 0.00253 + 4 0.00505 + 7 0.405 + 8 0.00758 + 9 0.00421 + 10 0.000842 + 12 0.0118 + 13 0.0143 + 14 0.00505 + 15 0.00421 + 19 0.00337 + 21 0.0177 + 22 0.00337 + 24 0.000842 + 26 0.0497 + 28 0.00168 + 29 0.0286 + 30 0.00505 + 31 0.00505 + 32 0.0118 + 33 0.00927 + 34 0.00253 + 35 0.00253 + 37 0.000842 + 40 0.131 + 41 0.131 + 42 0.0194 + 43 0.00505 + 44 0.00421 + 46 0.00168 + 47 0.000842 + + 9 235 13 0 + 0 0.0213 + 2 0.00851 + 4 0.00851 + 7 0.621 + 12 0.00426 + 21 0.0255 + 26 0.0766 + 29 0.00426 + 30 0.00426 + 31 0.0128 + 40 0.115 + 41 0.0894 + 42 0.00851 + + 10 367 21 0 + 0 0.0572 + 2 0.00272 + 4 0.00817 + 5 0.00272 + 7 0.711 + 8 0.00545 + 12 0.00545 + 13 0.00817 + 19 0.00817 + 21 0.0163 + 26 0.0109 + 28 0.00272 + 29 0.00272 + 30 0.00817 + 31 0.00272 + 32 0.0327 + 37 0.00272 + 40 0.0463 + 41 0.049 + 42 0.0136 + 45 0.00272 + + 12 3 3 0 + 40 0.333 + 41 0.333 + 43 0.333 + + 13 96406 46 0 + 0 0.0637 + 1 0.000353 + 2 0.0345 + 3 0.00505 + 4 0.00829 + 5 0.000145 + 6 5.19e-05 + 7 0.333 + 8 0.00742 + 9 0.00119 + 10 4.15e-05 + 12 0.0242 + 13 0.00407 + 14 0.000944 + 15 0.0048 + 16 3.11e-05 + 17 2.07e-05 + 18 2.07e-05 + 19 0.00561 + 20 0.00027 + 21 0.0238 + 22 0.0035 + 23 0.000114 + 24 0.000467 + 25 4.15e-05 + 26 0.0426 + 28 0.00132 + 29 0.0439 + 30 0.00859 + 31 0.0141 + 32 0.00186 + 33 0.0205 + 34 0.0107 + 35 0.00337 + 36 0.000249 + 37 0.00326 + 38 1.04e-05 + 39 0.000145 + 40 0.149 + 41 0.153 + 42 0.0151 + 43 0.00195 + 44 0.00201 + 45 0.00279 + 46 0.00327 + 47 0.000685 + + 14 55109 44 0 + 0 0.0843 + 1 0.000726 + 2 0.0441 + 3 0.00132 + 4 0.0177 + 5 9.07e-05 + 7 0.251 + 8 0.0175 + 9 0.00098 + 10 3.63e-05 + 12 0.0303 + 13 0.00218 + 14 0.000817 + 15 0.00212 + 16 3.63e-05 + 17 5.44e-05 + 18 3.63e-05 + 19 0.00468 + 20 0.000163 + 21 0.0335 + 22 0.00205 + 23 0.000127 + 24 0.000653 + 25 1.81e-05 + 26 0.0385 + 28 0.00356 + 29 0.0533 + 30 0.0147 + 31 0.0227 + 32 0.0389 + 33 0.00203 + 34 0.0132 + 35 0.00744 + 36 0.000472 + 37 0.00227 + 39 0.000327 + 40 0.146 + 41 0.131 + 42 0.0194 + 43 0.00156 + 44 0.00454 + 45 0.00238 + 46 0.00281 + 47 0.00107 + + 15 37150 40 0 + 0 0.0859 + 1 8.08e-05 + 2 0.0517 + 3 0.00261 + 4 0.0052 + 5 5.38e-05 + 6 2.69e-05 + 7 0.0953 + 8 0.00377 + 9 0.000242 + 12 0.0275 + 13 0.00353 + 14 0.00116 + 15 0.00571 + 17 2.69e-05 + 18 0.000673 + 19 0.00175 + 20 0.000296 + 21 0.0225 + 22 0.000834 + 24 8.08e-05 + 26 0.0186 + 28 0.00221 + 29 0.135 + 30 0.00363 + 31 0.00186 + 32 0.00363 + 33 0.0419 + 34 0.0024 + 35 0.00145 + 37 0.00132 + 39 0.000619 + 40 0.126 + 41 0.315 + 42 0.0153 + 43 0.00729 + 44 0.00686 + 45 0.00202 + 46 0.00347 + 47 0.00331 + + 16 1540 34 0 + 0 0.123 + 2 0.0604 + 3 0.0013 + 4 0.00519 + 5 0.000649 + 7 0.11 + 8 0.00519 + 9 0.000649 + 12 0.0403 + 13 0.00519 + 14 0.00195 + 15 0.00325 + 19 0.0026 + 20 0.000649 + 21 0.026 + 22 0.000649 + 26 0.0234 + 28 0.000649 + 29 0.112 + 30 0.00584 + 31 0.0039 + 32 0.037 + 33 0.0156 + 34 0.000649 + 35 0.0169 + 36 0.000649 + 40 0.128 + 41 0.216 + 42 0.0266 + 43 0.0039 + 44 0.0039 + 45 0.00195 + 46 0.00325 + 47 0.0136 + + 17 3 1 0 + 4 1 + + 18 8655 34 0 + 0 0.00508 + 2 0.00659 + 3 0.0261 + 4 0.000231 + 6 0.000231 + 7 0.00208 + 8 0.207 + 9 0.00173 + 10 0.026 + 12 0.00104 + 13 0.417 + 14 0.13 + 15 0.104 + 16 0.00381 + 19 0.000116 + 21 0.00555 + 22 0.000347 + 23 0.00208 + 26 0.000231 + 28 0.000347 + 29 0.00439 + 30 0.0117 + 31 0.00739 + 32 0.000462 + 33 0.00104 + 38 0.000578 + 39 0.0101 + 40 0.00485 + 41 0.00601 + 42 0.000231 + 43 0.000924 + 44 0.000231 + 45 0.0117 + 46 0.000231 + + 19 17347 41 0 + 0 0.301 + 1 0.000173 + 2 0.00761 + 3 0.000807 + 4 0.0115 + 5 0.000115 + 6 5.76e-05 + 7 0.0349 + 8 0.00738 + 9 0.00133 + 10 0.000115 + 12 0.124 + 13 0.00202 + 14 0.000749 + 15 0.000576 + 17 0.000115 + 18 0.000634 + 19 0.00161 + 20 0.000115 + 21 0.0537 + 22 0.00156 + 23 0.000173 + 24 0.00455 + 26 0.0163 + 28 0.0117 + 29 0.166 + 30 0.00242 + 31 0.0019 + 32 0.0775 + 33 0.106 + 34 0.000288 + 35 0.000634 + 37 0.00121 + 39 0.000288 + 40 0.0313 + 41 0.021 + 42 0.00334 + 43 0.000346 + 44 0.000865 + 45 0.00346 + 46 0.000461 + + 20 22 10 0 + 0 0.136 + 1 0.0909 + 13 0.0909 + 15 0.0455 + 21 0.0455 + 30 0.364 + 40 0.0455 + 41 0.0909 + 42 0.0455 + 43 0.0455 + + 21 515 31 0 + 0 0.0641 + 2 0.0272 + 3 0.00388 + 4 0.0155 + 6 0.00194 + 7 0.243 + 8 0.035 + 9 0.0136 + 12 0.0155 + 13 0.0136 + 14 0.00388 + 15 0.00388 + 19 0.0194 + 21 0.0214 + 22 0.0117 + 26 0.0311 + 28 0.00388 + 29 0.00583 + 30 0.00583 + 31 0.00971 + 32 0.00583 + 33 0.0117 + 34 0.00194 + 37 0.00194 + 40 0.181 + 41 0.217 + 42 0.0214 + 43 0.00194 + 44 0.00388 + 46 0.00194 + 47 0.00194 + + 22 48 11 0 + 2 0.0625 + 7 0.521 + 8 0.0417 + 12 0.0208 + 21 0.0208 + 29 0.0208 + 31 0.0208 + 37 0.0208 + 40 0.0833 + 41 0.167 + 42 0.0208 + + 23 19 8 0 + 7 0.579 + 8 0.0526 + 19 0.0526 + 21 0.105 + 29 0.0526 + 31 0.0526 + 40 0.0526 + 41 0.0526 + + 24 8 3 0 + 7 0.5 + 40 0.25 + 41 0.25 + + 25 13 2 0 + 3 0.0769 + 42 0.923 + + 26 1 1 0 + 28 1 + + 27 4 3 0 + 40 0.5 + 42 0.25 + 46 0.25 + + 28 87 15 0 + 0 0.0115 + 2 0.0345 + 4 0.0805 + 7 0.437 + 8 0.0345 + 13 0.0115 + 15 0.0115 + 21 0.046 + 26 0.069 + 29 0.023 + 40 0.103 + 41 0.092 + 42 0.0115 + 46 0.023 + 47 0.0115 + + 29 6 5 0 + 4 0.167 + 7 0.333 + 8 0.167 + 29 0.167 + 33 0.167 + + 30 255 24 0 + 0 0.0706 + 2 0.0314 + 4 0.00784 + 7 0.435 + 8 0.0196 + 12 0.0275 + 13 0.00392 + 14 0.00392 + 19 0.00392 + 21 0.0275 + 22 0.00392 + 26 0.0314 + 29 0.0235 + 30 0.00392 + 31 0.00784 + 32 0.00392 + 33 0.0157 + 37 0.00392 + 40 0.141 + 41 0.098 + 42 0.0157 + 43 0.00392 + 44 0.00392 + 46 0.0118 + + 31 27 11 0 + 0 0.0741 + 2 0.0741 + 4 0.037 + 7 0.185 + 12 0.111 + 14 0.037 + 24 0.037 + 26 0.037 + 29 0.185 + 40 0.148 + 41 0.0741 + + 32 3 3 0 + 0 0.333 + 32 0.333 + 33 0.333 + + 33 63 17 0 + 0 0.0159 + 3 0.0476 + 4 0.175 + 7 0.127 + 8 0.0952 + 10 0.0159 + 13 0.0159 + 14 0.0317 + 19 0.0635 + 21 0.0317 + 22 0.0159 + 26 0.0952 + 30 0.0159 + 34 0.0159 + 40 0.0159 + 41 0.206 + 45 0.0159 + + 34 58 6 0 + 0 0.259 + 4 0.0172 + 12 0.379 + 21 0.0345 + 29 0.19 + 33 0.121 + + 35 6 4 0 + 0 0.333 + 26 0.167 + 40 0.333 + 41 0.167 + + 40 975 10 0 + 0 0.00103 + 12 0.00103 + 15 0.00615 + 21 0.00103 + 26 0.00103 + 43 0.0677 + 44 0.0513 + 45 0.00103 + 46 0.00308 + 47 0.867 + + 41 4997 30 0 + 0 0.238 + 2 0.0332 + 3 0.0014 + 4 0.0254 + 7 0.0903 + 8 0.0054 + 9 0.0004 + 10 0.0002 + 12 0.064 + 13 0.00981 + 14 0.0036 + 15 0.00961 + 19 0.003 + 21 0.0476 + 22 0.0006 + 23 0.0002 + 26 0.0272 + 28 0.0012 + 29 0.288 + 30 0.00901 + 31 0.0124 + 32 0.013 + 33 0.104 + 34 0.0038 + 35 0.0012 + 36 0.0002 + 37 0.0026 + 39 0.0002 + 45 0.0042 + 46 0.0006 + + 42 330 23 0 + 0 0.115 + 2 0.0212 + 4 0.0152 + 7 0.0485 + 8 0.00303 + 12 0.0424 + 13 0.00303 + 14 0.00606 + 15 0.00606 + 19 0.00606 + 20 0.00303 + 21 0.0273 + 26 0.0121 + 28 0.00606 + 29 0.0758 + 30 0.00303 + 31 0.00606 + 32 0.0121 + 33 0.0212 + 34 0.00303 + 37 0.00606 + 45 0.00303 + 47 0.555 + + 43 92 18 0 + 0 0.0978 + 2 0.087 + 4 0.0217 + 7 0.152 + 12 0.0435 + 21 0.0217 + 26 0.0109 + 29 0.0109 + 30 0.0109 + 31 0.0109 + 32 0.0217 + 33 0.0652 + 34 0.0109 + 35 0.0109 + 40 0.13 + 41 0.12 + 42 0.109 + 47 0.0652 + + 45 4 4 0 + 0 0.25 + 2 0.25 + 7 0.25 + 32 0.25 + + 46 480 27 0 + 0 0.119 + 1 0.00208 + 2 0.0542 + 4 0.0208 + 7 0.365 + 8 0.0104 + 12 0.0292 + 13 0.00417 + 15 0.00833 + 19 0.00833 + 21 0.0396 + 26 0.0521 + 29 0.0396 + 30 0.00833 + 31 0.0292 + 32 0.00625 + 33 0.0292 + 34 0.0417 + 35 0.0125 + 37 0.0125 + 40 0.00625 + 41 0.0104 + 42 0.0333 + 43 0.00625 + 44 0.0229 + 46 0.00417 + 47 0.025 + + 48 1062 27 0 + 0 0.0546 + 2 0.032 + 4 0.000942 + 7 0.0706 + 8 0.000942 + 9 0.000942 + 12 0.0188 + 13 0.00471 + 15 0.000942 + 19 0.000942 + 21 0.00659 + 26 0.0141 + 28 0.000942 + 29 0.0753 + 30 0.000942 + 31 0.00377 + 32 0.0226 + 33 0.00847 + 34 0.000942 + 37 0.00282 + 40 0.469 + 41 0.171 + 42 0.032 + 43 0.000942 + 44 0.000942 + 45 0.00282 + 46 0.000942 + + 49 817 24 0 + 0 0.0673 + 2 0.0171 + 4 0.00367 + 7 0.0355 + 8 0.00245 + 12 0.00857 + 15 0.00122 + 21 0.00857 + 22 0.00122 + 26 0.0122 + 28 0.00245 + 29 0.0257 + 30 0.00367 + 31 0.00122 + 32 0.0147 + 33 0.00612 + 34 0.00122 + 40 0.518 + 41 0.179 + 42 0.071 + 44 0.00122 + 45 0.00367 + 46 0.00245 + 47 0.0122 + + 51 8 5 0 + 2 0.125 + 33 0.125 + 40 0.25 + 41 0.125 + 47 0.375 + + 54 7 4 0 + 0 0.143 + 13 0.143 + 40 0.429 + 41 0.286 + + 55 13149 39 0 + 0 0.0396 + 2 0.00867 + 3 0.00205 + 4 0.0054 + 5 7.61e-05 + 6 0.000152 + 7 0.0588 + 8 0.00342 + 9 0.000456 + 12 0.0129 + 13 0.000913 + 14 0.000152 + 15 0.000913 + 19 0.000532 + 20 0.000152 + 21 0.00829 + 22 0.000456 + 23 7.61e-05 + 24 0.000152 + 25 0.000152 + 26 0.013 + 28 0.000989 + 29 0.0295 + 30 0.00205 + 31 0.0035 + 32 0.0103 + 33 0.00464 + 34 0.00243 + 35 0.000913 + 36 7.61e-05 + 37 0.000608 + 40 0.508 + 41 0.208 + 42 0.0503 + 43 0.00973 + 44 0.00106 + 45 0.000913 + 46 0.00122 + 47 0.01 + + 56 409 24 0 + 0 0.0513 + 2 0.0122 + 3 0.00244 + 4 0.00978 + 7 0.174 + 8 0.00244 + 12 0.0269 + 14 0.00244 + 21 0.00489 + 26 0.0171 + 28 0.00244 + 29 0.0147 + 30 0.00733 + 31 0.00978 + 32 0.0269 + 33 0.00489 + 34 0.0122 + 35 0.00978 + 39 0.00244 + 40 0.35 + 41 0.237 + 42 0.0122 + 44 0.00244 + 46 0.00489 + + 57 38167 39 0 + 0 0.0755 + 1 0.000105 + 2 0.0403 + 3 0.00055 + 4 0.0043 + 5 0.000131 + 6 2.62e-05 + 7 0.0629 + 8 0.00333 + 9 0.000131 + 12 0.0243 + 13 0.0021 + 14 0.000812 + 15 0.0017 + 19 0.00102 + 20 2.62e-05 + 21 0.0137 + 22 0.000786 + 23 2.62e-05 + 24 7.86e-05 + 26 0.0196 + 28 0.000891 + 29 0.0437 + 30 0.00424 + 31 0.00383 + 32 0.0103 + 33 0.0117 + 34 0.00113 + 35 0.00055 + 37 0.00186 + 39 0.000131 + 40 0.432 + 41 0.205 + 42 0.0232 + 43 0.0022 + 44 0.00191 + 45 0.00176 + 46 0.0027 + 47 0.00144 + + 58 873 28 0 + 0 0.123 + 2 0.0767 + 3 0.0115 + 4 0.0275 + 7 0.139 + 8 0.00229 + 12 0.0401 + 13 0.00229 + 14 0.00344 + 15 0.00229 + 19 0.00458 + 20 0.00115 + 21 0.0229 + 26 0.0321 + 28 0.00229 + 29 0.0527 + 30 0.00344 + 31 0.00229 + 32 0.0275 + 33 0.0367 + 34 0.00458 + 35 0.00229 + 39 0.00115 + 40 0.181 + 41 0.136 + 42 0.0504 + 45 0.00115 + 47 0.0103 + + 60 5584 31 0 + 0 0.00985 + 2 0.0177 + 3 0.00681 + 4 0.0518 + 7 0.358 + 8 0.00734 + 9 0.00412 + 12 0.00304 + 13 0.00358 + 14 0.000179 + 15 0.00304 + 19 0.00125 + 20 0.000179 + 21 0.00591 + 22 0.000179 + 25 0.000179 + 26 0.0566 + 29 0.00304 + 30 0.00251 + 31 0.0077 + 34 0.000895 + 35 0.000537 + 37 0.000179 + 40 0.186 + 41 0.219 + 42 0.0136 + 43 0.0279 + 44 0.00663 + 45 0.000358 + 46 0.000179 + 47 0.00125 + + 61 29 6 0 + 0 0.0345 + 29 0.0345 + 33 0.0345 + 40 0.69 + 41 0.138 + 42 0.069 + + 62 1522 28 0 + 0 0.0453 + 2 0.0191 + 3 0.000657 + 4 0.00197 + 7 0.0315 + 8 0.000657 + 12 0.021 + 15 0.00131 + 19 0.000657 + 21 0.00788 + 22 0.00131 + 26 0.00197 + 28 0.000657 + 29 0.0177 + 30 0.000657 + 31 0.00131 + 32 0.00263 + 33 0.00986 + 34 0.000657 + 37 0.00131 + 40 0.633 + 41 0.171 + 42 0.0138 + 43 0.00329 + 44 0.000657 + 45 0.00197 + 46 0.00263 + 47 0.00526 + + 64 8611 29 0 + 0 0.046 + 2 0.0135 + 4 0.00105 + 7 0.0108 + 12 0.017 + 13 0.000465 + 14 0.000116 + 15 0.000232 + 19 0.000929 + 20 0.000116 + 21 0.0043 + 22 0.000348 + 26 0.00325 + 28 0.000697 + 29 0.00975 + 30 0.000813 + 31 0.000581 + 32 0.00499 + 33 0.00325 + 34 0.000116 + 37 0.000232 + 40 0.694 + 41 0.157 + 42 0.0238 + 43 0.00151 + 44 0.00151 + 45 0.00128 + 46 0.00116 + 47 0.00128 + + 65 8 3 0 + 40 0.5 + 46 0.125 + 47 0.375 + + 67 4 4 0 + 40 0.25 + 42 0.25 + 46 0.25 + 47 0.25 + + 68 65 9 0 + 0 0.0308 + 2 0.0308 + 7 0.0769 + 26 0.0308 + 29 0.0308 + 32 0.0462 + 40 0.631 + 41 0.0769 + 42 0.0462 + + 69 4185 30 0 + 0 0.0712 + 2 0.0229 + 3 0.000239 + 4 0.00191 + 7 0.0244 + 8 0.000478 + 12 0.0318 + 13 0.000478 + 15 0.000239 + 21 0.00956 + 22 0.000956 + 26 0.00789 + 28 0.00119 + 29 0.037 + 30 0.00119 + 31 0.0043 + 32 0.0148 + 33 0.0103 + 34 0.000478 + 35 0.000239 + 37 0.000478 + 39 0.000239 + 40 0.542 + 41 0.18 + 42 0.0277 + 43 0.00335 + 44 0.00119 + 45 0.000717 + 46 0.00119 + 47 0.00215 + + 73 3 3 0 + 0 0.333 + 32 0.333 + 41 0.333 + + 74 13 5 0 + 0 0.0769 + 26 0.0769 + 40 0.154 + 41 0.0769 + 47 0.615 + + 48 1396 29 9 + 0 0.0415 + 2 0.0244 + 4 0.00143 + 7 0.0752 + 8 0.00143 + 9 0.00645 + 12 0.0143 + 13 0.0043 + 15 0.000716 + 19 0.00143 + 21 0.00716 + 26 0.0186 + 28 0.00143 + 29 0.0573 + 30 0.00215 + 31 0.00716 + 32 0.0172 + 33 0.00716 + 34 0.00143 + 35 0.000716 + 37 0.00215 + 39 0.0043 + 40 0.362 + 41 0.304 + 42 0.0279 + 43 0.00143 + 44 0.00215 + 45 0.00287 + 46 0.00143 + + 0 1 1 0 + 44 1 + + 4 66 14 0 + 0 0.0455 + 2 0.0152 + 7 0.379 + 8 0.0152 + 12 0.0152 + 13 0.0152 + 19 0.0152 + 26 0.0455 + 29 0.0152 + 30 0.0152 + 39 0.0909 + 40 0.152 + 41 0.136 + 42 0.0455 + + 41 264 6 0 + 2 0.00379 + 7 0.00758 + 26 0.0114 + 40 0.261 + 41 0.705 + 42 0.0114 + + 42 18 3 0 + 40 0.667 + 41 0.0556 + 42 0.278 + + 44 1 1 0 + 43 1 + + 45 6 5 0 + 40 0.333 + 41 0.167 + 42 0.167 + 44 0.167 + 46 0.167 + + 47 19 8 0 + 2 0.0526 + 7 0.211 + 9 0.421 + 13 0.105 + 28 0.0526 + 30 0.0526 + 33 0.0526 + 40 0.0526 + + 55 951 28 0 + 0 0.0568 + 2 0.0326 + 4 0.0021 + 7 0.0747 + 8 0.00105 + 9 0.00105 + 12 0.0189 + 13 0.00315 + 15 0.00105 + 19 0.00105 + 21 0.0105 + 26 0.021 + 28 0.00105 + 29 0.0831 + 30 0.00105 + 31 0.0105 + 32 0.0252 + 33 0.00946 + 34 0.0021 + 35 0.00105 + 37 0.00315 + 40 0.396 + 41 0.209 + 42 0.0263 + 43 0.00105 + 44 0.00105 + 45 0.00421 + 46 0.00105 + + 57 51 5 0 + 7 0.0196 + 12 0.0196 + 40 0.471 + 41 0.451 + 42 0.0392 + + 49 1035 32 6 + 0 0.0531 + 1 0.000966 + 2 0.0145 + 3 0.00483 + 4 0.0386 + 7 0.0725 + 8 0.0145 + 9 0.00193 + 12 0.00676 + 13 0.0164 + 14 0.0116 + 15 0.0116 + 20 0.0029 + 21 0.00966 + 22 0.00193 + 26 0.0184 + 28 0.00193 + 29 0.0203 + 30 0.0029 + 31 0.00193 + 32 0.0116 + 33 0.00483 + 34 0.00386 + 35 0.00386 + 37 0.000966 + 40 0.411 + 41 0.184 + 42 0.058 + 44 0.000966 + 45 0.0029 + 46 0.00193 + 47 0.00966 + + 2 45 9 0 + 4 0.311 + 8 0.133 + 13 0.156 + 14 0.133 + 15 0.0667 + 20 0.0444 + 21 0.0222 + 40 0.0444 + 41 0.0889 + + 41 350 16 0 + 2 0.00286 + 3 0.0143 + 4 0.0629 + 7 0.00286 + 8 0.00857 + 9 0.00571 + 13 0.0229 + 14 0.0171 + 15 0.02 + 20 0.00286 + 21 0.00571 + 22 0.00286 + 40 0.506 + 41 0.166 + 42 0.131 + 47 0.0286 + + 42 10 5 0 + 8 0.2 + 13 0.1 + 40 0.4 + 41 0.1 + 42 0.2 + + 47 1 1 0 + 32 1 + + 55 548 26 0 + 0 0.0912 + 1 0.00182 + 2 0.0237 + 4 0.00547 + 7 0.128 + 8 0.0073 + 12 0.00912 + 13 0.00182 + 15 0.00365 + 21 0.0109 + 22 0.00182 + 26 0.031 + 28 0.00365 + 29 0.0328 + 30 0.00547 + 31 0.00365 + 32 0.0182 + 33 0.0073 + 34 0.00365 + 35 0.00547 + 37 0.00182 + 40 0.369 + 41 0.204 + 42 0.0201 + 45 0.00547 + 46 0.00365 + + 57 73 15 0 + 0 0.0685 + 2 0.0137 + 7 0.0411 + 12 0.0274 + 21 0.0137 + 26 0.0137 + 29 0.0411 + 32 0.0137 + 33 0.0137 + 34 0.0274 + 35 0.0137 + 40 0.534 + 41 0.151 + 42 0.0137 + 44 0.0137 + + 50 146 15 1 + 3 0.0342 + 4 0.384 + 8 0.144 + 9 0.0137 + 13 0.123 + 14 0.13 + 15 0.0548 + 16 0.00685 + 20 0.0411 + 21 0.0137 + 22 0.00685 + 30 0.0137 + 31 0.0137 + 39 0.00685 + 45 0.0137 + + 46 1 1 0 + 45 1 + + 51 8 5 0 + 2 0.125 + 33 0.125 + 40 0.25 + 41 0.125 + 47 0.375 + + 54 8 4 0 + 0 0.125 + 13 0.125 + 40 0.375 + 41 0.375 + + 55 92386 44 25 + 0 0.00569 + 1 0.000487 + 2 0.0599 + 3 0.0061 + 4 0.022 + 5 3.25e-05 + 6 7.58e-05 + 7 0.423 + 8 0.0122 + 9 0.000509 + 10 0.000108 + 12 0.00184 + 13 0.00187 + 14 0.000682 + 15 0.00441 + 16 3.25e-05 + 17 2.16e-05 + 19 0.00704 + 20 0.000216 + 21 0.011 + 22 0.000346 + 23 0.000152 + 24 7.58e-05 + 25 5.41e-05 + 26 0.0266 + 28 0.000162 + 29 0.0062 + 30 0.0132 + 31 0.0246 + 32 0.00149 + 33 0.000671 + 34 0.0181 + 35 0.00889 + 36 0.000563 + 37 0.00232 + 39 0.000433 + 40 0.0776 + 41 0.217 + 42 0.0281 + 43 0.00179 + 44 0.00812 + 45 0.0015 + 46 0.00279 + 47 0.00143 + + 2 6756 35 0 + 0 0.0628 + 2 0.0154 + 3 0.000148 + 4 0.00681 + 5 0.000148 + 7 0.0813 + 8 0.00488 + 9 0.000148 + 12 0.0207 + 13 0.00133 + 14 0.000888 + 15 0.000888 + 19 0.000592 + 21 0.0148 + 22 0.000444 + 23 0.000148 + 26 0.016 + 28 0.00192 + 29 0.0423 + 30 0.00355 + 31 0.00459 + 32 0.017 + 33 0.00266 + 34 0.00429 + 35 0.00148 + 36 0.000148 + 37 0.000888 + 40 0.412 + 41 0.25 + 42 0.0232 + 43 0.00192 + 44 0.00133 + 45 0.00148 + 46 0.00192 + 47 0.00178 + + 4 104 10 0 + 0 0.0192 + 2 0.865 + 3 0.00962 + 7 0.00962 + 9 0.00962 + 12 0.00962 + 21 0.00962 + 29 0.0192 + 40 0.0192 + 41 0.0288 + + 6 2 2 0 + 40 0.5 + 47 0.5 + + 7 24 7 0 + 0 0.0417 + 2 0.0417 + 29 0.0417 + 32 0.0417 + 40 0.5 + 41 0.25 + 42 0.0833 + + 8 5 4 0 + 7 0.2 + 29 0.2 + 40 0.4 + 42 0.2 + + 13 6 4 0 + 4 0.167 + 30 0.167 + 40 0.167 + 41 0.5 + + 15 8 5 0 + 2 0.125 + 7 0.125 + 29 0.125 + 41 0.5 + 42 0.125 + + 17 14 4 0 + 0 0.0714 + 2 0.714 + 40 0.143 + 41 0.0714 + + 20 4 3 0 + 12 0.25 + 40 0.5 + 41 0.25 + + 21 120 9 0 + 0 0.00833 + 2 0.0667 + 7 0.025 + 8 0.0167 + 26 0.00833 + 40 0.55 + 41 0.292 + 42 0.025 + 43 0.00833 + + 26 49 8 0 + 3 0.49 + 4 0.0408 + 7 0.102 + 8 0.0204 + 19 0.0204 + 40 0.224 + 41 0.0408 + 42 0.0612 + + 40 7 2 0 + 40 0.857 + 41 0.143 + + 41 8157 24 0 + 0 0.00356 + 2 0.114 + 4 0.000613 + 7 0.00282 + 12 0.000613 + 14 0.000245 + 20 0.000123 + 21 0.00049 + 22 0.000123 + 26 0.000613 + 29 0.00699 + 31 0.000368 + 32 0.000123 + 33 0.00331 + 34 0.000736 + 35 0.0011 + 40 0.303 + 41 0.527 + 42 0.0177 + 43 0.0116 + 44 0.00147 + 45 0.000123 + 46 0.000245 + 47 0.00368 + + 42 1360 18 0 + 0 0.00147 + 2 0.00588 + 3 0.00368 + 6 0.000735 + 7 0.00515 + 8 0.000735 + 9 0.000735 + 19 0.000735 + 25 0.00221 + 30 0.00147 + 32 0.000735 + 34 0.000735 + 40 0.561 + 41 0.0449 + 42 0.318 + 43 0.011 + 46 0.00441 + 47 0.036 + + 44 37 5 0 + 7 0.0811 + 40 0.027 + 41 0.027 + 42 0.0811 + 43 0.784 + + 45 324 10 0 + 2 0.0185 + 7 0.0494 + 21 0.00309 + 26 0.00309 + 30 0.00309 + 34 0.00309 + 40 0.133 + 41 0.327 + 42 0.00617 + 46 0.454 + + 46 65 5 0 + 7 0.0154 + 40 0.523 + 41 0.431 + 43 0.0154 + 46 0.0154 + + 47 72120 41 0 + 0 6.93e-05 + 1 0.000624 + 2 0.0597 + 3 0.00738 + 4 0.027 + 5 2.77e-05 + 6 6.93e-05 + 7 0.529 + 8 0.0149 + 9 0.000568 + 10 0.000139 + 13 0.0022 + 14 0.000749 + 15 0.00535 + 16 4.16e-05 + 17 2.77e-05 + 19 0.00892 + 20 0.00025 + 21 0.0123 + 22 0.000333 + 23 0.00018 + 24 6.93e-05 + 25 1.39e-05 + 26 0.0315 + 28 2.77e-05 + 29 0.00257 + 30 0.0164 + 31 0.0309 + 32 4.16e-05 + 33 1.39e-05 + 34 0.0226 + 35 0.0111 + 36 0.000707 + 37 0.00284 + 39 0.000527 + 40 0.000111 + 41 0.177 + 42 0.0204 + 44 0.0101 + 45 0.00176 + 46 0.00122 + + 48 4 4 0 + 0 0.25 + 2 0.25 + 12 0.25 + 40 0.25 + + 49 129 11 0 + 0 0.0155 + 2 0.093 + 4 0.00775 + 7 0.093 + 22 0.00775 + 26 0.0233 + 35 0.0155 + 37 0.00775 + 40 0.419 + 41 0.302 + 42 0.0155 + + 50 156 12 0 + 0 0.00641 + 2 0.0385 + 7 0.0449 + 12 0.00641 + 13 0.00641 + 14 0.00641 + 29 0.00641 + 31 0.00641 + 32 0.00641 + 40 0.66 + 41 0.192 + 42 0.0192 + + 55 2717 34 0 + 0 0.0184 + 2 0.0158 + 3 0.000368 + 4 0.00957 + 6 0.000368 + 7 0.119 + 8 0.00405 + 9 0.0011 + 12 0.00626 + 13 0.00147 + 15 0.00552 + 19 0.000368 + 20 0.000368 + 21 0.00589 + 22 0.0011 + 24 0.000736 + 25 0.000368 + 26 0.025 + 29 0.0118 + 30 0.00147 + 31 0.00405 + 32 0.00515 + 33 0.00552 + 34 0.00184 + 35 0.000368 + 37 0.000736 + 40 0.259 + 41 0.342 + 42 0.134 + 43 0.00331 + 44 0.000368 + 45 0.000368 + 46 0.000368 + 47 0.0144 + + 57 160 13 0 + 0 0.0375 + 2 0.0437 + 7 0.0812 + 12 0.025 + 26 0.025 + 29 0.0437 + 31 0.00625 + 32 0.0125 + 33 0.00625 + 35 0.00625 + 40 0.494 + 41 0.206 + 43 0.0125 + + 58 37 7 0 + 0 0.027 + 7 0.0811 + 40 0.541 + 41 0.216 + 42 0.0811 + 44 0.027 + 47 0.027 + + 60 8 5 0 + 2 0.125 + 7 0.125 + 21 0.125 + 39 0.25 + 40 0.375 + + 56 440 24 15 + 0 0.0477 + 2 0.0114 + 3 0.00227 + 4 0.00909 + 7 0.161 + 8 0.00227 + 12 0.025 + 14 0.00227 + 21 0.00455 + 26 0.0159 + 28 0.00227 + 29 0.0136 + 30 0.00909 + 31 0.00909 + 32 0.025 + 33 0.00455 + 34 0.0114 + 35 0.00909 + 39 0.00227 + 40 0.325 + 41 0.23 + 42 0.0114 + 44 0.00227 + 46 0.0636 + + 4 120 16 0 + 0 0.0583 + 2 0.0167 + 7 0.242 + 12 0.0667 + 14 0.00833 + 28 0.00833 + 31 0.025 + 32 0.025 + 33 0.00833 + 34 0.0167 + 35 0.00833 + 40 0.317 + 41 0.167 + 42 0.00833 + 44 0.00833 + 46 0.0167 + + 8 69 14 0 + 0 0.0725 + 3 0.0145 + 4 0.0145 + 7 0.217 + 8 0.0145 + 12 0.0145 + 21 0.0145 + 26 0.0435 + 30 0.0145 + 32 0.0145 + 34 0.0145 + 35 0.0145 + 40 0.333 + 41 0.203 + + 13 3 2 0 + 30 0.667 + 40 0.333 + + 14 11 7 0 + 2 0.0909 + 29 0.0909 + 32 0.0909 + 33 0.0909 + 40 0.364 + 41 0.182 + 46 0.0909 + + 15 14 4 0 + 0 0.143 + 7 0.0714 + 40 0.357 + 41 0.429 + + 20 36 9 0 + 0 0.0278 + 2 0.0278 + 7 0.25 + 26 0.0278 + 29 0.0556 + 32 0.0556 + 40 0.306 + 41 0.222 + 42 0.0278 + + 21 3 3 0 + 12 0.333 + 41 0.333 + 42 0.333 + + 30 2 2 0 + 0 0.5 + 34 0.5 + + 31 2 2 0 + 7 0.5 + 34 0.5 + + 34 1 1 0 + 4 1 + + 45 61 3 0 + 40 0.246 + 41 0.344 + 46 0.41 + + 48 10 6 0 + 4 0.1 + 7 0.2 + 21 0.1 + 32 0.1 + 40 0.4 + 41 0.1 + + 54 2 2 0 + 35 0.5 + 40 0.5 + + 55 75 12 0 + 0 0.0533 + 2 0.0133 + 4 0.0133 + 7 0.107 + 12 0.0133 + 26 0.0267 + 29 0.0267 + 32 0.0133 + 39 0.0133 + 40 0.347 + 41 0.36 + 42 0.0133 + + 60 14 6 0 + 7 0.214 + 30 0.0714 + 31 0.0714 + 32 0.0714 + 35 0.0714 + 40 0.5 + + 57 43057 41 14 + 0 0.0669 + 1 0.000279 + 2 0.0358 + 3 0.00065 + 4 0.00604 + 5 0.000139 + 6 4.65e-05 + 7 0.106 + 8 0.00476 + 9 0.000139 + 12 0.0216 + 13 0.00232 + 14 0.000836 + 15 0.00272 + 19 0.00183 + 20 2.32e-05 + 21 0.0136 + 22 0.000883 + 23 2.32e-05 + 24 6.97e-05 + 25 2.32e-05 + 26 0.0268 + 28 0.00079 + 29 0.039 + 30 0.00595 + 31 0.00711 + 32 0.00917 + 33 0.0104 + 34 0.0066 + 35 0.00249 + 36 2.32e-05 + 37 0.00221 + 39 0.000116 + 40 0.386 + 41 0.206 + 42 0.0223 + 43 0.00232 + 44 0.00221 + 45 0.00167 + 46 0.00318 + 47 0.00128 + + 2 4 4 0 + 4 0.25 + 15 0.25 + 40 0.25 + 41 0.25 + + 13 20 7 0 + 4 0.05 + 12 0.05 + 26 0.1 + 34 0.05 + 40 0.5 + 41 0.2 + 46 0.05 + + 41 1101 20 0 + 0 0.00363 + 2 0.00272 + 4 0.00182 + 7 0.0163 + 12 0.00182 + 15 0.000908 + 21 0.00182 + 26 0.00363 + 29 0.00636 + 31 0.00182 + 32 0.00182 + 33 0.00182 + 34 0.00182 + 40 0.554 + 41 0.378 + 42 0.0145 + 43 0.00182 + 44 0.000908 + 46 0.000908 + 47 0.00363 + + 42 51 5 0 + 7 0.0196 + 40 0.392 + 41 0.0784 + 42 0.471 + 46 0.0392 + + 44 14 2 0 + 0 0.0714 + 43 0.929 + + 45 21 5 0 + 7 0.0476 + 40 0.476 + 41 0.238 + 42 0.0952 + 46 0.143 + + 46 145 15 0 + 0 0.0345 + 2 0.0138 + 4 0.0069 + 7 0.0483 + 8 0.0069 + 21 0.0207 + 26 0.0207 + 29 0.0069 + 33 0.0069 + 34 0.0069 + 40 0.434 + 41 0.331 + 42 0.0345 + 44 0.0138 + 45 0.0138 + + 48 31 5 0 + 2 0.0323 + 7 0.226 + 40 0.419 + 41 0.29 + 42 0.0323 + + 49 43 8 0 + 0 0.0233 + 2 0.0233 + 7 0.0698 + 26 0.0465 + 29 0.0233 + 40 0.419 + 41 0.372 + 42 0.0233 + + 55 39258 41 0 + 0 0.0695 + 1 0.000306 + 2 0.0374 + 3 0.000662 + 4 0.00642 + 5 0.000153 + 6 5.09e-05 + 7 0.111 + 8 0.00497 + 9 0.000153 + 12 0.0224 + 13 0.00242 + 14 0.000917 + 15 0.00285 + 19 0.00199 + 20 2.55e-05 + 21 0.0143 + 22 0.000942 + 23 2.55e-05 + 24 7.64e-05 + 25 2.55e-05 + 26 0.0284 + 28 0.000841 + 29 0.0411 + 30 0.00629 + 31 0.00746 + 32 0.00978 + 33 0.0109 + 34 0.00693 + 35 0.0027 + 36 2.55e-05 + 37 0.00211 + 39 0.000127 + 40 0.374 + 41 0.202 + 42 0.0215 + 43 0.00201 + 44 0.00217 + 45 0.00163 + 46 0.00326 + 47 0.0012 + + 57 2232 30 0 + 0 0.06 + 2 0.0291 + 3 0.000896 + 4 0.00134 + 7 0.0824 + 8 0.00358 + 12 0.0206 + 13 0.00224 + 15 0.00134 + 19 0.000448 + 21 0.00806 + 22 0.000448 + 26 0.0116 + 28 0.000448 + 29 0.0233 + 30 0.00358 + 31 0.00448 + 32 0.00358 + 33 0.00851 + 34 0.00314 + 35 0.000448 + 37 0.00538 + 40 0.5 + 41 0.187 + 42 0.0269 + 43 0.00269 + 44 0.00314 + 45 0.00269 + 46 0.000896 + 47 0.00134 + + 58 51 12 0 + 0 0.0392 + 7 0.0784 + 21 0.0196 + 26 0.0196 + 29 0.0392 + 30 0.0196 + 31 0.0196 + 32 0.0196 + 40 0.431 + 41 0.235 + 42 0.0588 + 47 0.0196 + + 64 38 8 0 + 0 0.0789 + 8 0.0263 + 26 0.0526 + 29 0.0263 + 34 0.0263 + 40 0.474 + 41 0.237 + 42 0.0789 + + 69 41 6 0 + 0 0.0244 + 2 0.0732 + 29 0.0244 + 40 0.707 + 41 0.146 + 42 0.0244 + + 58 1135 32 9 + 0 0.0943 + 1 0.000881 + 2 0.0643 + 3 0.0106 + 4 0.037 + 7 0.157 + 8 0.00705 + 12 0.0308 + 13 0.00617 + 14 0.00352 + 15 0.00617 + 19 0.00352 + 20 0.00352 + 21 0.0194 + 26 0.0326 + 28 0.00176 + 29 0.0405 + 30 0.00529 + 31 0.00705 + 32 0.0211 + 33 0.0282 + 34 0.0167 + 35 0.00705 + 37 0.00176 + 39 0.000881 + 40 0.142 + 41 0.16 + 42 0.074 + 43 0.00176 + 44 0.000881 + 45 0.00617 + 47 0.00793 + + 2 23 9 0 + 4 0.304 + 8 0.087 + 13 0.174 + 14 0.0435 + 15 0.13 + 20 0.13 + 21 0.0435 + 30 0.0435 + 41 0.0435 + + 13 11 5 0 + 0 0.273 + 7 0.273 + 26 0.273 + 33 0.0909 + 40 0.0909 + + 15 4 4 0 + 2 0.25 + 21 0.25 + 26 0.25 + 41 0.25 + + 41 10 6 0 + 2 0.1 + 29 0.1 + 30 0.1 + 33 0.1 + 40 0.4 + 41 0.2 + + 46 32 7 0 + 0 0.125 + 4 0.0312 + 7 0.125 + 35 0.0312 + 40 0.188 + 41 0.469 + 42 0.0312 + + 55 969 32 0 + 0 0.0949 + 1 0.00103 + 2 0.066 + 3 0.00619 + 4 0.0341 + 7 0.161 + 8 0.00413 + 12 0.032 + 13 0.0031 + 14 0.0031 + 15 0.00413 + 19 0.0031 + 20 0.00103 + 21 0.0165 + 26 0.031 + 28 0.00206 + 29 0.0433 + 30 0.0031 + 31 0.00826 + 32 0.0248 + 33 0.0299 + 34 0.0186 + 35 0.00722 + 37 0.00206 + 39 0.00103 + 40 0.143 + 41 0.156 + 42 0.0826 + 43 0.00206 + 44 0.00103 + 45 0.00413 + 47 0.00929 + + 57 57 17 0 + 0 0.0877 + 2 0.0877 + 3 0.105 + 4 0.0175 + 7 0.105 + 8 0.0351 + 12 0.0351 + 21 0.0526 + 26 0.0175 + 29 0.0351 + 30 0.0175 + 33 0.0175 + 34 0.0175 + 40 0.158 + 41 0.123 + 42 0.0351 + 45 0.0526 + + 60 2 2 0 + 0 0.5 + 21 0.5 + + 64 5 4 0 + 0 0.2 + 2 0.4 + 19 0.2 + 41 0.2 + + 59 3 3 0 + 7 0.333 + 14 0.333 + 40 0.333 + + 60 5599 31 16 + 0 0.00982 + 2 0.0179 + 3 0.00679 + 4 0.0516 + 7 0.357 + 8 0.00732 + 9 0.00411 + 12 0.00304 + 13 0.00357 + 14 0.000179 + 15 0.00304 + 19 0.00125 + 20 0.000179 + 21 0.00589 + 22 0.000179 + 25 0.000179 + 26 0.0564 + 29 0.00304 + 30 0.0025 + 31 0.00768 + 34 0.000893 + 35 0.000536 + 37 0.000179 + 40 0.187 + 41 0.219 + 42 0.0136 + 43 0.0282 + 44 0.00679 + 45 0.000357 + 46 0.000179 + 47 0.00125 + + 3 11 8 0 + 0 0.182 + 2 0.0909 + 7 0.0909 + 14 0.0909 + 26 0.0909 + 29 0.0909 + 40 0.0909 + 41 0.273 + + 4 101 15 0 + 0 0.0396 + 2 0.0297 + 4 0.0891 + 7 0.564 + 8 0.0198 + 12 0.0099 + 15 0.0297 + 19 0.0198 + 21 0.0099 + 26 0.0297 + 29 0.0099 + 31 0.0891 + 40 0.0297 + 41 0.0198 + 44 0.0099 + + 8 72 10 0 + 0 0.0278 + 7 0.486 + 12 0.0139 + 13 0.0139 + 21 0.0278 + 26 0.0694 + 31 0.0139 + 40 0.125 + 41 0.208 + 44 0.0139 + + 13 49 7 0 + 4 0.0612 + 7 0.327 + 21 0.0204 + 34 0.0204 + 40 0.224 + 41 0.327 + 44 0.0204 + + 14 21 6 0 + 7 0.0476 + 19 0.0476 + 30 0.0476 + 40 0.714 + 41 0.0952 + 42 0.0476 + + 20 12 3 0 + 7 0.833 + 8 0.0833 + 40 0.0833 + + 21 8 4 0 + 4 0.125 + 7 0.5 + 40 0.25 + 42 0.125 + + 30 4 3 0 + 7 0.5 + 12 0.25 + 40 0.25 + + 31 30 8 0 + 0 0.1 + 4 0.0667 + 7 0.433 + 13 0.0333 + 26 0.0667 + 31 0.0667 + 40 0.133 + 41 0.1 + + 39 9 7 0 + 2 0.111 + 4 0.222 + 26 0.111 + 40 0.222 + 41 0.111 + 43 0.111 + 47 0.111 + + 42 1 1 0 + 47 1 + + 44 2 1 0 + 43 1 + + 47 5218 30 0 + 0 0.00824 + 2 0.0178 + 3 0.00728 + 4 0.0519 + 7 0.353 + 8 0.00709 + 9 0.00422 + 12 0.00268 + 13 0.00345 + 15 0.00268 + 19 0.000767 + 20 0.000192 + 21 0.00556 + 22 0.000192 + 25 0.000192 + 26 0.0583 + 29 0.00268 + 30 0.00249 + 31 0.00594 + 34 0.000767 + 35 0.000575 + 37 0.000192 + 40 0.186 + 41 0.226 + 42 0.0142 + 43 0.0295 + 44 0.00652 + 45 0.000383 + 46 0.000192 + 47 0.000958 + + 48 6 3 0 + 7 0.167 + 40 0.667 + 44 0.167 + + 55 34 8 0 + 0 0.0294 + 2 0.0588 + 7 0.441 + 8 0.0294 + 9 0.0294 + 29 0.0294 + 40 0.265 + 41 0.118 + + 60 16 4 0 + 4 0.0625 + 7 0.125 + 40 0.688 + 41 0.125 + + 61 43 6 0 + 0 0.0233 + 29 0.0233 + 33 0.0233 + 40 0.465 + 41 0.395 + 42 0.0698 + + 62 1601 28 11 + 0 0.0431 + 2 0.02 + 3 0.000625 + 4 0.00187 + 7 0.03 + 8 0.000625 + 12 0.02 + 15 0.00125 + 19 0.000625 + 21 0.0075 + 22 0.00125 + 26 0.00187 + 28 0.000625 + 29 0.0169 + 30 0.000625 + 31 0.00125 + 32 0.0025 + 33 0.00937 + 34 0.000625 + 37 0.00125 + 40 0.626 + 41 0.176 + 42 0.0162 + 43 0.00312 + 44 0.00125 + 45 0.00187 + 46 0.00874 + 47 0.005 + + 2 20 3 0 + 29 0.05 + 40 0.75 + 41 0.2 + + 4 2 2 0 + 40 0.5 + 43 0.5 + + 8 5 4 0 + 40 0.4 + 41 0.2 + 43 0.2 + 46 0.2 + + 13 936 26 0 + 0 0.0513 + 2 0.016 + 3 0.00107 + 4 0.00214 + 7 0.031 + 8 0.00107 + 12 0.0246 + 15 0.00107 + 19 0.00107 + 21 0.00962 + 22 0.00107 + 26 0.00321 + 28 0.00107 + 29 0.0214 + 31 0.00214 + 33 0.0118 + 34 0.00107 + 37 0.00214 + 40 0.607 + 41 0.185 + 42 0.0139 + 43 0.00107 + 44 0.00107 + 45 0.00321 + 46 0.00321 + 47 0.00321 + + 14 215 16 0 + 0 0.0698 + 2 0.0419 + 4 0.00465 + 7 0.0512 + 12 0.0279 + 15 0.00465 + 21 0.0093 + 22 0.00465 + 29 0.0233 + 30 0.00465 + 32 0.014 + 33 0.00465 + 40 0.581 + 41 0.144 + 42 0.00465 + 47 0.0093 + + 41 42 5 0 + 2 0.0714 + 40 0.548 + 41 0.333 + 42 0.0238 + 43 0.0238 + + 42 99 5 0 + 40 0.889 + 41 0.0303 + 42 0.0505 + 46 0.0101 + 47 0.0202 + + 45 38 4 0 + 40 0.553 + 41 0.184 + 42 0.0263 + 46 0.237 + + 47 8 4 0 + 12 0.25 + 33 0.125 + 40 0.5 + 47 0.125 + + 55 65 7 0 + 0 0.0154 + 2 0.0462 + 7 0.0615 + 40 0.569 + 41 0.246 + 42 0.0462 + 44 0.0154 + + 57 132 12 0 + 0 0.0303 + 2 0.00758 + 7 0.0227 + 12 0.00758 + 21 0.00758 + 29 0.00758 + 32 0.00758 + 33 0.0152 + 40 0.689 + 41 0.182 + 42 0.0152 + 43 0.00758 + + 64 9765 30 13 + 0 0.0406 + 2 0.012 + 4 0.00113 + 7 0.0138 + 8 0.000102 + 12 0.015 + 13 0.00041 + 14 0.000102 + 15 0.000307 + 19 0.000819 + 20 0.000102 + 21 0.00379 + 22 0.000307 + 26 0.00379 + 28 0.000614 + 29 0.0086 + 30 0.00102 + 31 0.000512 + 32 0.0044 + 33 0.00287 + 34 0.00041 + 37 0.000205 + 40 0.613 + 41 0.245 + 42 0.0247 + 43 0.00143 + 44 0.00164 + 45 0.00113 + 46 0.00113 + 47 0.00113 + + 2 12 3 0 + 40 0.75 + 41 0.0833 + 42 0.167 + + 8 2 2 0 + 40 0.5 + 44 0.5 + + 13 484 13 0 + 0 0.0331 + 2 0.00826 + 7 0.00413 + 12 0.0145 + 26 0.00207 + 29 0.0124 + 33 0.00826 + 40 0.731 + 41 0.157 + 42 0.0227 + 43 0.00207 + 45 0.00207 + 46 0.00207 + + 14 162 8 0 + 0 0.037 + 2 0.00617 + 12 0.00617 + 29 0.0123 + 32 0.00617 + 40 0.79 + 41 0.136 + 42 0.00617 + + 41 2797 15 0 + 0 0.00465 + 2 0.00107 + 4 0.000358 + 7 0.000358 + 12 0.000715 + 15 0.000358 + 21 0.000715 + 29 0.0025 + 33 0.000715 + 40 0.555 + 41 0.417 + 42 0.0136 + 43 0.000715 + 44 0.000358 + 47 0.00179 + + 42 55 4 0 + 40 0.545 + 41 0.0364 + 42 0.4 + 46 0.0182 + + 44 1 1 0 + 43 1 + + 46 78 5 0 + 2 0.0128 + 40 0.718 + 41 0.244 + 42 0.0128 + 44 0.0128 + + 49 18 3 0 + 22 0.0556 + 40 0.667 + 41 0.278 + + 55 5353 30 0 + 0 0.0616 + 2 0.0189 + 4 0.00187 + 7 0.023 + 8 0.000187 + 12 0.023 + 13 0.000747 + 14 0.000187 + 15 0.000374 + 19 0.00149 + 20 0.000187 + 21 0.00654 + 22 0.000187 + 26 0.00579 + 28 0.000934 + 29 0.0116 + 30 0.00187 + 31 0.000747 + 32 0.0071 + 33 0.00411 + 34 0.000747 + 37 0.000374 + 40 0.611 + 41 0.181 + 42 0.0275 + 43 0.00187 + 44 0.00205 + 45 0.00168 + 46 0.00168 + 47 0.00112 + + 57 678 15 0 + 0 0.0383 + 2 0.00885 + 7 0.0133 + 12 0.0192 + 22 0.00147 + 26 0.00737 + 28 0.00147 + 29 0.00885 + 31 0.00147 + 32 0.0059 + 40 0.715 + 41 0.15 + 42 0.0236 + 44 0.00295 + 45 0.00147 + + 58 36 4 0 + 0 0.0278 + 40 0.806 + 41 0.111 + 42 0.0556 + + 69 29 3 0 + 40 0.862 + 41 0.103 + 42 0.0345 + + 65 9 3 0 + 40 0.444 + 46 0.222 + 47 0.333 + + 67 5 4 0 + 40 0.4 + 42 0.2 + 46 0.2 + 47 0.2 + + 68 68 9 1 + 0 0.0294 + 2 0.0294 + 7 0.0882 + 26 0.0294 + 29 0.0294 + 32 0.0441 + 40 0.603 + 41 0.103 + 42 0.0441 + + 57 10 3 0 + 2 0.2 + 40 0.7 + 42 0.1 + + 69 4817 31 8 + 0 0.0619 + 2 0.0199 + 3 0.000415 + 4 0.00166 + 7 0.0309 + 8 0.00145 + 12 0.0276 + 13 0.000415 + 15 0.000208 + 21 0.0083 + 22 0.00083 + 25 0.000208 + 26 0.00851 + 28 0.00104 + 29 0.0324 + 30 0.00208 + 31 0.00415 + 32 0.0129 + 33 0.00893 + 34 0.00353 + 35 0.000623 + 37 0.000415 + 39 0.000208 + 40 0.478 + 41 0.256 + 42 0.0286 + 43 0.00332 + 44 0.00145 + 45 0.00083 + 46 0.00104 + 47 0.00187 + + 41 789 13 0 + 0 0.00634 + 2 0.00253 + 7 0.0152 + 12 0.00127 + 21 0.00127 + 26 0.00253 + 29 0.0139 + 32 0.00253 + 33 0.00634 + 40 0.326 + 41 0.597 + 42 0.0228 + 47 0.00253 + + 42 8 2 0 + 40 0.25 + 42 0.75 + + 44 2 1 0 + 43 1 + + 45 5 5 0 + 0 0.2 + 8 0.2 + 40 0.2 + 41 0.2 + 44 0.2 + + 46 31 6 0 + 0 0.0323 + 21 0.0323 + 32 0.0323 + 40 0.516 + 41 0.355 + 45 0.0323 + + 48 7 1 0 + 41 1 + + 55 3706 31 0 + 0 0.0739 + 2 0.0237 + 3 0.00054 + 4 0.00216 + 7 0.0351 + 8 0.00162 + 12 0.0351 + 13 0.00054 + 15 0.00027 + 21 0.00944 + 22 0.000809 + 25 0.00027 + 26 0.0105 + 28 0.00135 + 29 0.0364 + 30 0.0027 + 31 0.0054 + 32 0.0159 + 33 0.0103 + 34 0.00459 + 35 0.000809 + 37 0.00054 + 39 0.00027 + 40 0.502 + 41 0.188 + 42 0.0286 + 43 0.00324 + 44 0.00162 + 45 0.000809 + 46 0.00135 + 47 0.00189 + + 57 248 11 0 + 0 0.0645 + 2 0.0202 + 7 0.0282 + 12 0.00806 + 21 0.0121 + 22 0.00403 + 29 0.0403 + 40 0.597 + 41 0.185 + 42 0.0323 + 43 0.00806 + + 73 3 3 0 + 0 0.333 + 32 0.333 + 41 0.333 + + 74 16 7 0 + 0 0.0625 + 26 0.0625 + 35 0.0625 + 40 0.125 + 41 0.125 + 42 0.0625 + 47 0.5 + +56 3639 35 22 + 0 0.0231 + 2 0.288 + 3 0.00302 + 4 0.00769 + 6 0.000275 + 7 0.104 + 8 0.0445 + 9 0.0011 + 12 0.0115 + 13 0.0409 + 14 0.0168 + 15 0.0176 + 16 0.00055 + 18 0.000824 + 20 0.000275 + 21 0.0055 + 23 0.000275 + 26 0.00907 + 28 0.0011 + 29 0.00632 + 30 0.00467 + 31 0.0055 + 32 0.0121 + 33 0.00247 + 34 0.00632 + 35 0.00467 + 37 0.000275 + 39 0.0022 + 40 0.144 + 41 0.192 + 42 0.00714 + 43 0.00055 + 44 0.0118 + 45 0.0011 + 46 0.0231 + + 2 357 16 3 + 3 0.0224 + 4 0.0056 + 8 0.361 + 9 0.0112 + 13 0.325 + 14 0.0728 + 15 0.126 + 16 0.0028 + 20 0.0028 + 21 0.0196 + 23 0.0028 + 30 0.0084 + 31 0.014 + 33 0.0028 + 39 0.0112 + 45 0.0112 + + 41 17 7 0 + 8 0.118 + 13 0.412 + 14 0.0588 + 15 0.118 + 31 0.0588 + 39 0.176 + 45 0.0588 + + 46 3 1 0 + 45 1 + + 56 337 15 0 + 3 0.0237 + 4 0.00593 + 8 0.377 + 9 0.0119 + 13 0.323 + 14 0.0742 + 15 0.128 + 16 0.00297 + 20 0.00297 + 21 0.0208 + 23 0.00297 + 30 0.0089 + 31 0.0119 + 33 0.00297 + 39 0.00297 + + 3 7 5 0 + 2 0.286 + 4 0.286 + 40 0.143 + 41 0.143 + 46 0.143 + + 6 7 3 0 + 40 0.286 + 41 0.286 + 46 0.429 + + 13 392 19 8 + 0 0.0102 + 2 0.416 + 7 0.148 + 12 0.0102 + 14 0.0051 + 21 0.00255 + 26 0.0102 + 29 0.0051 + 30 0.00255 + 31 0.00255 + 32 0.0051 + 33 0.00255 + 34 0.0051 + 35 0.00255 + 39 0.00255 + 40 0.107 + 41 0.24 + 42 0.0051 + 46 0.0179 + + 3 7 5 0 + 2 0.429 + 7 0.143 + 14 0.143 + 31 0.143 + 40 0.143 + + 4 4 2 0 + 41 0.25 + 46 0.75 + + 8 107 13 0 + 0 0.00935 + 2 0.271 + 7 0.15 + 12 0.0187 + 21 0.00935 + 26 0.00935 + 29 0.00935 + 32 0.0187 + 34 0.0187 + 40 0.103 + 41 0.355 + 42 0.00935 + 46 0.0187 + + 9 1 1 0 + 42 1 + + 13 89 11 0 + 0 0.0337 + 2 0.371 + 7 0.169 + 12 0.0112 + 26 0.0112 + 29 0.0112 + 33 0.0112 + 39 0.0112 + 40 0.135 + 41 0.225 + 46 0.0112 + + 14 6 2 0 + 2 0.5 + 40 0.5 + + 30 8 3 0 + 7 0.125 + 40 0.5 + 41 0.375 + + 47 147 10 0 + 2 0.565 + 7 0.156 + 12 0.0068 + 14 0.0068 + 26 0.0136 + 30 0.0068 + 35 0.0068 + 40 0.0544 + 41 0.177 + 46 0.0068 + + 14 312 22 7 + 0 0.0353 + 2 0.385 + 4 0.00321 + 7 0.0994 + 8 0.016 + 12 0.00962 + 14 0.00321 + 21 0.00321 + 26 0.0192 + 28 0.00321 + 29 0.00641 + 30 0.00962 + 31 0.00641 + 32 0.0192 + 34 0.00962 + 35 0.00962 + 40 0.128 + 41 0.212 + 42 0.00321 + 43 0.00321 + 44 0.00641 + 46 0.00962 + + 8 75 12 0 + 0 0.0267 + 2 0.333 + 7 0.0933 + 8 0.0533 + 21 0.0133 + 26 0.04 + 28 0.0133 + 29 0.0133 + 35 0.0133 + 40 0.2 + 41 0.187 + 46 0.0133 + + 13 93 15 0 + 0 0.0753 + 2 0.312 + 4 0.0108 + 7 0.118 + 12 0.0215 + 30 0.0108 + 31 0.0215 + 32 0.0323 + 34 0.0108 + 35 0.0215 + 40 0.172 + 41 0.161 + 43 0.0108 + 44 0.0108 + 46 0.0108 + + 15 6 5 0 + 2 0.333 + 12 0.167 + 26 0.167 + 29 0.167 + 41 0.167 + + 21 3 3 0 + 2 0.333 + 7 0.333 + 14 0.333 + + 31 5 5 0 + 0 0.2 + 2 0.2 + 30 0.2 + 41 0.2 + 44 0.2 + + 45 1 1 0 + 46 1 + + 47 111 10 0 + 2 0.523 + 7 0.0721 + 8 0.00901 + 26 0.018 + 30 0.00901 + 32 0.027 + 34 0.018 + 40 0.0631 + 41 0.252 + 42 0.00901 + + 15 139 12 3 + 0 0.00719 + 2 0.266 + 7 0.0719 + 14 0.00719 + 18 0.0216 + 29 0.00719 + 32 0.0144 + 33 0.00719 + 40 0.194 + 41 0.223 + 44 0.0863 + 46 0.0935 + + 3 3 3 0 + 2 0.333 + 7 0.333 + 14 0.333 + + 15 83 9 0 + 2 0.265 + 7 0.012 + 29 0.012 + 32 0.0241 + 33 0.012 + 40 0.229 + 41 0.253 + 44 0.12 + 46 0.0723 + + 47 45 8 0 + 0 0.0222 + 2 0.244 + 7 0.178 + 18 0.0667 + 40 0.156 + 41 0.156 + 44 0.0444 + 46 0.133 + + 16 12 6 0 + 0 0.0833 + 2 0.417 + 7 0.0833 + 41 0.25 + 42 0.0833 + 46 0.0833 + + 18 3 3 0 + 0 0.333 + 7 0.333 + 12 0.333 + + 30 2 2 0 + 2 0.5 + 4 0.5 + + 33 1 1 0 + 4 1 + + 41 116 15 1 + 0 0.0172 + 2 0.155 + 3 0.00862 + 4 0.0259 + 6 0.00862 + 7 0.0172 + 8 0.138 + 13 0.267 + 14 0.19 + 15 0.103 + 16 0.00862 + 21 0.0172 + 31 0.00862 + 35 0.00862 + 46 0.0259 + + 57 3 3 0 + 0 0.333 + 21 0.333 + 46 0.333 + + 42 3 3 0 + 4 0.333 + 32 0.333 + 37 0.333 + + 45 3 1 0 + 15 1 + + 46 8 4 0 + 2 0.5 + 7 0.125 + 29 0.125 + 34 0.25 + + 47 1311 27 19 + 0 0.032 + 2 0.263 + 3 0.00153 + 4 0.00763 + 7 0.127 + 8 0.00458 + 12 0.016 + 13 0.000763 + 14 0.00381 + 15 0.00153 + 21 0.00381 + 26 0.0114 + 28 0.00153 + 29 0.00839 + 30 0.00534 + 31 0.00534 + 32 0.0168 + 33 0.00305 + 34 0.00763 + 35 0.0061 + 39 0.00153 + 40 0.2 + 41 0.222 + 42 0.00839 + 43 0.000763 + 44 0.0114 + 46 0.029 + + 2 2 2 0 + 3 0.5 + 30 0.5 + + 3 7 5 0 + 2 0.286 + 4 0.286 + 40 0.143 + 41 0.143 + 46 0.143 + + 6 7 3 0 + 40 0.286 + 41 0.286 + 46 0.429 + + 13 389 18 0 + 0 0.0103 + 2 0.419 + 7 0.147 + 12 0.0103 + 14 0.00514 + 21 0.00257 + 26 0.00771 + 29 0.00514 + 31 0.00257 + 32 0.00514 + 33 0.00257 + 34 0.00514 + 35 0.00257 + 39 0.00257 + 40 0.108 + 41 0.242 + 42 0.00514 + 46 0.018 + + 14 310 22 0 + 0 0.0355 + 2 0.387 + 4 0.00323 + 7 0.0968 + 8 0.0161 + 12 0.00968 + 14 0.00323 + 21 0.00323 + 26 0.0194 + 28 0.00323 + 29 0.00645 + 30 0.00968 + 31 0.00645 + 32 0.0194 + 34 0.00968 + 35 0.00968 + 40 0.129 + 41 0.213 + 42 0.00323 + 43 0.00323 + 44 0.00645 + 46 0.00645 + + 15 135 11 0 + 0 0.00741 + 2 0.274 + 7 0.0667 + 14 0.00741 + 29 0.00741 + 32 0.0148 + 33 0.00741 + 40 0.2 + 41 0.23 + 44 0.0889 + 46 0.0963 + + 16 12 6 0 + 0 0.0833 + 2 0.417 + 7 0.0833 + 41 0.25 + 42 0.0833 + 46 0.0833 + + 18 3 3 0 + 0 0.333 + 7 0.333 + 12 0.333 + + 30 2 2 0 + 2 0.5 + 4 0.5 + + 33 1 1 0 + 4 1 + + 41 7 5 0 + 0 0.286 + 2 0.143 + 3 0.143 + 7 0.286 + 31 0.143 + + 46 3 3 0 + 2 0.333 + 7 0.333 + 29 0.333 + + 48 4 1 0 + 40 1 + + 55 8 4 0 + 7 0.125 + 40 0.5 + 41 0.25 + 46 0.125 + + 56 346 23 0 + 0 0.0578 + 2 0.00867 + 4 0.0116 + 7 0.173 + 8 0.00289 + 12 0.0289 + 14 0.00289 + 21 0.00578 + 26 0.0173 + 28 0.00289 + 29 0.0145 + 30 0.00867 + 31 0.00867 + 32 0.0318 + 33 0.00578 + 34 0.0145 + 35 0.0116 + 39 0.00289 + 40 0.344 + 41 0.22 + 42 0.0116 + 44 0.00289 + 46 0.0116 + + 57 45 12 0 + 0 0.0222 + 2 0.0667 + 4 0.0222 + 7 0.0889 + 12 0.0667 + 13 0.0222 + 15 0.0444 + 21 0.0222 + 40 0.333 + 41 0.2 + 42 0.0222 + 46 0.0889 + + 58 13 4 0 + 2 0.308 + 40 0.308 + 41 0.231 + 42 0.154 + + 60 3 1 0 + 41 1 + + 64 5 4 0 + 0 0.2 + 40 0.4 + 41 0.2 + 46 0.2 + + 48 4 1 0 + 40 1 + + 55 20 9 1 + 2 0.05 + 7 0.35 + 29 0.05 + 31 0.05 + 34 0.05 + 40 0.2 + 41 0.1 + 42 0.1 + 46 0.05 + + 47 10 6 0 + 2 0.1 + 7 0.5 + 29 0.1 + 31 0.1 + 34 0.1 + 42 0.1 + + 56 860 23 4 + 0 0.0233 + 2 0.395 + 4 0.00698 + 7 0.11 + 8 0.00581 + 12 0.0116 + 14 0.00465 + 21 0.00349 + 26 0.0093 + 28 0.00116 + 29 0.00581 + 30 0.00349 + 31 0.00349 + 32 0.0128 + 33 0.00233 + 34 0.00581 + 35 0.00465 + 39 0.00116 + 40 0.138 + 41 0.217 + 42 0.00698 + 44 0.0163 + 46 0.0093 + + 2 351 23 0 + 0 0.057 + 2 0.0114 + 4 0.0114 + 7 0.177 + 8 0.00285 + 12 0.0285 + 14 0.0114 + 21 0.0057 + 26 0.0171 + 28 0.00285 + 29 0.0142 + 30 0.00855 + 31 0.00855 + 32 0.0313 + 33 0.0057 + 34 0.0142 + 35 0.0114 + 39 0.00285 + 40 0.328 + 41 0.225 + 42 0.0114 + 44 0.00285 + 46 0.0114 + + 41 83 2 0 + 2 0.675 + 41 0.325 + + 45 8 3 0 + 40 0.25 + 41 0.25 + 46 0.5 + + 47 414 9 0 + 2 0.676 + 4 0.00483 + 7 0.0773 + 8 0.00966 + 21 0.00242 + 26 0.00483 + 41 0.188 + 42 0.00483 + 44 0.0314 + + 57 50 12 0 + 0 0.02 + 2 0.06 + 4 0.02 + 7 0.12 + 12 0.06 + 13 0.02 + 15 0.04 + 21 0.02 + 40 0.3 + 41 0.24 + 42 0.02 + 46 0.08 + + 58 14 4 0 + 2 0.286 + 40 0.286 + 41 0.286 + 42 0.143 + + 60 3 1 0 + 41 1 + + 64 6 4 0 + 0 0.167 + 40 0.333 + 41 0.333 + 46 0.167 + +57 285122 47 41 + 0 0.025 + 1 0.000582 + 2 0.0249 + 3 0.0218 + 4 0.118 + 5 0.000179 + 6 8.77e-05 + 7 0.0779 + 8 0.0345 + 9 0.00187 + 10 0.000544 + 12 0.0081 + 13 0.0408 + 14 0.0204 + 15 0.0544 + 16 0.000593 + 17 0.000368 + 18 0.000154 + 19 0.00467 + 20 0.0129 + 21 0.012 + 22 0.000722 + 23 7.01e-05 + 24 2.1e-05 + 25 1.4e-05 + 26 0.018 + 27 7.01e-06 + 28 0.000656 + 29 0.0139 + 30 0.013 + 31 0.0035 + 32 0.00343 + 33 0.0038 + 34 0.00234 + 35 0.00156 + 36 1.05e-05 + 37 0.00221 + 38 0.000277 + 39 0.0111 + 40 0.28 + 41 0.164 + 42 0.0145 + 43 0.00169 + 44 0.00118 + 45 0.00235 + 46 0.00192 + 47 0.00108 + + 2 472 17 6 + 3 0.00847 + 4 0.0275 + 7 0.684 + 8 0.0424 + 9 0.00636 + 13 0.0169 + 14 0.0169 + 15 0.0106 + 20 0.00212 + 21 0.0826 + 22 0.00212 + 26 0.0742 + 30 0.00424 + 31 0.00424 + 39 0.00212 + 41 0.0127 + 45 0.00212 + + 3 1 1 0 + 3 1 + + 7 33 2 0 + 4 0.0606 + 7 0.939 + + 41 83 8 0 + 3 0.0241 + 4 0.012 + 7 0.602 + 21 0.253 + 22 0.012 + 26 0.0723 + 31 0.012 + 45 0.012 + + 47 56 10 0 + 3 0.0179 + 4 0.179 + 8 0.357 + 9 0.0357 + 13 0.125 + 14 0.143 + 15 0.0714 + 30 0.0357 + 31 0.0179 + 39 0.0179 + + 55 3 3 0 + 13 0.333 + 15 0.333 + 20 0.333 + + 57 280 5 0 + 7 0.807 + 9 0.00357 + 21 0.0643 + 26 0.104 + 41 0.0214 + + 6 13 5 0 + 4 0.154 + 8 0.231 + 14 0.0769 + 15 0.462 + 39 0.0769 + + 7 83957 45 12 + 0 0.000107 + 1 0.00155 + 2 0.00102 + 3 0.0553 + 4 0.345 + 5 3.57e-05 + 6 0.000226 + 7 0.0167 + 8 0.0969 + 9 0.00506 + 10 0.00163 + 12 4.76e-05 + 13 0.119 + 14 0.0601 + 15 0.16 + 16 0.00185 + 17 0.00114 + 19 0.00769 + 20 0.0394 + 21 0.0123 + 22 0.000643 + 23 0.000167 + 25 1.19e-05 + 26 0.000798 + 27 1.19e-05 + 28 0.000119 + 29 2.38e-05 + 30 0.0324 + 31 0.00273 + 32 1.19e-05 + 33 2.38e-05 + 34 0.000226 + 35 0.00219 + 36 1.19e-05 + 37 0.00157 + 38 0.000584 + 39 0.0269 + 40 0.000655 + 41 0.000691 + 42 0.000202 + 43 3.57e-05 + 44 0.00031 + 45 0.00479 + 46 0.000119 + 47 0.000191 + + 2 40 9 0 + 3 0.025 + 4 0.35 + 7 0.1 + 8 0.025 + 13 0.175 + 14 0.05 + 15 0.225 + 19 0.025 + 20 0.025 + + 4 18 7 0 + 2 0.167 + 4 0.278 + 13 0.0556 + 14 0.0556 + 15 0.278 + 20 0.111 + 40 0.0556 + + 7 356 14 0 + 3 0.00562 + 4 0.41 + 8 0.16 + 9 0.0281 + 13 0.129 + 14 0.0927 + 15 0.0365 + 20 0.0871 + 21 0.00281 + 30 0.014 + 31 0.014 + 35 0.00281 + 39 0.00281 + 45 0.014 + + 8 342 16 0 + 3 0.00292 + 4 0.146 + 7 0.00585 + 8 0.12 + 9 0.00585 + 13 0.184 + 14 0.0848 + 15 0.371 + 20 0.00292 + 21 0.00585 + 30 0.0263 + 31 0.00292 + 32 0.00292 + 37 0.00585 + 41 0.00585 + 45 0.0263 + + 21 289 21 0 + 1 0.0138 + 3 0.0346 + 4 0.301 + 7 0.0484 + 8 0.0934 + 9 0.00346 + 10 0.00346 + 13 0.111 + 14 0.0484 + 15 0.0727 + 19 0.00346 + 20 0.0381 + 21 0.0277 + 26 0.0104 + 28 0.00692 + 30 0.163 + 31 0.00346 + 35 0.00346 + 39 0.00346 + 41 0.00346 + 45 0.00692 + + 22 5 4 0 + 4 0.4 + 14 0.2 + 15 0.2 + 28 0.2 + + 44 1 1 0 + 43 1 + + 45 5 4 0 + 4 0.2 + 13 0.4 + 21 0.2 + 30 0.2 + + 47 82196 44 0 + 0 0.000109 + 1 0.0015 + 2 0.00101 + 3 0.0561 + 4 0.345 + 5 3.65e-05 + 6 0.000231 + 7 0.0161 + 8 0.0969 + 9 0.00495 + 10 0.00164 + 12 4.87e-05 + 13 0.118 + 14 0.0599 + 15 0.16 + 16 0.00189 + 17 0.00117 + 19 0.00779 + 20 0.0393 + 21 0.0123 + 22 0.000657 + 23 0.00017 + 25 1.22e-05 + 26 0.000766 + 27 1.22e-05 + 28 8.52e-05 + 29 2.43e-05 + 30 0.032 + 31 0.0027 + 33 1.22e-05 + 34 0.000231 + 35 0.0022 + 36 1.22e-05 + 37 0.00157 + 38 0.000596 + 39 0.0274 + 40 0.000657 + 41 0.000645 + 42 0.000207 + 43 2.43e-05 + 44 0.000316 + 45 0.00467 + 46 0.000109 + 47 0.000182 + + 49 561 20 0 + 1 0.00535 + 3 0.0232 + 4 0.385 + 7 0.0945 + 8 0.0731 + 9 0.00891 + 10 0.00178 + 13 0.171 + 14 0.0624 + 15 0.0838 + 19 0.00713 + 20 0.0285 + 21 0.00535 + 30 0.0357 + 33 0.00178 + 35 0.00178 + 39 0.00357 + 45 0.00357 + 46 0.00178 + 47 0.00178 + + 55 124 13 0 + 3 0.0242 + 4 0.54 + 8 0.0403 + 13 0.0968 + 14 0.00806 + 15 0.0645 + 20 0.105 + 21 0.0161 + 26 0.00806 + 30 0.0645 + 37 0.00806 + 39 0.00806 + 41 0.0161 + + 57 8 4 0 + 4 0.125 + 7 0.625 + 13 0.125 + 21 0.125 + + 8 27 13 0 + 3 0.0741 + 4 0.111 + 9 0.037 + 13 0.148 + 14 0.111 + 15 0.111 + 19 0.037 + 20 0.037 + 26 0.111 + 30 0.111 + 39 0.037 + 40 0.037 + 46 0.037 + + 13 8 4 0 + 3 0.125 + 15 0.375 + 40 0.25 + 41 0.25 + + 14 6 4 0 + 2 0.167 + 32 0.167 + 40 0.333 + 41 0.333 + + 15 12 4 0 + 4 0.25 + 14 0.0833 + 15 0.583 + 16 0.0833 + + 20 2 1 0 + 14 1 + + 21 132 17 5 + 2 0.00758 + 3 0.0227 + 4 0.0985 + 7 0.205 + 8 0.114 + 9 0.00758 + 13 0.0455 + 14 0.00758 + 15 0.0379 + 19 0.0303 + 20 0.0227 + 21 0.197 + 26 0.0455 + 30 0.053 + 31 0.0227 + 40 0.0455 + 41 0.0379 + + 2 14 2 0 + 7 0.714 + 26 0.286 + + 7 10 5 0 + 4 0.1 + 19 0.1 + 21 0.1 + 40 0.3 + 41 0.4 + + 41 14 4 0 + 7 0.786 + 21 0.0714 + 26 0.0714 + 30 0.0714 + + 47 80 15 0 + 2 0.0125 + 3 0.0375 + 4 0.138 + 7 0.05 + 8 0.162 + 9 0.0125 + 13 0.075 + 15 0.0125 + 19 0.025 + 20 0.0375 + 21 0.275 + 26 0.0125 + 30 0.075 + 31 0.0375 + 40 0.0375 + + 49 8 6 0 + 4 0.125 + 8 0.25 + 14 0.125 + 15 0.25 + 19 0.125 + 21 0.125 + + 22 2 2 0 + 8 0.5 + 14 0.5 + + 23 4 2 0 + 26 0.5 + 41 0.5 + + 24 55 14 0 + 0 0.0364 + 3 0.0545 + 4 0.145 + 7 0.182 + 8 0.0545 + 14 0.0364 + 15 0.0727 + 21 0.0364 + 26 0.145 + 30 0.0182 + 31 0.0182 + 40 0.145 + 41 0.0182 + 45 0.0364 + + 26 8661 37 4 + 0 0.000231 + 1 0.00115 + 2 0.00104 + 3 0.158 + 4 0.289 + 6 0.000231 + 7 0.00912 + 8 0.0774 + 9 0.00774 + 10 0.000577 + 13 0.0784 + 14 0.0602 + 15 0.116 + 16 0.00115 + 17 0.000808 + 19 0.0128 + 20 0.0344 + 21 0.0102 + 22 0.000693 + 23 0.000115 + 27 0.000115 + 28 0.00739 + 30 0.0172 + 31 0.00323 + 34 0.000346 + 35 0.00254 + 37 0.000693 + 38 0.00346 + 39 0.1 + 40 0.000462 + 41 0.00104 + 42 0.000115 + 43 0.000115 + 44 0.000346 + 45 0.00323 + 46 0.000115 + 47 0.000462 + + 8 12 6 0 + 4 0.417 + 8 0.0833 + 13 0.167 + 14 0.0833 + 15 0.0833 + 20 0.167 + + 21 8 4 0 + 4 0.625 + 8 0.125 + 14 0.125 + 31 0.125 + + 41 1 1 0 + 28 1 + + 49 36 8 0 + 3 0.0278 + 4 0.556 + 8 0.111 + 9 0.111 + 13 0.0833 + 14 0.0278 + 15 0.0278 + 20 0.0556 + + 28 2 2 0 + 4 0.5 + 37 0.5 + + 29 2 1 0 + 4 1 + + 30 613 21 0 + 3 0.0375 + 4 0.401 + 7 0.00489 + 8 0.106 + 9 0.00816 + 13 0.116 + 14 0.0571 + 15 0.166 + 16 0.00163 + 19 0.00163 + 20 0.0277 + 21 0.00326 + 22 0.00163 + 25 0.00163 + 30 0.0147 + 31 0.00816 + 37 0.00489 + 39 0.0245 + 41 0.00326 + 42 0.00163 + 45 0.00816 + + 31 57 10 0 + 4 0.526 + 7 0.123 + 8 0.0877 + 13 0.0175 + 15 0.0877 + 19 0.0351 + 20 0.0702 + 29 0.0175 + 30 0.0175 + 35 0.0175 + + 40 16 3 0 + 40 0.188 + 46 0.125 + 47 0.688 + + 41 284 20 7 + 0 0.0106 + 2 0.317 + 3 0.00704 + 4 0.173 + 5 0.00352 + 7 0.19 + 8 0.00704 + 13 0.00704 + 15 0.00352 + 19 0.00352 + 20 0.00352 + 21 0.148 + 22 0.00704 + 26 0.0634 + 28 0.00704 + 29 0.0106 + 34 0.00704 + 37 0.00352 + 45 0.0141 + 46 0.0141 + + 2 2 1 0 + 22 1 + + 7 7 3 0 + 21 0.286 + 28 0.286 + 45 0.429 + + 48 2 1 0 + 46 1 + + 49 6 4 0 + 2 0.167 + 4 0.167 + 7 0.5 + 34 0.167 + + 52 3 2 0 + 13 0.667 + 20 0.333 + + 55 71 12 0 + 0 0.0282 + 2 0.0423 + 4 0.62 + 5 0.0141 + 7 0.169 + 8 0.0282 + 15 0.0141 + 19 0.0141 + 21 0.0141 + 26 0.0141 + 29 0.0282 + 46 0.0141 + + 57 189 11 0 + 0 0.00529 + 2 0.45 + 3 0.0106 + 4 0.0212 + 7 0.206 + 21 0.196 + 26 0.0899 + 29 0.00529 + 34 0.00529 + 37 0.00529 + 45 0.00529 + + 42 32 10 3 + 2 0.219 + 4 0.0938 + 7 0.125 + 8 0.0312 + 13 0.0312 + 21 0.125 + 26 0.0312 + 30 0.0312 + 42 0.0312 + 47 0.281 + + 7 5 4 0 + 4 0.4 + 8 0.2 + 30 0.2 + 42 0.2 + + 55 10 2 0 + 13 0.1 + 47 0.9 + + 57 16 4 0 + 2 0.438 + 7 0.25 + 21 0.25 + 26 0.0625 + + 43 7 6 0 + 0 0.143 + 2 0.143 + 3 0.143 + 14 0.143 + 15 0.143 + 41 0.286 + + 44 4 3 0 + 4 0.25 + 15 0.5 + 21 0.25 + + 45 232 15 3 + 1 0.00862 + 3 0.00862 + 4 0.168 + 7 0.00431 + 8 0.22 + 10 0.00431 + 13 0.159 + 14 0.0517 + 15 0.241 + 19 0.00431 + 21 0.0431 + 28 0.0129 + 30 0.056 + 31 0.00431 + 35 0.0129 + + 26 17 8 0 + 3 0.0588 + 4 0.0588 + 8 0.176 + 13 0.235 + 15 0.294 + 21 0.0588 + 28 0.0588 + 30 0.0588 + + 41 2 2 0 + 10 0.5 + 15 0.5 + + 55 1 1 0 + 7 1 + + 46 72 19 4 + 0 0.0139 + 2 0.111 + 4 0.0972 + 7 0.208 + 8 0.0278 + 12 0.0278 + 13 0.0417 + 14 0.0417 + 15 0.0417 + 20 0.0139 + 21 0.0278 + 26 0.0833 + 29 0.0139 + 32 0.0139 + 33 0.0417 + 40 0.0278 + 42 0.0972 + 44 0.0139 + 47 0.0556 + + 7 10 4 0 + 4 0.4 + 14 0.3 + 15 0.2 + 20 0.1 + + 41 4 4 0 + 4 0.25 + 13 0.25 + 15 0.25 + 29 0.25 + + 55 44 14 0 + 0 0.0227 + 2 0.159 + 7 0.318 + 8 0.0455 + 12 0.0455 + 13 0.0227 + 21 0.0227 + 26 0.136 + 32 0.0227 + 33 0.0682 + 40 0.0455 + 42 0.0455 + 44 0.0227 + 47 0.0227 + + 62 2 1 0 + 42 1 + + 47 94690 45 25 + 0 0.0377 + 1 0.000127 + 2 0.0352 + 3 0.000898 + 4 0.00774 + 5 0.000253 + 6 2.11e-05 + 7 0.106 + 8 0.0044 + 9 0.000158 + 10 6.34e-05 + 12 0.0122 + 13 0.00432 + 14 0.000993 + 15 0.00449 + 16 1.06e-05 + 17 1.06e-05 + 18 0.000232 + 19 0.00299 + 20 0.00018 + 21 0.0112 + 22 0.00075 + 23 3.17e-05 + 24 3.17e-05 + 25 1.06e-05 + 26 0.0254 + 28 0.00057 + 29 0.0208 + 30 0.00416 + 31 0.00387 + 32 0.00516 + 33 0.00571 + 34 0.00339 + 35 0.00124 + 36 1.06e-05 + 37 0.00257 + 39 9.5e-05 + 40 0.421 + 41 0.245 + 42 0.0216 + 43 0.0025 + 44 0.00162 + 45 0.0012 + 46 0.00251 + 47 0.00163 + + 7 248 21 0 + 0 0.0282 + 2 0.121 + 4 0.0685 + 7 0.117 + 8 0.0242 + 12 0.0161 + 13 0.0121 + 14 0.0121 + 15 0.0121 + 20 0.00403 + 21 0.0323 + 22 0.00403 + 26 0.0323 + 29 0.00403 + 31 0.00806 + 37 0.00806 + 40 0.222 + 41 0.169 + 42 0.0363 + 43 0.00403 + 47 0.0645 + + 8 4 2 0 + 26 0.75 + 40 0.25 + + 14 6 4 0 + 2 0.167 + 32 0.167 + 40 0.333 + 41 0.333 + + 21 20 8 0 + 2 0.05 + 4 0.05 + 7 0.2 + 19 0.05 + 21 0.05 + 26 0.05 + 40 0.3 + 41 0.25 + + 23 4 2 0 + 26 0.5 + 41 0.5 + + 24 17 7 0 + 0 0.118 + 7 0.176 + 15 0.0588 + 21 0.0588 + 26 0.0588 + 40 0.471 + 41 0.0588 + + 26 38 12 0 + 0 0.0526 + 2 0.0789 + 4 0.0526 + 7 0.237 + 14 0.0263 + 15 0.0526 + 19 0.0263 + 21 0.0526 + 23 0.0263 + 40 0.105 + 41 0.184 + 47 0.105 + + 40 11 1 0 + 47 1 + + 41 27 12 0 + 0 0.111 + 2 0.0741 + 3 0.037 + 4 0.185 + 5 0.037 + 7 0.185 + 15 0.037 + 19 0.037 + 21 0.037 + 26 0.148 + 29 0.0741 + 45 0.037 + + 42 10 2 0 + 13 0.1 + 47 0.9 + + 43 4 3 0 + 0 0.25 + 2 0.25 + 41 0.5 + + 46 58 17 0 + 0 0.0172 + 2 0.138 + 4 0.0345 + 7 0.259 + 8 0.0345 + 12 0.0345 + 13 0.0172 + 15 0.0172 + 21 0.0172 + 26 0.103 + 29 0.0172 + 32 0.0172 + 33 0.0517 + 40 0.0345 + 42 0.121 + 44 0.0172 + 47 0.069 + + 48 254 23 0 + 0 0.0394 + 2 0.0394 + 4 0.0276 + 7 0.157 + 12 0.00787 + 13 0.00394 + 14 0.0157 + 15 0.00394 + 21 0.00787 + 22 0.00394 + 26 0.0394 + 29 0.00787 + 30 0.00394 + 31 0.00787 + 33 0.00394 + 37 0.00787 + 39 0.00394 + 40 0.26 + 41 0.291 + 42 0.0394 + 43 0.00394 + 45 0.0118 + 46 0.0118 + + 49 446 17 0 + 0 0.0112 + 2 0.0202 + 4 0.00897 + 7 0.0336 + 8 0.00224 + 13 0.00224 + 15 0.00673 + 19 0.00448 + 26 0.0224 + 29 0.00448 + 32 0.00224 + 33 0.00224 + 40 0.601 + 41 0.258 + 42 0.0157 + 43 0.00224 + 46 0.00224 + + 51 17 2 0 + 40 0.706 + 41 0.294 + + 55 87632 45 0 + 0 0.0392 + 1 0.000137 + 2 0.0359 + 3 0.000913 + 4 0.0077 + 5 0.000262 + 6 2.28e-05 + 7 0.111 + 8 0.0046 + 9 0.00016 + 10 6.85e-05 + 12 0.0127 + 13 0.00454 + 14 0.000959 + 15 0.00461 + 16 1.14e-05 + 17 1.14e-05 + 18 0.000251 + 19 0.00304 + 20 0.000183 + 21 0.0117 + 22 0.000742 + 23 2.28e-05 + 24 3.42e-05 + 25 1.14e-05 + 26 0.0265 + 28 0.000605 + 29 0.0222 + 30 0.00445 + 31 0.00404 + 32 0.00544 + 33 0.00598 + 34 0.00358 + 35 0.0013 + 36 1.14e-05 + 37 0.00261 + 39 9.13e-05 + 40 0.408 + 41 0.246 + 42 0.0216 + 43 0.00251 + 44 0.00163 + 45 0.00118 + 46 0.00252 + 47 0.00106 + + 57 2302 31 0 + 0 0.0122 + 2 0.0187 + 3 0.0013 + 4 0.00608 + 7 0.0478 + 8 0.0013 + 9 0.000434 + 12 0.00348 + 13 0.00174 + 14 0.000869 + 15 0.00348 + 19 0.00174 + 21 0.00608 + 22 0.0013 + 26 0.0113 + 29 0.00521 + 30 0.000434 + 31 0.00174 + 32 0.00217 + 33 0.000869 + 34 0.000434 + 35 0.0013 + 37 0.00217 + 40 0.595 + 41 0.241 + 42 0.0204 + 43 0.00304 + 44 0.00174 + 45 0.000869 + 46 0.00261 + 47 0.00304 + + 58 9 5 0 + 2 0.111 + 4 0.111 + 7 0.222 + 40 0.333 + 41 0.222 + + 62 3086 28 0 + 0 0.0198 + 2 0.0237 + 3 0.000324 + 4 0.00162 + 7 0.0256 + 8 0.000648 + 12 0.00713 + 15 0.000324 + 19 0.00259 + 21 0.00324 + 22 0.000324 + 26 0.00551 + 28 0.000324 + 29 0.00259 + 30 0.000648 + 31 0.0013 + 32 0.000972 + 33 0.00324 + 34 0.00162 + 37 0.0013 + 40 0.631 + 41 0.239 + 42 0.0185 + 43 0.00194 + 44 0.000972 + 45 0.00162 + 46 0.00162 + 47 0.00259 + + 64 448 14 0 + 0 0.0246 + 2 0.0134 + 7 0.0246 + 12 0.00893 + 21 0.00223 + 26 0.00223 + 32 0.00223 + 34 0.00223 + 40 0.696 + 41 0.192 + 42 0.0223 + 43 0.00223 + 44 0.00446 + 46 0.00223 + + 67 1 1 0 + 46 1 + + 68 17 2 0 + 40 0.765 + 41 0.235 + + 69 14 6 0 + 0 0.0714 + 2 0.0714 + 37 0.0714 + 40 0.571 + 41 0.143 + 42 0.0714 + + 72 5 2 0 + 0 0.6 + 29 0.4 + + 74 3 2 0 + 40 0.333 + 47 0.667 + + 48 259 23 3 + 0 0.0386 + 2 0.0386 + 4 0.027 + 7 0.154 + 12 0.00772 + 13 0.00386 + 14 0.0154 + 15 0.00386 + 21 0.00772 + 22 0.00386 + 26 0.0386 + 29 0.00772 + 30 0.00386 + 31 0.00772 + 33 0.00386 + 37 0.00772 + 39 0.00386 + 40 0.255 + 41 0.293 + 42 0.0386 + 43 0.00386 + 45 0.0116 + 46 0.0232 + + 21 14 5 0 + 4 0.0714 + 7 0.0714 + 40 0.5 + 41 0.214 + 46 0.143 + + 26 22 5 0 + 7 0.5 + 14 0.0455 + 40 0.182 + 41 0.182 + 42 0.0909 + + 45 14 3 0 + 40 0.5 + 41 0.286 + 46 0.214 + + 49 475 17 5 + 0 0.0105 + 2 0.0189 + 4 0.0168 + 7 0.0674 + 8 0.00211 + 13 0.00211 + 15 0.00842 + 19 0.00421 + 26 0.0232 + 29 0.00421 + 32 0.00211 + 33 0.00211 + 40 0.564 + 41 0.255 + 42 0.0147 + 43 0.00211 + 46 0.00211 + + 2 12 3 0 + 4 0.0833 + 7 0.833 + 26 0.0833 + + 7 209 16 0 + 0 0.0191 + 2 0.0287 + 4 0.0335 + 7 0.067 + 8 0.00478 + 15 0.0144 + 19 0.00957 + 26 0.0431 + 29 0.00957 + 32 0.00478 + 33 0.00478 + 40 0.364 + 41 0.368 + 42 0.0191 + 43 0.00478 + 46 0.00478 + + 21 6 5 0 + 0 0.167 + 7 0.167 + 13 0.167 + 40 0.333 + 41 0.167 + + 41 53 4 0 + 7 0.113 + 26 0.0189 + 40 0.755 + 41 0.113 + + 55 186 5 0 + 2 0.0161 + 7 0.00538 + 40 0.785 + 41 0.177 + 42 0.0161 + + 50 38 2 0 + 7 0.842 + 26 0.158 + + 51 18 3 0 + 40 0.667 + 41 0.278 + 46 0.0556 + + 52 3 1 0 + 41 1 + + 55 88258 45 19 + 0 0.0389 + 1 0.000136 + 2 0.0356 + 3 0.000974 + 4 0.00988 + 5 0.000261 + 6 2.27e-05 + 7 0.112 + 8 0.00509 + 9 0.000159 + 10 6.8e-05 + 12 0.0126 + 13 0.00455 + 14 0.000952 + 15 0.00487 + 16 1.13e-05 + 17 1.13e-05 + 18 0.000249 + 19 0.00301 + 20 0.000181 + 21 0.0119 + 22 0.000748 + 23 2.27e-05 + 24 3.4e-05 + 25 1.13e-05 + 26 0.0263 + 28 0.000601 + 29 0.022 + 30 0.00442 + 31 0.00401 + 32 0.0054 + 33 0.00594 + 34 0.00356 + 35 0.00129 + 36 1.13e-05 + 37 0.00261 + 39 9.06e-05 + 40 0.405 + 41 0.245 + 42 0.0216 + 43 0.00253 + 44 0.00162 + 45 0.00118 + 46 0.003 + 47 0.00105 + + 2 62 11 0 + 0 0.0323 + 2 0.0161 + 7 0.0806 + 13 0.0323 + 21 0.0161 + 26 0.0161 + 40 0.258 + 41 0.435 + 42 0.0806 + 43 0.0161 + 47 0.0161 + + 6 13 6 0 + 0 0.0769 + 13 0.0769 + 15 0.0769 + 40 0.385 + 43 0.231 + 47 0.154 + + 7 78674 44 0 + 0 0.0417 + 1 0.000153 + 2 0.0359 + 3 0.000953 + 4 0.01 + 5 0.000267 + 6 2.54e-05 + 7 0.102 + 8 0.0053 + 9 0.000165 + 10 7.63e-05 + 12 0.0136 + 13 0.00469 + 14 0.00103 + 15 0.00516 + 16 1.27e-05 + 17 1.27e-05 + 18 0.00028 + 19 0.00324 + 20 0.000178 + 21 0.0122 + 22 0.000775 + 23 2.54e-05 + 24 3.81e-05 + 26 0.0278 + 28 0.000636 + 29 0.0238 + 30 0.00456 + 31 0.0044 + 32 0.00578 + 33 0.0063 + 34 0.00385 + 35 0.0014 + 36 1.27e-05 + 37 0.00253 + 39 8.9e-05 + 40 0.401 + 41 0.25 + 42 0.0215 + 43 0.00247 + 44 0.00174 + 45 0.00114 + 46 0.00262 + 47 0.00105 + + 8 16 7 0 + 2 0.0625 + 7 0.188 + 21 0.125 + 25 0.0625 + 26 0.125 + 40 0.25 + 41 0.188 + + 13 4 3 0 + 7 0.25 + 29 0.25 + 41 0.5 + + 15 11 4 0 + 40 0.273 + 41 0.364 + 42 0.0909 + 46 0.273 + + 21 54 11 0 + 2 0.111 + 4 0.0185 + 7 0.111 + 8 0.0185 + 15 0.0185 + 19 0.0185 + 26 0.0185 + 32 0.0185 + 40 0.426 + 41 0.185 + 42 0.0556 + + 24 23 7 0 + 2 0.0435 + 4 0.0435 + 7 0.13 + 13 0.0435 + 40 0.435 + 41 0.261 + 43 0.0435 + + 26 8384 35 0 + 0 0.0173 + 2 0.0354 + 3 0.00131 + 4 0.00942 + 5 0.000239 + 7 0.22 + 8 0.0037 + 9 0.000119 + 12 0.00549 + 13 0.00334 + 14 0.000358 + 15 0.00262 + 19 0.00119 + 20 0.000239 + 21 0.0099 + 22 0.000596 + 26 0.0149 + 28 0.000358 + 29 0.00704 + 30 0.0037 + 31 0.000954 + 32 0.00239 + 33 0.00322 + 34 0.00131 + 35 0.000358 + 37 0.0037 + 39 0.000119 + 40 0.433 + 41 0.191 + 42 0.0198 + 43 0.00191 + 44 0.000716 + 45 0.00143 + 46 0.00155 + 47 0.000716 + + 30 598 14 0 + 0 0.00836 + 2 0.00836 + 4 0.00167 + 7 0.0134 + 13 0.00167 + 29 0.0134 + 32 0.00167 + 33 0.00167 + 40 0.562 + 41 0.319 + 42 0.0602 + 43 0.00502 + 45 0.00167 + 47 0.00167 + + 31 45 5 0 + 2 0.0222 + 40 0.267 + 41 0.644 + 42 0.0444 + 43 0.0222 + + 41 10 2 0 + 40 0.8 + 41 0.2 + + 42 5 1 0 + 40 1 + + 44 3 1 0 + 43 1 + + 45 185 5 0 + 2 0.00541 + 7 0.00541 + 40 0.497 + 41 0.259 + 46 0.232 + + 46 12 4 0 + 7 0.0833 + 40 0.583 + 41 0.25 + 45 0.0833 + + 55 121 7 0 + 2 0.0248 + 7 0.0496 + 21 0.00826 + 40 0.736 + 41 0.165 + 42 0.00826 + 43 0.00826 + + 57 10 6 0 + 0 0.2 + 7 0.2 + 21 0.1 + 35 0.1 + 40 0.2 + 41 0.2 + + 58 15 3 0 + 29 0.0667 + 40 0.667 + 41 0.267 + + 57 3084 31 15 + 0 0.00908 + 2 0.105 + 3 0.000973 + 4 0.00681 + 7 0.0516 + 8 0.0013 + 9 0.000324 + 12 0.00259 + 13 0.00162 + 14 0.0013 + 15 0.00292 + 19 0.00162 + 21 0.0123 + 22 0.000973 + 26 0.0717 + 29 0.00389 + 30 0.000324 + 31 0.0013 + 32 0.00162 + 33 0.000649 + 34 0.000324 + 35 0.000973 + 37 0.00195 + 40 0.445 + 41 0.243 + 42 0.0211 + 43 0.00259 + 44 0.00195 + 45 0.000649 + 46 0.00227 + 47 0.00227 + + 2 354 24 0 + 0 0.00847 + 2 0.0254 + 4 0.0169 + 7 0.0508 + 12 0.00282 + 13 0.00282 + 14 0.00282 + 15 0.00282 + 19 0.00282 + 21 0.00847 + 26 0.00847 + 29 0.0169 + 31 0.00282 + 32 0.00282 + 35 0.00282 + 37 0.00282 + 40 0.621 + 41 0.169 + 42 0.0282 + 43 0.00565 + 44 0.00282 + 45 0.00565 + 46 0.00282 + 47 0.00282 + + 4 11 2 0 + 2 0.818 + 41 0.182 + + 7 619 28 0 + 0 0.0226 + 2 0.0468 + 3 0.00162 + 4 0.0162 + 7 0.0565 + 8 0.00485 + 9 0.00162 + 12 0.00808 + 13 0.00485 + 14 0.00323 + 15 0.00646 + 19 0.00485 + 21 0.0162 + 22 0.00162 + 26 0.00808 + 29 0.00969 + 30 0.00162 + 31 0.00162 + 32 0.00485 + 33 0.00162 + 35 0.00323 + 37 0.00646 + 40 0.439 + 41 0.288 + 42 0.0242 + 43 0.00646 + 46 0.00646 + 47 0.00323 + + 8 10 3 0 + 0 0.1 + 40 0.7 + 41 0.2 + + 21 90 8 0 + 2 0.111 + 3 0.0111 + 7 0.0778 + 12 0.0111 + 21 0.0111 + 40 0.444 + 41 0.322 + 46 0.0111 + + 24 12 6 0 + 2 0.0833 + 7 0.167 + 22 0.0833 + 40 0.5 + 41 0.0833 + 42 0.0833 + + 30 448 11 0 + 0 0.00223 + 3 0.00223 + 4 0.00446 + 7 0.0067 + 12 0.00223 + 15 0.0067 + 33 0.00223 + 40 0.629 + 41 0.33 + 42 0.0112 + 44 0.00223 + + 31 302 10 0 + 4 0.00331 + 7 0.00993 + 13 0.00331 + 21 0.00331 + 22 0.00331 + 40 0.788 + 41 0.172 + 42 0.00331 + 44 0.00331 + 47 0.00993 + + 41 66 5 0 + 2 0.227 + 7 0.0152 + 40 0.348 + 41 0.379 + 42 0.0303 + + 44 1 1 0 + 43 1 + + 47 644 10 0 + 2 0.354 + 4 0.00155 + 7 0.0652 + 21 0.0326 + 26 0.289 + 37 0.00155 + 41 0.225 + 42 0.0264 + 44 0.00311 + 46 0.00155 + + 49 25 7 0 + 2 0.04 + 7 0.12 + 19 0.04 + 21 0.04 + 40 0.48 + 41 0.24 + 42 0.04 + + 50 54 5 0 + 2 0.204 + 14 0.0185 + 40 0.537 + 41 0.222 + 42 0.0185 + + 55 185 10 0 + 0 0.00541 + 2 0.0378 + 7 0.151 + 8 0.00541 + 26 0.0541 + 40 0.557 + 41 0.168 + 42 0.0108 + 44 0.00541 + 47 0.00541 + + 57 241 14 0 + 0 0.0332 + 2 0.0166 + 4 0.00415 + 7 0.0705 + 15 0.00415 + 21 0.00415 + 26 0.0705 + 31 0.0083 + 32 0.00415 + 34 0.00415 + 40 0.531 + 41 0.207 + 42 0.0373 + 43 0.00415 + + 58 32 12 3 + 2 0.156 + 3 0.0625 + 4 0.156 + 7 0.0938 + 8 0.125 + 14 0.0312 + 15 0.0938 + 26 0.0625 + 30 0.0312 + 39 0.0312 + 40 0.0938 + 41 0.0625 + + 2 3 2 0 + 7 0.333 + 26 0.667 + + 7 15 9 0 + 2 0.0667 + 3 0.133 + 4 0.0667 + 8 0.2 + 14 0.0667 + 15 0.2 + 30 0.0667 + 39 0.0667 + 41 0.133 + + 57 9 3 0 + 2 0.444 + 7 0.222 + 40 0.333 + + 62 3093 28 4 + 0 0.0197 + 2 0.0236 + 3 0.000323 + 4 0.00162 + 7 0.0259 + 8 0.000647 + 12 0.00711 + 15 0.000323 + 19 0.00259 + 21 0.00323 + 22 0.000323 + 26 0.0055 + 28 0.000323 + 29 0.00259 + 30 0.000647 + 31 0.00129 + 32 0.00097 + 33 0.00323 + 34 0.00162 + 37 0.00129 + 40 0.63 + 41 0.239 + 42 0.0188 + 43 0.00194 + 44 0.00097 + 45 0.00162 + 46 0.00226 + 47 0.00259 + + 26 148 11 0 + 0 0.0135 + 2 0.0135 + 7 0.0338 + 15 0.00676 + 26 0.00676 + 29 0.00676 + 33 0.00676 + 40 0.635 + 41 0.264 + 46 0.00676 + 47 0.00676 + + 41 1 1 0 + 45 1 + + 45 22 3 0 + 40 0.682 + 41 0.227 + 46 0.0909 + + 58 1 1 0 + 12 1 + + 64 449 14 1 + 0 0.0245 + 2 0.0134 + 7 0.0245 + 12 0.00891 + 21 0.00223 + 26 0.00223 + 32 0.00223 + 34 0.00223 + 40 0.695 + 41 0.192 + 42 0.0223 + 43 0.00223 + 44 0.00445 + 46 0.00445 + + 45 2 2 0 + 40 0.5 + 46 0.5 + + 65 2 2 0 + 40 0.5 + 46 0.5 + + 67 1 1 0 + 46 1 + + 68 17 2 0 + 40 0.765 + 41 0.235 + + 69 14 6 0 + 0 0.0714 + 2 0.0714 + 37 0.0714 + 40 0.571 + 41 0.143 + 42 0.0714 + + 72 5 2 0 + 0 0.6 + 29 0.4 + + 74 4 3 0 + 40 0.25 + 46 0.25 + 47 0.5 + +58 7315 39 31 + 0 0.063 + 1 0.000547 + 2 0.0418 + 3 0.00465 + 4 0.0407 + 5 0.000957 + 7 0.0861 + 8 0.0161 + 9 0.000684 + 10 0.00109 + 12 0.0257 + 13 0.0245 + 14 0.0164 + 15 0.0215 + 16 0.000547 + 19 0.0178 + 20 0.0026 + 21 0.0178 + 22 0.000273 + 23 0.000273 + 26 0.0161 + 28 0.00602 + 29 0.0187 + 30 0.00574 + 31 0.00437 + 32 0.00916 + 33 0.0145 + 34 0.00547 + 35 0.00273 + 37 0.00191 + 39 0.000547 + 40 0.0711 + 41 0.194 + 42 0.076 + 43 0.139 + 44 0.00041 + 45 0.0428 + 46 0.00342 + 47 0.00547 + + 2 85 22 4 + 0 0.0235 + 3 0.0353 + 4 0.0824 + 5 0.0118 + 7 0.0941 + 8 0.0353 + 9 0.0118 + 12 0.0235 + 13 0.0706 + 14 0.0471 + 15 0.0118 + 19 0.0353 + 21 0.341 + 22 0.0235 + 26 0.0118 + 29 0.0118 + 30 0.0118 + 31 0.0118 + 32 0.0118 + 33 0.0235 + 41 0.0588 + 45 0.0118 + + 41 20 9 0 + 0 0.05 + 3 0.05 + 7 0.1 + 13 0.1 + 15 0.05 + 21 0.45 + 22 0.1 + 33 0.05 + 45 0.05 + + 42 31 12 0 + 3 0.0323 + 4 0.161 + 5 0.0323 + 7 0.129 + 8 0.0323 + 12 0.0323 + 13 0.0645 + 14 0.0645 + 19 0.0968 + 21 0.29 + 26 0.0323 + 32 0.0323 + + 44 22 13 0 + 0 0.0455 + 4 0.0909 + 7 0.0455 + 8 0.0455 + 12 0.0455 + 13 0.0909 + 14 0.0909 + 21 0.182 + 29 0.0455 + 30 0.0455 + 31 0.0455 + 33 0.0455 + 41 0.182 + + 47 12 6 0 + 3 0.0833 + 7 0.0833 + 8 0.0833 + 9 0.0833 + 21 0.583 + 41 0.0833 + + 4 1 1 0 + 44 1 + + 7 5 4 0 + 9 0.2 + 21 0.2 + 26 0.2 + 43 0.4 + + 8 13 3 0 + 40 0.154 + 42 0.154 + 43 0.692 + + 13 17 3 0 + 41 0.0588 + 42 0.0588 + 43 0.882 + + 14 3 1 0 + 43 1 + + 15 30 4 1 + 40 0.233 + 41 0.1 + 43 0.633 + 46 0.0333 + + 2 2 1 0 + 41 1 + + 21 13 9 0 + 4 0.385 + 7 0.0769 + 8 0.0769 + 13 0.0769 + 20 0.0769 + 26 0.0769 + 31 0.0769 + 42 0.0769 + 43 0.0769 + + 28 3 1 0 + 43 1 + + 32 2 1 0 + 42 1 + + 40 16 3 0 + 4 0.0625 + 43 0.875 + 46 0.0625 + + 41 895 30 11 + 0 0.115 + 2 0.067 + 3 0.00447 + 4 0.0983 + 5 0.00335 + 7 0.124 + 8 0.038 + 9 0.00112 + 10 0.00447 + 12 0.0503 + 13 0.0313 + 14 0.0391 + 15 0.0402 + 16 0.00223 + 19 0.0391 + 20 0.0067 + 21 0.0291 + 23 0.00112 + 26 0.019 + 28 0.0145 + 29 0.0223 + 30 0.0145 + 31 0.00447 + 32 0.0134 + 33 0.019 + 34 0.00223 + 35 0.00559 + 37 0.00335 + 45 0.184 + 46 0.00223 + + 2 5 2 0 + 7 0.8 + 21 0.2 + + 15 3 2 0 + 13 0.667 + 14 0.333 + + 48 5 4 0 + 7 0.2 + 13 0.4 + 14 0.2 + 30 0.2 + + 49 33 14 0 + 0 0.0606 + 3 0.0303 + 4 0.121 + 7 0.273 + 8 0.182 + 13 0.0303 + 15 0.0303 + 19 0.0303 + 20 0.0606 + 21 0.0303 + 26 0.0303 + 28 0.0303 + 29 0.0606 + 35 0.0303 + + 52 7 6 0 + 2 0.143 + 4 0.143 + 7 0.143 + 15 0.286 + 26 0.143 + 30 0.143 + + 55 24 12 0 + 0 0.125 + 4 0.0417 + 7 0.417 + 13 0.0417 + 14 0.0417 + 30 0.0417 + 31 0.0417 + 32 0.0833 + 34 0.0417 + 35 0.0417 + 45 0.0417 + 46 0.0417 + + 57 83 23 0 + 0 0.0723 + 2 0.0723 + 3 0.012 + 4 0.157 + 7 0.157 + 8 0.0241 + 12 0.0241 + 13 0.0843 + 14 0.012 + 15 0.0361 + 19 0.012 + 20 0.012 + 21 0.0361 + 23 0.012 + 26 0.0602 + 28 0.0241 + 29 0.0723 + 30 0.012 + 32 0.012 + 33 0.0602 + 35 0.012 + 45 0.012 + 46 0.012 + + 62 585 28 0 + 0 0.126 + 2 0.0786 + 3 0.00342 + 4 0.101 + 5 0.00513 + 7 0.0906 + 8 0.0376 + 9 0.00171 + 10 0.00513 + 12 0.0632 + 13 0.0188 + 14 0.0393 + 15 0.041 + 16 0.00342 + 19 0.0479 + 20 0.00342 + 21 0.0291 + 26 0.0103 + 28 0.012 + 29 0.0171 + 30 0.0154 + 31 0.00513 + 32 0.012 + 33 0.0154 + 34 0.00171 + 35 0.00342 + 37 0.00513 + 45 0.207 + + 64 50 15 0 + 0 0.18 + 2 0.06 + 4 0.06 + 7 0.22 + 12 0.06 + 13 0.02 + 14 0.04 + 15 0.04 + 21 0.08 + 26 0.06 + 28 0.04 + 29 0.02 + 32 0.02 + 33 0.04 + 45 0.06 + + 66 71 15 0 + 0 0.0986 + 2 0.0423 + 7 0.0986 + 8 0.0141 + 10 0.0141 + 12 0.0423 + 13 0.0141 + 14 0.0704 + 15 0.0141 + 19 0.0141 + 28 0.0141 + 29 0.0141 + 32 0.0141 + 33 0.0141 + 45 0.521 + + 69 24 11 0 + 2 0.0417 + 4 0.292 + 7 0.0833 + 8 0.0833 + 13 0.0417 + 14 0.0417 + 15 0.125 + 19 0.167 + 20 0.0417 + 26 0.0417 + 45 0.0417 + + 42 358 24 11 + 0 0.182 + 2 0.0782 + 3 0.00559 + 4 0.0587 + 7 0.168 + 8 0.0196 + 12 0.0587 + 13 0.0279 + 14 0.0168 + 15 0.0251 + 19 0.0363 + 20 0.00838 + 21 0.0279 + 26 0.0503 + 28 0.014 + 29 0.0531 + 30 0.0168 + 31 0.0168 + 32 0.0307 + 33 0.0419 + 34 0.0363 + 35 0.00838 + 37 0.00559 + 45 0.014 + + 21 1 1 0 + 28 1 + + 32 2 1 0 + 4 1 + + 46 2 2 0 + 31 0.5 + 33 0.5 + + 48 14 10 0 + 0 0.143 + 2 0.0714 + 3 0.0714 + 4 0.0714 + 8 0.0714 + 13 0.143 + 14 0.0714 + 26 0.0714 + 30 0.0714 + 34 0.214 + + 49 11 6 0 + 0 0.0909 + 4 0.0909 + 7 0.455 + 12 0.0909 + 26 0.182 + 30 0.0909 + + 55 125 19 0 + 0 0.232 + 2 0.048 + 4 0.032 + 7 0.152 + 12 0.096 + 14 0.008 + 15 0.032 + 19 0.024 + 20 0.008 + 21 0.048 + 26 0.064 + 28 0.008 + 29 0.064 + 30 0.016 + 31 0.024 + 32 0.04 + 33 0.048 + 34 0.04 + 35 0.016 + + 57 68 22 0 + 0 0.206 + 2 0.0441 + 3 0.0147 + 4 0.0735 + 7 0.162 + 8 0.0294 + 12 0.0441 + 13 0.0441 + 14 0.0147 + 15 0.0294 + 19 0.0147 + 20 0.0147 + 21 0.0294 + 26 0.0294 + 28 0.0147 + 29 0.0735 + 30 0.0147 + 31 0.0294 + 32 0.0294 + 34 0.0441 + 37 0.0147 + 45 0.0294 + + 62 59 19 0 + 0 0.0678 + 2 0.169 + 4 0.0339 + 7 0.203 + 8 0.0508 + 12 0.0169 + 13 0.0678 + 14 0.0169 + 15 0.0339 + 19 0.0847 + 21 0.0169 + 26 0.0508 + 28 0.0169 + 29 0.0169 + 30 0.0169 + 32 0.0169 + 33 0.0678 + 34 0.0169 + 45 0.0339 + + 64 40 12 0 + 0 0.225 + 2 0.1 + 4 0.1 + 7 0.125 + 12 0.075 + 19 0.075 + 26 0.05 + 29 0.075 + 32 0.05 + 33 0.075 + 34 0.025 + 35 0.025 + + 67 1 1 0 + 45 1 + + 69 27 14 0 + 0 0.148 + 2 0.111 + 4 0.0741 + 7 0.259 + 8 0.037 + 12 0.037 + 15 0.037 + 20 0.037 + 21 0.037 + 28 0.037 + 29 0.0741 + 32 0.037 + 33 0.037 + 37 0.037 + + 43 1007 28 21 + 0 0.0487 + 1 0.00199 + 2 0.0616 + 3 0.00993 + 4 0.0248 + 7 0.132 + 8 0.0139 + 12 0.0199 + 13 0.0457 + 14 0.0159 + 15 0.0328 + 19 0.00497 + 21 0.0119 + 26 0.0218 + 28 0.00298 + 29 0.0278 + 30 0.000993 + 31 0.00497 + 32 0.00894 + 33 0.0189 + 34 0.00497 + 35 0.00199 + 39 0.000993 + 40 0.167 + 41 0.206 + 42 0.0894 + 45 0.000993 + 47 0.0189 + + 0 2 2 0 + 13 0.5 + 31 0.5 + + 7 2 2 0 + 7 0.5 + 19 0.5 + + 8 9 3 0 + 8 0.111 + 13 0.556 + 14 0.333 + + 13 15 6 0 + 7 0.267 + 13 0.333 + 14 0.2 + 15 0.0667 + 26 0.0667 + 42 0.0667 + + 14 3 3 0 + 8 0.333 + 21 0.333 + 29 0.333 + + 15 19 6 0 + 12 0.105 + 13 0.211 + 14 0.105 + 15 0.474 + 26 0.0526 + 42 0.0526 + + 20 1 1 0 + 8 1 + + 21 1 1 0 + 8 1 + + 28 3 3 0 + 2 0.333 + 4 0.333 + 13 0.333 + + 40 14 7 0 + 2 0.0714 + 7 0.0714 + 13 0.143 + 14 0.0714 + 15 0.429 + 19 0.0714 + 47 0.143 + + 46 20 8 0 + 0 0.05 + 2 0.15 + 8 0.05 + 12 0.1 + 15 0.05 + 40 0.3 + 41 0.2 + 42 0.1 + + 48 29 7 0 + 2 0.0345 + 8 0.138 + 13 0.552 + 14 0.069 + 15 0.0345 + 40 0.069 + 41 0.103 + + 49 6 5 0 + 1 0.167 + 2 0.167 + 28 0.333 + 40 0.167 + 47 0.167 + + 51 4 3 0 + 40 0.25 + 41 0.5 + 47 0.25 + + 52 3 1 0 + 40 1 + + 54 2 2 0 + 8 0.5 + 15 0.5 + + 55 691 24 0 + 0 0.0507 + 2 0.0651 + 3 0.00289 + 4 0.0304 + 7 0.161 + 8 0.00579 + 12 0.013 + 13 0.013 + 14 0.00434 + 15 0.0188 + 21 0.0116 + 26 0.0232 + 28 0.00145 + 29 0.0347 + 30 0.00145 + 31 0.00289 + 32 0.0101 + 33 0.0232 + 34 0.00579 + 35 0.00145 + 40 0.158 + 41 0.236 + 42 0.113 + 47 0.013 + + 57 52 15 0 + 0 0.173 + 2 0.0577 + 4 0.0385 + 7 0.154 + 12 0.115 + 13 0.0192 + 19 0.0385 + 26 0.0192 + 29 0.0192 + 32 0.0192 + 34 0.0192 + 39 0.0192 + 40 0.135 + 41 0.154 + 47 0.0192 + + 62 68 17 0 + 0 0.0147 + 1 0.0147 + 2 0.0441 + 4 0.0147 + 7 0.0441 + 13 0.0147 + 19 0.0147 + 21 0.0147 + 29 0.0147 + 31 0.0147 + 33 0.0147 + 35 0.0147 + 40 0.382 + 41 0.235 + 42 0.0588 + 45 0.0147 + 47 0.0735 + + 64 23 8 0 + 0 0.13 + 2 0.087 + 7 0.087 + 12 0.0435 + 26 0.0435 + 32 0.0435 + 40 0.261 + 41 0.304 + + 69 30 11 0 + 2 0.0667 + 3 0.267 + 7 0.1 + 21 0.0667 + 26 0.0667 + 29 0.0333 + 31 0.0333 + 33 0.0667 + 40 0.133 + 41 0.0667 + 42 0.1 + + 45 37 11 0 + 0 0.135 + 2 0.0811 + 4 0.135 + 7 0.108 + 8 0.027 + 12 0.135 + 14 0.027 + 19 0.216 + 21 0.0541 + 26 0.027 + 37 0.0541 + + 46 23 3 0 + 29 0.0435 + 42 0.087 + 43 0.87 + + 47 2420 38 14 + 0 0.0946 + 1 0.000826 + 2 0.0632 + 3 0.0062 + 4 0.0583 + 5 0.00124 + 7 0.124 + 8 0.0227 + 9 0.000413 + 10 0.00165 + 12 0.0384 + 13 0.0351 + 14 0.024 + 15 0.0322 + 16 0.000826 + 19 0.026 + 20 0.00372 + 21 0.0198 + 23 0.000413 + 26 0.0236 + 28 0.00909 + 29 0.0281 + 30 0.00785 + 31 0.0062 + 32 0.0136 + 33 0.0215 + 34 0.00826 + 35 0.00413 + 37 0.00289 + 39 0.000826 + 40 0.104 + 41 0.108 + 42 0.0409 + 43 0.00165 + 44 0.000413 + 45 0.057 + 46 0.000413 + 47 0.00826 + + 41 842 30 0 + 0 0.122 + 2 0.0713 + 3 0.00356 + 4 0.102 + 5 0.00356 + 7 0.121 + 8 0.0392 + 9 0.00119 + 10 0.00475 + 12 0.0534 + 13 0.0321 + 14 0.0416 + 15 0.0428 + 16 0.00238 + 19 0.0416 + 20 0.00713 + 21 0.0297 + 23 0.00119 + 26 0.019 + 28 0.0154 + 29 0.0238 + 30 0.0143 + 31 0.00475 + 32 0.0143 + 33 0.0202 + 34 0.00238 + 35 0.00594 + 37 0.00356 + 45 0.154 + 46 0.00119 + + 42 357 24 0 + 0 0.182 + 2 0.0784 + 3 0.0056 + 4 0.0588 + 7 0.168 + 8 0.0196 + 12 0.0588 + 13 0.028 + 14 0.0168 + 15 0.0252 + 19 0.0364 + 20 0.0084 + 21 0.028 + 26 0.0504 + 28 0.014 + 29 0.0532 + 30 0.0168 + 31 0.0168 + 32 0.0308 + 33 0.042 + 34 0.0364 + 35 0.0084 + 37 0.0056 + 45 0.0112 + + 43 1006 28 0 + 0 0.0487 + 1 0.00199 + 2 0.0616 + 3 0.00994 + 4 0.0249 + 7 0.131 + 8 0.0139 + 12 0.0199 + 13 0.0457 + 14 0.0159 + 15 0.0328 + 19 0.00497 + 21 0.0119 + 26 0.0219 + 28 0.00298 + 29 0.0278 + 30 0.000994 + 31 0.00497 + 32 0.00895 + 33 0.0189 + 34 0.00497 + 35 0.00199 + 39 0.000994 + 40 0.167 + 41 0.206 + 42 0.0895 + 45 0.000994 + 47 0.0189 + + 45 36 11 0 + 0 0.139 + 2 0.0833 + 4 0.139 + 7 0.111 + 8 0.0278 + 12 0.139 + 14 0.0278 + 19 0.222 + 21 0.0278 + 26 0.0278 + 37 0.0556 + + 48 7 4 0 + 13 0.143 + 32 0.143 + 40 0.571 + 41 0.143 + + 49 9 2 0 + 40 0.889 + 41 0.111 + + 51 2 2 0 + 41 0.5 + 43 0.5 + + 55 28 4 0 + 13 0.0357 + 40 0.857 + 41 0.0714 + 43 0.0357 + + 57 30 7 0 + 0 0.0333 + 4 0.0333 + 7 0.0333 + 40 0.733 + 41 0.1 + 42 0.0333 + 44 0.0333 + + 62 71 12 0 + 0 0.0423 + 4 0.0282 + 12 0.0282 + 28 0.0141 + 33 0.0141 + 39 0.0141 + 40 0.211 + 41 0.507 + 42 0.0704 + 43 0.0282 + 45 0.0282 + 47 0.0141 + + 64 6 3 0 + 40 0.667 + 41 0.167 + 42 0.167 + + 66 15 6 0 + 0 0.2 + 19 0.133 + 40 0.133 + 41 0.4 + 42 0.0667 + 45 0.0667 + + 68 2 1 0 + 40 1 + + 69 6 3 0 + 40 0.333 + 41 0.5 + 42 0.167 + + 48 57 7 4 + 13 0.0175 + 32 0.0175 + 40 0.0702 + 41 0.105 + 42 0.246 + 43 0.509 + 46 0.0351 + + 42 11 2 0 + 32 0.0909 + 42 0.909 + + 44 24 1 0 + 43 1 + + 45 2 1 0 + 46 1 + + 49 7 4 0 + 13 0.143 + 40 0.143 + 41 0.286 + 43 0.429 + + 49 78 10 5 + 0 0.0128 + 4 0.0256 + 7 0.141 + 8 0.0256 + 9 0.0128 + 21 0.0256 + 40 0.103 + 41 0.436 + 42 0.141 + 43 0.0769 + + 2 17 9 0 + 0 0.0588 + 4 0.118 + 7 0.176 + 8 0.118 + 9 0.0588 + 21 0.118 + 40 0.176 + 41 0.118 + 42 0.0588 + + 41 39 4 0 + 7 0.128 + 40 0.0256 + 41 0.744 + 42 0.103 + + 42 8 3 0 + 7 0.125 + 40 0.125 + 42 0.75 + + 44 6 1 0 + 43 1 + + 49 5 2 0 + 40 0.6 + 41 0.4 + + 51 9 4 0 + 40 0.111 + 41 0.222 + 42 0.111 + 43 0.556 + + 52 11 3 0 + 40 0.0909 + 41 0.636 + 43 0.273 + + 54 3 2 0 + 42 0.333 + 43 0.667 + + 55 884 7 8 + 7 0.00226 + 13 0.00113 + 40 0.0305 + 41 0.0294 + 42 0.141 + 43 0.783 + 46 0.0124 + + 2 18 4 0 + 40 0.167 + 41 0.167 + 42 0.444 + 43 0.222 + + 21 6 4 0 + 40 0.333 + 41 0.333 + 42 0.167 + 43 0.167 + + 41 106 6 0 + 7 0.00943 + 13 0.00943 + 40 0.0566 + 41 0.0472 + 42 0.0377 + 43 0.84 + + 42 115 4 0 + 40 0.0696 + 41 0.0261 + 42 0.878 + 43 0.0261 + + 44 585 2 0 + 41 0.00342 + 43 0.997 + + 45 13 2 0 + 41 0.154 + 46 0.846 + + 47 3 3 0 + 7 0.333 + 40 0.333 + 43 0.333 + + 49 28 4 0 + 40 0.25 + 41 0.25 + 42 0.357 + 43 0.143 + + 57 236 10 8 + 0 0.00424 + 4 0.00424 + 7 0.00424 + 19 0.00424 + 30 0.00847 + 40 0.0932 + 41 0.364 + 42 0.292 + 43 0.22 + 44 0.00424 + + 2 7 4 0 + 19 0.143 + 30 0.286 + 40 0.429 + 42 0.143 + + 21 2 1 0 + 40 1 + + 41 82 4 0 + 40 0.0488 + 41 0.878 + 42 0.0366 + 43 0.0366 + + 42 68 3 0 + 7 0.0147 + 40 0.0588 + 42 0.926 + + 43 1 1 0 + 0 1 + + 44 49 1 0 + 43 1 + + 47 9 4 0 + 4 0.111 + 40 0.222 + 41 0.556 + 44 0.111 + + 49 11 3 0 + 40 0.455 + 41 0.455 + 42 0.0909 + + 58 4 3 0 + 8 0.25 + 41 0.25 + 43 0.5 + + 62 789 13 7 + 0 0.0038 + 4 0.00253 + 12 0.00253 + 28 0.00127 + 33 0.00127 + 39 0.00127 + 40 0.0203 + 41 0.787 + 42 0.0811 + 43 0.0887 + 45 0.00253 + 46 0.00634 + 47 0.00127 + + 2 13 4 0 + 40 0.0769 + 41 0.0769 + 42 0.615 + 43 0.231 + + 41 507 6 0 + 0 0.00197 + 39 0.00197 + 40 0.00789 + 41 0.98 + 42 0.00592 + 43 0.00197 + + 42 62 5 0 + 4 0.0161 + 40 0.129 + 42 0.806 + 43 0.0323 + 47 0.0161 + + 44 64 2 0 + 40 0.0156 + 43 0.984 + + 45 6 2 0 + 41 0.167 + 46 0.833 + + 46 66 3 0 + 4 0.0152 + 41 0.97 + 45 0.0152 + + 47 69 9 0 + 0 0.029 + 12 0.029 + 28 0.0145 + 33 0.0145 + 40 0.0145 + 41 0.841 + 42 0.029 + 43 0.0145 + 45 0.0145 + + 64 119 4 3 + 40 0.0336 + 41 0.429 + 42 0.345 + 43 0.193 + + 41 51 3 0 + 40 0.0392 + 41 0.941 + 42 0.0196 + + 42 38 2 0 + 40 0.0263 + 42 0.974 + + 44 23 1 0 + 43 1 + + 66 86 6 1 + 0 0.0349 + 19 0.0233 + 40 0.0233 + 41 0.895 + 42 0.0116 + 45 0.0116 + + 47 12 4 0 + 0 0.0833 + 19 0.167 + 40 0.167 + 41 0.583 + + 67 7 4 0 + 40 0.286 + 42 0.143 + 43 0.286 + 46 0.286 + + 68 4 2 0 + 40 0.5 + 42 0.5 + + 69 87 4 3 + 40 0.023 + 41 0.31 + 42 0.322 + 43 0.345 + + 42 15 1 0 + 42 1 + + 44 25 1 0 + 43 1 + + 55 25 2 0 + 41 0.96 + 42 0.04 + +59 5284 34 6 + 0 0.00151 + 1 0.00114 + 2 0.0151 + 3 0.0178 + 4 0.211 + 7 0.239 + 8 0.0503 + 9 0.00492 + 10 0.00265 + 12 0.000379 + 13 0.0492 + 14 0.0462 + 15 0.0235 + 17 0.00114 + 19 0.000757 + 20 0.0526 + 21 0.0488 + 22 0.00454 + 24 0.00114 + 26 0.0462 + 30 0.0163 + 31 0.00189 + 35 0.00568 + 37 0.00492 + 38 0.000757 + 39 0.00871 + 40 0.0765 + 41 0.05 + 42 0.00568 + 43 0.000757 + 44 0.000379 + 45 0.00454 + 46 0.0053 + 47 0.000379 + + 7 65 7 0 + 2 0.0615 + 8 0.0154 + 21 0.0154 + 40 0.523 + 41 0.308 + 42 0.0615 + 43 0.0154 + + 8 6 3 0 + 3 0.167 + 7 0.667 + 14 0.167 + + 21 84 9 0 + 0 0.0119 + 2 0.143 + 7 0.0833 + 8 0.0119 + 26 0.0119 + 40 0.464 + 41 0.214 + 42 0.0476 + 47 0.0119 + + 22 1 1 0 + 24 1 + + 24 2481 33 0 + 0 0.00121 + 1 0.00121 + 2 0.00967 + 3 0.0185 + 4 0.225 + 7 0.25 + 8 0.0528 + 9 0.00524 + 10 0.00282 + 12 0.000403 + 13 0.052 + 14 0.0484 + 15 0.025 + 17 0.00121 + 19 0.000806 + 20 0.056 + 21 0.0512 + 22 0.00484 + 24 0.000806 + 26 0.0488 + 30 0.0173 + 31 0.00202 + 35 0.00605 + 37 0.00524 + 38 0.000806 + 39 0.00927 + 40 0.0516 + 41 0.0379 + 42 0.00282 + 43 0.000403 + 44 0.000403 + 45 0.00484 + 46 0.00564 + + 47 2642 34 5 + 0 0.00151 + 1 0.00114 + 2 0.0151 + 3 0.0178 + 4 0.211 + 7 0.239 + 8 0.0503 + 9 0.00492 + 10 0.00265 + 12 0.000379 + 13 0.0492 + 14 0.0462 + 15 0.0235 + 17 0.00114 + 19 0.000757 + 20 0.0526 + 21 0.0488 + 22 0.00454 + 24 0.00114 + 26 0.0462 + 30 0.0163 + 31 0.00189 + 35 0.00568 + 37 0.00492 + 38 0.000757 + 39 0.00871 + 40 0.0765 + 41 0.05 + 42 0.00568 + 43 0.000757 + 44 0.000379 + 45 0.00454 + 46 0.0053 + 47 0.000379 + + 7 65 7 0 + 2 0.0615 + 8 0.0154 + 21 0.0154 + 40 0.523 + 41 0.308 + 42 0.0615 + 43 0.0154 + + 8 6 3 0 + 3 0.167 + 7 0.667 + 14 0.167 + + 21 84 9 0 + 0 0.0119 + 2 0.143 + 7 0.0833 + 8 0.0119 + 26 0.0119 + 40 0.464 + 41 0.214 + 42 0.0476 + 47 0.0119 + + 22 1 1 0 + 24 1 + + 24 2481 33 0 + 0 0.00121 + 1 0.00121 + 2 0.00967 + 3 0.0185 + 4 0.225 + 7 0.25 + 8 0.0528 + 9 0.00524 + 10 0.00282 + 12 0.000403 + 13 0.052 + 14 0.0484 + 15 0.025 + 17 0.00121 + 19 0.000806 + 20 0.056 + 21 0.0512 + 22 0.00484 + 24 0.000806 + 26 0.0488 + 30 0.0173 + 31 0.00202 + 35 0.00605 + 37 0.00524 + 38 0.000806 + 39 0.00927 + 40 0.0516 + 41 0.0379 + 42 0.00282 + 43 0.000403 + 44 0.000403 + 45 0.00484 + 46 0.00564 + +60 29066 33 16 + 0 0.00378 + 2 0.00932 + 3 0.35 + 4 0.0253 + 6 6.88e-05 + 7 0.139 + 8 0.0319 + 9 0.00368 + 12 0.00117 + 13 0.114 + 14 0.0974 + 15 0.0103 + 16 0.000826 + 19 0.000482 + 20 0.00131 + 21 0.0032 + 22 0.000344 + 25 6.88e-05 + 26 0.0221 + 29 0.00131 + 30 0.00124 + 31 0.00365 + 34 0.000344 + 35 0.000482 + 37 6.88e-05 + 40 0.072 + 41 0.0853 + 42 0.00523 + 43 0.012 + 44 0.0031 + 45 0.000344 + 46 0.000172 + 47 0.000482 + + 2 37 4 0 + 3 0.108 + 9 0.73 + 13 0.027 + 21 0.135 + + 3 13760 32 11 + 0 0.00363 + 2 0.00996 + 3 0.356 + 4 0.0206 + 6 7.27e-05 + 7 0.136 + 8 0.0312 + 9 0.00203 + 12 0.00124 + 13 0.115 + 14 0.0988 + 15 0.0102 + 16 0.000872 + 19 0.000436 + 20 7.27e-05 + 21 0.0024 + 22 0.000145 + 25 7.27e-05 + 26 0.0225 + 29 0.00109 + 30 0.00124 + 31 0.00356 + 34 0.000363 + 37 7.27e-05 + 40 0.0715 + 41 0.0883 + 42 0.00516 + 43 0.0126 + 44 0.00327 + 45 0.000363 + 46 7.27e-05 + 47 0.000509 + + 2 62 12 0 + 3 0.0161 + 4 0.0161 + 7 0.113 + 8 0.0323 + 13 0.0323 + 14 0.548 + 21 0.0161 + 31 0.0161 + 34 0.0161 + 40 0.0806 + 41 0.0968 + 45 0.0161 + + 3 6824 31 0 + 0 0.00659 + 2 0.0182 + 3 0.000293 + 4 0.0262 + 6 0.000147 + 7 0.257 + 8 0.0478 + 9 0.00249 + 12 0.00205 + 13 0.119 + 14 0.0928 + 15 0.0147 + 16 0.000879 + 19 0.000879 + 20 0.000147 + 21 0.0041 + 22 0.000147 + 25 0.000147 + 26 0.0441 + 29 0.00147 + 30 0.0022 + 31 0.00659 + 34 0.000586 + 40 0.137 + 41 0.174 + 42 0.00996 + 43 0.0246 + 44 0.00601 + 45 0.00044 + 46 0.000147 + 47 0.00103 + + 4 70 7 0 + 7 0.0286 + 8 0.129 + 13 0.229 + 14 0.486 + 15 0.0857 + 16 0.0286 + 41 0.0143 + + 7 732 17 0 + 0 0.00273 + 2 0.00137 + 3 0.00137 + 4 0.0041 + 7 0.0232 + 8 0.056 + 9 0.00137 + 12 0.00137 + 13 0.493 + 14 0.373 + 15 0.0246 + 29 0.00273 + 31 0.00137 + 37 0.00137 + 40 0.0082 + 41 0.00273 + 44 0.00137 + + 8 27 4 0 + 7 0.037 + 13 0.37 + 14 0.556 + 15 0.037 + + 10 120 8 0 + 7 0.0333 + 8 0.175 + 9 0.0167 + 13 0.233 + 14 0.483 + 15 0.0333 + 30 0.0167 + 40 0.00833 + + 21 513 14 0 + 0 0.00195 + 2 0.00195 + 3 0.00195 + 7 0.0253 + 8 0.0507 + 9 0.00585 + 13 0.567 + 14 0.312 + 15 0.0156 + 16 0.0039 + 29 0.0039 + 31 0.00195 + 40 0.00585 + 41 0.00195 + + 26 226 16 0 + 0 0.00885 + 2 0.00442 + 3 0.00442 + 4 0.00885 + 7 0.0221 + 8 0.0133 + 9 0.00442 + 13 0.23 + 14 0.664 + 15 0.00885 + 16 0.00885 + 21 0.00442 + 22 0.00442 + 40 0.00442 + 41 0.00442 + 42 0.00442 + + 38 5 4 0 + 9 0.2 + 40 0.4 + 41 0.2 + 44 0.2 + + 39 5169 20 0 + 2 0.00193 + 3 0.946 + 4 0.0192 + 7 0.0135 + 8 0.000193 + 9 0.00058 + 12 0.000387 + 13 0.00271 + 14 0.000387 + 15 0.000193 + 21 0.00058 + 26 0.00174 + 29 0.000193 + 31 0.000193 + 40 0.00658 + 41 0.00368 + 42 0.000387 + 43 0.00116 + 44 0.000193 + 45 0.000193 + + 41 1 1 0 + 44 1 + + 4 42 8 0 + 0 0.0238 + 3 0.0238 + 4 0.0476 + 7 0.0952 + 13 0.738 + 15 0.0238 + 35 0.0238 + 42 0.0238 + + 7 10 6 0 + 3 0.4 + 4 0.2 + 8 0.1 + 13 0.1 + 20 0.1 + 40 0.1 + + 8 58 11 2 + 4 0.069 + 7 0.276 + 8 0.0862 + 13 0.103 + 14 0.328 + 15 0.0345 + 20 0.0345 + 29 0.0172 + 31 0.0172 + 35 0.0172 + 40 0.0172 + + 4 23 5 0 + 7 0.348 + 8 0.0435 + 13 0.0435 + 14 0.522 + 29 0.0435 + + 7 12 8 0 + 4 0.167 + 7 0.0833 + 8 0.167 + 13 0.167 + 14 0.167 + 15 0.0833 + 20 0.0833 + 31 0.0833 + + 9 98 14 3 + 0 0.0102 + 2 0.0102 + 4 0.0204 + 7 0.194 + 8 0.0714 + 13 0.112 + 14 0.102 + 15 0.0204 + 19 0.0102 + 26 0.0204 + 29 0.0102 + 40 0.337 + 41 0.0612 + 42 0.0204 + + 2 78 13 0 + 0 0.0128 + 2 0.0128 + 4 0.0256 + 7 0.244 + 8 0.0513 + 13 0.0256 + 14 0.0897 + 19 0.0128 + 26 0.0256 + 29 0.0128 + 40 0.41 + 41 0.0641 + 42 0.0128 + + 3 13 7 0 + 8 0.154 + 13 0.308 + 14 0.154 + 15 0.154 + 40 0.0769 + 41 0.0769 + 42 0.0769 + + 13 4 2 0 + 13 0.75 + 14 0.25 + + 13 248 19 6 + 0 0.00403 + 2 0.0605 + 3 0.153 + 4 0.0282 + 7 0.343 + 8 0.0242 + 9 0.0282 + 13 0.0605 + 14 0.0605 + 20 0.0161 + 21 0.00806 + 26 0.0605 + 31 0.00403 + 35 0.00806 + 40 0.0927 + 41 0.0323 + 42 0.00806 + 43 0.00403 + 46 0.00403 + + 3 165 15 0 + 2 0.0667 + 3 0.218 + 4 0.0242 + 7 0.255 + 8 0.0121 + 9 0.0242 + 13 0.0848 + 14 0.0303 + 21 0.00606 + 26 0.0788 + 31 0.00606 + 40 0.127 + 41 0.0485 + 42 0.0121 + 43 0.00606 + + 4 33 8 0 + 2 0.0606 + 3 0.0606 + 7 0.394 + 8 0.121 + 9 0.0303 + 14 0.273 + 21 0.0303 + 46 0.0303 + + 7 24 8 0 + 0 0.0417 + 4 0.0833 + 7 0.5 + 13 0.0417 + 14 0.0417 + 20 0.125 + 35 0.0833 + 40 0.0833 + + 8 4 2 0 + 7 0.75 + 9 0.25 + + 21 12 3 0 + 4 0.0833 + 7 0.833 + 20 0.0833 + + 47 5 4 0 + 2 0.2 + 7 0.2 + 9 0.2 + 26 0.4 + + 14 83 17 4 + 0 0.012 + 3 0.012 + 4 0.205 + 7 0.229 + 8 0.0843 + 9 0.0723 + 13 0.0361 + 14 0.0602 + 15 0.0602 + 20 0.0482 + 21 0.0602 + 22 0.0361 + 29 0.012 + 31 0.012 + 35 0.0361 + 41 0.012 + 46 0.012 + + 3 59 14 0 + 3 0.0169 + 4 0.288 + 7 0.0339 + 8 0.119 + 9 0.0847 + 13 0.0508 + 14 0.0847 + 15 0.0678 + 20 0.0508 + 21 0.0847 + 22 0.0339 + 29 0.0169 + 31 0.0169 + 35 0.0508 + + 7 16 5 0 + 0 0.0625 + 7 0.75 + 9 0.0625 + 15 0.0625 + 46 0.0625 + + 8 3 2 0 + 7 0.667 + 22 0.333 + + 21 4 2 0 + 7 0.75 + 41 0.25 + + 17 36 2 0 + 4 0.833 + 20 0.167 + + 21 56 10 3 + 0 0.0179 + 4 0.304 + 7 0.0893 + 8 0.143 + 14 0.125 + 20 0.0179 + 21 0.0536 + 31 0.0179 + 40 0.0714 + 41 0.161 + + 2 32 8 0 + 0 0.0312 + 4 0.0625 + 7 0.125 + 8 0.125 + 14 0.219 + 21 0.0312 + 40 0.125 + 41 0.281 + + 7 12 5 0 + 4 0.417 + 7 0.0833 + 8 0.333 + 20 0.0833 + 31 0.0833 + + 21 11 2 0 + 4 0.818 + 21 0.182 + + 22 6 6 0 + 8 0.167 + 9 0.167 + 13 0.167 + 29 0.167 + 30 0.167 + 40 0.167 + + 23 1 1 0 + 21 1 + + 26 12 1 0 + 3 1 + + 28 2 1 0 + 4 1 + + 39 5169 1 0 + 3 1 + + 47 9444 33 13 + 0 0.00582 + 2 0.0125 + 3 0.00498 + 4 0.0389 + 6 0.000106 + 7 0.213 + 8 0.049 + 9 0.00402 + 12 0.0018 + 13 0.175 + 14 0.15 + 15 0.0159 + 16 0.00127 + 19 0.000741 + 20 0.00201 + 21 0.00466 + 22 0.000529 + 25 0.000106 + 26 0.0335 + 29 0.00201 + 30 0.00191 + 31 0.00561 + 34 0.000529 + 35 0.000741 + 37 0.000106 + 40 0.111 + 41 0.131 + 42 0.00805 + 43 0.0185 + 44 0.00476 + 45 0.000529 + 46 0.000212 + 47 0.000741 + + 3 8844 32 0 + 0 0.00565 + 2 0.0131 + 3 0.000905 + 4 0.0321 + 6 0.000113 + 7 0.212 + 8 0.0485 + 9 0.00317 + 12 0.00192 + 13 0.179 + 14 0.154 + 15 0.0158 + 16 0.00136 + 19 0.000678 + 20 0.000113 + 21 0.00373 + 22 0.000226 + 25 0.000113 + 26 0.0351 + 29 0.0017 + 30 0.00192 + 31 0.00554 + 34 0.000565 + 37 0.000113 + 40 0.111 + 41 0.137 + 42 0.00803 + 43 0.0197 + 44 0.00509 + 45 0.000565 + 46 0.000113 + 47 0.000791 + + 4 41 7 0 + 0 0.0244 + 4 0.0488 + 7 0.0976 + 13 0.756 + 15 0.0244 + 35 0.0244 + 42 0.0244 + + 7 3 3 0 + 4 0.333 + 20 0.333 + 40 0.333 + + 8 58 11 0 + 4 0.069 + 7 0.276 + 8 0.0862 + 13 0.103 + 14 0.328 + 15 0.0345 + 20 0.0345 + 29 0.0172 + 31 0.0172 + 35 0.0172 + 40 0.0172 + + 9 98 14 0 + 0 0.0102 + 2 0.0102 + 4 0.0204 + 7 0.194 + 8 0.0714 + 13 0.112 + 14 0.102 + 15 0.0204 + 19 0.0102 + 26 0.0204 + 29 0.0102 + 40 0.337 + 41 0.0612 + 42 0.0204 + + 13 211 19 0 + 0 0.00474 + 2 0.00474 + 3 0.175 + 4 0.0332 + 7 0.37 + 8 0.0284 + 9 0.0142 + 13 0.0711 + 14 0.0711 + 20 0.019 + 21 0.00948 + 26 0.019 + 31 0.00474 + 35 0.00948 + 40 0.109 + 41 0.0379 + 42 0.00948 + 43 0.00474 + 46 0.00474 + + 14 82 16 0 + 0 0.0122 + 3 0.0122 + 4 0.207 + 7 0.232 + 8 0.0854 + 9 0.0732 + 13 0.0366 + 14 0.061 + 15 0.061 + 20 0.0488 + 21 0.061 + 22 0.0366 + 29 0.0122 + 31 0.0122 + 35 0.0366 + 41 0.0122 + + 17 36 2 0 + 4 0.833 + 20 0.167 + + 21 56 10 0 + 0 0.0179 + 4 0.304 + 7 0.0893 + 8 0.143 + 14 0.125 + 20 0.0179 + 21 0.0536 + 31 0.0179 + 40 0.0714 + 41 0.161 + + 22 6 6 0 + 8 0.167 + 9 0.167 + 13 0.167 + 29 0.167 + 30 0.167 + 40 0.167 + + 23 1 1 0 + 21 1 + + 26 1 1 0 + 3 1 + + 28 2 1 0 + 4 1 + +61 113 10 4 + 0 0.0177 + 2 0.0265 + 7 0.133 + 21 0.00885 + 29 0.0177 + 30 0.00885 + 33 0.0177 + 40 0.372 + 41 0.327 + 42 0.0708 + + 2 1 1 0 + 21 1 + + 47 47 7 0 + 0 0.0213 + 2 0.0213 + 29 0.0213 + 33 0.0213 + 40 0.447 + 41 0.383 + 42 0.0851 + + 49 14 4 0 + 7 0.786 + 30 0.0714 + 41 0.0714 + 42 0.0714 + + 57 19 3 0 + 40 0.579 + 41 0.316 + 42 0.105 + +62 239664 43 23 + 0 0.00769 + 1 8.35e-06 + 2 0.0246 + 3 0.000417 + 4 0.00451 + 5 0.000255 + 6 8.35e-06 + 7 0.0107 + 8 0.00105 + 9 7.09e-05 + 10 7.09e-05 + 11 8.35e-06 + 12 0.00318 + 13 0.00107 + 14 0.00113 + 15 0.00279 + 16 2.5e-05 + 17 2.09e-05 + 19 0.00431 + 20 0.000559 + 21 0.00236 + 22 9.6e-05 + 23 2.09e-05 + 26 0.00115 + 27 1.25e-05 + 28 0.000221 + 29 0.0016 + 30 0.000421 + 31 0.000184 + 32 0.00053 + 33 0.0016 + 34 0.0002 + 35 3.34e-05 + 37 0.000526 + 39 3.34e-05 + 40 0.438 + 41 0.154 + 42 0.0193 + 43 0.00174 + 44 0.000538 + 45 0.000726 + 46 0.0115 + 47 0.303 + + 0 1 1 0 + 21 1 + + 2 2635 38 8 + 0 0.00835 + 1 0.00038 + 2 0.00038 + 3 0.022 + 4 0.25 + 5 0.0121 + 7 0.049 + 8 0.0509 + 9 0.0038 + 10 0.00607 + 12 0.00417 + 13 0.055 + 14 0.0687 + 15 0.12 + 16 0.00152 + 17 0.00114 + 19 0.205 + 20 0.0364 + 21 0.0509 + 22 0.00114 + 23 0.00114 + 26 0.00569 + 27 0.00038 + 28 0.00342 + 29 0.00114 + 30 0.00873 + 31 0.00152 + 32 0.00038 + 33 0.00152 + 34 0.00114 + 35 0.000759 + 37 0.00569 + 39 0.00114 + 41 0.0114 + 42 0.00038 + 43 0.00038 + 44 0.00152 + 45 0.00645 + + 41 1755 33 0 + 0 0.00627 + 2 0.00057 + 3 0.0131 + 4 0.271 + 5 0.0114 + 7 0.0581 + 8 0.0541 + 9 0.00399 + 10 0.00513 + 12 0.00399 + 13 0.045 + 14 0.0638 + 15 0.113 + 16 0.00228 + 17 0.00114 + 19 0.226 + 20 0.0336 + 21 0.049 + 22 0.00114 + 23 0.00114 + 26 0.00285 + 28 0.00228 + 29 0.00057 + 30 0.0108 + 31 0.00171 + 34 0.00057 + 35 0.00057 + 37 0.00741 + 39 0.00114 + 41 0.00342 + 42 0.00057 + 44 0.00057 + 45 0.00399 + + 42 83 20 0 + 0 0.0241 + 1 0.012 + 3 0.0361 + 4 0.229 + 7 0.0602 + 8 0.0361 + 10 0.0241 + 12 0.012 + 13 0.0482 + 14 0.0241 + 15 0.108 + 19 0.157 + 20 0.012 + 21 0.0964 + 26 0.012 + 27 0.012 + 28 0.012 + 35 0.012 + 41 0.0602 + 44 0.012 + + 44 1 1 0 + 43 1 + + 45 16 5 0 + 4 0.188 + 13 0.125 + 14 0.0625 + 19 0.562 + 21 0.0625 + + 46 38 11 0 + 4 0.158 + 7 0.0263 + 13 0.0526 + 14 0.0526 + 15 0.0789 + 19 0.316 + 20 0.0526 + 21 0.0526 + 22 0.0263 + 37 0.0263 + 45 0.158 + + 58 43 14 0 + 3 0.0465 + 4 0.256 + 5 0.0465 + 7 0.0233 + 8 0.0698 + 12 0.0233 + 13 0.0698 + 14 0.093 + 15 0.0465 + 19 0.186 + 20 0.0698 + 21 0.0233 + 28 0.0233 + 45 0.0233 + + 62 696 30 0 + 0 0.0129 + 3 0.0388 + 4 0.208 + 5 0.0144 + 7 0.0287 + 8 0.0474 + 9 0.00431 + 10 0.00718 + 12 0.00287 + 13 0.079 + 14 0.0862 + 15 0.149 + 17 0.00144 + 19 0.147 + 20 0.0445 + 21 0.0517 + 23 0.00144 + 26 0.0129 + 28 0.00431 + 29 0.00287 + 30 0.00575 + 31 0.00144 + 32 0.00144 + 33 0.00575 + 34 0.00287 + 37 0.00144 + 39 0.00144 + 41 0.0273 + 44 0.00287 + 45 0.00431 + + 69 2 1 0 + 3 1 + + 7 42 8 1 + 3 0.0238 + 4 0.286 + 5 0.0238 + 7 0.0238 + 13 0.0476 + 14 0.167 + 15 0.0476 + 19 0.381 + + 62 4 3 0 + 3 0.25 + 4 0.25 + 14 0.5 + + 21 32 13 1 + 3 0.0312 + 4 0.156 + 7 0.0312 + 8 0.0312 + 9 0.0312 + 15 0.0625 + 19 0.312 + 20 0.0625 + 21 0.0938 + 26 0.0625 + 28 0.0312 + 37 0.0625 + 41 0.0312 + + 2 7 5 0 + 4 0.429 + 15 0.143 + 19 0.143 + 21 0.143 + 37 0.143 + + 40 35953 5 2 + 40 2.78e-05 + 43 0.00337 + 45 0.000278 + 46 0.06 + 47 0.936 + + 6 1 1 0 + 43 1 + + 62 2516 4 0 + 43 0.00556 + 45 0.000795 + 46 0.0823 + 47 0.911 + + 41 2397 27 8 + 0 0.00167 + 2 0.736 + 3 0.00292 + 4 0.0217 + 5 0.00375 + 6 0.000417 + 7 0.0321 + 8 0.000834 + 9 0.000417 + 12 0.000417 + 13 0.00709 + 14 0.00501 + 15 0.0375 + 19 0.0209 + 20 0.00167 + 21 0.0196 + 23 0.000417 + 26 0.00125 + 27 0.000417 + 28 0.00125 + 29 0.00125 + 30 0.00626 + 33 0.00292 + 34 0.000834 + 45 0.00501 + 46 0.0868 + 47 0.00209 + + 2 26 8 0 + 3 0.0385 + 4 0.0385 + 7 0.615 + 9 0.0385 + 19 0.0769 + 21 0.115 + 27 0.0385 + 30 0.0385 + + 6 1 1 0 + 26 1 + + 21 1 1 0 + 45 1 + + 49 4 3 0 + 2 0.25 + 7 0.5 + 21 0.25 + + 55 8 5 0 + 7 0.25 + 15 0.125 + 21 0.125 + 30 0.125 + 46 0.375 + + 58 7 3 0 + 2 0.143 + 14 0.143 + 45 0.714 + + 62 2139 22 0 + 2 0.813 + 3 0.00234 + 4 0.0229 + 5 0.00421 + 6 0.000468 + 7 0.022 + 8 0.000935 + 13 0.00748 + 14 0.00421 + 15 0.0411 + 19 0.0206 + 20 0.0014 + 21 0.0173 + 23 0.000468 + 26 0.000935 + 28 0.0014 + 29 0.000468 + 30 0.00468 + 33 0.000935 + 34 0.000468 + 45 0.00234 + 46 0.0299 + + 69 206 19 0 + 0 0.0194 + 2 0.0971 + 3 0.00485 + 4 0.00971 + 7 0.0388 + 12 0.00485 + 13 0.00485 + 14 0.00971 + 15 0.00485 + 19 0.0194 + 20 0.00485 + 21 0.0243 + 29 0.00971 + 30 0.0146 + 33 0.0243 + 34 0.00485 + 45 0.00485 + 46 0.675 + 47 0.0243 + + 42 977 35 6 + 0 0.00102 + 1 0.00102 + 2 0.088 + 3 0.0143 + 4 0.148 + 5 0.00614 + 7 0.0645 + 8 0.0287 + 9 0.00409 + 10 0.00102 + 11 0.00205 + 13 0.0409 + 14 0.0409 + 15 0.1 + 16 0.00205 + 17 0.00102 + 19 0.141 + 20 0.0194 + 21 0.0522 + 23 0.00102 + 26 0.00512 + 27 0.00102 + 28 0.00921 + 30 0.00614 + 31 0.00102 + 34 0.00205 + 35 0.00205 + 37 0.00512 + 39 0.00205 + 40 0.0747 + 41 0.00102 + 42 0.00205 + 45 0.0491 + 46 0.00409 + 47 0.0768 + + 42 2 1 0 + 45 1 + + 46 6 1 0 + 47 1 + + 58 4 3 0 + 7 0.25 + 21 0.25 + 45 0.5 + + 62 815 34 0 + 0 0.00123 + 1 0.00123 + 2 0.103 + 3 0.0172 + 4 0.178 + 5 0.00736 + 7 0.0736 + 8 0.0331 + 9 0.00491 + 10 0.00123 + 11 0.00245 + 13 0.0479 + 14 0.0491 + 15 0.119 + 16 0.00245 + 17 0.00123 + 19 0.168 + 20 0.0233 + 21 0.0577 + 23 0.00123 + 26 0.00613 + 27 0.00123 + 28 0.011 + 30 0.00736 + 31 0.00123 + 34 0.00245 + 35 0.00245 + 37 0.00491 + 39 0.00123 + 40 0.00859 + 42 0.00245 + 45 0.0528 + 46 0.00245 + 47 0.00245 + + 66 3 3 0 + 2 0.333 + 8 0.333 + 40 0.333 + + 69 144 13 0 + 2 0.00694 + 7 0.0139 + 13 0.00694 + 15 0.00694 + 19 0.00694 + 21 0.0208 + 37 0.00694 + 39 0.00694 + 40 0.444 + 41 0.00694 + 45 0.00694 + 46 0.0139 + 47 0.451 + + 43 125 4 3 + 20 0.008 + 40 0.032 + 42 0.008 + 47 0.952 + + 2 1 1 0 + 20 1 + + 40 115 2 0 + 42 0.0087 + 47 0.991 + + 69 4 1 0 + 40 1 + + 45 82 15 5 + 0 0.0244 + 2 0.22 + 4 0.134 + 5 0.0122 + 7 0.11 + 8 0.0122 + 13 0.0244 + 14 0.0122 + 15 0.0244 + 19 0.146 + 20 0.0366 + 21 0.0732 + 28 0.0366 + 37 0.0122 + 47 0.122 + + 2 15 7 0 + 0 0.0667 + 4 0.4 + 5 0.0667 + 7 0.133 + 19 0.0667 + 21 0.133 + 28 0.133 + + 40 10 1 0 + 47 1 + + 41 11 4 0 + 2 0.636 + 8 0.0909 + 19 0.182 + 21 0.0909 + + 42 31 11 0 + 0 0.0323 + 4 0.161 + 7 0.194 + 13 0.0645 + 14 0.0323 + 15 0.0645 + 19 0.258 + 20 0.0968 + 21 0.0323 + 28 0.0323 + 37 0.0323 + + 58 13 3 0 + 2 0.846 + 7 0.0769 + 19 0.0769 + + 46 2445 19 7 + 0 0.00164 + 2 0.0225 + 4 0.00204 + 6 0.000409 + 7 0.00573 + 15 0.00777 + 19 0.0151 + 21 0.00164 + 26 0.000818 + 28 0.000409 + 29 0.0139 + 30 0.000409 + 33 0.0278 + 40 0.00409 + 42 0.00327 + 43 0.00368 + 45 0.000409 + 46 0.00859 + 47 0.88 + + 40 2157 5 0 + 2 0.000464 + 42 0.00278 + 43 0.00278 + 46 0.00881 + 47 0.985 + + 41 201 13 0 + 0 0.00995 + 2 0.169 + 4 0.0249 + 6 0.00498 + 7 0.0149 + 15 0.0796 + 19 0.179 + 21 0.00498 + 29 0.169 + 30 0.00498 + 33 0.328 + 45 0.00498 + 46 0.00498 + + 42 4 3 0 + 28 0.25 + 40 0.25 + 47 0.5 + + 48 12 2 0 + 2 0.667 + 7 0.333 + + 55 11 6 0 + 2 0.182 + 7 0.364 + 21 0.0909 + 26 0.0909 + 33 0.0909 + 42 0.182 + + 62 7 4 0 + 2 0.571 + 15 0.143 + 19 0.143 + 47 0.143 + + 69 33 10 0 + 0 0.0606 + 2 0.182 + 7 0.0909 + 15 0.0606 + 21 0.0606 + 26 0.0303 + 40 0.273 + 43 0.0909 + 46 0.0303 + 47 0.121 + + 47 95402 34 17 + 0 0.00953 + 2 0.0171 + 3 8.39e-05 + 4 0.000954 + 5 6.29e-05 + 7 0.0109 + 8 0.000419 + 12 0.00393 + 13 0.000241 + 14 0.000157 + 15 0.000618 + 19 0.00136 + 20 5.24e-05 + 21 0.00164 + 22 0.000105 + 26 0.00125 + 28 0.000136 + 29 0.00199 + 30 0.000293 + 31 0.000199 + 32 0.00066 + 33 0.00197 + 34 0.00021 + 35 2.1e-05 + 37 0.000514 + 39 2.1e-05 + 40 0.361 + 41 0.181 + 42 0.0191 + 43 0.00153 + 44 0.000566 + 45 0.000356 + 46 0.00162 + 47 0.38 + + 40 33670 2 0 + 43 0.000178 + 47 1 + + 41 47 15 0 + 0 0.0851 + 2 0.17 + 4 0.0213 + 7 0.0213 + 12 0.0213 + 13 0.0213 + 14 0.0426 + 15 0.0213 + 19 0.0851 + 20 0.0213 + 29 0.0638 + 33 0.149 + 45 0.0213 + 46 0.149 + 47 0.106 + + 42 78 4 0 + 19 0.0128 + 39 0.0128 + 41 0.0128 + 47 0.962 + + 43 119 1 0 + 47 1 + + 45 10 1 0 + 47 1 + + 46 2350 15 0 + 0 0.0017 + 2 0.00723 + 4 0.00213 + 7 0.00383 + 15 0.00766 + 19 0.014 + 21 0.0017 + 26 0.000851 + 29 0.0145 + 33 0.0277 + 42 0.000851 + 43 0.0017 + 45 0.000426 + 46 0.000426 + 47 0.915 + + 48 773 21 0 + 0 0.0103 + 2 0.0414 + 4 0.00517 + 7 0.19 + 12 0.00517 + 14 0.00129 + 15 0.00129 + 19 0.00259 + 21 0.00517 + 26 0.00129 + 30 0.00129 + 31 0.00129 + 32 0.00129 + 33 0.00129 + 37 0.00259 + 40 0.446 + 41 0.254 + 42 0.0207 + 43 0.00259 + 46 0.00129 + 47 0.00388 + + 49 56 9 0 + 0 0.0357 + 2 0.0357 + 7 0.125 + 15 0.0179 + 40 0.393 + 41 0.304 + 42 0.0536 + 46 0.0179 + 47 0.0179 + + 55 709 22 0 + 0 0.00846 + 2 0.0367 + 4 0.00282 + 7 0.0339 + 8 0.00282 + 12 0.00705 + 15 0.00282 + 21 0.00564 + 22 0.00141 + 26 0.00423 + 29 0.00282 + 30 0.00423 + 32 0.00423 + 33 0.00141 + 34 0.00564 + 37 0.00282 + 40 0.54 + 41 0.288 + 42 0.0339 + 43 0.00282 + 46 0.00423 + 47 0.00423 + + 57 217 12 0 + 0 0.00461 + 2 0.023 + 7 0.0184 + 12 0.00461 + 19 0.00461 + 21 0.0138 + 26 0.0138 + 40 0.479 + 41 0.392 + 42 0.0369 + 46 0.00461 + 47 0.00461 + + 58 11 4 0 + 8 0.0909 + 28 0.0909 + 40 0.545 + 41 0.273 + + 62 880 12 0 + 2 0.00227 + 7 0.00114 + 12 0.00114 + 19 0.00227 + 28 0.00114 + 29 0.00227 + 40 0.512 + 41 0.441 + 42 0.017 + 43 0.00341 + 46 0.00568 + 47 0.0102 + + 64 87 4 0 + 7 0.0115 + 40 0.747 + 41 0.23 + 43 0.0115 + + 65 4 4 0 + 40 0.25 + 41 0.25 + 46 0.25 + 47 0.25 + + 67 7 2 0 + 46 0.143 + 47 0.857 + + 68 12 6 0 + 2 0.0833 + 15 0.0833 + 19 0.0833 + 40 0.417 + 41 0.25 + 42 0.0833 + + 69 56363 34 0 + 0 0.0157 + 2 0.0273 + 3 0.000142 + 4 0.0014 + 5 0.000106 + 7 0.015 + 8 0.000656 + 12 0.00644 + 13 0.00039 + 14 0.000213 + 15 0.000621 + 19 0.00153 + 20 7.1e-05 + 21 0.0025 + 22 0.00016 + 26 0.00195 + 28 0.000195 + 29 0.00264 + 30 0.000426 + 31 0.000319 + 32 0.00105 + 33 0.00202 + 34 0.000284 + 35 3.55e-05 + 37 0.000798 + 39 1.77e-05 + 40 0.587 + 41 0.29 + 42 0.031 + 43 0.00227 + 44 0.000958 + 45 0.000568 + 46 0.00238 + 47 0.00405 + + 48 811 21 4 + 0 0.00986 + 2 0.0395 + 4 0.00493 + 7 0.211 + 12 0.00493 + 14 0.00123 + 15 0.00123 + 19 0.00247 + 21 0.00493 + 26 0.00123 + 30 0.00123 + 31 0.00123 + 32 0.00123 + 33 0.00123 + 37 0.00247 + 40 0.428 + 41 0.242 + 42 0.0197 + 43 0.00247 + 46 0.016 + 47 0.0037 + + 45 54 4 0 + 7 0.037 + 40 0.556 + 41 0.204 + 46 0.204 + + 47 350 14 0 + 2 0.0229 + 4 0.0114 + 7 0.354 + 14 0.00286 + 19 0.00286 + 21 0.00857 + 26 0.00286 + 30 0.00286 + 31 0.00286 + 32 0.00286 + 33 0.00286 + 40 0.291 + 41 0.28 + 42 0.0114 + + 49 8 2 0 + 40 0.125 + 41 0.875 + + 55 393 14 0 + 0 0.0204 + 2 0.0611 + 7 0.115 + 12 0.0102 + 15 0.00254 + 19 0.00254 + 21 0.00254 + 37 0.00509 + 40 0.532 + 41 0.201 + 42 0.0305 + 43 0.00509 + 46 0.00509 + 47 0.00763 + + 49 97 22 6 + 0 0.0309 + 2 0.0206 + 3 0.0103 + 4 0.0515 + 7 0.144 + 8 0.0206 + 12 0.0103 + 13 0.0103 + 14 0.0309 + 15 0.0206 + 19 0.0515 + 21 0.0206 + 26 0.0309 + 28 0.0103 + 33 0.0103 + 37 0.0103 + 40 0.237 + 41 0.216 + 42 0.0309 + 45 0.0103 + 46 0.0103 + 47 0.0103 + + 2 20 13 0 + 0 0.05 + 4 0.1 + 7 0.05 + 8 0.05 + 12 0.05 + 13 0.05 + 14 0.1 + 19 0.2 + 26 0.1 + 33 0.05 + 40 0.05 + 41 0.1 + 45 0.05 + + 41 20 11 0 + 3 0.05 + 4 0.15 + 8 0.05 + 14 0.05 + 15 0.05 + 19 0.05 + 21 0.1 + 28 0.05 + 40 0.2 + 41 0.1 + 42 0.15 + + 47 18 6 0 + 0 0.0556 + 7 0.222 + 40 0.222 + 41 0.389 + 46 0.0556 + 47 0.0556 + + 48 5 2 0 + 40 0.8 + 41 0.2 + + 55 31 7 0 + 0 0.0323 + 2 0.0645 + 7 0.29 + 15 0.0323 + 26 0.0323 + 40 0.258 + 41 0.29 + + 69 2 2 0 + 37 0.5 + 40 0.5 + + 51 13 2 0 + 40 0.846 + 41 0.154 + + 55 895 23 6 + 0 0.0067 + 2 0.0291 + 4 0.00223 + 7 0.15 + 8 0.00223 + 12 0.00559 + 15 0.00223 + 21 0.00559 + 22 0.00112 + 26 0.0101 + 29 0.00223 + 30 0.00335 + 32 0.00335 + 33 0.00112 + 34 0.00447 + 37 0.00223 + 40 0.482 + 41 0.237 + 42 0.0268 + 43 0.00223 + 45 0.00223 + 46 0.0156 + 47 0.00335 + + 45 72 4 0 + 40 0.556 + 41 0.278 + 42 0.0139 + 46 0.153 + + 47 526 22 0 + 0 0.0076 + 2 0.0209 + 4 0.0019 + 7 0.228 + 8 0.0019 + 12 0.0076 + 15 0.0038 + 21 0.0076 + 22 0.0019 + 26 0.0152 + 29 0.0038 + 30 0.0057 + 32 0.0038 + 33 0.0019 + 34 0.0076 + 37 0.0019 + 40 0.376 + 41 0.27 + 42 0.0228 + 43 0.0038 + 45 0.0038 + 46 0.0019 + + 48 18 6 0 + 2 0.0556 + 7 0.167 + 26 0.0556 + 40 0.389 + 41 0.278 + 47 0.0556 + + 49 11 3 0 + 7 0.273 + 40 0.0909 + 41 0.636 + + 55 195 14 0 + 0 0.00513 + 2 0.0718 + 4 0.00513 + 7 0.041 + 8 0.00513 + 12 0.00513 + 21 0.00513 + 32 0.00513 + 37 0.00513 + 40 0.631 + 41 0.159 + 42 0.0462 + 46 0.00513 + 47 0.0103 + + 69 59 4 0 + 0 0.0169 + 40 0.915 + 41 0.0508 + 42 0.0169 + + 57 259 12 4 + 0 0.00386 + 2 0.0193 + 7 0.0502 + 12 0.00386 + 19 0.00386 + 21 0.0116 + 26 0.0154 + 40 0.517 + 41 0.332 + 42 0.0347 + 46 0.00386 + 47 0.00386 + + 41 24 4 0 + 7 0.0417 + 40 0.833 + 41 0.0833 + 42 0.0417 + + 47 26 4 0 + 21 0.0385 + 26 0.0385 + 40 0.269 + 41 0.654 + + 48 24 6 0 + 2 0.0417 + 7 0.167 + 40 0.333 + 41 0.333 + 42 0.0833 + 47 0.0417 + + 69 30 5 0 + 0 0.0333 + 26 0.0333 + 40 0.7 + 41 0.2 + 42 0.0333 + + 58 100 11 4 + 2 0.43 + 7 0.08 + 8 0.02 + 19 0.01 + 21 0.01 + 26 0.01 + 28 0.01 + 40 0.14 + 41 0.1 + 42 0.04 + 45 0.15 + + 2 3 3 0 + 8 0.333 + 19 0.333 + 26 0.333 + + 46 9 4 0 + 40 0.222 + 41 0.556 + 42 0.111 + 45 0.111 + + 62 73 9 0 + 2 0.562 + 7 0.0274 + 8 0.0137 + 21 0.0137 + 28 0.0137 + 40 0.11 + 41 0.0411 + 42 0.0411 + 45 0.178 + + 69 11 4 0 + 7 0.545 + 40 0.273 + 41 0.0909 + 45 0.0909 + + 62 7159 19 11 + 2 0.0976 + 4 0.00014 + 7 0.00279 + 8 0.000419 + 12 0.00014 + 15 0.00014 + 19 0.000419 + 21 0.000419 + 28 0.00014 + 29 0.000279 + 37 0.000279 + 40 0.414 + 41 0.361 + 42 0.116 + 43 0.000419 + 44 0.00182 + 45 0.00014 + 46 0.00168 + 47 0.00126 + + 2 2599 15 0 + 2 0.0104 + 7 0.00577 + 8 0.000385 + 12 0.000385 + 19 0.00077 + 28 0.000385 + 29 0.00077 + 37 0.000385 + 40 0.809 + 41 0.155 + 42 0.0119 + 43 0.00077 + 44 0.000385 + 46 0.00154 + 47 0.00192 + + 7 43 4 0 + 2 0.0233 + 40 0.86 + 41 0.093 + 44 0.0233 + + 21 30 5 0 + 2 0.0333 + 40 0.767 + 41 0.133 + 42 0.0333 + 46 0.0333 + + 41 488 5 0 + 2 0.248 + 40 0.184 + 41 0.514 + 42 0.0492 + 46 0.0041 + + 42 697 6 0 + 2 0.00717 + 40 0.859 + 41 0.0689 + 42 0.0588 + 46 0.00143 + 47 0.0043 + + 44 12 3 0 + 2 0.167 + 41 0.5 + 42 0.333 + + 45 222 7 0 + 2 0.113 + 7 0.0045 + 40 0.189 + 41 0.568 + 42 0.104 + 46 0.018 + 47 0.0045 + + 47 2942 13 0 + 2 0.171 + 4 0.00034 + 7 0.00102 + 8 0.00068 + 15 0.00034 + 19 0.00034 + 21 0.00102 + 37 0.00034 + 40 0.00034 + 41 0.582 + 42 0.238 + 44 0.00374 + 45 0.00034 + + 48 36 3 0 + 7 0.0278 + 40 0.833 + 41 0.139 + + 49 36 4 0 + 2 0.0556 + 40 0.75 + 41 0.167 + 43 0.0278 + + 57 12 3 0 + 2 0.5 + 40 0.167 + 41 0.333 + + 64 106 7 1 + 2 0.00943 + 7 0.00943 + 21 0.00943 + 40 0.755 + 41 0.198 + 42 0.00943 + 43 0.00943 + + 47 1 1 0 + 42 1 + + 66 32 3 0 + 40 0.781 + 41 0.125 + 42 0.0938 + + 67 9 3 0 + 40 0.222 + 46 0.111 + 47 0.667 + + 68 12 6 0 + 2 0.0833 + 15 0.0833 + 19 0.0833 + 40 0.417 + 41 0.25 + 42 0.0833 + + 69 90067 36 14 + 0 0.00981 + 2 0.0171 + 3 0.000111 + 4 0.000999 + 5 6.66e-05 + 7 0.00973 + 8 0.000411 + 9 1.11e-05 + 12 0.00403 + 13 0.000289 + 14 0.000133 + 15 0.000811 + 17 1.11e-05 + 19 0.000966 + 20 4.44e-05 + 21 0.0016 + 22 9.99e-05 + 26 0.00123 + 28 0.000122 + 29 0.00165 + 30 0.000266 + 31 0.000211 + 32 0.000655 + 33 0.00127 + 34 0.000189 + 35 2.22e-05 + 37 0.000522 + 39 1.11e-05 + 40 0.736 + 41 0.184 + 42 0.021 + 43 0.00147 + 44 0.000644 + 45 0.000366 + 46 0.00185 + 47 0.00253 + + 2 19 3 0 + 40 0.895 + 41 0.0526 + 44 0.0526 + + 4 32 4 0 + 7 0.0312 + 12 0.0312 + 40 0.844 + 41 0.0938 + + 21 122 8 0 + 0 0.0082 + 2 0.0082 + 7 0.0246 + 29 0.0164 + 40 0.631 + 41 0.27 + 42 0.0328 + 47 0.0082 + + 41 838 11 0 + 0 0.00119 + 2 0.00477 + 4 0.00119 + 15 0.0143 + 33 0.00119 + 37 0.00119 + 40 0.899 + 41 0.0513 + 42 0.0203 + 43 0.00239 + 47 0.00358 + + 43 28 3 0 + 0 0.0714 + 40 0.464 + 41 0.464 + + 45 334 7 0 + 2 0.00898 + 7 0.00299 + 40 0.557 + 41 0.38 + 42 0.018 + 46 0.0269 + 47 0.00599 + + 46 98 10 0 + 0 0.0102 + 2 0.0102 + 3 0.0102 + 4 0.0204 + 7 0.0102 + 15 0.255 + 40 0.531 + 41 0.122 + 42 0.0204 + 43 0.0102 + + 47 23686 34 0 + 0 0.0246 + 2 0.021 + 3 0.000253 + 4 0.00186 + 5 8.44e-05 + 7 0.0269 + 8 0.00118 + 12 0.0117 + 13 0.00076 + 14 0.000169 + 15 0.000844 + 17 4.22e-05 + 19 0.00101 + 20 4.22e-05 + 21 0.00422 + 22 0.000338 + 26 0.00355 + 28 0.000296 + 29 0.00469 + 30 0.000633 + 31 0.000633 + 32 0.00182 + 33 0.00338 + 34 0.000464 + 37 0.00148 + 39 4.22e-05 + 40 0.625 + 41 0.231 + 42 0.0221 + 43 0.00207 + 44 0.000929 + 45 0.000929 + 46 0.00312 + 47 0.00262 + + 49 3383 23 0 + 0 0.00532 + 2 0.00769 + 3 0.000296 + 4 0.000887 + 7 0.00236 + 9 0.000296 + 12 0.00236 + 13 0.000591 + 15 0.000591 + 19 0.000296 + 21 0.00118 + 26 0.000296 + 29 0.000887 + 30 0.000887 + 32 0.000887 + 33 0.000887 + 40 0.792 + 41 0.156 + 42 0.021 + 43 0.00118 + 44 0.000296 + 46 0.00148 + 47 0.00207 + + 55 60684 33 0 + 0 0.0046 + 2 0.0165 + 3 3.3e-05 + 4 0.000659 + 5 6.59e-05 + 7 0.00369 + 8 0.000148 + 12 0.00125 + 13 9.89e-05 + 14 0.000132 + 15 0.000214 + 19 0.00101 + 20 4.94e-05 + 21 0.000659 + 22 1.65e-05 + 26 0.000428 + 28 6.59e-05 + 29 0.000527 + 30 9.89e-05 + 31 6.59e-05 + 32 0.000214 + 33 0.000478 + 34 9.89e-05 + 35 3.3e-05 + 37 0.000181 + 40 0.774 + 41 0.168 + 42 0.0204 + 43 0.00125 + 44 0.00056 + 45 0.000165 + 46 0.00129 + 47 0.0025 + + 57 196 6 0 + 2 0.0153 + 29 0.0051 + 40 0.811 + 41 0.122 + 42 0.0408 + 45 0.0051 + + 58 207 4 0 + 2 0.00966 + 40 0.928 + 41 0.0338 + 42 0.029 + + 62 256 6 0 + 2 0.00781 + 15 0.00391 + 33 0.00391 + 40 0.793 + 41 0.148 + 42 0.043 + + 64 121 6 0 + 19 0.00826 + 40 0.785 + 41 0.132 + 42 0.0579 + 46 0.00826 + 47 0.00826 + +63 79666 1 0 + 47 1 + +64 76641 43 33 + 0 0.0391 + 1 9.13e-05 + 2 0.0169 + 3 0.00201 + 4 0.0542 + 5 0.0026 + 7 0.0151 + 8 0.011 + 9 0.000692 + 10 0.000665 + 11 1.3e-05 + 12 0.0139 + 13 0.0113 + 14 0.0129 + 15 0.0225 + 16 0.000209 + 17 0.000326 + 18 2.61e-05 + 19 0.0442 + 20 0.00497 + 21 0.00892 + 22 0.000248 + 23 1.3e-05 + 26 0.00343 + 28 0.000613 + 29 0.0176 + 30 0.00316 + 31 0.00274 + 32 0.00857 + 33 0.0137 + 34 0.000626 + 35 0.000535 + 36 5.22e-05 + 37 0.001 + 39 0.000183 + 40 0.488 + 41 0.175 + 42 0.0152 + 43 0.00151 + 44 0.000887 + 45 0.0024 + 46 0.00119 + 47 0.00198 + + 0 1 1 0 + 14 1 + + 2 337 19 7 + 0 0.00297 + 3 0.00297 + 4 0.0623 + 5 0.00297 + 7 0.623 + 8 0.00297 + 14 0.0119 + 15 0.00297 + 19 0.0089 + 20 0.00297 + 21 0.0415 + 22 0.00297 + 26 0.00297 + 34 0.0564 + 35 0.0712 + 36 0.0119 + 37 0.0742 + 41 0.0089 + 45 0.00593 + + 7 2 1 0 + 21 1 + + 41 107 11 0 + 4 0.0467 + 7 0.729 + 14 0.00935 + 19 0.00935 + 21 0.028 + 22 0.00935 + 34 0.0654 + 35 0.0374 + 37 0.0374 + 41 0.00935 + 45 0.0187 + + 42 9 4 0 + 7 0.444 + 34 0.111 + 37 0.333 + 41 0.111 + + 46 8 2 0 + 7 0.875 + 14 0.125 + + 47 10 7 0 + 4 0.2 + 5 0.1 + 8 0.1 + 14 0.2 + 19 0.2 + 20 0.1 + 26 0.1 + + 62 6 2 0 + 15 0.167 + 21 0.833 + + 64 194 10 0 + 0 0.00515 + 3 0.00515 + 4 0.0722 + 7 0.619 + 21 0.0206 + 34 0.0567 + 35 0.103 + 36 0.0206 + 37 0.0928 + 41 0.00515 + + 4 202 13 0 + 3 0.0149 + 7 0.0297 + 8 0.153 + 10 0.0149 + 13 0.411 + 15 0.158 + 20 0.173 + 21 0.0099 + 31 0.00495 + 33 0.00495 + 41 0.00495 + 42 0.0099 + 44 0.0099 + + 7 10169 37 8 + 0 0.00521 + 1 0.000492 + 2 0.00059 + 3 0.0103 + 4 0.305 + 5 0.0145 + 7 0.0308 + 8 0.061 + 9 0.00403 + 10 0.00334 + 11 9.83e-05 + 12 9.83e-05 + 13 0.0558 + 14 0.0677 + 15 0.116 + 16 0.00108 + 17 0.00187 + 19 0.217 + 20 0.0234 + 21 0.0175 + 22 0.000885 + 26 0.00413 + 28 0.000983 + 29 9.83e-05 + 30 0.0177 + 31 0.0146 + 32 0.000295 + 33 0.000492 + 34 0.000197 + 35 0.000787 + 37 0.00256 + 39 0.000787 + 41 0.006 + 42 0.000197 + 43 0.000197 + 44 0.000787 + 45 0.0137 + + 7 48 11 0 + 4 0.25 + 5 0.0208 + 10 0.0208 + 13 0.0625 + 14 0.0625 + 15 0.0208 + 19 0.458 + 20 0.0208 + 26 0.0417 + 30 0.0208 + 42 0.0208 + + 21 246 16 0 + 4 0.341 + 5 0.0163 + 7 0.0203 + 8 0.061 + 9 0.00407 + 13 0.061 + 14 0.0447 + 15 0.0813 + 19 0.285 + 20 0.0203 + 21 0.0163 + 26 0.00407 + 28 0.0244 + 30 0.0122 + 31 0.00407 + 45 0.00407 + + 35 5 2 0 + 4 0.8 + 13 0.2 + + 44 3 2 0 + 15 0.333 + 43 0.667 + + 47 9705 36 0 + 0 0.00546 + 1 0.000515 + 2 0.000618 + 3 0.0108 + 4 0.304 + 5 0.0145 + 7 0.0316 + 8 0.0613 + 9 0.00412 + 10 0.0034 + 11 0.000103 + 12 0.000103 + 13 0.0551 + 14 0.0687 + 15 0.117 + 16 0.00113 + 17 0.00196 + 19 0.214 + 20 0.0236 + 21 0.0177 + 22 0.000927 + 26 0.00402 + 28 0.000412 + 29 0.000103 + 30 0.018 + 31 0.015 + 32 0.000309 + 33 0.000515 + 34 0.000206 + 35 0.000824 + 37 0.00268 + 39 0.000824 + 41 0.00629 + 42 0.000103 + 44 0.000721 + 45 0.0141 + + 49 106 13 0 + 4 0.311 + 5 0.00943 + 7 0.00943 + 8 0.066 + 13 0.0943 + 14 0.066 + 15 0.123 + 19 0.255 + 20 0.0189 + 21 0.0189 + 30 0.00943 + 31 0.00943 + 44 0.00943 + + 55 47 6 0 + 4 0.383 + 8 0.0213 + 13 0.0638 + 15 0.298 + 19 0.213 + 20 0.0213 + + 57 5 3 0 + 4 0.4 + 8 0.4 + 45 0.2 + + 12 1 1 0 + 9 1 + + 13 52 10 2 + 4 0.0385 + 5 0.0192 + 7 0.0385 + 13 0.0192 + 14 0.0192 + 15 0.0192 + 19 0.0385 + 26 0.75 + 30 0.0385 + 41 0.0192 + + 7 45 5 0 + 4 0.0444 + 5 0.0222 + 14 0.0222 + 19 0.0444 + 26 0.867 + + 47 7 5 0 + 7 0.286 + 13 0.143 + 15 0.143 + 30 0.286 + 41 0.143 + + 15 14 3 0 + 4 0.0714 + 15 0.857 + 19 0.0714 + + 21 134 22 5 + 0 0.0224 + 3 0.0149 + 4 0.239 + 5 0.00746 + 7 0.0448 + 8 0.0896 + 9 0.0224 + 10 0.00746 + 13 0.0299 + 14 0.00746 + 15 0.0373 + 19 0.134 + 20 0.0224 + 21 0.112 + 26 0.0149 + 28 0.00746 + 30 0.0149 + 31 0.0821 + 40 0.0224 + 41 0.0373 + 44 0.0149 + 45 0.0149 + + 2 7 4 0 + 19 0.143 + 40 0.429 + 41 0.286 + 45 0.143 + + 7 7 5 0 + 4 0.143 + 7 0.143 + 8 0.143 + 19 0.429 + 26 0.143 + + 21 6 4 0 + 4 0.167 + 15 0.5 + 26 0.167 + 44 0.167 + + 37 1 1 0 + 28 1 + + 47 107 19 0 + 0 0.028 + 3 0.0187 + 4 0.252 + 5 0.00935 + 7 0.0374 + 8 0.103 + 9 0.028 + 10 0.00935 + 13 0.0374 + 14 0.00935 + 15 0.0187 + 19 0.121 + 20 0.028 + 21 0.14 + 30 0.0187 + 31 0.0935 + 41 0.028 + 44 0.00935 + 45 0.00935 + + 26 2 1 0 + 4 1 + + 28 1 1 0 + 26 1 + + 34 10 8 0 + 4 0.1 + 5 0.1 + 8 0.1 + 10 0.1 + 14 0.1 + 15 0.1 + 20 0.1 + 21 0.3 + + 37 1 1 0 + 21 1 + + 40 24 3 0 + 42 0.0417 + 46 0.292 + 47 0.667 + + 41 246 21 8 + 0 0.0122 + 2 0.423 + 3 0.00407 + 4 0.0203 + 7 0.301 + 8 0.0163 + 13 0.00813 + 15 0.00407 + 19 0.0122 + 20 0.00407 + 21 0.0569 + 26 0.00407 + 29 0.00407 + 30 0.0366 + 31 0.0122 + 33 0.00407 + 34 0.0163 + 35 0.00813 + 37 0.0203 + 45 0.00813 + 46 0.0244 + + 7 49 10 0 + 4 0.0204 + 7 0.673 + 8 0.0204 + 20 0.0204 + 21 0.0204 + 26 0.0204 + 30 0.102 + 31 0.0612 + 37 0.0204 + 45 0.0408 + + 49 2 2 0 + 34 0.5 + 37 0.5 + + 55 1 1 0 + 0 1 + + 57 2 1 0 + 19 1 + + 62 7 5 0 + 4 0.143 + 13 0.286 + 19 0.143 + 21 0.286 + 29 0.143 + + 64 136 10 0 + 0 0.0147 + 2 0.765 + 4 0.00735 + 7 0.0809 + 21 0.0221 + 30 0.00735 + 34 0.0221 + 35 0.0147 + 37 0.0221 + 46 0.0441 + + 71 11 5 0 + 4 0.0909 + 7 0.273 + 8 0.273 + 21 0.273 + 30 0.0909 + + 72 36 6 0 + 3 0.0278 + 7 0.75 + 15 0.0278 + 21 0.111 + 30 0.0556 + 33 0.0278 + + 42 22 7 1 + 1 0.0455 + 2 0.409 + 7 0.136 + 21 0.0455 + 37 0.227 + 45 0.0455 + 47 0.0909 + + 62 2 1 0 + 47 1 + + 43 4 4 0 + 4 0.25 + 9 0.25 + 12 0.25 + 29 0.25 + + 44 1 1 0 + 26 1 + + 45 112 19 3 + 0 0.0179 + 1 0.00893 + 3 0.0179 + 4 0.259 + 5 0.0536 + 7 0.0804 + 8 0.0536 + 10 0.0179 + 13 0.0536 + 14 0.0625 + 15 0.0179 + 17 0.00893 + 19 0.259 + 20 0.0268 + 21 0.0179 + 31 0.00893 + 33 0.00893 + 34 0.00893 + 37 0.0179 + + 41 2 2 0 + 15 0.5 + 31 0.5 + + 58 2 2 0 + 10 0.5 + 37 0.5 + + 72 2 2 0 + 0 0.5 + 33 0.5 + + 46 17 5 3 + 2 0.412 + 34 0.0588 + 42 0.0588 + 44 0.0588 + 47 0.412 + + 40 7 1 0 + 47 1 + + 41 6 2 0 + 2 0.833 + 34 0.167 + + 62 2 2 0 + 42 0.5 + 44 0.5 + + 47 27924 33 12 + 0 0.0193 + 2 0.0173 + 4 0.00147 + 5 0.000215 + 7 0.00806 + 8 0.000143 + 12 0.00623 + 13 0.00043 + 14 0.000215 + 15 0.00043 + 19 0.0024 + 20 0.000179 + 21 0.00208 + 22 0.000107 + 26 0.00161 + 28 0.000322 + 29 0.00326 + 30 0.00043 + 31 0.000215 + 32 0.00165 + 33 0.00154 + 34 0.000322 + 35 7.16e-05 + 37 0.000251 + 39 3.58e-05 + 40 0.669 + 41 0.235 + 42 0.0204 + 43 0.00201 + 44 0.000967 + 45 0.000466 + 46 0.00133 + 47 0.00272 + + 40 17 2 0 + 42 0.0588 + 47 0.941 + + 41 9 6 0 + 0 0.222 + 4 0.111 + 13 0.222 + 19 0.111 + 21 0.222 + 29 0.111 + + 42 2 1 0 + 47 1 + + 45 1 1 0 + 19 1 + + 46 9 3 0 + 42 0.111 + 44 0.111 + 47 0.778 + + 51 89 9 0 + 2 0.0112 + 4 0.0112 + 7 0.0112 + 26 0.0225 + 40 0.236 + 41 0.652 + 42 0.0337 + 46 0.0112 + 47 0.0112 + + 62 27364 33 0 + 0 0.0196 + 2 0.0175 + 4 0.00139 + 5 0.000219 + 7 0.00819 + 8 0.000146 + 12 0.00636 + 13 0.000365 + 14 0.000219 + 15 0.000439 + 19 0.00238 + 20 0.000183 + 21 0.00205 + 22 0.00011 + 26 0.00157 + 28 0.000329 + 29 0.00329 + 30 0.000439 + 31 0.000219 + 32 0.00168 + 33 0.00157 + 34 0.000292 + 35 7.31e-05 + 37 0.000256 + 39 3.65e-05 + 40 0.669 + 41 0.236 + 42 0.0203 + 43 0.00201 + 44 0.000914 + 45 0.000475 + 46 0.00132 + 47 0.00175 + + 64 335 5 0 + 40 0.887 + 41 0.0925 + 42 0.0149 + 43 0.00299 + 44 0.00299 + + 65 1 1 0 + 47 1 + + 66 76 6 0 + 2 0.0263 + 4 0.0132 + 34 0.0132 + 40 0.697 + 41 0.237 + 42 0.0132 + + 67 1 1 0 + 47 1 + + 72 3 2 0 + 40 0.333 + 42 0.667 + + 49 5 3 0 + 7 0.4 + 33 0.2 + 41 0.4 + + 50 2 2 0 + 0 0.5 + 7 0.5 + + 51 89 9 1 + 2 0.0112 + 4 0.0112 + 7 0.0112 + 26 0.0225 + 40 0.236 + 41 0.652 + 42 0.0337 + 46 0.0112 + 47 0.0112 + + 21 4 3 0 + 26 0.25 + 41 0.5 + 46 0.25 + + 58 20 13 2 + 0 0.1 + 2 0.05 + 4 0.15 + 7 0.05 + 15 0.1 + 19 0.1 + 20 0.05 + 32 0.05 + 33 0.05 + 35 0.05 + 40 0.05 + 41 0.1 + 45 0.1 + + 2 2 2 0 + 7 0.5 + 35 0.5 + + 72 5 4 0 + 0 0.4 + 4 0.2 + 15 0.2 + 33 0.2 + + 62 27403 33 15 + 0 0.0196 + 2 0.0177 + 4 0.00139 + 5 0.000219 + 7 0.00821 + 8 0.000146 + 12 0.00635 + 13 0.000365 + 14 0.000219 + 15 0.000438 + 19 0.00237 + 20 0.000182 + 21 0.00204 + 22 0.000109 + 26 0.00157 + 28 0.000328 + 29 0.00328 + 30 0.000438 + 31 0.000219 + 32 0.00168 + 33 0.00157 + 34 0.000292 + 35 7.3e-05 + 37 0.000255 + 39 3.65e-05 + 40 0.668 + 41 0.236 + 42 0.0204 + 43 0.00201 + 44 0.000912 + 45 0.000511 + 46 0.00139 + 47 0.00175 + + 4 201 8 0 + 0 0.00995 + 2 0.0498 + 7 0.00498 + 29 0.00498 + 30 0.00498 + 40 0.796 + 41 0.124 + 42 0.00498 + + 7 9838 29 0 + 0 0.00498 + 2 0.0176 + 4 0.00203 + 5 0.000305 + 7 0.00407 + 8 0.000102 + 12 0.00173 + 13 0.000203 + 14 0.000407 + 15 0.000813 + 19 0.00335 + 20 0.000203 + 21 0.00102 + 26 0.000712 + 28 0.000305 + 29 0.00122 + 32 0.000407 + 33 0.00152 + 34 0.000102 + 37 0.000203 + 39 0.000102 + 40 0.665 + 41 0.273 + 42 0.0147 + 43 0.00193 + 44 0.00061 + 45 0.000305 + 46 0.000813 + 47 0.00173 + + 13 50 6 0 + 2 0.02 + 7 0.02 + 40 0.68 + 41 0.22 + 42 0.04 + 46 0.02 + + 15 14 3 0 + 0 0.0714 + 33 0.0714 + 41 0.857 + + 21 118 6 0 + 2 0.00847 + 7 0.0169 + 40 0.525 + 41 0.432 + 42 0.00847 + 47 0.00847 + + 41 95 3 0 + 2 0.0105 + 40 0.905 + 41 0.0842 + + 45 132 6 0 + 35 0.00758 + 40 0.788 + 41 0.136 + 42 0.0303 + 46 0.0152 + 47 0.0227 + + 47 7896 30 0 + 0 0.0215 + 2 0.0193 + 4 0.000887 + 5 0.000127 + 7 0.0146 + 8 0.000253 + 12 0.0057 + 13 0.00038 + 15 0.000253 + 19 0.00127 + 21 0.00177 + 22 0.00038 + 26 0.00203 + 28 0.000253 + 29 0.0019 + 30 0.00076 + 31 0.000127 + 32 0.000633 + 33 0.00127 + 34 0.00038 + 35 0.000127 + 37 0.000633 + 40 0.769 + 41 0.135 + 42 0.0168 + 43 0.000633 + 44 0.00076 + 45 0.000253 + 46 0.00139 + 47 0.0019 + + 58 12 4 0 + 19 0.0833 + 40 0.667 + 41 0.167 + 43 0.0833 + + 68 2 2 0 + 19 0.5 + 46 0.5 + + 70 36 6 0 + 0 0.0278 + 12 0.0278 + 40 0.556 + 41 0.333 + 42 0.0278 + 44 0.0278 + + 71 1931 24 0 + 0 0.0109 + 2 0.0166 + 4 0.00311 + 5 0.000518 + 7 0.0088 + 12 0.00414 + 13 0.00104 + 14 0.00104 + 15 0.000518 + 19 0.00984 + 20 0.00104 + 21 0.00104 + 29 0.000518 + 31 0.000518 + 32 0.00104 + 34 0.000518 + 40 0.572 + 41 0.328 + 42 0.029 + 43 0.00363 + 44 0.00155 + 45 0.000518 + 46 0.00311 + 47 0.00104 + + 72 6697 28 0 + 0 0.0426 + 2 0.0166 + 4 0.000597 + 5 0.000149 + 7 0.00732 + 8 0.000149 + 12 0.0148 + 13 0.000448 + 15 0.000149 + 19 0.000149 + 20 0.000149 + 21 0.00433 + 26 0.00284 + 28 0.000597 + 29 0.00881 + 30 0.000747 + 31 0.000597 + 32 0.00523 + 33 0.00254 + 34 0.000448 + 40 0.579 + 41 0.274 + 42 0.03 + 43 0.00314 + 44 0.00119 + 45 0.00119 + 46 0.00134 + 47 0.00134 + + 73 320 12 0 + 0 0.025 + 2 0.0125 + 12 0.0125 + 21 0.00313 + 26 0.00313 + 29 0.00625 + 40 0.669 + 41 0.216 + 42 0.0406 + 43 0.00625 + 44 0.00313 + 47 0.00313 + + 74 14 2 0 + 4 0.0714 + 41 0.929 + + 64 690 9 3 + 2 0.281 + 7 0.00145 + 35 0.00145 + 40 0.432 + 41 0.243 + 42 0.0348 + 43 0.00145 + 44 0.00145 + 46 0.0029 + + 2 306 6 0 + 7 0.00327 + 40 0.892 + 41 0.0882 + 42 0.0098 + 43 0.00327 + 44 0.00327 + + 42 7 2 0 + 40 0.429 + 42 0.571 + + 47 337 5 0 + 2 0.561 + 35 0.00297 + 41 0.38 + 42 0.0504 + 46 0.00593 + + 65 1 1 0 + 47 1 + + 66 76 6 0 + 2 0.0263 + 4 0.0132 + 34 0.0132 + 40 0.697 + 41 0.237 + 42 0.0132 + + 67 2 2 0 + 40 0.5 + 47 0.5 + + 70 36 7 0 + 4 0.417 + 9 0.0278 + 14 0.0278 + 15 0.0278 + 19 0.444 + 20 0.0278 + 26 0.0278 + + 71 1951 27 2 + 0 0.000513 + 3 0.00718 + 4 0.281 + 5 0.0118 + 7 0.00923 + 8 0.0492 + 9 0.00154 + 10 0.00205 + 13 0.063 + 14 0.0866 + 15 0.121 + 16 0.00154 + 17 0.00205 + 19 0.255 + 20 0.0297 + 21 0.0128 + 26 0.0308 + 28 0.000513 + 29 0.00103 + 30 0.0118 + 31 0.00923 + 34 0.000513 + 35 0.000513 + 39 0.000513 + 40 0.000513 + 41 0.00871 + 45 0.00154 + + 2 1 1 0 + 28 1 + + 21 5 4 0 + 4 0.2 + 8 0.2 + 19 0.4 + 31 0.2 + + 72 6756 35 3 + 0 0.274 + 2 0.000296 + 3 0.00074 + 4 0.0333 + 5 0.000148 + 7 0.00873 + 8 0.00784 + 9 0.000444 + 10 0.000888 + 12 0.106 + 13 0.00562 + 14 0.00977 + 15 0.0255 + 16 0.000148 + 17 0.000148 + 18 0.000296 + 19 0.0598 + 20 0.0037 + 21 0.0465 + 22 0.000444 + 23 0.000148 + 26 0.00296 + 28 0.00252 + 29 0.172 + 30 0.000296 + 31 0.00237 + 32 0.083 + 33 0.141 + 34 0.000296 + 40 0.000148 + 41 0.00918 + 42 0.000296 + 43 0.000296 + 44 0.000296 + 45 0.000888 + + 44 2 1 0 + 43 1 + + 49 7 4 0 + 0 0.143 + 4 0.143 + 15 0.143 + 19 0.571 + + 60 3 2 0 + 4 0.667 + 8 0.333 + + 73 321 15 0 + 0 0.00623 + 3 0.0654 + 4 0.249 + 5 0.0187 + 8 0.0312 + 13 0.0623 + 14 0.112 + 15 0.159 + 16 0.00312 + 19 0.249 + 20 0.0125 + 21 0.00312 + 26 0.0156 + 39 0.00935 + 41 0.00312 + +65 580 13 7 + 2 0.00862 + 4 0.0069 + 19 0.00345 + 29 0.0069 + 30 0.00345 + 33 0.00345 + 37 0.00172 + 40 0.372 + 41 0.0069 + 42 0.0138 + 43 0.00172 + 46 0.0914 + 47 0.479 + + 2 1 1 0 + 37 1 + + 40 158 6 1 + 4 0.00633 + 41 0.00633 + 42 0.00633 + 43 0.00633 + 46 0.215 + 47 0.759 + + 72 1 1 0 + 42 1 + + 46 19 5 0 + 19 0.0526 + 29 0.105 + 33 0.0526 + 46 0.0526 + 47 0.737 + + 47 198 11 3 + 2 0.0101 + 4 0.0101 + 19 0.00505 + 29 0.0101 + 30 0.00505 + 33 0.00505 + 40 0.146 + 41 0.0101 + 42 0.0101 + 46 0.0859 + 47 0.702 + + 40 139 5 0 + 4 0.00719 + 41 0.00719 + 42 0.00719 + 46 0.115 + 47 0.863 + + 46 18 4 0 + 19 0.0556 + 29 0.111 + 33 0.0556 + 47 0.778 + + 67 32 7 0 + 2 0.0625 + 4 0.0312 + 30 0.0312 + 40 0.781 + 41 0.0312 + 42 0.0312 + 46 0.0312 + + 62 6 2 0 + 40 0.833 + 42 0.167 + + 65 2 2 0 + 2 0.5 + 40 0.5 + + 67 184 7 0 + 2 0.0109 + 4 0.00543 + 30 0.00543 + 40 0.946 + 41 0.00543 + 42 0.0217 + 46 0.00543 + +66 8140 31 21 + 0 0.00123 + 2 0.00147 + 3 0.00909 + 4 0.0339 + 5 0.000246 + 7 0.00823 + 8 0.0043 + 9 0.000246 + 13 0.00799 + 14 0.00381 + 15 0.177 + 16 0.000123 + 17 0.000123 + 19 0.00332 + 20 0.00209 + 21 0.00209 + 26 0.00135 + 30 0.00455 + 31 0.000369 + 34 0.000246 + 35 0.000369 + 37 0.000614 + 39 0.000123 + 40 0.239 + 41 0.0378 + 42 0.0108 + 43 0.000123 + 44 0.000123 + 45 0.00639 + 46 0.00541 + 47 0.438 + + 0 38 10 0 + 4 0.263 + 8 0.0789 + 13 0.0789 + 14 0.0526 + 15 0.316 + 17 0.0263 + 19 0.0789 + 20 0.0526 + 21 0.0263 + 31 0.0263 + + 2 4 4 0 + 0 0.25 + 20 0.25 + 21 0.25 + 30 0.25 + + 12 3 3 0 + 4 0.333 + 19 0.333 + 20 0.333 + + 28 1 1 0 + 3 1 + + 29 3 3 0 + 4 0.333 + 13 0.333 + 42 0.333 + + 32 1 1 0 + 13 1 + + 33 3 3 0 + 4 0.333 + 13 0.333 + 15 0.333 + + 40 1764 4 2 + 43 0.000567 + 45 0.0034 + 46 0.0227 + 47 0.973 + + 55 1602 4 0 + 43 0.000624 + 45 0.00375 + 46 0.00936 + 47 0.986 + + 62 82 2 0 + 46 0.293 + 47 0.707 + + 41 62 7 1 + 2 0.0484 + 4 0.0161 + 7 0.194 + 13 0.0161 + 21 0.0484 + 30 0.516 + 45 0.161 + + 64 2 1 0 + 21 1 + + 42 53 8 0 + 3 0.0189 + 4 0.0189 + 15 0.0189 + 21 0.0377 + 31 0.0189 + 40 0.0755 + 45 0.585 + 47 0.226 + + 45 45 9 2 + 4 0.178 + 5 0.0444 + 7 0.111 + 13 0.0444 + 19 0.378 + 35 0.0444 + 37 0.0444 + 44 0.0222 + 47 0.133 + + 40 6 1 0 + 47 1 + + 42 28 6 0 + 4 0.25 + 7 0.143 + 13 0.0357 + 19 0.464 + 35 0.0357 + 37 0.0714 + + 46 40 1 0 + 47 1 + + 47 2027 11 8 + 0 0.00148 + 2 0.00197 + 4 0.000493 + 19 0.000987 + 34 0.000493 + 40 0.0449 + 41 0.0607 + 42 0.00839 + 45 0.000493 + 46 0.000987 + 47 0.879 + + 40 1717 1 0 + 47 1 + + 46 40 1 0 + 47 1 + + 48 4 2 0 + 40 0.5 + 41 0.5 + + 55 174 9 0 + 0 0.0115 + 2 0.00575 + 19 0.0115 + 40 0.333 + 41 0.546 + 42 0.046 + 45 0.00575 + 46 0.0115 + 47 0.0287 + + 57 11 4 0 + 0 0.0909 + 40 0.182 + 41 0.364 + 42 0.364 + + 64 3 2 0 + 40 0.333 + 42 0.667 + + 66 1 1 0 + 42 1 + + 69 55 6 0 + 2 0.0545 + 4 0.0182 + 34 0.0182 + 40 0.491 + 41 0.382 + 42 0.0364 + + 48 6 3 0 + 7 0.167 + 40 0.5 + 41 0.333 + + 49 5 4 0 + 0 0.4 + 13 0.2 + 40 0.2 + 41 0.2 + + 55 1940 18 5 + 0 0.00103 + 2 0.000515 + 4 0.00258 + 7 0.017 + 8 0.00206 + 13 0.000515 + 14 0.000515 + 15 0.000515 + 19 0.00103 + 21 0.00206 + 26 0.00464 + 30 0.00103 + 40 0.856 + 41 0.0778 + 42 0.0278 + 45 0.00155 + 46 0.00103 + 47 0.00258 + + 0 38 7 0 + 2 0.0263 + 4 0.132 + 8 0.105 + 14 0.0263 + 21 0.0526 + 40 0.553 + 41 0.105 + + 12 3 3 0 + 21 0.333 + 40 0.333 + 41 0.333 + + 47 5 1 0 + 26 1 + + 55 8 3 0 + 7 0.25 + 40 0.625 + 41 0.125 + + 69 1873 14 0 + 0 0.00107 + 7 0.0166 + 13 0.000534 + 15 0.000534 + 19 0.00107 + 21 0.000534 + 26 0.0016 + 30 0.00107 + 40 0.868 + 41 0.0758 + 42 0.0278 + 45 0.0016 + 46 0.00107 + 47 0.00267 + + 57 52 9 3 + 0 0.0192 + 4 0.0385 + 7 0.154 + 8 0.0192 + 13 0.0192 + 21 0.0192 + 40 0.538 + 41 0.115 + 42 0.0769 + + 41 9 2 0 + 40 0.667 + 41 0.333 + + 55 34 8 0 + 0 0.0294 + 4 0.0588 + 7 0.235 + 8 0.0294 + 13 0.0294 + 21 0.0294 + 40 0.529 + 41 0.0588 + + 57 8 3 0 + 40 0.375 + 41 0.125 + 42 0.5 + + 62 85 2 0 + 40 0.976 + 42 0.0235 + + 64 28 3 1 + 40 0.786 + 41 0.0714 + 42 0.143 + + 47 3 2 0 + 41 0.667 + 42 0.333 + + 66 6 4 0 + 2 0.167 + 40 0.333 + 41 0.167 + 42 0.333 + + 69 1970 25 11 + 0 0.000508 + 2 0.00152 + 3 0.0365 + 4 0.124 + 7 0.00406 + 8 0.0137 + 9 0.00102 + 13 0.0269 + 14 0.0142 + 15 0.722 + 16 0.000508 + 19 0.00102 + 20 0.0066 + 21 0.00254 + 26 0.00102 + 30 0.00102 + 31 0.000508 + 34 0.000508 + 35 0.000508 + 37 0.00152 + 39 0.000508 + 40 0.0264 + 41 0.0107 + 42 0.00203 + 45 0.000508 + + 21 4 3 0 + 3 0.25 + 4 0.25 + 40 0.5 + + 41 231 7 0 + 3 0.0216 + 4 0.104 + 8 0.013 + 13 0.0346 + 14 0.0346 + 15 0.788 + 16 0.00433 + + 46 1168 6 0 + 3 0.0402 + 4 0.0753 + 8 0.00856 + 13 0.018 + 15 0.854 + 20 0.00342 + + 47 152 13 0 + 0 0.00658 + 3 0.0263 + 4 0.178 + 8 0.0197 + 13 0.0592 + 14 0.0197 + 15 0.605 + 19 0.0132 + 20 0.0395 + 21 0.00658 + 30 0.0132 + 31 0.00658 + 42 0.00658 + + 48 25 7 0 + 3 0.04 + 4 0.56 + 7 0.08 + 8 0.08 + 15 0.16 + 20 0.04 + 35 0.04 + + 49 54 9 0 + 3 0.037 + 4 0.463 + 8 0.037 + 9 0.0185 + 13 0.185 + 14 0.0741 + 15 0.0926 + 21 0.037 + 37 0.0556 + + 55 82 7 0 + 2 0.0366 + 4 0.0488 + 7 0.0122 + 34 0.0122 + 40 0.61 + 41 0.256 + 42 0.0244 + + 57 76 11 0 + 3 0.0526 + 4 0.382 + 7 0.0526 + 8 0.0132 + 13 0.0263 + 14 0.118 + 15 0.289 + 20 0.0132 + 21 0.0263 + 39 0.0132 + 45 0.0132 + + 58 6 4 0 + 4 0.333 + 7 0.167 + 15 0.167 + 26 0.333 + + 62 111 5 0 + 3 0.0541 + 4 0.045 + 8 0.00901 + 13 0.018 + 15 0.874 + + 69 54 9 0 + 3 0.0185 + 4 0.407 + 8 0.0926 + 9 0.0185 + 13 0.0185 + 14 0.0741 + 15 0.333 + 20 0.0185 + 42 0.0185 + +67 1431 33 20 + 0 0.0314 + 1 0.000699 + 2 0.00699 + 4 0.0664 + 5 0.0021 + 7 0.0175 + 8 0.0133 + 12 0.000699 + 13 0.0175 + 14 0.00559 + 15 0.0182 + 16 0.0014 + 17 0.000699 + 19 0.0783 + 20 0.000699 + 21 0.051 + 24 0.000699 + 26 0.0021 + 28 0.0783 + 29 0.0014 + 30 0.0168 + 31 0.00839 + 32 0.0028 + 34 0.000699 + 35 0.0028 + 37 0.0014 + 40 0.366 + 41 0.0175 + 42 0.00978 + 43 0.0028 + 45 0.0014 + 46 0.0266 + 47 0.148 + + 0 167 12 1 + 4 0.299 + 5 0.018 + 7 0.024 + 8 0.018 + 13 0.0599 + 14 0.018 + 15 0.108 + 16 0.00599 + 17 0.00599 + 19 0.311 + 21 0.108 + 30 0.024 + + 2 8 3 0 + 13 0.125 + 15 0.125 + 19 0.75 + + 2 5 4 0 + 0 0.4 + 12 0.2 + 13 0.2 + 35 0.2 + + 12 94 11 0 + 0 0.0426 + 4 0.202 + 8 0.0106 + 13 0.0319 + 14 0.0319 + 15 0.0532 + 19 0.447 + 20 0.0106 + 21 0.106 + 28 0.0532 + 45 0.0106 + + 14 2 1 0 + 4 1 + + 21 28 6 1 + 4 0.286 + 13 0.0714 + 15 0.0357 + 16 0.0357 + 19 0.536 + 30 0.0357 + + 55 2 2 0 + 15 0.5 + 30 0.5 + + 40 130 8 1 + 0 0.00769 + 4 0.00769 + 35 0.00769 + 40 0.0231 + 41 0.0154 + 42 0.0154 + 46 0.146 + 47 0.777 + + 40 3 2 0 + 40 0.667 + 47 0.333 + + 41 11 6 0 + 0 0.0909 + 2 0.273 + 4 0.0909 + 7 0.273 + 21 0.0909 + 28 0.182 + + 45 2 2 0 + 15 0.5 + 37 0.5 + + 46 8 4 0 + 7 0.125 + 28 0.125 + 43 0.125 + 47 0.625 + + 47 342 12 7 + 0 0.00292 + 2 0.00877 + 4 0.00292 + 7 0.00585 + 30 0.00292 + 35 0.00292 + 40 0.576 + 41 0.0175 + 42 0.0205 + 43 0.00585 + 46 0.0439 + 47 0.31 + + 40 120 7 0 + 0 0.00833 + 4 0.00833 + 35 0.00833 + 41 0.0167 + 42 0.0167 + 46 0.1 + 47 0.842 + + 46 7 3 0 + 7 0.143 + 43 0.143 + 47 0.714 + + 48 8 2 0 + 40 0.875 + 41 0.125 + + 55 14 3 0 + 40 0.786 + 42 0.0714 + 46 0.143 + + 57 8 2 0 + 7 0.125 + 40 0.875 + + 69 176 5 0 + 2 0.017 + 30 0.00568 + 40 0.943 + 41 0.017 + 42 0.017 + + 73 1 1 0 + 43 1 + + 48 23 5 0 + 7 0.13 + 21 0.0435 + 26 0.0435 + 40 0.739 + 41 0.0435 + + 49 29 11 0 + 0 0.138 + 4 0.069 + 7 0.0345 + 8 0.069 + 13 0.0345 + 21 0.0345 + 28 0.414 + 29 0.0345 + 30 0.0345 + 40 0.103 + 41 0.0345 + + 55 278 19 8 + 0 0.112 + 4 0.036 + 7 0.0324 + 8 0.0468 + 13 0.0288 + 14 0.00719 + 21 0.144 + 24 0.0036 + 26 0.00719 + 28 0.331 + 29 0.0036 + 30 0.0576 + 31 0.0432 + 32 0.0144 + 37 0.0036 + 40 0.0935 + 41 0.0216 + 42 0.0036 + 46 0.0108 + + 0 145 17 0 + 0 0.0621 + 4 0.0621 + 7 0.0414 + 8 0.0552 + 13 0.0414 + 21 0.193 + 24 0.0069 + 26 0.0138 + 28 0.248 + 29 0.0069 + 30 0.11 + 31 0.0828 + 32 0.0207 + 37 0.0069 + 40 0.0345 + 41 0.0069 + 42 0.0069 + + 12 75 6 0 + 0 0.253 + 21 0.107 + 28 0.587 + 32 0.0133 + 40 0.0133 + 41 0.0267 + + 14 2 1 0 + 13 1 + + 21 27 8 0 + 0 0.111 + 4 0.037 + 8 0.148 + 14 0.037 + 21 0.0741 + 28 0.444 + 40 0.111 + 41 0.037 + + 45 1 1 0 + 46 1 + + 49 4 3 0 + 21 0.25 + 40 0.5 + 41 0.25 + + 55 16 3 0 + 7 0.0625 + 40 0.812 + 46 0.125 + + 69 5 5 0 + 7 0.2 + 8 0.2 + 14 0.2 + 21 0.2 + 41 0.2 + + 57 11 3 0 + 7 0.0909 + 40 0.818 + 41 0.0909 + + 58 2 2 0 + 34 0.5 + 45 0.5 + + 62 6 3 0 + 4 0.167 + 40 0.667 + 41 0.167 + + 64 10 2 0 + 40 0.9 + 41 0.1 + + 67 13 7 1 + 0 0.0769 + 2 0.0769 + 7 0.0769 + 35 0.0769 + 40 0.385 + 41 0.231 + 46 0.0769 + + 47 5 3 0 + 0 0.2 + 2 0.2 + 41 0.6 + + 69 267 9 1 + 1 0.00375 + 2 0.0112 + 15 0.00375 + 19 0.0112 + 21 0.00749 + 30 0.00375 + 40 0.936 + 41 0.0112 + 42 0.0112 + + 47 56 8 0 + 1 0.0179 + 2 0.0179 + 15 0.0179 + 19 0.0357 + 21 0.0357 + 30 0.0179 + 40 0.821 + 42 0.0357 + + 73 1 1 0 + 43 1 + +68 1301 34 22 + 0 0.00692 + 2 0.00692 + 3 0.000769 + 4 0.0208 + 6 0.000769 + 7 0.0653 + 8 0.0507 + 9 0.00922 + 12 0.000769 + 13 0.119 + 14 0.175 + 15 0.00999 + 16 0.00154 + 19 0.00231 + 20 0.00154 + 21 0.0515 + 22 0.00384 + 23 0.000769 + 26 0.0146 + 29 0.00461 + 30 0.0123 + 31 0.0138 + 32 0.00461 + 34 0.000769 + 35 0.000769 + 36 0.000769 + 37 0.00461 + 40 0.271 + 41 0.0953 + 42 0.0238 + 44 0.000769 + 45 0.00231 + 46 0.00384 + 47 0.0184 + + 2 253 25 10 + 0 0.00395 + 3 0.00395 + 4 0.0553 + 6 0.00395 + 7 0.233 + 8 0.103 + 9 0.0474 + 12 0.00395 + 13 0.0356 + 15 0.00395 + 19 0.00395 + 20 0.00791 + 21 0.241 + 22 0.0198 + 23 0.00395 + 26 0.0474 + 29 0.00791 + 30 0.0593 + 31 0.0593 + 35 0.00395 + 36 0.00395 + 37 0.0237 + 41 0.00791 + 44 0.00395 + 45 0.0119 + + 15 2 1 0 + 8 1 + + 41 45 16 0 + 0 0.0222 + 3 0.0222 + 4 0.0667 + 6 0.0222 + 7 0.2 + 8 0.0889 + 9 0.0222 + 13 0.0444 + 21 0.2 + 22 0.0444 + 26 0.0667 + 29 0.0444 + 30 0.0222 + 31 0.0667 + 36 0.0222 + 37 0.0444 + + 46 3 2 0 + 8 0.333 + 45 0.667 + + 48 47 10 0 + 4 0.128 + 7 0.213 + 8 0.0426 + 12 0.0213 + 13 0.0426 + 21 0.234 + 30 0.128 + 31 0.149 + 41 0.0213 + 45 0.0213 + + 49 27 7 0 + 7 0.63 + 8 0.037 + 15 0.037 + 20 0.037 + 21 0.111 + 23 0.037 + 30 0.111 + + 55 47 14 0 + 4 0.0426 + 7 0.106 + 8 0.0851 + 9 0.213 + 13 0.0213 + 19 0.0213 + 21 0.298 + 22 0.0213 + 26 0.0638 + 30 0.0213 + 31 0.0426 + 35 0.0213 + 37 0.0213 + 41 0.0213 + + 57 51 12 0 + 4 0.0588 + 7 0.157 + 8 0.0196 + 9 0.0196 + 13 0.0588 + 21 0.373 + 22 0.0196 + 26 0.118 + 30 0.0784 + 31 0.0588 + 37 0.0196 + 44 0.0196 + + 62 7 2 0 + 7 0.857 + 21 0.143 + + 66 1 1 0 + 20 1 + + 69 15 5 0 + 7 0.0667 + 8 0.6 + 13 0.0667 + 21 0.2 + 22 0.0667 + + 8 111 5 0 + 8 0.117 + 13 0.306 + 14 0.559 + 16 0.00901 + 42 0.00901 + + 13 51 3 0 + 13 0.333 + 14 0.627 + 41 0.0392 + + 14 13 2 0 + 13 0.538 + 14 0.462 + + 15 18 4 0 + 8 0.167 + 13 0.222 + 14 0.389 + 15 0.222 + + 21 9 5 0 + 4 0.222 + 7 0.222 + 8 0.333 + 21 0.111 + 26 0.111 + + 30 4 1 0 + 13 1 + + 40 12 2 0 + 46 0.0833 + 47 0.917 + + 41 10 8 0 + 2 0.1 + 4 0.1 + 7 0.1 + 8 0.1 + 13 0.2 + 19 0.1 + 21 0.2 + 31 0.1 + + 42 2 2 0 + 34 0.5 + 47 0.5 + + 45 3 3 0 + 4 0.333 + 8 0.333 + 30 0.333 + + 46 1 1 0 + 46 1 + + 47 494 20 17 + 0 0.0081 + 2 0.0081 + 4 0.0081 + 7 0.0142 + 8 0.0344 + 13 0.148 + 14 0.231 + 15 0.0101 + 16 0.00202 + 19 0.00202 + 21 0.00202 + 26 0.00607 + 29 0.00405 + 31 0.00202 + 32 0.00607 + 40 0.344 + 41 0.113 + 42 0.0283 + 46 0.00405 + 47 0.0243 + + 7 1 1 0 + 4 1 + + 8 110 4 0 + 8 0.118 + 13 0.309 + 14 0.564 + 16 0.00909 + + 13 49 2 0 + 13 0.347 + 14 0.653 + + 14 13 2 0 + 13 0.538 + 14 0.462 + + 15 18 4 0 + 8 0.167 + 13 0.222 + 14 0.389 + 15 0.222 + + 30 4 1 0 + 13 1 + + 40 12 2 0 + 46 0.0833 + 47 0.917 + + 41 6 5 0 + 4 0.167 + 7 0.167 + 13 0.333 + 19 0.167 + 31 0.167 + + 46 1 1 0 + 46 1 + + 48 45 9 0 + 2 0.0444 + 7 0.0889 + 13 0.0444 + 14 0.0444 + 26 0.0222 + 32 0.0444 + 40 0.533 + 41 0.111 + 42 0.0667 + + 49 46 7 0 + 0 0.0435 + 2 0.0217 + 7 0.0435 + 26 0.0217 + 32 0.0217 + 40 0.63 + 41 0.217 + + 55 38 6 0 + 14 0.0526 + 15 0.0263 + 29 0.0263 + 40 0.605 + 41 0.211 + 42 0.0789 + + 57 69 7 0 + 0 0.0145 + 2 0.0145 + 21 0.0145 + 29 0.0145 + 40 0.652 + 41 0.232 + 42 0.058 + + 62 17 4 0 + 4 0.0588 + 40 0.647 + 41 0.235 + 42 0.0588 + + 64 21 3 0 + 40 0.714 + 41 0.238 + 42 0.0476 + + 69 34 6 0 + 0 0.0294 + 13 0.0588 + 26 0.0294 + 40 0.618 + 41 0.206 + 42 0.0588 + + 71 1 1 0 + 4 1 + + 48 50 10 0 + 2 0.04 + 4 0.02 + 7 0.1 + 13 0.04 + 14 0.04 + 26 0.02 + 32 0.04 + 40 0.48 + 41 0.16 + 42 0.06 + + 49 57 10 0 + 0 0.0351 + 2 0.0175 + 4 0.0175 + 7 0.14 + 8 0.0351 + 26 0.0175 + 31 0.0175 + 32 0.0175 + 40 0.509 + 41 0.193 + + 55 48 6 0 + 14 0.0417 + 15 0.0417 + 29 0.0208 + 40 0.583 + 41 0.229 + 42 0.0833 + + 57 70 7 0 + 0 0.0143 + 2 0.0143 + 21 0.0143 + 29 0.0143 + 40 0.643 + 41 0.243 + 42 0.0571 + + 58 3 2 0 + 7 0.667 + 14 0.333 + + 62 21 4 0 + 4 0.0476 + 40 0.714 + 41 0.19 + 42 0.0476 + + 64 23 4 0 + 7 0.0435 + 40 0.696 + 41 0.217 + 42 0.0435 + + 65 1 1 0 + 46 1 + + 69 35 7 0 + 0 0.0286 + 13 0.0571 + 15 0.0286 + 26 0.0286 + 40 0.6 + 41 0.2 + 42 0.0571 + +69 482293 48 46 + 0 0.0224 + 1 0.00057 + 2 0.0308 + 3 0.00808 + 4 0.0469 + 5 0.000257 + 6 4.15e-05 + 7 0.0864 + 8 0.0202 + 9 0.00219 + 10 0.000199 + 11 2.07e-06 + 12 0.00331 + 13 0.0122 + 14 0.00875 + 15 0.014 + 16 8.5e-05 + 17 0.000261 + 18 8.29e-06 + 19 0.00971 + 20 0.00668 + 21 0.0342 + 22 0.00161 + 23 0.000114 + 24 0.00542 + 25 4.15e-06 + 26 0.0285 + 27 5.81e-05 + 28 0.0407 + 29 0.00358 + 30 0.0133 + 31 0.0242 + 32 0.000977 + 33 0.0015 + 34 0.000506 + 35 0.000666 + 36 4.15e-06 + 37 0.00212 + 38 2.28e-05 + 39 0.00219 + 40 0.418 + 41 0.127 + 42 0.0138 + 43 0.00104 + 44 0.00067 + 45 0.00305 + 46 0.0022 + 47 0.00131 + + 0 33826 40 4 + 0 0.0458 + 1 0.00556 + 2 0.000887 + 3 0.0145 + 4 0.115 + 5 5.91e-05 + 7 0.0456 + 8 0.1 + 9 0.00955 + 10 0.000237 + 12 5.91e-05 + 13 0.021 + 14 0.00958 + 15 0.00695 + 16 0.000118 + 17 0.000562 + 19 0.00251 + 20 0.00364 + 21 0.192 + 22 0.00514 + 23 0.000828 + 24 0.000769 + 26 0.0203 + 27 2.96e-05 + 28 0.00304 + 29 0.00263 + 30 0.0892 + 31 0.274 + 33 8.87e-05 + 34 0.000148 + 35 0.00106 + 37 0.00154 + 39 0.00585 + 40 0.00411 + 41 0.00532 + 42 0.00101 + 43 0.000148 + 44 0.000384 + 45 0.0103 + 46 0.000148 + + 44 1 1 0 + 43 1 + + 45 6 4 0 + 4 0.167 + 8 0.167 + 21 0.5 + 26 0.167 + + 49 55 14 0 + 0 0.0364 + 3 0.0909 + 4 0.127 + 8 0.0727 + 9 0.0364 + 13 0.0545 + 14 0.0182 + 15 0.0182 + 21 0.164 + 26 0.0364 + 30 0.0909 + 31 0.218 + 41 0.0182 + 42 0.0182 + + 57 7 5 0 + 8 0.143 + 13 0.143 + 21 0.429 + 30 0.143 + 31 0.143 + + 1 555 21 1 + 0 0.027 + 3 0.00901 + 4 0.11 + 7 0.0126 + 8 0.0613 + 9 0.00721 + 13 0.0342 + 14 0.00901 + 15 0.00721 + 17 0.0018 + 19 0.0036 + 20 0.00541 + 21 0.0541 + 22 0.0018 + 26 0.0234 + 28 0.0018 + 29 0.0396 + 31 0.577 + 35 0.0018 + 40 0.0018 + 45 0.0108 + + 49 6 3 0 + 0 0.167 + 3 0.167 + 31 0.667 + + 2 3483 26 11 + 0 0.152 + 1 0.00258 + 3 0.00632 + 4 0.00718 + 7 0.0135 + 8 0.0126 + 9 0.00201 + 12 0.0617 + 13 0.00689 + 14 0.00402 + 15 0.00144 + 20 0.00172 + 21 0.0939 + 22 0.00172 + 23 0.000287 + 26 0.0284 + 28 0.159 + 29 0.194 + 30 0.0764 + 31 0.0485 + 32 0.0356 + 33 0.0744 + 39 0.00172 + 41 0.0089 + 42 0.000574 + 45 0.00488 + + 0 2 2 0 + 4 0.5 + 30 0.5 + + 28 1 1 0 + 13 1 + + 31 1 1 0 + 8 1 + + 41 654 21 0 + 0 0.19 + 1 0.00306 + 3 0.00765 + 4 0.00917 + 7 0.0291 + 8 0.00612 + 9 0.00153 + 12 0.0765 + 13 0.00306 + 14 0.00306 + 21 0.15 + 22 0.00459 + 26 0.0352 + 28 0.0703 + 29 0.226 + 30 0.052 + 31 0.0138 + 32 0.0291 + 33 0.081 + 41 0.00306 + 45 0.00612 + + 42 39 13 0 + 0 0.103 + 4 0.0256 + 7 0.0769 + 12 0.103 + 21 0.154 + 26 0.0256 + 28 0.128 + 29 0.154 + 30 0.0513 + 31 0.0513 + 32 0.0513 + 33 0.0256 + 41 0.0513 + + 46 38 9 0 + 0 0.132 + 12 0.0789 + 21 0.105 + 28 0.105 + 29 0.289 + 30 0.0263 + 31 0.0526 + 33 0.158 + 45 0.0526 + + 47 1 1 0 + 4 1 + + 55 4 4 0 + 8 0.25 + 21 0.25 + 29 0.25 + 30 0.25 + + 57 2 2 0 + 3 0.5 + 7 0.5 + + 58 5 5 0 + 12 0.2 + 21 0.2 + 28 0.2 + 30 0.2 + 45 0.2 + + 69 2736 26 0 + 0 0.144 + 1 0.00256 + 3 0.00585 + 4 0.00585 + 7 0.00877 + 8 0.0139 + 9 0.00219 + 12 0.0574 + 13 0.00768 + 14 0.00439 + 15 0.00183 + 20 0.00219 + 21 0.0793 + 22 0.0011 + 23 0.000365 + 26 0.0274 + 28 0.182 + 29 0.186 + 30 0.0826 + 31 0.057 + 32 0.0376 + 33 0.0727 + 39 0.00219 + 41 0.00987 + 42 0.000731 + 45 0.00365 + + 4 42 14 2 + 0 0.0238 + 4 0.0238 + 6 0.0238 + 7 0.143 + 8 0.0952 + 13 0.0238 + 16 0.0238 + 21 0.0952 + 28 0.0952 + 29 0.0952 + 30 0.0952 + 31 0.214 + 32 0.0238 + 45 0.0238 + + 0 34 12 0 + 0 0.0294 + 4 0.0294 + 6 0.0294 + 7 0.118 + 8 0.118 + 13 0.0294 + 16 0.0294 + 21 0.0882 + 29 0.118 + 30 0.118 + 31 0.265 + 45 0.0294 + + 12 4 2 0 + 28 0.75 + 32 0.25 + + 7 36 11 4 + 4 0.139 + 7 0.0556 + 8 0.0833 + 13 0.0278 + 14 0.0278 + 19 0.0278 + 20 0.0278 + 26 0.472 + 28 0.0556 + 37 0.0278 + 41 0.0556 + + 29 2 2 0 + 8 0.5 + 13 0.5 + + 30 3 3 0 + 4 0.333 + 7 0.333 + 41 0.333 + + 47 23 5 0 + 4 0.13 + 8 0.087 + 14 0.0435 + 19 0.0435 + 26 0.696 + + 69 3 2 0 + 28 0.667 + 37 0.333 + + 8 152 17 2 + 2 0.0329 + 3 0.0132 + 4 0.0329 + 7 0.395 + 8 0.0329 + 13 0.0658 + 14 0.0724 + 15 0.0197 + 20 0.0197 + 21 0.0395 + 22 0.00658 + 24 0.0132 + 26 0.0855 + 32 0.00658 + 40 0.125 + 41 0.0263 + 46 0.0132 + + 45 2 1 0 + 46 1 + + 49 22 7 0 + 4 0.0455 + 7 0.5 + 14 0.0455 + 21 0.0455 + 26 0.0909 + 40 0.227 + 41 0.0455 + + 12 9666 21 2 + 0 0.291 + 2 0.000724 + 4 0.000828 + 7 0.00197 + 12 0.000207 + 13 0.00031 + 21 0.171 + 22 0.00124 + 23 0.000207 + 26 0.00331 + 28 0.517 + 29 0.000621 + 31 0.000517 + 32 0.000103 + 40 0.00207 + 41 0.00331 + 42 0.000724 + 43 0.000103 + 44 0.000207 + 45 0.00455 + 46 0.000207 + + 41 4 1 0 + 0 1 + + 44 1 1 0 + 43 1 + + 13 297 26 2 + 0 0.0101 + 2 0.0168 + 3 0.0135 + 4 0.0976 + 7 0.256 + 8 0.0168 + 9 0.00337 + 12 0.0101 + 13 0.0404 + 14 0.111 + 15 0.0202 + 19 0.00673 + 20 0.0101 + 21 0.0438 + 22 0.00337 + 24 0.0707 + 26 0.0606 + 29 0.00337 + 30 0.0135 + 31 0.00337 + 39 0.00337 + 40 0.0707 + 41 0.0909 + 42 0.0135 + 45 0.00337 + 46 0.00673 + + 2 3 3 0 + 7 0.333 + 13 0.333 + 46 0.333 + + 45 1 1 0 + 46 1 + + 14 122 18 0 + 2 0.0164 + 4 0.082 + 7 0.197 + 8 0.0328 + 13 0.0246 + 14 0.082 + 15 0.0164 + 19 0.0082 + 21 0.0246 + 24 0.041 + 26 0.246 + 30 0.0246 + 31 0.0082 + 32 0.0082 + 34 0.0082 + 37 0.0164 + 40 0.0984 + 41 0.0656 + + 15 35 10 0 + 4 0.114 + 7 0.143 + 15 0.514 + 19 0.0286 + 21 0.0286 + 24 0.0286 + 26 0.0286 + 32 0.0286 + 42 0.0286 + 46 0.0571 + + 18 27 10 0 + 3 0.037 + 7 0.185 + 8 0.296 + 9 0.148 + 13 0.0741 + 14 0.0741 + 15 0.037 + 20 0.0741 + 37 0.037 + 45 0.037 + + 21 4005 31 12 + 0 0.146 + 1 0.0035 + 2 0.00025 + 3 0.0015 + 4 0.0442 + 7 0.0215 + 8 0.0662 + 9 0.00025 + 12 0.000749 + 13 0.0115 + 14 0.00175 + 15 0.00125 + 20 0.00225 + 21 0.0969 + 24 0.000499 + 26 0.00449 + 28 0.405 + 29 0.0135 + 30 0.04 + 31 0.118 + 32 0.000749 + 33 0.000749 + 35 0.000749 + 37 0.000749 + 40 0.00874 + 41 0.00524 + 42 0.00125 + 43 0.00025 + 45 0.002 + 46 0.00025 + 47 0.00025 + + 0 2915 27 0 + 0 0.0803 + 1 0.0048 + 2 0.000343 + 3 0.00172 + 4 0.0583 + 7 0.0274 + 8 0.0864 + 9 0.000343 + 13 0.0141 + 14 0.0024 + 15 0.00172 + 20 0.00309 + 21 0.113 + 24 0.000343 + 26 0.0024 + 28 0.352 + 29 0.0151 + 30 0.0528 + 31 0.162 + 32 0.000343 + 35 0.00103 + 37 0.00103 + 40 0.0103 + 41 0.00515 + 42 0.00137 + 43 0.000343 + 45 0.00172 + + 2 30 12 0 + 0 0.0333 + 4 0.0333 + 8 0.0333 + 12 0.1 + 21 0.0667 + 28 0.267 + 29 0.2 + 30 0.0667 + 31 0.0333 + 32 0.0333 + 33 0.0667 + 41 0.0667 + + 12 987 12 0 + 0 0.347 + 3 0.00101 + 4 0.00101 + 7 0.00304 + 21 0.0466 + 26 0.00101 + 28 0.588 + 40 0.00405 + 41 0.00405 + 42 0.00101 + 45 0.00304 + 46 0.00101 + + 21 3 2 0 + 8 0.667 + 28 0.333 + + 28 1 1 0 + 47 1 + + 32 7 6 0 + 4 0.143 + 13 0.286 + 26 0.143 + 29 0.143 + 30 0.143 + 40 0.143 + + 33 1 1 0 + 13 1 + + 41 20 9 0 + 0 0.05 + 7 0.05 + 13 0.05 + 21 0.15 + 26 0.2 + 28 0.25 + 29 0.15 + 30 0.05 + 33 0.05 + + 42 1 1 0 + 32 1 + + 45 4 2 0 + 8 0.5 + 21 0.5 + + 47 12 7 0 + 0 0.0833 + 4 0.167 + 7 0.0833 + 8 0.0833 + 13 0.0833 + 21 0.0833 + 26 0.417 + + 49 21 8 0 + 0 0.143 + 4 0.0952 + 7 0.0476 + 8 0.333 + 21 0.19 + 24 0.0476 + 30 0.0952 + 31 0.0476 + + 22 5 3 0 + 26 0.2 + 41 0.6 + 42 0.2 + + 25 2 1 0 + 6 1 + + 26 13048 19 0 + 0 0.112 + 1 7.66e-05 + 4 0.000307 + 7 0.000153 + 8 0.000613 + 13 0.0036 + 15 0.000153 + 21 0.0082 + 22 0.00107 + 28 0.867 + 29 0.00023 + 30 0.000153 + 31 0.000153 + 40 0.000996 + 41 0.000536 + 42 7.66e-05 + 44 0.000153 + 45 0.00429 + 46 0.000153 + + 28 20867 44 10 + 0 0.00192 + 1 0.000335 + 2 0.00441 + 3 0.0235 + 4 0.245 + 5 0.000671 + 6 9.58e-05 + 7 0.129 + 8 0.073 + 9 0.0104 + 10 0.000767 + 12 0.000575 + 13 0.0718 + 14 0.0604 + 15 0.0381 + 16 0.000575 + 17 0.00163 + 18 0.000192 + 19 0.0453 + 20 0.054 + 21 0.0454 + 22 0.00407 + 23 9.58e-05 + 24 0.0409 + 26 0.0441 + 27 0.000144 + 28 0.00565 + 30 0.0123 + 31 0.00398 + 33 4.79e-05 + 34 0.000863 + 35 0.0046 + 36 4.79e-05 + 37 0.00666 + 38 0.000144 + 39 0.0102 + 40 0.0288 + 41 0.0185 + 42 0.00259 + 43 0.000192 + 44 0.0012 + 45 0.00474 + 46 0.00264 + 47 0.000144 + + 2 142 19 0 + 3 0.0211 + 4 0.296 + 7 0.0493 + 8 0.0915 + 13 0.0704 + 14 0.12 + 15 0.0282 + 16 0.00704 + 19 0.0563 + 20 0.0423 + 21 0.0211 + 31 0.00704 + 35 0.00704 + 37 0.00704 + 40 0.0634 + 41 0.0704 + 42 0.0211 + 44 0.00704 + 45 0.0141 + + 13 3 2 0 + 4 0.667 + 46 0.333 + + 21 8 7 0 + 4 0.25 + 8 0.125 + 13 0.125 + 19 0.125 + 21 0.125 + 41 0.125 + 42 0.125 + + 42 5 3 0 + 4 0.6 + 14 0.2 + 24 0.2 + + 44 1 1 0 + 43 1 + + 45 34 10 0 + 2 0.0294 + 4 0.0882 + 7 0.0294 + 13 0.0294 + 17 0.0294 + 21 0.118 + 24 0.0294 + 35 0.0294 + 40 0.0294 + 46 0.588 + + 47 20444 44 0 + 0 0.00196 + 1 0.000342 + 2 0.0044 + 3 0.0238 + 4 0.243 + 5 0.000685 + 6 9.78e-05 + 7 0.131 + 8 0.0732 + 9 0.0105 + 10 0.000783 + 12 0.000587 + 13 0.072 + 14 0.0602 + 15 0.038 + 16 0.000538 + 17 0.00161 + 18 0.000196 + 19 0.0453 + 20 0.0539 + 21 0.0458 + 22 0.00406 + 23 9.78e-05 + 24 0.0412 + 26 0.0446 + 27 9.78e-05 + 28 0.00577 + 30 0.0125 + 31 0.00401 + 33 4.89e-05 + 34 0.00088 + 35 0.00445 + 36 4.89e-05 + 37 0.00675 + 38 0.000147 + 39 0.0103 + 40 0.0288 + 41 0.018 + 42 0.00235 + 43 0.000147 + 44 0.00113 + 45 0.0047 + 46 0.00157 + 47 0.000147 + + 49 216 24 0 + 2 0.00463 + 4 0.352 + 7 0.0694 + 8 0.0602 + 9 0.00463 + 13 0.0556 + 14 0.0509 + 15 0.0741 + 19 0.0463 + 20 0.088 + 21 0.0185 + 22 0.00926 + 24 0.0417 + 26 0.0417 + 27 0.00463 + 30 0.00926 + 35 0.0139 + 39 0.00463 + 40 0.00463 + 41 0.0185 + 42 0.00926 + 44 0.00463 + 45 0.00463 + 46 0.00926 + + 50 3 3 0 + 4 0.333 + 40 0.333 + 41 0.333 + + 57 3 3 0 + 3 0.333 + 4 0.333 + 8 0.333 + + 29 21672 44 8 + 0 0.00198 + 1 9.23e-05 + 2 0.0024 + 3 0.0832 + 4 0.195 + 5 0.00157 + 6 4.61e-05 + 7 0.138 + 8 0.0454 + 9 0.00655 + 10 0.00111 + 12 0.000554 + 13 0.0358 + 14 0.0287 + 15 0.0713 + 16 0.000138 + 17 0.000738 + 19 0.0812 + 20 0.0351 + 21 0.0391 + 22 0.00401 + 23 0.000231 + 24 0.0213 + 26 0.072 + 27 0.000138 + 28 0.00263 + 29 0.000277 + 30 0.00992 + 31 0.00291 + 32 4.61e-05 + 33 0.000231 + 34 0.000185 + 35 0.000738 + 37 0.00175 + 38 0.000138 + 39 0.0162 + 40 0.0611 + 41 0.0302 + 42 0.00392 + 43 0.000138 + 44 0.000138 + 45 0.00383 + 46 0.000461 + 47 4.61e-05 + + 2 33 13 0 + 3 0.0606 + 4 0.273 + 7 0.152 + 8 0.0909 + 13 0.0303 + 14 0.0303 + 19 0.0606 + 20 0.0606 + 24 0.0303 + 40 0.0303 + 41 0.121 + 42 0.0303 + 45 0.0303 + + 41 6 6 0 + 4 0.167 + 14 0.167 + 20 0.167 + 26 0.167 + 28 0.167 + 42 0.167 + + 44 1 1 0 + 43 1 + + 45 14 7 0 + 4 0.214 + 7 0.143 + 14 0.0714 + 19 0.0714 + 21 0.0714 + 27 0.0714 + 46 0.357 + + 47 21324 44 0 + 0 0.00202 + 1 9.38e-05 + 2 0.00234 + 3 0.0843 + 4 0.193 + 5 0.00159 + 6 4.69e-05 + 7 0.138 + 8 0.0455 + 9 0.00642 + 10 0.00113 + 12 0.000563 + 13 0.0356 + 14 0.0286 + 15 0.0715 + 16 0.000141 + 17 0.00075 + 19 0.0818 + 20 0.0347 + 21 0.039 + 22 0.00394 + 23 0.000234 + 24 0.0213 + 26 0.0718 + 27 9.38e-05 + 28 0.00263 + 29 0.000281 + 30 0.00994 + 31 0.00281 + 32 4.69e-05 + 33 0.000234 + 34 0.000141 + 35 0.000703 + 37 0.00169 + 38 0.000141 + 39 0.0164 + 40 0.0618 + 41 0.0303 + 42 0.00389 + 43 9.38e-05 + 44 0.000141 + 45 0.00385 + 46 0.000141 + 47 4.69e-05 + + 49 281 24 0 + 2 0.00712 + 3 0.0178 + 4 0.267 + 7 0.142 + 8 0.0356 + 9 0.0142 + 13 0.0463 + 14 0.0285 + 15 0.0783 + 19 0.0356 + 20 0.0498 + 21 0.0498 + 22 0.0107 + 24 0.0249 + 26 0.103 + 30 0.0107 + 31 0.0107 + 34 0.00356 + 35 0.00356 + 37 0.00712 + 39 0.00712 + 40 0.0214 + 41 0.0178 + 46 0.00712 + + 55 5 4 0 + 7 0.2 + 13 0.2 + 19 0.4 + 20 0.2 + + 57 7 5 0 + 4 0.429 + 9 0.143 + 14 0.143 + 19 0.143 + 20 0.143 + + 30 11209 39 4 + 0 0.00241 + 2 0.00419 + 3 0.0186 + 4 0.22 + 5 0.000357 + 7 0.173 + 8 0.078 + 9 0.0106 + 10 0.000892 + 12 0.000178 + 13 0.0741 + 14 0.0694 + 15 0.0376 + 16 0.000714 + 17 0.00143 + 19 0.0317 + 20 0.0388 + 21 0.0465 + 22 0.00607 + 23 8.92e-05 + 24 0.0352 + 26 0.0869 + 27 0.000268 + 28 0.00116 + 29 0.000357 + 30 0.00473 + 31 0.00419 + 32 8.92e-05 + 34 0.000268 + 35 0.00294 + 37 0.00205 + 39 0.00714 + 40 0.0168 + 41 0.0121 + 42 0.00223 + 43 0.000268 + 44 0.000446 + 45 0.00598 + 46 0.00223 + + 2 63 12 0 + 4 0.238 + 7 0.127 + 8 0.111 + 13 0.111 + 14 0.206 + 15 0.0317 + 19 0.0159 + 20 0.0635 + 21 0.0159 + 40 0.0317 + 41 0.0317 + 42 0.0159 + + 21 12 9 0 + 3 0.0833 + 4 0.167 + 7 0.25 + 14 0.0833 + 20 0.0833 + 26 0.0833 + 35 0.0833 + 37 0.0833 + 40 0.0833 + + 45 15 4 0 + 4 0.133 + 7 0.0667 + 14 0.0667 + 46 0.733 + + 49 214 24 0 + 2 0.00935 + 3 0.0187 + 4 0.28 + 7 0.136 + 8 0.0888 + 9 0.00467 + 13 0.0561 + 14 0.0654 + 15 0.0467 + 19 0.0234 + 20 0.0514 + 21 0.0374 + 24 0.0327 + 26 0.0794 + 27 0.00467 + 31 0.00935 + 35 0.00467 + 37 0.00935 + 39 0.00935 + 40 0.00935 + 41 0.00935 + 42 0.00467 + 45 0.00467 + 46 0.00467 + + 31 15551 42 7 + 0 0.00386 + 1 0.000129 + 2 0.0102 + 3 0.0112 + 4 0.0743 + 5 0.000129 + 7 0.434 + 8 0.0333 + 9 0.0027 + 10 0.000257 + 12 0.00122 + 13 0.0231 + 14 0.0143 + 15 0.0274 + 16 0.000129 + 17 0.000836 + 19 0.0116 + 20 0.0116 + 21 0.0532 + 22 0.00373 + 23 0.000257 + 24 0.0271 + 26 0.132 + 28 0.000836 + 29 0.000965 + 30 0.00514 + 31 0.00174 + 32 0.000643 + 33 0.000322 + 34 0.000322 + 35 0.000707 + 37 0.00257 + 38 6.43e-05 + 39 0.00367 + 40 0.0578 + 41 0.037 + 42 0.00424 + 43 0.00103 + 44 0.000386 + 45 0.00482 + 46 0.00167 + 47 0.000193 + + 2 72 17 0 + 4 0.0694 + 7 0.417 + 9 0.0139 + 14 0.0278 + 17 0.0139 + 19 0.0139 + 20 0.0139 + 21 0.0417 + 26 0.0278 + 29 0.0139 + 30 0.0278 + 39 0.0139 + 40 0.153 + 41 0.0972 + 42 0.0139 + 43 0.0139 + 46 0.0278 + + 21 9 4 0 + 0 0.111 + 7 0.667 + 12 0.111 + 47 0.111 + + 41 2 2 0 + 2 0.5 + 40 0.5 + + 45 13 6 0 + 7 0.231 + 8 0.0769 + 17 0.0769 + 21 0.0769 + 24 0.0769 + 46 0.462 + + 47 14860 42 0 + 0 0.0035 + 1 0.000135 + 2 0.00976 + 3 0.0116 + 4 0.0758 + 5 0.000135 + 7 0.43 + 8 0.0338 + 9 0.00276 + 10 0.000269 + 12 0.00108 + 13 0.0238 + 14 0.0147 + 15 0.028 + 16 0.000135 + 17 0.00074 + 19 0.0118 + 20 0.0114 + 21 0.0543 + 22 0.00384 + 23 0.000269 + 24 0.0281 + 26 0.134 + 28 0.000875 + 29 0.000875 + 30 0.00518 + 31 0.00182 + 32 0.000673 + 33 0.000336 + 34 0.000336 + 35 0.00074 + 37 0.00262 + 38 6.73e-05 + 39 0.00377 + 40 0.0559 + 41 0.0355 + 42 0.00397 + 43 0.000875 + 44 0.000404 + 45 0.00491 + 46 0.00101 + 47 0.000135 + + 49 583 25 0 + 0 0.012 + 2 0.0223 + 3 0.00172 + 4 0.0429 + 7 0.52 + 8 0.024 + 12 0.00343 + 13 0.0103 + 14 0.00515 + 15 0.0172 + 19 0.00515 + 20 0.0172 + 21 0.0274 + 22 0.00172 + 24 0.00686 + 26 0.0909 + 29 0.00172 + 30 0.00172 + 37 0.00172 + 40 0.0961 + 41 0.0686 + 42 0.0103 + 43 0.00343 + 45 0.00343 + 46 0.00515 + + 55 6 2 0 + 7 0.833 + 40 0.167 + + 32 5375 43 3 + 0 0.00651 + 1 0.000186 + 2 0.00335 + 3 0.0134 + 4 0.192 + 5 0.00447 + 6 0.000186 + 7 0.169 + 8 0.0662 + 9 0.0108 + 10 0.00093 + 12 0.00372 + 13 0.0506 + 14 0.0545 + 15 0.0344 + 16 0.000186 + 17 0.00093 + 19 0.0768 + 20 0.0218 + 21 0.0508 + 22 0.00409 + 23 0.000558 + 24 0.0203 + 26 0.0941 + 28 0.0026 + 29 0.000372 + 30 0.0104 + 31 0.00391 + 32 0.000186 + 33 0.000558 + 34 0.000558 + 35 0.00447 + 36 0.000186 + 37 0.00521 + 39 0.00428 + 40 0.0383 + 41 0.0387 + 42 0.00521 + 43 0.000558 + 44 0.000558 + 45 0.00316 + 46 0.000744 + 47 0.000186 + + 2 34 10 0 + 3 0.0294 + 4 0.0882 + 7 0.235 + 8 0.176 + 13 0.0588 + 14 0.206 + 20 0.0294 + 21 0.0294 + 40 0.0882 + 41 0.0588 + + 45 4 3 0 + 4 0.25 + 24 0.25 + 46 0.5 + + 49 79 19 0 + 3 0.0127 + 4 0.19 + 7 0.19 + 8 0.114 + 9 0.0127 + 12 0.0127 + 13 0.0886 + 14 0.0506 + 19 0.0506 + 20 0.0253 + 21 0.0253 + 24 0.0253 + 26 0.0759 + 30 0.0127 + 37 0.0127 + 40 0.0506 + 41 0.0253 + 42 0.0127 + 43 0.0127 + + 33 9565 42 3 + 0 0.0024 + 1 0.000209 + 2 0.00157 + 3 0.0238 + 4 0.181 + 5 0.00136 + 6 0.000105 + 7 0.141 + 8 0.0558 + 9 0.00659 + 10 0.00115 + 12 0.00178 + 13 0.0474 + 14 0.0311 + 15 0.124 + 16 0.000627 + 17 0.000732 + 19 0.0499 + 20 0.0226 + 21 0.0374 + 22 0.00355 + 23 0.000314 + 24 0.0154 + 26 0.0935 + 28 0.00178 + 29 0.000314 + 30 0.00711 + 31 0.0045 + 32 0.000209 + 34 0.000418 + 35 0.00157 + 37 0.0046 + 38 0.000105 + 39 0.0046 + 40 0.0667 + 41 0.0484 + 42 0.00815 + 43 0.000209 + 44 0.000418 + 45 0.00742 + 46 0.000209 + 47 0.000105 + + 2 37 10 0 + 4 0.243 + 7 0.135 + 8 0.162 + 9 0.027 + 12 0.027 + 13 0.135 + 14 0.135 + 15 0.027 + 21 0.027 + 40 0.0811 + + 45 8 7 0 + 7 0.125 + 8 0.125 + 13 0.125 + 21 0.125 + 24 0.125 + 26 0.25 + 46 0.125 + + 49 142 21 0 + 0 0.00704 + 3 0.0141 + 4 0.324 + 7 0.12 + 8 0.0634 + 10 0.00704 + 13 0.0634 + 14 0.00704 + 15 0.0352 + 17 0.0141 + 19 0.0845 + 20 0.0634 + 21 0.0211 + 24 0.0493 + 26 0.0423 + 30 0.0141 + 39 0.00704 + 40 0.0211 + 41 0.00704 + 42 0.0141 + 45 0.0211 + + 40 18 4 0 + 27 0.0556 + 43 0.0556 + 46 0.333 + 47 0.556 + + 41 6243 35 21 + 0 0.00416 + 1 0.0024 + 2 0.113 + 3 0.00432 + 4 0.0271 + 6 0.000641 + 7 0.276 + 8 0.0128 + 9 0.000481 + 10 0.000481 + 12 0.00176 + 13 0.00449 + 14 0.00384 + 15 0.00144 + 16 0.00016 + 19 0.00256 + 20 0.00176 + 21 0.149 + 22 0.00032 + 24 0.00016 + 26 0.0284 + 27 0.000961 + 28 0.0123 + 29 0.0111 + 30 0.222 + 31 0.0368 + 32 0.00352 + 33 0.00352 + 34 0.0103 + 35 0.00128 + 37 0.00657 + 39 0.000481 + 44 0.00016 + 45 0.0365 + 46 0.0189 + + 0 65 14 0 + 0 0.0154 + 4 0.0154 + 7 0.415 + 13 0.0462 + 15 0.0154 + 16 0.0154 + 19 0.0923 + 21 0.185 + 26 0.0154 + 27 0.0308 + 28 0.0154 + 30 0.0154 + 37 0.0615 + 45 0.0615 + + 2 14 4 0 + 4 0.0714 + 7 0.5 + 21 0.357 + 26 0.0714 + + 12 12 3 0 + 3 0.0833 + 7 0.75 + 21 0.167 + + 13 4 4 0 + 7 0.25 + 27 0.25 + 30 0.25 + 46 0.25 + + 28 63 13 0 + 2 0.0159 + 4 0.0159 + 6 0.0159 + 7 0.286 + 8 0.0476 + 12 0.0159 + 13 0.0159 + 14 0.0317 + 21 0.206 + 28 0.0159 + 30 0.0952 + 31 0.0159 + 45 0.222 + + 29 225 14 0 + 0 0.00444 + 7 0.107 + 13 0.00444 + 14 0.00444 + 15 0.00444 + 19 0.00444 + 20 0.00444 + 21 0.12 + 22 0.00444 + 26 0.0133 + 30 0.249 + 31 0.00444 + 45 0.471 + 46 0.00444 + + 30 30 5 0 + 2 0.0667 + 7 0.433 + 21 0.133 + 30 0.0333 + 45 0.333 + + 31 73 10 0 + 4 0.0274 + 7 0.411 + 8 0.0137 + 12 0.0137 + 14 0.0274 + 21 0.233 + 26 0.0137 + 30 0.205 + 31 0.0274 + 45 0.0274 + + 32 25 9 0 + 4 0.08 + 7 0.2 + 8 0.04 + 15 0.04 + 20 0.04 + 21 0.28 + 30 0.12 + 37 0.04 + 45 0.16 + + 33 92 8 0 + 7 0.152 + 14 0.0217 + 19 0.0109 + 21 0.0978 + 27 0.0109 + 28 0.0217 + 30 0.185 + 45 0.5 + + 48 218 13 0 + 1 0.00459 + 2 0.00459 + 3 0.00459 + 4 0.00917 + 7 0.44 + 8 0.0183 + 15 0.00459 + 21 0.234 + 26 0.00917 + 30 0.202 + 31 0.0275 + 45 0.00459 + 46 0.0367 + + 49 387 22 0 + 0 0.00258 + 1 0.00258 + 2 0.0155 + 3 0.00258 + 4 0.0284 + 7 0.488 + 8 0.0233 + 13 0.00775 + 14 0.00775 + 15 0.00258 + 19 0.00517 + 20 0.00258 + 21 0.106 + 26 0.0362 + 28 0.00775 + 30 0.178 + 31 0.0155 + 34 0.0129 + 35 0.00775 + 37 0.0129 + 45 0.0233 + 46 0.0103 + + 52 8 5 0 + 4 0.125 + 8 0.375 + 13 0.125 + 37 0.125 + 39 0.25 + + 55 1378 26 0 + 1 0.00145 + 2 0.0116 + 3 0.00508 + 4 0.0152 + 6 0.000726 + 7 0.319 + 8 0.00871 + 10 0.00145 + 12 0.000726 + 13 0.00218 + 14 0.0029 + 19 0.00145 + 20 0.000726 + 21 0.166 + 26 0.0689 + 27 0.00145 + 28 0.00145 + 29 0.000726 + 30 0.296 + 31 0.0537 + 33 0.000726 + 34 0.00581 + 35 0.00145 + 37 0.00871 + 45 0.00943 + 46 0.0145 + + 57 1875 30 0 + 0 0.00373 + 1 0.00427 + 2 0.0101 + 3 0.00427 + 4 0.0331 + 6 0.00107 + 7 0.341 + 8 0.0197 + 9 0.000533 + 10 0.000533 + 12 0.00107 + 13 0.00427 + 14 0.00267 + 15 0.00213 + 19 0.0016 + 20 0.00213 + 21 0.202 + 24 0.000533 + 26 0.0235 + 28 0.00267 + 29 0.0016 + 30 0.25 + 31 0.0485 + 32 0.00107 + 34 0.00853 + 35 0.00107 + 37 0.008 + 39 0.000533 + 45 0.00693 + 46 0.0133 + + 58 6 5 0 + 4 0.167 + 7 0.333 + 21 0.167 + 31 0.167 + 45 0.167 + + 59 16 8 0 + 2 0.0625 + 7 0.25 + 8 0.0625 + 13 0.0625 + 21 0.312 + 28 0.0625 + 30 0.125 + 46 0.0625 + + 62 353 19 0 + 0 0.00283 + 2 0.0113 + 3 0.00283 + 4 0.0085 + 7 0.34 + 8 0.0142 + 13 0.00283 + 14 0.00283 + 21 0.122 + 26 0.00567 + 29 0.00567 + 30 0.354 + 31 0.0567 + 34 0.00567 + 35 0.00283 + 37 0.0085 + 44 0.00283 + 45 0.00283 + 46 0.0482 + + 64 171 17 0 + 0 0.0117 + 1 0.00585 + 2 0.0234 + 4 0.0175 + 7 0.327 + 12 0.0117 + 13 0.00585 + 19 0.00585 + 21 0.117 + 26 0.0175 + 28 0.00585 + 29 0.00585 + 30 0.351 + 31 0.0234 + 34 0.0117 + 45 0.0117 + 46 0.0468 + + 68 7 6 0 + 7 0.143 + 21 0.143 + 26 0.143 + 30 0.286 + 45 0.143 + 46 0.143 + + 69 1214 24 0 + 0 0.0107 + 1 0.00165 + 2 0.537 + 3 0.00659 + 4 0.0478 + 7 0.0231 + 8 0.00329 + 9 0.00165 + 12 0.00329 + 13 0.00412 + 14 0.00329 + 20 0.00247 + 21 0.0527 + 22 0.000824 + 26 0.00824 + 28 0.0502 + 29 0.0511 + 30 0.0865 + 31 0.0198 + 32 0.0165 + 33 0.0173 + 34 0.0255 + 45 0.000824 + 46 0.0255 + + 42 485 30 16 + 0 0.00412 + 2 0.0866 + 3 0.0103 + 4 0.136 + 6 0.00206 + 7 0.144 + 8 0.0124 + 9 0.00206 + 11 0.00206 + 12 0.0103 + 13 0.0165 + 14 0.0124 + 15 0.0206 + 19 0.0103 + 21 0.101 + 22 0.00206 + 23 0.00206 + 26 0.00825 + 28 0.0103 + 29 0.00206 + 30 0.0474 + 31 0.0165 + 33 0.00412 + 34 0.00619 + 35 0.00619 + 37 0.00619 + 39 0.00206 + 42 0.00619 + 44 0.00206 + 45 0.307 + + 0 14 10 0 + 0 0.0714 + 2 0.0714 + 4 0.0714 + 7 0.143 + 15 0.143 + 28 0.143 + 30 0.0714 + 35 0.0714 + 42 0.0714 + 45 0.143 + + 12 2 2 0 + 0 0.5 + 11 0.5 + + 28 9 8 0 + 4 0.111 + 13 0.111 + 14 0.111 + 23 0.111 + 26 0.111 + 35 0.111 + 37 0.111 + 45 0.222 + + 29 63 4 0 + 3 0.0159 + 4 0.0317 + 7 0.0159 + 45 0.937 + + 30 12 3 0 + 4 0.0833 + 7 0.0833 + 45 0.833 + + 32 7 4 0 + 4 0.286 + 7 0.286 + 15 0.143 + 42 0.286 + + 33 49 4 0 + 3 0.0204 + 4 0.0204 + 14 0.0204 + 45 0.939 + + 42 3 2 0 + 4 0.333 + 13 0.667 + + 46 2 2 0 + 7 0.5 + 31 0.5 + + 48 16 7 0 + 4 0.125 + 7 0.25 + 21 0.25 + 26 0.0625 + 30 0.188 + 44 0.0625 + 45 0.0625 + + 49 20 8 0 + 4 0.05 + 7 0.3 + 8 0.1 + 12 0.05 + 13 0.05 + 21 0.25 + 37 0.05 + 45 0.15 + + 55 64 10 0 + 4 0.125 + 7 0.328 + 12 0.0156 + 13 0.0156 + 19 0.0312 + 21 0.25 + 28 0.0156 + 30 0.0938 + 35 0.0156 + 45 0.109 + + 57 82 17 0 + 3 0.0122 + 4 0.171 + 6 0.0122 + 7 0.232 + 8 0.0366 + 9 0.0122 + 12 0.0122 + 13 0.0122 + 14 0.0244 + 15 0.061 + 19 0.0122 + 21 0.146 + 26 0.0244 + 30 0.0366 + 31 0.0122 + 39 0.0122 + 45 0.171 + + 62 14 7 0 + 2 0.0714 + 3 0.0714 + 7 0.357 + 15 0.0714 + 19 0.0714 + 21 0.214 + 30 0.143 + + 64 16 7 0 + 4 0.25 + 7 0.25 + 8 0.0625 + 13 0.0625 + 19 0.0625 + 30 0.25 + 45 0.0625 + + 69 99 17 0 + 2 0.394 + 3 0.0101 + 4 0.242 + 7 0.0202 + 12 0.0202 + 13 0.0101 + 14 0.0202 + 21 0.0808 + 22 0.0101 + 28 0.0202 + 29 0.0101 + 30 0.0303 + 31 0.0505 + 33 0.0202 + 34 0.0303 + 37 0.0101 + 45 0.0202 + + 43 36 15 4 + 0 0.0278 + 2 0.0556 + 4 0.0556 + 7 0.167 + 12 0.0278 + 13 0.0278 + 19 0.0278 + 21 0.139 + 26 0.0556 + 28 0.0278 + 30 0.0278 + 31 0.0556 + 40 0.139 + 41 0.139 + 42 0.0278 + + 0 4 3 0 + 21 0.25 + 30 0.25 + 31 0.5 + + 28 2 2 0 + 13 0.5 + 19 0.5 + + 55 13 7 0 + 2 0.154 + 7 0.231 + 12 0.0769 + 21 0.308 + 26 0.0769 + 40 0.0769 + 41 0.0769 + + 57 9 5 0 + 7 0.222 + 26 0.111 + 40 0.222 + 41 0.333 + 42 0.111 + + 44 27 12 2 + 4 0.111 + 7 0.296 + 8 0.0741 + 13 0.111 + 14 0.037 + 15 0.148 + 26 0.037 + 28 0.037 + 31 0.037 + 34 0.037 + 37 0.037 + 45 0.037 + + 28 8 5 0 + 4 0.125 + 7 0.125 + 8 0.25 + 13 0.25 + 15 0.25 + + 55 5 3 0 + 7 0.6 + 13 0.2 + 26 0.2 + + 45 947 30 20 + 0 0.0169 + 1 0.00106 + 2 0.00211 + 3 0.00845 + 4 0.147 + 5 0.0116 + 6 0.00528 + 7 0.0993 + 8 0.119 + 9 0.00739 + 12 0.00845 + 13 0.0401 + 14 0.0201 + 15 0.0264 + 16 0.00211 + 17 0.00106 + 19 0.141 + 20 0.00422 + 21 0.116 + 22 0.00422 + 26 0.0211 + 27 0.0116 + 28 0.0919 + 29 0.00317 + 30 0.0348 + 31 0.0275 + 34 0.00211 + 35 0.0095 + 37 0.0127 + 42 0.00317 + + 0 241 18 0 + 1 0.00415 + 3 0.0083 + 4 0.149 + 7 0.0664 + 8 0.249 + 9 0.0083 + 12 0.00415 + 13 0.0207 + 14 0.0124 + 15 0.0124 + 21 0.224 + 22 0.0083 + 26 0.0124 + 28 0.0124 + 29 0.00415 + 30 0.104 + 31 0.0954 + 37 0.00415 + + 1 4 3 0 + 7 0.5 + 21 0.25 + 31 0.25 + + 2 14 4 0 + 0 0.286 + 12 0.357 + 28 0.214 + 29 0.143 + + 12 33 4 0 + 0 0.0909 + 21 0.0909 + 28 0.788 + 37 0.0303 + + 21 4 3 0 + 21 0.25 + 28 0.5 + 30 0.25 + + 26 33 2 0 + 21 0.0303 + 28 0.97 + + 28 57 16 0 + 3 0.0351 + 4 0.246 + 7 0.0351 + 8 0.228 + 9 0.0351 + 13 0.123 + 14 0.0351 + 15 0.0351 + 19 0.0175 + 20 0.0175 + 21 0.105 + 22 0.0175 + 26 0.0175 + 28 0.0175 + 30 0.0175 + 35 0.0175 + + 29 48 16 0 + 0 0.0208 + 4 0.25 + 5 0.0208 + 6 0.0417 + 7 0.104 + 8 0.125 + 13 0.0625 + 14 0.0208 + 15 0.0833 + 19 0.0417 + 21 0.0833 + 26 0.0417 + 28 0.0417 + 30 0.0208 + 34 0.0208 + 37 0.0208 + + 30 36 11 0 + 4 0.278 + 7 0.0278 + 8 0.194 + 9 0.0278 + 13 0.111 + 14 0.0278 + 15 0.0833 + 17 0.0278 + 21 0.167 + 26 0.0278 + 28 0.0278 + + 31 23 10 0 + 3 0.0435 + 4 0.13 + 6 0.087 + 7 0.087 + 8 0.087 + 13 0.0435 + 14 0.13 + 15 0.0435 + 21 0.304 + 28 0.0435 + + 32 12 7 0 + 4 0.0833 + 7 0.0833 + 8 0.333 + 13 0.0833 + 15 0.167 + 28 0.167 + 30 0.0833 + + 33 30 13 0 + 3 0.0667 + 4 0.167 + 5 0.0333 + 7 0.133 + 8 0.2 + 9 0.0333 + 13 0.0667 + 14 0.0667 + 15 0.0333 + 19 0.1 + 21 0.0333 + 22 0.0333 + 30 0.0333 + + 41 196 20 0 + 0 0.0306 + 2 0.0102 + 4 0.128 + 5 0.0153 + 7 0.0765 + 8 0.0255 + 13 0.0408 + 14 0.0102 + 15 0.0153 + 16 0.0051 + 19 0.398 + 20 0.0102 + 21 0.0714 + 27 0.0357 + 28 0.0459 + 30 0.0051 + 31 0.0051 + 35 0.0357 + 37 0.0255 + 42 0.0102 + + 42 126 18 0 + 4 0.183 + 5 0.0476 + 7 0.0714 + 8 0.0397 + 12 0.0159 + 13 0.0397 + 14 0.0238 + 15 0.0317 + 16 0.00794 + 19 0.381 + 20 0.00794 + 21 0.0397 + 27 0.0317 + 28 0.0317 + 34 0.00794 + 35 0.00794 + 37 0.0238 + 42 0.00794 + + 48 2 2 0 + 7 0.5 + 26 0.5 + + 49 13 9 0 + 0 0.0769 + 4 0.231 + 7 0.0769 + 8 0.154 + 21 0.154 + 28 0.0769 + 30 0.0769 + 31 0.0769 + 37 0.0769 + + 55 39 9 0 + 3 0.0256 + 4 0.103 + 7 0.487 + 8 0.0256 + 9 0.0256 + 13 0.0256 + 14 0.0256 + 21 0.0769 + 26 0.205 + + 57 18 7 0 + 4 0.111 + 7 0.556 + 8 0.0556 + 19 0.0556 + 21 0.0556 + 26 0.111 + 30 0.0556 + + 58 10 5 0 + 0 0.1 + 4 0.1 + 7 0.5 + 21 0.1 + 26 0.2 + + 59 8 7 0 + 6 0.125 + 7 0.125 + 8 0.125 + 13 0.125 + 14 0.125 + 15 0.25 + 19 0.125 + + 46 498 27 21 + 0 0.01 + 2 0.151 + 3 0.00402 + 4 0.0723 + 7 0.398 + 8 0.0161 + 12 0.00201 + 13 0.0161 + 14 0.01 + 15 0.0321 + 19 0.0141 + 20 0.00602 + 21 0.0221 + 26 0.0683 + 28 0.00402 + 29 0.00803 + 30 0.0743 + 31 0.00201 + 33 0.00602 + 35 0.00402 + 37 0.0201 + 40 0.00201 + 41 0.00201 + 42 0.0141 + 44 0.012 + 46 0.0141 + 47 0.0161 + + 13 2 2 0 + 8 0.5 + 15 0.5 + + 26 1 1 0 + 28 1 + + 28 48 12 0 + 3 0.0208 + 4 0.354 + 7 0.229 + 8 0.0625 + 13 0.0417 + 14 0.0417 + 15 0.0833 + 19 0.0417 + 20 0.0417 + 35 0.0208 + 37 0.0417 + 44 0.0208 + + 29 9 6 0 + 4 0.222 + 7 0.111 + 13 0.111 + 21 0.111 + 26 0.222 + 30 0.222 + + 30 21 7 0 + 3 0.0476 + 4 0.333 + 7 0.19 + 13 0.0476 + 14 0.0476 + 15 0.286 + 20 0.0476 + + 31 21 8 0 + 4 0.0952 + 7 0.429 + 13 0.0476 + 14 0.0476 + 15 0.0476 + 19 0.0476 + 26 0.238 + 37 0.0476 + + 40 5 2 0 + 46 0.2 + 47 0.8 + + 41 118 15 0 + 0 0.0169 + 2 0.246 + 4 0.0254 + 7 0.237 + 8 0.00847 + 13 0.00847 + 15 0.00847 + 19 0.0169 + 21 0.0593 + 26 0.0169 + 29 0.0254 + 30 0.28 + 31 0.00847 + 33 0.0254 + 46 0.0169 + + 48 39 7 0 + 0 0.0256 + 2 0.308 + 7 0.487 + 8 0.0256 + 26 0.0513 + 37 0.0513 + 44 0.0513 + + 49 34 11 0 + 0 0.0294 + 2 0.0294 + 4 0.0588 + 7 0.529 + 13 0.0294 + 26 0.176 + 28 0.0294 + 30 0.0294 + 35 0.0294 + 37 0.0294 + 42 0.0294 + + 51 1 1 0 + 44 1 + + 52 2 2 0 + 2 0.5 + 37 0.5 + + 55 98 11 0 + 0 0.0102 + 2 0.0918 + 7 0.724 + 12 0.0102 + 19 0.0102 + 26 0.0816 + 29 0.0102 + 30 0.0102 + 41 0.0102 + 42 0.0306 + 44 0.0102 + + 57 31 9 0 + 2 0.129 + 4 0.0323 + 7 0.516 + 8 0.0323 + 13 0.0323 + 21 0.0323 + 26 0.129 + 37 0.0645 + 40 0.0323 + + 59 13 5 0 + 4 0.0769 + 7 0.462 + 15 0.154 + 21 0.0769 + 26 0.231 + + 62 11 7 0 + 2 0.0909 + 7 0.364 + 26 0.0909 + 42 0.0909 + 44 0.0909 + 46 0.182 + 47 0.0909 + + 64 5 2 0 + 7 0.8 + 8 0.2 + + 65 6 4 0 + 2 0.167 + 15 0.167 + 46 0.333 + 47 0.333 + + 66 2 2 0 + 37 0.5 + 42 0.5 + + 67 3 3 0 + 4 0.333 + 19 0.333 + 47 0.333 + + 69 22 4 0 + 2 0.773 + 7 0.136 + 21 0.0455 + 42 0.0455 + + 47 145999 39 35 + 0 0.0116 + 1 6.85e-06 + 2 0.0386 + 3 0.000603 + 4 0.0028 + 5 6.16e-05 + 7 0.0116 + 8 0.000671 + 9 2.05e-05 + 12 0.00449 + 13 0.000678 + 14 0.000404 + 15 0.0104 + 16 6.85e-06 + 17 6.85e-06 + 19 0.000808 + 20 0.000178 + 21 0.00211 + 22 0.000137 + 25 6.85e-06 + 26 0.0016 + 28 0.000164 + 29 0.00262 + 30 0.000384 + 31 0.000349 + 32 0.00107 + 33 0.00145 + 34 0.000288 + 35 4.11e-05 + 37 0.000623 + 39 2.05e-05 + 40 0.691 + 41 0.188 + 42 0.0209 + 43 0.00159 + 44 0.000692 + 45 0.000336 + 46 0.00192 + 47 0.00216 + + 0 598 28 0 + 0 0.0485 + 1 0.00167 + 2 0.0318 + 3 0.0167 + 4 0.164 + 7 0.0518 + 8 0.0234 + 9 0.00502 + 12 0.00334 + 13 0.0284 + 14 0.0301 + 15 0.0853 + 19 0.00669 + 20 0.00836 + 21 0.0167 + 26 0.01 + 30 0.00502 + 31 0.00167 + 34 0.00167 + 35 0.00167 + 37 0.00836 + 39 0.00167 + 40 0.232 + 41 0.176 + 42 0.0301 + 43 0.00167 + 45 0.00334 + 46 0.00502 + + 2 1 1 0 + 30 1 + + 7 2 2 0 + 13 0.5 + 41 0.5 + + 8 34 7 0 + 2 0.147 + 7 0.118 + 20 0.0294 + 21 0.0294 + 32 0.0294 + 40 0.559 + 41 0.0882 + + 12 59 11 0 + 0 0.0508 + 2 0.0508 + 4 0.0169 + 7 0.0508 + 13 0.0169 + 21 0.0339 + 26 0.0339 + 40 0.339 + 41 0.288 + 42 0.0847 + 46 0.0339 + + 13 57 9 0 + 0 0.0351 + 2 0.0877 + 7 0.0351 + 12 0.0351 + 26 0.0175 + 30 0.0175 + 40 0.368 + 41 0.368 + 42 0.0351 + + 15 4 2 0 + 15 0.5 + 46 0.5 + + 21 60 9 0 + 0 0.0167 + 8 0.0167 + 21 0.0167 + 28 0.0333 + 40 0.583 + 41 0.233 + 42 0.0667 + 46 0.0167 + 47 0.0167 + + 22 3 1 0 + 41 1 + + 26 26 8 0 + 0 0.0385 + 7 0.0769 + 21 0.0385 + 28 0.0385 + 40 0.5 + 41 0.231 + 42 0.0385 + 46 0.0385 + + 28 1249 28 0 + 0 0.028 + 2 0.0697 + 4 0.00961 + 5 0.000801 + 7 0.0641 + 8 0.0032 + 12 0.00881 + 13 0.0056 + 15 0.0016 + 17 0.000801 + 19 0.004 + 20 0.0016 + 21 0.00881 + 26 0.004 + 30 0.000801 + 31 0.000801 + 33 0.000801 + 34 0.000801 + 37 0.0048 + 39 0.000801 + 40 0.481 + 41 0.254 + 42 0.0336 + 43 0.0016 + 44 0.0016 + 45 0.000801 + 46 0.0056 + 47 0.0024 + + 29 2544 28 0 + 0 0.00825 + 2 0.0197 + 3 0.0157 + 4 0.0204 + 7 0.00432 + 8 0.000786 + 12 0.000393 + 13 0.00314 + 14 0.000786 + 15 0.219 + 16 0.000393 + 19 0.000786 + 20 0.000786 + 21 0.00118 + 26 0.00118 + 28 0.000393 + 29 0.00197 + 30 0.000393 + 31 0.000786 + 32 0.000393 + 33 0.00118 + 40 0.521 + 41 0.167 + 42 0.00825 + 43 0.000786 + 45 0.000393 + 46 0.000393 + 47 0.000393 + + 30 440 24 0 + 0 0.0591 + 2 0.0977 + 3 0.00227 + 4 0.00227 + 7 0.0659 + 8 0.00909 + 12 0.00455 + 13 0.0114 + 14 0.00682 + 15 0.00227 + 19 0.00227 + 20 0.00227 + 21 0.00909 + 22 0.00227 + 26 0.00227 + 28 0.00227 + 32 0.00227 + 37 0.00227 + 40 0.427 + 41 0.239 + 42 0.0273 + 43 0.00682 + 44 0.00455 + 46 0.00909 + + 31 1808 30 0 + 0 0.0321 + 2 0.0857 + 3 0.000553 + 4 0.00332 + 7 0.0243 + 8 0.00111 + 12 0.0083 + 13 0.000553 + 14 0.000553 + 15 0.00111 + 19 0.00111 + 20 0.000553 + 21 0.00387 + 22 0.000553 + 26 0.00332 + 29 0.0083 + 30 0.000553 + 31 0.000553 + 32 0.00553 + 33 0.00277 + 35 0.000553 + 37 0.00221 + 40 0.497 + 41 0.269 + 42 0.0321 + 43 0.0083 + 44 0.00111 + 45 0.000553 + 46 0.00277 + 47 0.00166 + + 32 490 22 0 + 0 0.0286 + 2 0.0347 + 4 0.0184 + 7 0.0163 + 8 0.00612 + 12 0.0184 + 13 0.00408 + 14 0.0184 + 15 0.00204 + 19 0.00408 + 21 0.00816 + 26 0.00204 + 29 0.00204 + 32 0.00204 + 35 0.00204 + 40 0.42 + 41 0.361 + 42 0.0347 + 43 0.00612 + 44 0.00408 + 46 0.00408 + 47 0.00204 + + 33 2098 25 0 + 0 0.00763 + 2 0.0062 + 3 0.0114 + 4 0.0472 + 7 0.00477 + 8 0.00477 + 12 0.00191 + 13 0.0124 + 15 0.404 + 19 0.000477 + 20 0.00286 + 21 0.000477 + 26 0.000477 + 29 0.000477 + 30 0.000477 + 31 0.000477 + 32 0.000477 + 40 0.304 + 41 0.173 + 42 0.0129 + 43 0.000953 + 44 0.000953 + 45 0.000477 + 46 0.000477 + 47 0.000477 + + 40 11 2 0 + 46 0.0909 + 47 0.909 + + 41 55 17 0 + 0 0.0727 + 2 0.364 + 4 0.109 + 7 0.0545 + 8 0.0182 + 12 0.109 + 13 0.0182 + 14 0.0364 + 15 0.0182 + 19 0.0364 + 21 0.0364 + 29 0.0182 + 30 0.0182 + 31 0.0182 + 32 0.0182 + 37 0.0364 + 45 0.0182 + + 42 5 4 0 + 4 0.2 + 12 0.2 + 19 0.4 + 31 0.2 + + 43 14 5 0 + 2 0.143 + 12 0.0714 + 40 0.357 + 41 0.357 + 42 0.0714 + + 46 81 16 0 + 0 0.037 + 2 0.42 + 4 0.0247 + 7 0.0864 + 12 0.0123 + 15 0.0247 + 19 0.0494 + 21 0.0123 + 29 0.037 + 33 0.0247 + 40 0.0123 + 41 0.0123 + 42 0.0494 + 44 0.0123 + 46 0.0864 + 47 0.0988 + + 48 4185 23 0 + 0 0.0098 + 2 0.0437 + 5 0.000239 + 7 0.00621 + 8 0.000239 + 12 0.00119 + 19 0.00143 + 20 0.000239 + 21 0.000717 + 26 0.000717 + 29 0.000717 + 30 0.000717 + 32 0.000239 + 33 0.000478 + 34 0.000478 + 40 0.651 + 41 0.249 + 42 0.0284 + 43 0.000956 + 44 0.000478 + 45 0.000239 + 46 0.00143 + 47 0.00143 + + 49 3148 26 0 + 0 0.0156 + 2 0.0594 + 3 0.000318 + 4 0.000635 + 7 0.0133 + 8 0.000318 + 12 0.00762 + 13 0.000318 + 15 0.000318 + 19 0.000953 + 21 0.00254 + 26 0.00159 + 28 0.000318 + 29 0.00349 + 30 0.000635 + 32 0.00127 + 33 0.00222 + 34 0.000318 + 37 0.000635 + 40 0.619 + 41 0.234 + 42 0.027 + 43 0.00286 + 45 0.000318 + 46 0.00191 + 47 0.00222 + + 51 49 5 0 + 40 0.735 + 41 0.102 + 42 0.0204 + 43 0.0408 + 47 0.102 + + 55 29370 35 0 + 0 0.0136 + 2 0.0618 + 3 0.00017 + 4 0.00109 + 5 3.4e-05 + 7 0.0157 + 8 0.000613 + 12 0.00582 + 13 0.000204 + 14 0.000136 + 15 0.000477 + 19 0.000783 + 20 6.81e-05 + 21 0.00289 + 22 0.000238 + 25 3.4e-05 + 26 0.00221 + 28 0.000272 + 29 0.00371 + 30 0.000272 + 31 0.000477 + 32 0.00112 + 33 0.00197 + 34 0.000409 + 35 3.4e-05 + 37 0.000783 + 39 3.4e-05 + 40 0.65 + 41 0.205 + 42 0.0224 + 43 0.0018 + 44 0.000647 + 45 0.000409 + 46 0.00211 + 47 0.00218 + + 57 28760 33 0 + 0 0.0139 + 2 0.0438 + 3 6.95e-05 + 4 0.00104 + 5 6.95e-05 + 7 0.00883 + 8 0.000556 + 12 0.00619 + 13 0.000417 + 14 0.000104 + 15 0.000313 + 19 0.000626 + 20 0.000104 + 21 0.00209 + 22 0.000139 + 26 0.00205 + 28 0.000209 + 29 0.00466 + 30 0.000522 + 31 0.000591 + 32 0.00191 + 33 0.00209 + 34 0.000487 + 35 3.48e-05 + 37 0.000313 + 40 0.684 + 41 0.195 + 42 0.0239 + 43 0.00212 + 44 0.00101 + 45 0.000382 + 46 0.00125 + 47 0.00174 + + 58 125 18 0 + 0 0.04 + 2 0.112 + 4 0.016 + 7 0.008 + 12 0.032 + 15 0.04 + 19 0.04 + 20 0.008 + 21 0.008 + 26 0.008 + 29 0.016 + 33 0.008 + 35 0.008 + 40 0.512 + 41 0.112 + 42 0.016 + 45 0.008 + 47 0.008 + + 59 392 14 0 + 0 0.0102 + 2 0.0969 + 4 0.00765 + 7 0.0255 + 8 0.00255 + 12 0.00255 + 21 0.0051 + 26 0.0051 + 40 0.51 + 41 0.291 + 42 0.0332 + 43 0.0051 + 46 0.00255 + 47 0.00255 + + 62 12424 28 0 + 0 0.00789 + 2 0.0249 + 3 8.05e-05 + 4 0.000644 + 7 0.00539 + 8 0.000241 + 12 0.0037 + 13 8.05e-05 + 14 0.000402 + 15 8.05e-05 + 19 0.000644 + 21 0.00145 + 26 0.000644 + 29 0.00129 + 30 0.000241 + 31 8.05e-05 + 32 0.000805 + 33 0.00121 + 34 0.000402 + 37 0.000322 + 40 0.761 + 41 0.163 + 42 0.0182 + 43 0.000563 + 44 0.000724 + 45 0.000402 + 46 0.0025 + 47 0.00266 + + 64 13381 22 0 + 0 0.00239 + 2 0.0106 + 4 7.47e-05 + 5 7.47e-05 + 7 0.000374 + 8 7.47e-05 + 12 0.00105 + 13 7.47e-05 + 15 7.47e-05 + 19 0.000374 + 21 7.47e-05 + 29 0.000299 + 32 0.000149 + 33 0.000224 + 34 7.47e-05 + 40 0.86 + 41 0.106 + 42 0.0132 + 43 0.000972 + 44 0.000224 + 46 0.000972 + 47 0.00277 + + 65 17 2 0 + 40 0.765 + 47 0.235 + + 67 12 4 0 + 40 0.5 + 42 0.0833 + 46 0.25 + 47 0.167 + + 68 148 8 0 + 0 0.0135 + 2 0.00676 + 4 0.00676 + 31 0.00676 + 40 0.73 + 41 0.189 + 42 0.0405 + 46 0.00676 + + 69 44302 32 0 + 0 0.0102 + 2 0.0279 + 3 6.77e-05 + 4 0.000971 + 5 6.77e-05 + 7 0.0133 + 8 0.000361 + 12 0.00354 + 13 0.000203 + 14 0.000271 + 15 0.000406 + 19 0.000564 + 20 2.26e-05 + 21 0.00185 + 22 0.000158 + 26 0.00144 + 28 9.03e-05 + 29 0.00174 + 30 0.000339 + 31 0.000226 + 32 0.00079 + 33 0.00124 + 34 0.000113 + 37 0.00079 + 40 0.719 + 41 0.189 + 42 0.0194 + 43 0.0012 + 44 0.000632 + 45 0.000248 + 46 0.00192 + 47 0.00156 + + 74 15 3 0 + 40 0.4 + 41 0.0667 + 47 0.533 + + 48 5913 33 15 + 0 0.00727 + 2 0.0313 + 3 0.00101 + 4 0.00643 + 5 0.000169 + 7 0.163 + 8 0.00372 + 12 0.00101 + 13 0.00558 + 14 0.000338 + 15 0.00169 + 17 0.000507 + 19 0.00152 + 20 0.000169 + 21 0.0167 + 22 0.000507 + 26 0.0338 + 29 0.000507 + 30 0.00355 + 31 0.0022 + 32 0.000169 + 33 0.000338 + 34 0.00101 + 35 0.000676 + 37 0.00693 + 40 0.461 + 41 0.214 + 42 0.0237 + 43 0.000676 + 44 0.00152 + 45 0.000507 + 46 0.00761 + 47 0.00101 + + 0 4156 30 0 + 0 0.00794 + 2 0.0337 + 3 0.000722 + 4 0.00553 + 5 0.000241 + 7 0.149 + 8 0.00217 + 12 0.0012 + 13 0.00674 + 14 0.000241 + 15 0.000962 + 17 0.000481 + 19 0.00144 + 21 0.0156 + 26 0.038 + 29 0.000722 + 30 0.00337 + 31 0.00265 + 33 0.000481 + 34 0.0012 + 35 0.000481 + 37 0.00577 + 40 0.474 + 41 0.217 + 42 0.0231 + 43 0.000722 + 44 0.00192 + 45 0.000481 + 46 0.00217 + 47 0.00144 + + 1 36 8 0 + 0 0.0278 + 7 0.194 + 19 0.0278 + 21 0.0278 + 40 0.333 + 41 0.306 + 42 0.0556 + 46 0.0278 + + 21 356 17 0 + 0 0.00562 + 2 0.0169 + 4 0.00281 + 7 0.152 + 8 0.00281 + 19 0.00281 + 21 0.014 + 26 0.014 + 30 0.00281 + 32 0.00281 + 34 0.00281 + 35 0.00281 + 37 0.0225 + 40 0.458 + 41 0.256 + 42 0.0365 + 46 0.00562 + + 28 251 17 0 + 0 0.012 + 2 0.0239 + 4 0.0199 + 7 0.243 + 8 0.0199 + 12 0.00398 + 14 0.00398 + 15 0.00398 + 20 0.00398 + 21 0.0239 + 26 0.0438 + 30 0.00398 + 40 0.394 + 41 0.175 + 42 0.0159 + 43 0.00398 + 45 0.00398 + + 29 218 16 0 + 0 0.00459 + 2 0.0275 + 3 0.00917 + 4 0.0275 + 7 0.284 + 8 0.0229 + 13 0.00917 + 15 0.0138 + 21 0.0275 + 22 0.0138 + 26 0.0275 + 30 0.00917 + 37 0.0138 + 40 0.362 + 41 0.138 + 42 0.00917 + + 30 87 10 0 + 0 0.0115 + 2 0.0345 + 4 0.0115 + 7 0.184 + 15 0.0115 + 17 0.0115 + 21 0.0345 + 26 0.0115 + 40 0.517 + 41 0.172 + + 31 99 12 0 + 2 0.0202 + 4 0.0101 + 7 0.343 + 15 0.0101 + 21 0.0202 + 26 0.0303 + 30 0.0101 + 37 0.0101 + 40 0.374 + 41 0.141 + 42 0.0202 + 44 0.0101 + + 32 99 9 0 + 2 0.0303 + 4 0.0101 + 7 0.172 + 13 0.0101 + 26 0.0101 + 37 0.0101 + 40 0.475 + 41 0.253 + 42 0.0303 + + 33 166 10 0 + 2 0.0301 + 7 0.0904 + 13 0.00602 + 21 0.0361 + 26 0.0241 + 31 0.00602 + 37 0.00602 + 40 0.53 + 41 0.235 + 42 0.0361 + + 41 43 6 0 + 7 0.0698 + 21 0.0233 + 30 0.0233 + 40 0.651 + 41 0.186 + 42 0.0465 + + 45 96 7 0 + 2 0.0104 + 7 0.0312 + 30 0.0104 + 31 0.0104 + 40 0.354 + 41 0.25 + 46 0.333 + + 47 37 1 0 + 7 1 + + 49 232 14 0 + 0 0.00431 + 2 0.0517 + 7 0.142 + 8 0.00862 + 13 0.00431 + 19 0.00431 + 21 0.0172 + 26 0.0474 + 35 0.00431 + 37 0.0129 + 40 0.418 + 41 0.25 + 42 0.0302 + 46 0.00431 + + 59 3 3 0 + 3 0.333 + 40 0.333 + 42 0.333 + + 69 2 2 0 + 0 0.5 + 40 0.5 + + 49 8591 38 29 + 0 0.047 + 1 0.00291 + 2 0.0221 + 3 0.00466 + 4 0.0363 + 7 0.185 + 8 0.0282 + 9 0.00163 + 10 0.000116 + 12 0.00326 + 13 0.00873 + 14 0.00384 + 15 0.00349 + 17 0.000116 + 19 0.00105 + 20 0.00186 + 21 0.0312 + 22 0.00233 + 24 0.000466 + 26 0.0481 + 28 0.0638 + 29 0.00349 + 30 0.0345 + 31 0.076 + 32 0.000931 + 33 0.00128 + 34 0.000233 + 35 0.00151 + 37 0.00442 + 39 0.000698 + 40 0.227 + 41 0.132 + 42 0.0128 + 43 0.00105 + 44 0.000698 + 45 0.0021 + 46 0.00466 + 47 0.000815 + + 0 2149 33 0 + 0 0.0558 + 1 0.0116 + 2 0.00558 + 3 0.00651 + 4 0.0879 + 7 0.102 + 8 0.0814 + 9 0.00605 + 12 0.000465 + 13 0.0172 + 14 0.00745 + 15 0.00465 + 17 0.000465 + 20 0.000465 + 21 0.053 + 22 0.00279 + 24 0.0014 + 26 0.0219 + 28 0.00279 + 29 0.000465 + 30 0.117 + 31 0.276 + 32 0.000465 + 33 0.000465 + 35 0.00372 + 37 0.00233 + 39 0.000931 + 40 0.0749 + 41 0.0433 + 42 0.00465 + 45 0.00558 + 46 0.000465 + 47 0.000465 + + 1 9 3 0 + 0 0.111 + 31 0.778 + 47 0.111 + + 2 61 13 0 + 0 0.115 + 7 0.0328 + 8 0.0164 + 12 0.0492 + 21 0.0164 + 26 0.0656 + 28 0.18 + 29 0.213 + 30 0.0984 + 31 0.082 + 32 0.0492 + 33 0.0656 + 45 0.0164 + + 8 4 2 0 + 7 0.75 + 41 0.25 + + 12 581 7 0 + 0 0.31 + 21 0.0172 + 22 0.00172 + 28 0.664 + 29 0.00172 + 32 0.00172 + 41 0.00344 + + 13 14 7 0 + 7 0.357 + 14 0.143 + 26 0.143 + 30 0.0714 + 37 0.0714 + 40 0.143 + 41 0.0714 + + 21 224 16 0 + 0 0.196 + 3 0.00446 + 4 0.0491 + 7 0.0268 + 8 0.0714 + 13 0.0179 + 20 0.00446 + 21 0.0179 + 26 0.0179 + 28 0.366 + 30 0.0402 + 31 0.156 + 40 0.00893 + 41 0.00893 + 42 0.00893 + 46 0.00446 + + 26 59 4 0 + 0 0.0169 + 21 0.0169 + 28 0.932 + 45 0.0339 + + 28 735 26 0 + 0 0.00544 + 2 0.0667 + 3 0.00272 + 4 0.0517 + 7 0.291 + 8 0.015 + 12 0.00136 + 13 0.0068 + 14 0.00816 + 15 0.00544 + 20 0.0068 + 21 0.0381 + 22 0.00408 + 26 0.0803 + 29 0.00136 + 30 0.00952 + 31 0.00136 + 35 0.00408 + 37 0.0109 + 39 0.00272 + 40 0.215 + 41 0.144 + 42 0.00952 + 44 0.00136 + 46 0.015 + 47 0.00136 + + 29 723 27 0 + 0 0.00138 + 2 0.0277 + 3 0.0166 + 4 0.0194 + 7 0.383 + 8 0.0194 + 9 0.00138 + 12 0.00138 + 13 0.0138 + 14 0.00553 + 15 0.0152 + 19 0.00692 + 20 0.00692 + 21 0.0332 + 22 0.00277 + 26 0.116 + 30 0.00553 + 31 0.00138 + 32 0.00138 + 37 0.00415 + 40 0.169 + 41 0.129 + 42 0.0111 + 43 0.00138 + 44 0.00138 + 45 0.00138 + 46 0.00415 + + 30 476 29 0 + 0 0.0168 + 2 0.0147 + 3 0.0063 + 4 0.0315 + 7 0.332 + 8 0.0105 + 10 0.0021 + 12 0.0126 + 13 0.0126 + 14 0.0105 + 15 0.0021 + 20 0.0021 + 21 0.0441 + 22 0.0021 + 26 0.105 + 28 0.0021 + 29 0.0021 + 30 0.0084 + 31 0.0021 + 33 0.0084 + 34 0.0021 + 35 0.0021 + 37 0.0063 + 39 0.0042 + 40 0.197 + 41 0.139 + 42 0.0126 + 43 0.0042 + 46 0.0042 + + 31 679 25 0 + 0 0.0103 + 2 0.0353 + 3 0.00736 + 4 0.0177 + 7 0.384 + 8 0.00884 + 12 0.0103 + 13 0.00295 + 15 0.00147 + 19 0.00295 + 20 0.00147 + 21 0.0177 + 26 0.0854 + 29 0.0118 + 30 0.00442 + 35 0.00147 + 37 0.00295 + 40 0.225 + 41 0.137 + 42 0.0206 + 43 0.00147 + 44 0.00442 + 45 0.00147 + 46 0.00147 + 47 0.00147 + + 32 203 15 0 + 0 0.0197 + 2 0.0542 + 4 0.0345 + 7 0.31 + 8 0.00985 + 13 0.0148 + 21 0.0394 + 22 0.00493 + 26 0.0788 + 31 0.00493 + 32 0.00493 + 37 0.00493 + 40 0.241 + 41 0.163 + 42 0.0148 + + 33 209 19 0 + 2 0.0287 + 3 0.00957 + 4 0.0383 + 7 0.297 + 8 0.0239 + 13 0.00478 + 19 0.00478 + 20 0.00478 + 21 0.0383 + 22 0.00478 + 26 0.0718 + 34 0.00478 + 37 0.00957 + 40 0.254 + 41 0.167 + 42 0.0191 + 43 0.00478 + 46 0.00478 + 47 0.00957 + + 41 627 13 0 + 0 0.00159 + 2 0.00159 + 7 0.0223 + 20 0.00159 + 21 0.00159 + 26 0.00319 + 29 0.00638 + 30 0.00797 + 31 0.00159 + 40 0.619 + 41 0.313 + 42 0.0191 + 47 0.00159 + + 42 15 6 0 + 7 0.0667 + 26 0.0667 + 40 0.667 + 41 0.0667 + 42 0.0667 + 43 0.0667 + + 43 4 3 0 + 2 0.25 + 7 0.25 + 40 0.5 + + 45 38 7 0 + 7 0.105 + 21 0.105 + 28 0.0526 + 31 0.105 + 40 0.237 + 41 0.0789 + 46 0.316 + + 46 6 2 0 + 40 0.333 + 41 0.667 + + 47 19 5 0 + 2 0.0526 + 7 0.421 + 26 0.0526 + 40 0.263 + 41 0.211 + + 48 81 9 0 + 0 0.0123 + 2 0.0123 + 7 0.173 + 13 0.0123 + 15 0.0247 + 26 0.037 + 40 0.444 + 41 0.247 + 42 0.037 + + 49 150 16 0 + 0 0.0133 + 2 0.0133 + 4 0.02 + 7 0.147 + 8 0.0133 + 13 0.00667 + 21 0.02 + 22 0.0133 + 26 0.0533 + 28 0.0333 + 30 0.02 + 31 0.02 + 40 0.327 + 41 0.267 + 42 0.0133 + 46 0.02 + + 55 1082 27 0 + 0 0.012 + 2 0.0407 + 3 0.000924 + 4 0.0129 + 7 0.174 + 8 0.00277 + 12 0.00555 + 13 0.0037 + 15 0.000924 + 19 0.000924 + 21 0.0213 + 22 0.00185 + 24 0.000924 + 26 0.0434 + 29 0.000924 + 30 0.00277 + 31 0.000924 + 32 0.000924 + 33 0.000924 + 37 0.00555 + 40 0.418 + 41 0.216 + 42 0.0259 + 43 0.00185 + 44 0.000924 + 45 0.000924 + 46 0.00277 + + 57 294 15 0 + 0 0.034 + 2 0.0272 + 7 0.119 + 8 0.0034 + 12 0.0102 + 13 0.0034 + 21 0.0068 + 26 0.0136 + 33 0.0034 + 37 0.0102 + 40 0.497 + 41 0.248 + 42 0.0136 + 43 0.0034 + 46 0.0068 + + 59 95 10 0 + 2 0.0211 + 4 0.0105 + 7 0.242 + 21 0.0316 + 22 0.0105 + 26 0.0737 + 37 0.0316 + 40 0.326 + 41 0.221 + 42 0.0316 + + 62 38 6 0 + 7 0.158 + 21 0.0263 + 26 0.0263 + 40 0.5 + 41 0.237 + 42 0.0526 + + 64 6 3 0 + 2 0.167 + 7 0.333 + 40 0.5 + + 68 1 1 0 + 42 1 + + 69 3 3 0 + 37 0.333 + 40 0.333 + 41 0.333 + + 50 39 9 0 + 0 0.0513 + 1 0.0513 + 13 0.0256 + 21 0.103 + 26 0.0769 + 28 0.256 + 29 0.0513 + 30 0.308 + 31 0.0769 + + 51 53 8 1 + 26 0.0189 + 40 0.679 + 41 0.113 + 42 0.0189 + 43 0.0377 + 44 0.0189 + 46 0.0189 + 47 0.0943 + + 28 8 4 0 + 40 0.5 + 42 0.125 + 43 0.25 + 47 0.125 + + 52 22 6 1 + 7 0.0455 + 21 0.0455 + 26 0.182 + 40 0.273 + 41 0.364 + 46 0.0909 + + 41 9 2 0 + 40 0.111 + 41 0.889 + + 55 47284 43 31 + 0 0.00854 + 1 2.11e-05 + 2 0.0387 + 3 0.00247 + 4 0.0117 + 5 8.46e-05 + 6 4.23e-05 + 7 0.211 + 8 0.00544 + 9 0.000656 + 10 6.34e-05 + 12 0.00364 + 13 0.00398 + 14 0.000613 + 15 0.00271 + 17 0.000106 + 19 0.0018 + 20 0.000338 + 21 0.0256 + 22 0.00235 + 23 6.34e-05 + 24 0.00343 + 25 2.11e-05 + 26 0.0759 + 28 0.000486 + 29 0.00235 + 30 0.00334 + 31 0.00131 + 32 0.000698 + 33 0.00123 + 34 0.000761 + 35 0.000423 + 37 0.00419 + 38 2.11e-05 + 39 0.000952 + 40 0.404 + 41 0.157 + 42 0.0156 + 43 0.0014 + 44 0.000909 + 45 0.00123 + 46 0.00338 + 47 0.00135 + + 0 6750 33 0 + 0 0.00252 + 2 0.0296 + 3 0.000444 + 4 0.00504 + 7 0.114 + 8 0.00296 + 12 0.000889 + 13 0.00207 + 14 0.000148 + 15 0.000593 + 19 0.00119 + 20 0.000296 + 21 0.0169 + 22 0.000148 + 23 0.000148 + 24 0.000148 + 26 0.0105 + 29 0.000593 + 30 0.00222 + 31 0.00207 + 32 0.000296 + 33 0.000148 + 34 0.00207 + 35 0.00148 + 37 0.00252 + 40 0.549 + 41 0.221 + 42 0.0246 + 43 0.00119 + 44 0.00104 + 45 0.000741 + 46 0.00252 + 47 0.00119 + + 1 94 13 0 + 0 0.0426 + 2 0.0532 + 4 0.0319 + 7 0.117 + 12 0.0106 + 21 0.0213 + 26 0.0213 + 30 0.0426 + 31 0.0213 + 33 0.0213 + 40 0.34 + 41 0.255 + 42 0.0213 + + 2 4 4 0 + 2 0.25 + 4 0.25 + 7 0.25 + 40 0.25 + + 8 38 9 0 + 0 0.0526 + 2 0.0263 + 7 0.211 + 19 0.0526 + 21 0.0526 + 26 0.0263 + 40 0.342 + 41 0.184 + 42 0.0526 + + 12 4 3 0 + 0 0.25 + 26 0.25 + 28 0.5 + + 13 94 10 0 + 0 0.0426 + 2 0.0638 + 7 0.234 + 12 0.0213 + 13 0.0106 + 21 0.0106 + 26 0.0957 + 34 0.0106 + 40 0.362 + 41 0.149 + + 14 29 7 0 + 2 0.0345 + 7 0.448 + 21 0.0345 + 26 0.069 + 30 0.0345 + 40 0.276 + 41 0.103 + + 15 17 7 0 + 7 0.0588 + 26 0.0588 + 40 0.294 + 41 0.294 + 42 0.0588 + 46 0.176 + 47 0.0588 + + 18 17 5 0 + 7 0.0588 + 21 0.176 + 26 0.0588 + 40 0.588 + 41 0.118 + + 21 265 16 0 + 0 0.00377 + 2 0.0226 + 3 0.00377 + 7 0.117 + 19 0.00377 + 21 0.0113 + 26 0.0113 + 28 0.00755 + 31 0.00377 + 35 0.00755 + 40 0.494 + 41 0.245 + 42 0.0566 + 44 0.00377 + 46 0.00377 + 47 0.00377 + + 28 12476 38 0 + 0 0.00697 + 2 0.0437 + 3 0.00176 + 4 0.013 + 7 0.248 + 8 0.00601 + 9 0.0012 + 10 8.02e-05 + 12 0.00353 + 13 0.00449 + 14 0.000721 + 15 0.00208 + 17 8.02e-05 + 19 0.00168 + 20 0.000802 + 21 0.0374 + 22 0.00297 + 23 8.02e-05 + 24 0.00513 + 26 0.0612 + 28 0.000641 + 29 0.00224 + 30 0.00313 + 31 0.00104 + 32 0.000321 + 33 0.00128 + 34 0.000481 + 35 0.000321 + 37 0.00529 + 39 0.0016 + 40 0.389 + 41 0.134 + 42 0.0119 + 43 0.0012 + 44 0.000721 + 45 0.00136 + 46 0.00361 + 47 0.00112 + + 29 8581 37 0 + 0 0.00373 + 2 0.0332 + 3 0.00629 + 4 0.0124 + 5 0.000233 + 7 0.253 + 8 0.0107 + 9 0.000699 + 10 0.000117 + 12 0.00105 + 13 0.00594 + 14 0.000583 + 15 0.00886 + 19 0.00408 + 21 0.0198 + 22 0.00431 + 24 0.00408 + 26 0.19 + 28 0.000583 + 29 0.0021 + 30 0.00501 + 31 0.00163 + 32 0.000233 + 33 0.000233 + 34 0.000117 + 35 0.000117 + 37 0.00373 + 38 0.000117 + 39 0.0021 + 40 0.295 + 41 0.117 + 42 0.00979 + 43 0.000932 + 44 0.000233 + 45 0.00128 + 46 0.000583 + 47 0.000699 + + 30 6281 37 0 + 0 0.0275 + 2 0.0393 + 3 0.00271 + 4 0.0146 + 6 0.000159 + 7 0.217 + 8 0.00494 + 9 0.000478 + 12 0.0126 + 13 0.0035 + 14 0.000955 + 15 0.00191 + 17 0.000318 + 19 0.00127 + 20 0.000318 + 21 0.0318 + 22 0.00223 + 24 0.0043 + 26 0.0715 + 28 0.000159 + 29 0.00462 + 30 0.00239 + 31 0.00127 + 32 0.00223 + 33 0.00478 + 34 0.000955 + 35 0.000159 + 37 0.00478 + 39 0.000159 + 40 0.367 + 41 0.154 + 42 0.0135 + 43 0.000955 + 44 0.00127 + 45 0.00191 + 46 0.00191 + 47 0.000478 + + 31 2695 36 0 + 0 0.00631 + 2 0.0445 + 3 0.00223 + 4 0.0137 + 6 0.000371 + 7 0.277 + 8 0.00334 + 12 0.00186 + 13 0.00445 + 14 0.00148 + 15 0.000742 + 19 0.00148 + 20 0.000371 + 21 0.0249 + 22 0.00223 + 24 0.00223 + 25 0.000371 + 26 0.0716 + 28 0.000742 + 29 0.00519 + 30 0.00334 + 31 0.000742 + 32 0.000742 + 33 0.000371 + 34 0.000371 + 35 0.000371 + 37 0.00297 + 39 0.000742 + 40 0.35 + 41 0.157 + 42 0.0122 + 43 0.00223 + 44 0.000742 + 45 0.00148 + 46 0.00148 + 47 0.000742 + + 32 1863 32 0 + 0 0.00966 + 2 0.0446 + 3 0.00215 + 4 0.0193 + 5 0.000537 + 7 0.188 + 8 0.00376 + 9 0.00161 + 10 0.000537 + 12 0.00429 + 13 0.00429 + 15 0.00107 + 17 0.00107 + 19 0.000537 + 21 0.0327 + 22 0.00376 + 24 0.0059 + 26 0.0505 + 28 0.00107 + 29 0.00107 + 30 0.00322 + 32 0.00322 + 37 0.00751 + 39 0.000537 + 40 0.429 + 41 0.144 + 42 0.0247 + 43 0.000537 + 44 0.00161 + 45 0.00161 + 46 0.00215 + 47 0.00429 + + 33 3326 33 0 + 0 0.00301 + 2 0.0427 + 3 0.0018 + 4 0.018 + 7 0.196 + 8 0.00331 + 9 0.0012 + 12 0.0018 + 13 0.00481 + 14 0.000601 + 15 0.0012 + 19 0.000902 + 20 0.000301 + 21 0.0216 + 22 0.0021 + 23 0.000301 + 24 0.00541 + 26 0.0496 + 29 0.0015 + 30 0.0021 + 31 0.000601 + 33 0.000902 + 34 0.000301 + 37 0.00241 + 39 0.000902 + 40 0.442 + 41 0.164 + 42 0.0213 + 43 0.0015 + 44 0.0012 + 45 0.0012 + 46 0.0012 + 47 0.00361 + + 41 223 9 0 + 0 0.00448 + 2 0.00448 + 3 0.00448 + 30 0.00448 + 40 0.807 + 41 0.139 + 42 0.0269 + 43 0.00448 + 46 0.00448 + + 42 82 6 0 + 7 0.0122 + 13 0.0122 + 40 0.939 + 41 0.0122 + 42 0.0122 + 46 0.0122 + + 44 13 2 0 + 40 0.0769 + 43 0.923 + + 45 212 7 0 + 7 0.0425 + 21 0.00472 + 26 0.00943 + 40 0.448 + 41 0.241 + 42 0.0142 + 46 0.241 + + 46 73 8 0 + 0 0.0274 + 2 0.0137 + 7 0.247 + 21 0.0274 + 37 0.0137 + 40 0.479 + 41 0.178 + 42 0.0137 + + 47 75 7 0 + 7 0.693 + 26 0.213 + 31 0.0133 + 40 0.0267 + 41 0.0267 + 42 0.0133 + 46 0.0133 + + 48 97 10 0 + 0 0.0206 + 2 0.0825 + 4 0.0103 + 7 0.134 + 12 0.0103 + 26 0.0619 + 37 0.0103 + 40 0.433 + 41 0.206 + 42 0.0309 + + 49 604 21 0 + 0 0.00331 + 2 0.0348 + 3 0.00166 + 4 0.00828 + 7 0.118 + 8 0.00331 + 13 0.00331 + 21 0.00993 + 26 0.0281 + 29 0.00166 + 33 0.00166 + 34 0.00331 + 35 0.00166 + 37 0.00166 + 40 0.518 + 41 0.214 + 42 0.0315 + 43 0.00331 + 44 0.00166 + 46 0.00497 + 47 0.00662 + + 55 1276 24 0 + 0 0.00549 + 1 0.000784 + 2 0.0353 + 3 0.000784 + 4 0.00392 + 7 0.143 + 8 0.00157 + 12 0.000784 + 13 0.000784 + 21 0.00862 + 26 0.0533 + 28 0.000784 + 29 0.00313 + 30 0.00784 + 31 0.00157 + 32 0.00157 + 34 0.00235 + 37 0.00705 + 40 0.472 + 41 0.226 + 42 0.0188 + 43 0.000784 + 46 0.00157 + 47 0.00235 + + 57 656 22 0 + 0 0.0107 + 2 0.0366 + 4 0.00457 + 7 0.145 + 8 0.00152 + 12 0.00305 + 14 0.00152 + 15 0.00152 + 19 0.00152 + 26 0.0244 + 29 0.00152 + 30 0.00457 + 31 0.00152 + 32 0.00152 + 33 0.00152 + 34 0.00152 + 37 0.0061 + 40 0.486 + 41 0.248 + 42 0.0122 + 43 0.00152 + 44 0.00305 + + 58 23 4 0 + 7 0.087 + 29 0.0435 + 40 0.696 + 41 0.174 + + 59 1272 26 0 + 0 0.0118 + 2 0.0645 + 3 0.000786 + 4 0.0055 + 5 0.000786 + 7 0.21 + 8 0.0055 + 12 0.00629 + 13 0.00314 + 14 0.000786 + 15 0.000786 + 19 0.000786 + 21 0.0204 + 22 0.00157 + 26 0.0558 + 29 0.00314 + 30 0.00393 + 33 0.000786 + 37 0.00472 + 40 0.411 + 41 0.166 + 42 0.0118 + 44 0.00236 + 45 0.00157 + 46 0.00472 + 47 0.00157 + + 62 57 9 0 + 0 0.0351 + 4 0.0175 + 7 0.175 + 21 0.0175 + 31 0.0175 + 37 0.0175 + 40 0.368 + 41 0.316 + 42 0.0351 + + 69 56 6 0 + 2 0.0536 + 7 0.179 + 26 0.0536 + 40 0.5 + 41 0.196 + 44 0.0179 + + 74 2 2 0 + 31 0.5 + 40 0.5 + + 57 37637 38 30 + 0 0.0109 + 2 0.0336 + 3 0.00109 + 4 0.00717 + 5 5.31e-05 + 7 0.128 + 8 0.00438 + 9 2.66e-05 + 10 0.000106 + 12 0.00476 + 13 0.00404 + 14 0.000372 + 15 0.00215 + 17 2.66e-05 + 19 0.000797 + 20 0.000239 + 21 0.0102 + 22 0.000771 + 23 5.31e-05 + 26 0.0253 + 28 0.000345 + 29 0.00361 + 30 0.00321 + 31 0.00138 + 32 0.00149 + 33 0.00159 + 34 0.000824 + 35 0.000159 + 37 0.00343 + 39 7.97e-05 + 40 0.523 + 41 0.199 + 42 0.0209 + 43 0.00186 + 44 0.00104 + 45 0.000824 + 46 0.00178 + 47 0.00133 + + 0 1140 30 0 + 0 0.0105 + 2 0.0184 + 3 0.00175 + 4 0.0123 + 7 0.113 + 8 0.0114 + 10 0.000877 + 12 0.00351 + 13 0.00614 + 15 0.00175 + 19 0.00175 + 21 0.0281 + 22 0.000877 + 26 0.0211 + 28 0.000877 + 29 0.00175 + 30 0.00439 + 31 0.0123 + 32 0.00175 + 33 0.00351 + 34 0.000877 + 35 0.00175 + 37 0.00614 + 39 0.000877 + 40 0.482 + 41 0.218 + 42 0.0281 + 44 0.00351 + 45 0.00175 + 46 0.000877 + + 8 57 8 0 + 0 0.0175 + 2 0.0702 + 7 0.123 + 29 0.0175 + 37 0.0351 + 40 0.491 + 41 0.228 + 42 0.0175 + + 12 9 4 0 + 0 0.111 + 28 0.333 + 31 0.222 + 40 0.333 + + 13 73 10 0 + 0 0.0137 + 2 0.0548 + 7 0.164 + 8 0.0137 + 26 0.0274 + 29 0.0137 + 33 0.0274 + 40 0.534 + 41 0.137 + 42 0.0137 + + 14 26 7 0 + 0 0.0385 + 2 0.0385 + 7 0.192 + 8 0.0385 + 40 0.5 + 41 0.154 + 42 0.0385 + + 15 6 4 0 + 2 0.167 + 7 0.167 + 40 0.5 + 46 0.167 + + 21 68 10 0 + 0 0.0147 + 4 0.0147 + 7 0.0735 + 21 0.0735 + 28 0.0441 + 32 0.0147 + 40 0.471 + 41 0.221 + 42 0.0588 + 46 0.0147 + + 28 2496 32 0 + 0 0.012 + 2 0.0341 + 3 0.0028 + 4 0.018 + 7 0.156 + 8 0.00401 + 10 0.000401 + 12 0.00361 + 13 0.00561 + 14 0.0016 + 15 0.0028 + 19 0.000801 + 20 0.0016 + 21 0.0148 + 26 0.0268 + 29 0.002 + 30 0.002 + 31 0.000401 + 32 0.0016 + 33 0.0012 + 34 0.000401 + 35 0.000401 + 37 0.00801 + 39 0.000401 + 40 0.508 + 41 0.163 + 42 0.018 + 43 0.000801 + 44 0.0016 + 45 0.002 + 46 0.002 + 47 0.002 + + 29 2493 30 0 + 0 0.00682 + 2 0.0253 + 3 0.00201 + 4 0.014 + 7 0.271 + 8 0.0132 + 10 0.000401 + 12 0.00281 + 13 0.01 + 14 0.0012 + 15 0.00722 + 19 0.00361 + 21 0.016 + 22 0.000802 + 23 0.000401 + 26 0.0401 + 29 0.00321 + 30 0.00361 + 31 0.000401 + 32 0.0012 + 34 0.000401 + 37 0.00441 + 39 0.000401 + 40 0.361 + 41 0.192 + 42 0.0136 + 43 0.000802 + 44 0.0012 + 45 0.0012 + 46 0.0016 + + 30 1791 27 0 + 0 0.029 + 2 0.0374 + 3 0.00112 + 4 0.0207 + 7 0.13 + 8 0.00503 + 12 0.014 + 13 0.00838 + 15 0.00391 + 19 0.00168 + 20 0.000558 + 21 0.0151 + 22 0.00279 + 26 0.0352 + 28 0.000558 + 29 0.00335 + 30 0.00391 + 31 0.00168 + 32 0.00447 + 33 0.00558 + 37 0.00112 + 40 0.419 + 41 0.229 + 42 0.0218 + 44 0.00112 + 46 0.00168 + 47 0.00168 + + 31 7097 32 0 + 0 0.0194 + 2 0.0327 + 3 0.000986 + 4 0.00592 + 7 0.131 + 8 0.00535 + 10 0.000141 + 12 0.0069 + 13 0.0038 + 14 0.000564 + 15 0.00268 + 19 0.000423 + 21 0.00972 + 22 0.00127 + 26 0.034 + 28 0.000423 + 29 0.00986 + 30 0.00211 + 31 0.00211 + 32 0.00352 + 33 0.00352 + 34 0.00141 + 35 0.000282 + 37 0.00211 + 40 0.477 + 41 0.215 + 42 0.0201 + 43 0.00366 + 44 0.00113 + 45 0.000705 + 46 0.00155 + 47 0.00127 + + 32 565 24 0 + 0 0.0159 + 2 0.0425 + 3 0.00177 + 4 0.0106 + 7 0.113 + 8 0.00354 + 12 0.0124 + 13 0.00177 + 14 0.00177 + 15 0.00177 + 19 0.00354 + 21 0.0283 + 23 0.00177 + 26 0.023 + 29 0.00531 + 30 0.00354 + 31 0.00177 + 32 0.00177 + 37 0.00708 + 40 0.487 + 41 0.196 + 42 0.0301 + 43 0.00354 + 46 0.00177 + + 33 905 26 0 + 0 0.00663 + 2 0.0365 + 4 0.0133 + 5 0.0011 + 7 0.105 + 8 0.0011 + 9 0.0011 + 12 0.00552 + 13 0.00442 + 14 0.0011 + 15 0.00221 + 19 0.0011 + 20 0.0011 + 21 0.00884 + 26 0.0177 + 29 0.00221 + 30 0.00442 + 31 0.00331 + 37 0.00552 + 40 0.543 + 41 0.19 + 42 0.032 + 43 0.00331 + 44 0.00221 + 46 0.00331 + 47 0.00442 + + 41 1622 14 0 + 2 0.00185 + 7 0.0333 + 8 0.00123 + 13 0.00185 + 15 0.000617 + 19 0.000617 + 21 0.00185 + 26 0.00308 + 40 0.763 + 41 0.179 + 42 0.00863 + 43 0.000617 + 44 0.000617 + 47 0.00308 + + 42 61 6 0 + 4 0.0328 + 21 0.0164 + 40 0.721 + 41 0.082 + 42 0.131 + 46 0.0164 + + 43 6 4 0 + 0 0.167 + 40 0.5 + 41 0.167 + 42 0.167 + + 44 8 1 0 + 43 1 + + 45 65 9 0 + 7 0.0769 + 21 0.0154 + 26 0.0308 + 29 0.0154 + 31 0.0154 + 40 0.569 + 41 0.154 + 42 0.0154 + 46 0.108 + + 46 184 13 0 + 2 0.038 + 4 0.0109 + 7 0.0435 + 13 0.00543 + 21 0.00543 + 26 0.00543 + 30 0.00543 + 33 0.00543 + 40 0.543 + 41 0.304 + 42 0.0109 + 44 0.00543 + 45 0.0163 + + 47 27 4 0 + 0 0.037 + 40 0.815 + 41 0.111 + 42 0.037 + + 48 712 17 0 + 0 0.0014 + 2 0.0435 + 4 0.00281 + 7 0.0955 + 12 0.00421 + 13 0.00281 + 21 0.00843 + 26 0.00983 + 30 0.0014 + 31 0.00281 + 37 0.0014 + 40 0.552 + 41 0.256 + 42 0.0126 + 44 0.0014 + 46 0.00281 + 47 0.0014 + + 49 1600 26 0 + 0 0.00938 + 2 0.0425 + 4 0.00313 + 5 0.000625 + 7 0.109 + 8 0.00187 + 12 0.0025 + 13 0.005 + 15 0.00187 + 20 0.000625 + 21 0.01 + 26 0.0244 + 29 0.000625 + 30 0.0025 + 31 0.000625 + 32 0.000625 + 33 0.00125 + 37 0.00438 + 40 0.514 + 41 0.233 + 42 0.0269 + 43 0.00125 + 44 0.000625 + 45 0.000625 + 46 0.00187 + 47 0.00125 + + 55 11225 30 0 + 0 0.00775 + 2 0.0394 + 3 0.00098 + 4 0.00383 + 7 0.139 + 8 0.00276 + 12 0.00454 + 13 0.00249 + 15 0.00107 + 19 0.000356 + 21 0.00775 + 22 0.000713 + 26 0.0247 + 28 0.000178 + 29 0.00205 + 30 0.0049 + 31 0.000356 + 32 0.000535 + 33 0.000802 + 34 0.00125 + 35 8.91e-05 + 37 0.00365 + 40 0.533 + 41 0.192 + 42 0.0211 + 43 0.00125 + 44 0.000624 + 45 0.000713 + 46 0.00151 + 47 0.00134 + + 57 4244 30 0 + 0 0.00683 + 2 0.028 + 3 0.000943 + 4 0.00259 + 7 0.0738 + 8 0.00448 + 12 0.00212 + 13 0.00259 + 14 0.000236 + 15 0.00212 + 19 0.000707 + 20 0.000236 + 21 0.00448 + 22 0.000943 + 26 0.0179 + 29 0.00283 + 30 0.00259 + 31 0.000707 + 32 0.00118 + 33 0.000236 + 34 0.000943 + 37 0.00283 + 40 0.621 + 41 0.192 + 42 0.0229 + 43 0.00189 + 44 0.000707 + 45 0.000236 + 46 0.000943 + 47 0.00141 + + 58 46 6 0 + 2 0.0652 + 7 0.0217 + 40 0.804 + 41 0.0435 + 42 0.0435 + 44 0.0217 + + 59 626 24 0 + 0 0.00479 + 2 0.0399 + 3 0.00319 + 4 0.0208 + 7 0.128 + 8 0.00319 + 12 0.00799 + 13 0.00479 + 17 0.0016 + 20 0.0016 + 21 0.024 + 26 0.0272 + 29 0.0016 + 30 0.00319 + 31 0.0016 + 33 0.00319 + 37 0.0016 + 40 0.494 + 41 0.193 + 42 0.024 + 43 0.0016 + 44 0.0016 + 45 0.00479 + 46 0.00319 + + 62 377 12 0 + 0 0.00265 + 2 0.0796 + 7 0.0531 + 12 0.00265 + 13 0.00796 + 21 0.00265 + 26 0.00531 + 33 0.00265 + 40 0.637 + 41 0.191 + 42 0.0133 + 46 0.00265 + + 64 28 5 0 + 0 0.0357 + 26 0.0357 + 40 0.714 + 41 0.143 + 42 0.0714 + + 67 1 1 0 + 43 1 + + 69 45 7 0 + 0 0.0222 + 2 0.0222 + 26 0.0222 + 37 0.0222 + 40 0.756 + 41 0.0889 + 42 0.0667 + + 58 317 27 20 + 0 0.0252 + 1 0.00315 + 2 0.0631 + 4 0.0599 + 7 0.271 + 8 0.0126 + 9 0.00315 + 12 0.0126 + 13 0.0158 + 15 0.0158 + 19 0.0158 + 20 0.00631 + 21 0.041 + 26 0.0315 + 28 0.0315 + 29 0.0126 + 30 0.0284 + 31 0.0158 + 32 0.00315 + 33 0.00315 + 35 0.00315 + 37 0.0126 + 40 0.202 + 41 0.0631 + 42 0.00631 + 45 0.0379 + 47 0.00315 + + 0 16 10 0 + 0 0.0625 + 1 0.0625 + 4 0.188 + 7 0.0625 + 9 0.0625 + 13 0.0625 + 29 0.0625 + 31 0.0625 + 40 0.25 + 45 0.125 + + 2 10 7 0 + 0 0.2 + 21 0.1 + 28 0.3 + 29 0.1 + 30 0.1 + 32 0.1 + 45 0.1 + + 12 3 1 0 + 28 1 + + 13 3 3 0 + 7 0.333 + 8 0.333 + 45 0.333 + + 21 3 3 0 + 4 0.333 + 21 0.333 + 28 0.333 + + 28 13 7 0 + 0 0.0769 + 2 0.0769 + 4 0.308 + 7 0.231 + 13 0.154 + 21 0.0769 + 40 0.0769 + + 29 9 4 0 + 0 0.111 + 4 0.111 + 7 0.556 + 26 0.222 + + 30 3 2 0 + 4 0.667 + 40 0.333 + + 31 18 8 0 + 7 0.556 + 15 0.0556 + 20 0.0556 + 21 0.0556 + 30 0.0556 + 37 0.0556 + 40 0.0556 + 41 0.111 + + 32 9 6 0 + 2 0.111 + 4 0.222 + 7 0.222 + 8 0.111 + 21 0.222 + 45 0.111 + + 33 9 7 0 + 4 0.111 + 7 0.333 + 8 0.111 + 13 0.111 + 26 0.111 + 30 0.111 + 40 0.111 + + 41 15 3 0 + 40 0.733 + 41 0.133 + 42 0.133 + + 46 7 4 0 + 2 0.143 + 35 0.143 + 40 0.571 + 41 0.143 + + 48 19 8 0 + 2 0.0526 + 4 0.0526 + 7 0.263 + 12 0.158 + 37 0.0526 + 40 0.211 + 41 0.158 + 45 0.0526 + + 49 14 8 0 + 2 0.0714 + 7 0.357 + 12 0.0714 + 28 0.0714 + 37 0.0714 + 40 0.214 + 41 0.0714 + 45 0.0714 + + 55 63 13 0 + 0 0.0317 + 2 0.0794 + 4 0.0159 + 7 0.365 + 19 0.0159 + 21 0.0317 + 26 0.0794 + 30 0.0317 + 31 0.0159 + 40 0.19 + 41 0.0794 + 45 0.0476 + 47 0.0159 + + 57 50 12 0 + 2 0.08 + 4 0.02 + 7 0.3 + 15 0.02 + 19 0.06 + 29 0.02 + 30 0.06 + 31 0.06 + 37 0.02 + 40 0.26 + 41 0.08 + 45 0.02 + + 62 11 6 0 + 7 0.455 + 15 0.0909 + 21 0.182 + 26 0.0909 + 40 0.0909 + 45 0.0909 + + 64 4 3 0 + 30 0.25 + 40 0.5 + 41 0.25 + + 69 30 16 0 + 0 0.0333 + 2 0.2 + 4 0.0333 + 7 0.167 + 8 0.0333 + 13 0.0333 + 15 0.0667 + 19 0.0333 + 20 0.0333 + 21 0.0667 + 26 0.0333 + 28 0.0333 + 29 0.0333 + 33 0.0333 + 40 0.133 + 41 0.0333 + + 59 2627 34 12 + 0 0.00152 + 1 0.00114 + 2 0.0152 + 3 0.0175 + 4 0.212 + 7 0.239 + 8 0.0499 + 9 0.00495 + 10 0.00266 + 12 0.000381 + 13 0.0495 + 14 0.0461 + 15 0.0236 + 17 0.00114 + 19 0.000761 + 20 0.0529 + 21 0.0487 + 22 0.00457 + 24 0.00114 + 26 0.0457 + 30 0.0164 + 31 0.0019 + 35 0.00533 + 37 0.00495 + 38 0.000761 + 39 0.00876 + 40 0.0761 + 41 0.0502 + 42 0.00571 + 43 0.000761 + 44 0.000381 + 45 0.00457 + 46 0.00533 + 47 0.000381 + + 0 6 5 0 + 4 0.167 + 7 0.333 + 9 0.167 + 21 0.167 + 26 0.167 + + 8 2 2 0 + 13 0.5 + 26 0.5 + + 13 19 8 0 + 4 0.263 + 7 0.0526 + 8 0.0526 + 13 0.158 + 14 0.211 + 20 0.158 + 21 0.0526 + 40 0.0526 + + 14 7 6 0 + 4 0.286 + 7 0.143 + 8 0.143 + 13 0.143 + 14 0.143 + 20 0.143 + + 15 2 2 0 + 4 0.5 + 47 0.5 + + 28 861 27 0 + 1 0.00232 + 2 0.0105 + 3 0.0186 + 4 0.28 + 7 0.163 + 8 0.065 + 9 0.00581 + 10 0.00348 + 13 0.0674 + 14 0.0569 + 15 0.0267 + 17 0.00232 + 20 0.0767 + 21 0.0465 + 22 0.00116 + 24 0.00116 + 26 0.0279 + 30 0.0267 + 31 0.00116 + 35 0.0105 + 37 0.00813 + 38 0.00116 + 39 0.0105 + 40 0.0511 + 41 0.0267 + 45 0.00581 + 46 0.00348 + + 29 473 25 0 + 0 0.00634 + 2 0.0127 + 3 0.0381 + 4 0.22 + 7 0.271 + 8 0.0338 + 10 0.00211 + 13 0.0359 + 14 0.0486 + 15 0.0296 + 19 0.00423 + 20 0.0507 + 21 0.0381 + 22 0.00634 + 24 0.00211 + 26 0.0592 + 30 0.0148 + 31 0.00211 + 35 0.00211 + 39 0.0169 + 40 0.0592 + 41 0.0359 + 42 0.00423 + 45 0.00423 + 46 0.00211 + + 30 399 24 0 + 2 0.0125 + 3 0.01 + 4 0.236 + 7 0.188 + 8 0.0852 + 9 0.00752 + 10 0.00251 + 13 0.0677 + 14 0.0727 + 15 0.0276 + 20 0.0501 + 21 0.0351 + 22 0.00752 + 26 0.0376 + 30 0.015 + 31 0.00501 + 35 0.00752 + 37 0.00501 + 39 0.00752 + 40 0.0652 + 41 0.0376 + 42 0.01 + 45 0.00251 + 46 0.00501 + + 31 440 26 0 + 0 0.00227 + 2 0.0159 + 3 0.00455 + 4 0.132 + 7 0.398 + 8 0.0205 + 9 0.00682 + 12 0.00227 + 13 0.0341 + 14 0.0136 + 15 0.0227 + 17 0.00227 + 20 0.0318 + 21 0.0591 + 22 0.00682 + 26 0.0545 + 30 0.00227 + 31 0.00227 + 37 0.00227 + 39 0.00682 + 40 0.107 + 41 0.0477 + 42 0.00682 + 43 0.00227 + 45 0.00682 + 46 0.00909 + + 32 110 19 0 + 2 0.0273 + 3 0.0364 + 4 0.164 + 7 0.2 + 8 0.0818 + 9 0.00909 + 10 0.00909 + 13 0.0545 + 14 0.0545 + 15 0.0273 + 20 0.0364 + 21 0.0818 + 22 0.00909 + 26 0.00909 + 30 0.0364 + 38 0.00909 + 40 0.0636 + 41 0.0818 + 46 0.00909 + + 33 146 20 0 + 1 0.00685 + 2 0.00685 + 3 0.0137 + 4 0.199 + 7 0.24 + 8 0.0342 + 10 0.00685 + 13 0.0137 + 14 0.0205 + 15 0.00685 + 20 0.0479 + 21 0.0753 + 26 0.089 + 35 0.00685 + 37 0.00685 + 40 0.089 + 41 0.103 + 42 0.0205 + 45 0.00685 + 46 0.00685 + + 55 159 15 0 + 2 0.0566 + 4 0.0252 + 7 0.289 + 21 0.0503 + 22 0.00629 + 24 0.00629 + 26 0.0818 + 30 0.0126 + 37 0.0126 + 40 0.214 + 41 0.201 + 42 0.0189 + 43 0.00629 + 44 0.00629 + 46 0.0126 + + 62 13537 29 20 + 0 0.00731 + 2 0.0228 + 3 0.000443 + 4 0.0017 + 7 0.044 + 8 0.00185 + 12 0.00362 + 13 0.000517 + 14 0.000369 + 15 0.000813 + 19 0.000591 + 21 0.00451 + 22 0.000295 + 26 0.00399 + 29 0.00118 + 30 0.000886 + 31 0.000369 + 32 0.000739 + 33 0.00111 + 34 0.000369 + 37 0.00207 + 40 0.699 + 41 0.177 + 42 0.0179 + 43 0.000517 + 44 0.000739 + 45 0.000369 + 46 0.0031 + 47 0.00244 + + 0 792 16 0 + 0 0.00758 + 2 0.0177 + 4 0.00379 + 7 0.0366 + 8 0.00253 + 13 0.00126 + 19 0.00126 + 21 0.0114 + 26 0.0265 + 33 0.00253 + 37 0.00253 + 40 0.652 + 41 0.206 + 42 0.0215 + 46 0.00379 + 47 0.00379 + + 1 31 8 0 + 0 0.0645 + 2 0.0323 + 7 0.0645 + 12 0.0968 + 37 0.0323 + 40 0.419 + 41 0.258 + 42 0.0323 + + 12 37 3 0 + 40 0.784 + 41 0.189 + 46 0.027 + + 14 26 3 0 + 2 0.0769 + 40 0.885 + 46 0.0385 + + 28 1599 24 0 + 0 0.0075 + 2 0.0275 + 4 0.0025 + 7 0.0619 + 8 0.00375 + 12 0.00313 + 14 0.00125 + 15 0.00188 + 19 0.00125 + 21 0.00813 + 26 0.00375 + 29 0.00125 + 30 0.000625 + 31 0.000625 + 32 0.00125 + 33 0.0025 + 37 0.005 + 40 0.634 + 41 0.204 + 42 0.0219 + 43 0.00125 + 44 0.00125 + 46 0.00375 + 47 0.000625 + + 29 1679 23 0 + 0 0.00596 + 2 0.0381 + 3 0.00179 + 4 0.00357 + 7 0.0643 + 8 0.00596 + 12 0.00119 + 14 0.000596 + 15 0.00357 + 21 0.00357 + 22 0.00119 + 26 0.00238 + 29 0.00179 + 30 0.00179 + 31 0.000596 + 32 0.000596 + 37 0.00238 + 40 0.671 + 41 0.172 + 42 0.0125 + 44 0.000596 + 46 0.00238 + 47 0.00238 + + 30 1088 23 0 + 0 0.0165 + 2 0.0239 + 3 0.000919 + 4 0.00368 + 7 0.0469 + 8 0.000919 + 12 0.011 + 13 0.000919 + 14 0.000919 + 19 0.000919 + 21 0.00368 + 22 0.000919 + 26 0.00276 + 29 0.0046 + 30 0.000919 + 32 0.000919 + 33 0.00184 + 40 0.626 + 41 0.226 + 42 0.0184 + 45 0.00276 + 46 0.00368 + 47 0.000919 + + 31 2064 26 0 + 0 0.00678 + 2 0.0252 + 3 0.000484 + 4 0.000969 + 7 0.0766 + 8 0.000969 + 12 0.00436 + 14 0.000484 + 15 0.000484 + 19 0.000484 + 21 0.00775 + 22 0.000484 + 26 0.00388 + 29 0.00145 + 30 0.00242 + 31 0.000484 + 32 0.00194 + 33 0.00145 + 34 0.00194 + 37 0.00242 + 40 0.636 + 41 0.195 + 42 0.0233 + 43 0.00145 + 46 0.00145 + 47 0.00194 + + 32 768 19 0 + 0 0.0143 + 2 0.0273 + 4 0.0013 + 7 0.0352 + 12 0.00391 + 13 0.0026 + 19 0.0013 + 21 0.00781 + 26 0.00391 + 29 0.0026 + 30 0.0013 + 32 0.0013 + 34 0.0013 + 40 0.647 + 41 0.224 + 42 0.0156 + 44 0.0026 + 46 0.00391 + 47 0.0026 + + 33 1187 17 0 + 0 0.00758 + 2 0.027 + 7 0.0278 + 12 0.00421 + 13 0.000842 + 19 0.000842 + 21 0.00253 + 26 0.00505 + 30 0.000842 + 33 0.00168 + 37 0.00337 + 40 0.732 + 41 0.152 + 42 0.0236 + 44 0.00168 + 46 0.00337 + 47 0.00505 + + 41 1264 6 0 + 7 0.00158 + 40 0.902 + 41 0.087 + 42 0.00791 + 44 0.000791 + 46 0.000791 + + 42 63 5 0 + 7 0.0159 + 40 0.889 + 41 0.0635 + 42 0.0159 + 46 0.0159 + + 45 324 6 0 + 21 0.00309 + 40 0.873 + 41 0.0741 + 42 0.0216 + 46 0.0216 + 47 0.00617 + + 48 188 11 0 + 2 0.00532 + 4 0.00532 + 7 0.0851 + 21 0.00532 + 26 0.00532 + 31 0.00532 + 37 0.0106 + 40 0.574 + 41 0.293 + 42 0.00532 + 46 0.00532 + + 49 234 8 0 + 0 0.00427 + 2 0.0256 + 7 0.0342 + 12 0.00427 + 40 0.701 + 41 0.192 + 42 0.0342 + 46 0.00427 + + 55 1193 18 0 + 0 0.00922 + 2 0.0277 + 3 0.000838 + 4 0.000838 + 7 0.0285 + 8 0.00168 + 12 0.00503 + 26 0.000838 + 33 0.00168 + 37 0.000838 + 40 0.733 + 41 0.163 + 42 0.0142 + 43 0.00168 + 44 0.00168 + 45 0.000838 + 46 0.00168 + 47 0.00587 + + 57 699 16 0 + 0 0.00572 + 2 0.01 + 4 0.00143 + 7 0.0243 + 8 0.00286 + 12 0.00143 + 13 0.00286 + 15 0.00143 + 21 0.00286 + 29 0.00143 + 31 0.00143 + 32 0.00143 + 40 0.758 + 41 0.162 + 42 0.02 + 47 0.00286 + + 58 17 1 0 + 40 1 + + 59 102 11 0 + 0 0.0098 + 2 0.0196 + 7 0.049 + 12 0.0098 + 19 0.0098 + 26 0.0098 + 37 0.0098 + 40 0.667 + 41 0.196 + 42 0.0098 + 47 0.0098 + + 62 50 4 0 + 2 0.06 + 40 0.76 + 41 0.16 + 45 0.02 + + 64 13660 26 19 + 0 0.00234 + 2 0.0104 + 4 0.00022 + 5 7.32e-05 + 7 0.00425 + 8 0.000146 + 12 0.00102 + 13 0.000293 + 15 7.32e-05 + 19 0.000366 + 21 0.000659 + 26 0.00022 + 29 0.000293 + 30 0.000146 + 31 7.32e-05 + 32 0.000146 + 33 0.00022 + 34 0.000146 + 37 0.000366 + 40 0.842 + 41 0.117 + 42 0.0141 + 43 0.0011 + 44 0.000439 + 46 0.00132 + 47 0.00271 + + 0 384 11 0 + 2 0.0026 + 7 0.00781 + 12 0.0026 + 15 0.0026 + 21 0.0026 + 40 0.76 + 41 0.206 + 42 0.00781 + 43 0.0026 + 46 0.0026 + 47 0.0026 + + 21 14 3 0 + 7 0.0714 + 40 0.571 + 41 0.357 + + 28 886 15 0 + 0 0.00903 + 2 0.0158 + 5 0.00113 + 7 0.0147 + 8 0.00113 + 12 0.00226 + 21 0.00339 + 33 0.00113 + 37 0.00226 + 40 0.699 + 41 0.218 + 42 0.0237 + 43 0.00113 + 46 0.00451 + 47 0.00339 + + 29 4524 17 0 + 0 0.00133 + 2 0.0124 + 4 0.000221 + 7 0.00133 + 8 0.000221 + 13 0.000442 + 19 0.000442 + 21 0.000442 + 29 0.000663 + 30 0.000221 + 37 0.000663 + 40 0.914 + 41 0.0573 + 42 0.00685 + 43 0.000442 + 46 0.000663 + 47 0.00287 + + 30 513 12 0 + 0 0.0039 + 2 0.0117 + 7 0.00975 + 12 0.0039 + 21 0.00195 + 30 0.00195 + 32 0.00195 + 40 0.768 + 41 0.183 + 42 0.00585 + 44 0.0039 + 46 0.0039 + + 31 497 12 0 + 2 0.0121 + 7 0.00402 + 12 0.00201 + 26 0.00201 + 29 0.00201 + 40 0.779 + 41 0.171 + 42 0.0181 + 43 0.00201 + 44 0.00201 + 46 0.00201 + 47 0.00402 + + 32 1197 13 0 + 0 0.00251 + 2 0.0109 + 7 0.00334 + 12 0.00167 + 13 0.000835 + 19 0.000835 + 21 0.000835 + 32 0.000835 + 34 0.000835 + 40 0.785 + 41 0.17 + 42 0.0209 + 47 0.00167 + + 33 1314 12 0 + 0 0.00381 + 2 0.0122 + 7 0.00228 + 19 0.000761 + 31 0.000761 + 40 0.867 + 41 0.0883 + 42 0.0183 + 43 0.000761 + 44 0.000761 + 46 0.00152 + 47 0.00381 + + 41 1017 7 0 + 7 0.000983 + 21 0.000983 + 40 0.887 + 41 0.0895 + 42 0.0167 + 43 0.00295 + 47 0.00197 + + 42 45 4 0 + 40 0.844 + 41 0.0444 + 42 0.0889 + 47 0.0222 + + 44 3 2 0 + 40 0.333 + 43 0.667 + + 48 353 6 0 + 2 0.00567 + 7 0.0085 + 40 0.822 + 41 0.159 + 42 0.00283 + 47 0.00283 + + 49 245 9 0 + 0 0.00408 + 2 0.0163 + 7 0.00408 + 19 0.00408 + 26 0.00408 + 33 0.00408 + 40 0.784 + 41 0.167 + 42 0.0122 + + 55 1264 13 0 + 0 0.00158 + 2 0.00791 + 4 0.00158 + 7 0.00949 + 12 0.00316 + 13 0.000791 + 26 0.000791 + 40 0.803 + 41 0.147 + 42 0.019 + 44 0.000791 + 46 0.00237 + 47 0.00237 + + 57 868 12 0 + 0 0.00346 + 2 0.0104 + 7 0.00346 + 12 0.0023 + 33 0.00115 + 34 0.00115 + 40 0.829 + 41 0.121 + 42 0.0219 + 43 0.0023 + 46 0.0023 + 47 0.00115 + + 58 60 3 0 + 40 0.95 + 41 0.0333 + 47 0.0167 + + 59 89 5 0 + 0 0.0112 + 2 0.0225 + 40 0.73 + 41 0.191 + 42 0.0449 + + 62 197 7 0 + 7 0.00508 + 40 0.827 + 41 0.142 + 42 0.0102 + 43 0.00508 + 44 0.00508 + 47 0.00508 + + 64 36 4 0 + 40 0.778 + 41 0.139 + 42 0.0556 + 43 0.0278 + + 65 23 3 0 + 40 0.565 + 46 0.261 + 47 0.174 + + 66 5 2 0 + 40 0.6 + 46 0.4 + + 67 16 5 0 + 7 0.0625 + 40 0.375 + 42 0.0625 + 46 0.375 + 47 0.125 + + 68 161 12 4 + 0 0.0124 + 2 0.00621 + 4 0.00621 + 7 0.00621 + 13 0.0124 + 21 0.00621 + 26 0.00621 + 31 0.00621 + 40 0.671 + 41 0.217 + 42 0.0435 + 46 0.00621 + + 4 1 1 0 + 13 1 + + 29 4 3 0 + 7 0.25 + 26 0.25 + 40 0.5 + + 55 15 4 0 + 21 0.0667 + 40 0.733 + 41 0.0667 + 42 0.133 + + 57 1 1 0 + 31 1 + + 69 48590 32 19 + 0 0.00926 + 2 0.0818 + 3 8.23e-05 + 4 0.00134 + 5 6.17e-05 + 7 0.0134 + 8 0.000535 + 12 0.00323 + 13 0.000288 + 14 0.000391 + 15 0.000412 + 19 0.000535 + 20 0.000185 + 21 0.00241 + 22 0.000144 + 26 0.00161 + 28 0.000144 + 29 0.00158 + 30 0.000391 + 31 0.000206 + 32 0.00072 + 33 0.00113 + 34 0.000144 + 37 0.000782 + 40 0.656 + 41 0.198 + 42 0.02 + 43 0.00111 + 44 0.000741 + 45 0.000226 + 46 0.0022 + 47 0.00142 + + 0 14471 30 0 + 0 0.00947 + 2 0.0333 + 4 0.00104 + 5 6.91e-05 + 7 0.00442 + 8 6.91e-05 + 12 0.00228 + 13 0.000138 + 14 0.000346 + 15 0.000276 + 19 0.000691 + 20 6.91e-05 + 21 0.000829 + 22 6.91e-05 + 26 0.00076 + 28 0.000138 + 29 0.00131 + 30 0.000207 + 31 6.91e-05 + 32 0.00111 + 33 0.000967 + 37 0.000276 + 40 0.728 + 41 0.189 + 42 0.0207 + 43 0.00159 + 44 0.000622 + 45 6.91e-05 + 46 0.00111 + 47 0.00117 + + 1 372 15 0 + 0 0.0188 + 2 0.0457 + 7 0.00538 + 12 0.00538 + 15 0.00269 + 21 0.00538 + 26 0.00538 + 31 0.00269 + 32 0.00538 + 37 0.00269 + 40 0.645 + 41 0.228 + 42 0.0161 + 43 0.00538 + 46 0.00538 + + 2 3353 26 0 + 0 0.00328 + 2 0.00746 + 3 0.000298 + 4 0.00537 + 7 0.0197 + 8 0.00298 + 12 0.000895 + 13 0.00119 + 14 0.00209 + 15 0.000596 + 19 0.000298 + 20 0.00179 + 21 0.00358 + 26 0.00388 + 28 0.000895 + 29 0.000298 + 31 0.000298 + 32 0.000298 + 37 0.000298 + 40 0.775 + 41 0.15 + 42 0.0155 + 43 0.000895 + 45 0.000298 + 46 0.00239 + 47 0.000298 + + 4 29 3 0 + 2 0.172 + 40 0.759 + 41 0.069 + + 12 7932 26 0 + 0 0.00693 + 2 0.0241 + 4 0.000504 + 5 0.000126 + 7 0.00403 + 8 0.000504 + 12 0.00277 + 13 0.000126 + 14 0.000378 + 15 0.000252 + 19 0.000252 + 21 0.00063 + 26 0.000378 + 29 0.00126 + 30 0.000252 + 31 0.000126 + 32 0.000504 + 33 0.00151 + 37 0.000126 + 40 0.759 + 41 0.175 + 42 0.0173 + 43 0.00113 + 44 0.000756 + 46 0.000756 + 47 0.00151 + + 15 2 1 0 + 46 1 + + 21 2998 22 0 + 0 0.006 + 2 0.0317 + 4 0.000667 + 7 0.004 + 12 0.00167 + 14 0.000667 + 15 0.000334 + 19 0.001 + 21 0.000334 + 26 0.000334 + 28 0.000334 + 29 0.001 + 32 0.000334 + 33 0.000334 + 37 0.000334 + 40 0.662 + 41 0.255 + 42 0.027 + 43 0.000667 + 45 0.000334 + 46 0.00367 + 47 0.002 + + 26 12919 31 0 + 0 0.016 + 2 0.0296 + 3 0.000232 + 4 0.0017 + 5 7.74e-05 + 7 0.0358 + 8 0.000774 + 12 0.00658 + 13 0.000464 + 14 0.000155 + 15 0.000697 + 19 0.000774 + 21 0.00441 + 22 0.000464 + 26 0.00348 + 28 7.74e-05 + 29 0.00333 + 30 0.000774 + 31 0.000464 + 32 0.000774 + 33 0.00217 + 34 0.00031 + 37 0.00224 + 40 0.666 + 41 0.197 + 42 0.0184 + 43 0.000697 + 44 0.000851 + 45 0.000542 + 46 0.00279 + 47 0.00224 + + 28 80 8 0 + 0 0.0125 + 2 0.0375 + 7 0.0125 + 8 0.0125 + 40 0.712 + 41 0.188 + 42 0.0125 + 46 0.0125 + + 29 67 6 0 + 2 0.0597 + 7 0.0149 + 26 0.0149 + 40 0.597 + 41 0.254 + 42 0.0597 + + 41 356 8 0 + 2 0.419 + 26 0.00281 + 37 0.00281 + 40 0.242 + 41 0.312 + 42 0.0169 + 46 0.00281 + 47 0.00281 + + 42 25 4 0 + 2 0.04 + 40 0.36 + 41 0.12 + 42 0.48 + + 44 2 2 0 + 40 0.5 + 43 0.5 + + 45 144 6 0 + 2 0.0625 + 40 0.618 + 41 0.215 + 42 0.0139 + 46 0.0833 + 47 0.00694 + + 47 3672 10 0 + 2 0.69 + 4 0.000545 + 7 0.000817 + 21 0.00735 + 30 0.00109 + 34 0.000545 + 41 0.27 + 42 0.0248 + 44 0.00218 + 46 0.00245 + + 49 1916 19 0 + 0 0.00678 + 2 0.0339 + 7 0.00365 + 12 0.00365 + 13 0.000522 + 15 0.000522 + 20 0.000522 + 21 0.000522 + 26 0.000522 + 29 0.000522 + 34 0.000522 + 40 0.724 + 41 0.196 + 42 0.0209 + 43 0.00261 + 44 0.00104 + 45 0.000522 + 46 0.00157 + 47 0.00104 + + 50 47 7 0 + 2 0.0426 + 4 0.0426 + 7 0.0213 + 20 0.0213 + 40 0.574 + 41 0.277 + 42 0.0213 + + 57 48 3 0 + 2 0.0208 + 40 0.875 + 41 0.104 + + 58 21 3 0 + 32 0.0476 + 40 0.857 + 41 0.0952 + + 74 23 8 1 + 4 0.0435 + 7 0.13 + 8 0.0435 + 26 0.087 + 28 0.0435 + 40 0.261 + 41 0.0435 + 47 0.348 + + 29 5 4 0 + 4 0.2 + 8 0.2 + 26 0.2 + 40 0.4 + +70 183 17 7 + 0 0.0109 + 2 0.0109 + 4 0.164 + 6 0.00546 + 7 0.0109 + 8 0.317 + 9 0.0328 + 13 0.0874 + 14 0.109 + 15 0.0109 + 19 0.175 + 20 0.0109 + 21 0.0109 + 26 0.0109 + 41 0.0219 + 45 0.00546 + 46 0.00546 + + 8 58 11 0 + 2 0.0345 + 4 0.259 + 7 0.0345 + 8 0.0172 + 9 0.0517 + 13 0.121 + 14 0.172 + 15 0.0172 + 19 0.259 + 20 0.0172 + 41 0.0172 + + 21 2 2 0 + 0 0.5 + 8 0.5 + + 37 56 3 0 + 8 0.946 + 21 0.0357 + 45 0.0179 + + 45 1 1 0 + 6 1 + + 47 59 11 1 + 0 0.0169 + 4 0.254 + 8 0.0169 + 9 0.0508 + 13 0.136 + 14 0.169 + 15 0.0169 + 19 0.271 + 20 0.0169 + 26 0.0169 + 41 0.0339 + + 57 2 2 0 + 26 0.5 + 41 0.5 + + 48 1 1 0 + 46 1 + + 57 2 2 0 + 26 0.5 + 41 0.5 + +71 4205 34 8 + 0 0.0219 + 2 0.00166 + 3 0.00666 + 4 0.263 + 5 0.0109 + 7 0.00951 + 8 0.0533 + 9 0.00143 + 10 0.0019 + 12 0.0133 + 13 0.0604 + 14 0.0818 + 15 0.113 + 16 0.00143 + 17 0.0019 + 19 0.236 + 20 0.0276 + 21 0.0252 + 26 0.0285 + 28 0.000951 + 29 0.000951 + 30 0.0109 + 31 0.00856 + 32 0.000476 + 34 0.000476 + 35 0.000476 + 39 0.000476 + 40 0.00309 + 41 0.0109 + 43 0.000476 + 44 0.000476 + 45 0.00143 + 46 0.000238 + 47 0.000476 + + 7 30 7 0 + 4 0.3 + 8 0.0667 + 13 0.0333 + 14 0.0667 + 15 0.233 + 19 0.2 + 20 0.1 + + 8 23 7 0 + 4 0.217 + 8 0.087 + 13 0.348 + 14 0.13 + 15 0.13 + 19 0.0435 + 40 0.0435 + + 21 45 14 0 + 0 0.0667 + 2 0.0222 + 4 0.289 + 7 0.0222 + 8 0.0222 + 12 0.0222 + 13 0.0222 + 14 0.0444 + 15 0.133 + 19 0.222 + 20 0.0444 + 21 0.0222 + 28 0.0444 + 40 0.0222 + + 37 2029 31 3 + 0 0.0202 + 2 0.00148 + 3 0.0069 + 4 0.259 + 5 0.0113 + 7 0.00936 + 8 0.0591 + 9 0.00148 + 10 0.00197 + 12 0.0128 + 13 0.0586 + 14 0.0808 + 15 0.108 + 16 0.00148 + 17 0.00197 + 19 0.235 + 20 0.0261 + 21 0.036 + 26 0.0291 + 29 0.000986 + 30 0.0113 + 31 0.00887 + 32 0.000493 + 34 0.000493 + 35 0.000493 + 39 0.000493 + 40 0.00246 + 41 0.0113 + 43 0.000493 + 44 0.000493 + 45 0.00148 + + 2 6 2 0 + 4 0.833 + 26 0.167 + + 21 21 9 0 + 0 0.0476 + 4 0.19 + 8 0.19 + 13 0.0952 + 15 0.0476 + 19 0.238 + 20 0.0952 + 21 0.0476 + 31 0.0476 + + 49 6 3 0 + 4 0.167 + 5 0.333 + 19 0.5 + + 40 1 1 0 + 46 1 + + 46 1 1 0 + 47 1 + + 47 2063 33 5 + 0 0.0223 + 2 0.00145 + 3 0.00679 + 4 0.268 + 5 0.0111 + 7 0.00969 + 8 0.048 + 9 0.00145 + 10 0.00194 + 12 0.0136 + 13 0.0606 + 14 0.0834 + 15 0.115 + 16 0.00145 + 17 0.00194 + 19 0.241 + 20 0.0281 + 21 0.015 + 26 0.0291 + 28 0.000969 + 29 0.000969 + 30 0.0111 + 31 0.00873 + 32 0.000485 + 34 0.000485 + 35 0.000485 + 39 0.000485 + 40 0.00291 + 41 0.0111 + 43 0.000485 + 44 0.000485 + 45 0.00145 + 47 0.000485 + + 7 30 7 0 + 4 0.3 + 8 0.0667 + 13 0.0333 + 14 0.0667 + 15 0.233 + 19 0.2 + 20 0.1 + + 8 18 6 0 + 4 0.278 + 8 0.111 + 13 0.222 + 14 0.167 + 15 0.167 + 19 0.0556 + + 21 43 12 0 + 0 0.0698 + 4 0.302 + 7 0.0233 + 8 0.0233 + 12 0.0233 + 13 0.0233 + 14 0.0465 + 15 0.14 + 19 0.233 + 20 0.0465 + 28 0.0465 + 40 0.0233 + + 46 1 1 0 + 47 1 + + 55 4 3 0 + 0 0.5 + 4 0.25 + 12 0.25 + + 55 4 3 0 + 0 0.5 + 4 0.25 + 12 0.25 + +72 15188 37 29 + 0 0.257 + 2 0.000856 + 3 0.00356 + 4 0.0405 + 5 0.000922 + 7 0.0239 + 8 0.0117 + 9 0.000527 + 10 0.000856 + 12 0.0985 + 13 0.0189 + 14 0.0197 + 15 0.0309 + 16 0.000329 + 17 0.000132 + 18 0.000263 + 19 0.0643 + 20 0.00382 + 21 0.0426 + 22 0.000395 + 23 0.000132 + 26 0.00375 + 28 0.00224 + 29 0.155 + 30 0.000329 + 31 0.0023 + 32 0.0744 + 33 0.128 + 34 0.000263 + 39 0.000593 + 40 0.000658 + 41 0.00974 + 42 0.000263 + 43 0.000395 + 44 0.000461 + 45 0.000988 + 46 0.000132 + + 2 8 3 0 + 7 0.125 + 13 0.625 + 14 0.25 + + 3 9 3 0 + 7 0.778 + 8 0.111 + 14 0.111 + + 4 71 11 1 + 0 0.225 + 7 0.211 + 8 0.0282 + 12 0.0986 + 13 0.169 + 15 0.113 + 18 0.0141 + 21 0.0141 + 29 0.0141 + 32 0.0423 + 33 0.0704 + + 35 4 2 0 + 8 0.5 + 13 0.5 + + 7 358 24 0 + 0 0.00559 + 3 0.00279 + 4 0.154 + 7 0.014 + 8 0.0559 + 9 0.00279 + 10 0.00838 + 13 0.0223 + 14 0.0922 + 15 0.19 + 16 0.00279 + 19 0.237 + 20 0.0279 + 21 0.0447 + 22 0.00279 + 23 0.00279 + 28 0.00279 + 29 0.0279 + 30 0.00559 + 31 0.0251 + 32 0.00838 + 33 0.0168 + 41 0.0447 + 45 0.00279 + + 8 76 17 5 + 0 0.0263 + 4 0.0921 + 7 0.0789 + 8 0.0658 + 13 0.329 + 14 0.171 + 15 0.0395 + 17 0.0132 + 19 0.0658 + 20 0.0263 + 29 0.0132 + 31 0.0132 + 40 0.0132 + 41 0.0132 + 42 0.0132 + 45 0.0132 + 46 0.0132 + + 21 1 1 0 + 17 1 + + 23 2 1 0 + 7 1 + + 36 30 6 0 + 8 0.167 + 13 0.467 + 14 0.267 + 31 0.0333 + 41 0.0333 + 45 0.0333 + + 37 25 10 0 + 0 0.08 + 4 0.28 + 7 0.08 + 13 0.04 + 15 0.12 + 19 0.2 + 20 0.08 + 29 0.04 + 40 0.04 + 42 0.04 + + 47 2 1 0 + 7 1 + + 9 3 3 0 + 12 0.333 + 14 0.333 + 15 0.333 + + 10 6 2 0 + 7 0.833 + 13 0.167 + + 13 186 16 9 + 0 0.269 + 2 0.0108 + 4 0.0806 + 7 0.145 + 8 0.0108 + 12 0.0269 + 13 0.0645 + 14 0.0323 + 15 0.0323 + 19 0.0806 + 21 0.0215 + 26 0.0215 + 29 0.0753 + 33 0.086 + 41 0.0376 + 44 0.00538 + + 2 5 4 0 + 0 0.4 + 13 0.2 + 14 0.2 + 29 0.2 + + 4 5 3 0 + 0 0.2 + 7 0.6 + 19 0.2 + + 8 25 13 0 + 0 0.24 + 2 0.04 + 7 0.04 + 13 0.08 + 14 0.04 + 15 0.04 + 19 0.04 + 21 0.12 + 26 0.04 + 29 0.08 + 33 0.12 + 41 0.08 + 44 0.04 + + 13 13 8 0 + 0 0.231 + 7 0.231 + 8 0.0769 + 12 0.0769 + 19 0.154 + 21 0.0769 + 29 0.0769 + 33 0.0769 + + 34 39 13 0 + 0 0.103 + 2 0.0256 + 4 0.256 + 7 0.128 + 12 0.0256 + 13 0.0513 + 14 0.0256 + 15 0.0513 + 19 0.179 + 26 0.0256 + 29 0.0256 + 33 0.0256 + 41 0.0769 + + 35 14 8 0 + 0 0.286 + 4 0.0714 + 7 0.286 + 14 0.0714 + 19 0.0714 + 26 0.0714 + 29 0.0714 + 41 0.0714 + + 36 58 11 0 + 0 0.362 + 7 0.121 + 12 0.0172 + 13 0.121 + 14 0.0345 + 15 0.0172 + 19 0.0345 + 26 0.0172 + 29 0.103 + 33 0.155 + 41 0.0172 + + 70 7 4 0 + 0 0.286 + 4 0.286 + 8 0.143 + 15 0.286 + + 71 2 1 0 + 4 1 + + 14 114 16 6 + 0 0.307 + 2 0.0439 + 4 0.0263 + 7 0.0526 + 8 0.0175 + 12 0.0439 + 13 0.0175 + 15 0.00877 + 19 0.0965 + 21 0.0175 + 26 0.0351 + 29 0.105 + 32 0.202 + 34 0.00877 + 41 0.00877 + 45 0.00877 + + 8 15 8 0 + 0 0.2 + 12 0.0667 + 19 0.0667 + 21 0.0667 + 29 0.2 + 32 0.267 + 34 0.0667 + 45 0.0667 + + 15 2 2 0 + 4 0.5 + 29 0.5 + + 34 17 9 0 + 0 0.294 + 4 0.0588 + 7 0.176 + 12 0.0588 + 15 0.0588 + 19 0.0588 + 26 0.0588 + 29 0.0588 + 32 0.176 + + 35 5 4 0 + 0 0.2 + 4 0.2 + 12 0.2 + 26 0.4 + + 36 48 8 0 + 0 0.354 + 2 0.104 + 13 0.0417 + 19 0.0833 + 21 0.0208 + 29 0.0833 + 32 0.292 + 41 0.0208 + + 71 3 3 0 + 8 0.333 + 12 0.333 + 19 0.333 + + 15 18 6 0 + 7 0.0556 + 13 0.278 + 14 0.0556 + 15 0.5 + 16 0.0556 + 33 0.0556 + + 21 12 6 0 + 0 0.167 + 4 0.0833 + 7 0.333 + 8 0.0833 + 12 0.167 + 19 0.167 + + 31 2 2 0 + 13 0.5 + 14 0.5 + + 32 1 1 0 + 28 1 + + 34 4214 29 1 + 0 0.274 + 2 0.000475 + 3 0.00522 + 4 0.0282 + 5 0.00142 + 7 0.00878 + 8 0.00807 + 9 0.000475 + 10 0.000237 + 12 0.133 + 13 0.0157 + 14 0.0164 + 15 0.0216 + 16 0.000237 + 18 0.000237 + 19 0.0356 + 20 0.00119 + 21 0.046 + 26 0.000949 + 28 0.00119 + 29 0.159 + 31 0.000949 + 32 0.0729 + 33 0.161 + 39 0.000712 + 41 0.00617 + 42 0.000237 + 44 0.000237 + 45 0.000475 + + 21 2 1 0 + 13 1 + + 35 2343 27 2 + 0 0.268 + 3 0.00128 + 4 0.0448 + 7 0.0128 + 8 0.00512 + 9 0.000427 + 10 0.000854 + 12 0.0657 + 13 0.0111 + 14 0.00896 + 15 0.0188 + 19 0.0905 + 20 0.00512 + 21 0.0448 + 22 0.000854 + 26 0.0064 + 28 0.00427 + 29 0.193 + 31 0.000854 + 32 0.0952 + 33 0.111 + 34 0.000427 + 40 0.000854 + 41 0.00683 + 43 0.00128 + 44 0.000427 + 45 0.000854 + + 21 5 4 0 + 19 0.4 + 20 0.2 + 26 0.2 + 33 0.2 + + 49 1 1 0 + 28 1 + + 36 159 12 0 + 3 0.0126 + 8 0.201 + 9 0.00629 + 10 0.00629 + 13 0.371 + 14 0.302 + 15 0.0566 + 21 0.00629 + 30 0.00629 + 31 0.00629 + 39 0.0189 + 45 0.00629 + + 41 6 6 0 + 0 0.167 + 12 0.167 + 15 0.167 + 31 0.167 + 45 0.167 + 46 0.167 + + 45 2 1 0 + 8 1 + + 47 7352 36 19 + 0 0.266 + 2 0.000408 + 3 0.00354 + 4 0.0415 + 5 0.000952 + 7 0.0181 + 8 0.00871 + 9 0.000408 + 10 0.000816 + 12 0.102 + 13 0.00789 + 14 0.0139 + 15 0.0305 + 16 0.000272 + 17 0.000136 + 18 0.000272 + 19 0.0664 + 20 0.00394 + 21 0.0435 + 22 0.000408 + 23 0.000136 + 26 0.00367 + 28 0.00231 + 29 0.161 + 30 0.000272 + 31 0.00218 + 32 0.0768 + 33 0.132 + 34 0.000272 + 39 0.000408 + 40 0.00068 + 41 0.00952 + 42 0.000272 + 43 0.000408 + 44 0.000408 + 45 0.000816 + + 3 5 1 0 + 7 1 + + 4 61 10 0 + 0 0.262 + 7 0.148 + 12 0.115 + 13 0.164 + 15 0.131 + 18 0.0164 + 21 0.0164 + 29 0.0164 + 32 0.0492 + 33 0.082 + + 7 358 24 0 + 0 0.00559 + 3 0.00279 + 4 0.154 + 7 0.014 + 8 0.0559 + 9 0.00279 + 10 0.00838 + 13 0.0223 + 14 0.0922 + 15 0.19 + 16 0.00279 + 19 0.237 + 20 0.0279 + 21 0.0447 + 22 0.00279 + 23 0.00279 + 28 0.00279 + 29 0.0279 + 30 0.00559 + 31 0.0251 + 32 0.00838 + 33 0.0168 + 41 0.0447 + 45 0.00279 + + 8 31 12 0 + 0 0.0645 + 4 0.226 + 7 0.194 + 13 0.0323 + 15 0.0968 + 17 0.0323 + 19 0.161 + 20 0.0645 + 29 0.0323 + 40 0.0323 + 41 0.0323 + 42 0.0323 + + 9 2 2 0 + 12 0.5 + 15 0.5 + + 10 4 1 0 + 7 1 + + 13 163 13 0 + 0 0.307 + 4 0.092 + 7 0.147 + 8 0.0123 + 12 0.0307 + 15 0.0368 + 19 0.092 + 21 0.0245 + 26 0.0245 + 29 0.0859 + 33 0.0982 + 41 0.0429 + 44 0.00613 + + 14 107 14 0 + 0 0.327 + 4 0.028 + 7 0.0561 + 8 0.0187 + 12 0.0467 + 15 0.00935 + 19 0.103 + 21 0.0187 + 26 0.0374 + 29 0.112 + 32 0.215 + 34 0.00935 + 41 0.00935 + 45 0.00935 + + 15 2 2 0 + 7 0.5 + 33 0.5 + + 21 11 5 0 + 0 0.182 + 4 0.0909 + 7 0.364 + 12 0.182 + 19 0.182 + + 32 1 1 0 + 28 1 + + 34 4153 29 0 + 0 0.278 + 2 0.000482 + 3 0.0053 + 4 0.0287 + 5 0.00144 + 7 0.00891 + 8 0.00722 + 9 0.000482 + 10 0.000241 + 12 0.135 + 13 0.0065 + 14 0.0125 + 15 0.0219 + 16 0.000241 + 18 0.000241 + 19 0.0361 + 20 0.0012 + 21 0.0467 + 26 0.000963 + 28 0.0012 + 29 0.161 + 31 0.000963 + 32 0.0739 + 33 0.164 + 39 0.000722 + 41 0.00602 + 42 0.000241 + 44 0.000241 + 45 0.000482 + + 35 2312 26 0 + 0 0.271 + 3 0.0013 + 4 0.0433 + 7 0.013 + 8 0.00433 + 10 0.000865 + 12 0.0666 + 13 0.00519 + 14 0.00692 + 15 0.019 + 19 0.0917 + 20 0.00519 + 21 0.0437 + 22 0.000865 + 26 0.00649 + 28 0.00433 + 29 0.196 + 31 0.000865 + 32 0.0965 + 33 0.112 + 34 0.000433 + 40 0.000865 + 41 0.00692 + 43 0.0013 + 44 0.000433 + 45 0.000865 + + 49 2 2 0 + 15 0.5 + 19 0.5 + + 55 7 5 0 + 0 0.143 + 21 0.143 + 29 0.143 + 32 0.286 + 41 0.286 + + 57 59 14 0 + 0 0.407 + 4 0.0678 + 5 0.0169 + 12 0.0847 + 14 0.0169 + 15 0.0169 + 19 0.0508 + 21 0.0169 + 29 0.186 + 31 0.0169 + 32 0.0169 + 33 0.0508 + 40 0.0169 + 41 0.0339 + + 60 2 1 0 + 7 1 + + 62 1 1 0 + 40 1 + + 73 62 7 0 + 0 0.581 + 2 0.0161 + 12 0.129 + 19 0.0323 + 29 0.161 + 32 0.0484 + 33 0.0323 + + 48 4 2 0 + 13 0.75 + 19 0.25 + + 49 2 2 0 + 15 0.5 + 19 0.5 + + 55 28 8 4 + 0 0.0357 + 7 0.607 + 13 0.0357 + 21 0.0357 + 26 0.0357 + 29 0.0357 + 32 0.0714 + 41 0.143 + + 36 4 3 0 + 13 0.25 + 21 0.25 + 32 0.5 + + 41 3 1 0 + 41 1 + + 47 18 2 0 + 7 0.944 + 26 0.0556 + + 72 2 2 0 + 0 0.5 + 29 0.5 + + 57 60 15 1 + 0 0.4 + 4 0.0667 + 5 0.0167 + 7 0.0167 + 12 0.0833 + 14 0.0167 + 15 0.0167 + 19 0.05 + 21 0.0167 + 29 0.183 + 31 0.0167 + 32 0.0167 + 33 0.05 + 40 0.0167 + 41 0.0333 + + 55 18 6 0 + 0 0.444 + 4 0.0556 + 5 0.0556 + 12 0.111 + 21 0.0556 + 29 0.278 + + 58 4 4 0 + 0 0.25 + 4 0.25 + 13 0.25 + 19 0.25 + + 60 2 1 0 + 7 1 + + 62 1 1 0 + 40 1 + + 69 1 1 0 + 41 1 + + 72 78 8 0 + 7 0.846 + 8 0.0128 + 15 0.0128 + 19 0.0128 + 21 0.0256 + 26 0.0256 + 41 0.0513 + 44 0.0128 + + 73 62 7 0 + 0 0.581 + 2 0.0161 + 12 0.129 + 19 0.0323 + 29 0.161 + 32 0.0484 + 33 0.0323 + +73 1173 26 5 + 0 0.0682 + 2 0.00171 + 3 0.0358 + 4 0.137 + 5 0.0102 + 8 0.0171 + 12 0.0153 + 13 0.0341 + 14 0.0614 + 15 0.087 + 16 0.00171 + 19 0.14 + 20 0.00682 + 21 0.00171 + 26 0.00853 + 29 0.0171 + 32 0.00682 + 33 0.00341 + 34 0.299 + 35 0.0315 + 36 0.000853 + 37 0.000853 + 39 0.00512 + 40 0.00341 + 41 0.00341 + 43 0.00171 + + 7 373 5 0 + 4 0.00268 + 34 0.903 + 35 0.0885 + 36 0.00268 + 37 0.00268 + + 26 18 2 0 + 34 0.778 + 35 0.222 + + 47 391 22 1 + 0 0.102 + 2 0.00256 + 3 0.0537 + 4 0.205 + 5 0.0153 + 8 0.0256 + 12 0.023 + 13 0.0512 + 14 0.0921 + 15 0.13 + 16 0.00256 + 19 0.21 + 20 0.0102 + 21 0.00256 + 26 0.0128 + 29 0.0256 + 32 0.0102 + 33 0.00512 + 39 0.00767 + 40 0.00512 + 41 0.00512 + 43 0.00256 + + 64 1 1 0 + 41 1 + + 64 1 1 0 + 41 1 + + 72 389 22 1 + 0 0.1 + 2 0.00257 + 3 0.054 + 4 0.206 + 5 0.0154 + 8 0.0257 + 12 0.0231 + 13 0.0514 + 14 0.0925 + 15 0.131 + 16 0.00257 + 19 0.211 + 20 0.0103 + 21 0.00257 + 26 0.0129 + 29 0.0257 + 32 0.0103 + 33 0.00514 + 39 0.00771 + 40 0.00514 + 41 0.00257 + 43 0.00257 + + 26 18 8 0 + 4 0.389 + 13 0.0556 + 14 0.0556 + 15 0.0556 + 19 0.278 + 21 0.0556 + 40 0.0556 + 43 0.0556 + +74 426 24 23 + 0 0.00939 + 4 0.0986 + 7 0.0657 + 8 0.0188 + 10 0.00469 + 13 0.0329 + 14 0.0164 + 15 0.00939 + 19 0.0775 + 20 0.0164 + 21 0.0164 + 22 0.00939 + 26 0.0164 + 28 0.00469 + 31 0.00939 + 33 0.0141 + 34 0.00235 + 35 0.00469 + 40 0.124 + 41 0.0516 + 42 0.12 + 43 0.00469 + 46 0.00939 + 47 0.263 + + 2 4 4 0 + 7 0.25 + 14 0.25 + 19 0.25 + 26 0.25 + + 4 8 4 0 + 7 0.125 + 10 0.125 + 22 0.5 + 47 0.25 + + 6 2 2 0 + 8 0.5 + 40 0.5 + + 7 9 5 0 + 4 0.111 + 7 0.222 + 8 0.111 + 35 0.111 + 47 0.444 + + 9 23 6 0 + 4 0.348 + 7 0.0435 + 13 0.13 + 14 0.13 + 19 0.261 + 20 0.087 + + 12 1 1 0 + 28 1 + + 13 4 4 0 + 0 0.25 + 4 0.25 + 7 0.25 + 41 0.25 + + 14 2 2 0 + 8 0.5 + 40 0.5 + + 15 4 3 0 + 26 0.25 + 40 0.5 + 43 0.25 + + 21 3 3 0 + 20 0.333 + 40 0.333 + 41 0.333 + + 22 10 2 0 + 4 0.3 + 19 0.7 + + 25 39 9 0 + 7 0.0513 + 8 0.0256 + 13 0.0769 + 15 0.0256 + 21 0.0513 + 31 0.0256 + 33 0.0769 + 42 0.538 + 47 0.128 + + 26 5 2 0 + 26 0.4 + 47 0.6 + + 35 2 1 0 + 7 1 + + 40 23 2 0 + 46 0.087 + 47 0.913 + + 41 4 2 0 + 4 0.75 + 7 0.25 + + 42 9 5 0 + 7 0.444 + 13 0.111 + 21 0.111 + 31 0.111 + 47 0.222 + + 47 174 22 17 + 0 0.0115 + 4 0.092 + 7 0.0517 + 8 0.0172 + 10 0.00575 + 13 0.0345 + 14 0.0172 + 15 0.00575 + 19 0.092 + 20 0.0172 + 21 0.0115 + 26 0.0172 + 28 0.00575 + 31 0.00575 + 33 0.0172 + 35 0.00575 + 40 0.0862 + 41 0.0517 + 42 0.121 + 43 0.00575 + 46 0.00575 + 47 0.322 + + 4 4 3 0 + 7 0.25 + 10 0.25 + 47 0.5 + + 7 8 4 0 + 7 0.25 + 8 0.125 + 35 0.125 + 47 0.5 + + 9 22 5 0 + 4 0.364 + 13 0.136 + 14 0.136 + 19 0.273 + 20 0.0909 + + 12 1 1 0 + 28 1 + + 13 4 4 0 + 0 0.25 + 4 0.25 + 7 0.25 + 41 0.25 + + 14 2 2 0 + 8 0.5 + 40 0.5 + + 15 3 3 0 + 26 0.333 + 40 0.333 + 43 0.333 + + 21 3 3 0 + 20 0.333 + 40 0.333 + 41 0.333 + + 22 10 2 0 + 4 0.3 + 19 0.7 + + 25 39 9 0 + 7 0.0513 + 8 0.0256 + 13 0.0769 + 15 0.0256 + 21 0.0513 + 31 0.0256 + 33 0.0769 + 42 0.538 + 47 0.128 + + 26 5 2 0 + 26 0.4 + 47 0.6 + + 35 2 1 0 + 7 1 + + 40 21 1 0 + 47 1 + + 48 5 3 0 + 4 0.4 + 19 0.4 + 47 0.2 + + 55 19 5 0 + 4 0.0526 + 7 0.0526 + 40 0.368 + 41 0.316 + 47 0.211 + + 57 10 3 0 + 40 0.2 + 46 0.1 + 47 0.7 + + 69 1 1 0 + 0 1 + + 48 6 4 0 + 4 0.333 + 19 0.333 + 40 0.167 + 47 0.167 + + 55 33 8 0 + 4 0.0303 + 7 0.0606 + 15 0.0303 + 34 0.0303 + 40 0.485 + 41 0.212 + 42 0.0303 + 47 0.121 + + 57 15 4 0 + 40 0.333 + 42 0.133 + 46 0.0667 + 47 0.467 + + 69 4 2 0 + 0 0.25 + 40 0.75 + + 74 26 11 1 + 4 0.231 + 7 0.0769 + 8 0.0385 + 13 0.0385 + 15 0.0385 + 20 0.0385 + 21 0.0769 + 31 0.0385 + 40 0.0769 + 41 0.115 + 42 0.231 + + 41 6 4 0 + 4 0.333 + 13 0.167 + 20 0.167 + 40 0.333 + diff --git a/samples/G-code/square.g b/samples/G-code/square.g new file mode 100644 index 00000000..b0fa2630 --- /dev/null +++ b/samples/G-code/square.g @@ -0,0 +1,13 @@ +G28 X0 Y0 +G1 X55 Y5 F2000 +G1 Y180 +G1 X180 +G1 Y5 +G1 X55 +G1 Y180 +G1 X180 +G1 Y5 +G1 X55 +M0 + + diff --git a/samples/GAMS/transport.gms b/samples/GAMS/transport.gms new file mode 100644 index 00000000..fb6ccbc9 --- /dev/null +++ b/samples/GAMS/transport.gms @@ -0,0 +1,76 @@ +*Basic example of transport model from GAMS model library + +$Title A Transportation Problem (TRNSPORT,SEQ=1) +$Ontext + +This problem finds a least cost shipping schedule that meets +requirements at markets and supplies at factories. + + +Dantzig, G B, Chapter 3.3. In Linear Programming and Extensions. +Princeton University Press, Princeton, New Jersey, 1963. + +This formulation is described in detail in: +Rosenthal, R E, Chapter 2: A GAMS Tutorial. In GAMS: A User's Guide. +The Scientific Press, Redwood City, California, 1988. + +The line numbers will not match those in the book because of these +comments. + +$Offtext + + + Sets + i canning plants / seattle, san-diego / + j markets / new-york, chicago, topeka / ; + Parameters + a(i) capacity of plant i in cases + / seattle 350 + san-diego 600 / + b(j) demand at market j in cases + / new-york 325 + chicago 300 + topeka 275 / ; + Table d(i,j) distance in thousands of miles + new-york chicago topeka + seattle 2.5 1.7 1.8 + san-diego 2.5 1.8 1.4 ; + Scalar f freight in dollars per case per thousand miles /90/ ; + Parameter c(i,j) transport cost in thousands of dollars per case ; + c(i,j) = f * d(i,j) / 1000 ; + Variables + x(i,j) shipment quantities in cases + z total transportation costs in thousands of dollars ; + + Positive Variable x ; + + Equations + cost define objective function + supply(i) observe supply limit at plant i + demand(j) satisfy demand at market j ; + + cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ; + + supply(i) .. sum(j, x(i,j)) =l= a(i) ; + + demand(j) .. sum(i, x(i,j)) =g= b(j) ; + + Model transport /all/ ; + + Solve transport using lp minimizing z ; + + Display x.l, x.m ; + +$ontext +#user model library stuff +Main topic Basic GAMS +Featured item 1 Trnsport model +Featured item 2 +Featured item 3 +Featured item 4 +Description +Basic example of transport model from GAMS model library + + + +$offtext \ No newline at end of file diff --git a/samples/GAP/Magic.gd b/samples/GAP/Magic.gd new file mode 100644 index 00000000..cdd8baec --- /dev/null +++ b/samples/GAP/Magic.gd @@ -0,0 +1,307 @@ +############################################################################# +## +## Magic.gd AutoDoc package +## +## Copyright 2013, Max Horn, JLU Giessen +## Sebastian Gutsche, University of Kaiserslautern +## +############################################################################# + + +#! @Description +#! This is the main function of the &AutoDoc; package. It can perform +#! any combination of the following three tasks: +#! +#! +#! It can (re)generate a scaffold for your package manual. +#! That is, it can produce two XML files in &GAPDoc; format to be used as part +#! of your manual: First, a file named doc/PACKAGENAME.xml +#! (with your package's name substituted) which is used as +#! main file for the package manual, i.e. this file sets the +#! XML DOCTYPE and defines various XML entities, includes +#! other XML files (both those generated by &AutoDoc; as well +#! as additional files created by other means), tells &GAPDoc; +#! to generate a table of content and an index, and more. +#! Secondly, it creates a file doc/title.xml containing a title +#! page for your documentation, with information about your package +#! (name, description, version), its authors and more, based +#! on the data in your PackageInfo.g. +#! +#! +#! It can scan your package for &AutoDoc; based documentation (by using &AutoDoc; +#! tags and the Autodoc command. +#! This will +#! produce further XML files to be used as part of the package manual. +#! +#! +#! It can use &GAPDoc; to generate PDF, text and HTML (with +#! MathJaX enabled) documentation from the &GAPDoc; XML files it +#! generated as well as additional such files provided by you. For +#! this, it invokes +#! to convert the XML sources, and it also instructs &GAPDoc; to copy +#! supplementary files (such as CSS style files) into your doc directory +#! (see ). +#! +#! +#! For more information and some examples, please refer to Chapter . +#!

+#! The parameters have the following meanings: +#! +#! +#! package_name +#! +#! The name of the package whose documentation should be(re)generated. +#! +#! +#! +#! option_record +#! +#! option_record can be a record with some additional options. +#! The following are currently supported: +#! +#! dir +#! +#! This should be a string containing a (relative) path or a +#! Directory() object specifying where the package documentation +#! (i.e. the &GAPDoc; XML files) are stored. +#!
+#! Default value: "doc/". +#!
+#! scaffold +#! +#! This controls whether and how to generate scaffold XML files +#! for the main and title page of the package's documentation. +#!

+#! The value should be either true, false or a +#! record. If it is a record or true (the latter is +#! equivalent to specifying an empty record), then this feature is +#! enabled. It is also enabled if opt.scaffold is missing but the +#! package's info record in PackageInfo.g has an AutoDoc entry. +#! In all other cases (in particular if opt.scaffold is +#! false), scaffolding is disabled. +#!

+#! +#! If opt.scaffold is a record, it may contain the following entries. +#! +#### TODO: mention merging with PackageInfo.AutoDoc! +#! +#! +#! includes +#! +#! A list of XML files to be included in the body of the main XML file. +#! If you specify this list and also are using &AutoDoc; to document +#! your operations with &AutoDoc; comments, +#! you can add AutoDocMainFile.xml to this list +#! to control at which point the documentation produced by &AutoDoc; +#! is inserted. If you do not do this, it will be added after the last +#! of your own XML files. +#! +#! +#! appendix +#! +#! This entry is similar to opt.scaffold.includes but is used +#! to specify files to include after the main body of the manual, +#! i.e. typically appendices. +#! +#! +#! bib +#! +#! The name of a bibliography file, in Bibtex or XML format. +#! If this key is not set, but there is a file doc/PACKAGENAME.bib +#! then it is assumed that you want to use this as your bibliography. +#! +#! +#### TODO: The 'entities' param is a bit strange. We should probably change it to be a bit more +#### general, as one might want to define other entities... For now, we do not document it +#### to leave us the choice of revising how it works. +#### +#### entities +#### +#### A list of package names or other entities which are used to define corresponding XML entities. +#### For example, if set to a list containing the string SomePackage, +#### then the following is added to the XML preamble: +####

SomePackage'>]]> +#### This allows you to write &SomePackage; in your documentation +#### to reference that package. If another type of entity is desired, one can simply add, +#### instead of a string, add a two entry list a to the list. It will be handled as +#### a[ 2 ]'>]]>, +#### so please be careful. +#### +#! +#! TitlePage +#! +#! A record whose entries are used to embellish the generated titlepage +#! for the package manual with extra information, such as a copyright +#! statement or acknowledgments. To this end, the names of the record +#! components are used as XML element names, and the values of the +#! components are outputted as content of these XML elements. For +#! example, you could pass the following record to set a custom +#! acknowledgements text: +#! +#! For a list of valid entries in the titlepage, please refer to the +#! &GAPDoc; manual, specifically section +#! and following. +#! +#! document_class +#! +#! Sets the document class of the resulting pdf. The value can either be a string +#! which has to be the name of the new document class, a list containing this string, or +#! a list of two strings. Then the first one has to be the document class name, the second one +#! the option string ( contained in [ ] ) in LaTeX. +#! +#! latex_header_file +#! +#! Replaces the standard header from &GAPDoc; completely with the header in this LaTeX file. +#! Please be careful here, and look at GAPDoc's latexheader.tex file for an example. +#! +#! gapdoc_latex_options +#! +#! Must be a record with entries which can be understood by SetGapDocLaTeXOptions. Each entry can be a string, which +#! will be given to &GAPDoc; directly, or a list containing of two entries: The first one must be the string "file", +#! the second one a filename. This file will be read and then its content is passed to &GAPDoc; as option with the name +#! of the entry. +#! +#! +#! +#! +#! +#! +#! autodoc +#! +#! This controls whether and how to generate addition XML documentation files +#! by scanning for &AutoDoc; documentation comments. +#!

+#! The value should be either true, false or a +#! record. If it is a record or true (the latter is +#! equivalent to specifying an empty record), then this feature is +#! enabled. It is also enabled if opt.autodoc is missing but the +#! package depends (directly) on the &AutoDoc; package. +#! In all other cases (in particular if opt.autodoc is +#! false), this feature is disabled. +#!

+#! +#! If opt.autodoc is a record, it may contain the following entries. +#! +#! +#! +#! files +#! +#! A list of files (given by paths relative to the package directory) +#! to be scanned for &AutoDoc; documentation comments. +#! Usually it is more convenient to use autodoc.scan_dirs, see below. +#! +#! +#! scan_dirs +#! +#! A list of subdirectories of the package directory (given as relative paths) +#! which &AutoDoc; then scans for .gi, .gd and .g files; all of these files +#! are then scanned for &AutoDoc; documentation comments. +#!
+#! Default value: [ "gap", "lib", "examples", "examples/doc" ]. +#!
+#! +#! level +#! +#! This defines the level of the created documentation. The default value is 0. +#! When parts of the manual are declared with a higher value +#! they will not be printed into the manual. +#! +#! +#### TODO: Document section_intros later on. +#### However, note that thanks to the new AutoDoc comment syntax, the only remaining +#### use for this seems to be the ability to specify the order of chapters and +#### sections. +#### section_intros +#### +#### TODO. +#### +#! +#!
+#! +#! +#! +#! gapdoc +#! +#! This controls whether and how to invoke &GAPDoc; to create HTML, PDF and text +#! files from your various XML files. +#!

+#! The value should be either true, false or a +#! record. If it is a record or true (the latter is +#! equivalent to specifying an empty record), then this feature is +#! enabled. It is also enabled if opt.gapdoc is missing. +#! In all other cases (in particular if opt.gapdoc is +#! false), this feature is disabled. +#!

+#! +#! If opt.gapdoc is a record, it may contain the following entries. +#! +#! +#! +#! +#### Note: 'main' is strictly speaking also used for the scaffold. +#### However, if one uses the scaffolding mechanism, then it is not +#### really necessary to specify a custom name for the main XML file. +#### Thus, the purpose of this parameter is to cater for packages +#### that have existing documentation using a different XML name, +#### and which do not wish to use scaffolding. +#### +#### This explain why we only allow specifying gapdoc.main. +#### The scaffolding code will still honor it, though, just in case. +#! main +#! +#! The name of the main XML file of the package manual. +#! This exists primarily to support packages with existing manual +#! which use a filename here which differs from the default. +#! In particular, specifying this is unnecessary when using scaffolding. +#!
+#! Default value: PACKAGENAME.xml. +#!
+#! +#! files +#! +#! A list of files (given by paths relative to the package directory) +#! to be scanned for &GAPDoc; documentation comments. +#! Usually it is more convenient to use gapdoc.scan_dirs, see below. +#! +#! +#! scan_dirs +#! +#! A list of subdirectories of the package directory (given as relative paths) +#! which &AutoDoc; then scans for .gi, .gd and .g files; all of these files +#! are then scanned for &GAPDoc; documentation comments. +#!
+#! Default value: [ "gap", "lib", "examples", "examples/doc" ]. +#!
+#! +#!
+#! +## This is the maketest part. Still under construction. +#! maketest +#! +#! The maketest item can be true or a record. When it is true, +#! a simple maketest.g is created in the main package directory, +#! which can be used to test the examples from the manual. As a record, +#! the entry can have the following entries itself, to specify some options. +#! +#! filename +#! +#! Sets the name of the test file. +#! +#! commands +#! +#! A list of strings, each one a command, which +#! will be executed at the beginning of the test file. +#! +#! +#! +#! +#! +#! +#! +#! +#! @Returns nothing +#! @Arguments package_name[, option_record ] +#! @ChapterInfo AutoDoc, The AutoDoc() function +DeclareGlobalFunction( "AutoDoc" ); + diff --git a/samples/GAP/Magic.gi b/samples/GAP/Magic.gi new file mode 100644 index 00000000..5202a1de --- /dev/null +++ b/samples/GAP/Magic.gi @@ -0,0 +1,534 @@ +############################################################################# +## +## Magic.gi AutoDoc package +## +## Copyright 2013, Max Horn, JLU Giessen +## Sebastian Gutsche, University of Kaiserslautern +## +############################################################################# + +# Check if a string has the given suffix or not. Another +# name for this would "StringEndsWithOtherString". +# For example, AUTODOC_HasSuffix("file.gi", ".gi") returns +# true while AUTODOC_HasSuffix("file.txt", ".gi") returns false. +BindGlobal( "AUTODOC_HasSuffix", +function(str, suffix) + local n, m; + n := Length(str); + m := Length(suffix); + return n >= m and str{[n-m+1..n]} = suffix; +end ); + +# Given a string containing a ".", , return its suffix, +# i.e. the bit after the last ".". For example, given "test.txt", +# it returns "txt". +BindGlobal( "AUTODOC_GetSuffix", +function(str) + local i; + i := Length(str); + while i > 0 and str[i] <> '.' do i := i - 1; od; + if i < 0 then return ""; fi; + return str{[i+1..Length(str)]}; +end ); + +# Check whether the given directory exists, and if not, attempt +# to create it. +BindGlobal( "AUTODOC_CreateDirIfMissing", +function(d) + local tmp; + if not IsDirectoryPath(d) then + tmp := CreateDir(d); # Note: CreateDir is currently undocumented + if tmp = fail then + Error("Cannot create directory ", d, "\n", + "Error message: ", LastSystemError().message, "\n"); + return false; + fi; + fi; + return true; +end ); + + +# Scan the given (by name) subdirs of a package dir for +# files with one of the given extensions, and return the corresponding +# filenames, as relative paths (relative to the package dir). +# +# For example, the invocation +# AUTODOC_FindMatchingFiles("AutoDoc", [ "gap/" ], [ "gi", "gd" ]); +# might return a list looking like +# [ "gap/AutoDocMainFunction.gd", "gap/AutoDocMainFunction.gi", ... ] +BindGlobal( "AUTODOC_FindMatchingFiles", +function (pkg, subdirs, extensions) + local d_rel, d, tmp, files, result; + + result := []; + + for d_rel in subdirs do + # Get the absolute path to the directory in side the package... + d := DirectoriesPackageLibrary( pkg, d_rel ); + if IsEmpty( d ) then + continue; + fi; + d := d[1]; + # ... but also keep the relative path (such as "gap") + d_rel := Directory( d_rel ); + + files := DirectoryContents( d ); + Sort( files ); + for tmp in files do + if not AUTODOC_GetSuffix( tmp ) in [ "g", "gi", "gd", "autodoc" ] then + continue; + fi; + if not IsReadableFile( Filename( d, tmp ) ) then + continue; + fi; + Add( result, Filename( d_rel, tmp ) ); + od; + od; + return result; +end ); + + +# AutoDoc(pkg[, opt]) +# +## Make this function callable with the package_name AutoDocWorksheet. +## Which will then create a worksheet! +InstallGlobalFunction( AutoDoc, +function( arg ) + local pkg, package_info, opt, scaffold, gapdoc, maketest, + autodoc, pkg_dir, doc_dir, doc_dir_rel, d, tmp, + title_page, tree, is_worksheet, position_document_class, i, gapdoc_latex_option_record; + + pkg := arg[1]; + + if LowercaseString( pkg ) = "autodocworksheet" then + is_worksheet := true; + package_info := rec( ); + pkg_dir := DirectoryCurrent( ); + else + is_worksheet := false; + package_info := PackageInfo( pkg )[ 1 ]; + pkg_dir := DirectoriesPackageLibrary( pkg, "" )[1]; + fi; + + if Length(arg) >= 2 then + opt := arg[2]; + else + opt := rec(); + fi; + + # Check for certain user supplied options, and if present, add them + # to the opt record. + tmp := function( key ) + local val; + val := ValueOption( key ); + if val <> fail then + opt.(key) := val; + fi; + end; + + tmp( "dir" ); + tmp( "scaffold" ); + tmp( "autodoc" ); + tmp( "gapdoc" ); + tmp( "maketest" ); + + # + # Setup the output directory + # + if not IsBound( opt.dir ) then + doc_dir := "doc"; + elif IsString( opt.dir ) or IsDirectory( opt.dir ) then + doc_dir := opt.dir; + else + Error( "opt.dir must be a string containing a path, or a directory object" ); + fi; + + if IsString( doc_dir ) then + # Record the relative version of the path + doc_dir_rel := Directory( doc_dir ); + + # We intentionally do not use + # DirectoriesPackageLibrary( pkg, "doc" ) + # because it returns an empty list if the subdirectory is missing. + # But we want to handle that case by creating the directory. + doc_dir := Filename(pkg_dir, doc_dir); + doc_dir := Directory(doc_dir); + + else + # TODO: doc_dir_rel = ... ? + fi; + + # Ensure the output directory exists, create it if necessary + AUTODOC_CreateDirIfMissing(Filename(doc_dir, "")); + + # Let the developer know where we are generating the documentation. + # This helps diagnose problems where multiple instances of a package + # are visible to GAP and the wrong one is used for generating the + # documentation. + # TODO: Using Info() instead of Print? + Print( "Generating documentation in ", doc_dir, "\n" ); + + # + # Extract scaffolding settings, which can be controlled via + # opt.scaffold or package_info.AutoDoc. The former has precedence. + # + if not IsBound(opt.scaffold) then + # Default: enable scaffolding if and only if package_info.AutoDoc is present + if IsBound( package_info.AutoDoc ) then + scaffold := rec( ); + fi; + elif IsRecord(opt.scaffold) then + scaffold := opt.scaffold; + elif IsBool(opt.scaffold) then + if opt.scaffold = true then + scaffold := rec(); + fi; + else + Error("opt.scaffold must be a bool or a record"); + fi; + + # Merge package_info.AutoDoc into scaffold + if IsBound(scaffold) and IsBound( package_info.AutoDoc ) then + AUTODOC_APPEND_RECORD_WRITEONCE( scaffold, package_info.AutoDoc ); + fi; + + if IsBound( scaffold ) then + AUTODOC_WriteOnce( scaffold, "TitlePage", true ); + AUTODOC_WriteOnce( scaffold, "MainPage", true ); + fi; + + + # + # Extract AutoDoc settings + # + if not IsBound(opt.autodoc) and not is_worksheet then + # Enable AutoDoc support if the package depends on AutoDoc. + tmp := Concatenation( package_info.Dependencies.NeededOtherPackages, + package_info.Dependencies.SuggestedOtherPackages ); + if ForAny( tmp, x -> LowercaseString(x[1]) = "autodoc" ) then + autodoc := rec(); + fi; + elif IsRecord(opt.autodoc) then + autodoc := opt.autodoc; + elif IsBool(opt.autodoc) and opt.autodoc = true then + autodoc := rec(); + fi; + + if IsBound(autodoc) then + if not IsBound( autodoc.files ) then + autodoc.files := [ ]; + fi; + + if not IsBound( autodoc.scan_dirs ) and not is_worksheet then + autodoc.scan_dirs := [ "gap", "lib", "examples", "examples/doc" ]; + elif not IsBound( autodoc.scan_dirs ) and is_worksheet then + autodoc.scan_dirs := [ ]; + fi; + + if not IsBound( autodoc.level ) then + autodoc.level := 0; + fi; + + PushOptions( rec( level_value := autodoc.level ) ); + + if not is_worksheet then + Append( autodoc.files, AUTODOC_FindMatchingFiles(pkg, autodoc.scan_dirs, [ "g", "gi", "gd" ]) ); + fi; + fi; + + # + # Extract GAPDoc settings + # + if not IsBound( opt.gapdoc ) then + # Enable GAPDoc support by default + gapdoc := rec(); + elif IsRecord( opt.gapdoc ) then + gapdoc := opt.gapdoc; + elif IsBool( opt.gapdoc ) and opt.gapdoc = true then + gapdoc := rec(); + fi; + + # + # Extract test settings + # + + if IsBound( opt.maketest ) then + if IsRecord( opt.maketest ) then + maketest := opt.maketest; + elif opt.maketest = true then + maketest := rec( ); + fi; + fi; + + if IsBound( gapdoc ) then + + if not IsBound( gapdoc.main ) then + gapdoc.main := pkg; + fi; + + # FIXME: the following may break if a package uses more than one book + if IsBound( package_info.PackageDoc ) and IsBound( package_info.PackageDoc[1].BookName ) then + gapdoc.bookname := package_info.PackageDoc[1].BookName; + elif not is_worksheet then + # Default: book name = package name + gapdoc.bookname := pkg; + + Print("\n"); + Print("WARNING: PackageInfo.g is missing a PackageDoc entry!\n"); + Print("Without this, your package manual will not be recognized by the GAP help system.\n"); + Print("You can correct this by adding the following to your PackageInfo.g:\n"); + Print("PackageDoc := rec(\n"); + Print(" BookName := ~.PackageName,\n"); + #Print(" BookName := \"", pkg, "\",\n"); + Print(" ArchiveURLSubset := [\"doc\"],\n"); + Print(" HTMLStart := \"doc/chap0.html\",\n"); + Print(" PDFFile := \"doc/manual.pdf\",\n"); + Print(" SixFile := \"doc/manual.six\",\n"); + Print(" LongTitle := ~.Subtitle,\n"); + Print("),\n"); + Print("\n"); + fi; + + if not IsBound( gapdoc.files ) then + gapdoc.files := []; + fi; + + if not IsBound( gapdoc.scan_dirs ) and not is_worksheet then + gapdoc.scan_dirs := [ "gap", "lib", "examples", "examples/doc" ]; + fi; + + if not is_worksheet then + Append( gapdoc.files, AUTODOC_FindMatchingFiles(pkg, gapdoc.scan_dirs, [ "g", "gi", "gd" ]) ); + fi; + + # Attempt to weed out duplicates as they may confuse GAPDoc (this + # won't work if there are any non-normalized paths in the list). + gapdoc.files := Set( gapdoc.files ); + + # Convert the file paths in gapdoc.files, which are relative to + # the package directory, to paths which are relative to the doc directory. + # For this, we assume that doc_dir_rel is normalized (e.g. + # it does not contains '//') and relative. + d := Number( Filename( doc_dir_rel, "" ), x -> x = '/' ); + d := Concatenation( ListWithIdenticalEntries(d, "../") ); + gapdoc.files := List( gapdoc.files, f -> Concatenation( d, f ) ); + fi; + + + # read tree + # FIXME: shouldn't tree be declared inside of an 'if IsBound(autodoc)' section? + tree := DocumentationTree( ); + + if IsBound( autodoc ) then + if IsBound( autodoc.section_intros ) then + AUTODOC_PROCESS_INTRO_STRINGS( autodoc.section_intros : Tree := tree ); + fi; + + AutoDocScanFiles( autodoc.files : PackageName := pkg, Tree := tree ); + fi; + + if is_worksheet then + # FIXME: We use scaffold and autodoc here without checking whether + # they are bound. Does that mean worksheets always use them? + if IsRecord( scaffold.TitlePage ) and IsBound( scaffold.TitlePage.Title ) then + pkg := scaffold.TitlePage.Title; + + elif IsBound( tree!.TitlePage.Title ) then + pkg := tree!.TitlePage.Title; + + elif IsBound( autodoc.files ) and Length( autodoc.files ) > 0 then + pkg := autodoc.files[ 1 ]; + + while Position( pkg, '/' ) <> fail do + Remove( pkg, 1 ); + od; + + while Position( pkg, '.' ) <> fail do + Remove( pkg, Length( pkg ) ); + od; + + else + Error( "could not figure out a title." ); + fi; + + if not IsString( pkg ) then + pkg := JoinStringsWithSeparator( pkg, " " ); + fi; + + gapdoc.main := ReplacedString( pkg, " ", "_" ); + gapdoc.bookname := ReplacedString( pkg, " ", "_" ); + fi; + + # + # Generate scaffold + # + gapdoc_latex_option_record := rec( ); + + if IsBound( scaffold ) then + ## Syntax is [ "class", [ "options" ] ] + if IsBound( scaffold.document_class ) then + position_document_class := PositionSublist( GAPDoc2LaTeXProcs.Head, "documentclass" ); + + if IsString( scaffold.document_class ) then + scaffold.document_class := [ scaffold.document_class ]; + fi; + + if position_document_class = fail then + Error( "something is wrong with the LaTeX header" ); + fi; + + GAPDoc2LaTeXProcs.Head := Concatenation( + GAPDoc2LaTeXProcs.Head{[ 1 .. PositionSublist( GAPDoc2LaTeXProcs.Head, "{", position_document_class ) ]}, + scaffold.document_class[ 1 ], + GAPDoc2LaTeXProcs.Head{[ PositionSublist( GAPDoc2LaTeXProcs.Head, "}", position_document_class ) .. Length( GAPDoc2LaTeXProcs.Head ) ]} ); + + if Length( scaffold.document_class ) = 2 then + + GAPDoc2LaTeXProcs.Head := Concatenation( + GAPDoc2LaTeXProcs.Head{[ 1 .. PositionSublist( GAPDoc2LaTeXProcs.Head, "[", position_document_class ) ]}, + scaffold.document_class[ 2 ], + GAPDoc2LaTeXProcs.Head{[ PositionSublist( GAPDoc2LaTeXProcs.Head, "]", position_document_class ) .. Length( GAPDoc2LaTeXProcs.Head ) ]} ); + fi; + fi; + + if IsBound( scaffold.latex_header_file ) then + GAPDoc2LaTeXProcs.Head := StringFile( scaffold.latex_header_file ); + fi; + + if IsBound( scaffold.gapdoc_latex_options ) then + if IsRecord( scaffold.gapdoc_latex_options ) then + for i in RecNames( scaffold.gapdoc_latex_options ) do + if not IsString( scaffold.gapdoc_latex_options.( i ) ) + and IsList( scaffold.gapdoc_latex_options.( i ) ) + and LowercaseString( scaffold.gapdoc_latex_options.( i )[ 1 ] ) = "file" then + scaffold.gapdoc_latex_options.( i ) := StringFile( scaffold.gapdoc_latex_options.( i )[ 2 ] ); + fi; + od; + + gapdoc_latex_option_record := scaffold.gapdoc_latex_options; + fi; + fi; + + if not IsBound( scaffold.includes ) then + scaffold.includes := [ ]; + fi; + + if IsBound( autodoc ) then + # If scaffold.includes is already set, then we add + # AutoDocMainFile.xml to it, but *only* if it not already + # there. This way, package authors can control where + # it is put in their includes list. + if not "AutoDocMainFile.xml" in scaffold.includes then + Add( scaffold.includes, "AutoDocMainFile.xml" ); + fi; + fi; + + if IsBound( scaffold.bib ) and IsBool( scaffold.bib ) then + if scaffold.bib = true then + scaffold.bib := Concatenation( pkg, ".bib" ); + else + Unbind( scaffold.bib ); + fi; + elif not IsBound( scaffold.bib ) then + # If there is a doc/PKG.bib file, assume that we want to reference it in the scaffold. + if IsReadableFile( Filename( doc_dir, Concatenation( pkg, ".bib" ) ) ) then + scaffold.bib := Concatenation( pkg, ".bib" ); + fi; + fi; + + AUTODOC_WriteOnce( scaffold, "index", true ); + + if IsBound( gapdoc ) then + if AUTODOC_GetSuffix( gapdoc.main ) = "xml" then + scaffold.main_xml_file := gapdoc.main; + else + scaffold.main_xml_file := Concatenation( gapdoc.main, ".xml" ); + fi; + fi; + + # TODO: It should be possible to only rebuild the title page. (Perhaps also only the main page? but this is less important) + if IsBound( scaffold.TitlePage ) then + if IsRecord( scaffold.TitlePage ) then + title_page := scaffold.TitlePage; + else + title_page := rec( ); + fi; + + AUTODOC_WriteOnce( title_page, "dir", doc_dir ); + AUTODOC_APPEND_RECORD_WRITEONCE( title_page, tree!.TitlePage ); + + if not is_worksheet then + AUTODOC_APPEND_RECORD_WRITEONCE( title_page, ExtractTitleInfoFromPackageInfo( pkg ) ); + fi; + + CreateTitlePage( title_page ); + fi; + + if IsBound( scaffold.MainPage ) and scaffold.MainPage <> false then + scaffold.dir := doc_dir; + scaffold.book_name := pkg; + CreateMainPage( scaffold ); + fi; + fi; + + # + # Run AutoDoc + # + if IsBound( autodoc ) then + WriteDocumentation( tree, doc_dir ); + fi; + + + # + # Run GAPDoc + # + if IsBound( gapdoc ) then + + # Ask GAPDoc to use UTF-8 as input encoding for LaTeX, as the XML files + # of the documentation are also in UTF-8 encoding, and may contain characters + # not contained in the default Latin 1 encoding. + SetGapDocLaTeXOptions( "utf8", gapdoc_latex_option_record ); + + MakeGAPDocDoc( doc_dir, gapdoc.main, gapdoc.files, gapdoc.bookname, "MathJax" ); + + CopyHTMLStyleFiles( Filename( doc_dir, "" ) ); + + # The following (undocumented) API is there for compatibility + # with old-style gapmacro.tex based package manuals. It + # produces a manual.lab file which those packages can use if + # they wish to link to things in the manual we are currently + # generating. This can probably be removed eventually, but for + # now, doing it does not hurt. + + # FIXME: It seems that this command does not work if pdflatex + # is not present. Maybe we should remove it. + + if not is_worksheet then + GAPDocManualLab( pkg ); + fi; + + fi; + + if IsBound( maketest ) then + + AUTODOC_WriteOnce( maketest, "filename", "maketest.g" ); + AUTODOC_WriteOnce( maketest, "folder", pkg_dir ); + AUTODOC_WriteOnce( maketest, "scan_dir", doc_dir ); + AUTODOC_WriteOnce( maketest, "files_to_scan", gapdoc.files ); + + if IsString( maketest.folder ) then + maketest.folder := Directory( maketest.folder ); + fi; + + if IsString( maketest.scan_dir ) then + maketest.scan_dir := Directory( maketest.scan_dir ); + fi; + + AUTODOC_WriteOnce( maketest, "commands", [ ] ); + AUTODOC_WriteOnce( maketest, "book_name", gapdoc.main ); + + CreateMakeTest( maketest ); + fi; + + return true; +end ); diff --git a/samples/GAP/PackageInfo.g b/samples/GAP/PackageInfo.g new file mode 100644 index 00000000..68e5ecdb --- /dev/null +++ b/samples/GAP/PackageInfo.g @@ -0,0 +1,115 @@ +############################################################################# +## +## PackageInfo.g for the package `cvec' Max Neunhoeffer +## +## (created from Frank Lübeck's PackageInfo.g template file) +## + +SetPackageInfo( rec( + +PackageName := "cvec", +Subtitle := "Compact vectors over finite fields", +Version := "2.5.1", +Date := "04/04/2014", # dd/mm/yyyy format + +## Information about authors and maintainers. +Persons := [ + rec( + LastName := "Neunhoeffer", + FirstNames := "Max", + IsAuthor := true, + IsMaintainer := false, + Email := "neunhoef@mcs.st-and.ac.uk", + WWWHome := "http://www-groups.mcs.st-and.ac.uk/~neunhoef/", + PostalAddress := Concatenation( [ + "School of Mathematics and Statistics\n", + "University of St Andrews\n", + "Mathematical Institute\n", + "North Haugh\n", + "St Andrews, Fife KY16 9SS\n", + "Scotland, UK" ] ), + Place := "St Andrews", + Institution := "University of St Andrews" + ), +], + +## Status information. Currently the following cases are recognized: +## "accepted" for successfully refereed packages +## "deposited" for packages for which the GAP developers agreed +## to distribute them with the core GAP system +## "dev" for development versions of packages +## "other" for all other packages +## +# Status := "accepted", +Status := "deposited", + +## You must provide the next two entries if and only if the status is +## "accepted" because is was successfully refereed: +# format: 'name (place)' +# CommunicatedBy := "Mike Atkinson (St. Andrews)", +#CommunicatedBy := "", +# format: mm/yyyy +# AcceptDate := "08/1999", +#AcceptDate := "", + +PackageWWWHome := "http://neunhoef.github.io/cvec/", +README_URL := Concatenation(~.PackageWWWHome, "README"), +PackageInfoURL := Concatenation(~.PackageWWWHome, "PackageInfo.g"), +ArchiveURL := Concatenation("https://github.com/neunhoef/cvec/", + "releases/download/v", ~.Version, + "/cvec-", ~.Version), +ArchiveFormats := ".tar.gz .tar.bz2", + +## Here you must provide a short abstract explaining the package content +## in HTML format (used on the package overview Web page) and an URL +## for a Webpage with more detailed information about the package +## (not more than a few lines, less is ok): +## Please, use 'GAP' and +## 'MyPKG' for specifing package names. +## +AbstractHTML := + "This package provides an implementation of compact vectors over finite\ + fields. Contrary to earlier implementations no table lookups are used\ + but only word-based processor arithmetic. This allows for bigger finite\ + fields and higher speed.", + +PackageDoc := rec( + BookName := "cvec", + ArchiveURLSubset := ["doc"], + HTMLStart := "doc/chap0.html", + PDFFile := "doc/manual.pdf", + SixFile := "doc/manual.six", + LongTitle := "Compact vectors over finite fields", +), + +Dependencies := rec( + GAP := ">=4.5.5", + NeededOtherPackages := [ + ["GAPDoc", ">= 1.2"], + ["IO", ">= 4.1"], + ["orb", ">= 4.2"], + ], + SuggestedOtherPackages := [], + ExternalConditions := [] +), + +AvailabilityTest := function() + if not "cvec" in SHOW_STAT() and + Filename(DirectoriesPackagePrograms("cvec"), "cvec.so") = fail then + #Info(InfoWarning, 1, "cvec: kernel cvec functions not available."); + return fail; + fi; + return true; +end, + +## *Optional*, but recommended: path relative to package root to a file which +## contains as many tests of the package functionality as sensible. +#TestFile := "tst/testall.g", + +## *Optional*: Here you can list some keyword related to the topic +## of the package. +Keywords := [] + +)); + + diff --git a/samples/GAP/example.gd b/samples/GAP/example.gd new file mode 100644 index 00000000..c285ea32 --- /dev/null +++ b/samples/GAP/example.gd @@ -0,0 +1,23 @@ +############################################################################# +## +#W example.gd +## +## This file contains a sample of a GAP declaration file. +## +DeclareProperty( "SomeProperty", IsLeftModule ); +DeclareGlobalFunction( "SomeGlobalFunction" ); + + +############################################################################# +## +#C IsQuuxFrobnicator() +## +## +## +## +## +## Tests whether R is a quux frobnicator. +## +## +## +DeclareSynonym( "IsQuuxFrobnicator", IsField and IsGroup ); diff --git a/samples/GAP/example.gi b/samples/GAP/example.gi new file mode 100644 index 00000000..c9c5e55d --- /dev/null +++ b/samples/GAP/example.gi @@ -0,0 +1,64 @@ +############################################################################# +## +#W example.gd +## +## This file contains a sample of a GAP implementation file. +## + + +############################################################################# +## +#M SomeOperation( ) +## +## performs some operation on +## +InstallMethod( SomeProperty, + "for left modules", + [ IsLeftModule ], 0, + function( M ) + if IsFreeLeftModule( M ) and not IsTrivial( M ) then + return true; + fi; + TryNextMethod(); + end ); + + + +############################################################################# +## +#F SomeGlobalFunction( ) +## +## A global variadic funfion. +## +InstallGlobalFunction( SomeGlobalFunction, function( arg ) + if Length( arg ) = 3 then + return arg[1] + arg[2] * arg[3]; + elif Length( arg ) = 2 then + return arg[1] - arg[2] + else + Error( "usage: SomeGlobalFunction( , [, ] )" ); + fi; + end ); + + +# +# A plain function. +# +SomeFunc := function(x, y) + local z, func, tmp, j; + z := x * 1.0; + y := 17^17 - y; + func := a -> a mod 5; + tmp := List( [1..50], func ); + while y > 0 do + for j in tmp do + Print(j, "\n"); + od; + repeat + y := y - 1; + until 0 < 1; + y := y -1; + od; + return z; +end; + \ No newline at end of file diff --git a/samples/GAP/vspc.gd b/samples/GAP/vspc.gd new file mode 100644 index 00000000..d381e6f1 --- /dev/null +++ b/samples/GAP/vspc.gd @@ -0,0 +1,822 @@ +############################################################################# +## +#W vspc.gd GAP library Thomas Breuer +## +## +#Y Copyright (C) 1997, Lehrstuhl D für Mathematik, RWTH Aachen, Germany +#Y (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland +#Y Copyright (C) 2002 The GAP Group +## +## This file declares the operations for vector spaces. +## +## The operations for bases of free left modules can be found in the file +## lib/basis.gd. +## + + +############################################################################# +## +#C IsLeftOperatorRing() +## +## +## +## +## +## +## +## +DeclareSynonym( "IsLeftOperatorRing", + IsLeftOperatorAdditiveGroup and IsRing and IsAssociativeLOpDProd ); +#T really? + + +############################################################################# +## +#C IsLeftOperatorRingWithOne() +## +## +## +## +## +## +## +## +DeclareSynonym( "IsLeftOperatorRingWithOne", + IsLeftOperatorAdditiveGroup and IsRingWithOne + and IsAssociativeLOpDProd ); +#T really? + + +############################################################################# +## +#C IsLeftVectorSpace( ) +#C IsVectorSpace( ) +## +## <#GAPDoc Label="IsLeftVectorSpace"> +## +## +## +## +## +## A vector space in &GAP; is a free left module +## (see ) over a division ring +## (see Chapter ). +##

+## Whenever we talk about an F-vector space V then V is +## an additive group (see ) on which the +## division ring F acts via multiplication from the left such that +## this action and the addition in V are left and right distributive. +## The division ring F can be accessed as value of the attribute +## . +##

+## Vector spaces in &GAP; are always left vector spaces, +## and are +## synonyms. +## +## +## <#/GAPDoc> +## +DeclareSynonym( "IsLeftVectorSpace", + IsLeftModule and IsLeftActedOnByDivisionRing ); + +DeclareSynonym( "IsVectorSpace", IsLeftVectorSpace ); + +InstallTrueMethod( IsFreeLeftModule, + IsLeftModule and IsLeftActedOnByDivisionRing ); + + +############################################################################# +## +#F IsGaussianSpace( ) +## +## <#GAPDoc Label="IsGaussianSpace"> +## +## +## +## +## The filter (see ) +## for the row space (see ) +## or matrix space (see ) V +## over the field F, say, +## indicates that the entries of all row vectors or matrices in V, +## respectively, are all contained in F. +## In this case, V is called a Gaussian vector space. +## Bases for Gaussian spaces can be computed using Gaussian elimination for +## a given list of vector space generators. +## mats:= [ [[1,1],[2,2]], [[3,4],[0,1]] ];; +## gap> V:= VectorSpace( Rationals, mats );; +## gap> IsGaussianSpace( V ); +## true +## gap> mats[1][1][1]:= E(4);; # an element in an extension field +## gap> V:= VectorSpace( Rationals, mats );; +## gap> IsGaussianSpace( V ); +## false +## gap> V:= VectorSpace( Field( Rationals, [ E(4) ] ), mats );; +## gap> IsGaussianSpace( V ); +## true +## ]]> +## +## +## <#/GAPDoc> +## +DeclareFilter( "IsGaussianSpace", IsVectorSpace ); + +InstallTrueMethod( IsGaussianSpace, + IsVectorSpace and IsFullMatrixModule ); + +InstallTrueMethod( IsGaussianSpace, + IsVectorSpace and IsFullRowModule ); + + +############################################################################# +## +#C IsDivisionRing( ) +## +## <#GAPDoc Label="IsDivisionRing"> +## +## +## +## +## A division ring in &GAP; is a nontrivial associative algebra +## D with a multiplicative inverse for each nonzero element. +## In &GAP; every division ring is a vector space over a division ring +## (possibly over itself). +## Note that being a division ring is thus not a property that a ring can +## get, because a ring is usually not represented as a vector space. +##

+## The field of coefficients is stored as the value of the attribute +## of D. +## +## +## <#/GAPDoc> +## +DeclareSynonymAttr( "IsDivisionRing", + IsMagmaWithInversesIfNonzero + and IsLeftOperatorRingWithOne + and IsLeftVectorSpace + and IsNonTrivial + and IsAssociative + and IsEuclideanRing ); + + +############################################################################# +## +#A GeneratorsOfLeftVectorSpace( ) +#A GeneratorsOfVectorSpace( ) +## +## <#GAPDoc Label="GeneratorsOfLeftVectorSpace"> +## +## +## +## +## +## For an F-vector space V, +## returns a list of vectors in +## V that generate V as an F-vector space. +## GeneratorsOfVectorSpace( FullRowSpace( Rationals, 3 ) ); +## [ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] +## ]]> +## +## +## <#/GAPDoc> +## +DeclareSynonymAttr( "GeneratorsOfLeftVectorSpace", + GeneratorsOfLeftOperatorAdditiveGroup ); + +DeclareSynonymAttr( "GeneratorsOfVectorSpace", + GeneratorsOfLeftOperatorAdditiveGroup ); + + +############################################################################# +## +#A CanonicalBasis( ) +## +## <#GAPDoc Label="CanonicalBasis"> +## +## +## +## +## If the vector space V supports a canonical basis then +## returns this basis, +## otherwise fail is returned. +##

+## The defining property of a canonical basis is that its vectors are +## uniquely determined by the vector space. +## If canonical bases exist for two vector spaces over the same left acting +## domain (see ) then the equality of +## these vector spaces can be decided by comparing the canonical bases. +##

+## The exact meaning of a canonical basis depends on the type of V. +## Canonical bases are defined for example for Gaussian row and matrix +## spaces (see ). +##

+## If one designs a new kind of vector spaces +## (see ) and +## defines a canonical basis for these spaces then the +## method one installs +## (see ) +## must not call . +## On the other hand, one probably should install a +## method that simply calls , +## the value of the method +## (see  and +## ) +## being CANONICAL_BASIS_FLAGS. +## vecs:= [ [ 1, 2, 3 ], [ 1, 1, 1 ], [ 1, 1, 1 ] ];; +## gap> V:= VectorSpace( Rationals, vecs );; +## gap> B:= CanonicalBasis( V ); +## CanonicalBasis( ) +## gap> BasisVectors( B ); +## [ [ 1, 0, -1 ], [ 0, 1, 2 ] ] +## ]]> +## +## +## <#/GAPDoc> +## +DeclareAttribute( "CanonicalBasis", IsFreeLeftModule ); + + +############################################################################# +## +#F IsRowSpace( ) +## +## <#GAPDoc Label="IsRowSpace"> +## +## +## +## +## A row space in &GAP; is a vector space that consists of +## row vectors (see Chapter ). +## +## +## <#/GAPDoc> +## +DeclareSynonym( "IsRowSpace", IsRowModule and IsVectorSpace ); + + +############################################################################# +## +#F IsGaussianRowSpace( ) +## +## +## +## +## +## A row space is Gaussian if the left acting domain contains all +## scalars that occur in the vectors. +## Thus one can use Gaussian elimination in the calculations. +##

+## (Otherwise the space is non-Gaussian. +## We will need a flag for this to write down methods that delegate from +## non-Gaussian spaces to Gaussian ones.) +## +## +## +## +DeclareSynonym( "IsGaussianRowSpace", IsGaussianSpace and IsRowSpace ); + + +############################################################################# +## +#F IsNonGaussianRowSpace( ) +## +## +## +## +## +## If an F-vector space V is in the filter +## then this expresses that V +## consists of row vectors (see ) such +## that not all entries in these row vectors are contained in F +## (so Gaussian elimination cannot be used to compute an F-basis +## from a list of vector space generators), +## and that V is handled via the mechanism of nice bases +## (see ) in the following way. +## Let K be the field spanned by the entries of all vectors in +## V. +## Then the value of V is +## a basis B of the field extension K / ( K \cap F ), +## and the value of v \in V +## is defined by replacing each entry of v by the list of its +## B-coefficients, and then forming the concatenation. +##

+## So the associated nice vector space is a Gaussian row space +## (see ). +## +## +## +DeclareHandlingByNiceBasis( "IsNonGaussianRowSpace", + "for non-Gaussian row spaces" ); + + +############################################################################# +## +#F IsMatrixSpace( ) +## +## <#GAPDoc Label="IsMatrixSpace"> +## +## +## +## +## A matrix space in &GAP; is a vector space that consists of matrices +## (see Chapter ). +## +## +## <#/GAPDoc> +## +DeclareSynonym( "IsMatrixSpace", IsMatrixModule and IsVectorSpace ); + + +############################################################################# +## +#F IsGaussianMatrixSpace( ) +## +## +## +## +## +## A matrix space is Gaussian if the left acting domain contains all +## scalars that occur in the vectors. +## Thus one can use Gaussian elimination in the calculations. +##

+## (Otherwise the space is non-Gaussian. +## We will need a flag for this to write down methods that delegate from +## non-Gaussian spaces to Gaussian ones.) +## +## +## +DeclareSynonym( "IsGaussianMatrixSpace", IsGaussianSpace and IsMatrixSpace ); + + +############################################################################# +## +#F IsNonGaussianMatrixSpace( ) +## +## +## +## +## +## If an F-vector space V is in the filter +## +## then this expresses that V consists of matrices +## (see ) +## such that not all entries in these matrices are contained in F +## (so Gaussian elimination cannot be used to compute an F-basis +## from a list of vector space generators), +## and that V is handled via the mechanism of nice bases +## (see ) in the following way. +## Let K be the field spanned by the entries of all vectors in V. +## The value of V is irrelevant, +## and the value of v \in V +## is defined as the concatenation of the rows of v. +##

+## So the associated nice vector space is a (not necessarily Gaussian) +## row space (see ). +## +## +## +DeclareHandlingByNiceBasis( "IsNonGaussianMatrixSpace", + "for non-Gaussian matrix spaces" ); + + +############################################################################# +## +#A NormedRowVectors( ) . . . normed vectors in a Gaussian row space +## +## <#GAPDoc Label="NormedRowVectors"> +## +## +## +## +## For a finite Gaussian row space V +## (see , ), +## returns a list of those nonzero +## vectors in V that have a one in the first nonzero component. +##

+## The result list can be used as action domain for the action of a matrix +## group via , which yields the natural action on +## one-dimensional subspaces of V +## (see also ). +## vecs:= NormedRowVectors( GF(3)^2 ); +## [ [ 0*Z(3), Z(3)^0 ], [ Z(3)^0, 0*Z(3) ], [ Z(3)^0, Z(3)^0 ], +## [ Z(3)^0, Z(3) ] ] +## gap> Action( GL(2,3), vecs, OnLines ); +## Group([ (3,4), (1,2,4) ]) +## ]]> +## +## +## <#/GAPDoc> +## +DeclareAttribute( "NormedRowVectors", IsGaussianSpace ); + + +############################################################################# +## +#A TrivialSubspace( ) +## +## <#GAPDoc Label="TrivialSubspace"> +## +## +## +## +## For a vector space V, returns the +## subspace of V that consists of the zero vector in V. +## V:= GF(3)^3;; +## gap> triv:= TrivialSubspace( V ); +## +## gap> AsSet( triv ); +## [ [ 0*Z(3), 0*Z(3), 0*Z(3) ] ] +## ]]> +## +## +## <#/GAPDoc> +## +DeclareSynonymAttr( "TrivialSubspace", TrivialSubmodule ); + + +############################################################################# +## +#F VectorSpace( , [, ][, "basis"] ) +## +## <#GAPDoc Label="VectorSpace"> +## +## +## +## +## For a field F and a collection gens of vectors, +## returns the F-vector space spanned by +## the elements in gens. +##

+## The optional argument zero can be used to specify the zero element +## of the space; zero must be given if gens is empty. +## The optional string "basis" indicates that gens is known to +## be linearly independent over F, in particular the dimension of the +## vector space is immediately set; +## note that need not return the basis formed by +## gens if the string "basis" is given as an argument. +## +## V:= VectorSpace( Rationals, [ [ 1, 2, 3 ], [ 1, 1, 1 ] ] ); +## +## ]]> +## +## +## <#/GAPDoc> +## +DeclareGlobalFunction( "VectorSpace" ); + + +############################################################################# +## +#F Subspace( , [, "basis"] ) . subspace of generated by +#F SubspaceNC( , [, "basis"] ) +## +## <#GAPDoc Label="Subspace"> +## +## +## +## +## +## For an F-vector space V and a list or collection +## gens that is a subset of V, +## returns the F-vector space spanned by +## gens; if gens is empty then the trivial subspace +## (see ) of V is returned. +## The parent (see ) of the returned vector space +## is set to V. +##

+## does the same as , +## except that it omits the check whether gens is a subset of +## V. +##

+## The optional string "basis" indicates that gens is known to +## be linearly independent over F. +## In this case the dimension of the subspace is immediately set, +## and both and do +## not check whether gens really is linearly independent and +## whether gens is a subset of V. +## +## V:= VectorSpace( Rationals, [ [ 1, 2, 3 ], [ 1, 1, 1 ] ] );; +## gap> W:= Subspace( V, [ [ 0, 1, 2 ] ] ); +## +## ]]> +## +## +## <#/GAPDoc> +## +DeclareSynonym( "Subspace", Submodule ); + +DeclareSynonym( "SubspaceNC", SubmoduleNC ); + + +############################################################################# +## +#O AsVectorSpace( , ) . . . . . . . . . view as -vector space +## +## <#GAPDoc Label="AsVectorSpace"> +## +## +## +## +## Let F be a division ring and D a domain. +## If the elements in D form an F-vector space then +## returns this F-vector space, +## otherwise fail is returned. +##

+## can be used for example to view a given +## vector space as a vector space over a smaller or larger division ring. +## V:= FullRowSpace( GF( 27 ), 3 ); +## ( GF(3^3)^3 ) +## gap> Dimension( V ); LeftActingDomain( V ); +## 3 +## GF(3^3) +## gap> W:= AsVectorSpace( GF( 3 ), V ); +## +## gap> Dimension( W ); LeftActingDomain( W ); +## 9 +## GF(3) +## gap> AsVectorSpace( GF( 9 ), V ); +## fail +## ]]> +## +## +## <#/GAPDoc> +## +DeclareSynonym( "AsVectorSpace", AsLeftModule ); + + +############################################################################# +## +#O AsSubspace( , ) . . . . . . . . . . . view as subspace of +## +## <#GAPDoc Label="AsSubspace"> +## +## +## +## +## Let V be an F-vector space, and U a collection. +## If U is a subset of V such that the elements of U +## form an F-vector space then returns this +## vector space, with parent set to V +## (see ). +## Otherwise fail is returned. +## V:= VectorSpace( Rationals, [ [ 1, 2, 3 ], [ 1, 1, 1 ] ] );; +## gap> W:= VectorSpace( Rationals, [ [ 1/2, 1/2, 1/2 ] ] );; +## gap> U:= AsSubspace( V, W ); +## +## gap> Parent( U ) = V; +## true +## gap> AsSubspace( V, [ [ 1, 1, 1 ] ] ); +## fail +## ]]> +## +## +## <#/GAPDoc> +## +DeclareOperation( "AsSubspace", [ IsVectorSpace, IsCollection ] ); + + +############################################################################# +## +#F Intersection2Spaces( , , ) +## +## +## +## +## +## is a function that takes two arguments V and W which must +## be finite dimensional vector spaces, +## and returns the intersection of V and W. +##

+## If the left acting domains are different then let F be their +## intersection. +## The intersection of V and W is computed as intersection of +## AsStruct( F, V ) and +## AsStruct( F, V ). +##

+## If the left acting domains are equal to F then the intersection of +## V and W is returned either as F-Substruct +## with the common parent of V and W or as +## F-Struct, in both cases with known basis. +##

+## This function is used to handle the intersections of two vector spaces, +## two algebras, two algebras-with-one, two left ideals, two right ideals, +## two two-sided ideals. +## +## +## +DeclareGlobalFunction( "Intersection2Spaces" ); + + +############################################################################# +## +#F FullRowSpace( , ) +## +## <#GAPDoc Label="FullRowSpace"> +## +## +## +## +## +## For a field F and a nonnegative integer n, +## returns the F-vector space that +## consists of all row vectors (see ) of +## length n with entries in F. +##

+## An alternative to construct this vector space is via +## F^n. +## FullRowSpace( GF( 9 ), 3 ); +## ( GF(3^2)^3 ) +## gap> GF(9)^3; # the same as above +## ( GF(3^2)^3 ) +## ]]> +## +## +## <#/GAPDoc> +## +DeclareSynonym( "FullRowSpace", FullRowModule ); +DeclareSynonym( "RowSpace", FullRowModule ); + + +############################################################################# +## +#F FullMatrixSpace( , , ) +## +## <#GAPDoc Label="FullMatrixSpace"> +## +## +## +## +## +## For a field F and two positive integers m and n, +## returns the F-vector space that +## consists of all m by n matrices +## (see ) with entries in F. +##

+## If m = n then the result is in fact an algebra +## (see ). +##

+## An alternative to construct this vector space is via +## F^[m,n]. +## FullMatrixSpace( GF(2), 4, 5 ); +## ( GF(2)^[ 4, 5 ] ) +## gap> GF(2)^[ 4, 5 ]; # the same as above +## ( GF(2)^[ 4, 5 ] ) +## ]]> +## +## +## <#/GAPDoc> +## +DeclareSynonym( "FullMatrixSpace", FullMatrixModule ); +DeclareSynonym( "MatrixSpace", FullMatrixModule ); +DeclareSynonym( "MatSpace", FullMatrixModule ); + + +############################################################################# +## +#C IsSubspacesVectorSpace( ) +## +## <#GAPDoc Label="IsSubspacesVectorSpace"> +## +## +## +## +## The domain of all subspaces of a (finite) vector space or of all +## subspaces of fixed dimension, as returned by +## (see ) lies in the category +## . +## D:= Subspaces( GF(3)^3 ); +## Subspaces( ( GF(3)^3 ) ) +## gap> Size( D ); +## 28 +## gap> iter:= Iterator( D );; +## gap> NextIterator( iter ); +## +## gap> NextIterator( iter ); +## +## gap> IsSubspacesVectorSpace( D ); +## true +## ]]> +## +## +## <#/GAPDoc> +## +DeclareCategory( "IsSubspacesVectorSpace", IsDomain ); + + +############################################################################# +## +#M IsFinite( ) . . . . . . . . . . . . . . . . . for a subspaces domain +## +## Returns `true' if is finite. +## We allow subspaces domains in `IsSubspacesVectorSpace' only for finite +## vector spaces. +## +InstallTrueMethod( IsFinite, IsSubspacesVectorSpace ); + + +############################################################################# +## +#A Subspaces( [, ] ) +## +## <#GAPDoc Label="Subspaces"> +## +## +## +## +## Called with a finite vector space v, +## returns the domain of all subspaces of V. +##

+## Called with V and a nonnegative integer k, +## returns the domain of all k-dimensional +## subspaces of V. +##

+## Special and methods are +## provided for these domains. +## +## +## +## <#/GAPDoc> +## +DeclareAttribute( "Subspaces", IsLeftModule ); +DeclareOperation( "Subspaces", [ IsLeftModule, IsInt ] ); + + +############################################################################# +## +#F IsSubspace( , ) +## +## +## +## +## +## check that U is a vector space that is contained in V +## +## +## +## +DeclareGlobalFunction( "IsSubspace" ); + + +############################################################################# +## +#A OrthogonalSpaceInFullRowSpace( ) +## +## +## +## +## +## For a Gaussian row space U over F, +## +## returns a complement of U in the full row space of same vector +## dimension as U over F. +## +## +## +DeclareAttribute( "OrthogonalSpaceInFullRowSpace", IsGaussianSpace ); + + +############################################################################# +## +#P IsVectorSpaceHomomorphism( ) +## +## +## +## +## +## A mapping f is a vector space homomorphism (or linear mapping) +## if the source and range are vector spaces +## (see ) +## over the same division ring D +## (see ), +## and if f( a + b ) = f(a) + f(b) and f( s * a ) = s * f(a) +## hold for all elements a, b in the source of f and +## s \in D. +## +## +## +DeclareProperty( "IsVectorSpaceHomomorphism", IsGeneralMapping ); + + +############################################################################# +## +#E + diff --git a/samples/GAP/vspc.gi b/samples/GAP/vspc.gi new file mode 100644 index 00000000..b7a88871 --- /dev/null +++ b/samples/GAP/vspc.gi @@ -0,0 +1,651 @@ +############################################################################# +## +#W vspc.gi GAP library Thomas Breuer +## +## +#Y Copyright (C) 1997, Lehrstuhl D für Mathematik, RWTH Aachen, Germany +#Y (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland +#Y Copyright (C) 2002 The GAP Group +## +## This file contains generic methods for vector spaces. +## + + +############################################################################# +## +#M SetLeftActingDomain( , ) +## +## check whether the left acting domain of the external left set +## knows that it is a division ring. +## This is used, e.g., to tell a free module over a division ring +## that it is a vector space. +## +InstallOtherMethod( SetLeftActingDomain, + "method to set also 'IsLeftActedOnByDivisionRing'", + [ IsAttributeStoringRep and IsLeftActedOnByRing, IsObject ],0, + function( extL, D ) + if HasIsDivisionRing( D ) and IsDivisionRing( D ) then + SetIsLeftActedOnByDivisionRing( extL, true ); + fi; + TryNextMethod(); + end ); + + +############################################################################# +## +#M IsLeftActedOnByDivisionRing( ) +## +InstallMethod( IsLeftActedOnByDivisionRing, + "method for external left set that is left acted on by a ring", + [ IsExtLSet and IsLeftActedOnByRing ], + function( M ) + if IsIdenticalObj( M, LeftActingDomain( M ) ) then + TryNextMethod(); + else + return IsDivisionRing( LeftActingDomain( M ) ); + fi; + end ); + + +############################################################################# +## +#F VectorSpace( , [, ][, "basis"] ) +## +## The only difference between `VectorSpace' and `FreeLeftModule' shall be +## that the left acting domain of a vector space must be a division ring. +## +InstallGlobalFunction( VectorSpace, function( arg ) + if Length( arg ) = 0 or not IsDivisionRing( arg[1] ) then + Error( "usage: VectorSpace( , [, ][, \"basis\"] )" ); + fi; + return CallFuncList( FreeLeftModule, arg ); + end ); + + +############################################################################# +## +#M AsSubspace( , ) . . . . . . . for a vector space and a collection +## +InstallMethod( AsSubspace, + "for a vector space and a collection", + [ IsVectorSpace, IsCollection ], + function( V, C ) + local newC; + + if not IsSubset( V, C ) then + return fail; + fi; + newC:= AsVectorSpace( LeftActingDomain( V ), C ); + if newC = fail then + return fail; + fi; + SetParent( newC, V ); + UseIsomorphismRelation( C, newC ); + UseSubsetRelation( C, newC ); + + return newC; + end ); + + +############################################################################# +## +#M AsLeftModule( , ) . . . . . . for division ring and vector space +## +## View the vector space as a vector space over the division ring . +## +InstallMethod( AsLeftModule, + "method for a division ring and a vector space", + [ IsDivisionRing, IsVectorSpace ], + function( F, V ) + + local W, # the space, result + base, # basis vectors of field extension + gen, # loop over generators of 'V' + b, # loop over 'base' + gens, # generators of 'V' + newgens; # extended list of generators + + if Characteristic( F ) <> Characteristic( LeftActingDomain( V ) ) then + + # This is impossible. + return fail; + + elif F = LeftActingDomain( V ) then + + # No change of the left acting domain is necessary. + return V; + + elif IsSubset( F, LeftActingDomain( V ) ) then + + # Check whether 'V' is really a space over the bigger field, + # that is, whether the set of elements does not change. + base:= BasisVectors( Basis( AsField( LeftActingDomain( V ), F ) ) ); + for gen in GeneratorsOfLeftModule( V ) do + for b in base do + if not b * gen in V then + + # The field extension would change the set of elements. + return fail; + + fi; + od; + od; + + # Construct the space. + W:= LeftModuleByGenerators( F, GeneratorsOfLeftModule(V), Zero(V) ); + + elif IsSubset( LeftActingDomain( V ), F ) then + + # View 'V' as a space over a smaller field. + # For that, the list of generators must be extended. + gens:= GeneratorsOfLeftModule( V ); + if IsEmpty( gens ) then + W:= LeftModuleByGenerators( F, [], Zero( V ) ); + else + + base:= BasisVectors( Basis( AsField( F, LeftActingDomain( V ) ) ) ); + newgens:= []; + for b in base do + for gen in gens do + Add( newgens, b * gen ); + od; + od; + W:= LeftModuleByGenerators( F, newgens ); + + fi; + + else + + # View 'V' first as space over the intersection of fields, + # and then over the desired field. + return AsLeftModule( F, + AsLeftModule( Intersection( F, + LeftActingDomain( V ) ), V ) ); + + fi; + + UseIsomorphismRelation( V, W ); + UseSubsetRelation( V, W ); + return W; + end ); + + +############################################################################# +## +#M ViewObj( ) . . . . . . . . . . . . . . . . . . . view a vector space +## +## print left acting domain, if known also dimension or no. of generators +## +InstallMethod( ViewObj, + "for vector space with known generators", + [ IsVectorSpace and HasGeneratorsOfLeftModule ], + function( V ) + Print( "" ); + end ); + +InstallMethod( ViewObj, + "for vector space with known dimension", + [ IsVectorSpace and HasDimension ], + 1, # override method for known generators + function( V ) + Print( "" ); + end ); + +InstallMethod( ViewObj, + "for vector space", + [ IsVectorSpace ], + function( V ) + Print( "" ); + end ); + + +############################################################################# +## +#M PrintObj( ) . . . . . . . . . . . . . . . . . . . for a vector space +## +InstallMethod( PrintObj, + "method for vector space with left module generators", + [ IsVectorSpace and HasGeneratorsOfLeftModule ], + function( V ) + Print( "VectorSpace( ", LeftActingDomain( V ), ", ", + GeneratorsOfLeftModule( V ) ); + if IsEmpty( GeneratorsOfLeftModule( V ) ) and HasZero( V ) then + Print( ", ", Zero( V ), " )" ); + else + Print( " )" ); + fi; + end ); + +InstallMethod( PrintObj, + "method for vector space", + [ IsVectorSpace ], + function( V ) + Print( "VectorSpace( ", LeftActingDomain( V ), ", ... )" ); + end ); + + +############################################################################# +## +#M \/( , ) . . . . . . . . . factor of a vector space by a subspace +#M \/( , ) . . . . . . factor of a vector space by a subspace +## +InstallOtherMethod( \/, + "method for vector space and collection", + IsIdenticalObj, + [ IsVectorSpace, IsCollection ], + function( V, vectors ) + if IsVectorSpace( vectors ) then + TryNextMethod(); + else + return V / Subspace( V, vectors ); + fi; + end ); + +InstallOtherMethod( \/, + "generic method for two vector spaces", + IsIdenticalObj, + [ IsVectorSpace, IsVectorSpace ], + function( V, W ) + return ImagesSource( NaturalHomomorphismBySubspace( V, W ) ); + end ); + + +############################################################################# +## +#M Intersection2Spaces( , , ) +## +InstallGlobalFunction( Intersection2Spaces, + function( AsStructure, Substructure, Structure ) + return function( V, W ) + local inters, # intersection, result + F, # coefficients field + gensV, # list of generators of 'V' + gensW, # list of generators of 'W' + VW, # sum of 'V' and 'W' + B; # basis of 'VW' + + if LeftActingDomain( V ) <> LeftActingDomain( W ) then + + # Compute the intersection as vector space over the intersection + # of the coefficients fields. + # (Note that the characteristic is the same.) + F:= Intersection2( LeftActingDomain( V ), LeftActingDomain( W ) ); + return Intersection2( AsStructure( F, V ), AsStructure( F, W ) ); + + elif IsFiniteDimensional( V ) and IsFiniteDimensional( W ) then + + # Compute the intersection of two spaces over the same field. + gensV:= GeneratorsOfLeftModule( V ); + gensW:= GeneratorsOfLeftModule( W ); + if IsEmpty( gensV ) then + if Zero( V ) in W then + inters:= V; + else + inters:= []; + fi; + elif IsEmpty( gensW ) then + if Zero( V ) in W then + inters:= W; + else + inters:= []; + fi; + else + # Compute a common coefficient space. + VW:= LeftModuleByGenerators( LeftActingDomain( V ), + Concatenation( gensV, gensW ) ); + B:= Basis( VW ); + + # Construct the coefficient subspaces corresponding to 'V' and 'W'. + gensV:= List( gensV, x -> Coefficients( B, x ) ); + gensW:= List( gensW, x -> Coefficients( B, x ) ); + + # Construct the intersection of row spaces, and carry back to VW. + inters:= List( SumIntersectionMat( gensV, gensW )[2], + x -> LinearCombination( B, x ) ); + + # Construct the intersection space, if possible with a parent. + if HasParent( V ) and HasParent( W ) + and IsIdenticalObj( Parent( V ), Parent( W ) ) then + inters:= Substructure( Parent( V ), inters, "basis" ); + elif IsEmpty( inters ) then + inters:= Substructure( V, inters, "basis" ); + SetIsTrivial( inters, true ); + else + inters:= Structure( LeftActingDomain( V ), inters, "basis" ); + fi; + + # Run implications by the subset relation. + UseSubsetRelation( V, inters ); + UseSubsetRelation( W, inters ); + fi; + + # Return the result. + return inters; + + else + TryNextMethod(); + fi; + end; +end ); + + +############################################################################# +## +#M Intersection2( , ) . . . . . . . . . . . . . for two vector spaces +## +InstallMethod( Intersection2, + "method for two vector spaces", + IsIdenticalObj, + [ IsVectorSpace, IsVectorSpace ], + Intersection2Spaces( AsLeftModule, SubspaceNC, VectorSpace ) ); + + +############################################################################# +## +#M ClosureLeftModule( , ) . . . . . . . . . closure of a vector space +## +InstallMethod( ClosureLeftModule, + "method for a vector space with basis, and a vector", + IsCollsElms, + [ IsVectorSpace and HasBasis, IsVector ], + function( V, w ) + local B; # basis of 'V' + + # We can test membership easily. + B:= Basis( V ); +#T why easily? + if Coefficients( B, w ) = fail then + + # In the case of a vector space, we know a basis of the closure. + B:= Concatenation( BasisVectors( B ), [ w ] ); + V:= LeftModuleByGenerators( LeftActingDomain( V ), B ); + UseBasis( V, B ); + + fi; + return V; + end ); + + +############################################################################# +## +## Methods for collections of subspaces of a vector space +## + + +############################################################################# +## +#R IsSubspacesVectorSpaceDefaultRep( ) +## +## is the representation of domains of subspaces of a vector space , +## with the components 'structure' (with value ) and 'dimension' +## (with value either the dimension of the subspaces in the domain +## or the string '\"all\"', which means that the domain contains all +## subspaces of ). +## +DeclareRepresentation( + "IsSubspacesVectorSpaceDefaultRep", + IsComponentObjectRep, + [ "dimension", "structure" ] ); +#T not IsAttributeStoringRep? + + +############################################################################# +## +#M PrintObj( ) . . . . . . . . . . . . . . . . . for a subspaces domain +## +InstallMethod( PrintObj, + "method for a subspaces domain", + [ IsSubspacesVectorSpace and IsSubspacesVectorSpaceDefaultRep ], + function( D ) + if IsInt( D!.dimension ) then + Print( "Subspaces( ", D!.structure, ", ", D!.dimension, " )" ); + else + Print( "Subspaces( ", D!.structure, " )" ); + fi; + end ); + + +############################################################################# +## +#M Size( ) . . . . . . . . . . . . . . . . . . . for a subspaces domain +## +## The number of $k$-dimensional subspaces in a $n$-dimensional space over +## the field with $q$ elements is +## $$ +## a(n,k) = \prod_{i=0}^{k-1} \frac{q^n-q^i}{q^k-q^i} = +## \prod_{i=0}^{k-1} \frac{q^{n-i}-1}{q^{k-i}-1}. +## $$ +## We have the recursion +## $$ +## a(n,k+1) = a(n,k) \frac{q^{n-i}-1}{q^{i+1}-1}. +## $$ +## +## (The number of all subspaces is $\sum_{k=0}^n a(n,k)$.) +## +InstallMethod( Size, + "method for a subspaces domain", + [ IsSubspacesVectorSpace and IsSubspacesVectorSpaceDefaultRep ], + function( D ) + + local k, + n, + q, + size, + qn, + qd, + ank, + i; + + if D!.dimension = "all" then + + # all subspaces of the space + n:= Dimension( D!.structure ); + + q:= Size( LeftActingDomain( D!.structure ) ); + size:= 1; + qn:= q^n; + qd:= q; + + # $a(n,0)$ + ank:= 1; + + for k in [ 1 .. Int( (n-1)/2 ) ] do + + # Compute $a(n,k)$. + ank:= ank * ( qn - 1 ) / ( qd - 1 ); + qn:= qn / q; + qd:= qd * q; + + size:= size + ank; + + od; + + size:= 2 * size; + + if n mod 2 = 0 then + + # Add the number of spaces of dimension $n/2$. + size:= size + ank * ( qn - 1 ) / ( qd - 1 ); + fi; + + else + + # number of spaces of dimension 'k' only + n:= Dimension( D!.structure ); + if D!.dimension < 0 or + n < D!.dimension then + return 0; + elif n / 2 < D!.dimension then + k:= n - D!.dimension; + else + k:= D!.dimension; + fi; + + q:= Size( LeftActingDomain( D!.structure ) ); + size:= 1; + + qn:= q^n; + qd:= q; + for i in [ 1 .. k ] do + size:= size * ( qn - 1 ) / ( qd - 1 ); + qn:= qn / q; + qd:= qd * q; + od; + + fi; + + # Return the result. + return size; + end ); + + +############################################################################# +## +#M Enumerator( ) . . . . . . . . . . . . . . . . for a subspaces domain +## +## Use the iterator to compute the elements list. +#T This is not allowed! +## +InstallMethod( Enumerator, + "method for a subspaces domain", + [ IsSubspacesVectorSpace and IsSubspacesVectorSpaceDefaultRep ], + function( D ) + local iter, # iterator for 'D' + elms; # elements list, result + + iter:= Iterator( D ); + elms:= []; + while not IsDoneIterator( iter ) do + Add( elms, NextIterator( iter ) ); + od; + return elms; + end ); +#T necessary? + + +############################################################################# +## +#M Iterator( ) . . . . . . . . . . . . . . . . . for a subspaces domain +## +## uses the subspaces iterator for full row spaces and the mechanism of +## associated row spaces. +## +BindGlobal( "IsDoneIterator_Subspaces", + iter -> IsDoneIterator( iter!.associatedIterator ) ); + +BindGlobal( "NextIterator_Subspaces", function( iter ) + local next; + next:= NextIterator( iter!.associatedIterator ); + next:= List( GeneratorsOfLeftModule( next ), + x -> LinearCombination( iter!.basis, x ) ); + return Subspace( iter!.structure, next, "basis" ); + end ); + +BindGlobal( "ShallowCopy_Subspaces", + iter -> rec( structure := iter!.structure, + basis := iter!.basis, + associatedIterator := ShallowCopy( + iter!.associatedIterator ) ) ); + +InstallMethod( Iterator, + "for a subspaces domain", + [ IsSubspacesVectorSpace and IsSubspacesVectorSpaceDefaultRep ], + function( D ) + local V; # the vector space + + V:= D!.structure; + return IteratorByFunctions( rec( + IsDoneIterator := IsDoneIterator_Subspaces, + NextIterator := NextIterator_Subspaces, + ShallowCopy := ShallowCopy_Subspaces, + structure := V, + basis := Basis( V ), + associatedIterator := Iterator( + Subspaces( FullRowSpace( LeftActingDomain( V ), + Dimension( V ) ), + D!.dimension ) ) ) ); + end ); + + +############################################################################# +## +#M Subspaces( , ) +## +InstallMethod( Subspaces, + "for a vector space, and an integer", + [ IsVectorSpace, IsInt ], + function( V, dim ) + if IsFinite( V ) then + return Objectify( NewType( CollectionsFamily( FamilyObj( V ) ), + IsSubspacesVectorSpace + and IsSubspacesVectorSpaceDefaultRep ), + rec( + structure := V, + dimension := dim + ) + ); + else + TryNextMethod(); + fi; + end ); + + +############################################################################# +## +#M Subspaces( ) +## +InstallMethod( Subspaces, + "for a vector space", + [ IsVectorSpace ], + function( V ) + if IsFinite( V ) then + return Objectify( NewType( CollectionsFamily( FamilyObj( V ) ), + IsSubspacesVectorSpace + and IsSubspacesVectorSpaceDefaultRep ), + rec( + structure := V, + dimension := "all" + ) + ); + else + TryNextMethod(); + fi; + end ); + + +############################################################################# +## +#F IsSubspace( , ) . . . . . . . . . . . . . . . . . check <= +## +InstallGlobalFunction( IsSubspace, function( V, U ) + return IsVectorSpace( U ) and IsSubset( V, U ); +end ); + + +############################################################################# +## +#M IsVectorSpaceHomomorphism( ) +## +InstallMethod( IsVectorSpaceHomomorphism, + [ IsGeneralMapping ], + function( map ) + local S, R, F; + S:= Source( map ); + if not IsVectorSpace( S ) then + return false; + fi; + R:= Range( map ); + if not IsVectorSpace( R ) then + return false; + fi; + F:= LeftActingDomain( S ); + return ( F = LeftActingDomain( R ) ) and IsLinearMapping( F, map ); + end ); + + +############################################################################# +## +#E + diff --git a/samples/GDScript/example.gd b/samples/GDScript/example.gd new file mode 100644 index 00000000..3f55d169 --- /dev/null +++ b/samples/GDScript/example.gd @@ -0,0 +1,57 @@ +# Taken from https://github.com/okamstudio/godot/wiki/gdscript +# a file is a class! + +# inheritance + +extends BaseClass + +# member variables + +var a = 5 +var s = "Hello" +var arr = [1, 2, 3] +var dict = {"key":"value", 2:3} + +# constants + +const answer = 42 +const thename = "Charly" + +# built-in vector types + +var v2 = Vector2(1, 2) +var v3 = Vector3(1, 2, 3) + +# function + +func some_function(param1, param2): + var local_var = 5 + + if param1 < local_var: + print(param1) + elif param2 > 5: + print(param2) + else: + print("fail!") + + for i in range(20): + print(i) + + while(param2 != 0): + param2 -= 1 + + var local_var2 = param1+3 + return local_var2 + + +# subclass + +class Something: + var a = 10 + +# constructor + +func _init(): + print("constructed!") + var lv = Something.new() + print(lv.a) diff --git a/samples/GDScript/grid.gd b/samples/GDScript/grid.gd new file mode 100644 index 00000000..dc893008 --- /dev/null +++ b/samples/GDScript/grid.gd @@ -0,0 +1,216 @@ + + +extends Control + +# Simple Tetris-like demo, (c) 2012 Juan Linietsky +# Implemented by using a regular Control and drawing on it during the _draw() callback. +# The drawing surface is updated only when changes happen (by calling update()) + + +var score = 0 +var score_label=null + +const MAX_SHAPES = 7 + +var block = preload("block.png") + +var block_colors=[ + Color(1,0.5,0.5), + Color(0.5,1,0.5), + Color(0.5,0.5,1), + Color(0.8,0.4,0.8), + Color(0.8,0.8,0.4), + Color(0.4,0.8,0.8), + Color(0.7,0.7,0.7)] + +var block_shapes=[ + [ Vector2(0,-1),Vector2(0,0),Vector2(0,1),Vector2(0,2) ], # I + [ Vector2(0,0),Vector2(1,0),Vector2(1,1),Vector2(0,1) ], # O + [ Vector2(-1,1),Vector2(0,1),Vector2(0,0),Vector2(1,0) ], # S + [ Vector2(1,1),Vector2(0,1),Vector2(0,0),Vector2(-1,0) ], # Z + [ Vector2(-1,1),Vector2(-1,0),Vector2(0,0),Vector2(1,0) ], # L + [ Vector2(1,1),Vector2(1,0),Vector2(0,0),Vector2(-1,0) ], # J + [ Vector2(0,1),Vector2(1,0),Vector2(0,0),Vector2(-1,0) ]] # T + + +var block_rotations=[ + Matrix32( Vector2(1,0),Vector2(0,1), Vector2() ), + Matrix32( Vector2(0,1),Vector2(-1,0), Vector2() ), + Matrix32( Vector2(-1,0),Vector2(0,-1), Vector2() ), + Matrix32( Vector2(0,-1),Vector2(1,0), Vector2() ) +] + + +var width=0 +var height=0 + +var cells={} + +var piece_active=false +var piece_shape=0 +var piece_pos=Vector2() +var piece_rot=0 + + +func piece_cell_xform(p,er=0): + var r = (4+er+piece_rot)%4 + return piece_pos+block_rotations[r].xform(p) + +func _draw(): + + var sb = get_stylebox("bg","Tree") # use line edit bg + draw_style_box(sb,Rect2(Vector2(),get_size()).grow(3)) + + var bs = block.get_size() + for y in range(height): + for x in range(width): + if (Vector2(x,y) in cells): + draw_texture_rect(block,Rect2(Vector2(x,y)*bs,bs),false,block_colors[cells[Vector2(x,y)]]) + + if (piece_active): + + for c in block_shapes[piece_shape]: + draw_texture_rect(block,Rect2(piece_cell_xform(c)*bs,bs),false,block_colors[piece_shape]) + + +func piece_check_fit(ofs,er=0): + + for c in block_shapes[piece_shape]: + var pos = piece_cell_xform(c,er)+ofs + if (pos.x < 0): + return false + if (pos.y < 0): + return false + if (pos.x >= width): + return false + if (pos.y >= height): + return false + if (pos in cells): + return false + + return true + +func new_piece(): + + piece_shape = randi() % MAX_SHAPES + piece_pos = Vector2(width/2,0) + piece_active=true + piece_rot=0 + if (piece_shape==0): + piece_pos.y+=1 + + if (not piece_check_fit(Vector2())): + #game over + #print("GAME OVER!") + game_over() + + update() + + +func test_collapse_rows(): + var accum_down=0 + for i in range(height): + var y = height - i - 1 + var collapse = true + for x in range(width): + if (Vector2(x,y) in cells): + if (accum_down): + cells[ Vector2(x,y+accum_down) ] = cells[Vector2(x,y)] + else: + collapse=false + if (accum_down): + cells.erase( Vector2(x,y+accum_down) ) + + if (collapse): + accum_down+=1 + + + score+=accum_down*100 + score_label.set_text(str(score)) + + +func game_over(): + + piece_active=false + get_node("gameover").set_text("Game Over") + update() + + +func restart_pressed(): + + score=0 + score_label.set_text("0") + cells.clear() + get_node("gameover").set_text("") + piece_active=true + update() + + + +func piece_move_down(): + + if (!piece_active): + return + if (piece_check_fit(Vector2(0,1))): + piece_pos.y+=1 + update() + else: + + for c in block_shapes[piece_shape]: + var pos = piece_cell_xform(c) + cells[pos]=piece_shape + test_collapse_rows() + new_piece() + + +func piece_rotate(): + + var adv = 1 + if (not piece_check_fit(Vector2(),1)): + return + piece_rot = (piece_rot + adv) % 4 + update() + + + +func _input(ie): + + + if (not piece_active): + return + if (!ie.is_pressed()): + return + + if (ie.is_action("move_left")): + if (piece_check_fit(Vector2(-1,0))): + piece_pos.x-=1 + update() + elif (ie.is_action("move_right")): + if (piece_check_fit(Vector2(1,0))): + piece_pos.x+=1 + update() + elif (ie.is_action("move_down")): + piece_move_down() + elif (ie.is_action("rotate")): + piece_rotate() + + +func setup(w,h): + width=w + height=h + set_size( Vector2(w,h)*block.get_size() ) + new_piece() + get_node("timer").start() + + +func _ready(): + # Initalization here + + setup(10,20) + score_label = get_node("../score") + + set_process_input(true) + + + + diff --git a/samples/GDScript/player.gd b/samples/GDScript/player.gd new file mode 100644 index 00000000..4eeb12e2 --- /dev/null +++ b/samples/GDScript/player.gd @@ -0,0 +1,243 @@ + +extends RigidBody + +# member variables here, example: +# var a=2 +# var b="textvar" + +#var dir=Vector3() + +const ANIM_FLOOR = 0 +const ANIM_AIR_UP = 1 +const ANIM_AIR_DOWN = 2 + +const SHOOT_TIME = 1.5 +const SHOOT_SCALE = 2 + +const CHAR_SCALE = Vector3(0.3,0.3,0.3) + +var facing_dir = Vector3(1, 0, 0) +var movement_dir = Vector3() + +var jumping=false + +var turn_speed=40 +var keep_jump_inertia = true +var air_idle_deaccel = false +var accel=19.0 +var deaccel=14.0 +var sharp_turn_threshhold = 140 + +var max_speed=3.1 +var on_floor = false + +var prev_shoot = false + +var last_floor_velocity = Vector3() + +var shoot_blend = 0 + +func adjust_facing(p_facing, p_target,p_step, p_adjust_rate,current_gn): + + var n = p_target # normal + var t = n.cross(current_gn).normalized() + + var x = n.dot(p_facing) + var y = t.dot(p_facing) + + var ang = atan2(y,x) + + if (abs(ang)<0.001): # too small + return p_facing + + var s = sign(ang) + ang = ang * s + var turn = ang * p_adjust_rate * p_step + var a + if (ang 0.1 and rad2deg(acos(target_dir.dot(hdir))) > sharp_turn_threshhold + + if (dir.length()>0.1 and !sharp_turn) : + if (hspeed > 0.001) : + + #linear_dir = linear_h_velocity/linear_vel + #if (linear_vel > brake_velocity_limit and linear_dir.dot(ctarget_dir)<-cos(Math::deg2rad(brake_angular_limit))) + # brake=true + #else + hdir = adjust_facing(hdir,target_dir,delta,1.0/hspeed*turn_speed,up) + facing_dir = hdir + else: + + hdir = target_dir + + if (hspeed0): + anim=ANIM_AIR_UP + else: + anim=ANIM_AIR_DOWN + + var hs + if (dir.length()>0.1): + + hv += target_dir * (accel * 0.2) * delta + if (hv.length() > max_speed): + hv = hv.normalized() * max_speed + + else: + + if (air_idle_deaccel): + hspeed = hspeed - (deaccel * 0.2) * delta + if (hspeed<0): + hspeed=0 + + hv = hdir*hspeed + + + if (jumping and vv < 0): + jumping=false + + lv = hv+up*vv + + + + if (onfloor): + + movement_dir = lv + #lv += floor_velocity + last_floor_velocity = floor_velocity + else: + + if (on_floor) : + + #if (keep_jump_inertia): + # lv += last_floor_velocity + pass + + last_floor_velocity = Vector3() + movement_dir = lv + + on_floor = onfloor + + state.set_linear_velocity(lv) + + if (shoot_blend>0): + shoot_blend -= delta * SHOOT_SCALE + if (shoot_blend<0): + shoot_blend=0 + + if (shoot_attempt and not prev_shoot): + shoot_blend = SHOOT_TIME + var bullet = preload("res://bullet.scn").instance() + bullet.set_transform( get_node("Armature/bullet").get_global_transform().orthonormalized() ) + get_parent().add_child( bullet ) + bullet.set_linear_velocity( get_node("Armature/bullet").get_global_transform().basis[2].normalized() * 20 ) + PS.body_add_collision_exception( bullet.get_rid(), get_rid() ) #add it to bullet + get_node("sfx").play("shoot") + + prev_shoot = shoot_attempt + + if (onfloor): + get_node("AnimationTreePlayer").blend2_node_set_amount("walk",hspeed / max_speed) + + get_node("AnimationTreePlayer").transition_node_set_current("state",anim) + get_node("AnimationTreePlayer").blend2_node_set_amount("gun",min(shoot_blend,1.0)) +# state.set_angular_velocity(Vector3()) + + + + +func _ready(): + + + # Initalization here + get_node("AnimationTreePlayer").set_active(true) + pass + + diff --git a/samples/GDScript/pong.gd b/samples/GDScript/pong.gd new file mode 100644 index 00000000..bfffdcf0 --- /dev/null +++ b/samples/GDScript/pong.gd @@ -0,0 +1,73 @@ + +extends Node2D + +# member variables here, example: +# var a=2 +# var b="textvar" +const INITIAL_BALL_SPEED = 80 +var ball_speed = INITIAL_BALL_SPEED +var screen_size = Vector2(640,400) +#default ball direction +var direction = Vector2(-1,0) +var pad_size = Vector2(8,32) +const PAD_SPEED = 150 + + +func _process(delta): + + + # get ball positio and pad rectangles + var ball_pos = get_node("ball").get_pos() + var left_rect = Rect2( get_node("left").get_pos() - pad_size*0.5, pad_size ) + var right_rect = Rect2( get_node("right").get_pos() - pad_size*0.5, pad_size ) + + #integrate new ball postion + ball_pos+=direction*ball_speed*delta + + #flip when touching roof or floor + if ( (ball_pos.y<0 and direction.y <0) or (ball_pos.y>screen_size.y and direction.y>0)): + direction.y = -direction.y + + #flip, change direction and increase speed when touching pads + if ( (left_rect.has_point(ball_pos) and direction.x < 0) or (right_rect.has_point(ball_pos) and direction.x > 0)): + direction.x=-direction.x + ball_speed*=1.1 + direction.y=randf()*2.0-1 + direction = direction.normalized() + + #check gameover + if (ball_pos.x<0 or ball_pos.x>screen_size.x): + ball_pos=screen_size*0.5 + ball_speed=INITIAL_BALL_SPEED + direction=Vector2(-1,0) + + + get_node("ball").set_pos(ball_pos) + + #move left pad + var left_pos = get_node("left").get_pos() + + if (left_pos.y > 0 and Input.is_action_pressed("left_move_up")): + left_pos.y+=-PAD_SPEED*delta + if (left_pos.y < screen_size.y and Input.is_action_pressed("left_move_down")): + left_pos.y+=PAD_SPEED*delta + + get_node("left").set_pos(left_pos) + + #move right pad + var right_pos = get_node("right").get_pos() + + if (right_pos.y > 0 and Input.is_action_pressed("right_move_up")): + right_pos.y+=-PAD_SPEED*delta + if (right_pos.y < screen_size.y and Input.is_action_pressed("right_move_down")): + right_pos.y+=PAD_SPEED*delta + + get_node("right").set_pos(right_pos) + + + +func _ready(): + screen_size = get_viewport_rect().size # get actual size + pad_size = get_node("left").get_texture().get_size() + set_process(true) + diff --git a/samples/GLSL/SimpleLighting.gl2.frag b/samples/GLSL/SimpleLighting.gl2.frag new file mode 100644 index 00000000..bb851f86 --- /dev/null +++ b/samples/GLSL/SimpleLighting.gl2.frag @@ -0,0 +1,9 @@ +static const char* SimpleFragmentShader = STRINGIFY( + +varying vec4 FrontColor; + +void main(void) +{ + gl_FragColor = FrontColor; +} +); diff --git a/samples/GLSL/myfragment.frg b/samples/GLSL/myfragment.frg new file mode 100644 index 00000000..a4e84395 --- /dev/null +++ b/samples/GLSL/myfragment.frg @@ -0,0 +1,6 @@ +varying vec4 v_color; + +void main() +{ + gl_FragColor = v_color; +} \ No newline at end of file diff --git a/samples/GLSL/myvertex.vrx b/samples/GLSL/myvertex.vrx new file mode 100644 index 00000000..5371affa --- /dev/null +++ b/samples/GLSL/myvertex.vrx @@ -0,0 +1,12 @@ +uniform mat4 u_MVPMatrix; + +attribute vec4 a_position; +attribute vec4 a_color; + +varying vec4 v_color; + +void main() +{ + v_color = a_color; + gl_Position = u_MVPMatrix * pos; +} \ No newline at end of file diff --git a/samples/GLSL/recurse1.frag b/samples/GLSL/recurse1.frag new file mode 100644 index 00000000..66b4c3fe --- /dev/null +++ b/samples/GLSL/recurse1.frag @@ -0,0 +1,48 @@ +#version 330 core + +// cross-unit recursion + +void main() {} + +// two-level recursion + +float cbar(int); + +void cfoo(float) +{ + cbar(2); +} + +// four-level, out of order + +void CB(); +void CD(); +void CA() { CB(); } +void CC() { CD(); } + +// high degree + +void CBT(); +void CDT(); +void CAT() { CBT(); CBT(); CBT(); } +void CCT() { CDT(); CDT(); CBT(); } + +// not recursive + +void norA() {} +void norB() { norA(); } +void norC() { norA(); } +void norD() { norA(); } +void norE() { norB(); } +void norF() { norB(); } +void norG() { norE(); } +void norH() { norE(); } +void norI() { norE(); } + +// not recursive, but with a call leading into a cycle if ignoring direction + +void norcA() { } +void norcB() { norcA(); } +void norcC() { norcB(); } +void norcD() { norcC(); norcB(); } // head of cycle +void norcE() { norcD(); } // lead into cycle diff --git a/samples/Game Maker Language/ClientBeginStep.gml b/samples/Game Maker Language/ClientBeginStep.gml new file mode 100644 index 00000000..64d14110 --- /dev/null +++ b/samples/Game Maker Language/ClientBeginStep.gml @@ -0,0 +1,642 @@ +/* + Originally from /Source/gg2/Scripts/Client/ClientBeginStep.gml in Gang Garrison 2 + + Copyright (C) 2008-2013 Faucet Software + http://www.ganggarrison.com + + This program is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 3 of the License, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program; if not, + see . + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ + +// receive and interpret the server's message(s) +var i, playerObject, playerID, player, otherPlayerID, otherPlayer, sameVersion, buffer, plugins, pluginsRequired, usePlugins; + +if(tcp_eof(global.serverSocket)) { + if(gotServerHello) + show_message("You have been disconnected from the server."); + else + show_message("Unable to connect to the server."); + instance_destroy(); + exit; +} + +if(room == DownloadRoom and keyboard_check(vk_escape)) +{ + instance_destroy(); + exit; +} + +if(downloadingMap) +{ + while(tcp_receive(global.serverSocket, min(1024, downloadMapBytes-buffer_size(downloadMapBuffer)))) + { + write_buffer(downloadMapBuffer, global.serverSocket); + if(buffer_size(downloadMapBuffer) == downloadMapBytes) + { + write_buffer_to_file(downloadMapBuffer, "Maps/" + downloadMapName + ".png"); + downloadingMap = false; + buffer_destroy(downloadMapBuffer); + downloadMapBuffer = -1; + exit; + } + } + exit; +} + +roomchange = false; +do { + if(tcp_receive(global.serverSocket,1)) { + switch(read_ubyte(global.serverSocket)) { + case HELLO: + gotServerHello = true; + global.joinedServerName = receivestring(global.serverSocket, 1); + downloadMapName = receivestring(global.serverSocket, 1); + advertisedMapMd5 = receivestring(global.serverSocket, 1); + receiveCompleteMessage(global.serverSocket, 1, global.tempBuffer); + pluginsRequired = read_ubyte(global.tempBuffer); + plugins = receivestring(global.serverSocket, 1); + if(string_pos("/", downloadMapName) != 0 or string_pos("\", downloadMapName) != 0) + { + show_message("Server sent illegal map name: "+downloadMapName); + instance_destroy(); + exit; + } + + if (!noReloadPlugins && string_length(plugins)) + { + usePlugins = pluginsRequired || !global.serverPluginsPrompt; + if (global.serverPluginsPrompt) + { + var prompt; + if (pluginsRequired) + { + prompt = show_question( + "This server requires the following plugins to play on it: " + + string_replace_all(plugins, ",", "#") + + '#They are downloaded from the source: "' + + PLUGIN_SOURCE + + '"#The source states: "' + + PLUGIN_SOURCE_NOTICE + + '"#Do you wish to download them and continue connecting?' + ); + if (!prompt) + { + instance_destroy(); + exit; + } + } + else + { + prompt = show_question( + "This server suggests the following optional plugins to play on it: " + + string_replace_all(plugins, ",", "#") + + '#They are downloaded from the source: "' + + PLUGIN_SOURCE + + '"#The source states: "' + + PLUGIN_SOURCE_NOTICE + + '"#Do you wish to download them and use them?' + ); + if (prompt) + { + usePlugins = true; + } + } + } + if (usePlugins) + { + if (!loadserverplugins(plugins)) + { + show_message("Error ocurred loading server-sent plugins."); + instance_destroy(); + exit; + } + global.serverPluginsInUse = true; + } + } + noReloadPlugins = false; + + if(advertisedMapMd5 != "") + { + var download; + download = not file_exists("Maps/" + downloadMapName + ".png"); + if(!download and CustomMapGetMapMD5(downloadMapName) != advertisedMapMd5) + { + if(show_question("The server's copy of the map (" + downloadMapName + ") differs from ours.#Would you like to download this server's version of the map?")) + download = true; + else + { + instance_destroy(); + exit; + } + } + + if(download) + { + write_ubyte(global.serverSocket, DOWNLOAD_MAP); + socket_send(global.serverSocket); + receiveCompleteMessage(global.serverSocket,4,global.tempBuffer); + downloadMapBytes = read_uint(global.tempBuffer); + downloadMapBuffer = buffer_create(); + downloadingMap = true; + roomchange=true; + } + } + ClientPlayerJoin(global.serverSocket); + if(global.rewardKey != "" and global.rewardId != "") + { + var rewardId; + rewardId = string_copy(global.rewardId, 0, 255); + write_ubyte(global.serverSocket, REWARD_REQUEST); + write_ubyte(global.serverSocket, string_length(rewardId)); + write_string(global.serverSocket, rewardId); + } + if(global.queueJumping == true) + { + write_ubyte(global.serverSocket, CLIENT_SETTINGS); + write_ubyte(global.serverSocket, global.queueJumping); + } + socket_send(global.serverSocket); + break; + + case JOIN_UPDATE: + receiveCompleteMessage(global.serverSocket,2,global.tempBuffer); + global.playerID = read_ubyte(global.tempBuffer); + global.currentMapArea = read_ubyte(global.tempBuffer); + break; + + case FULL_UPDATE: + deserializeState(FULL_UPDATE); + break; + + case QUICK_UPDATE: + deserializeState(QUICK_UPDATE); + break; + + case CAPS_UPDATE: + deserializeState(CAPS_UPDATE); + break; + + case INPUTSTATE: + deserializeState(INPUTSTATE); + break; + + case PLAYER_JOIN: + player = instance_create(0,0,Player); + player.name = receivestring(global.serverSocket, 1); + + ds_list_add(global.players, player); + if(ds_list_size(global.players)-1 == global.playerID) { + global.myself = player; + instance_create(0,0,PlayerControl); + } + break; + + case PLAYER_LEAVE: + // Delete player from the game, adjust own ID accordingly + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + playerID = read_ubyte(global.tempBuffer); + player = ds_list_find_value(global.players, playerID); + removePlayer(player); + if(playerID < global.playerID) { + global.playerID -= 1; + } + break; + + case PLAYER_DEATH: + var causeOfDeath, assistantPlayerID, assistantPlayer; + receiveCompleteMessage(global.serverSocket,4,global.tempBuffer); + playerID = read_ubyte(global.tempBuffer); + otherPlayerID = read_ubyte(global.tempBuffer); + assistantPlayerID = read_ubyte(global.tempBuffer); + causeOfDeath = read_ubyte(global.tempBuffer); + + player = ds_list_find_value(global.players, playerID); + + otherPlayer = noone; + if(otherPlayerID != 255) + otherPlayer = ds_list_find_value(global.players, otherPlayerID); + + assistantPlayer = noone; + if(assistantPlayerID != 255) + assistantPlayer = ds_list_find_value(global.players, assistantPlayerID); + + doEventPlayerDeath(player, otherPlayer, assistantPlayer, causeOfDeath); + break; + + case BALANCE: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + balanceplayer=read_ubyte(global.tempBuffer); + if balanceplayer == 255 { + if !instance_exists(Balancer) instance_create(x,y,Balancer); + with(Balancer) notice=0; + } else { + player = ds_list_find_value(global.players, balanceplayer); + if(player.object != -1) { + with(player.object) { + instance_destroy(); + } + player.object = -1; + } + if(player.team==TEAM_RED) { + player.team = TEAM_BLUE; + } else { + player.team = TEAM_RED; + } + if !instance_exists(Balancer) instance_create(x,y,Balancer); + Balancer.name=player.name; + with (Balancer) notice=1; + } + break; + + case PLAYER_CHANGETEAM: + receiveCompleteMessage(global.serverSocket,2,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + if(player.object != -1) { + with(player.object) { + instance_destroy(); + } + player.object = -1; + } + player.team = read_ubyte(global.tempBuffer); + break; + + case PLAYER_CHANGECLASS: + receiveCompleteMessage(global.serverSocket,2,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + if(player.object != -1) { + with(player.object) { + instance_destroy(); + } + player.object = -1; + } + player.class = read_ubyte(global.tempBuffer); + break; + + case PLAYER_CHANGENAME: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + player.name = receivestring(global.serverSocket, 1); + if player=global.myself { + global.playerName=player.name + } + break; + + case PLAYER_SPAWN: + receiveCompleteMessage(global.serverSocket,3,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + doEventSpawn(player, read_ubyte(global.tempBuffer), read_ubyte(global.tempBuffer)); + break; + + case CHAT_BUBBLE: + var bubbleImage; + receiveCompleteMessage(global.serverSocket,2,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + setChatBubble(player, read_ubyte(global.tempBuffer)); + break; + + case BUILD_SENTRY: + receiveCompleteMessage(global.serverSocket,6,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + buildSentry(player, read_ushort(global.tempBuffer)/5, read_ushort(global.tempBuffer)/5, read_byte(global.tempBuffer)); + break; + + case DESTROY_SENTRY: + receiveCompleteMessage(global.serverSocket,4,global.tempBuffer); + playerID = read_ubyte(global.tempBuffer); + otherPlayerID = read_ubyte(global.tempBuffer); + assistantPlayerID = read_ubyte(global.tempBuffer); + causeOfDeath = read_ubyte(global.tempBuffer); + + player = ds_list_find_value(global.players, playerID); + if(otherPlayerID == 255) { + doEventDestruction(player, noone, noone, causeOfDeath); + } else { + otherPlayer = ds_list_find_value(global.players, otherPlayerID); + if (assistantPlayerID == 255) { + doEventDestruction(player, otherPlayer, noone, causeOfDeath); + } else { + assistantPlayer = ds_list_find_value(global.players, assistantPlayerID); + doEventDestruction(player, otherPlayer, assistantPlayer, causeOfDeath); + } + } + break; + + case GRAB_INTEL: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + doEventGrabIntel(player); + break; + + case SCORE_INTEL: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + doEventScoreIntel(player); + break; + + case DROP_INTEL: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + doEventDropIntel(player); + break; + + case RETURN_INTEL: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + doEventReturnIntel(read_ubyte(global.tempBuffer)); + break; + + case GENERATOR_DESTROY: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + team = read_ubyte(global.tempBuffer); + doEventGeneratorDestroy(team); + break; + + case UBER_CHARGED: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + doEventUberReady(player); + break; + + case UBER: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + doEventUber(player); + break; + + case OMNOMNOMNOM: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + if(player.object != -1) { + with(player.object) { + omnomnomnom=true; + if(hp < 200) + { + canEat = false; + alarm[6] = eatCooldown; //10 second cooldown + } + if(player.team == TEAM_RED) { + omnomnomnomindex=0; + omnomnomnomend=31; + } else if(player.team==TEAM_BLUE) { + omnomnomnomindex=32; + omnomnomnomend=63; + } + xscale=image_xscale; + } + } + break; + + case TOGGLE_ZOOM: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + player = ds_list_find_value(global.players, read_ubyte(global.tempBuffer)); + if player.object != -1 { + toggleZoom(player.object); + } + break; + + case PASSWORD_REQUEST: + if(!usePreviousPwd) + global.clientPassword = get_string("Enter Password:", ""); + write_ubyte(global.serverSocket, string_length(global.clientPassword)); + write_string(global.serverSocket, global.clientPassword); + socket_send(global.serverSocket); + break; + + case PASSWORD_WRONG: + show_message("Incorrect Password."); + instance_destroy(); + exit; + + case INCOMPATIBLE_PROTOCOL: + show_message("Incompatible server protocol version."); + instance_destroy(); + exit; + + case KICK: + receiveCompleteMessage(global.serverSocket,1,global.tempBuffer); + reason = read_ubyte(global.tempBuffer); + if reason == KICK_NAME kickReason = "Name Exploit"; + else if reason == KICK_BAD_PLUGIN_PACKET kickReason = "Invalid plugin packet ID"; + else if reason == KICK_MULTI_CLIENT kickReason = "There are too many connections from your IP"; + else kickReason = ""; + show_message("You have been kicked from the server. "+kickReason+"."); + instance_destroy(); + exit; + + case ARENA_STARTROUND: + doEventArenaStartRound(); + break; + + case ARENA_ENDROUND: + with ArenaHUD clientArenaEndRound(); + break; + + case ARENA_RESTART: + doEventArenaRestart(); + break; + + case UNLOCKCP: + doEventUnlockCP(); + break; + + case MAP_END: + global.nextMap=receivestring(global.serverSocket, 1); + receiveCompleteMessage(global.serverSocket,2,global.tempBuffer); + global.winners=read_ubyte(global.tempBuffer); + global.currentMapArea=read_ubyte(global.tempBuffer); + global.mapchanging = true; + if !instance_exists(ScoreTableController) instance_create(0,0,ScoreTableController); + instance_create(0,0,WinBanner); + break; + + case CHANGE_MAP: + roomchange=true; + global.mapchanging = false; + global.currentMap = receivestring(global.serverSocket, 1); + global.currentMapMD5 = receivestring(global.serverSocket, 1); + if(global.currentMapMD5 == "") { // if this is an internal map (signified by the lack of an md5) + if(findInternalMapRoom(global.currentMap)) + room_goto_fix(findInternalMapRoom(global.currentMap)); + else + { + show_message("Error:#Server went to invalid internal map: " + global.currentMap + "#Exiting."); + instance_destroy(); + exit; + } + } else { // it's an external map + if(string_pos("/", global.currentMap) != 0 or string_pos("\", global.currentMap) != 0) + { + show_message("Server sent illegal map name: "+global.currentMap); + instance_destroy(); + exit; + } + if(!file_exists("Maps/" + global.currentMap + ".png") or CustomMapGetMapMD5(global.currentMap) != global.currentMapMD5) + { // Reconnect to the server to download the map + var oldReturnRoom; + oldReturnRoom = returnRoom; + returnRoom = DownloadRoom; + if (global.serverPluginsInUse) + noUnloadPlugins = true; + event_perform(ev_destroy,0); + ClientCreate(); + if (global.serverPluginsInUse) + noReloadPlugins = true; + returnRoom = oldReturnRoom; + usePreviousPwd = true; + exit; + } + room_goto_fix(CustomMapRoom); + } + + for(i=0; i. + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ +// Downloading code. + +var downloadHandle, url, tmpfile, window_oldshowborder, window_oldfullscreen; +timeLeft = 0; +counter = 0; +AudioControlPlaySong(-1, false); +window_oldshowborder = window_get_showborder(); +window_oldfullscreen = window_get_fullscreen(); +window_set_fullscreen(false); +window_set_showborder(false); + +if(global.updaterBetaChannel) + url = UPDATE_SOURCE_BETA; +else + url = UPDATE_SOURCE; + +tmpfile = temp_directory + "\gg2update.zip"; + +downloadHandle = httpGet(url, -1); + +while(!httpRequestStatus(downloadHandle)) +{ // while download isn't finished + sleep(floor(1000/30)); // sleep for the equivalent of one frame + io_handle(); // this prevents GameMaker from appearing locked-up + httpRequestStep(downloadHandle); + + // check if the user cancelled the download with the esc key + if(keyboard_check(vk_escape)) + { + httpRequestDestroy(downloadHandle); + window_set_showborder(window_oldshowborder); + window_set_fullscreen(window_oldfullscreen); + room_goto_fix(Menu); + exit; + } + + if(counter == 0 || counter mod 60 == 0) + timer = random(359)+1; + draw_sprite(UpdaterBackgroundS,0,0,0); + draw_set_color(c_white); + draw_set_halign(fa_left); + draw_set_valign(fa_center); + minutes=floor(timer/60); + seconds=floor(timer-minutes*60); + draw_text(x,y-20,string(minutes) + " minutes " + string(seconds) + " seconds Remaining..."); + counter+=1; + var progress, size; + progress = httpRequestResponseBodyProgress(downloadHandle); + size = httpRequestResponseBodySize(downloadHandle); + if (size != -1) + { + progressBar = floor((progress/size) * 20); + offset = 3; + for(i=0;i. + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ + +xoffset = view_xview[0]; +yoffset = view_yview[0]; +xsize = view_wview[0]; +ysize = view_hview[0]; + +if (distance_to_point(xoffset+xsize/2,yoffset+ysize/2) > 800) + exit; + +var xr, yr; +xr = round(x); +yr = round(y); + +image_alpha = cloakAlpha; + +if (global.myself.team == team and canCloak) + image_alpha = cloakAlpha/2 + 0.5; + +if (invisible) + exit; + +if(stabbing) + image_alpha -= power(currentWeapon.stab.alpha, 2); + +if team == global.myself.team && (player != global.myself || global.showHealthBar == 1){ + draw_set_alpha(1); + draw_healthbar(xr-10, yr-30, xr+10, yr-25,hp*100/maxHp,c_black,c_red,c_green,0,true,true); +} +if(distance_to_point(mouse_x, mouse_y)<25) { + if cloak && team!=global.myself.team exit; + draw_set_alpha(1); + draw_set_halign(fa_center); + draw_set_valign(fa_bottom); + if(team==TEAM_RED) { + draw_set_color(c_red); + } else { + draw_set_color(c_blue); + } + draw_text(xr, yr-35, player.name); + + if(team == global.myself.team && global.showTeammateStats) + { + if(weapons[0] == Medigun) + draw_text(xr,yr+50, "Superburst: " + string(currentWeapon.uberCharge/20) + "%"); + else if(weapons[0] == Shotgun) + draw_text(xr,yr+50, "Nuts 'N' Bolts: " + string(nutsNBolts)); + else if(weapons[0] == Minegun) + draw_text(xr,yr+50, "Lobbed Mines: " + string(currentWeapon.lobbed)); + } +} + +draw_set_alpha(1); +if team == TEAM_RED ubercolour = c_red; +if team == TEAM_BLUE ubercolour = c_blue; + +var sprite, overlaySprite; +if zoomed +{ + if (team == TEAM_RED) + sprite = SniperCrouchRedS; + else + sprite = SniperCrouchBlueS; + overlaySprite = sniperCrouchOverlay; +} +else +{ + sprite = sprite_index; + overlaySprite = overlay; +} + +if (omnomnomnom) +{ + draw_sprite_ext_overlay(omnomnomnomSprite,omnomnomnomOverlay,omnomnomnomindex,xr,yr,image_xscale,image_yscale,image_angle,c_white,1); + if (ubered) + draw_sprite_ext_overlay(omnomnomnomSprite,omnomnomnomOverlay,omnomnomnomindex,xr,yr,image_xscale,image_yscale,image_angle,ubercolour,0.7); +} +else if (taunting) +{ + draw_sprite_ext_overlay(tauntsprite,tauntOverlay,tauntindex,xr,yr,image_xscale,image_yscale,image_angle,c_white,1); + if (ubered) + draw_sprite_ext_overlay(tauntsprite,tauntOverlay,tauntindex,xr,yr,image_xscale,image_yscale,image_angle,ubercolour,0.7); +} +else if (player.humiliated) + draw_sprite_ext(humiliationPoses,floor(animationImage)+humiliationOffset,xr,yr,image_xscale,image_yscale,image_angle,c_white,image_alpha); +else if (!taunting) +{ + if (cloak) + { + if (!ubered) + draw_sprite_ext(sprite,floor(animationImage+animationOffset),xr,yr,image_xscale,image_yscale,image_angle,c_white,image_alpha); + else if (ubered) + { + draw_sprite_ext(sprite,floor(animationImage+animationOffset),xr,yr,image_xscale,image_yscale,image_angle,c_white,1); + draw_sprite_ext(sprite,floor(animationImage+animationOffset),xr,yr,image_xscale,image_yscale,image_angle,ubercolour,0.7); + } + } + else + { + if (!ubered) + draw_sprite_ext_overlay(sprite,overlaySprite,floor(animationImage+animationOffset),xr,yr,image_xscale,image_yscale,image_angle,c_white,image_alpha); + else if (ubered) + { + draw_sprite_ext_overlay(sprite,overlaySprite,floor(animationImage+animationOffset),xr,yr,image_xscale,image_yscale,image_angle,c_white,1); + draw_sprite_ext_overlay(sprite,overlaySprite,floor(animationImage+animationOffset),xr,yr,image_xscale,image_yscale,image_angle,ubercolour,0.7); + } + } +} +if (burnDuration > 0 or burnIntensity > 0) { + for(i = 0; i < numFlames * burnIntensity / maxIntensity; i += 1) + { + draw_sprite_ext(FlameS, alarm[5] + i + random(2), x + flameArray_x[i], y + flameArray_y[i], 1, 1, 0, c_white, burnDuration / maxDuration * 0.71 + 0.35); + } +} + +// Copied from Lorgan's itemserver "angels" with slight modifications +// All credit be upon him +if (demon != -1) +{ + demonX = median(x-40,demonX,x+40); + demonY = median(y-40,demonY,y); + demonOffset += demonDir; + if (abs(demonOffset) > 15) + demonDir *= -1; + + var dir; + if (demonX > x) + dir = -1; + else + dir = 1; + + if (demonFrame > sprite_get_number(demon)) + demonFrame = 0; + + if (stabbing || ubered) + draw_sprite_ext(demon,demonFrame+floor(animationImage)+7*player.team,demonX,demonY+demonOffset,dir*1,1,0,c_white,1); + else + draw_sprite_ext(demon,demonFrame+floor(animationImage)+7*player.team,demonX,demonY+demonOffset,dir*1,1,0,c_white,image_alpha); + + demonFrame += 1; +} diff --git a/samples/Game Maker Language/characterDrawEvent.gml b/samples/Game Maker Language/characterDrawEvent.gml new file mode 100644 index 00000000..6dcd8fcc --- /dev/null +++ b/samples/Game Maker Language/characterDrawEvent.gml @@ -0,0 +1,80 @@ +// Originally from /spelunky/Scripts/Platform Engine/characterDrawEvent.gml in the Spelunky Community Update Project + +/********************************************************************************** + Copyright (c) 2008, 2009 Derek Yu and Mossmouth, LLC + + This file is part of Spelunky. + + You can redistribute and/or modify Spelunky, including its source code, under + the terms of the Spelunky User License. + + Spelunky is distributed in the hope that it will be entertaining and useful, + but WITHOUT WARRANTY. Please see the Spelunky User License for more details. + + The Spelunky User License should be available in "Game Information", which + can be found in the Resource Explorer, or as an external file called COPYING. + If not, please obtain a new copy of Spelunky from + +***********************************************************************************/ + +/* +This event should be placed in the draw event of the platform character. +*/ +//draws the sprite +draw = true; +if (facing == RIGHT) image_xscale = -1; +else image_xscale = 1; + +if (blinkToggle != 1) +{ + if ((state == CLIMBING or (sprite_index == sPExit or sprite_index == sDamselExit or sprite_index == sTunnelExit)) and global.hasJetpack and not whipping) + { + draw_sprite_ext(sprite_index, -1, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha); + //draw_sprite(sprite_index,-1,x,y); + draw_sprite(sJetpackBack,-1,x,y); + draw = false; + } + else if (global.hasJetpack and facing == RIGHT) draw_sprite(sJetpackRight,-1,x-4,y-1); + else if (global.hasJetpack) draw_sprite(sJetpackLeft,-1,x+4,y-1); + if (draw) + { + if (redColor > 0) draw_sprite_ext(sprite_index, -1, x, y, image_xscale, image_yscale, image_angle, make_color_rgb(200 + redColor,0,0), image_alpha); + else draw_sprite_ext(sprite_index, -1, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha); + } + if (facing == RIGHT) + { + if (holdArrow == ARROW_NORM) + { + draw_sprite(sArrowRight, -1, x+4, y+1); + } + else if (holdArrow == ARROW_BOMB) + { + if (holdArrowToggle) draw_sprite(sBombArrowRight, 0, x+4, y+2); + else draw_sprite(sBombArrowRight, 1, x+4, y+2); + } + } + else if (facing == LEFT) + { + if (holdArrow == ARROW_NORM) + { + draw_sprite(sArrowLeft, -1, x-4, y+1); + } + else if (holdArrow == ARROW_BOMB) + { + if (holdArrowToggle) draw_sprite(sBombArrowLeft, 0, x-4, y+2); + else draw_sprite(sBombArrowLeft, 1, x-4, y+2); + } + } +} +/* +if canRun +{ + xOffset=80 + if player=1 + yOffset=120 + else + yOffset=143 + //draw the "flySpeed" bar, which shows how much speed the character has acquired while holding the "run" button + //draw_healthbar(view_xview[0]+224+xOffset,view_yview[0]+432+yOffset,view_xview[0]+400+xOffset,view_yview[0]+450+yOffset,flySpeed,make_color_rgb(0,64,128),c_blue,c_aqua,0,1,1) +} +*/ diff --git a/samples/Game Maker Language/characterStepEvent.gml b/samples/Game Maker Language/characterStepEvent.gml new file mode 100644 index 00000000..7416df80 --- /dev/null +++ b/samples/Game Maker Language/characterStepEvent.gml @@ -0,0 +1,1050 @@ +// Originally from /spelunky/Scripts/Platform Engine/characterStepEvent.gml in the Spelunky Community Update Project + +/********************************************************************************** + Copyright (c) 2008, 2009 Derek Yu and Mossmouth, LLC + + This file is part of Spelunky. + + You can redistribute and/or modify Spelunky, including its source code, under + the terms of the Spelunky User License. + + Spelunky is distributed in the hope that it will be entertaining and useful, + but WITHOUT WARRANTY. Please see the Spelunky User License for more details. + + The Spelunky User License should be available in "Game Information", which + can be found in the Resource Explorer, or as an external file called COPYING. + If not, please obtain a new copy of Spelunky from + +***********************************************************************************/ + +/* +This script should be placed in the step event for the platform character. +It updates the keys used by the character, moves all of the solids, moves the +character, sets the sprite index, and sets the animation speed for the sprite. +*/ +hangCountMax = 3; + +////////////////////////////////////// +// KEYS +////////////////////////////////////// + +kLeft = checkLeft(); + +if (kLeft) kLeftPushedSteps += 1; +else kLeftPushedSteps = 0; + +kLeftPressed = checkLeftPressed(); +kLeftReleased = checkLeftReleased(); + +kRight = checkRight(); + +if (kRight) kRightPushedSteps += 1; +else kRightPushedSteps = 0; + +kRightPressed = checkRightPressed(); +kRightReleased = checkRightReleased(); + +kUp = checkUp(); +kDown = checkDown(); + +//key "run" +if canRun + kRun = 0; +// kRun=runKey +else + kRun=0 + +kJump = checkJump(); +kJumpPressed = checkJumpPressed(); +kJumpReleased = checkJumpReleased(); + +if (cantJump > 0) +{ + kJump = 0; + kJumpPressed = 0; + kJumpReleased = 0; + cantJump -= 1; +} +else +{ + if (global.isTunnelMan and + sprite_index == sTunnelAttackL and + !holdItem) + { + kJump = 0; + kJumpPressed = 0; + kJumpReleased = 0; + cantJump -= 1; + } +} + +kAttack = checkAttack(); +kAttackPressed = checkAttackPressed(); +kAttackReleased = checkAttackReleased(); + +kItemPressed = checkItemPressed(); + +xPrev = x; +yPrev = y; + +if (stunned or dead) +{ + kLeft = false; + kLeftPressed = false; + kLeftReleased = false; + kRight = false; + kRightPressed = false; + kRightReleased = false; + kUp = false; + kDown = false; + kJump = false; + kJumpPressed = false; + kJumpReleased = false; + kAttack = false; + kAttackPressed = false; + kAttackReleased = false; + kItemPressed = false; +} + +////////////////////////////////////////// +// Collisions +////////////////////////////////////////// + +colSolidLeft = false; +colSolidRight = false; +colLeft = false; +colRight = false; +colTop = false; +colBot = false; +colLadder = false; +colPlatBot = false; +colPlat = false; +colWaterTop = false; +colIceBot = false; +runKey = false; +if (isCollisionMoveableSolidLeft(1)) colSolidLeft = true; +if (isCollisionMoveableSolidRight(1)) colSolidRight = true; +if (isCollisionLeft(1)) colLeft = true; +if (isCollisionRight(1)) colRight = true; +if (isCollisionTop(1)) colTop = true; +if (isCollisionBottom(1)) colBot = true; +if (isCollisionLadder()) colLadder = true; +if (isCollisionPlatformBottom(1)) colPlatBot = true; +if (isCollisionPlatform()) colPlat = true; +if (isCollisionWaterTop(1)) colWaterTop = true; +if (collision_point(x, y+8, oIce, 0, 0)) colIceBot = true; +if (checkRun()) +{ + runHeld = 100; + runKey = true; +} + +if (checkAttack() and not whipping) +{ + runHeld += 1; + runKey = true; +} + +if (not runKey or (not kLeft and not kRight)) runHeld = 0; + +// allows the character to run left and right +// if state!=DUCKING and state!=LOOKING_UP and state!=CLIMBING +if (state != CLIMBING and state != HANGING) +{ + if (kLeftReleased and approximatelyZero(xVel)) xAcc -= 0.5 + if (kRightReleased and approximatelyZero(xVel)) xAcc += 0.5 + + if (kLeft and not kRight) + { + if (colSolidLeft) + { + // xVel = 3; + if (platformCharacterIs(ON_GROUND) and state != DUCKING) + { + xAcc -= 1; + pushTimer += 10; + //if (not SS_IsSoundPlaying(global.sndPush)) playSound(global.sndPush); + } + } + else if (kLeftPushedSteps > 2) and (facing=LEFT or approximatelyZero(xVel)) + { + xAcc -= runAcc; + } + facing = LEFT; + //if (platformCharacterIs(ON_GROUND) and abs(xVel) > 0 and alarm[3] < 1) alarm[3] = floor(16/-xVel); + } + + if (kRight and not kLeft) + { + if (colSolidRight) + { + // xVel = 3; + if (platformCharacterIs(ON_GROUND) and state != DUCKING) + { + xAcc += 1; + pushTimer += 10; + //if (not SS_IsSoundPlaying(global.sndPush)) playSound(global.sndPush); + } + } + else if (kRightPushedSteps > 2 or colSolidLeft) and (facing=RIGHT or approximatelyZero(xVel)) + { + xAcc += runAcc; + } + facing = RIGHT; + //if (platformCharacterIs(ON_GROUND) and abs(xVel) > 0 and alarm[3] < 1) alarm[3] = floor(16/xVel); + } +} + +/****************************************** + + LADDERS + +*******************************************/ + +if (state == CLIMBING) +{ + if (instance_exists(oCape)) + { + oCape.open = false; + } + kJumped = false; + ladderTimer = 10; + ladder = collision_point(x, y, oLadder, 0, 0); + if (ladder) x = ladder.x + 8; + + if (kLeft) facing = LEFT; + else if (kRight) facing = RIGHT; + if (kUp) + { + if (collision_point(x, y-8, oLadder, 0, 0) or collision_point(x, y-8, oLadderTop, 0, 0)) + { + yAcc -= climbAcc; + if (alarm[2] < 1) alarm[2] = 8; + } + } + else if (kDown) + { + if (collision_point(x, y+8, oLadder, 0, 0) or collision_point(x, y+8, oLadderTop, 0, 0)) + { + yAcc += climbAcc; + if (alarm[2] < 1) alarm[2] = 8; + } + else + state = FALLING; + if (colBot) state = STANDING; + } + + if (kJumpPressed and not whipping) + { + if (kLeft) + xVel = -departLadderXVel; + else if (kRight) + xVel = departLadderXVel; + else + xVel = 0; + yAcc += departLadderYVel; + state = JUMPING; + jumpButtonReleased = 0; + jumpTime = 0; + ladderTimer = 5; + } +} +else +{ + if (ladderTimer > 0) ladderTimer -= 1; +} + +if (platformCharacterIs(IN_AIR) and state != HANGING) +{ + yAcc += gravityIntensity; +} + +// Player has landed +if ((colBot or colPlatBot) and platformCharacterIs(IN_AIR) and yVel >= 0) +{ + if (not colPlat or colBot) + { + yVel = 0; + yAcc = 0; + state = RUNNING; + jumps = 0; + } + //playSound(global.sndLand); +} +if ((colBot or colPlatBot) and not colPlat) yVel = 0; + +// Player has just walked off of the edge of a solid +if (colBot == 0 and (not colPlatBot or colPlat) and platformCharacterIs(ON_GROUND)) +{ + state = FALLING; + yAcc += grav; + kJumped = true; + if (global.hasGloves) hangCount = 5; +} + +if (colTop) +{ + if (dead or stunned) yVel = -yVel * 0.8; + else if (state == JUMPING) yVel = abs(yVel*0.3) +} + +if (colLeft and facing == LEFT) or (colRight and facing == RIGHT) +{ + if (dead or stunned) xVel = -xVel * 0.5; + else xVel = 0; +} + +/****************************************** + + JUMPING + +*******************************************/ + +if (kJumpReleased and platformCharacterIs(IN_AIR)) +{ + kJumped = true; +} +else if (platformCharacterIs(ON_GROUND)) +{ + oCape.open = false; + kJumped = false; +} + +if (kJumpPressed and collision_point(x, y, oWeb, 0, 0)) +{ + obj = instance_place(x, y, oWeb); + obj.life -= 1; + yAcc += initialJumpAcc * 2; + yVel -= 3; + xAcc += xVel/2; + + state = JUMPING; + jumpButtonReleased = 0; + jumpTime = 0; + + grav = gravNorm; +} +else if (kJumpPressed and colWaterTop) +{ + yAcc += initialJumpAcc * 2; + yVel -= 3; + xAcc += xVel/2; + + state = JUMPING; + jumpButtonReleased = 0; + jumpTime = 0; + + grav = gravNorm; +} +else if (global.hasCape and kJumpPressed and kJumped and platformCharacterIs(IN_AIR)) +{ + if (not oCape.open) oCape.open = true; + else oCape.open = false; +} +else if (global.hasJetpack and kJump and kJumped and platformCharacterIs(IN_AIR) and jetpackFuel > 0) +{ + yAcc += initialJumpAcc; + yVel = -1; + jetpackFuel -= 1; + if (alarm[10] < 1) alarm[10] = 3; + + state = JUMPING; + jumpButtonReleased = 0; + jumpTime = 0; + + grav = 0; +} +else if (platformCharacterIs(ON_GROUND) and kJumpPressed and fallTimer == 0) +{ + if (xVel > 3 or xVel < -3) + { + yAcc += initialJumpAcc * 2; + xAcc += xVel * 2; + } + else + { + yAcc += initialJumpAcc * 2; + xAcc += xVel/2; + } + + if (global.hasJordans) + { + yAcc *= 3; + yAccLimit = 12; + grav = 0.5; + } + else if (global.hasSpringShoes) yAcc *= 1.5; + else + { + yAccLimit = 6; + grav = gravNorm; + } + + playSound(global.sndJump); + + pushTimer = 0; + + // the "state" gets changed to JUMPING later on in the code + state = FALLING; + // "variable jumping" states + jumpButtonReleased = 0; + jumpTime = 0; +} + +if (jumpTime < jumpTimeTotal) jumpTime += 1; +//let the character continue to jump +if (kJump == 0) jumpButtonReleased = 1; +if (jumpButtonReleased) jumpTime = jumpTimeTotal; + +gravityIntensity = (jumpTime/jumpTimeTotal) * grav; + +if (kUp and platformCharacterIs(ON_GROUND) and not colLadder) +{ + looking = UP; + if (xVel == 0 and xAcc == 0) state = LOOKING_UP; +} +else looking = 0; + +if (not kUp and state == LOOKING_UP) +{ + state=STANDING +} + +/****************************************** + + HANGING + +*******************************************/ + +if (not colTop) +{ +if (global.hasGloves and yVel > 0) +{ + if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and kRight and colRight and + (collision_point(x+9, y-5, oSolid, 0, 0) or collision_point(x+9, y-6, oSolid, 0, 0))) + { + state = HANGING; + move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; + } + else if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and kLeft and colLeft and + (collision_point(x-9, y-5, oSolid, 0, 0) or collision_point(x-9, y-6, oSolid, 0, 0))) + { + state = HANGING; + move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; + } +} +else if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and kRight and colRight and + (collision_point(x+9, y-5, oTree, 0, 0) or collision_point(x+9, y-6, oTree, 0, 0))) +{ + state = HANGING; + move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; +} +else if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and kLeft and colLeft and + (collision_point(x-9, y-5, oTree, 0, 0) or collision_point(x-9, y-6, oTree, 0, 0))) +{ + state = HANGING; + move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; +} +else if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and kRight and colRight and + (collision_point(x+9, y-5, oSolid, 0, 0) or collision_point(x+9, y-6, oSolid, 0, 0)) and + not collision_point(x+9, y-9, oSolid, 0, 0) and not collision_point(x, y+9, oSolid, 0, 0)) +{ + state = HANGING; + move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; +} +else if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and kLeft and colLeft and + (collision_point(x-9, y-5, oSolid, 0, 0) or collision_point(x-9, y-6, oSolid, 0, 0)) and + not collision_point(x-9, y-9, oSolid, 0, 0) and not collision_point(x, y+9, oSolid, 0, 0)) +{ + state = HANGING; + move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; +} + +if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and state == FALLING and + (collision_point(x, y-5, oArrow, 0, 0) or collision_point(x, y-6, oArrow, 0, 0)) and + not collision_point(x, y-9, oArrow, 0, 0) and not collision_point(x, y+9, oArrow, 0, 0)) +{ + obj = instance_nearest(x, y-5, oArrow); + if (obj.stuck) + { + state = HANGING; + // move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; + } +} + +/* +if (hangCount == 0 and y > 16 and !platformCharacterIs(ON_GROUND) and state == FALLING and + (collision_point(x, y-5, oTreeBranch, 0, 0) or collision_point(x, y-6, oTreeBranch, 0, 0)) and + not collision_point(x, y-9, oTreeBranch, 0, 0) and not collision_point(x, y+9, oTreeBranch, 0, 0)) +{ + state = HANGING; + // move_snap(1, 8); + yVel = 0; + yAcc = 0; + grav = 0; +} +*/ + +} + +if (hangCount > 0) hangCount -= 1; + +if (state == HANGING) +{ + if (instance_exists(oCape)) oCape.open = false; + kJumped = false; + + if (kDown and kJumpPressed) + { + grav = gravNorm; + state = FALLING; + yAcc -= grav; + hangCount = 5; + if (global.hasGloves) hangCount = 10; + } + else if (kJumpPressed) + { + grav = gravNorm; + if ((facing == RIGHT and kLeft) or (facing == LEFT and kRight)) + { + state = FALLING; + yAcc -= grav; + } + else + { + state = JUMPING; + yAcc += initialJumpAcc * 2; + if (facing == RIGHT) x -= 2; + else x += 2; + } + hangCount = hangCountMax; + } + + if ((facing == LEFT and not isCollisionLeft(2)) or + (facing == RIGHT and not isCollisionRight(2))) + { + grav = gravNorm; + state = FALLING; + yAcc -= grav; + hangCount = 4; + } +} +else +{ + grav = gravNorm; +} + +// pressing down while standing +if (kDown and platformCharacterIs(ON_GROUND) and not whipping) +{ + if (colBot) + { + state = DUCKING; + } + else if colPlatBot + { + // climb down ladder if possible, else jump down + fallTimer = 0; + if (not colBot) + { + ladder = 0; + ladder = instance_place(x, y+16, oLadder); + if (instance_exists(ladder)) + { + if (abs(x-(ladder.x+8)) < 4) + { + x = ladder.x + 8; + + xVel = 0; + yVel = 0; + xAcc = 0; + yAcc = 0; + state = CLIMBING; + } + } + else + { + y += 1; + state = FALLING; + yAcc += grav; + } + } + else + { + //the character can't move down because there is a solid in the way + state = RUNNING; + } + } +} +if (not kDown and state == DUCKING) +{ + state = STANDING; + xVel = 0; + xAcc = 0; +} +if (xVel == 0 and xAcc == 0 and state == RUNNING) +{ + state = STANDING; +} +if (xAcc != 0 and state == STANDING) +{ + state = RUNNING; +} +if (yVel < 0 and platformCharacterIs(IN_AIR) and state != HANGING) +{ + state = JUMPING; +} +if (yVel > 0 and platformCharacterIs(IN_AIR) and state != HANGING) +{ + state = FALLING; + setCollisionBounds(-5, -6, 5, 8); +} +else setCollisionBounds(-5, -8, 5, 8); + +// CLIMB LADDER +colPointLadder = collision_point(x, y, oLadder, 0, 0) or collision_point(x, y, oLadderTop, 0, 0); + +if ((kUp and platformCharacterIs(IN_AIR) and collision_point(x, y-8, oLadder, 0, 0) and ladderTimer == 0) or + (kUp and colPointLadder and ladderTimer == 0) or + (kDown and colPointLadder and ladderTimer == 0 and platformCharacterIs(ON_GROUND) and collision_point(x, y+9, oLadderTop, 0, 0) and xVel == 0)) +{ + ladder = 0; + ladder = instance_place(x, y-8, oLadder); + if (instance_exists(ladder)) + { + if (abs(x-(ladder.x+8)) < 4) + { + x = ladder.x + 8; + if (not collision_point(x, y, oLadder, 0, 0) and + not collision_point(x, y, oLadderTop, 0, 0)) + { + y = ladder.y + 14; + } + + xVel = 0; + yVel = 0; + xAcc = 0; + yAcc = 0; + state = CLIMBING; + } + } +} + +/* +if (sprite_index == sDuckToHangL or sprite_index == sDamselDtHL) +{ + ladder = 0; + if (facing == LEFT and collision_rectangle(x-8, y, x, y+16, oLadder, 0, 0) and not collision_point(x-4, y+16, oSolid, 0, 0)) + { + ladder = instance_nearest(x-4, y+16, oLadder); + } + else if (facing == RIGHT and collision_rectangle(x, y, x+8, y+16, oLadder, 0, 0) and not collision_point(x+4, y+16, oSolid, 0, 0)) + { + ladder = instance_nearest(x+4, y+16, oLadder); + } + + if (ladder) + { + x = ladder.x + 8; + + xVel = 0; + yVel = 0; + xAcc = 0; + yAcc = 0; + state = CLIMBING; + } +} +*/ +/* +if (colLadder and state == CLIMBING and kJumpPressed and not whipping) +{ + if (kLeft) + xVel = -departLadderXVel; + else if (kRight) + xVel = departLadderXVel; + else + xVel = 0; + yAcc += departLadderYVel; + state = JUMPING; + jumpButtonReleased = 0; + jumpTime = 0; + ladderTimer = 5; +} +*/ + +// Calculate horizontal/vertical friction +if (state == CLIMBING) +{ + xFric = frictionClimbingX; + yFric = frictionClimbingY; +} +else +{ + if (runKey and platformCharacterIs(ON_GROUND) and runHeld >= 10) + { + if (kLeft) // run + { + xVel -= 0.1; + xVelLimit = 6; + xFric = frictionRunningFastX; + } + else if (kRight) + { + xVel += 0.1; + xVelLimit = 6; + xFric = frictionRunningFastX; + } + } + else if (state == DUCKING) + { + if (xVel<2 and xVel>-2) + { + xFric = 0.2 + xVelLimit = 3; + image_speed = 0.8; + } + else if (kLeft and global.downToRun) // run + { + xVel -= 0.1; + xVelLimit = 6; + xFric = frictionRunningFastX; + } + else if (kRight and global.downToRun) + { + xVel += 0.1; + xVelLimit = 6; + xFric = frictionRunningFastX; + } + else + { + xVel *= 0.8; + if (xVel < 0.5) xVel = 0; + xFric = 0.2 + xVelLimit = 3; + image_speed = 0.8; + } + } + else + { + //decrease the friction when the character is "flying" + if (platformCharacterIs(IN_AIR)) + { + if (dead or stunned) xFric = 1.0; + else xFric = 0.8; + } + else + { + xFric = frictionRunningX; + } + } + + // Stuck on web or underwater + if (collision_point(x, y, oWeb, 0, 0)) + { + xFric = 0.2; + yFric = 0.2; + fallTimer = 0; + } + else if (collision_point(x, y, oWater, -1, -1)) + { + if (instance_exists(oCape)) oCape.open = false; + + if (state == FALLING and yVel > 0) + { + yFric = 0.5; + } + else if (not collision_point(x, y-9, oWater, -1, -1)) + { + yFric = 1; + } + else + { + yFric = 0.9; + } + } + else + { + swimming = false; + yFric = 1; + } +} + +if (colIceBot and state != DUCKING and not global.hasSpikeShoes) +{ + xFric = 0.98; + yFric = 1; +} + +// RUNNING + +if (platformCharacterIs(ON_GROUND)) +{ + if (state == RUNNING and kLeft and colLeft) + { + pushTimer += 1; + } + else if (state == RUNNING and kRight and colRight) + { + pushTimer += 1; + } + else + { + pushTimer = 0; + } + + if (platformCharacterIs(ON_GROUND) and not kJump and not kDown and not runKey) + { + xVelLimit = 3; + } + + + // ledge flip + if (state == DUCKING and abs(xVel) < 3 and facing == LEFT and + collision_point(x, y+9, oSolid, 0, 0) and not collision_line(x-1, y+9, x-10, y+9, oSolid, 0, 0) and kLeft) + { + state = DUCKTOHANG; + + if (holdItem) + { + holdItem.held = false; + if (holdItem.type == "Gold Idol") holdItem.y -= 8; + scrDropItem(-1, -4); + } + + with oMonkey + { + // knock off monkeys that grabbed you + if (status == 7) + { + xVel = -1; + yVel = -4; + status = 1; + vineCounter = 20; + grabCounter = 60; + } + } + } + else if (state == DUCKING and abs(xVel) < 3 and facing == RIGHT and + collision_point(x, y+9, oSolid, 0, 0) and not collision_line(x+1, y+9, x+10, y+9, oSolid, 0, 0) and kRight) + { + state = DUCKTOHANG; + + if (holdItem) + { + // holdItem.held = false; + if (holdItem.type == "Gold Idol") holdItem.y -= 8; + scrDropItem(1, -4); + } + + with oMonkey + { + // knock off monkeys that grabbed you + if (status == 7) + { + xVel = 1; + yVel = -4; + status = 1; + vineCounter = 20; + grabCounter = 60; + } + } + } +} + +if (state == DUCKTOHANG) +{ + x = xPrev; + y = yPrev; + xVel = 0; + yVel = 0; + xAcc = 0; + yAcc = 0; + grav = 0; +} + +// PARACHUTE AND CAPE +if (instance_exists(oParachute)) +{ + yFric = 0.5; +} +if (instance_exists(oCape)) +{ + if (oCape.open) yFric = 0.5; +} + +if (pushTimer > 100) pushTimer = 100; + +// limits the acceleration if it is too extreme +if (xAcc > xAccLimit) xAcc = xAccLimit; +else if (xAcc < -xAccLimit) xAcc = -xAccLimit; +if (yAcc > yAccLimit) yAcc = yAccLimit; +else if (yAcc < -yAccLimit) yAcc = -yAccLimit; + +// applies the acceleration +xVel += xAcc; +if (dead or stunned) yVel += 0.6; +else yVel += yAcc; + +// nullifies the acceleration +xAcc = 0; +yAcc = 0; + +// applies the friction to the velocity, now that the velocity has been calculated +xVel *= xFric; +yVel *= yFric; + +// apply ball and chain +if (instance_exists(oBall)) +{ + if (distance_to_object(oBall) >= 24) + { + if (xVel > 0 and oBall.x < x and abs(oBall.x-x) > 24) xVel = 0; + if (xVel < 0 and oBall.x > x and abs(oBall.x-x) > 24) xVel = 0; + if (yVel > 0 and oBall.y < y and abs(oBall.y-y) > 24) + { + if (abs(oBall.x-x) < 1) + { + x = oBall.x; + } + else if (oBall.x < x and not kRight) + { + if (xVel > 0) xVel *= -0.25; + else if (xVel == 0) xVel -= 1; + } + else if (oBall.x > x and not kLeft) + { + if (xVel < 0) xVel *= -0.25; + else if (xVel == 0) xVel += 1; + } + yVel = 0; + fallTimer = 0; + } + if (yVel < 0 and oBall.y > y and abs(oBall.y-y) > 24) yVel = 0; + } +} + +// apply the limits since the velocity may be too extreme +if (not dead and not stunned) +{ + if (xVel > xVelLimit) xVel = xVelLimit; + else if (xVel < -xVelLimit) xVel = -xVelLimit; +} +if (yVel > yVelLimit) yVel = yVelLimit; +else if (yVel < -yVelLimit) yVel = -yVelLimit; + +// approximates the "active" variables +if approximatelyZero(xVel) xVel=0 +if approximatelyZero(yVel) yVel=0 +if approximatelyZero(xAcc) xAcc=0 +if approximatelyZero(yAcc) yAcc=0 + +// prepares the character to move up a hill +// we need to use the "slopeYPrev" variable later to know the "true" y previous value +// keep this condition the same +if maxSlope>0 and platformCharacterIs(ON_GROUND) and xVel!=0 +{ + slopeYPrev=y + for(y=y;y>=slopeYPrev-maxSlope;y-=1) + if colTop + break + slopeChangeInY=slopeYPrev-y +} +else + slopeChangeInY=0 + +// moves the character, and balances out the effects caused by other processes +// keep this condition the same +if maxSlope*abs(xVel)>0 and platformCharacterIs(ON_GROUND) +{ + // we need to check if we should dampen out the speed as the character runs on upward slopes + xPrev=x + yPrev=slopeYPrev // we don't want to use y, because y is too high + yPrevHigh=y // we'll use the higher previous variable later + moveTo(xVel,yVel+slopeChangeInY) + dist=point_distance(xPrev,yPrev,x,y)// overall distance that has been traveled + // we should have only ran at xVel + if dist>abs(xVelInteger) + { + // show_message(string(dist)+ " "+string(abs(xVelInteger))) + excess=dist-abs(xVelInteger) + if(xVelInteger<0) + excess*=-1 + // move back since the character moved too far + x=xPrev + y=yPrevHigh // we need the character to be high so the character can move down + // this time we'll move the correct distance, but we need to shorten out the xVel a little + // these lines can be changed for different types of slowing down when running up hills + ratio=abs(xVelInteger)/dist*0.9 //can be changed + moveTo( round(xVelInteger*ratio),round(yVelInteger*ratio+slopeChangeInY) ) + } +} +else +{ + // we simply move xVel and yVel while in the air or on a ladder + moveTo(xVel,yVel) +} +// move the character downhill if possible +// we need to multiply maxDownSlope by the absolute value of xVel since the character normally runs at an xVel larger than 1 +if not colBot and maxDownSlope>0 and xVelInteger!=0 and platformCharacterIs(ON_GROUND) +{ + //the character is floating just above the slope, so move the character down + upYPrev=y + for(y=y;y<=upYPrev+maxDownSlope;y+=1) + if colBot // we hit a solid below + { + upYPrev=y // I know that this doesn't seem to make sense, because of the name of the variable, but it all works out correctly after we break out of this loop + break + } + y=upYPrev +} + +//figures out what the sprite index of the character should be +characterSprite(); + +//sets the previous state and the previously previous state +statePrevPrev = statePrev; +statePrev = state; + +//calculates the image_speed based on the character's velocity +if (state == RUNNING or state == DUCKING or state == LOOKING_UP) +{ + if (state == RUNNING or state == LOOKING_UP) image_speed = abs(xVel) * runAnimSpeed + 0.1; +} + +if (state == CLIMBING) image_speed = sqrt(sqr(abs(xVel))+sqr(abs(yVel))) * climbAnimSpeed +if (xVel >= 4 or xVel <= -4) +{ + image_speed = 1; + if (platformCharacterIs(ON_GROUND)) setCollisionBounds(-8, -8, 8, 8); + else setCollisionBounds(-5, -8, 5, 8); +} +else setCollisionBounds(-5, -8, 5, 8); +if (whipping) image_speed = 1; +if (state == DUCKTOHANG) +{ + image_index = 0; + image_speed = 0.8; +} +//limit the image_speed at 1 so the animation always looks good +if (image_speed > 1) image_speed = 1; diff --git a/samples/Game Maker Language/doEventPlayerDeath.gml b/samples/Game Maker Language/doEventPlayerDeath.gml new file mode 100644 index 00000000..47ee7780 --- /dev/null +++ b/samples/Game Maker Language/doEventPlayerDeath.gml @@ -0,0 +1,251 @@ +/* + Originally from /Source/gg2/Scripts/Events/doEventPlayerDeath.gml in Gang Garrison 2 + + Copyright (C) 2008-2013 Faucet Software + http://www.ganggarrison.com + + This program is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 3 of the License, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program; if not, + see . + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ + +/** + * Perform the "player death" event, i.e. change the appropriate scores, + * destroy the character object to much splattering and so on. + * + * argument0: The player whose character died + * argument1: The player who inflicted the fatal damage (or noone for unknown) + * argument2: The player who assisted the kill (or noone for no assist) + * argument3: The source of the fatal damage + */ +var victim, killer, assistant, damageSource; +victim = argument0; +killer = argument1; +assistant = argument2; +damageSource = argument3; + +if(!instance_exists(killer)) + killer = noone; + +if(!instance_exists(assistant)) + assistant = noone; + +//************************************* +//* Scoring and Kill log +//************************************* + + +recordKillInLog(victim, killer, assistant, damageSource); + +victim.stats[DEATHS] += 1; +if(killer) +{ + if(damageSource == WEAPON_KNIFE || damageSource == WEAPON_BACKSTAB) + { + killer.stats[STABS] += 1; + killer.roundStats[STABS] += 1; + killer.stats[POINTS] += 1; + killer.roundStats[POINTS] +=1; + } + + if (victim.object.currentWeapon.object_index == Medigun) + { + if (victim.object.currentWeapon.uberReady) + { + killer.stats[BONUS] += 1; + killer.roundStats[BONUS] += 1; + killer.stats[POINTS] += 1; + killer.roundStats[POINTS] += 1; + } + } + + if (killer != victim) + { + killer.stats[KILLS] += 1; + killer.roundStats[KILLS] += 1; + killer.stats[POINTS] += 1; + killer.roundStats[POINTS] += 1; + if(victim.object.intel) + { + killer.stats[DEFENSES] += 1; + killer.roundStats[DEFENSES] += 1; + killer.stats[POINTS] += 1; + killer.roundStats[POINTS] += 1; + recordEventInLog(4, killer.team, killer.name, global.myself == killer); + } + } +} + +if (assistant) +{ + assistant.stats[ASSISTS] += 1; + assistant.roundStats[ASSISTS] += 1; + assistant.stats[POINTS] += .5; + assistant.roundStats[POINTS] += .5; +} + +//SPEC +if (victim == global.myself) + instance_create(victim.object.x, victim.object.y, Spectator); + +//************************************* +//* Gibbing +//************************************* +var xoffset, yoffset, xsize, ysize; + +xoffset = view_xview[0]; +yoffset = view_yview[0]; +xsize = view_wview[0]; +ysize = view_hview[0]; + +randomize(); +with(victim.object) { + if((damageSource == WEAPON_ROCKETLAUNCHER + or damageSource == WEAPON_MINEGUN or damageSource == FRAG_BOX + or damageSource == WEAPON_REFLECTED_STICKY or damageSource == WEAPON_REFLECTED_ROCKET + or damageSource == FINISHED_OFF_GIB or damageSource == GENERATOR_EXPLOSION) + and (player.class != CLASS_QUOTE) and (global.gibLevel>1) + and distance_to_point(xoffset+xsize/2,yoffset+ysize/2) < 900) { + if (hasReward(victim, 'PumpkinGibs')) + { + repeat(global.gibLevel * 2) { + createGib(x,y,PumpkinGib,hspeed,vspeed,random(145)-72, choose(0,1,1,2,2,3), false, true) + } + } + else + { + repeat(global.gibLevel) { + createGib(x,y,Gib,hspeed,vspeed,random(145)-72, 0, false) + } + switch(player.team) + { + case TEAM_BLUE : + repeat(global.gibLevel - 1) { + createGib(x,y,BlueClump,hspeed,vspeed,random(145)-72, 0, false) + } + break; + case TEAM_RED : + repeat(global.gibLevel - 1) { + createGib(x,y,RedClump,hspeed,vspeed,random(145)-72, 0, false) + } + break; + } + } + + repeat(global.gibLevel * 14) { + var blood; + blood = instance_create(x+random(23)-11,y+random(23)-11,BloodDrop); + blood.hspeed=(random(21)-10); + blood.vspeed=(random(21)-13); + if (hasReward(victim, 'PumpkinGibs')) + { + blood.sprite_index = PumpkinJuiceS; + } + } + if (!hasReward(victim, 'PumpkinGibs')) + { + //All Classes gib head, hands, and feet + if(global.gibLevel > 2 || choose(0,1) == 1) + createGib(x,y,Headgib,0,0,random(105)-52, player.class, false); + repeat(global.gibLevel -1){ + //Medic has specially colored hands + if (player.class == CLASS_MEDIC){ + if (player.team == TEAM_RED) + createGib(x,y,Hand, hspeed, vspeed, random(105)-52 , 9, false); + else + createGib(x,y,Hand, hspeed, vspeed, random(105)-52 , 10, false); + }else{ + createGib(x,y,Hand, hspeed, vspeed, random(105)-52 , player.class, false); + } + createGib(x,y,Feet,random(5)-2,random(3),random(13)-6 , player.class, true); + } + } + + //Class specific gibs + switch(player.class) { + case CLASS_PYRO : + if(global.gibLevel > 2 || choose(0,1) == 1) + createGib(x,y,Accesory,hspeed,vspeed,random(105)-52, 4, false) + break; + case CLASS_SOLDIER : + if(global.gibLevel > 2 || choose(0,1) == 1){ + switch(player.team) { + case TEAM_BLUE : + createGib(x,y,Accesory,hspeed,vspeed,random(105)-52, 2, false); + break; + case TEAM_RED : + createGib(x,y,Accesory,hspeed,vspeed,random(105)-52, 1, false); + break; + } + } + break; + case CLASS_ENGINEER : + if(global.gibLevel > 2 || choose(0,1) == 1) + createGib(x,y,Accesory,hspeed,vspeed,random(105)-52, 3, false) + break; + case CLASS_SNIPER : + if(global.gibLevel > 2 || choose(0,1) == 1) + createGib(x,y,Accesory,hspeed,vspeed,random(105)-52, 0, false) + break; + } + playsound(x,y,Gibbing); + } else { + var deadbody; + if player.class != CLASS_QUOTE playsound(x,y,choose(DeathSnd1, DeathSnd2)); + deadbody = instance_create(x,y-30,DeadGuy); + // 'GS' reward - *G*olden *S*tatue + if(hasReward(player, 'GS')) + { + deadbody.sprite_index = haxxyStatue; + deadbody.image_index = 0; + } + else + { + deadbody.sprite_index = sprite_index; + deadbody.image_index = CHARACTER_ANIMATION_DEAD; + } + deadbody.hspeed=hspeed; + deadbody.vspeed=vspeed; + if(hspeed>0) { + deadbody.image_xscale = -1; + } + } +} + +if (global.gg_birthday){ + myHat = instance_create(victim.object.x,victim.object.y,PartyHat); + myHat.image_index = victim.team; +} +if (global.xmas){ + myHat = instance_create(victim.object.x,victim.object.y,XmasHat); + myHat.image_index = victim.team; +} + + +with(victim.object) { + instance_destroy(); +} + +//************************************* +//* Deathcam +//************************************* +if( global.killCam and victim == global.myself and killer and killer != victim and !(damageSource == KILL_BOX || damageSource == FRAG_BOX || damageSource == FINISHED_OFF || damageSource == FINISHED_OFF_GIB || damageSource == GENERATOR_EXPLOSION)) { + instance_create(0,0,DeathCam); + DeathCam.killedby=killer; + DeathCam.name=killer.name; + DeathCam.oldxview=view_xview[0]; + DeathCam.oldyview=view_yview[0]; + DeathCam.lastDamageSource=damageSource; + DeathCam.team = global.myself.team; +} diff --git a/samples/Game Maker Language/faucet-http.gml b/samples/Game Maker Language/faucet-http.gml new file mode 100644 index 00000000..c9b4d0f5 --- /dev/null +++ b/samples/Game Maker Language/faucet-http.gml @@ -0,0 +1,1469 @@ +#define __http_init +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Creates global.__HttpClient +// real __http_init() + +global.__HttpClient = object_add(); +object_set_persistent(global.__HttpClient, true); + +#define __http_split +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// real __http_split(string text, delimeter delimeter, real limit) +// Splits string into items + +// text - string comma-separated values +// delimeter - delimeter to split by +// limit if non-zero, maximum times to split text +// When limited, the remaining text will be left as the last item. +// E.g. splitting "1,2,3,4,5" with delimeter "," and limit 2 yields this list: +// "1", "2", "3,4,5" + +// return value - ds_list containing strings of values + +var text, delimeter, limit; +text = argument0; +delimeter = argument1; +limit = argument2; + +var list, count; +list = ds_list_create(); +count = 0; + +while (string_pos(delimeter, text) != 0) +{ + ds_list_add(list, string_copy(text, 1, string_pos(delimeter,text) - 1)); + text = string_copy(text, string_pos(delimeter, text) + string_length(delimeter), string_length(text) - string_pos(delimeter, text)); + + count += 1; + if (limit and count == limit) + break; +} +ds_list_add(list, text); + +return list; + +#define __http_parse_url +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Parses a URL into its components +// real __http_parse_url(string url) + +// Return value is a ds_map containing keys for the different URL parts: (or -1 on failure) +// "url" - the URL which was passed in +// "scheme" - the URL scheme (e.g. "http") +// "host" - the hostname (e.g. "example.com" or "127.0.0.1") +// "port" - the port (e.g. 8000) - this is a real, unlike the others +// "abs_path" - the absolute path (e.g. "/" or "/index.html") +// "query" - the query string (e.g. "a=b&c=3") +// Parts which are not included will not be in the map +// e.g. http://example.com will not have the "port", "path" or "query" keys + +// This will *only* work properly for URLs of format: +// scheme ":" "//" host [ ":" port ] [ abs_path [ "?" query ]]" +// where [] denotes an optional component +// file: URLs will *not* work as they lack the authority (host:port) component +// It will not work correctly for IPv6 host values + +var url; +url = argument0; + +var map; +map = ds_map_create(); +ds_map_add(map, 'url', url); + +// before scheme +var colonPos; +// Find colon for end of scheme +colonPos = string_pos(':', url); +// No colon - bad URL +if (colonPos == 0) + return -1; +ds_map_add(map, 'scheme', string_copy(url, 1, colonPos - 1)); +url = string_copy(url, colonPos + 1, string_length(url) - colonPos); + +// before double slash +// remove slashes (yes this will screw up file:// but who cares) +while (string_char_at(url, 1) == '/') + url = string_copy(url, 2, string_length(url) - 1); + +// before hostname +var slashPos, colonPos; +// Find slash for beginning of path +slashPos = string_pos('/', url); +// No slash ahead - http://host format with no ending slash +if (slashPos == 0) +{ + // Find : for beginning of port + colonPos = string_pos(':', url); +} +else +{ + // Find : for beginning of port prior to / + colonPos = string_pos(':', string_copy(url, 1, slashPos - 1)); +} +// No colon - no port +if (colonPos == 0) +{ + // There was no slash + if (slashPos == 0) + { + ds_map_add(map, 'host', url); + return map; + } + // There was a slash + else + { + ds_map_add(map, 'host', string_copy(url, 1, slashPos - 1)); + url = string_copy(url, slashPos, string_length(url) - slashPos + 1); + } +} +// There's a colon - port specified +else +{ + // There was no slash + if (slashPos == 0) + { + ds_map_add(map, 'host', string_copy(url, 1, colonPos - 1)); + ds_map_add(map, 'port', real(string_copy(url, colonPos + 1, string_length(url) - colonPos))); + return map; + } + // There was a slash + else + { + ds_map_add(map, 'host', string_copy(url, 1, colonPos - 1)); + url = string_copy(url, colonPos + 1, string_length(url) - colonPos); + slashPos = string_pos('/', url); + ds_map_add(map, 'port', real(string_copy(url, 1, slashPos - 1))); + url = string_copy(url, slashPos, string_length(url) - slashPos + 1); + } +} + +// before path +var queryPos; +queryPos = string_pos('?', url); +// There's no ? - no query +if (queryPos == 0) +{ + ds_map_add(map, 'abs_path', url); + return map; +} +else +{ + ds_map_add(map, 'abs_path', string_copy(url, 1, queryPos - 1)); + ds_map_add(map, 'query', string_copy(url, queryPos + 1, string_length(url) - queryPos)); + return map; +} + +// Return -1 upon unlikely error +ds_map_destroy(map); +return -1; + +#define __http_resolve_url +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Takes a base URL and a URL reference and applies it to the base URL +// Returns resulting absolute URL +// string __http_resolve_url(string baseUrl, string refUrl) + +// Return value is a string containing the new absolute URL, or "" on failure + +// Works only for restricted URL syntax as understood by by http_resolve_url +// The sole restriction of which is that only scheme://authority/path URLs work +// This notably excludes file: URLs which lack the authority component + +// As described by RFC3986: +// URI-reference = URI / relative-ref +// relative-ref = relative-part [ "?" query ] [ "#" fragment ] +// relative-part = "//" authority path-abempty +// / path-absolute +// / path-noscheme +// / path-empty +// However http_resolve_url does *not* deal with fragments + +// Algorithm based on that of section 5.2.2 of RFC 3986 + +var baseUrl, refUrl; +baseUrl = argument0; +refUrl = argument1; + +// Parse base URL +var urlParts; +urlParts = __http_parse_url(baseUrl); +if (urlParts == -1) + return ''; + +// Try to parse reference URL +var refUrlParts, canParseRefUrl; +refUrlParts = __http_parse_url(refUrl); +canParseRefUrl = (refUrlParts != -1); +if (refUrlParts != -1) + ds_map_destroy(refUrlParts); + +var result; +result = ''; + +// Parsing of reference URL succeeded - it's absolute and we're done +if (canParseRefUrl) +{ + result = refUrl; +} +// Begins with '//' - scheme-relative URL +else if (string_copy(refUrl, 1, 2) == '//' and string_length(refUrl) > 2) +{ + result = ds_map_find_value(urlParts, 'scheme') + ':' + refUrl; +} +// Is or begins with '/' - absolute path relative URL +else if (((string_char_at(refUrl, 1) == '/' and string_length(refUrl) > 1) or refUrl == '/') +// Doesn't begin with ':' and is not blank - relative path relative URL + or (string_char_at(refUrl, 1) != ':' and string_length(refUrl) > 0)) +{ + // Find '?' for query + var queryPos; + queryPos = string_pos('?', refUrl); + // No query + if (queryPos == 0) + { + refUrl = __http_resolve_path(ds_map_find_value(urlParts, 'abs_path'), refUrl); + ds_map_replace(urlParts, 'abs_path', refUrl); + if (ds_map_exists(urlParts, 'query')) + ds_map_delete(urlParts, 'query'); + } + // Query exists, split + else + { + var path, query; + path = string_copy(refUrl, 1, queryPos - 1); + query = string_copy(refUrl, queryPos + 1, string_length(relUrl) - queryPos); + path = __http_resolve_path(ds_map_find_value(urlParts, 'abs_path'), path); + ds_map_replace(urlParts, 'abs_path', path); + if (ds_map_exists(urlParts, 'query')) + ds_map_replace(urlParts, 'query', query); + else + ds_map_add(urlParts, 'query', query); + } + result = __http_construct_url(urlParts); +} + +ds_map_destroy(urlParts); +return result; + +#define __http_resolve_path +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Takes a base path and a path reference and applies it to the base path +// Returns resulting absolute path +// string __http_resolve_path(string basePath, string refPath) + +// Return value is a string containing the new absolute path + +// Deals with UNIX-style / paths, not Windows-style \ paths +// Can be used to clean up .. and . in non-absolute paths too ('' as basePath) + +var basePath, refPath; +basePath = argument0; +refPath = argument1; + +// refPath begins with '/' (is absolute), we can ignore all of basePath +if (string_char_at(refPath, 1) == '/') +{ + basePath = refPath; + refPath = ''; +} + +var parts, refParts; +parts = __http_split(basePath, '/', 0); +refParts = __http_split(refPath, '/', 0); + +if (refPath != '') +{ + // Find last part of base path + var lastPart; + lastPart = ds_list_find_value(parts, ds_list_size(parts) - 1); + + // If it's not blank (points to a file), remove it + if (lastPart != '') + { + ds_list_delete(parts, ds_list_size(parts) - 1); + } + + // Concatenate refParts to end of parts + var i; + for (i = 0; i < ds_list_size(refParts); i += 1) + ds_list_add(parts, ds_list_find_value(refParts, i)); +} + +// We now don't need refParts any more +ds_list_destroy(refParts); + +// Deal with '..' and '.' +for (i = 0; i < ds_list_size(parts); i += 1) +{ + var part; + part = ds_list_find_value(parts, i); + + if (part == '.') + { + if (i == 1 or i == ds_list_size(parts) - 1) + ds_list_replace(parts, i, ''); + else + ds_list_delete(parts, i); + i -= 1; + continue; + } + else if (part == '..') + { + if (i > 1) + { + ds_list_delete(parts, i - 1); + ds_list_delete(part, i); + i -= 2; + } + else + { + ds_list_replace(parts, i, ''); + i -= 1; + } + continue; + } + else if (part == '' and i != 0 and i != ds_list_size(parts) - 1) + { + ds_list_delete(parts, i); + i -= 1; + continue; + } +} + +// Reconstruct path from parts +var path; +path = ''; +for (i = 0; i < ds_list_size(parts); i += 1) +{ + if (i != 0) + path += '/'; + path += ds_list_find_value(parts, i); +} + +ds_map_destroy(parts); +return path; + +#define __http_parse_hex +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Takes a lowercase hexadecimal string and returns its integer value +// real __http_parse_hex(string hexString) + +// Return value is the whole number value (or -1 if invalid) +// Only works for whole numbers (non-fractional numbers >= 0) and lowercase hex + +var hexString; +hexString = argument0; + +var result, hexValues; +result = 0; +hexValues = "0123456789abcdef"; + +var i; +for (i = 1; i <= string_length(hexString); i += 1) { + result *= 16; + var digit; + digit = string_pos(string_char_at(hexString, i), hexValues) - 1; + if (digit == -1) + return -1; + result += digit; +} + +return result; + +#define __http_construct_url +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Constructs an URL from its components (as http_parse_url would return) +// string __http_construct_url(real parts) + +// Return value is the string of the constructed URL +// Keys of parts map: +// "scheme" - the URL scheme (e.g. "http") +// "host" - the hostname (e.g. "example.com" or "127.0.0.1") +// "port" - the port (e.g. 8000) - this is a real, unlike the others +// "abs_path" - the absolute path (e.g. "/" or "/index.html") +// "query" - the query string (e.g. "a=b&c=3") +// Parts which are omitted will be omitted in the URL +// e.g. http://example.com lacks "port", "path" or "query" keys + +// This will *only* work properly for URLs of format: +// scheme ":" "//" host [ ":" port ] [ abs_path [ "?" query ]]" +// where [] denotes an optional component +// file: URLs will *not* work as they lack the authority (host:port) component +// Should work correctly for IPv6 host values, but bare in mind parse_url won't + +var parts; +parts = argument0; + +var url; +url = ''; + +url += ds_map_find_value(parts, 'scheme'); +url += '://'; +url += ds_map_find_value(parts, 'host'); +if (ds_map_exists(parts, 'port')) + url += ':' + string(ds_map_find_value(parts, 'port')); +if (ds_map_exists(parts, 'abs_path')) +{ + url += ds_map_find_value(parts, 'abs_path'); + if (ds_map_exists(parts, 'query')) + url += '?' + ds_map_find_value(parts, 'query'); +} + +return url; + +#define __http_prepare_request +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Internal function - prepares request +// void __http_prepare_request(real client, string url, real headers) + +// client - HttpClient object to prepare +// url - URL to send GET request to +// headers - ds_map of extra headers to send, -1 if none + +var client, url, headers; +client = argument0; +url = argument1; +headers = argument2; + +var parsed; +parsed = __http_parse_url(url); + +if (parsed == -1) + show_error("Error when making HTTP GET request - can't parse URL: " + url, true); + +if (!ds_map_exists(parsed, 'port')) + ds_map_add(parsed, 'port', 80); +if (!ds_map_exists(parsed, 'abs_path')) + ds_map_add(parsed, 'abs_path', '/'); + +with (client) +{ + destroyed = false; + CR = chr(13); + LF = chr(10); + CRLF = CR + LF; + socket = tcp_connect(ds_map_find_value(parsed, 'host'), ds_map_find_value(parsed, 'port')); + state = 0; + errored = false; + error = ''; + linebuf = ''; + line = 0; + statusCode = -1; + reasonPhrase = ''; + responseBody = buffer_create(); + responseBodySize = -1; + responseBodyProgress = -1; + responseHeaders = ds_map_create(); + requestUrl = url; + requestHeaders = headers; + + // Request = Request-Line ; Section 5.1 + // *(( general-header ; Section 4.5 + // | request-header ; Section 5.3 + // | entity-header ) CRLF) ; Section 7.1 + // CRLF + // [ message-body ] ; Section 4.3 + + // "The Request-Line begins with a method token, followed by the + // Request-URI and the protocol version, and ending with CRLF. The + // elements are separated by SP characters. No CR or LF is allowed + // except in the final CRLF sequence." + if (ds_map_exists(parsed, 'query')) + write_string(socket, 'GET ' + ds_map_find_value(parsed, 'abs_path') + '?' + ds_map_find_value(parsed, 'query') + ' HTTP/1.1' + CRLF); + else + write_string(socket, 'GET ' + ds_map_find_value(parsed, 'abs_path') + ' HTTP/1.1' + CRLF); + + // "A client MUST include a Host header field in all HTTP/1.1 request + // messages." + // "A "host" without any trailing port information implies the default + // port for the service requested (e.g., "80" for an HTTP URL)." + if (ds_map_find_value(parsed, 'port') == 80) + write_string(socket, 'Host: ' + ds_map_find_value(parsed, 'host') + CRLF); + else + write_string(socket, 'Host: ' + ds_map_find_value(parsed, 'host') + + ':' + string(ds_map_find_value(parsed, 'port')) + CRLF); + + // "An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to + // maintain a persistent connection unless a Connection header including + // the connection-token "close" was sent in the request." + write_string(socket, 'Connection: close' + CRLF); + + // "If no Accept-Encoding field is present in a request, the server MAY + // assume that the client will accept any content coding." + write_string(socket, 'Accept-Encoding:' + CRLF); + + // If headers specified + if (headers != -1) + { + var key; + // Iterate over headers map + for (key = ds_map_find_first(headers); is_string(key); key = ds_map_find_next(headers, key)) + { + write_string(socket, key + ': ' + ds_map_find_value(headers, key) + CRLF); + } + } + + // Send extra CRLF to terminate request + write_string(socket, CRLF); + + socket_send(socket); + + ds_map_destroy(parsed); +} + +#define __http_parse_header +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Internal function - parses header +// real __http_parse_header(string linebuf, real line) +// Returns false if it errored (caller should return and destroy) + +var linebuf, line; +linebuf = argument0; +line = argument1; + +// "HTTP/1.1 header field values can be folded onto multiple lines if the +// continuation line begins with a space or horizontal tab." +if ((string_char_at(linebuf, 1) == ' ' or ord(string_char_at(linebuf, 1)) == 9)) +{ + if (line == 1) + { + errored = true; + error = "First header line of response can't be a continuation, right?"; + return false; + } + headerValue = ds_map_find_value(responseHeaders, string_lower(headerName)) + + string_copy(linebuf, 2, string_length(linebuf) - 1); +} +// "Each header field consists +// of a name followed by a colon (":") and the field value. Field names +// are case-insensitive. The field value MAY be preceded by any amount +// of LWS, though a single SP is preferred." +else +{ + var colonPos; + colonPos = string_pos(':', linebuf); + if (colonPos == 0) + { + errored = true; + error = "No colon in a header line of response"; + return false; + } + headerName = string_copy(linebuf, 1, colonPos - 1); + headerValue = string_copy(linebuf, colonPos + 1, string_length(linebuf) - colonPos); + // "The field-content does not include any leading or trailing LWS: + // linear white space occurring before the first non-whitespace + // character of the field-value or after the last non-whitespace + // character of the field-value. Such leading or trailing LWS MAY be + // removed without changing the semantics of the field value." + while (string_char_at(headerValue, 1) == ' ' or ord(string_char_at(headerValue, 1)) == 9) + headerValue = string_copy(headerValue, 2, string_length(headerValue) - 1); +} + +ds_map_add(responseHeaders, string_lower(headerName), headerValue); + +if (string_lower(headerName) == 'content-length') +{ + responseBodySize = real(headerValue); + responseBodyProgress = 0; +} + +return true; + +#define __http_client_step +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Steps the HTTP client (needs to be called each step or so) + +var client; +client = argument0; + +with (client) +{ + if (errored) + exit; + + // Socket error + if (socket_has_error(socket)) + { + errored = true; + error = "Socket error: " + socket_error(socket); + return __http_client_destroy(); + } + + var available; + available = tcp_receive_available(socket); + + switch (state) + { + // Receiving lines + case 0: + if (!available && tcp_eof(socket)) + { + errored = true; + error = "Unexpected EOF when receiving headers/status code"; + return __http_client_destroy(); + } + + var bytesRead, c; + for (bytesRead = 1; bytesRead <= available; bytesRead += 1) + { + c = read_string(socket, 1); + // Reached end of line + // "HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all + // protocol elements except the entity-body (see appendix 19.3 for + // tolerant applications)." + if (c == LF and string_char_at(linebuf, string_length(linebuf)) == CR) + { + // Strip trailing CR + linebuf = string_copy(linebuf, 1, string_length(linebuf) - 1); + // First line - status code + if (line == 0) + { + // "The first line of a Response message is the Status-Line, consisting + // of the protocol version followed by a numeric status code and its + // associated textual phrase, with each element separated by SP + // characters. No CR or LF is allowed except in the final CRLF sequence." + var httpVer, spacePos; + spacePos = string_pos(' ', linebuf); + if (spacePos == 0) + { + errored = true; + error = "No space in first line of response"; + return __http_client_destroy(); + } + httpVer = string_copy(linebuf, 1, spacePos); + linebuf = string_copy(linebuf, spacePos + 1, string_length(linebuf) - spacePos); + + spacePos = string_pos(' ', linebuf); + if (spacePos == 0) + { + errored = true; + error = "No second space in first line of response"; + return __http_client_destroy(); + } + statusCode = real(string_copy(linebuf, 1, spacePos)); + reasonPhrase = string_copy(linebuf, spacePos + 1, string_length(linebuf) - spacePos); + } + // Other line + else + { + // Blank line, end of response headers + if (linebuf == '') + { + state = 1; + // write remainder + write_buffer_part(responseBody, socket, available - bytesRead); + responseBodyProgress = available - bytesRead; + break; + } + // Header + else + { + if (!__http_parse_header(linebuf, line)) + return __http_client_destroy(); + } + } + + linebuf = ''; + line += 1; + } + else + linebuf += c; + } + break; + // Receiving response body + case 1: + write_buffer(responseBody, socket); + responseBodyProgress += available; + if (tcp_eof(socket)) + { + if (ds_map_exists(responseHeaders, 'transfer-encoding')) + { + if (ds_map_find_value(responseHeaders, 'transfer-encoding') == 'chunked') + { + // Chunked transfer, let's decode it + var actualResponseBody, actualResponseSize; + actualResponseBody = buffer_create(); + actualResponseBodySize = 0; + + // Parse chunks + // chunk = chunk-size [ chunk-extension ] CRLF + // chunk-data CRLF + // chunk-size = 1*HEX + while (buffer_bytes_left(responseBody)) + { + var chunkSize, c; + chunkSize = ''; + + // Read chunk size byte by byte + while (buffer_bytes_left(responseBody)) + { + c = read_string(responseBody, 1); + if (c == CR or c == ';') + break; + else + chunkSize += c; + } + + // We found a semicolon - beginning of chunk-extension + if (c == ';') + { + // skip all extension stuff + while (buffer_bytes_left(responseBody) && c != CR) + { + c = read_string(responseBody, 1); + } + } + // Reached end of header + if (c == CR) + { + c += read_string(responseBody, 1); + // Doesn't end in CRLF + if (c != CRLF) + { + errored = true; + error = 'header of chunk in chunked transfer did not end in CRLF'; + buffer_destroy(actualResponseBody); + return __http_client_destroy(); + } + // chunk-size is empty - something's up! + if (chunkSize == '') + { + errored = true; + error = 'empty chunk-size in a chunked transfer'; + buffer_destroy(actualResponseBody); + return __http_client_destroy(); + } + chunkSize = __http_parse_hex(chunkSize); + // Parsing of size failed - not hex? + if (chunkSize == -1) + { + errored = true; + error = 'chunk-size was not hexadecimal in a chunked transfer'; + buffer_destroy(actualResponseBody); + return __http_client_destroy(); + } + // Is the chunk bigger than the remaining response? + if (chunkSize + 2 > buffer_bytes_left(responseBody)) + { + errored = true; + error = 'chunk-size was greater than remaining data in a chunked transfer'; + buffer_destroy(actualResponseBody); + return __http_client_destroy(); + } + // OK, everything's good, read the chunk + write_buffer_part(actualResponseBody, responseBody, chunkSize); + actualResponseBodySize += chunkSize; + // Check for CRLF + if (read_string(responseBody, 2) != CRLF) + { + errored = true; + error = 'chunk did not end in CRLF in a chunked transfer'; + return __http_client_destroy(); + } + } + else + { + errored = true; + error = 'did not find CR after reading chunk header in a chunked transfer, Faucet HTTP bug?'; + return __http_client_destroy(); + } + // if the chunk size is zero, then it was the last chunk + if (chunkSize == 0 + // trailer headers will be present + and ds_map_exists(responseHeaders, 'trailer')) + { + // Parse header lines + var line; + line = 1; + while (buffer_bytes_left(responseBody)) + { + var linebuf; + linebuf = ''; + while (buffer_bytes_left(responseBody)) + { + c = read_string(responseBody, 1); + if (c != CR) + linebuf += c; + else + break; + } + c += read_string(responseBody, 1); + if (c != CRLF) + { + errored = true; + error = 'trailer header did not end in CRLF in a chunked transfer'; + return __http_client_destroy(); + } + if (!__http_parse_header(linebuf, line)) + return __http_client_destroy(); + line += 1; + } + } + } + responseBodySize = actualResponseBodySize; + buffer_destroy(responseBody); + responseBody = actualResponseBody; + } + else + { + errored = true; + error = 'Unsupported Transfer-Encoding: "' + ds_map_find_value(responseHaders, 'transfer-encoding') + '"'; + return __http_client_destroy(); + } + } + else if (responseBodySize != -1) + { + if (responseBodyProgress < responseBodySize) + { + errored = true; + error = "Unexpected EOF, response body size is less than expected"; + return __http_client_destroy(); + } + } + // 301 Moved Permanently/302 Found/303 See Other/307 Moved Temporarily + if (statusCode == 301 or statusCode == 302 or statusCode == 303 or statusCode == 307) + { + if (ds_map_exists(responseHeaders, 'location')) + { + var location, resolved; + location = ds_map_find_value(responseHeaders, 'location'); + resolved = __http_resolve_url(requestUrl, location); + // Resolving URL didn't fail and it's http:// + if (resolved != '' and string_copy(resolved, 1, 7) == 'http://') + { + // Restart request + __http_client_destroy(); + __http_prepare_request(client, resolved, requestHeaders); + } + else + { + errored = true; + error = "301, 302, 303 or 307 response with invalid or unsupported Location URL ('" + location + "') - can't redirect"; + return __http_client_destroy(); + } + exit; + } + else + { + errored = true; + error = "301, 302, 303 or 307 response without Location header - can't redirect"; + return __http_client_destroy(); + } + } + else + state = 2; + } + break; + // Done. + case 2: + break; + } +} + +#define __http_client_destroy +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Clears up contents of an httpClient prior to destruction or after error + +if (!destroyed) { + socket_destroy(socket); + buffer_destroy(responseBody); + ds_map_destroy(responseHeaders); +} +destroyed = true; + +#define http_new_get +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Makes a GET HTTP request +// real http_new_get(string url) + +// url - URL to send GET request to + +// Return value is an HttpClient instance that can be passed to +// fct_http_request_status etc. +// (errors on failure to parse URL) + +var url, client; + +url = argument0; + +if (!variable_global_exists('__HttpClient')) + __http_init(); + +client = instance_create(0, 0, global.__HttpClient); +__http_prepare_request(client, url, -1); +return client; + +#define http_new_get_ex +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Makes a GET HTTP request with custom headers +// real http_new_get_ex(string url, real headers) + +// url - URL to send GET request to +// headers - ds_map of extra headers to send + +// Return value is an HttpClient instance that can be passed to +// fct_http_request_status etc. +// (errors on failure to parse URL) + +var url, headers, client; + +url = argument0; +headers = argument1; + +if (!variable_global_exists('__HttpClient')) + __http_init(); + +client = instance_create(0, 0, global.__HttpClient); +__http_prepare_request(client, url, headers); +return client; + +#define http_step +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Steps the HTTP client. This is what makes everything actually happen. +// Call it each step. Returns whether or not the request has finished. +// real http_step(real client) + +// client - HttpClient object + +// Return value is either: +// 0 - In progress +// 1 - Done or Errored + +// Example usage: +// req = http_new_get("http://example.com/x.txt"); +// while (http_step(req)) {} +// if (http_status_code(req) != 200) { +// // Errored! +// } else { +// // Hasn't errored, do stuff here. +// } + +var client; +client = argument0; + +__http_client_step(client); + +if (client.errored || client.state == 2) + return 1; +else + return 0; + +#define http_status_code +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Gets the status code +// real http_status_code(real client) + +// client - HttpClient object + +// Return value is either: +// * 0, if the request has not yet finished +// * a negative value, if there was an internal Faucet HTTP error +// * a positive value, the status code of the HTTP request + +// "The Status-Code element is a 3-digit integer result code of the +// attempt to understand and satisfy the request. These codes are fully +// defined in section 10. The Reason-Phrase is intended to give a short +// textual description of the Status-Code. The Status-Code is intended +// for use by automata and the Reason-Phrase is intended for the human +// user. The client is not required to examine or display the Reason- +// Phrase." + +// See also: http_reason_phrase, gets the Reason-Phrase + +var client; +client = argument0; + +if (client.errored) + return -1; +else if (client.state == 2) + return client.statusCode; +else + return 0; + +#define http_reason_phrase +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Gets the reason phrase +// string http_reason_phrase(real client) + +// client - HttpClient object +// Return value is either: +// * "", if the request has not yet finished +// * an internal Faucet HTTP error message, if there was one +// * the reason phrase of the HTTP request + +// "The Status-Code element is a 3-digit integer result code of the +// attempt to understand and satisfy the request. These codes are fully +// defined in section 10. The Reason-Phrase is intended to give a short +// textual description of the Status-Code. The Status-Code is intended +// for use by automata and the Reason-Phrase is intended for the human +// user. The client is not required to examine or display the Reason- +// Phrase." + +// See also: http_status_code, gets the Status-Code + +var client; +client = argument0; + +if (client.errored) + return client.error; +else if (client.state == 2) + return client.reasonPhrase; +else + return ""; + +#define http_response_body +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Gets the response body returned by an HTTP request as a buffer +// real http_response_body(real client) + +// client - HttpClient object + +// Return value is a buffer if client hasn't errored and is finished + +var client; +client = argument0; + +return client.responseBody; + +#define http_response_body_size +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Gets the size of response body returned by an HTTP request +// real http_response_body_size(real client) + +// client - HttpClient object + +// Return value is the size in bytes, or -1 if we don't know or don't know yet + +// Call this each time you use the size - it may have changed in the case of redirect + +var client; +client = argument0; + +return client.responseBodySize; + +#define http_response_body_progress +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Gets the size of response body returned by an HTTP request which is so far downloaded +// real http_response_body_progress(real client) + +// client - HttpClient object + +// Return value is the size in bytes, or -1 if we haven't started yet or client has errored + +var client; +client = argument0; + +return client.responseBodyProgress; + +#define http_response_headers +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Gets the response headers returned by an HTTP request as a ds_map +// real http_response_headers(real client) + +// client - HttpClient object + +// Return value is a ds_map if client hasn't errored and is finished + +// All headers will have lowercase keys +// The ds_map is owned by the HttpClient, do not use ds_map_destroy() yourself +// Call when the request has finished - otherwise may be incomplete or missing + +var client; +client = argument0; + +return client.responseHeaders; + +#define http_destroy +// *** +// This function forms part of Faucet HTTP v1.0 +// https://github.com/TazeTSchnitzel/Faucet-HTTP-Extension +// +// Copyright (c) 2013-2014, Andrea Faulds +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +// *** + +// Cleans up HttpClient +// void http_destroy(real client) + +// client - HttpClient object + +var client; +client = argument0; + +with (client) +{ + __http_client_destroy(); + instance_destroy(); +} + diff --git a/samples/Game Maker Language/game_init.gml b/samples/Game Maker Language/game_init.gml new file mode 100644 index 00000000..4f5012d2 --- /dev/null +++ b/samples/Game Maker Language/game_init.gml @@ -0,0 +1,484 @@ +/* + Originally from /Source/gg2/Scripts/game_init.gml in Gang Garrison 2 + + Copyright (C) 2008-2013 Faucet Software + http://www.ganggarrison.com + + This program is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 3 of the License, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program; if not, + see . + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ + +// Returns true if the game is successfully initialized, false if there was an error and we should quit. +{ + instance_create(0,0,RoomChangeObserver); + set_little_endian_global(true); + if file_exists("game_errors.log") file_delete("game_errors.log"); + if file_exists("last_plugin.log") file_delete("last_plugin.log"); + + // Delete old left-over files created by the updater + var backupFilename; + backupFilename = file_find_first("gg2-old.delete.me.*", 0); + while(backupFilename != "") + { + file_delete(backupFilename); + backupFilename = file_find_next(); + } + file_find_close(); + + var customMapRotationFile, restart; + restart = false; + + //import wav files for music + global.MenuMusic=sound_add(choose("Music/menumusic1.wav","Music/menumusic2.wav","Music/menumusic3.wav","Music/menumusic4.wav","Music/menumusic5.wav","Music/menumusic6.wav"), 1, true); + global.IngameMusic=sound_add("Music/ingamemusic.wav", 1, true); + global.FaucetMusic=sound_add("Music/faucetmusic.wav", 1, true); + if(global.MenuMusic != -1) + sound_volume(global.MenuMusic, 0.8); + if(global.IngameMusic != -1) + sound_volume(global.IngameMusic, 0.8); + if(global.FaucetMusic != -1) + sound_volume(global.FaucetMusic, 0.8); + + global.sendBuffer = buffer_create(); + global.tempBuffer = buffer_create(); + global.HudCheck = false; + global.map_rotation = ds_list_create(); + + global.CustomMapCollisionSprite = -1; + + window_set_region_scale(-1, false); + + ini_open("gg2.ini"); + global.playerName = ini_read_string("Settings", "PlayerName", "Player"); + if string_count("#",global.playerName) > 0 global.playerName = "Player"; + global.playerName = string_copy(global.playerName, 0, min(string_length(global.playerName), MAX_PLAYERNAME_LENGTH)); + global.fullscreen = ini_read_real("Settings", "Fullscreen", 0); + global.useLobbyServer = ini_read_real("Settings", "UseLobby", 1); + global.hostingPort = ini_read_real("Settings", "HostingPort", 8190); + global.music = ini_read_real("Settings", "Music", ini_read_real("Settings", "IngameMusic", MUSIC_BOTH)); + global.playerLimit = ini_read_real("Settings", "PlayerLimit", 10); + //thy playerlimit shalt not exceed 48! + if (global.playerLimit > 48) + { + if (global.dedicatedMode != 1) + show_message("Warning: Player Limit cannot exceed 48. It has been set to 48"); + global.playerLimit = 48; + ini_write_real("Settings", "PlayerLimit", 48); + } + global.multiClientLimit = ini_read_real("Settings", "MultiClientLimit", 3); + global.particles = ini_read_real("Settings", "Particles", PARTICLES_NORMAL); + global.gibLevel = ini_read_real("Settings", "Gib Level", 3); + global.killCam = ini_read_real("Settings", "Kill Cam", 1); + global.monitorSync = ini_read_real("Settings", "Monitor Sync", 0); + if global.monitorSync == 1 set_synchronization(true); + else set_synchronization(false); + global.medicRadar = ini_read_real("Settings", "Healer Radar", 1); + global.showHealer = ini_read_real("Settings", "Show Healer", 1); + global.showHealing = ini_read_real("Settings", "Show Healing", 1); + global.showHealthBar = ini_read_real("Settings", "Show Healthbar", 0); + global.showTeammateStats = ini_read_real("Settings", "Show Extra Teammate Stats", 0); + global.serverPluginsPrompt = ini_read_real("Settings", "ServerPluginsPrompt", 1); + global.restartPrompt = ini_read_real("Settings", "RestartPrompt", 1); + //user HUD settings + global.timerPos=ini_read_real("Settings","Timer Position", 0) + global.killLogPos=ini_read_real("Settings","Kill Log Position", 0) + global.kothHudPos=ini_read_real("Settings","KoTH HUD Position", 0) + global.clientPassword = ""; + // for admin menu + customMapRotationFile = ini_read_string("Server", "MapRotation", ""); + global.shuffleRotation = ini_read_real("Server", "ShuffleRotation", 1); + global.timeLimitMins = max(1, min(255, ini_read_real("Server", "Time Limit", 15))); + global.serverPassword = ini_read_string("Server", "Password", ""); + global.mapRotationFile = customMapRotationFile; + global.dedicatedMode = ini_read_real("Server", "Dedicated", 0); + global.serverName = ini_read_string("Server", "ServerName", "My Server"); + global.welcomeMessage = ini_read_string("Server", "WelcomeMessage", ""); + global.caplimit = max(1, min(255, ini_read_real("Server", "CapLimit", 5))); + global.caplimitBkup = global.caplimit; + global.autobalance = ini_read_real("Server", "AutoBalance",1); + global.Server_RespawntimeSec = ini_read_real("Server", "Respawn Time", 5); + global.rewardKey = unhex(ini_read_string("Haxxy", "RewardKey", "")); + global.rewardId = ini_read_string("Haxxy", "RewardId", ""); + global.mapdownloadLimitBps = ini_read_real("Server", "Total bandwidth limit for map downloads in bytes per second", 50000); + global.updaterBetaChannel = ini_read_real("General", "UpdaterBetaChannel", isBetaVersion()); + global.attemptPortForward = ini_read_real("Server", "Attempt UPnP Forwarding", 0); + global.serverPluginList = ini_read_string("Server", "ServerPluginList", ""); + global.serverPluginsRequired = ini_read_real("Server", "ServerPluginsRequired", 0); + if (string_length(global.serverPluginList) > 254) { + show_message("Error: Server plugin list cannot exceed 254 characters"); + return false; + } + var CrosshairFilename, CrosshairRemoveBG; + CrosshairFilename = ini_read_string("Settings", "CrosshairFilename", ""); + CrosshairRemoveBG = ini_read_real("Settings", "CrosshairRemoveBG", 1); + global.queueJumping = ini_read_real("Settings", "Queued Jumping", 0); + + global.backgroundHash = ini_read_string("Background", "BackgroundHash", "default"); + global.backgroundTitle = ini_read_string("Background", "BackgroundTitle", ""); + global.backgroundURL = ini_read_string("Background", "BackgroundURL", ""); + global.backgroundShowVersion = ini_read_real("Background", "BackgroundShowVersion", true); + + readClasslimitsFromIni(); + + global.currentMapArea=1; + global.totalMapAreas=1; + global.setupTimer=1800; + global.joinedServerName=""; + global.serverPluginsInUse=false; + // Create plugin packet maps + global.pluginPacketBuffers = ds_map_create(); + global.pluginPacketPlayers = ds_map_create(); + + ini_write_string("Settings", "PlayerName", global.playerName); + ini_write_real("Settings", "Fullscreen", global.fullscreen); + ini_write_real("Settings", "UseLobby", global.useLobbyServer); + ini_write_real("Settings", "HostingPort", global.hostingPort); + ini_key_delete("Settings", "IngameMusic"); + ini_write_real("Settings", "Music", global.music); + ini_write_real("Settings", "PlayerLimit", global.playerLimit); + ini_write_real("Settings", "MultiClientLimit", global.multiClientLimit); + ini_write_real("Settings", "Particles", global.particles); + ini_write_real("Settings", "Gib Level", global.gibLevel); + ini_write_real("Settings", "Kill Cam", global.killCam); + ini_write_real("Settings", "Monitor Sync", global.monitorSync); + ini_write_real("Settings", "Healer Radar", global.medicRadar); + ini_write_real("Settings", "Show Healer", global.showHealer); + ini_write_real("Settings", "Show Healing", global.showHealing); + ini_write_real("Settings", "Show Healthbar", global.showHealthBar); + ini_write_real("Settings", "Show Extra Teammate Stats", global.showTeammateStats); + ini_write_real("Settings", "Timer Position", global.timerPos); + ini_write_real("Settings", "Kill Log Position", global.killLogPos); + ini_write_real("Settings", "KoTH HUD Position", global.kothHudPos); + ini_write_real("Settings", "ServerPluginsPrompt", global.serverPluginsPrompt); + ini_write_real("Settings", "RestartPrompt", global.restartPrompt); + ini_write_string("Server", "MapRotation", customMapRotationFile); + ini_write_real("Server", "ShuffleRotation", global.shuffleRotation); + ini_write_real("Server", "Dedicated", global.dedicatedMode); + ini_write_string("Server", "ServerName", global.serverName); + ini_write_string("Server", "WelcomeMessage", global.welcomeMessage); + ini_write_real("Server", "CapLimit", global.caplimit); + ini_write_real("Server", "AutoBalance", global.autobalance); + ini_write_real("Server", "Respawn Time", global.Server_RespawntimeSec); + ini_write_real("Server", "Total bandwidth limit for map downloads in bytes per second", global.mapdownloadLimitBps); + ini_write_real("Server", "Time Limit", global.timeLimitMins); + ini_write_string("Server", "Password", global.serverPassword); + ini_write_real("General", "UpdaterBetaChannel", global.updaterBetaChannel); + ini_write_real("Server", "Attempt UPnP Forwarding", global.attemptPortForward); + ini_write_string("Server", "ServerPluginList", global.serverPluginList); + ini_write_real("Server", "ServerPluginsRequired", global.serverPluginsRequired); + ini_write_string("Settings", "CrosshairFilename", CrosshairFilename); + ini_write_real("Settings", "CrosshairRemoveBG", CrosshairRemoveBG); + ini_write_real("Settings", "Queued Jumping", global.queueJumping); + + ini_write_string("Background", "BackgroundHash", global.backgroundHash); + ini_write_string("Background", "BackgroundTitle", global.backgroundTitle); + ini_write_string("Background", "BackgroundURL", global.backgroundURL); + ini_write_real("Background", "BackgroundShowVersion", global.backgroundShowVersion); + + ini_write_real("Classlimits", "Scout", global.classlimits[CLASS_SCOUT]) + ini_write_real("Classlimits", "Pyro", global.classlimits[CLASS_PYRO]) + ini_write_real("Classlimits", "Soldier", global.classlimits[CLASS_SOLDIER]) + ini_write_real("Classlimits", "Heavy", global.classlimits[CLASS_HEAVY]) + ini_write_real("Classlimits", "Demoman", global.classlimits[CLASS_DEMOMAN]) + ini_write_real("Classlimits", "Medic", global.classlimits[CLASS_MEDIC]) + ini_write_real("Classlimits", "Engineer", global.classlimits[CLASS_ENGINEER]) + ini_write_real("Classlimits", "Spy", global.classlimits[CLASS_SPY]) + ini_write_real("Classlimits", "Sniper", global.classlimits[CLASS_SNIPER]) + ini_write_real("Classlimits", "Quote", global.classlimits[CLASS_QUOTE]) + + //screw the 0 index we will start with 1 + //map_truefort + maps[1] = ini_read_real("Maps", "ctf_truefort", 1); + //map_2dfort + maps[2] = ini_read_real("Maps", "ctf_2dfort", 2); + //map_conflict + maps[3] = ini_read_real("Maps", "ctf_conflict", 3); + //map_classicwell + maps[4] = ini_read_real("Maps", "ctf_classicwell", 4); + //map_waterway + maps[5] = ini_read_real("Maps", "ctf_waterway", 5); + //map_orange + maps[6] = ini_read_real("Maps", "ctf_orange", 6); + //map_dirtbowl + maps[7] = ini_read_real("Maps", "cp_dirtbowl", 7); + //map_egypt + maps[8] = ini_read_real("Maps", "cp_egypt", 8); + //arena_montane + maps[9] = ini_read_real("Maps", "arena_montane", 9); + //arena_lumberyard + maps[10] = ini_read_real("Maps", "arena_lumberyard", 10); + //gen_destroy + maps[11] = ini_read_real("Maps", "gen_destroy", 11); + //koth_valley + maps[12] = ini_read_real("Maps", "koth_valley", 12); + //koth_corinth + maps[13] = ini_read_real("Maps", "koth_corinth", 13); + //koth_harvest + maps[14] = ini_read_real("Maps", "koth_harvest", 14); + //dkoth_atalia + maps[15] = ini_read_real("Maps", "dkoth_atalia", 15); + //dkoth_sixties + maps[16] = ini_read_real("Maps", "dkoth_sixties", 16); + + //Server respawn time calculator. Converts each second to a frame. (read: multiply by 30 :hehe:) + if (global.Server_RespawntimeSec == 0) + { + global.Server_Respawntime = 1; + } + else + { + global.Server_Respawntime = global.Server_RespawntimeSec * 30; + } + + // I have to include this, or the client'll complain about an unknown variable. + global.mapchanging = false; + + ini_write_real("Maps", "ctf_truefort", maps[1]); + ini_write_real("Maps", "ctf_2dfort", maps[2]); + ini_write_real("Maps", "ctf_conflict", maps[3]); + ini_write_real("Maps", "ctf_classicwell", maps[4]); + ini_write_real("Maps", "ctf_waterway", maps[5]); + ini_write_real("Maps", "ctf_orange", maps[6]); + ini_write_real("Maps", "cp_dirtbowl", maps[7]); + ini_write_real("Maps", "cp_egypt", maps[8]); + ini_write_real("Maps", "arena_montane", maps[9]); + ini_write_real("Maps", "arena_lumberyard", maps[10]); + ini_write_real("Maps", "gen_destroy", maps[11]); + ini_write_real("Maps", "koth_valley", maps[12]); + ini_write_real("Maps", "koth_corinth", maps[13]); + ini_write_real("Maps", "koth_harvest", maps[14]); + ini_write_real("Maps", "dkoth_atalia", maps[15]); + ini_write_real("Maps", "dkoth_sixties", maps[16]); + + ini_close(); + + // parse the protocol version UUID for later use + global.protocolUuid = buffer_create(); + parseUuid(PROTOCOL_UUID, global.protocolUuid); + + global.gg2lobbyId = buffer_create(); + parseUuid(GG2_LOBBY_UUID, global.gg2lobbyId); + + // Create abbreviations array for rewards use + initRewards() + +var a, IPRaw, portRaw; +doubleCheck=0; +global.launchMap = ""; + + for(a = 1; a <= parameter_count(); a += 1) + { + if (parameter_string(a) == "-dedicated") + { + global.dedicatedMode = 1; + } + else if (parameter_string(a) == "-restart") + { + restart = true; + } + else if (parameter_string(a) == "-server") + { + IPRaw = parameter_string(a+1); + if (doubleCheck == 1) + { + doubleCheck = 2; + } + else + { + doubleCheck = 1; + } + } + else if (parameter_string(a) == "-port") + { + portRaw = parameter_string(a+1); + if (doubleCheck == 1) + { + doubleCheck = 2; + } + else + { + doubleCheck = 1; + } + } + else if (parameter_string(a) == "-map") + { + global.launchMap = parameter_string(a+1); + global.dedicatedMode = 1; + } + } + + if (doubleCheck == 2) + { + global.serverPort = real(portRaw); + global.serverIP = IPRaw; + global.isHost = false; + instance_create(0,0,Client); + } + + global.customMapdesginated = 0; + + // if the user defined a valid map rotation file, then load from there + + if(customMapRotationFile != "" && file_exists(customMapRotationFile) && global.launchMap == "") { + global.customMapdesginated = 1; + var fileHandle, i, mapname; + fileHandle = file_text_open_read(customMapRotationFile); + for(i = 1; !file_text_eof(fileHandle); i += 1) { + mapname = file_text_read_string(fileHandle); + // remove leading whitespace from the string + while(string_char_at(mapname, 0) == " " || string_char_at(mapname, 0) == chr(9)) { // while it starts with a space or tab + mapname = string_delete(mapname, 0, 1); // delete that space or tab + } + if(mapname != "" && string_char_at(mapname, 0) != "#") { // if it's not blank and it's not a comment (starting with #) + ds_list_add(global.map_rotation, mapname); + } + file_text_readln(fileHandle); + } + file_text_close(fileHandle); + } + + else if (global.launchMap != "") && (global.dedicatedMode == 1) + { + ds_list_add(global.map_rotation, global.launchMap); + } + + else { // else load from the ini file Maps section + //Set up the map rotation stuff + var i, sort_list; + sort_list = ds_list_create(); + for(i=1; i <= 16; i += 1) { + if(maps[i] != 0) ds_list_add(sort_list, ((100*maps[i])+i)); + } + ds_list_sort(sort_list, 1); + + // translate the numbers back into the names they represent + for(i=0; i < ds_list_size(sort_list); i += 1) { + switch(ds_list_find_value(sort_list, i) mod 100) { + case 1: + ds_list_add(global.map_rotation, "ctf_truefort"); + break; + case 2: + ds_list_add(global.map_rotation, "ctf_2dfort"); + break; + case 3: + ds_list_add(global.map_rotation, "ctf_conflict"); + break; + case 4: + ds_list_add(global.map_rotation, "ctf_classicwell"); + break; + case 5: + ds_list_add(global.map_rotation, "ctf_waterway"); + break; + case 6: + ds_list_add(global.map_rotation, "ctf_orange"); + break; + case 7: + ds_list_add(global.map_rotation, "cp_dirtbowl"); + break; + case 8: + ds_list_add(global.map_rotation, "cp_egypt"); + break; + case 9: + ds_list_add(global.map_rotation, "arena_montane"); + break; + case 10: + ds_list_add(global.map_rotation, "arena_lumberyard"); + break; + case 11: + ds_list_add(global.map_rotation, "gen_destroy"); + break; + case 12: + ds_list_add(global.map_rotation, "koth_valley"); + break; + case 13: + ds_list_add(global.map_rotation, "koth_corinth"); + break; + case 14: + ds_list_add(global.map_rotation, "koth_harvest"); + break; + case 15: + ds_list_add(global.map_rotation, "dkoth_atalia"); + break; + case 16: + ds_list_add(global.map_rotation, "dkoth_sixties"); + break; + + } + } + ds_list_destroy(sort_list); + } + + window_set_fullscreen(global.fullscreen); + + global.gg2Font = font_add_sprite(gg2FontS,ord("!"),false,0); + global.countFont = font_add_sprite(countFontS, ord("0"),false,2); + draw_set_font(global.gg2Font); + cursor_sprite = CrosshairS; + + if(!directory_exists(working_directory + "\Maps")) directory_create(working_directory + "\Maps"); + + instance_create(0, 0, AudioControl); + instance_create(0, 0, SSControl); + + // custom dialog box graphics + message_background(popupBackgroundB); + message_button(popupButtonS); + message_text_font("Century",9,c_white,1); + message_button_font("Century",9,c_white,1); + message_input_font("Century",9,c_white,0); + + //Key Mapping + ini_open("controls.gg2"); + global.jump = ini_read_real("Controls", "jump", ord("W")); + global.down = ini_read_real("Controls", "down", ord("S")); + global.left = ini_read_real("Controls", "left", ord("A")); + global.right = ini_read_real("Controls", "right", ord("D")); + global.attack = ini_read_real("Controls", "attack", MOUSE_LEFT); + global.special = ini_read_real("Controls", "special", MOUSE_RIGHT); + global.taunt = ini_read_real("Controls", "taunt", ord("F")); + global.chat1 = ini_read_real("Controls", "chat1", ord("Z")); + global.chat2 = ini_read_real("Controls", "chat2", ord("X")); + global.chat3 = ini_read_real("Controls", "chat3", ord("C")); + global.medic = ini_read_real("Controls", "medic", ord("E")); + global.drop = ini_read_real("Controls", "drop", ord("B")); + global.changeTeam = ini_read_real("Controls", "changeTeam", ord("N")); + global.changeClass = ini_read_real("Controls", "changeClass", ord("M")); + global.showScores = ini_read_real("Controls", "showScores", vk_shift); + ini_close(); + + calculateMonthAndDay(); + + if(!directory_exists(working_directory + "\Plugins")) directory_create(working_directory + "\Plugins"); + loadplugins(); + + /* Windows 8 is known to crash GM when more than three (?) sounds play at once + * We'll store the kernel version (Win8 is 6.2, Win7 is 6.1) and check it there. + ***/ + registry_set_root(1); // HKLM + global.NTKernelVersion = real(registry_read_string_ext("\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "CurrentVersion")); // SIC + + if (file_exists(CrosshairFilename)) + { + sprite_replace(CrosshairS,CrosshairFilename,1,CrosshairRemoveBG,false,0,0); + sprite_set_offset(CrosshairS,sprite_get_width(CrosshairS)/2,sprite_get_height(CrosshairS)/2); + } + if(global.dedicatedMode == 1) { + AudioControlToggleMute(); + room_goto_fix(Menu); + } else if(restart) { + room_goto_fix(Menu); + } + return true; +} diff --git a/samples/Game Maker Language/jsonion.gml b/samples/Game Maker Language/jsonion.gml new file mode 100644 index 00000000..e4d2a6cb --- /dev/null +++ b/samples/Game Maker Language/jsonion.gml @@ -0,0 +1,1861 @@ +// Originally from /jsonion.gml in JSOnion +// JSOnion v1.0.0d is licensed under the MIT licence. You may freely adapt and use this library in commercial and non-commercial projects. + +#define __jso_gmt_tuple +{ + + /** + tuple(>element_0<, >element_1<, ..., >element_n<): Return an n-tuple + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + //Position, address table and data + var pos, addr_table, data; + pos = 6*argument_count+4; + addr_table = ""; + data = ""; + + //Build the tuple element-by-element + var i, ca, isstr, datastr; + for (i=0; ith element of + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + //Capture arguments + var t, n, size; + t = argument0; + n = argument1; + size = __jso_gmt_size(t); + + //Search for the bounding positions for the th element in the address table + var start, afterend, isstr; + isstr = ord(string_char_at(t, 4+6*n))-$30; + start = real(string_copy(t, 5+6*n, 5)); + if (n < size-1) { + afterend = real(string_copy(t, 11+6*n, 5)); + } else { + afterend = string_length(t)+1; + } + + //Return the th element with the correct type + if (isstr) { + return string_copy(t, start, afterend-start); + } + else { + return real(string_copy(t, start, afterend-start)); + } + +} + +#define __jso_gmt_size +{ + + /** + size(tuple_source): Return the size of + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + return real(string_copy(argument0, 1, 3)); + +} + +#define __jso_gmt_numtostr +{ + + /** + __gmt_numtostr(num): Return string representation of . Decimal numbers expressed as scientific notation + with double precision (i.e. 15 digits) + @author: GameGeisha + @version: 1.2 (edited) + */ + if (frac(argument0) == 0) { + return string(argument0); + } + + var mantissa, exponent; + exponent = floor(log10(abs(argument0))); + mantissa = string_format(argument0/power(10,exponent), 15, 14); + var i, ca; + i = string_length(mantissa); + do { + ca = string_char_at(mantissa, i); + i -= 1; + } until (ca != "0") + if (ca != ".") { + mantissa = string_copy(mantissa, 1, i+1); + } + else { + mantissa = string_copy(mantissa, 1, i); + } + if (exponent != 0) { + return mantissa + "e" + string(exponent); + } + else { + return mantissa; + } + +} + +#define __jso_gmt_test_all +{ + + /** + test_all(): Runs all test suites + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + //Automated testing sequence + __jso_gmt_test_elem(); + __jso_gmt_test_size(); + __jso_gmt_test_numtostr(); + +} + +#define __jso_gmt_test_numtostr +{ + + /** + _test_numtostr(): Runs number-to-string tests + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + var tolerance; + tolerance = 1/10000000000; + + if (real(__jso_gmt_numtostr(9)) != 9) { + show_message("Scientific notation conversion failed for 1-digit integer! Result: " + __jso_gmt_numtostr(9)); + } + if (real(__jso_gmt_numtostr(500)) != 500) { + show_message("Scientific notation conversion failed for 3-digit integer! Result: " + __jso_gmt_numtostr(500)); + } + if (abs(real(__jso_gmt_numtostr(pi))-pi) > tolerance) { + show_message("Scientific notation conversion failed for pi! Result: " + __jso_gmt_numtostr(pi)); + } + if (abs(real(__jso_gmt_numtostr(104729.903455))-104729.903455) > tolerance) { + show_message("Scientific notation conversion failed for large decimal number! Result: " + __jso_gmt_numtostr(104729.903455)); + } + if (abs(real(__jso_gmt_numtostr(-pi))+pi) > tolerance) { + show_message("Scientific notation conversion failed for -pi! Result: " + __jso_gmt_numtostr(-pi)); + } + if (abs(real(__jso_gmt_numtostr(1/pi))-1/pi) > tolerance) { + show_message("Scientific notation conversion failed for 1/pi! Result: " + __jso_gmt_numtostr(1/pi)); + } + +} + +#define __jso_gmt_test_elem +{ + + /** + _test_elem(): Runs tuple element retrieval tests + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + if (__jso_gmt_elem(__jso_gmt_tuple("Qblock", "kll"), 0) != "Qblock") { + show_message("Element retrieval failed for simple string. #Should be:Qblock#Actual:" + __jso_gmt_elem(__jso_gmt_tuple("Qblock"), 0)); + } + if (__jso_gmt_elem(__jso_gmt_tuple(9, "Q", -7), 0) != 9) { + show_message("Element retrieval failed for simple number. #Should be 9#Actual:" + string(__jso_gmt_elem(__jso_gmt_tuple(9, "Q", 7), 0))); + } + if (__jso_gmt_elem(__jso_gmt_tuple("Qblock", "", "Negg"), 1) != "") { + show_message("Element retrieval failed for empty string#Should be empty string#Actual:"+string(__jso_gmt_elem(__jso_gmt_tuple("Qblock", "", "Negg"), 0))); + } + + if (__jso_gmt_elem(__jso_gmt_elem(__jso_gmt_tuple("Not this", __jso_gmt_tuple(0, 1, 2, 3), "Waahoo"), 1), 3) != 3) { + show_message("Element retrieval failed in nested tuple. #Should be 3#Actual:" + string(__jso_gmt_elem(__jso_gmt_elem(__jso_gmt_tuple("Not this", __jso_gmt_tuple(0, 1, 2, 3), "Waahoo"), 1), 3))); + } + +} + +#define __jso_gmt_test_size +{ + + /** + _test_size(): Runs tuple size tests + @author: GameGeisha + @version: 1.2 (GMTuple) + */ + + if (__jso_gmt_size(__jso_gmt_tuple("Waahoo", "Negg", 0)) != 3) { + show_message("Bad size for 3-tuple"); + } + if (__jso_gmt_size(__jso_gmt_tuple()) != 0) { + show_message("Bad size for null tuple"); + } + if (__jso_gmt_size(__jso_gmt_tuple(7)) != 1) { + show_message("Bad size for 1-tuple"); + } + if (__jso_gmt_size(__jso_gmt_tuple(1,2,3,4,5,6,7,8,9,10)) != 10) { + show_message("Bad size for 10-tuple"); + } + +} + +#define jso_new_map +{ + /** + jso_new_map(): Create a new map. + JSOnion version: 1.0.0d + */ + return ds_map_create(); +} + +#define jso_new_list +{ + /** + jso_new_list(): Create a new list. + JSOnion version: 1.0.0d + */ + return ds_list_create(); +} + +#define jso_map_add_real +{ + /** + jso_map_add_real(map, key, val): Add the key-value pair : to , where is a real value. + JSOnion version: 1.0.0d + */ + ds_map_add(argument0, argument1, argument2); +} + +#define jso_map_add_string +{ + /** + jso_map_add_string(map, key, str): Add the key-value pair : to , where is a string value. + JSOnion version: 1.0.0d + */ + ds_map_add(argument0, argument1, "s" + argument2); +} + +#define jso_map_add_sublist +{ + /** + jso_map_add_sublist(map, key, sublist): Add the key-value pair : to , where is a list. + JSOnion version: 1.0.0d + */ + ds_map_add(argument0, argument1, "l" + string(argument2)); +} + +#define jso_map_add_submap +{ + /** + jso_map_add_submap(map, key, submap): Add the key-value pair : to , where is a map. + JSOnion version: 1.0.0d + */ + ds_map_add(argument0, argument1, "m" + string(argument2)); +} + +#define jso_map_add_integer +{ + /** + jso_map_add_integer(map, key, int): Add the key-value pair : to , where is a integer value. + JSOnion version: 1.0.0d + */ + ds_map_add(argument0, argument1, floor(argument2)); +} + +#define jso_map_add_boolean +{ + /** + jso_map_add_boolean(map, key, bool): Add the key-value pair : to , where is a boolean value. + JSOnion version: 1.0.0d + */ + if (argument2) { + ds_map_add(argument0, argument1, "btrue"); + } else { + ds_map_add(argument0, argument1, "bfalse"); + } +} + +#define jso_list_add_real +{ + /** + jso_list_add_real(list, val): Append the real value to . + JSOnion version: 1.0.0d + */ + ds_list_add(argument0, argument1); +} + +#define jso_list_add_string +{ + /** + jso_list_add_string(list, str): Append the string value to . + JSOnion version: 1.0.0d + */ + ds_list_add(argument0, "s" + argument1); +} + +#define jso_list_add_sublist +{ + /** + jso_list_add_sublist(list, sublist): Append the list to . + JSOnion version: 1.0.0d + */ + ds_list_add(argument0, "l" + string(argument1)); +} + +#define jso_list_add_submap +{ + /** + jso_list_add_submap(list, submap): Append the map to . + JSOnion version: 1.0.0d + */ + ds_list_add(argument0, "m" + string(argument1)); +} + +#define jso_list_add_integer +{ + /** + jso_list_add_integer(list, int): Append the integer to . + JSOnion version: 1.0.0d + */ + ds_list_add(argument0, floor(argument1)); +} + +#define jso_list_add_boolean +{ + /** + jso_list_add_boolean(list, bool): Append the boolean value to . + JSOnion version: 1.0.0d + */ + if (argument1) { + ds_list_add(argument0, "btrue"); + } else { + ds_list_add(argument0, "bfalse"); + } +} + +#define jso_map_get +{ + /** + jso_map_get(map, key): Retrieve the value stored in with the key value , with the correct type. + JSOnion version: 1.0.0d + */ + + //Grab the value + var v; + v = ds_map_find_value(argument0, argument1); + + //String; could be string, map or list + if (is_string(v)) { + switch (string_char_at(v, 1)) { + case "s": + return string_delete(v, 1, 1); + break; + case "l": case "m": + return real(string_delete(v, 1, 1)); + break; + case "b": + if (v == "btrue") { + return true; + } + else if (v == "bfalse") { + return false; + } + else { + show_error("Invalid boolean value.", true); + } + break; + default: show_error("Invalid map contents.", true); break; + } + } + + //Real; return real value as-is + else { + return v; + } +} + +#define jso_map_get_type +{ + /** + jso_map_get_type(map, key): Return the type of value to which the key value is mapped to in . + JSOnion version: 1.0.0d + */ + + //Grab the value + var v; + v = ds_map_find_value(argument0, argument1); + + //String; could be string, map or list + if (is_string(v)) { + switch (string_char_at(v, 1)) { + case "s": + return jso_type_string; + break; + case "l": + return jso_type_list; + break; + case "m": + return jso_type_map; + break; + case "b": + return jso_type_boolean; + break; + default: show_error("Invalid map content type.", true); break; + } + } + + //Real + else { + return jso_type_real; + } +} + +#define jso_list_get +{ + /** + jso_list_get(list, index): Retrieve the value stored in at position , with the correct type. + JSOnion version: 1.0.0d + */ + + //Grab the value + var v; + v = ds_list_find_value(argument0, argument1); + + //String; could be string, map or list + if (is_string(v)) { + switch (string_char_at(v, 1)) { + case "s": + return string_delete(v, 1, 1); + break; + case "l": case "m": + return real(string_delete(v, 1, 1)); + break; + case "b": + if (v == "btrue") { + return true; + } + else if (v == "bfalse") { + return false; + } + else { + show_error("Invalid boolean value.", true); + } + break; + default: show_error("Invalid list contents.", true); break; + } + } + + //Real; return real value as-is + else { + return v; + } +} + +#define jso_list_get_type +{ + /** + jso_list_get_type(list, index): Retrieve the type of value found at position of . + JSOnion version: 1.0.0d + */ + + //Grab the value + var v; + v = ds_list_find_value(argument0, argument1); + + //String; could be string, map or list + if (is_string(v)) { + switch (string_char_at(v, 1)) { + case "s": + return jso_type_string; + break; + case "l": + return jso_type_list; + break; + case "m": + return jso_type_map; + break; + case "b": + return jso_type_boolean; + break; + default: show_error("Invalid list content type.", true); break; + } + } + + //Real + else { + return jso_type_real; + } +} + +#define jso_cleanup_map +{ + /** + jso_cleanup_map(map): Recursively free up . + JSOnion version: 1.0.0d + */ + + //Loop through all keys + var i, l, k; + l = ds_map_size(argument0); + k = ds_map_find_first(argument0); + for (i=0; i. + JSOnion version: 1.0.0d + */ + + //Loop through all elements + var i, l, v; + l = ds_list_size(argument0); + for (i=0; i): Return a JSON-encoded version of real value . + This uses scientific notation with up to 15 significant digits for decimal values. + For integers, it just uses string(). + This is adapted from the same algorithm used in GMTuple. + JSOnion version: 1.0.0d + */ + + return __jso_gmt_numtostr(argument0); +} + +#define jso_encode_string +{ + /** + jso_encode_string(str): Return a JSON-encoded version of string . + JSOnion version: 1.0.0d + */ + + //Iteratively reconstruct the string + var i, l, s, c; + s = ""; + l = string_length(argument0); + for (i=1; i<=l; i+=1) { + //Replace escape characters + c = string_char_at(argument0, i); + switch (ord(c)) { + case 34: case 92: case 47: //Double quotes, backslashes and slashes + s += "\" + c; + break; + case 8: //Backspace + s += "\b"; + break; + case 12: //Form feed + s += "\f"; + break; + case 10: //New line + s += "\n"; + break; + case 13: //Carriage return + s += "\r"; + break; + case 9: //Horizontal tab + s += "\t"; + break; + default: //Not an escape character + s += c; + break; + } + } + + //Add quotes + return '"' + s + '"'; +} + +#define jso_encode_list +{ + /** + jso_encode_list(list): Return a JSON-encoded version of list . + JSOnion version: 1.0.0d + */ + + //Iteratively encode each element + var i, l, s; + s = ""; + l = ds_list_size(argument0); + for (i=0; i 0) { + s += ","; + } + //Select correct encoding for each element, then recursively encode each + switch (jso_list_get_type(argument0, i)) { + case jso_type_real: + s += jso_encode_real(jso_list_get(argument0, i)); + break; + case jso_type_string: + s += jso_encode_string(jso_list_get(argument0, i)); + break; + case jso_type_map: + s += jso_encode_map(jso_list_get(argument0, i)); + break; + case jso_type_list: + s += jso_encode_list(jso_list_get(argument0, i)); + break; + case jso_type_boolean: + s += jso_encode_boolean(jso_list_get(argument0, i)); + break; + } + } + + //Done, add square brackets + return "[" + s + "]"; +} + +#define jso_encode_map +{ + /** + jso_encode_map(map): Return a JSON-encoded version of map . + JSOnion version: 1.0.0d + */ + + //Go through every key-value pair + var i, l, k, s; + s = ""; + l = ds_map_size(argument0); + k = ds_map_find_first(argument0); + for (i=0; i 0) { + s += ","; + } + //Find the key and encode it + if (is_real(k)) { + s += jso_encode_real(k); + } else { + s += jso_encode_string(k); + } + //Add the : separator + s += ":"; + //Select correct encoding for each value, then recursively encode each + switch (jso_map_get_type(argument0, k)) { + case jso_type_real: + s += jso_encode_real(jso_map_get(argument0, k)); + break; + case jso_type_string: + s += jso_encode_string(jso_map_get(argument0, k)); + break; + case jso_type_map: + s += jso_encode_map(jso_map_get(argument0, k)); + break; + case jso_type_list: + s += jso_encode_list(jso_map_get(argument0, k)); + break; + case jso_type_boolean: + s += jso_encode_boolean(jso_map_get(argument0, k)); + break; + } + //Get next key + k = ds_map_find_next(argument0, k); + } + + //Done, add braces + return "{" + s + "}"; +} + +#define jso_encode_integer +{ + /** + jso_encode_integer(int): Return a JSON-encoded version of the integer value . + JSOnion version: 1.0.0d + */ + return string(floor(argument0)); +} + +#define jso_encode_boolean +{ + /** + jso_encode_boolean(bool): Return a JSON-encoded version of the boolean value . + JSOnion version: 1.0.0d + */ + if (argument0) { + return "true"; + } else { + return "false"; + } +} + +#define jso_decode_map +{ + /** + jso_decode_map(json): Return a JSOnion-compatible map representing the JSON string . + JSOnion version: 1.0.0d + */ + return __jso_gmt_elem(_jso_decode_map(argument0, 1), 0); +} + +#define jso_decode_list +{ + /** + jso_decode_list(json): Return a JSOnion-compatible list representing the JSON string . + JSOnion version: 1.0.0d + */ + return __jso_gmt_elem(_jso_decode_list(argument0, 1), 0); +} + +#define jso_decode_string +{ + /** + jso_decode_string(json): Return a string representing the JSON string . + JSOnion version: 1.0.0d + */ + return __jso_gmt_elem(_jso_decode_string(argument0, 1), 0); +} + +#define jso_decode_boolean +{ + /** + jso_decode_boolean(json): Return a boolean value representing the JSON string . + JSOnion version: 1.0.0d + */ + return __jso_gmt_elem(_jso_decode_boolean(argument0, 1), 0); +} + +#define jso_decode_real +{ + /** + jso_decode_real(json): Return a real value representing the JSON string . + JSOnion version: 1.0.0d + */ + return __jso_gmt_elem(_jso_decode_real(argument0, 1), 0); +} + +#define jso_decode_integer +{ + /** + jso_decode_integer(json): Return an integer value representing the JSON string . + JSOnion version: 1.0.0d + */ + return __jso_gmt_elem(_jso_decode_integer(argument0, 1), 0); +} + +#define _jso_decode_map +{ + /** + _jso_decode_map(json, startindex): Extract a map from JSON string starting at position . + Return a 2-tuple of the extracted map handle and the position after the ending }. + JSOnion version: 1.0.0d + */ + var i, len, map; + i = argument1; + len = string_length(argument0); + map = jso_new_map(); + + //Seek to first { + var c; + c = string_char_at(argument0, i); + if (c != "{") { + do { + i += 1; + c = string_char_at(argument0, i); + if (!_jso_is_whitespace_char(c)) && (c != "{") { + show_error("Cannot parse map at position " + string(i), true); + } + } until (c == "{") + } + i += 1; + + //Read until end of JSON or ending } + var found_end, state, found, current_key; + found_end = false; + state = 0; + for (i=i; i<=len && !found_end; i+=1) { + c = string_char_at(argument0, i); + switch (state) { + //0: Looking for a key or closing } + case 0: + switch (c) { + case "}": + found_end = true; + break; + case '"': + found = _jso_decode_string(argument0, i); + current_key = __jso_gmt_elem(found, 0); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "+": case "-": + found = _jso_decode_real(argument0, i); + current_key = __jso_gmt_elem(found, 0); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + default: + if (!_jso_is_whitespace_char(c)) { + show_error("Unexpected character at position " + string(i) + ".", true); + } + break; + } + break; + //1: Looking for the : separator + case 1: + switch (c) { + case ":": + state = 2; + break; + default: + if (!_jso_is_whitespace_char(c)) { + show_error("Unexpected character at position " + string(i) + ".", true); + } + break; + } + break; + //2: Looking for a value + case 2: + switch (c) { + case "[": + found = _jso_decode_list(argument0, i); + jso_map_add_sublist(map, current_key, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 3; + break; + case "{": + found = _jso_decode_map(argument0, i); + jso_map_add_submap(map, current_key, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 3; + break; + case '"': + found = _jso_decode_string(argument0, i); + jso_map_add_string(map, current_key, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 3; + break; + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "+": case "-": + found = _jso_decode_real(argument0, i); + jso_map_add_real(map, current_key, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 3; + break; + case "t": case "f": + found = _jso_decode_boolean(argument0, i); + jso_map_add_boolean(map, current_key, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 3; + break; + default: + if (!_jso_is_whitespace_char(c)) { + show_error("Unexpected character at position " + string(i) + ".", true); + } + break; + } + break; + //3: Done looking for an entry, want comma or } + case 3: + switch (c) { + case "}": + found_end = true; + break; + case ",": + state = 0; + break; + default: + if (!_jso_is_whitespace_char(c)) { + show_error("Unexpected character at position " + string(i) + ".", true); + } + break; + } + break; + } + } + + //Return extracted map with ending position if the ending } is found + if (found_end) { + return __jso_gmt_tuple(map, i); + } + //Ended too early, throw error + else { + show_error("Unexpected end of map in JSON string.", true); + } +} + +#define _jso_decode_list +{ + /** + _jso_decode_list(json, startindex): Extract a list from JSON string starting at position . + Return a 2-tuple of the extracted list handle and the position after the ending ]. + JSOnion version: 1.0.0d + */ + var i, len, list; + i = argument1; + len = string_length(argument0); + list = jso_new_list(); + + //Seek to first [ + var c; + c = string_char_at(argument0, i); + if (c != "[") { + do { + i += 1; + c = string_char_at(argument0, i); + if (!_jso_is_whitespace_char(c)) && (c != "[") { + show_error("Cannot parse list at position " + string(i), true); + } + } until (c == "[") + } + i += 1; + + //Read until end of JSON or ending ] + var found_end, state, found; + found_end = false; + state = 0; + for (i=i; i<=len && !found_end; i+=1) { + c = string_char_at(argument0, i); + switch (state) { + //0: Looking for an item + case 0: + switch (c) { + case "]": + found_end = true; + break; + case "[": + found = _jso_decode_list(argument0, i); + jso_list_add_sublist(list, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + case "{": + found = _jso_decode_map(argument0, i); + jso_list_add_submap(list, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + case '"': + found = _jso_decode_string(argument0, i); + jso_list_add_string(list, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "+": case "-": + found = _jso_decode_real(argument0, i); + jso_list_add_real(list, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + case "t": case "f": + found = _jso_decode_boolean(argument0, i); + jso_list_add_boolean(list, __jso_gmt_elem(found, 0)); + i = __jso_gmt_elem(found, 1)-1; + state = 1; + break; + default: + if (!_jso_is_whitespace_char(c)) { + show_error("Unexpected character at position " + string(i) + ".", true); + } + break; + } + break; + //1: Done looking for an item, want comma or ] + case 1: + switch (c) { + case "]": + found_end = true; + break; + case ",": + state = 0; + break; + default: + if (!_jso_is_whitespace_char(c)) { + show_error("Unexpected character at position " + string(i) + ".", true); + } + break; + } + break; + } + } + + //Return extracted list with ending position if the ending ] is found + if (found_end) { + return __jso_gmt_tuple(list, i); + } + //Ended too early, throw error + else { + show_error("Unexpected end of list in JSON string.", true); + } +} + +#define _jso_decode_string +{ + /** + _jso_decode_string(json, startindex): Extract a string from JSON string starting at position . + Return a 2-tuple of the extracted string and the position after the ending double quote. + JSOnion version: 1.0.0d + */ + var i, len, str; + i = argument1; + len = string_length(argument0); + str = ""; + + //Seek to first double quote + var c; + c = string_char_at(argument0, i); + if (c != '"') { + do { + i += 1; + c = string_char_at(argument0, i); + } until (c == '"') + } + i += 1; + + //Read until end of JSON or ending double quote + var found_end, escape_mode; + found_end = false; + escape_mode = false; + for (i=i; i<=len && !found_end; i+=1) { + c = string_char_at(argument0, i); + //Escape mode + if (escape_mode) { + switch (c) { + case '"': case "\": case "/": + str += c; + escape_mode = false; + break; + case "b": + str += chr(8); + escape_mode = false; + break; + case "f": + str += chr(12); + escape_mode = false; + break; + case "n": + str += chr(10); + escape_mode = false; + break; + case "r": + str += chr(13); + escape_mode = false; + break; + case "t": + str += chr(9); + escape_mode = false; + break; + case "u": + var u; + if (len-i < 5) { + show_error("Invalid escape character at position " + string(i) + ".", true); + } else { + str += chr(_jso_hex_to_decimal(string_copy(argument0, i+1, 4))); + escape_mode = false; + i += 4; + } + break; + default: + show_error("Invalid escape character at position " + string(i) + ".", true); + break; + } + } + //Regular mode + else { + switch (c) { + case '"': found_end = true; break; + case "\": escape_mode = true; break; + default: str += c; break; + } + } + } + + //Return extracted string with ending position if the ending double quote is found + if (found_end) { + return __jso_gmt_tuple(str, i); + } + //Ended too early, throw error + else { + show_error("Unexpected end of string in JSON string.", true); + } +} + +#define _jso_decode_boolean +{ + /** + _jso_decode_boolean(json, startindex): Extract a boolean from JSON string starting at position . + Return a 2-tuple of the extracted boolean and the position after the last e. + JSOnion version: 1.0.0d + */ + var i, len, str; + i = argument1; + len = string_length(argument0); + + //Seek to first t or f that can be found + var c; + c = string_char_at(argument0, i); + if (c != "t") && (c != "f") { + do { + i += 1; + c = string_char_at(argument0, i); + if (!_jso_is_whitespace_char(c)) && (c != "t") && (c != "f") { + show_error("Cannot parse boolean value at position " + string(i), true); + } + } until (c == "t") || (c == "f") + } + + //Look for true if t is found + if (c == "t") && (string_copy(argument0, i, 4) == "true") { + return __jso_gmt_tuple(true, i+4); + } + //Look for false if f is found + else if (c == "f") && (string_copy(argument0, i, 5) == "false") { + return __jso_gmt_tuple(false, i+5); + } + //Error: unexpected ending + else { + show_error("Unexpected end of boolean in JSON string.", true); + } +} + +#define _jso_decode_real +{ + /** + _jso_decode_real(json, startindex): Extract a real value from JSON string starting at position . + Return a 2-tuple of the extracted real value and the position after the real value. + JSOnion version: 1.0.0d + */ + var i, len, str; + i = argument1; + len = string_length(argument0); + str = ""; + + //Seek to first character: +, -, or 0-9 + var c; + c = string_char_at(argument0, i); + if (string_pos(c, "0123456789+-") == 0) { + do { + i += 1; + c = string_char_at(argument0, i); + if (!_jso_is_whitespace_char(c)) && (string_pos(c, "0123456789+-") == 0) { + show_error("Cannot parse real value at position " + string(i), true); + } + } until (string_pos(c, "0123456789+-") > 0) + } + + //Determine starting state + var state; + switch (c) { + case "+": case "-": + state = 0; + break; + default: + state = 1; + break; + } + str += c; + i += 1; + + //Loop until no more digits found + var done; + done = false; + for (i=i; i<=len && !done; i+=1) { + c = string_char_at(argument0, i); + switch (state) { + //0: Found a sign, looking for a starting number + case 0: + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + state = 1; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a digit.", true); + break; + } + break; + //1: Found a starting digit, looking for decimal dot, e, E, or more digits + case 1: + if (_jso_is_whitespace_char(c)) || (string_pos(c, ":,]}") > 0) { + done = true; + i -= 1; + } else { + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + break; + case ".": + str += c; + state = 2; + break; + case "e": case "E": + str += c; + state = 3; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a dot, e, E or a digit.", true); + break; + } + } + break; + //2: Found a decimal dot, looking for more digits + case 2: + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + state = -2; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a digit.", true); + break; + } + break; + //-2: Found a decimal dot and a digit after it, looking for more digits, e, or E + case -2: + if (_jso_is_whitespace_char(c)) || (string_pos(c, ":,]}") > 0) { + done = true; + i -= 1; + } else { + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + break; + case "e": case "E": + str += c; + state = 3; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting an e, E or a digit.", true); + break; + } + } + break; + //3: Found an e/E, looking for +, - or more digits + case 3: + switch (c) { + case "+": case "-": + str += c; + state = 4; + break; + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + state = 5; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a +, - or a digit.", true); + break; + } + break; + //4: Found an e/E exponent sign, looking for more digits + case 4: + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + state = 5; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a digit.", true); + break; + } + break; + //5: Looking for final digits of the exponent + case 5: + if (_jso_is_whitespace_char(c)) || (string_pos(c, ":,]}") > 0) { + done = true; + i -= 1; + } else { + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + state = 5; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a digit.", true); + break; + } + } + break; + } + } + + //Am I still expecting more characters? + if (done) || (state == 1) || (state == -2) || (state == 5) { + return __jso_gmt_tuple(real(str), i); + } + //Error: unexpected ending + else { + show_error("Unexpected end of real in JSON string.", true); + } +} + +#define _jso_decode_integer +{ + /** + _jso_decode_real(json, startindex): Extract a real value from JSON string starting at position . + Return a 2-tuple of the extracted integer value (with leading i) and the position after the real value. + JSOnion version: 1.0.0d + */ + var i, len, str; + i = argument1; + len = string_length(argument0); + str = ""; + + //Seek to first character: +, -, or 0-9 + var c; + c = string_char_at(argument0, i); + if (string_pos(c, "0123456789+-") == 0) { + do { + i += 1; + c = string_char_at(argument0, i); + if (!_jso_is_whitespace_char(c)) && (string_pos(c, "0123456789+-") == 0) { + show_error("Cannot parse integer value at position " + string(i), true); + } + } until (string_pos(c, "0123456789+-") > 0) + } + + //Determine starting state + var state; + switch (c) { + case "+": case "-": + state = 0; + break; + default: + state = 1; + break; + } + str += c; + i += 1; + + //Loop until no more digits found + var done; + done = false; + for (i=i; i<=len && !done; i+=1) { + c = string_char_at(argument0, i); + switch (state) { + //0: Found a sign, looking for a starting number + case 0: + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + state = 1; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a digit.", true); + break; + } + break; + //1: Found a starting digit, looking for decimal dot, e, E, or more digits + case 1: + if (_jso_is_whitespace_char(c)) || (string_pos(c, ":,]}") > 0) { + done = true; + i -= 1; + } else { + switch (c) { + case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": + str += c; + break; + default: + show_error("Unexpected character at position " + string(i) + ", expecting a digit.", true); + break; + } + } + break; + } + } + + //Am I still expecting more characters? + if (done) || (state == 1) { + return __jso_gmt_tuple(floor(real(str)), i); + } + //Error: unexpected ending + else { + show_error("Unexpected end of integer in JSON string.", true); + } +} + +#define jso_compare_maps +{ + /** + jso_compare_maps(map1, map2): Return whether the contents of JSOnion-compatible maps and are the same. + JSOnion version: 1.0.0d + */ + + //If they aren't the same size, they can't be the same + var size; + size = ds_map_size(argument0); + if (size != ds_map_size(argument1)) { + return false; + } + + //Compare contents pairwise + var i, k, type, a, b; + k = ds_map_find_first(argument0); + for (i=0; i and are the same. + JSOnion version: 1.0.0d + */ + + //If they aren't the same size, they can't be the same + var size; + size = ds_list_size(argument0); + if (size != ds_list_size(argument1)) { + return false; + } + + //Compare contents pairwise + var i, type, a, b; + for (i=0; i, return whether a value exists there. + JSOnion version: 1.0.0d + */ + + //Catch empty calls + if (argument_count < 2) { + show_error("Expected at least 2 arguments, got " + string(argument_count) + ".", true); + } + + //Build list of keys/indices + var i, key_list; + key_list = ds_list_create(); + for (i=1; i, return whether a value exists there. + JSOnion version: 1.0.0d + */ + + //Catch empty calls + if (argument_count < 2) { + show_error("Expected at least 2 arguments, got " + string(argument_count) + ".", true); + } + + //Build list of keys/indices + var i, key_list; + key_list = ds_list_create(); + for (i=1; i, return the value that exists there. + JSOnion version: 1.0.0d + */ + + //Catch empty calls + if (argument_count < 2) { + show_error("Expected at least 2 arguments, got " + string(argument_count) + ".", true); + } + + //Build list of keys/indices + var i, key_list; + key_list = ds_list_create(); + for (i=1; i, return the type of value that exists there. + JSOnion version: 1.0.0d + */ + + //Catch empty calls + if (argument_count < 2) { + show_error("Expected at least 2 arguments, got " + string(argument_count) + ".", true); + } + + //Build list of keys/indices + var i, key_list; + key_list = ds_list_create(); + for (i=1; i, return the value that exists there. + JSOnion version: 1.0.0d + */ + + //Catch empty calls + if (argument_count < 2) { + show_error("Expected at least 2 arguments, got " + string(argument_count) + ".", true); + } + + //Build list of keys/indices + var i, key_list; + key_list = ds_list_create(); + for (i=1; i, return the type of value that exists there. + JSOnion version: 1.0.0d + */ + + //Catch empty calls + if (argument_count < 2) { + show_error("Expected at least 2 arguments, got " + string(argument_count) + ".", true); + } + + //Build list of keys/indices + var i, key_list; + key_list = ds_list_create(); + for (i=1; i= ds_list_size(data)) { + switch (task_type) { + case 0: + return false; + break; + default: + show_error("Index overflow for nested lists in " + type_string + " lookup.", true); + break; + } + } + type = jso_list_get_type(data, k); + data = jso_list_get(data, k); + break; + //Trying to go through a leaf; don't attempt to look further + default: + switch (task_type) { + case 0: + return false; + break; + default: + show_error("Recursive overflow in " + type_string + " lookup.", true); + break; + } + break; + } + } + + //Can find something, return the value requested by the task + switch (task_type) { + case 0: + return true; + break; + case 1: + return data; + break; + case 2: + return type; + break; + } +} + +#define _jso_is_whitespace_char +{ + /** + _jso_is_whitespace_char(char): Return whether is a whitespace character. + Definition of whitespace is given by Unicode 6.0, Chapter 4.6. + JSOnion version: 1.0.0d + */ + switch (ord(argument0)) { + case $0009: + case $000A: + case $000B: + case $000C: + case $000D: + case $0020: + case $0085: + case $00A0: + case $1680: + case $180E: + case $2000: + case $2001: + case $2002: + case $2003: + case $2004: + case $2005: + case $2006: + case $2007: + case $2008: + case $2009: + case $200A: + case $2028: + case $2029: + case $202F: + case $205F: + case $3000: + return true; + } + return false; +} + +#define _jso_hex_to_decimal +{ + /** + _jso_hex_to_decimal(hex_string): Return the decimal value of the hex number represented by + JSOnion version: 1.0.0d + */ + var hex_string, hex_digits; + hex_string = string_lower(argument0); + hex_digits = "0123456789abcdef"; + + //Convert digit-by-digit + var i, len, digit_value, num; + len = string_length(hex_string); + num = 0; + for (i=1; i<=len; i+=1) { + digit_value = string_pos(string_char_at(hex_string, i), hex_digits)-1; + if (digit_value >= 0) { + num *= 16; + num += digit_value; + } + //Unknown character + else { + show_error("Invalid hex number: " + argument0, true); + } + } + return num; +} + diff --git a/samples/Game Maker Language/jsonion_test.gml b/samples/Game Maker Language/jsonion_test.gml new file mode 100644 index 00000000..3cf0d423 --- /dev/null +++ b/samples/Game Maker Language/jsonion_test.gml @@ -0,0 +1,1169 @@ +// Originally from /jsonion_test.gml in JSOnion +// JSOnion v1.0.0d is licensed under the MIT licence. You may freely adapt and use this library in commercial and non-commercial projects. + +#define assert_true +{ + /** + assert_true(result, errormsg): Display error unless is true. + */ + + if (!argument0) { + _assert_error_popup(argument1 + string_repeat(_assert_newline(), 2) + "Expected true, got false."); + } +} + +#define assert_false +{ + /** + assert_false(result, errormsg): Display error unless is false. + */ + + if (argument0) { + _assert_error_popup(argument1 + string_repeat(_assert_newline(), 2) + "Expected false, got true."); + } +} + +#define assert_equal +{ + /** + assert_equal(expected, result, errormsg): Display error unless and are equal. + */ + + //Safe equality check; won't crash even if the two are different types + var match; + match = is_string(argument0) == is_string(argument1); + if (match) { + match = argument0 == argument1; + } + + //No match? + if (!match) { + //Data types + var type; + type[0] = "(Real)"; + type[1] = "(String)"; + + //Construct message + var msg; + msg = argument2; + //Add expected value + msg += string_repeat(_assert_newline(), 2); + msg += "Expected " + type[is_string(argument0)] + ":" + _assert_newline(); + msg += _assert_debug_value(argument0); + //Add actual value + msg += string_repeat(_assert_newline(), 2); + msg += "Actual " + type[is_string(argument1)] + ":" + _assert_newline(); + msg += _assert_debug_value(argument1); + + //Display message + _assert_error_popup(msg); + } +} + +#define _assert_error_popup +{ + /** + _assert_error_popup(msg): Display an assertion error. + */ + + //Display message + if (os_browser == browser_not_a_browser) { + show_error(argument0, false); //Full-fledged error message for non-browser environments + } else { + show_message(argument0); //Browsers don't support show_error(), use show_message() instead + } +} + +#define _assert_debug_value +{ + /** + _assert_debug_value(val): Returns a low-level debug value for the value . + can be a string or a real value. + */ + + //String + if (is_string(argument0)) { + if (os_browser == browser_not_a_browser) { + return argument0; + } else { + return string_replace_all(argument0, "#", "\#"); + } + } + + //Numeric --- use GMTuple's algorithm + else { + + //Integers + if (frac(argument0) == 0) { + return string(argument0); + } + + //Decimal numbers; get exponent and mantissa + var mantissa, exponent; + exponent = floor(log10(abs(argument0))); + mantissa = string_format(argument0/power(10,exponent), 15, 14); + //Look for trailing zeros in the mantissa + var i, ca; + i = string_length(mantissa); + do { + ca = string_char_at(mantissa, i); + i -= 1; + } until (ca != "0") + //Remove the dot if only the first digit of the normalized mantissa is nonzero + if (ca != ".") { + mantissa = string_copy(mantissa, 1, i+1); + } + else { + mantissa = string_copy(mantissa, 1, i); + } + //Remove the exponent if it is 0 + if (exponent != 0) { + return mantissa + "e" + string(exponent); + } else { + return mantissa; + } + + //GMTuple algorithm done + } +} + +#define _assert_newline +{ + /** + _assert_newline(): Returns a system-appropriate newline character sequence. + */ + + if (os_browser == browser_not_a_browser) { + return chr(13) + chr(10); + } else { + return "#"; + } +} + +#define jso_test_all +{ + /** + jso_test_all(): Run the test suite for the JSOnion library. + JSOnion version: 1.0.0d + */ + var a, b; + a = current_time; + _test_jso_new(); + _test_jso_map_add(); + _test_jso_list_add(); + _test_jso_encode(); + _test_jso_compare(); + _test_jso_decode(); + _test_jso_lookup(); + _test_jso_bugs(); + __jso_gmt_test_all(); + b = current_time; + show_debug_message("JSOnion: Tests completed in " + string(b-a) + "ms."); +} + +#define _test_jso_new +{ + /** + _test_jso_new(): Test jso_new_*() functions. + JSOnion version: 1.0.0d + */ + + var expected, actual; + + //jso_new_map() + actual = jso_new_map(); + assert_true(actual >= 0, "jso_new_map() failed to create a new map."); + ds_map_destroy(actual); + + //jso_new_list() + actual = jso_new_list(); + assert_true(actual >= 0, "jso_new_list() failed to create a new list."); + ds_list_destroy(actual); +} + +#define _test_jso_map_add +{ + /** + _test_jso_map_add(): Test jso_map_add_*() functions. + JSOnion version: 1.0.0d + */ + + var expected, actual, key, map; + map = jso_new_map(); + + //jso_map_add_real() + expected = pi; + key = "pi"; + jso_map_add_real(map, key, expected); + actual = jso_map_get(map, key); + assert_true(ds_map_exists(map, key), "jso_map_add_real() failed to add the number."); + assert_equal(expected, actual, "jso_map_add_real() added the wrong number."); + ds_map_delete(map, key); + + //jso_map_add_string() + expected = "waahoo"; + key = "str"; + jso_map_add_string(map, key, expected); + actual = jso_map_get(map, key); + assert_true(ds_map_exists(map, key), "jso_map_add_string() failed to add the string."); + assert_equal(expected, actual, "jso_map_add_string() added the wrong string."); + ds_map_delete(map, key); + + //jso_map_add_sublist() + expected = jso_new_list(); + key = "sublist"; + jso_map_add_sublist(map, key, expected); + actual = jso_map_get(map, key); + assert_true(ds_map_exists(map, key), "jso_map_add_sublist() failed to add the new sublist."); + assert_equal(expected, actual, "jso_map_add_sublist() added the wrong sublist."); + ds_map_delete(map, key); + ds_list_destroy(expected); + + //jso_map_add_submap() + expected = jso_new_map(); + key = "sublist"; + jso_map_add_sublist(map, key, expected); + actual = jso_map_get(map, key); + assert_true(ds_map_exists(map, key), "jso_map_add_submap() failed to add the new submap."); + assert_equal(expected, actual, "jso_map_add_submap() added the wrong submap."); + ds_map_delete(map, key); + ds_map_destroy(expected); + + //jso_map_add_integer() + expected = 2345; + key = "integer"; + jso_map_add_integer(map, key, expected); + actual = jso_map_get(map, key); + assert_true(ds_map_exists(map, key), "jso_map_add_integer() failed to add the new integer."); + assert_equal(expected, actual, "jso_map_add_integer() added the wrong integer."); + ds_map_delete(map, key); + + //jso_map_add_boolean() --- true + expected = true; + key = "booleantrue"; + jso_map_add_boolean(map, key, expected); + actual = jso_map_get(map, key); + assert_true(ds_map_exists(map, key), "jso_map_add_boolean() failed to add true."); + assert_true(actual, "jso_map_add_boolean() added the wrong true."); + ds_map_delete(map, key); + + //jso_map_add_boolean() --- false + expected = false; + key = "booleanfalse"; + jso_map_add_boolean(map, key, expected); + actual = jso_map_get(map, key) + assert_true(ds_map_exists(map, key), "jso_map_add_boolean() failed to add false."); + assert_false(actual, "jso_map_add_boolean() added the wrong false."); + ds_map_delete(map, key); + + //Cleanup + ds_map_destroy(map); +} + +#define _test_jso_list_add +{ + /** + _test_jso_list_add(): Test jso_list_add_*() functions. + JSOnion version: 1.0.0d + */ + + var expected, actual, list; + list = jso_new_list(); + + //jso_list_add_real() + expected = pi; + jso_list_add_real(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_real() failed to add the number."); + assert_equal(expected, actual, "jso_list_add_real() added the wrong number."); + ds_list_clear(list); + + //jso_list_add_string() + expected = "waahoo"; + jso_list_add_string(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_string() failed to add the string."); + assert_equal(expected, actual, "jso_list_add_string() added the wrong string."); + ds_list_clear(list); + + //jso_list_add_sublist() + expected = jso_new_list(); + jso_list_add_sublist(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_sublist() failed to add the sublist."); + assert_equal(expected, actual, "jso_list_add_sublist() added the wrong sublist."); + ds_list_clear(list); + ds_list_destroy(expected); + + //jso_list_add_submap() + expected = jso_new_map(); + jso_list_add_submap(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_submap() failed to add the submap."); + assert_equal(expected, actual, "jso_list_add_submap() added the wrong submap."); + ds_list_clear(list); + ds_map_destroy(expected); + + //jso_list_add_integer() + expected = 2345; + jso_list_add_integer(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_integer() failed to add integer."); + assert_equal(expected, actual, "jso_list_add_integer() added the wrong integer."); + ds_list_clear(list); + + //jso_list_add_boolean() --- true + expected = true; + jso_list_add_boolean(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_boolean() failed to add boolean true."); + assert_true(actual, "jso_list_add_boolean() added the wrong boolean true."); + ds_list_clear(list); + + //jso_list_add_boolean() --- false + expected = false; + jso_list_add_boolean(list, expected); + actual = jso_list_get(list, 0); + assert_false(ds_list_empty(list), "jso_list_add_boolean() failed to add boolean false."); + assert_false(actual, "jso_list_add_boolean() added the wrong boolean false."); + ds_list_clear(list); + + //Cleanup + ds_list_destroy(list); +} + +#define _test_jso_encode +{ + /** + _test_jso_encode(): Tests jso_encode_*() functions. + JSOnion version: 1.0.0d + */ + + var original, expected, actual; + + //jso_encode_real() --- Positive + expected = 3.1415; + actual = jso_encode_real(3.1415); + assert_equal(expected, real(actual), "jso_encode_real() failed to encode positive real!"); + + //jso_encode_real() --- Negative + expected = -2.71828; + actual = jso_encode_real(-2.71828); + assert_equal(expected, real(actual), "jso_encode_real() failed to encode negative real!"); + + //jso_encode_real() --- Zero + expected = 0; + actual = jso_encode_integer(0); + assert_equal(expected, real(actual), "jso_encode_real() failed to encode zero!"); + + //jso_encode_integer() --- Positive + expected = "2345"; + actual = jso_encode_integer(2345); + assert_equal(expected, actual, "jso_encode_integer() failed to encode positive integer!"); + + //jso_encode_integer() --- Negative + expected = "-45"; + actual = jso_encode_integer(-45); + assert_equal(expected, actual, "jso_encode_integer() failed to encode negative integer!"); + + //jso_encode_integer() --- Zero + expected = "0"; + actual = jso_encode_integer(0); + assert_equal(expected, actual, "jso_encode_integer() failed to encode zero!"); + + //jso_encode_boolean() --- true + expected = "true"; + actual = jso_encode_boolean(true); + assert_equal(expected, actual, "jso_encode_boolean() failed to encode true!"); + + //jso_encode_boolean() --- false + expected = "false"; + actual = jso_encode_boolean(false); + assert_equal(expected, actual, "jso_encode_boolean() failed to encode false!"); + + //jso_encode_string() --- Simple string + expected = '"waahoo"'; + actual = jso_encode_string("waahoo"); + assert_equal(expected, actual, "jso_encode_string() failed to encode simple string!"); + + //jso_encode_string() --- Empty string + expected = '""'; + actual = jso_encode_string(""); + assert_equal(expected, actual, "jso_encode_string() failed to encode empty string!"); + + //jso_encode_string() --- Basic escape characters + expected = '"\\\"\b\f\n\r\t"'; + actual = jso_encode_string('\"' + chr(8) + chr(12) + chr(10) + chr(13) + chr(9)); + assert_equal(expected, actual, "jso_encode_string() failed to encode escape character string!"); + + //jso_encode_map() --- Empty map + var empty_map; + empty_map = jso_new_map(); + expected = "{}"; + actual = jso_encode_map(empty_map); + assert_equal(expected, actual, "jso_encode_map() failed to encode empty map!"); + jso_cleanup_map(empty_map); + + //jso_encode_map() --- One-element map + var one_map; + one_map = jso_new_map(); + jso_map_add_string(one_map, "key", "value"); + expected = '{"key":"value"}'; + actual = jso_encode_map(one_map); + assert_equal(expected, actual, "jso_encode_map() failed to encode one-element map!"); + jso_cleanup_map(one_map); + + //jso_encode_map() --- Multi-element map + var multi_map, ok1, ok2; + multi_map = jso_new_map(); + jso_map_add_string(multi_map, "key1", "value\1"); + jso_map_add_integer(multi_map, "key2", 2); + ok1 = '{"key1":"value\\1","key2":2}'; + ok2 = '{"key2":2,"key1":"value\\1"}'; + actual = jso_encode_map(multi_map); + assert_true((actual == ok1) || (actual == ok2), "jso_encode_map() failed to encode multi-element map!"); + jso_cleanup_map(multi_map); + + //jso_encode_list() --- Empty list + var empty_list; + empty_list = jso_new_list(); + expected = "[]"; + actual = jso_encode_list(empty_list); + assert_equal(expected, actual, "jso_encode_list() failed to encode empty list!"); + jso_cleanup_list(empty_list); + + //jso_encode_list() --- One-element nested list + var one_list; + one_list = jso_new_list(); + jso_list_add_submap(one_list, jso_new_map()); + expected = "[{}]"; + actual = jso_encode_list(one_list); + assert_equal(expected, actual, "jso_encode_list() failed to encode one-element nested list!"); + jso_cleanup_list(one_list); + + //jso_encode_list() --- Multi-element nested list + var multi_list, submap, sublist; + multi_list = jso_new_list(); + submap = jso_new_map(); + jso_map_add_string(submap, "1", "one"); + jso_list_add_submap(multi_list, submap); + jso_list_add_integer(multi_list, 2); + sublist = jso_new_list(); + jso_list_add_string(sublist, "three"); + jso_list_add_boolean(sublist, true); + jso_list_add_sublist(multi_list, sublist); + expected = '[{"1":"one"},2,["three",true]]'; + actual = jso_encode_list(multi_list); + assert_equal(expected, actual, "jso_encode_list() failed to encode one-element nested list!"); + jso_cleanup_list(multi_list); +} + +#define _test_jso_decode +{ + /** + _test_jso_decode(): Test core _jso_decode_*() functions. + The formatting is intentionally erratic here to simulate actual formatting deviations. + JSOnion version: 1.0.0d + */ + var json, expected, actual, expected_structure, actual_structure; + + ////Primitives + + //_jso_decode_string(): Empty string + json = '""'; + expected = __jso_gmt_tuple("", 3); + actual = _jso_decode_string(json, 1); + assert_equal(expected, actual, "_jso_decode_string() failed to decode an empty string!"); + + //_jso_decode_string(): Small string + json = '"key" '; + expected = __jso_gmt_tuple("key", 6); + actual = _jso_decode_string(json, 1); + assert_equal(expected, actual, "_jso_decode_string() failed to decode a small string!"); + + //_jso_decode_string(): Simple string + json = ' "The quick brown fox jumps over the lazy dog." '; + expected = __jso_gmt_tuple("The quick brown fox jumps over the lazy dog.", 49); + actual = _jso_decode_string(json, 1); + assert_equal(expected, actual, "_jso_decode_string() failed to decode a simple string!"); + + //_jso_decode_string(): Escape characters + json = ' "\"\\\b\f\n\r\t\u003A"'; + expected = __jso_gmt_tuple('"\' + chr(8) + chr(12) + chr(10) + chr(13) + chr(9) + chr($003a), 24); + actual = _jso_decode_string(json, 1); + assert_equal(expected, actual, "_jso_decode_string() failed to decode a string with escape characters!"); + + //_jso_decode_string(): Mixed characters + json = ' "\"\\\bWaahoo\f\n\r\tnegg\u003a"'; + expected = __jso_gmt_tuple('"\' + chr(8) + "Waahoo" + chr(12) + chr(10) + chr(13) + chr(9) + "negg" + chr($003a), 34); + actual = _jso_decode_string(json, 1); + assert_equal(expected, actual, "_jso_decode_string() failed to decode a string with mixed characters!"); + + //_jso_decode_boolean(): True + json = 'true'; + expected = __jso_gmt_tuple(true, 5); + actual = _jso_decode_boolean(json, 1); + assert_equal(expected, actual, "_jso_decode_boolean() failed to decode true!"); + + //_jso_decode_boolean(): False + json = ' false '; + expected = __jso_gmt_tuple(false, 8); + actual = _jso_decode_boolean(json, 1); + assert_equal(expected, actual, "_jso_decode_boolean() failed to decode false!"); + + //_jso_decode_real(): Zero + json = '0'; + expected = __jso_gmt_tuple(0, 2); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode standard zero!"); + + //_jso_decode_real(): Signed zero + json = ' +0 '; + expected = __jso_gmt_tuple(0, 5); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode signed zero!"); + + //_jso_decode_real(): Signed zero with decimal digits + json = ' -0.000'; + expected = __jso_gmt_tuple(0, 8); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode signed zero with decimal digits!"); + + //_jso_decode_real(): Positive real + json = '3.14159'; + expected = __jso_gmt_tuple(3.14159, 8); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode positive real number!"); + + //_jso_decode_real(): Negative real + json = ' -2.71828'; + expected = __jso_gmt_tuple(-2.71828, 10); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode negative real number!"); + + //_jso_decode_real(): Positive real with positive exponent + json = ' 3.14159e2'; + expected = __jso_gmt_tuple(3.14159*100, 11); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode positive real number with positive exponent!"); + + //_jso_decode_real(): Negative real with positive exponent + json = ' -2.71828E2'; + expected = __jso_gmt_tuple(-2.71828*100, 12); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode negative real number with positive exponent!"); + + //_jso_decode_real(): Positive real with negative exponent + json = ' 314.159e-2'; + expected = __jso_gmt_tuple(3.14159, 12); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode positive real number with negative exponent!"); + + //_jso_decode_real(): Negative real with negative exponent + json = ' -271.828E-2'; + expected = __jso_gmt_tuple(-2.71828, 13); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode negative real number with negative exponent!"); + + //_jso_decode_real(): Positive integer + json = ' +1729'; + expected = __jso_gmt_tuple(1729, 7); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode positive integer!"); + + //_jso_decode_real(): Negative integer + json = '-583'; + expected = __jso_gmt_tuple(-583, 5); + actual = _jso_decode_real(json, 1); + assert_equal(expected, actual, "_jso_decode_real() failed to decode negative integer!"); + + //_jso_decode_integer(): Zero + json = ' 0 '; + expected = __jso_gmt_tuple(0, 3); + actual = _jso_decode_integer(json, 1); + assert_equal(expected, actual, "_jso_decode_integer() failed to decode zero!"); + + //_jso_decode_integer(): Positive integer + json = ' 1729 '; + expected = __jso_gmt_tuple(1729, 6); + actual = _jso_decode_integer(json, 1); + assert_equal(expected, actual, "_jso_decode_integer() failed to decode positive integer!"); + + //_jso_decode_integer(): Negative integer + json = ' -583'; + expected = __jso_gmt_tuple(-583, 8); + actual = _jso_decode_integer(json, 1); + assert_equal(expected, actual, "_jso_decode_integer() failed to decode negative integer!"); + + + ////Data structures + + //_jso_decode_map(): Empty map #1 + json = '{}'; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 3); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (#1)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (#1)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode an empty map! (#1)"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_map(): Empty map #2 + json = ' { } '; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 7); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (#2)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (#2)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode an empty map! (#2)"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_map(): One-entry map + json = ' {"key": "value"} '; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 18); + jso_map_add_string(expected_structure, "key", "value"); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (one-entry map)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (one-entry map)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode a one-entry map!"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_map(): Multi-entry map + json = ' {"key" : "value", "pi":3.14, "bool" : true} '; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 48); + jso_map_add_string(expected_structure, "key", "value"); + jso_map_add_real(expected_structure, "pi", 3.14); + jso_map_add_boolean(expected_structure, "bool", true); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (multi-entry map)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (multi-entry map)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode a multi-entry map!"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_map(): Nested maps + var submap; + json = '{ "waahoo" : { "woohah" : 3 } , "woohah" : 4 }'; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 47); + jso_map_add_integer(expected_structure, "woohah", 4); + submap = jso_new_map(); + jso_map_add_integer(submap, "woohah", 3); + jso_map_add_submap(expected_structure, "waahoo", submap); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (nested map)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (nested map)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode a nested map!"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_map(): Map with nested lists + var sublist, subsublist; + json = '{ "waahoo" : [ "woohah", [true] ] , "woohah" : 4 }'; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 51); + jso_map_add_real(expected_structure, "woohah", 4); + sublist = jso_new_list(); + jso_list_add_string(sublist, "woohah"); + subsublist = jso_new_list(); + jso_list_add_boolean(subsublist, true); + jso_list_add_sublist(sublist, subsublist); + jso_map_add_sublist(expected_structure, "waahoo", sublist); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (map with nested lists)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (map with nested lists)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode a map with nested lists!"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_map(): Mix-up nested map + var sublist; + json = ' { "waahoo" : [{}, "a", 1] }'; + expected_structure = jso_new_map(); + expected = __jso_gmt_tuple(expected_structure, 30); + sublist = jso_new_list(); + jso_list_add_submap(sublist, jso_new_map()); + jso_list_add_string(sublist, "a"); + jso_list_add_real(sublist, 1); + jso_map_add_sublist(expected_structure, "waahoo", sublist); + actual = _jso_decode_map(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_map() didn't stop at the right place! (mix-up nested map)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_map() didn't include the right prefix! (mix-up nested map)"); + assert_true(jso_compare_maps(expected_structure, actual_structure), "_jso_decode_map() failed to decode a mix-up nested map!"); + jso_cleanup_map(expected_structure); + jso_cleanup_map(actual_structure); + + //_jso_decode_list(): Empty list #1 + json = '[]'; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 3); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (#1)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (#1)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode an empty list! (#1)"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure) + + //_jso_decode_list(): Empty list #2 + json = ' [ ] '; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 6); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (#2)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (#2)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode an empty list! (#2)"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure); + + //_jso_decode_list(): One-entry list + json = '[3]'; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 4); + jso_list_add_integer(expected_structure, 3); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (one-entry list)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (one-entry list)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode a one-entry list!"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure); + + //_jso_decode_list(): Multi-entry list + json = ' [4,"multi-entry",true]'; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 24); + jso_list_add_real(expected_structure, 4); + jso_list_add_string(expected_structure, "multi-entry"); + jso_list_add_boolean(expected_structure, true); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (multi-entry list)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (multi-entry list)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode a multi-entry list!"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure); + + //_jso_decode_list(): Nested list + var sublist; + json = ' [ [], 3, false, ["waahoo"]]'; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 29); + jso_list_add_sublist(expected_structure, jso_new_list()); + jso_list_add_integer(expected_structure, 3); + jso_list_add_boolean(expected_structure, false); + sublist = jso_new_list(); + jso_list_add_string(sublist, "waahoo"); + jso_list_add_sublist(expected_structure, sublist); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (nested list)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (nested list)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode a nested list!"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure); + + //_jso_decode_list(): List with nested maps + var submap; + json = ' [3, false, { "waahoo":"woo"}]'; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 31); + jso_list_add_integer(expected_structure, 3); + jso_list_add_boolean(expected_structure, false); + submap = jso_new_map(); + jso_map_add_string(submap, "waahoo", "woo"); + jso_list_add_submap(expected_structure, submap); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (list with nested maps)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (list with nested maps)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode a list with nested maps!"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure); + + //_jso_decode_list(): Mix-up nested list + var submap; + json = '[{}, {"a":[]}]'; + expected_structure = jso_new_list(); + expected = __jso_gmt_tuple(expected_structure, 15); + jso_list_add_submap(expected_structure, jso_new_map()); + submap = jso_new_map(); + jso_map_add_sublist(submap, "a", jso_new_list()); + jso_list_add_submap(expected_structure, submap); + actual = _jso_decode_list(json, 1); + actual_structure = __jso_gmt_elem(actual, 0); + assert_equal(__jso_gmt_elem(expected, 1), __jso_gmt_elem(actual, 1), "_jso_decode_list() didn't stop at the right place! (mix-up nested list)"); + assert_equal(actual_structure, __jso_gmt_elem(actual, 0), "_jso_decode_list() didn't include the right prefix! (mix-up nested list)"); + assert_true(jso_compare_lists(expected_structure, actual_structure), "_jso_decode_list() failed to decode a mix-up nested list!"); + jso_cleanup_list(expected_structure); + jso_cleanup_list(actual_structure); +} + +#define _test_jso_compare +{ + /** + _test_jso_compare(): Test basic jso_compare_*() functions. + JSOnion version: 1.0.0d + */ + var a, b; + + //jso_compare_maps(): Empty maps should equal each other + a = jso_new_map(); + b = jso_new_map(); + assert_true(jso_compare_maps(a, b), "Empty maps should equal each other. (#1)"); + assert_true(jso_compare_maps(b, a), "Empty maps should equal each other. (#2)"); + jso_cleanup_map(a); + jso_cleanup_map(b); + + //jso_compare_maps(): An empty map should not equal a filled map + a = jso_new_map(); + b = jso_new_map(); + jso_map_add_string(b, "junk", "info"); + jso_map_add_integer(b, "taxi", 1729); + assert_false(jso_compare_maps(a, b), "An empty map should not equal a filled map. (#1)"); + assert_false(jso_compare_maps(b, a), "An empty map should not equal a filled map. (#2)"); + jso_cleanup_map(a); + jso_cleanup_map(b); + + //jso_compare_maps(): Maps with same content entered in different orders should equal each other + a = jso_new_map(); + b = jso_new_map(); + jso_map_add_real(a, "A", 1); + jso_map_add_real(a, "B", 2); + jso_map_add_real(a, "C", 3); + jso_map_add_real(b, "C", 3); + jso_map_add_real(b, "A", 1); + jso_map_add_real(b, "B", 2); + assert_true(jso_compare_maps(a, b), "Maps with same content entered in different orders should equal each other. (#1)"); + assert_true(jso_compare_maps(b, a), "Maps with same content entered in different orders should equal each other. (#2)"); + jso_cleanup_map(a); + jso_cleanup_map(b); + + //jso_compare_maps(): Maps with different keys should not equal each other + a = jso_new_map(); + b = jso_new_map(); + jso_map_add_real(a, "A", 1); + jso_map_add_real(a, "B", 2); + jso_map_add_real(a, "C", 3); + jso_map_add_real(b, "D", 3); + jso_map_add_real(b, "A", 1); + jso_map_add_real(b, "B", 2); + assert_false(jso_compare_maps(a, b), "Maps with different keys should not equal each other. (#1)"); + assert_false(jso_compare_maps(b, a), "Maps with different keys should not equal each other. (#2)"); + jso_cleanup_map(a); + jso_cleanup_map(b); + + //jso_compare_maps(): Maps with different values should not equal each other + a = jso_new_map(); + b = jso_new_map(); + jso_map_add_real(a, "A", 5); + jso_map_add_real(a, "B", 6); + jso_map_add_real(a, "C", 9); + jso_map_add_real(b, "A", 5); + jso_map_add_real(b, "B", 6); + jso_map_add_real(b, "C", 8); + assert_false(jso_compare_maps(a, b), "Maps with different values should not equal each other. (#1)"); + assert_false(jso_compare_maps(b, a), "Maps with different values should not equal each other. (#2)"); + jso_cleanup_map(a); + jso_cleanup_map(b); + + //jso_compare_maps(): Maps with corresponding values of different types should not equal each other, and should not crash. + a = jso_new_map(); + b = jso_new_map(); + jso_map_add_real(a, "A", 5); + jso_map_add_real(a, "B", 6); + jso_map_add_real(a, "C", 8); + jso_map_add_real(b, "A", 5); + jso_map_add_string(b, "B", "six"); + jso_map_add_real(b, "C", 8); + assert_false(jso_compare_maps(a, b), "Maps with corresponding values of different types should not equal each other, and should not crash. (#1)"); + assert_false(jso_compare_maps(b, a), "Maps with corresponding values of different types should not equal each other, and should not crash. (#2)"); + jso_cleanup_map(a); + jso_cleanup_map(b); + + //jso_compare_lists(): Empty lists should equal each other + a = jso_new_list(); + b = jso_new_list(); + assert_true(jso_compare_lists(a, b), "Empty lists should equal each other. (#1)"); + assert_true(jso_compare_lists(b, a), "Empty lists should equal each other. (#2)"); + jso_cleanup_list(a); + jso_cleanup_list(b); + + //jso_compare_lists(): An empty list should not equal a filled list + a = jso_new_list(); + b = jso_new_list(); + jso_list_add_string(b, "junk"); + jso_list_add_integer(b, 1729); + assert_false(jso_compare_lists(a, b), "An empty list should not equal a filled list. (#1)"); + assert_false(jso_compare_lists(b, a), "An empty list should not equal a filled list. (#2)"); + jso_cleanup_list(a); + jso_cleanup_list(b); + + //jso_compare_lists(): Lists with same content entered in different orders should not equal each other + a = jso_new_list(); + b = jso_new_list(); + jso_list_add_real(a, 1); + jso_list_add_real(a, 2); + jso_list_add_real(a, 3); + jso_list_add_real(b, 3); + jso_list_add_real(b, 1); + jso_list_add_real(b, 2); + assert_false(jso_compare_lists(a, b), "Lists with same content entered in different orders should not equal each other. (#1)"); + assert_false(jso_compare_lists(b, a), "Lists with same content entered in different orders should not equal each other. (#2)"); + jso_cleanup_list(a); + jso_cleanup_list(b); + + //jso_compare_lists(): Lists with corresponding entries of different types should not equal each other, should also not crash. + a = jso_new_list(); + b = jso_new_list(); + jso_list_add_real(a, 1); + jso_list_add_real(a, 2); + jso_list_add_real(a, 3); + jso_list_add_real(b, 1); + jso_list_add_string(b, "two"); + jso_list_add_real(b, 3); + assert_false(jso_compare_lists(a, b), "Lists with corresponding entries of different types should not equal each other, should also not crash. (#1)"); + assert_false(jso_compare_lists(b, a), "Lists with corresponding entries of different types should not equal each other, should also not crash. (#2)"); + jso_cleanup_list(a); + jso_cleanup_list(b); +} + +#define _test_jso_lookup +{ + /** + _test_jso_lookup(): Test core jso_*_lookup() and jso_*_check() functions for nested structures. + JSOnion version: 1.0.0d + */ + var json, structure, expected, actual; + + //jso_map_check(): Single argument --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3 }'; + structure = jso_decode_map(json); + assert_true(jso_map_check(structure, "one"), "jso_map_check() failed to find existing entry! (single argument)"); + jso_cleanup_map(structure); + + //jso_map_lookup(): Single argument --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3 }'; + structure = jso_decode_map(json); + expected = 1; + actual = jso_map_lookup(structure, "one") + assert_equal(expected, actual, "jso_map_lookup() found the wrong entry! (single argument)"); + jso_cleanup_map(structure); + + //jso_map_lookup_type(): Single argument --- exists + json = '{ "one" : -1, "two" : true, "three" : "trap" }'; + structure = jso_decode_map(json); + expected = jso_type_real; + actual = jso_map_lookup_type(structure, "one") + assert_equal(expected, actual, "jso_map_lookup_type() found the wrong type! (single argument)"); + jso_cleanup_map(structure); + + //jso_map_check(): Single argument --- doesn't exist + json = '{ "one" : 1, "two" : 2, "three" : 3 }'; + structure = jso_decode_map(json); + assert_false(jso_map_check(structure, "four"), "jso_map_check() found an inexistent entry! (single argument)"); + jso_cleanup_map(structure); + + //jso_map_check(): Single argument --- doesn't exist + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : { "A":true, "B":false } }'; + structure = jso_decode_map(json); + assert_false(jso_map_check(structure, "A"), "jso_map_check() found an inexistent entry! (single argument, nested)"); + jso_cleanup_map(structure); + + //jso_map_check(): Multiple arguments (recurse) --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : { "A":true, "B":false } }'; + structure = jso_decode_map(json); + assert_true(jso_map_check(structure, "four", "A"), "jso_map_check() failed to find existing entry! (multiple arguments)"); + jso_cleanup_map(structure); + + //jso_map_lookup(): Multiple arguments (recurse) --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : { "A":true, "B":false } }'; + structure = jso_decode_map(json); + expected = true; + actual = jso_map_lookup(structure, "four", "A"); + assert_equal(expected, actual, "jso_map_lookup() found the wrong entry! (multiple arguments)"); + jso_cleanup_map(structure); + + //jso_map_lookup_type(): Multiple arguments (recurse) --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : { "A":true, "B":"trap" } }'; + structure = jso_decode_map(json); + expected = jso_type_boolean; + actual = jso_map_lookup_type(structure, "four", "A"); + assert_equal(expected, actual, "jso_map_lookup_type() found the wrong type! (multiple arguments)"); + jso_cleanup_map(structure); + + //jso_map_check(): Multiple arguments (recurse) --- doesn't exist + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : { "A":true, "B":false } }'; + structure = jso_decode_map(json); + assert_false(jso_map_check(structure, "four", "C"), "jso_map_check() found an inexistent entry! (multiple arguments, 1)"); + jso_cleanup_map(structure); + + //jso_map_check(): Multiple arguments (recurse) --- doesn't exist + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : { "A":true, "B":false } }'; + structure = jso_decode_map(json); + assert_false(jso_map_check(structure, "three", ""), "jso_map_check() found an inexistent entry! (multiple arguments, 2)"); + jso_cleanup_map(structure); + + //jso_map_check(): Multiple arguments with nested list --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : [ "A", true, ["B", false] ] }'; + structure = jso_decode_map(json); + assert_true(jso_map_check(structure, "four", 2, 1), "jso_map_check() failed to find an existing entry! (multiple arguments, nested)"); + jso_cleanup_map(structure); + + //jso_map_lookup(): Multiple arguments with nested list --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : [ "A", true, ["B", false] ] }'; + structure = jso_decode_map(json); + expected = false; + actual = jso_map_lookup(structure, "four", 2, 1); + assert_equal(expected, actual, "jso_map_lookup() failed to find an existing entry! (multiple arguments, nested)"); + jso_cleanup_map(structure); + + //jso_map_lookup_type(): Multiple arguments with nested list --- exists + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : [ "A", true, [false, "false"] ] }'; + structure = jso_decode_map(json); + expected = jso_type_string; + actual = jso_map_lookup_type(structure, "four", 2, 1); + assert_equal(expected, actual, "jso_map_lookup_type() found the wrong type! (multiple arguments, nested)"); + jso_cleanup_map(structure); + + //jso_map_check(): Multiple arguments with nested list --- wrong type + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : [ "A", true, ["B", false] ] }'; + structure = jso_decode_map(json); + assert_false(jso_map_check(structure, "four", "A", 1), "jso_map_check() found an inexistent entry! (multiple arguments, nested, wrong type)"); + jso_cleanup_map(structure); + + //jso_map_check(): Multiple arguments with nested list --- index overflow + json = '{ "one" : 1, "two" : 2, "three" : 3, "four" : [ "A", true, ["B", false] ] }'; + structure = jso_decode_map(json); + assert_false(jso_map_check(structure, "four", 2, 3), "jso_map_check() found an inexistent entry! (multiple arguments, nested, index overflow)"); + jso_cleanup_map(structure); + + //jso_list_check(): Single argument --- exists + json = '["one", 2, "three", true, 5]'; + structure = jso_decode_list(json); + assert_true(jso_list_check(structure, 2), "jso_list_check() failed to find an existing index! (single argument)"); + jso_cleanup_list(structure); + + //jso_list_lookup(): Single argument --- exists + json = '["one", 2, "three", true, 5]'; + structure = jso_decode_list(json); + expected = "three"; + actual = jso_list_lookup(structure, 2); + assert_equal(expected, actual, "jso_list_lookup() found the wrong index! (single argument)"); + jso_cleanup_list(structure); + + //jso_list_lookup_type(): Single argument --- exists + json = '["one", 2, "three", true, 5]'; + structure = jso_decode_list(json); + expected = jso_type_string; + actual = jso_list_lookup_type(structure, 2); + assert_equal(expected, actual, "jso_list_lookup_type() found the wrong type! (single argument)"); + jso_cleanup_list(structure); + + //jso_list_check(): Single argument --- doesn't exist + json = '["one", 2, "three", true, 5]'; + structure = jso_decode_list(json); + assert_false(jso_list_check(structure, 5), "jso_list_check() found an inexistent index! (single argument)"); + jso_cleanup_list(structure); + + //jso_list_check(): Multiple arguments (recurse) --- exists + json = '["one", 2, ["three", 3], true, 5]'; + structure = jso_decode_list(json); + assert_true(jso_list_check(structure, 2, 1), "jso_list_check() failed to find an existing index! (multiple arguments)"); + jso_cleanup_list(structure); + + //jso_list_lookup(): Multiple arguments (recurse) --- exists + json = '["one", 2, ["three", 3], true, 5]'; + structure = jso_decode_list(json); + expected = 3; + actual = jso_list_lookup(structure, 2, 1); + assert_equal(expected, actual, "jso_list_lookup() failed to find an existing index! (multiple arguments)"); + jso_cleanup_list(structure); + + //jso_list_lookup_type(): Multiple arguments (recurse) --- exists + json = '["one", 2, ["three", 3], true, 5]'; + structure = jso_decode_list(json); + expected = jso_type_real; + actual = jso_list_lookup_type(structure, 2, 1); + assert_equal(expected, actual, "jso_list_lookup_type() found the wrong type! (multiple arguments)"); + jso_cleanup_list(structure); + + //jso_list_check(): Multiple arguments (recurse) --- doesn't exist, inner index overflow + json = '["one", 2, ["three", 3], true, 5]'; + structure = jso_decode_list(json); + assert_false(jso_list_check(structure, 2, 2), "jso_list_check() found an inexistent index! (multiple arguments, inner index overflow)"); + jso_cleanup_list(structure); + + //jso_list_check(): Multiple arguments (recurse) --- doesn't exist, trying to index single entry + json = '["one", 2, ["three", 3], true, 5]'; + structure = jso_decode_list(json); + assert_false(jso_list_check(structure, 1, 0), "jso_list_check() found an inexistent index! (multiple arguments, indexing single entry)"); + jso_cleanup_list(structure); + + //jso_list_check(): Multiple arguments with nested map --- exists + json = '["one", 2, {"three":3}, true, 5]'; + structure = jso_decode_list(json); + assert_true(jso_list_check(structure, 2, "three"), "jso_list_check() failed to find an existing entry! (multiple arguments, nested map)"); + jso_cleanup_list(structure); + + //jso_list_lookup(): Multiple arguments with nested map --- exists + json = '["one", 2, {"three":3}, true, 5]'; + structure = jso_decode_list(json); + expected = 3; + actual = jso_list_lookup(structure, 2, "three"); + assert_equal(expected, actual, "jso_list_lookup() failed to find an existing entry! (multiple arguments, nested map)"); + jso_cleanup_list(structure); + + //jso_list_lookup_type(): Multiple arguments with nested map --- exists + json = '["one", 2, {"three":false}, true, 5]'; + structure = jso_decode_list(json); + expected = jso_type_boolean; + actual = jso_list_lookup_type(structure, 2, "three"); + assert_equal(expected, actual, "jso_list_lookup_type() found the wrong type! (multiple arguments, nested map)"); + jso_cleanup_list(structure); + + //jso_list_exists(): Multiple arguments with nested map --- doesn't exist, key on single entry + json = '["one", 2, {"three":3}, true, 5]'; + structure = jso_decode_list(json); + assert_false(jso_list_check(structure, 1, ""), "jso_list_check() found an inexistent entry! (multiple arguments, nested map, key on single entry)"); + jso_cleanup_list(structure); + + //jso_list_exists(): Multiple arguments with nested map --- doesn't exist, bad key + json = '["one", 2, {"three":3}, true, 5]'; + structure = jso_decode_list(json); + assert_false(jso_list_check(structure, 2, ""), "jso_list_check() found an inexistent entry! (multiple arguments, nested map, bad key)"); + jso_cleanup_list(structure); +} + +#define _test_jso_bugs +{ + /** + _test_jso_bugs(): Test reported bugs. + JSOnion version: 1.0.0d + */ + var expected, actual; + + //jso_encode_map() --- One-element map + //Bug 1: Crash when encoding boolean-valued entries in maps, unknown variable jso_type_integer + var one_map; + one_map = jso_new_map(); + jso_map_add_boolean(one_map, "true", true); + expected = '{"true":true}'; + actual = jso_encode_map(one_map); + assert_equal(expected, actual, "jso_encode_map() failed to encode one-element map with boolean entry!"); + jso_cleanup_map(one_map); +} + diff --git a/samples/Game Maker Language/loadserverplugins.gml b/samples/Game Maker Language/loadserverplugins.gml new file mode 100644 index 00000000..26a26758 --- /dev/null +++ b/samples/Game Maker Language/loadserverplugins.gml @@ -0,0 +1,252 @@ +/* + Originally from /Source/gg2/Scripts/Plugins/loadserverplugins.gml in Gang Garrison 2 + + Copyright (C) 2008-2013 Faucet Software + http://www.ganggarrison.com + + This program is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 3 of the License, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program; if not, + see . + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ + +// loads plugins from ganggarrison.com asked for by server +// argument0 - comma separated plugin list (pluginname@md5hash) +// returns true on success, false on failure +var list, hashList, text, i, pluginname, pluginhash, realhash, url, handle, filesize, progress, tempfile, tempdir, failed, lastContact, isCached; + +failed = false; +list = ds_list_create(); +lastContact = 0; +isCached = false; +isDebug = false; +hashList = ds_list_create(); + +// split plugin list string +list = split(argument0, ','); + +// Split hashes from plugin names +for (i = 0; i < ds_list_size(list); i += 1) +{ + text = ds_list_find_value(list, i); + pluginname = string_copy(text, 0, string_pos("@", text) - 1); + pluginhash = string_copy(text, string_pos("@", text) + 1, string_length(text) - string_pos("@", text)); + ds_list_replace(list, i, pluginname); + ds_list_add(hashList, pluginhash); +} + +// Check plugin names and check for duplicates +for (i = 0; i < ds_list_size(list); i += 1) +{ + pluginname = ds_list_find_value(list, i); + + // invalid plugin name + if (!checkpluginname(pluginname)) + { + show_message('Error loading server-sent plugins - invalid plugin name:#"' + pluginname + '"'); + return false; + } + // is duplicate + else if (ds_list_find_index(list, pluginname) != i) + { + show_message('Error loading server-sent plugins - duplicate plugin:#"' + pluginname + '"'); + return false; + } +} + +// Download plugins +for (i = 0; i < ds_list_size(list); i += 1) +{ + pluginname = ds_list_find_value(list, i); + pluginhash = ds_list_find_value(hashList, i); + isDebug = file_exists(working_directory + "\ServerPluginsDebug\" + pluginname + ".zip"); + isCached = file_exists(working_directory + "\ServerPluginsCache\" + pluginname + "@" + pluginhash); + tempfile = temp_directory + "\" + pluginname + ".zip.tmp"; + tempdir = temp_directory + "\" + pluginname + ".tmp"; + + // check to see if we have a local copy for debugging + if (isDebug) + { + file_copy(working_directory + "\ServerPluginsDebug\" + pluginname + ".zip", tempfile); + // show warning + if (global.isHost) + { + show_message( + "Warning: server-sent plugin '" + + pluginname + + "' is being loaded from ServerPluginsDebug. Make sure clients have the same version, else they may be unable to connect." + ); + } + else + { + show_message( + "Warning: server-sent plugin '" + + pluginname + + "' is being loaded from ServerPluginsDebug. Make sure the server has the same version, else you may be unable to connect." + ); + } + } + // otherwise, check if we have it cached + else if (isCached) + { + file_copy(working_directory + "\ServerPluginsCache\" + pluginname + "@" + pluginhash, tempfile); + } + // otherwise, download as usual + else + { + // construct the URL + // http://www.ganggarrison.com/plugins/$PLUGINNAME$@$PLUGINHASH$.zip) + url = PLUGIN_SOURCE + pluginname + "@" + pluginhash + ".zip"; + + // let's make the download handle + handle = httpGet(url, -1); + + // download it + while (!httpRequestStatus(handle)) { + // prevent game locking up + io_handle(); + + httpRequestStep(handle); + + if (!global.isHost) { + // send ping if we haven't contacted server in 20 seconds + // we need to do this to keep the connection open + if (current_time-lastContact > 20000) { + write_byte(global.serverSocket, PING); + socket_send(global.serverSocket); + lastContact = current_time; + } + } + + // draw progress bar since they may be waiting a while + filesize = httpRequestResponseBodySize(handle); + progress = httpRequestResponseBodyProgress(handle); + draw_background_ext(background_index[0], 0, 0, background_xscale[0], background_yscale[0], 0, c_white, 1); + draw_set_color(c_white); + draw_set_alpha(1); + draw_set_halign(fa_left); + draw_rectangle(50, 550, 300, 560, 2); + draw_text(50, 530, "Downloading server-sent plugin " + string(i + 1) + "/" + string(ds_list_size(list)) + ' - "' + pluginname + '"'); + if (filesize != -1) + draw_rectangle(50, 550, 50 + progress / filesize * 250, 560, 0); + screen_refresh(); + } + + // errored + if (httpRequestStatus(handle) == 2) + { + show_message('Error loading server-sent plugins - download failed for "' + pluginname + '":#' + httpRequestError(handle)); + failed = true; + break; + } + + // request failed + if (httpRequestStatusCode(handle) != 200) + { + show_message('Error loading server-sent plugins - download failed for "' + pluginname + '":#' + string(httpRequestStatusCode(handle)) + ' ' + httpRequestReasonPhrase(handle)); + failed = true; + break; + } + else + { + write_buffer_to_file(httpRequestResponseBody(handle), tempfile); + if (!file_exists(tempfile)) + { + show_message('Error loading server-sent plugins - download failed for "' + pluginname + '":# No such file?'); + failed = true; + break; + } + } + + httpRequestDestroy(handle); + } + + // check file integrity + realhash = GG2DLL_compute_MD5(tempfile); + if (realhash != pluginhash) + { + show_message('Error loading server-sent plugins - integrity check failed (MD5 hash mismatch) for:#"' + pluginname + '"'); + failed = true; + break; + } + + // don't try to cache debug plugins + if (!isDebug) + { + // add to cache if we don't already have it + if (!file_exists(working_directory + "\ServerPluginsCache\" + pluginname + "@" + pluginhash)) + { + // make sure directory exists + if (!directory_exists(working_directory + "\ServerPluginsCache")) + { + directory_create(working_directory + "\ServerPluginsCache"); + } + // store in cache + file_copy(tempfile, working_directory + "\ServerPluginsCache\" + pluginname + "@" + pluginhash); + } + } + + // let's get 7-zip to extract the files + extractzip(tempfile, tempdir); + + // if the directory doesn't exist, extracting presumably failed + if (!directory_exists(tempdir)) + { + show_message('Error loading server-sent plugins - extracting zip failed for:#"' + pluginname + '"'); + failed = true; + break; + } +} + +if (!failed) +{ + // Execute plugins + for (i = 0; i < ds_list_size(list); i += 1) + { + pluginname = ds_list_find_value(list, i); + tempdir = temp_directory + "\" + pluginname + ".tmp"; + + // Debugging facility, so we know *which* plugin caused compile/execute error + fp = file_text_open_write(working_directory + "\last_plugin.log"); + file_text_write_string(fp, pluginname); + file_text_close(fp); + + // packetID is (i), so make queues for it + ds_map_add(global.pluginPacketBuffers, i, ds_queue_create()); + ds_map_add(global.pluginPacketPlayers, i, ds_queue_create()); + + // Execute plugin + execute_file( + // the plugin's main gml file must be in the root of the zip + // it is called plugin.gml + tempdir + "\plugin.gml", + // the plugin needs to know where it is + // so the temporary directory is passed as first argument + tempdir, + // the plugin needs to know its packetID + // so it is passed as the second argument + i + ); + } +} + +// Delete last plugin log +file_delete(working_directory + "\last_plugin.log"); + +// Get rid of plugin list +ds_list_destroy(list); + +// Get rid of plugin hash list +ds_list_destroy(hashList); + +return !failed; diff --git a/samples/Game Maker Language/processClientCommands.gml b/samples/Game Maker Language/processClientCommands.gml new file mode 100644 index 00000000..6c241d4b --- /dev/null +++ b/samples/Game Maker Language/processClientCommands.gml @@ -0,0 +1,384 @@ +/* + Originally from /Source/gg2/Scripts/GameServer/processClientCommands.gml in Gang Garrison 2 + + Copyright (C) 2008-2013 Faucet Software + http://www.ganggarrison.com + + This program is free software; + you can redistribute it and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 3 of the License, or (at your option) + any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + You should have received a copy of the GNU General Public License along with this program; if not, + see . + + Additional permission under GNU GPL version 3 section 7 + If you modify this Program, or any covered work, by linking or combining it with the Game Maker runtime library, + the 39dll library/extension, Hobbel's Download Manager DLL, or modified versions of these libraries, + the licensors of this Program grant you additional permission to convey the resulting work. +*/ + +var player, playerId, commandLimitRemaining; + +player = argument0; +playerId = argument1; + +// To prevent players from flooding the server, limit the number of commands to process per step and player. +commandLimitRemaining = 10; + +with(player) { + if(!variable_local_exists("commandReceiveState")) { + // 0: waiting for command byte. + // 1: waiting for command data length (1 byte) + // 2: waiting for command data. + commandReceiveState = 0; + commandReceiveExpectedBytes = 1; + commandReceiveCommand = 0; + } +} + +while(commandLimitRemaining > 0) { + var socket; + socket = player.socket; + if(!tcp_receive(socket, player.commandReceiveExpectedBytes)) { + return 0; + } + + switch(player.commandReceiveState) + { + case 0: + player.commandReceiveCommand = read_ubyte(socket); + switch(commandBytes[player.commandReceiveCommand]) { + case commandBytesInvalidCommand: + // Invalid byte received. Wait for another command byte. + break; + + case commandBytesPrefixLength1: + player.commandReceiveState = 1; + player.commandReceiveExpectedBytes = 1; + break; + + case commandBytesPrefixLength2: + player.commandReceiveState = 3; + player.commandReceiveExpectedBytes = 2; + break; + + default: + player.commandReceiveState = 2; + player.commandReceiveExpectedBytes = commandBytes[player.commandReceiveCommand]; + break; + } + break; + + case 1: + player.commandReceiveState = 2; + player.commandReceiveExpectedBytes = read_ubyte(socket); + break; + + case 3: + player.commandReceiveState = 2; + player.commandReceiveExpectedBytes = read_ushort(socket); + break; + + case 2: + player.commandReceiveState = 0; + player.commandReceiveExpectedBytes = 1; + commandLimitRemaining -= 1; + + switch(player.commandReceiveCommand) + { + case PLAYER_LEAVE: + socket_destroy(player.socket); + player.socket = -1; + break; + + case PLAYER_CHANGECLASS: + var class; + class = read_ubyte(socket); + if(getCharacterObject(player.team, class) != -1) + { + if(player.object != -1) + { + with(player.object) + { + if (collision_point(x,y,SpawnRoom,0,0) < 0) + { + if (!instance_exists(lastDamageDealer) || lastDamageDealer == player) + { + sendEventPlayerDeath(player, player, noone, BID_FAREWELL); + doEventPlayerDeath(player, player, noone, BID_FAREWELL); + } + else + { + var assistant; + assistant = secondToLastDamageDealer; + if (lastDamageDealer.object) + if (lastDamageDealer.object.healer) + assistant = lastDamageDealer.object.healer; + sendEventPlayerDeath(player, lastDamageDealer, assistant, FINISHED_OFF); + doEventPlayerDeath(player, lastDamageDealer, assistant, FINISHED_OFF); + } + } + else + instance_destroy(); + + } + } + else if(player.alarm[5]<=0) + player.alarm[5] = 1; + class = checkClasslimits(player, player.team, class); + player.class = class; + ServerPlayerChangeclass(playerId, player.class, global.sendBuffer); + } + break; + + case PLAYER_CHANGETEAM: + var newTeam, balance, redSuperiority; + newTeam = read_ubyte(socket); + + redSuperiority = 0 //calculate which team is bigger + with(Player) + { + if(team == TEAM_RED) + redSuperiority += 1; + else if(team == TEAM_BLUE) + redSuperiority -= 1; + } + if(redSuperiority > 0) + balance = TEAM_RED; + else if(redSuperiority < 0) + balance = TEAM_BLUE; + else + balance = -1; + + if(balance != newTeam) + { + if(getCharacterObject(newTeam, player.class) != -1 or newTeam==TEAM_SPECTATOR) + { + if(player.object != -1) + { + with(player.object) + { + if (!instance_exists(lastDamageDealer) || lastDamageDealer == player) + { + sendEventPlayerDeath(player, player, noone, BID_FAREWELL); + doEventPlayerDeath(player, player, noone, BID_FAREWELL); + } + else + { + var assistant; + assistant = secondToLastDamageDealer; + if (lastDamageDealer.object) + if (lastDamageDealer.object.healer) + assistant = lastDamageDealer.object.healer; + sendEventPlayerDeath(player, lastDamageDealer, assistant, FINISHED_OFF); + doEventPlayerDeath(player, lastDamageDealer, assistant, FINISHED_OFF); + } + } + player.alarm[5] = global.Server_Respawntime; + } + else if(player.alarm[5]<=0) + player.alarm[5] = 1; + var newClass; + newClass = checkClasslimits(player, newTeam, player.class); + if newClass != player.class + { + player.class = newClass; + ServerPlayerChangeclass(playerId, player.class, global.sendBuffer); + } + player.team = newTeam; + ServerPlayerChangeteam(playerId, player.team, global.sendBuffer); + ServerBalanceTeams(); + } + } + break; + + case CHAT_BUBBLE: + var bubbleImage; + bubbleImage = read_ubyte(socket); + if(global.aFirst) { + bubbleImage = 0; + } + write_ubyte(global.sendBuffer, CHAT_BUBBLE); + write_ubyte(global.sendBuffer, playerId); + write_ubyte(global.sendBuffer, bubbleImage); + + setChatBubble(player, bubbleImage); + break; + + case BUILD_SENTRY: + if(player.object != -1) + { + if(player.class == CLASS_ENGINEER + and collision_circle(player.object.x, player.object.y, 50, Sentry, false, true) < 0 + and player.object.nutsNBolts == 100 + and (collision_point(player.object.x,player.object.y,SpawnRoom,0,0) < 0) + and !player.sentry + and !player.object.onCabinet) + { + write_ubyte(global.sendBuffer, BUILD_SENTRY); + write_ubyte(global.sendBuffer, playerId); + write_ushort(global.serializeBuffer, round(player.object.x*5)); + write_ushort(global.serializeBuffer, round(player.object.y*5)); + write_byte(global.serializeBuffer, player.object.image_xscale); + buildSentry(player, player.object.x, player.object.y, player.object.image_xscale); + } + } + break; + + case DESTROY_SENTRY: + with(player.sentry) + instance_destroy(); + break; + + case DROP_INTEL: + if (player.object != -1) + { + if (player.object.intel) + { + sendEventDropIntel(player); + doEventDropIntel(player); + } + } + break; + + case OMNOMNOMNOM: + if(player.object != -1) { + if(!player.humiliated + and !player.object.taunting + and !player.object.omnomnomnom + and player.object.canEat + and player.class==CLASS_HEAVY) + { + write_ubyte(global.sendBuffer, OMNOMNOMNOM); + write_ubyte(global.sendBuffer, playerId); + with(player.object) + { + omnomnomnom = true; + if player.team == TEAM_RED { + omnomnomnomindex=0; + omnomnomnomend=31; + } else if player.team==TEAM_BLUE { + omnomnomnomindex=32; + omnomnomnomend=63; + } + xscale=image_xscale; + } + } + } + break; + + case TOGGLE_ZOOM: + if player.object != -1 { + if player.class == CLASS_SNIPER { + write_ubyte(global.sendBuffer, TOGGLE_ZOOM); + write_ubyte(global.sendBuffer, playerId); + toggleZoom(player.object); + } + } + break; + + case PLAYER_CHANGENAME: + var nameLength; + nameLength = socket_receivebuffer_size(socket); + if(nameLength > MAX_PLAYERNAME_LENGTH) + { + write_ubyte(player.socket, KICK); + write_ubyte(player.socket, KICK_NAME); + socket_destroy(player.socket); + player.socket = -1; + } + else + { + with(player) + { + if(variable_local_exists("lastNamechange")) + if(current_time - lastNamechange < 1000) + break; + lastNamechange = current_time; + name = read_string(socket, nameLength); + if(string_count("#",name) > 0) + { + name = "I <3 Bacon"; + } + write_ubyte(global.sendBuffer, PLAYER_CHANGENAME); + write_ubyte(global.sendBuffer, playerId); + write_ubyte(global.sendBuffer, string_length(name)); + write_string(global.sendBuffer, name); + } + } + break; + + case INPUTSTATE: + if(player.object != -1) + { + with(player.object) + { + keyState = read_ubyte(socket); + netAimDirection = read_ushort(socket); + aimDirection = netAimDirection*360/65536; + event_user(1); + } + } + break; + + case REWARD_REQUEST: + player.rewardId = read_string(socket, socket_receivebuffer_size(socket)); + player.challenge = rewardCreateChallenge(); + + write_ubyte(socket, REWARD_CHALLENGE_CODE); + write_binstring(socket, player.challenge); + break; + + case REWARD_CHALLENGE_RESPONSE: + var answer, i, authbuffer; + answer = read_binstring(socket, 16); + + with(player) + if(variable_local_exists("challenge") and variable_local_exists("rewardId")) + rewardAuthStart(player, answer, challenge, true, rewardId); + + break; + + case PLUGIN_PACKET: + var packetID, buf, success; + + packetID = read_ubyte(socket); + + // get packet data + buf = buffer_create(); + write_buffer_part(buf, socket, socket_receivebuffer_size(socket)); + + // try to enqueue + success = _PluginPacketPush(packetID, buf, player); + + // if it returned false, packetID was invalid + if (!success) + { + // clear up buffer + buffer_destroy(buf); + + // kick player + write_ubyte(player.socket, KICK); + write_ubyte(player.socket, KICK_BAD_PLUGIN_PACKET); + socket_destroy(player.socket); + player.socket = -1; + } + break; + + case CLIENT_SETTINGS: + var mirror; + mirror = read_ubyte(player.socket); + player.queueJump = mirror; + + write_ubyte(global.sendBuffer, CLIENT_SETTINGS); + write_ubyte(global.sendBuffer, playerId); + write_ubyte(global.sendBuffer, mirror); + break; + + } + break; + } +} diff --git a/samples/Game Maker Language/scrInitLevel.gml b/samples/Game Maker Language/scrInitLevel.gml new file mode 100644 index 00000000..af0cf274 --- /dev/null +++ b/samples/Game Maker Language/scrInitLevel.gml @@ -0,0 +1,298 @@ +// Originally from /spelunky/Scripts/Level Generation/scrInitLevel.gml in the Spelunky Community Update Project + +// +// scrInitLevel() +// +// Calls scrLevelGen(), scrRoomGen*(), and scrEntityGen() to build level. +// + +/********************************************************************************** + Copyright (c) 2008, 2009 Derek Yu and Mossmouth, LLC + + This file is part of Spelunky. + + You can redistribute and/or modify Spelunky, including its source code, under + the terms of the Spelunky User License. + + Spelunky is distributed in the hope that it will be entertaining and useful, + but WITHOUT WARRANTY. Please see the Spelunky User License for more details. + + The Spelunky User License should be available in "Game Information", which + can be found in the Resource Explorer, or as an external file called COPYING. + If not, please obtain a new copy of Spelunky from + +***********************************************************************************/ + +global.levelType = 0; +//global.currLevel = 16; +if (global.currLevel > 4 and global.currLevel < 9) global.levelType = 1; +if (global.currLevel > 8 and global.currLevel < 13) global.levelType = 2; +if (global.currLevel > 12 and global.currLevel < 16) global.levelType = 3; +if (global.currLevel == 16) global.levelType = 4; + +if (global.currLevel <= 1 or + global.currLevel == 5 or + global.currLevel == 9 or + global.currLevel == 13) +{ + global.hadDarkLevel = false; +} + +// global.levelType = 3; // debug + +// DEBUG MODE // +/* +if (global.currLevel == 2) global.levelType = 4; +if (global.currLevel == 3) global.levelType = 2; +if (global.currLevel == 4) global.levelType = 3; +if (global.currLevel == 5) global.levelType = 4; +*/ + +// global.levelType = 0; + +global.startRoomX = 0; +global.startRoomY = 0; +global.endRoomX = 0; +global.endRoomY = 0; +oGame.levelGen = false; + +// this is used to determine the path to the exit (generally no bombs required) +for (i = 0; i < 4; i += 1) +{ + for (j = 0; j < 4; j += 1) + { + global.roomPath[i,j] = 0; + } +} + +// side walls +if (global.levelType == 4) + k = 54; +else if (global.levelType == 2) + k = 38; +else if (global.lake) + k = 41; +else + k = 33; +for (i = 0; i <= 42; i += 1) +{ + for (j = 0; j <= k; j += 1) + { + if (not isLevel()) + { + i = 999; + j = 999; + } + else if (global.levelType == 2) + { + if (i*16 == 0 or + i*16 == 656 or + j*16 == 0) + { + obj = instance_create(i*16, j*16, oDark); + obj.invincible = true; + obj.sprite_index = sDark; + } + } + else if (global.levelType == 4) + { + if (i*16 == 0 or + i*16 == 656 or + j*16 == 0) + { + obj = instance_create(i*16, j*16, oTemple); + obj.invincible = true; + if (not global.cityOfGold) obj.sprite_index = sTemple; + } + } + else if (global.lake) + { + if (i*16 == 0 or + i*16 == 656 or + j*16 == 0 or + j*16 >= 656) + { + obj = instance_create(i*16, j*16, oLush); obj.sprite_index = sLush; + obj.invincible = true; + } + } + else if (i*16 == 0 or + i*16 == 656 or + j*16 == 0 or + j*16 >= 528) + { + if (global.levelType == 0) { obj = instance_create(i*16, j*16, oBrick); obj.sprite_index = sBrick; } + else if (global.levelType == 1) { obj = instance_create(i*16, j*16, oLush); obj.sprite_index = sLush; } + else { obj = instance_create(i*16, j*16, oTemple); if (not global.cityOfGold) obj.sprite_index = sTemple; } + obj.invincible = true; + } + } +} + +if (global.levelType == 2) +{ + for (i = 0; i <= 42; i += 1) + { + instance_create(i*16, 40*16, oDark); + //instance_create(i*16, 35*16, oSpikes); + } +} + +if (global.levelType == 3) +{ + background_index = bgTemple; +} + +global.temp1 = global.gameStart; +scrLevelGen(); + +global.cemetary = false; +if (global.levelType == 1 and rand(1,global.probCemetary) == 1) global.cemetary = true; + +with oRoom +{ + if (global.levelType == 0) scrRoomGen(); + else if (global.levelType == 1) + { + if (global.blackMarket) scrRoomGenMarket(); + else scrRoomGen2(); + } + else if (global.levelType == 2) + { + if (global.yetiLair) scrRoomGenYeti(); + else scrRoomGen3(); + } + else if (global.levelType == 3) scrRoomGen4(); + else scrRoomGen5(); +} + +global.darkLevel = false; +//if (not global.hadDarkLevel and global.currLevel != 0 and global.levelType != 2 and global.currLevel != 16 and rand(1,1) == 1) +if (not global.hadDarkLevel and not global.noDarkLevel and global.currLevel != 0 and global.currLevel != 1 and global.levelType != 2 and global.currLevel != 16 and rand(1,global.probDarkLevel) == 1) +{ + global.darkLevel = true; + global.hadDarkLevel = true; + //instance_create(oPlayer1.x, oPlayer1.y, oFlare); +} + +if (global.blackMarket) global.darkLevel = false; + +global.genUdjatEye = false; +if (not global.madeUdjatEye) +{ + if (global.currLevel == 2 and rand(1,3) == 1) global.genUdjatEye = true; + else if (global.currLevel == 3 and rand(1,2) == 1) global.genUdjatEye = true; + else if (global.currLevel == 4) global.genUdjatEye = true; +} + +global.genMarketEntrance = false; +if (not global.madeMarketEntrance) +{ + if (global.currLevel == 5 and rand(1,3) == 1) global.genMarketEntrance = true; + else if (global.currLevel == 6 and rand(1,2) == 1) global.genMarketEntrance = true; + else if (global.currLevel == 7) global.genMarketEntrance = true; +} + +//////////////////////////// +// ENTITY / TREASURES +//////////////////////////// +global.temp2 = global.gameStart; +if (not isRoom("rTutorial") and not isRoom("rLoadLevel")) scrEntityGen(); + +if (instance_exists(oEntrance) and not global.customLevel) +{ + oPlayer1.x = oEntrance.x+8; + oPlayer1.y = oEntrance.y+8; +} + +if (global.darkLevel or + global.blackMarket or + global.snakePit or + global.cemetary or + global.lake or + global.yetiLair or + global.alienCraft or + global.sacrificePit or + global.cityOfGold) +{ + if (not isRoom("rLoadLevel")) + { + with oPlayer1 { alarm[0] = 10; } + } +} + +if (global.levelType == 4) scrSetupWalls(864); +else if (global.lake) scrSetupWalls(656); +else scrSetupWalls(528); + +// add background details +if (global.graphicsHigh) +{ + repeat(20) + { + // bg = instance_create(16*rand(1,42), 16*rand(1,33), oCaveBG); + if (global.levelType == 1 and rand(1,3) < 3) + tile_add(bgExtrasLush, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002); + else if (global.levelType == 2 and rand(1,3) < 3) + tile_add(bgExtrasIce, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002); + else if (global.levelType == 3 and rand(1,3) < 3) + tile_add(bgExtrasTemple, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002); + else + tile_add(bgExtras, 32*rand(0,1), 0, 32, 32, 16*rand(1,42), 16*rand(1,33), 10002); + } +} + +oGame.levelGen = true; + +// generate angry shopkeeper at exit if murderer or thief +if ((global.murderer or global.thiefLevel > 0) and isRealLevel()) +{ + with oExit + { + if (type == "Exit") + { + obj = instance_create(x, y, oShopkeeper); + obj.status = 4; + } + } + // global.thiefLevel -= 1; +} + +with oTreasure +{ + if (collision_point(x, y, oSolid, 0, 0)) + { + obj = instance_place(x, y, oSolid); + if (obj.invincible) instance_destroy(); + } +} + +with oWater +{ + if (sprite_index == sWaterTop or sprite_index == sLavaTop) + { + scrCheckWaterTop(); + } + /* + obj = instance_place(x-16, y, oWater); + if (instance_exists(obj)) + { + if (obj.sprite_index == sWaterTop or obj.sprite_index == sLavaTop) + { + if (type == "Lava") sprite_index = sLavaTop; + else sprite_index = sWaterTop; + } + } + obj = instance_place(x+16, y, oWater); + if (instance_exists(obj)) + { + if (obj.sprite_index == sWaterTop or obj.sprite_index == sLavaTop) + { + if (type == "Lava") sprite_index = sLavaTop; + else sprite_index = sWaterTop; + } + } + */ +} + +global.temp3 = global.gameStart; diff --git a/samples/Gnuplot/dashcolor.1.gnu b/samples/Gnuplot/dashcolor.1.gnu new file mode 100644 index 00000000..291747bd --- /dev/null +++ b/samples/Gnuplot/dashcolor.1.gnu @@ -0,0 +1,22 @@ +# set terminal pngcairo background "#ffffff" fontscale 1.0 dashed size 640, 480 +# set output 'dashcolor.1.png' +set label 1 "set style line 1 lt 2 lc rgb \"red\" lw 3" at -0.4, -0.25, 0 left norotate back textcolor rgb "red" nopoint offset character 0, 0, 0 +set label 2 "set style line 2 lt 2 lc rgb \"orange\" lw 2" at -0.4, -0.35, 0 left norotate back textcolor rgb "orange" nopoint offset character 0, 0, 0 +set label 3 "set style line 3 lt 2 lc rgb \"yellow\" lw 3" at -0.4, -0.45, 0 left norotate back textcolor rgb "yellow" nopoint offset character 0, 0, 0 +set label 4 "set style line 4 lt 2 lc rgb \"green\" lw 2" at -0.4, -0.55, 0 left norotate back textcolor rgb "green" nopoint offset character 0, 0, 0 +set label 5 "plot ... lt 1 lc 3 " at -0.4, -0.65, 0 left norotate back textcolor lt 3 nopoint offset character 0, 0, 0 +set label 6 "plot ... lt 3 lc 3 " at -0.4, -0.75, 0 left norotate back textcolor lt 3 nopoint offset character 0, 0, 0 +set label 7 "plot ... lt 5 lc 3 " at -0.4, -0.85, 0 left norotate back textcolor lt 3 nopoint offset character 0, 0, 0 +set style line 1 linetype 2 linecolor rgb "red" linewidth 3.000 pointtype 2 pointsize default pointinterval 0 +set style line 2 linetype 2 linecolor rgb "orange" linewidth 2.000 pointtype 2 pointsize default pointinterval 0 +set style line 3 linetype 2 linecolor rgb "yellow" linewidth 3.000 pointtype 2 pointsize default pointinterval 0 +set style line 4 linetype 2 linecolor rgb "green" linewidth 2.000 pointtype 2 pointsize default pointinterval 0 +set noxtics +set noytics +set title "Independent colors and dot/dash styles" +set xlabel "You will only see dashed lines if your current terminal setting permits it" +set xrange [ -0.500000 : 3.50000 ] noreverse nowriteback +set yrange [ -1.00000 : 1.40000 ] noreverse nowriteback +set bmargin 7 +unset colorbox +plot cos(x) ls 1 title 'ls 1', cos(x-.2) ls 2 title 'ls 2', cos(x-.4) ls 3 title 'ls 3', cos(x-.6) ls 4 title 'ls 4', cos(x-.8) lt 1 lc 3 title 'lt 1 lc 3', cos(x-1.) lt 3 lc 3 title 'lt 3 lc 3', cos(x-1.2) lt 5 lc 3 title 'lt 5 lc 3' diff --git a/samples/Gnuplot/histograms.2.gnu b/samples/Gnuplot/histograms.2.gnu new file mode 100644 index 00000000..e268ce01 --- /dev/null +++ b/samples/Gnuplot/histograms.2.gnu @@ -0,0 +1,15 @@ +# set terminal pngcairo transparent enhanced font "arial,10" fontscale 1.0 size 500, 350 +# set output 'histograms.2.png' +set boxwidth 0.9 absolute +set style fill solid 1.00 border lt -1 +set key inside right top vertical Right noreverse noenhanced autotitles nobox +set style histogram clustered gap 1 title offset character 0, 0, 0 +set datafile missing '-' +set style data histograms +set xtics border in scale 0,0 nomirror rotate by -45 offset character 0, 0, 0 autojustify +set xtics norangelimit font ",8" +set xtics () +set title "US immigration from Northern Europe\nPlot selected data columns as histogram of clustered boxes" +set yrange [ 0.00000 : 300000. ] noreverse nowriteback +i = 22 +plot 'immigration.dat' using 6:xtic(1) ti col, '' u 12 ti col, '' u 13 ti col, '' u 14 ti col diff --git a/samples/Gnuplot/rates.gp b/samples/Gnuplot/rates.gp new file mode 100644 index 00000000..aad2a52e --- /dev/null +++ b/samples/Gnuplot/rates.gp @@ -0,0 +1,14 @@ +#!/usr/bin/env gnuplot + +reset + +set terminal png +set output 'rates100.png' + +set xlabel "A2A price" +set ylabel "Response Rate" + +#set xr [0:5] +#set yr [0:6] + +plot 'rates100.dat' pt 7 notitle diff --git a/samples/Gnuplot/surface1.16.gnu b/samples/Gnuplot/surface1.16.gnu new file mode 100644 index 00000000..dd1ffefa --- /dev/null +++ b/samples/Gnuplot/surface1.16.gnu @@ -0,0 +1,40 @@ +# set terminal pngcairo transparent enhanced font "arial,10" fontscale 1.0 size 500, 350 +# set output 'surface1.16.png' +set dummy u,v +set label 1 "increasing v" at 6, 0, -1 left norotate back nopoint offset character 0, 0, 0 +set label 2 "u=0" at 5, 6.5, -1 left norotate back nopoint offset character 0, 0, 0 +set label 3 "u=1" at 5, 6.5, 0.100248 left norotate back nopoint offset character 0, 0, 0 +set arrow 1 from 5, -5, -1.2 to 5, 5, -1.2 head back nofilled linetype -1 linewidth 1.000 +set arrow 2 from 5, 6, -1 to 5, 5, -1 head back nofilled linetype -1 linewidth 1.000 +set arrow 3 from 5, 6, 0.100248 to 5, 5, 0.100248 head back nofilled linetype -1 linewidth 1.000 +set parametric +set view 70, 20, 1, 1 +set samples 51, 51 +set isosamples 2, 33 +set hidden3d back offset 1 trianglepattern 3 undefined 1 altdiagonal bentover +set ztics -1.00000,0.25,1.00000 norangelimit +set title "\"fence plot\" using separate parametric surfaces" +set xlabel "X axis" +set xlabel offset character -3, -2, 0 font "" textcolor lt -1 norotate +set xrange [ -5.00000 : 5.00000 ] noreverse nowriteback +set ylabel "Y axis" +set ylabel offset character 3, -2, 0 font "" textcolor lt -1 rotate by -270 +set yrange [ -5.00000 : 5.00000 ] noreverse nowriteback +set zlabel "Z axis" +set zlabel offset character -5, 0, 0 font "" textcolor lt -1 norotate +set zrange [ -1.00000 : 1.00000 ] noreverse nowriteback +sinc(u,v) = sin(sqrt(u**2+v**2)) / sqrt(u**2+v**2) +GPFUN_sinc = "sinc(u,v) = sin(sqrt(u**2+v**2)) / sqrt(u**2+v**2)" +xx = 6.08888888888889 +dx = 1.10888888888889 +x0 = -5 +x1 = -3.89111111111111 +x2 = -2.78222222222222 +x3 = -1.67333333333333 +x4 = -0.564444444444444 +x5 = 0.544444444444445 +x6 = 1.65333333333333 +x7 = 2.76222222222222 +x8 = 3.87111111111111 +x9 = 4.98 +splot [u=0:1][v=-4.99:4.99] x0, v, (u<0.5) ? -1 : sinc(x0,v) notitle, x1, v, (u<0.5) ? -1 : sinc(x1,v) notitle, x2, v, (u<0.5) ? -1 : sinc(x2,v) notitle, x3, v, (u<0.5) ? -1 : sinc(x3,v) notitle, x4, v, (u<0.5) ? -1 : sinc(x4,v) notitle, x5, v, (u<0.5) ? -1 : sinc(x5,v) notitle, x6, v, (u<0.5) ? -1 : sinc(x6,v) notitle, x7, v, (u<0.5) ? -1 : sinc(x7,v) notitle, x8, v, (u<0.5) ? -1 : sinc(x8,v) notitle, x9, v, (u<0.5) ? -1 : sinc(x9,v) notitle diff --git a/samples/Gnuplot/surface1.17.gnu b/samples/Gnuplot/surface1.17.gnu new file mode 100644 index 00000000..3d272bc7 --- /dev/null +++ b/samples/Gnuplot/surface1.17.gnu @@ -0,0 +1,46 @@ +# set terminal pngcairo transparent enhanced font "arial,10" fontscale 1.0 size 500, 350 +# set output 'surface1.17.png' +set dummy u,v +set label 1 "increasing v" at 6, 0, -1 left norotate back nopoint offset character 0, 0, 0 +set label 2 "increasing u" at 0, -5, -1.5 left norotate back nopoint offset character 0, 0, 0 +set label 3 "floor(u)%3=0" at 5, 6.5, -1 left norotate back nopoint offset character 0, 0, 0 +set label 4 "floor(u)%3=1" at 5, 6.5, 0.100248 left norotate back nopoint offset character 0, 0, 0 +set arrow 1 from 5, -5, -1.2 to 5, 5, -1.2 head back nofilled linetype -1 linewidth 1.000 +set arrow 2 from -5, -5, -1.2 to 5, -5, -1.2 head back nofilled linetype -1 linewidth 1.000 +set arrow 3 from 5, 6, -1 to 5, 5, -1 head back nofilled linetype -1 linewidth 1.000 +set arrow 4 from 5, 6, 0.100248 to 5, 5, 0.100248 head back nofilled linetype -1 linewidth 1.000 +set parametric +set view 70, 20, 1, 1 +set samples 51, 51 +set isosamples 30, 33 +set hidden3d back offset 1 trianglepattern 3 undefined 1 altdiagonal bentover +set ztics -1.00000,0.25,1.00000 norangelimit +set title "\"fence plot\" using single parametric surface with undefined points" +set xlabel "X axis" +set xlabel offset character -3, -2, 0 font "" textcolor lt -1 norotate +set xrange [ -5.00000 : 5.00000 ] noreverse nowriteback +set ylabel "Y axis" +set ylabel offset character 3, -2, 0 font "" textcolor lt -1 rotate by -270 +set yrange [ -5.00000 : 5.00000 ] noreverse nowriteback +set zlabel "Z axis" +set zlabel offset character -5, 0, 0 font "" textcolor lt -1 norotate +set zrange [ -1.00000 : 1.00000 ] noreverse nowriteback +sinc(u,v) = sin(sqrt(u**2+v**2)) / sqrt(u**2+v**2) +GPFUN_sinc = "sinc(u,v) = sin(sqrt(u**2+v**2)) / sqrt(u**2+v**2)" +xx = 6.08888888888889 +dx = 1.11 +x0 = -5 +x1 = -3.89111111111111 +x2 = -2.78222222222222 +x3 = -1.67333333333333 +x4 = -0.564444444444444 +x5 = 0.544444444444445 +x6 = 1.65333333333333 +x7 = 2.76222222222222 +x8 = 3.87111111111111 +x9 = 4.98 +xmin = -4.99 +xmax = 5 +n = 10 +zbase = -1 +splot [u=.5:3*n-.5][v=-4.99:4.99] xmin+floor(u/3)*dx, v, ((floor(u)%3)==0) ? zbase : (((floor(u)%3)==1) ? sinc(xmin+u/3.*dx,v) : 1/0) notitle diff --git a/samples/Gnuplot/world2.1.gnu b/samples/Gnuplot/world2.1.gnu new file mode 100644 index 00000000..53dc22b6 --- /dev/null +++ b/samples/Gnuplot/world2.1.gnu @@ -0,0 +1,21 @@ +# set terminal pngcairo transparent enhanced font "arial,10" fontscale 1.0 size 500, 350 +# set output 'world2.1.png' +unset border +set dummy u,v +set angles degrees +set parametric +set view 60, 136, 1.22, 1.26 +set samples 64, 64 +set isosamples 13, 13 +set mapping spherical +set noxtics +set noytics +set noztics +set title "Labels colored by GeV plotted in spherical coordinate system" +set urange [ -90.0000 : 90.0000 ] noreverse nowriteback +set vrange [ 0.00000 : 360.000 ] noreverse nowriteback +set cblabel "GeV" +set cbrange [ 0.00000 : 8.00000 ] noreverse nowriteback +set colorbox user +set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.02, 0.75, 0 front bdefault +splot cos(u)*cos(v),cos(u)*sin(v),sin(u) notitle with lines lt 5, 'world.dat' notitle with lines lt 2, 'srl.dat' using 3:2:(1):1:4 with labels notitle point pt 6 lw .1 left offset 1,0 font "Helvetica,7" tc pal diff --git a/samples/Grace/ackerman_function.grace b/samples/Grace/ackerman_function.grace new file mode 100644 index 00000000..a79d3c17 --- /dev/null +++ b/samples/Grace/ackerman_function.grace @@ -0,0 +1,6 @@ +method ack (m : Number, n : Number) -> Number { + print "ack {m} {n}" + if (m < = 0) then {n + 1} + elseif {n <= 0} then {ack((m -1), 1)} + else {ack(m -1, ack(m, n-1))} +} \ No newline at end of file diff --git a/samples/Grace/grace_IDE.grace b/samples/Grace/grace_IDE.grace new file mode 100644 index 00000000..f64d898a --- /dev/null +++ b/samples/Grace/grace_IDE.grace @@ -0,0 +1,554 @@ +import "gtk" as gtk +import "io" as io +import "mgcollections" as collections +import "button_factory" as button_factory +import "dialog_factory" as dialog_factory +import "syntax_highlighter" as highlighter +import "auto_completer" as aComp + +//TODO + +// Autocomplete typing + +// FileChooser +// Themes + +// Details for the Top Level Window +def window = gtk.window(gtk.GTK_WINDOW_TOPLEVEL) +window.title := "Grace" +window.set_default_size(700, 700) +// ------------- + +// Placeholder for the console window that can be popped out +// of the main window +var popped := gtk.window(gtk.GTK_WINDOW_TOPLEVEL) + +// Initialise the Boxes +def mBox = gtk.box(gtk.GTK_ORIENTATION_VERTICAL, 2) +def buttonBox = gtk.box(gtk.GTK_ORIENTATION_HORIZONTAL, 2) +var consoleButtons := gtk.box(gtk.GTK_ORIENTATION_HORIZONTAL, 3) +var consoleBox := gtk.box(gtk.GTK_ORIENTATION_VERTICAL, 2) +var editorBox := gtk.box(gtk.GTK_ORIENTATION_VERTICAL, 2) +var splitPane := gtk.paned(gtk.GTK_ORIENTATION_VERTICAL, 2) +def menuBox = gtk.box(gtk.GTK_ORIENTATION_HORIZONTAL, 4) +// ------------- + +// Initialise the buttons +def runButton = button_factory.make("run") +var clearButton := button_factory.make("clear") +var outButton := button_factory.make("out") +var errorButton := button_factory.make("error") +var popButton := button_factory.make("pop") +def newButton = button_factory.make("new") +def openButton = button_factory.make("open") +def saveButton = button_factory.make("save") +def saveAsButton = button_factory.make("saveAs") +def closeButton = button_factory.make("close") +// ------------- + +// Details for the default text editor and scrolled window +var tEdit := gtk.text_view +tEdit.set_size_request(700, 400) + +var scrolled_main := gtk.scrolled_window +scrolled_main.set_size_request(700, 400) +scrolled_main.add(tEdit) +// ------------- + +// Widget that allows multiple files to be edited (tabs) +var notebook := gtk.notebook +notebook.scrollable := true +// ------------- + +// Maps for holding the text_views and scrolled_windows +var editor_map := collections.map.new +editor_map.put(0, tEdit) +var scrolled_map := collections.map.new +scrolled_map.put(0, scrolled_main) + +// ------------- + +// Class that manages the syntax highlighting (This needs to be passed around otherwise +// the text_tag table gets confused, ie there can only be one) +def lighter = highlighter.Syntax_Highlighter.new(notebook, editor_map) +tEdit.buffer.on "changed" do { + lighter.highlightLine +} + +// Class that manages any auto completion that is required +def completer = aComp.Auto_Completer.new(window, notebook, editor_map) + +// Utility methods +// ------------- + +method deleteCompileFiles(page_num : Number) { + def cur_scrolled = scrolled_map.get(page_num) + var filename := notebook.get_tab_label_text(cur_scrolled) + filename := filename.substringFrom(0)to(filename.size - 7) //Removes .grace extension + + io.system("rm -f files/" ++ filename) + io.system("rm -f files/" ++ filename ++ ".c") + io.system("rm -f files/" ++ filename ++ ".gcn") + io.system("rm -f files/" ++ filename ++ ".gct") +} + +// ------------- + + + +var currentConsole := "output" // Which console is being shown +var out := false + + +var outText := "" +var errorText := "" + + + +// Give actions to the buttons +// ------------- + +runButton.on "clicked" do { + clearConsoles() + + // Get the details for the current page selected + def cur_page_num = notebook.current_page + def cur_page = editor_map.get(cur_page_num) + def cur_scrolled = scrolled_map.get(cur_page_num) + def cur_page_label = notebook.get_tab_label_text(cur_scrolled) + + // Initialise text iterators + def sIter = gtk.text_iter + def eIter = gtk.text_iter + + // Set one at the beggining and one at the end of the text + cur_page.buffer.get_iter_at_offset(sIter, 0) + cur_page.buffer.get_iter_at_offset(eIter, -1) + + // Get the text between the text iterators + def text = cur_page.buffer.get_text(sIter, eIter, true) + + // Save the text to the file (in case the user hasn't already saved it) + def file = io.open("files/" ++ cur_page_label, "w") + file.write(text) + file.close + + // Run the program and pipe the output and errors into files to be read + io.system("../minigrace/minigrace " ++ "files/" ++ cur_page_label ++ " > output.txt 2> error.txt") + def outputFile = io.open("output.txt", "r") + def errorFile = io.open("error.txt", "r") + outText := outputFile.read + errorText := errorFile.read + + io.system("rm -f output.txt error.txt") + + var switched := false + + // Change the console to output if there is output text + if((outText.size > 0) && (currentConsole != "output")) then { + switch_to_output() + switched := true + } + // Change the console to errors if there were errors + if((errorText.size > 0) && (currentConsole != "errors")) then { + switch_to_errors() + switched := true + } + + // Remember to populate the console if it wasn't switched + if(!switched) then { + populateConsoles + } +} + +clearButton.on "clicked" do { + clearConsoles() +} + +outButton.on "clicked" do { + switch_to_output() +} + +errorButton.on "clicked" do { + switch_to_errors() +} + +popButton.on "clicked" do { + if(out) then { + popIn() + } else { + popOut() + } +} + +// Gives a dialog to let the user create a new file to edit +newButton.on "clicked" do { + def new_window_class = dialog_factory.new.new(notebook, editor_map, scrolled_map, lighter) + + def new_window = new_window_class.window() + new_window.show_all +} + +// Gives a dialog that lets the user open a file to edit +openButton.on "clicked" do { + def open_window_class = dialog_factory.open.new(notebook, editor_map, scrolled_map, lighter) + + def open_window = open_window_class.window() + open_window.show_all +} + +// Saves the current file (if the name is Untitled.grace it will ask for a new name) +saveButton.on "clicked" do { + def cur_page_num = notebook.current_page + def cur_page = editor_map.get(cur_page_num) + def cur_scrolled = scrolled_map.get(cur_page_num) + def cur_page_label = notebook.get_tab_label_text(cur_scrolled) + + if(cur_page_label == "Untitled.grace") then { + def saveAs_window_class = dialog_factory.save.new(notebook, editor_map, scrolled_map, true) + + def saveAs_window = saveAs_window_class.window() + saveAs_window.show_all + } else { + // Initialise text iterators + def sIter = gtk.text_iter + def eIter = gtk.text_iter + + // Set one at the beggining and one at the end of the text + cur_page.buffer.get_iter_at_offset(sIter, 0) + cur_page.buffer.get_iter_at_offset(eIter, -1) + + // Get the text between the text iterators + def text = cur_page.buffer.get_text(sIter, eIter, true) + + // Save the file + def file = io.open("files/" ++ cur_page_label, "w") + file.write(text) + file.close + } + +} + +// Gives a dialog that lets the user save the file with a new name +saveAsButton.on "clicked" do { + def saveAs_window_class = dialog_factory.save.new(notebook, editor_map, scrolled_map, false) + + def saveAs_window = saveAs_window_class.window() + saveAs_window.show_all +} + +// This will close a tab on the notebook +// It also "removes" the page from the map, +// by creating a new temporary map and putting all but +// the removed page in. +closeButton.on "clicked" do { + def page_num = notebook.current_page + def num_pages = notebook.n_pages + + if(num_pages > 1) then { + deleteCompileFiles(page_num) + + def e_map = collections.map.new + def s_map = collections.map.new + + // Copy every page up to the current page into the new maps + var x := 0 + while {x < page_num} do { + var eValue := editor_map.get(x) + var sValue := scrolled_map.get(x) + e_map.put(x, eValue) + s_map.put(x, sValue) + + x := x + 1 + } + + // Copy every page after the current page into the new map (shifted one down) + x := page_num + 1 + while {x < num_pages} do { + var eValue := editor_map.get(x) + var sValue := scrolled_map.get(x) + e_map.put((x - 1), eValue) + s_map.put((x - 1), sValue) + + x := x + 1 + } + + editor_map := e_map + scrolled_map := s_map + notebook.remove_page(page_num) + + notebook.show_all + } + +} +// ------------- + + + + + + +// Consoles: +// ------------- + +var outConsole := gtk.text_view +var outScroll := gtk.scrolled_window +var errorConsole := gtk.text_view +var errorScroll := gtk.scrolled_window +var errorTag := errorConsole.buffer.create_tag("fixed", "foreground", "red") + + +// Creates a new output console +method createOut { + outConsole := gtk.text_view + outScroll := gtk.scrolled_window + outScroll.add(outConsole) + if(out) then { + outConsole.set_size_request(400, 400) + outScroll.set_size_request(400, 400) + } else { + outConsole.set_size_request(700, 200) + outScroll.set_size_request(700, 200) + } + outConsole.editable := false + outConsole.buffer.set_text("[Output]:", -1) +} +createOut() + +// Creates a new error console +method createError { + errorConsole := gtk.text_view + errorScroll := gtk.scrolled_window + errorScroll.add(errorConsole) + if(out) then { + errorConsole.set_size_request(400, 400) + errorScroll.set_size_request(400, 400) + } else { + errorConsole.set_size_request(700, 200) + errorScroll.set_size_request(700, 200) + } + errorConsole.editable := false + errorConsole.buffer.set_text("[Errors]:", -1) + errorTag := errorConsole.buffer.create_tag("fixed", "foreground", "red") +} +createError() + +// Switches the console being shown to be output. This requires +// the output console to be remade as it would have been destroyed when +// it was switched previously +method switch_to_output { + if(currentConsole != "output") then { + currentConsole := "output" + consoleBox.remove(errorScroll) // This destroys the errorConsole + + createOut() + + consoleBox.add(outScroll) + + populateConsoles() + if(out) then { + popped.show_all + } else { + window.show_all + } + } +} + +// Switches the console being shown to be errors. This requires +// the error console to be remade as it would have been destroyed when +// it was switched previously +method switch_to_errors { + if(currentConsole != "errors") then { + currentConsole := "errors" + consoleBox.remove(outScroll) // This destroys the outConsole + + createError() + + consoleBox.add(errorScroll) + + populateConsoles() + if(out) then { + popped.show_all + } else { + window.show_all + } + } +} + +// If there is text to be put into the consoles this will add it +method populateConsoles { + if((outText.size > 0) && (currentConsole == "output")) then { + outConsole.buffer.set_text(outText, -1) + } + if((errorText.size > 0) && (currentConsole == "errors")) then { + def sIter = gtk.text_iter + def eIter = gtk.text_iter + + errorConsole.buffer.set_text(errorText, -1) + errorConsole.buffer.get_iter_at_offset(sIter, 0) + errorConsole.buffer.get_iter_at_offset(eIter, -1) + errorConsole.buffer.apply_tag(errorTag, sIter, eIter) + } +} + +method clearConsoles { + if(currentConsole == "output") then { + outConsole.buffer.set_text("[Output]:", -1) + outText := "" + } + if(currentConsole == "errors") then { + errorConsole.buffer.set_text("[Errors]:", -1) + errorText := "" + } +} + + +// Identical as the popIn method, but can be connected to the window's destroy button +def popInBlock = { + consoleBox.reparent(splitPane) + popButton.label := "Pop Out" + + if(currentConsole == "output") then { + outConsole.set_size_request(700, 200) + outScroll.set_size_request(700, 200) + } + if(currentConsole == "errors") then { + errorConsole.set_size_request(700, 200) + errorScroll.set_size_request(700, 200) + } + + def cur_page_num = notebook.current_page + def cur_scrolled = scrolled_map.get(cur_page_num) + def cur_page = editor_map.get(cur_page_num) + + cur_page.set_size_request(700, 400) + cur_scrolled.set_size_request(700, 400) + + out := false + popped.visible := false +} + + +// This pops the console out into a separate window +method popOut { + popped := gtk.window(gtk.GTK_WINDOW_TOPLEVEL) + + consoleBox.reparent(popped) + popButton.label := "Pop In" + + if(currentConsole == "output") then { + outConsole.set_size_request(400, 400) + outScroll.set_size_request(400, 400) + } + if(currentConsole == "errors") then { + errorConsole.set_size_request(400, 400) + errorScroll.set_size_request(400, 400) + } + + def cur_page_num = notebook.current_page + def cur_scrolled = scrolled_map.get(cur_page_num) + def cur_page = editor_map.get(cur_page_num) + + cur_page.set_size_request(700, 580) + cur_scrolled.set_size_request(700, 580) + + out := true + popped.visible := true + popped.connect("destroy", popInBlock) + popped.show_all + +} + +// Puts the console back into the main window +method popIn { + consoleBox.reparent(splitPane) + popButton.label := "Pop Out" + + if(currentConsole == "output") then { + outConsole.set_size_request(700, 200) + outScroll.set_size_request(700, 200) + } + if(currentConsole == "errors") then { + errorConsole.set_size_request(700, 200) + errorScroll.set_size_request(700, 200) + } + + def cur_page_num = notebook.current_page + def cur_scrolled = scrolled_map.get(cur_page_num) + def cur_page = editor_map.get(cur_page_num) + + cur_page.set_size_request(700, 400) + cur_scrolled.set_size_request(700, 400) + + out := false + popped.visible := false +} + +clearConsoles() +// ------------- + + + + + + +// Patch everything together + +var hSeparator1 := gtk.separator(gtk.GTK_ORIENTATION_HORIZONTAL) +var hSeparator2 := gtk.separator(gtk.GTK_ORIENTATION_HORIZONTAL) + +menuBox.add(newButton) +menuBox.add(openButton) +menuBox.add(saveButton) +menuBox.add(saveAsButton) +buttonBox.add(runButton) +buttonBox.add(closeButton) + +consoleButtons.add(outButton) +consoleButtons.add(errorButton) +consoleButtons.add(clearButton) +consoleButtons.add(popButton) + +consoleBox.add(hSeparator1) +consoleBox.add(consoleButtons) +consoleBox.add(outScroll) + +editorBox.add(hSeparator2) +notebook.add(scrolled_main) +notebook.set_tab_label_text(scrolled_main, "Untitled.grace") +editorBox.add(notebook) + +splitPane.add1(editorBox) +splitPane.add2(consoleBox) + +mBox.add(menuBox) +mBox.add(buttonBox) +mBox.add(splitPane) + +window.add(mBox) + +def exit = { + var x := 0 + while {x < notebook.n_pages} do { + deleteCompileFiles(x) + + x := x + 1 + } + + // Delete the compile files of the IDE + io.system("rm -f Grace_IDE.gct Grace_IDE.c Grace_IDE.gcn") + io.system("rm -f scanner.gct scanner.c scanner.gcn") + io.system("rm -f syntax_highlighter.gct syntax_highlighter.c syntax_highlighter.gcn") + io.system("rm -f syntax_colors.gct syntax_colors.c syntax_colors.gcn") + io.system("rm -f button_factory.gct button_factory.c button_factory.gcn") + io.system("rm -f dialog_factory.gct dialog_factory.c dialog_factory.gcn") + io.system("rm -f auto_completer.gct auto_completer.c auto_completer.gcn") + + print "Grace IDE Closed Successfully" + gtk.main_quit +} + +window.connect("destroy", exit) +window.show_all + +gtk.main \ No newline at end of file diff --git a/samples/Grammatical Framework/Foods.gf b/samples/Grammatical Framework/Foods.gf new file mode 100644 index 00000000..8ea02f39 --- /dev/null +++ b/samples/Grammatical Framework/Foods.gf @@ -0,0 +1,15 @@ +-- (c) 2009 Aarne Ranta under LGPL + +abstract Foods = { + flags startcat = Comment ; + cat + Comment ; Item ; Kind ; Quality ; + fun + Pred : Item -> Quality -> Comment ; + This, That, These, Those : Kind -> Item ; + Mod : Quality -> Kind -> Kind ; + Wine, Cheese, Fish, Pizza : Kind ; + Very : Quality -> Quality ; + Fresh, Warm, Italian, + Expensive, Delicious, Boring : Quality ; +} diff --git a/samples/Grammatical Framework/FoodsAfr.gf b/samples/Grammatical Framework/FoodsAfr.gf new file mode 100644 index 00000000..d0226710 --- /dev/null +++ b/samples/Grammatical Framework/FoodsAfr.gf @@ -0,0 +1,79 @@ +-- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL + +concrete FoodsAfr of Foods = open Prelude, Predef in{ + + flags coding=utf8; + + lincat + Comment = {s: Str} ; + Kind = {s: Number => Str} ; + Item = {s: Str ; n: Number} ; + Quality = {s: AdjAP => Str} ; + + lin + Pred item quality = {s = item.s ++ "is" ++ (quality.s ! Predic)}; + This kind = {s = "hierdie" ++ (kind.s ! Sg); n = Sg}; + That kind = {s = "daardie" ++ (kind.s ! Sg); n = Sg}; + These kind = {s = "hierdie" ++ (kind.s ! Pl); n = Pl}; + Those kind = {s = "daardie" ++ (kind.s ! Pl); n = Pl}; + Mod quality kind = {s = table{n => (quality.s ! Attr) ++ (kind.s!n)}}; + + Wine = declNoun_e "wyn"; + Cheese = declNoun_aa "kaas"; + Fish = declNoun_ss "vis"; + Pizza = declNoun_s "pizza"; + + Very quality = veryAdj quality; + + Fresh = regAdj "vars"; + Warm = regAdj "warm"; + Italian = smartAdj_e "Italiaans"; + Expensive = regAdj "duur"; + Delicious = smartAdj_e "heerlik"; + Boring = smartAdj_e "vervelig"; + + param + AdjAP = Attr | Predic ; + Number = Sg | Pl ; + + oper + --Noun operations (wyn, kaas, vis, pizza) + + declNoun_aa: Str -> {s: Number => Str} = \x -> + let v = tk 2 x + in + {s = table{Sg => x ; Pl => v + (last x) +"e"}}; + + declNoun_e: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "e"}} ; + declNoun_s: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "s"}} ; + + declNoun_ss: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + (last x) + "e"}} ; + + + --Adjective operations + + mkAdj : Str -> Str -> {s: AdjAP => Str} = \x,y -> {s = table{Attr => x; Predic => y}}; + + declAdj_e : Str -> {s : AdjAP=> Str} = \x -> mkAdj (x + "e") x; + declAdj_g : Str -> {s : AdjAP=> Str} = \w -> + let v = init w + in mkAdj (v + "ë") w ; + + declAdj_oog : Str -> {s : AdjAP=> Str} = \w -> + let v = init w + in + let i = init v + in mkAdj (i + "ë") w ; + + regAdj : Str -> {s : AdjAP=> Str} = \x -> mkAdj x x; + + veryAdj : {s: AdjAP => Str} -> {s : AdjAP=> Str} = \x -> {s = table{a => "baie" ++ (x.s!a)}}; + + + smartAdj_e : Str -> {s : AdjAP=> Str} = \a -> case a of + { + _ + "oog" => declAdj_oog a ; + _ + ("e" | "ie" | "o" | "oe") + "g" => declAdj_g a ; + _ => declAdj_e a + }; +} diff --git a/samples/Grammatical Framework/FoodsAmh.gf b/samples/Grammatical Framework/FoodsAmh.gf new file mode 100644 index 00000000..e8915d86 --- /dev/null +++ b/samples/Grammatical Framework/FoodsAmh.gf @@ -0,0 +1,21 @@ +concrete FoodsAmh of Foods ={ + flags coding = utf8; + lincat + Comment,Item,Kind,Quality = Str; + lin + Pred item quality = item ++ quality++ "ነው::" ; + This kind = "ይህ" ++ kind; + That kind = "ያ" ++ kind; + Mod quality kind = quality ++ kind; + Wine = "ወይን"; + Cheese = "አይብ"; + Fish = "ዓሳ"; + Very quality = "በጣም" ++ quality; + Fresh = "አዲስ"; + Warm = "ትኩስ"; + Italian = "የጥልያን"; + Expensive = "ውድ"; + Delicious = "ጣፋጭ"; + Boring = "አስቀያሚ"; + +} \ No newline at end of file diff --git a/samples/Grammatical Framework/FoodsBul.gf b/samples/Grammatical Framework/FoodsBul.gf new file mode 100644 index 00000000..ac912766 --- /dev/null +++ b/samples/Grammatical Framework/FoodsBul.gf @@ -0,0 +1,43 @@ +-- (c) 2009 Krasimir Angelov under LGPL + +concrete FoodsBul of Foods = { + + flags + coding = utf8; + + param + Gender = Masc | Fem | Neutr; + Number = Sg | Pl; + Agr = ASg Gender | APl ; + + lincat + Comment = Str ; + Quality = {s : Agr => Str} ; + Item = {s : Str; a : Agr} ; + Kind = {s : Number => Str; g : Gender} ; + + lin + Pred item qual = item.s ++ case item.a of {ASg _ => "е"; APl => "са"} ++ qual.s ! item.a ; + + This kind = {s=case kind.g of {Masc=>"този"; Fem=>"тази"; Neutr=>"това" } ++ kind.s ! Sg; a=ASg kind.g} ; + That kind = {s=case kind.g of {Masc=>"онзи"; Fem=>"онази"; Neutr=>"онова"} ++ kind.s ! Sg; a=ASg kind.g} ; + These kind = {s="тези" ++ kind.s ! Pl; a=APl} ; + Those kind = {s="онези" ++ kind.s ! Pl; a=APl} ; + + Mod qual kind = {s=\\n => qual.s ! (case n of {Sg => ASg kind.g; Pl => APl}) ++ kind.s ! n; g=kind.g} ; + + Wine = {s = table {Sg => "вино"; Pl => "вина"}; g = Neutr}; + Cheese = {s = table {Sg => "сирене"; Pl => "сирена"}; g = Neutr}; + Fish = {s = table {Sg => "риба"; Pl => "риби"}; g = Fem}; + Pizza = {s = table {Sg => "пица"; Pl => "пици"}; g = Fem}; + + Very qual = {s = \\g => "много" ++ qual.s ! g}; + + Fresh = {s = table {ASg Masc => "свеж"; ASg Fem => "свежа"; ASg Neutr => "свежо"; APl => "свежи"}}; + Warm = {s = table {ASg Masc => "горещ"; ASg Fem => "гореща"; ASg Neutr => "горещо"; APl => "горещи"}}; + Italian = {s = table {ASg Masc => "италиански"; ASg Fem => "италианска"; ASg Neutr => "италианско"; APl => "италиански"}}; + Expensive = {s = table {ASg Masc => "скъп"; ASg Fem => "скъпа"; ASg Neutr => "скъпо"; APl => "скъпи"}}; + Delicious = {s = table {ASg Masc => "превъзходен"; ASg Fem => "превъзходна"; ASg Neutr => "превъзходно"; APl => "превъзходни"}}; + Boring = {s = table {ASg Masc => "еднообразен"; ASg Fem => "еднообразна"; ASg Neutr => "еднообразно"; APl => "еднообразни"}}; + +} diff --git a/samples/Grammatical Framework/FoodsCat.gf b/samples/Grammatical Framework/FoodsCat.gf new file mode 100644 index 00000000..5ad38d0d --- /dev/null +++ b/samples/Grammatical Framework/FoodsCat.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Jordi Saludes under LGPL + +concrete FoodsCat of Foods = FoodsI with + (Syntax = SyntaxCat), + (LexFoods = LexFoodsCat) ; diff --git a/samples/Grammatical Framework/FoodsChi.gf b/samples/Grammatical Framework/FoodsChi.gf new file mode 100644 index 00000000..163aa0eb --- /dev/null +++ b/samples/Grammatical Framework/FoodsChi.gf @@ -0,0 +1,35 @@ +concrete FoodsChi of Foods = { +flags coding = utf8 ; +lincat + Comment, Item = Str ; + Kind = {s,c : Str} ; + Quality = {s,p : Str} ; +lin + Pred item quality = item ++ "是" ++ quality.s ++ quality.p ; + This kind = "这" ++ kind.c ++ kind.s ; + That kind = "那" ++ kind.c ++ kind.s ; + These kind = "这" ++ "些" ++ kind.s ; + Those kind = "那" ++ "些" ++ kind.s ; + Mod quality kind = { + s = quality.s ++ quality.p ++ kind.s ; + c = kind.c + } ; + Wine = geKind "酒" ; + Pizza = geKind "比 萨 饼" ; + Cheese = geKind "奶 酪" ; + Fish = geKind "鱼" ; + Very quality = longQuality ("非 常" ++ quality.s) ; + Fresh = longQuality "新 鲜" ; + Warm = longQuality "温 热" ; + Italian = longQuality "意 大 利 式" ; + Expensive = longQuality "昂 贵" ; + Delicious = longQuality "美 味" ; + Boring = longQuality "难 吃" ; +oper + mkKind : Str -> Str -> {s,c : Str} = \s,c -> + {s = s ; c = c} ; + geKind : Str -> {s,c : Str} = \s -> + mkKind s "个" ; + longQuality : Str -> {s,p : Str} = \s -> + {s = s ; p = "的"} ; +} diff --git a/samples/Grammatical Framework/FoodsCze.gf b/samples/Grammatical Framework/FoodsCze.gf new file mode 100644 index 00000000..3fec6814 --- /dev/null +++ b/samples/Grammatical Framework/FoodsCze.gf @@ -0,0 +1,35 @@ +-- (c) 2011 Katerina Bohmova under LGPL + +concrete FoodsCze of Foods = open ResCze in { + flags + coding = utf8 ; + lincat + Comment = {s : Str} ; + Quality = Adjective ; + Kind = Noun ; + Item = NounPhrase ; + lin + Pred item quality = + {s = item.s ++ copula ! item.n ++ + quality.s ! item.g ! item.n} ; + This = det Sg "tento" "tato" "toto" ; + That = det Sg "tamten" "tamta" "tamto" ; + These = det Pl "tyto" "tyto" "tato" ; + Those = det Pl "tamty" "tamty" "tamta" ; + Mod quality kind = { + s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; + g = kind.g + } ; + Wine = noun "víno" "vína" Neutr ; + Cheese = noun "sýr" "sýry" Masc ; + Fish = noun "ryba" "ryby" Fem ; + Pizza = noun "pizza" "pizzy" Fem ; + Very qual = {s = \\g,n => "velmi" ++ qual.s ! g ! n} ; + Fresh = regAdj "čerstv" ; + Warm = regAdj "tepl" ; + Italian = regAdj "italsk" ; + Expensive = regAdj "drah" ; + Delicious = regnfAdj "vynikající" ; + Boring = regAdj "nudn" ; +} + diff --git a/samples/Grammatical Framework/FoodsDut.gf b/samples/Grammatical Framework/FoodsDut.gf new file mode 100644 index 00000000..d4855e5c --- /dev/null +++ b/samples/Grammatical Framework/FoodsDut.gf @@ -0,0 +1,58 @@ +-- (c) 2009 Femke Johansson under LGPL + +concrete FoodsDut of Foods = { + + lincat + Comment = {s : Str}; + Quality = {s : AForm => Str}; + Kind = { s : Number => Str}; + Item = {s : Str ; n : Number}; + + lin + Pred item quality = + {s = item.s ++ copula ! item.n ++ quality.s ! APred}; + This = det Sg "deze"; + These = det Pl "deze"; + That = det Sg "die"; + Those = det Pl "die"; + + Mod quality kind = + {s = \\n => quality.s ! AAttr ++ kind.s ! n}; + Wine = regNoun "wijn"; + Cheese = noun "kaas" "kazen"; + Fish = noun "vis" "vissen"; + Pizza = noun "pizza" "pizza's"; + + Very a = {s = \\f => "erg" ++ a.s ! f}; + + Fresh = regadj "vers"; + Warm = regadj "warm"; + Italian = regadj "Italiaans"; + Expensive = adj "duur" "dure"; + Delicious = regadj "lekker"; + Boring = regadj "saai"; + + param + Number = Sg | Pl; + AForm = APred | AAttr; + + oper + det : Number -> Str -> + {s : Number => Str} -> {s : Str ; n: Number} = + \n,det,noun -> {s = det ++ noun.s ! n ; n=n}; + + noun : Str -> Str -> {s : Number => Str} = + \man,men -> {s = table {Sg => man; Pl => men}}; + + regNoun : Str -> {s : Number => Str} = + \wijn -> noun wijn (wijn + "en"); + + regadj : Str -> {s : AForm => Str} = + \koud -> adj koud (koud+"e"); + + adj : Str -> Str -> {s : AForm => Str} = + \duur, dure -> {s = table {APred => duur; AAttr => dure}}; + + copula : Number => Str = + table {Sg => "is" ; Pl => "zijn"}; +} diff --git a/samples/Grammatical Framework/FoodsEng.gf b/samples/Grammatical Framework/FoodsEng.gf new file mode 100644 index 00000000..e7359a4f --- /dev/null +++ b/samples/Grammatical Framework/FoodsEng.gf @@ -0,0 +1,43 @@ +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsEng of Foods = { + flags language = en_US; + lincat + Comment, Quality = {s : Str} ; + Kind = {s : Number => Str} ; + Item = {s : Str ; n : Number} ; + lin + Pred item quality = + {s = item.s ++ copula ! item.n ++ quality.s} ; + This = det Sg "this" ; + That = det Sg "that" ; + These = det Pl "these" ; + Those = det Pl "those" ; + Mod quality kind = + {s = \\n => quality.s ++ kind.s ! n} ; + Wine = regNoun "wine" ; + Cheese = regNoun "cheese" ; + Fish = noun "fish" "fish" ; + Pizza = regNoun "pizza" ; + Very a = {s = "very" ++ a.s} ; + Fresh = adj "fresh" ; + Warm = adj "warm" ; + Italian = adj "Italian" ; + Expensive = adj "expensive" ; + Delicious = adj "delicious" ; + Boring = adj "boring" ; + param + Number = Sg | Pl ; + oper + det : Number -> Str -> + {s : Number => Str} -> {s : Str ; n : Number} = + \n,det,noun -> {s = det ++ noun.s ! n ; n = n} ; + noun : Str -> Str -> {s : Number => Str} = + \man,men -> {s = table {Sg => man ; Pl => men}} ; + regNoun : Str -> {s : Number => Str} = + \car -> noun car (car + "s") ; + adj : Str -> {s : Str} = + \cold -> {s = cold} ; + copula : Number => Str = + table {Sg => "is" ; Pl => "are"} ; +} diff --git a/samples/Grammatical Framework/FoodsEpo.gf b/samples/Grammatical Framework/FoodsEpo.gf new file mode 100644 index 00000000..dd2400fe --- /dev/null +++ b/samples/Grammatical Framework/FoodsEpo.gf @@ -0,0 +1,48 @@ +-- (c) 2009 Julia Hammar under LGPL + +concrete FoodsEpo of Foods = open Prelude in { + + flags coding =utf8 ; + + lincat + Comment = SS ; + Kind, Quality = {s : Number => Str} ; + Item = {s : Str ; n : Number} ; + + lin + Pred item quality = ss (item.s ++ copula ! item.n ++ quality.s ! item.n) ; + This = det Sg "ĉi tiu" ; + That = det Sg "tiu" ; + These = det Pl "ĉi tiuj" ; + Those = det Pl "tiuj" ; + Mod quality kind = {s = \\n => quality.s ! n ++ kind.s ! n} ; + Wine = regNoun "vino" ; + Cheese = regNoun "fromaĝo" ; + Fish = regNoun "fiŝo" ; + Pizza = regNoun "pico" ; + Very quality = {s = \\n => "tre" ++ quality.s ! n} ; + Fresh = regAdj "freŝa" ; + Warm = regAdj "varma" ; + Italian = regAdj "itala" ; + Expensive = regAdj "altekosta" ; + Delicious = regAdj "bongusta" ; + Boring = regAdj "enuiga" ; + + param + Number = Sg | Pl ; + + oper + det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} = + \n,d,cn -> { + s = d ++ cn.s ! n ; + n = n + } ; + regNoun : Str -> {s : Number => Str} = + \vino -> {s = table {Sg => vino ; Pl => vino + "j"} + } ; + regAdj : Str -> {s : Number => Str} = + \nova -> {s = table {Sg => nova ; Pl => nova + "j"} + } ; + copula : Number => Str = \\_ => "estas" ; +} + diff --git a/samples/Grammatical Framework/FoodsFin.gf b/samples/Grammatical Framework/FoodsFin.gf new file mode 100644 index 00000000..34da5764 --- /dev/null +++ b/samples/Grammatical Framework/FoodsFin.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsFin of Foods = FoodsI with + (Syntax = SyntaxFin), + (LexFoods = LexFoodsFin) ; diff --git a/samples/Grammatical Framework/FoodsFre.gf b/samples/Grammatical Framework/FoodsFre.gf new file mode 100644 index 00000000..ac6c8c63 --- /dev/null +++ b/samples/Grammatical Framework/FoodsFre.gf @@ -0,0 +1,32 @@ +--# -path=.:../foods:present + +concrete FoodsFre of Foods = open SyntaxFre, ParadigmsFre in { + + flags coding = utf8 ; + + lincat + Comment = Utt ; + Item = NP ; + Kind = CN ; + Quality = AP ; + + lin + Pred item quality = mkUtt (mkCl item quality) ; + This kind = mkNP this_QuantSg kind ; + That kind = mkNP that_QuantSg kind ; + These kind = mkNP these_QuantPl kind ; + Those kind = mkNP those_QuantPl kind ; + Mod quality kind = mkCN quality kind ; + Very quality = mkAP very_AdA quality ; + + Wine = mkCN (mkN "vin" masculine) ; + Pizza = mkCN (mkN "pizza" feminine) ; + Cheese = mkCN (mkN "fromage" masculine) ; + Fish = mkCN (mkN "poisson" masculine) ; + Fresh = mkAP (mkA "frais" "fraîche" "frais" "fraîchement") ; + Warm = mkAP (mkA "chaud") ; + Italian = mkAP (mkA "italien") ; + Expensive = mkAP (mkA "cher") ; + Delicious = mkAP (mkA "délicieux") ; + Boring = mkAP (mkA "ennuyeux") ; + } \ No newline at end of file diff --git a/samples/Grammatical Framework/FoodsGer.gf b/samples/Grammatical Framework/FoodsGer.gf new file mode 100644 index 00000000..934cefb9 --- /dev/null +++ b/samples/Grammatical Framework/FoodsGer.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsGer of Foods = FoodsI with + (Syntax = SyntaxGer), + (LexFoods = LexFoodsGer) ; diff --git a/samples/Grammatical Framework/FoodsHeb.gf b/samples/Grammatical Framework/FoodsHeb.gf new file mode 100644 index 00000000..3d76b639 --- /dev/null +++ b/samples/Grammatical Framework/FoodsHeb.gf @@ -0,0 +1,108 @@ +--# -path=alltenses + +--(c) 2009 Dana Dannells +-- Licensed under LGPL + +concrete FoodsHeb of Foods = open Prelude in { + + flags coding=utf8 ; + + lincat + Comment = SS ; + Quality = {s: Number => Species => Gender => Str} ; + Kind = {s : Number => Species => Str ; g : Gender ; mod : Modified} ; + Item = {s : Str ; g : Gender ; n : Number ; sp : Species ; mod : Modified} ; + + + lin + Pred item quality = ss (item.s ++ quality.s ! item.n ! Indef ! item.g ) ; + This = det Sg Def "הזה" "הזאת"; + That = det Sg Def "ההוא" "ההיא" ; + These = det Pl Def "האלה" "האלה" ; + Those = det Pl Def "ההם" "ההן" ; + Mod quality kind = { + s = \\n,sp => kind.s ! n ! sp ++ quality.s ! n ! sp ! kind.g; + g = kind.g ; + mod = T + } ; + Wine = regNoun "יין" "יינות" Masc ; + Cheese = regNoun "גבינה" "גבינות" Fem ; + Fish = regNoun "דג" "דגים" Masc ; + Pizza = regNoun "פיצה" "פיצות" Fem ; + Very qual = {s = \\g,n,sp => "מאוד" ++ qual.s ! g ! n ! sp} ; + Fresh = regAdj "טרי" ; + Warm = regAdj "חם" ; + Italian = regAdj2 "איטלקי" ; + Expensive = regAdj "יקר" ; + Delicious = regAdj "טעים" ; + Boring = regAdj2 "משעמם"; + + param + Number = Sg | Pl ; + Gender = Masc | Fem ; + Species = Def | Indef ; + Modified = T | F ; + + oper + Noun : Type = {s : Number => Species => Str ; g : Gender ; mod : Modified } ; + Adj : Type = {s : Number => Species => Gender => Str} ; + + det : Number -> Species -> Str -> Str -> Noun -> + {s : Str ; g :Gender ; n : Number ; sp : Species ; mod : Modified} = + \n,sp,m,f,cn -> { + s = case cn.mod of { _ => cn.s ! n ! sp ++ case cn.g of {Masc => m ; Fem => f} }; + g = cn.g ; + n = n ; + sp = sp ; + mod = cn.mod + } ; + + noun : (gvina,hagvina,gvinot,hagvinot : Str) -> Gender -> Noun = + \gvina,hagvina,gvinot,hagvinot,g -> { + s = table { + Sg => table { + Indef => gvina ; + Def => hagvina + } ; + Pl => table { + Indef => gvinot ; + Def => hagvinot + } + } ; + g = g ; + mod = F + } ; + + regNoun : Str -> Str -> Gender -> Noun = + \gvina,gvinot, g -> + noun gvina (defH gvina) gvinot (defH gvinot) g ; + + defH : Str -> Str = \cn -> + case cn of {_ => "ה" + cn}; + + replaceLastLetter : Str -> Str = \c -> + case c of {"ף" => "פ" ; "ם" => "מ" ; "ן" => "נ" ; "ץ" => "צ" ; "ך" => "כ"; _ => c} ; + + adjective : (_,_,_,_ : Str) -> Adj = + \tov,tova,tovim,tovot -> { + s = table { + Sg => table { + Indef => table { Masc => tov ; Fem => tova } ; + Def => table { Masc => defH tov ; Fem => defH tova } + } ; + Pl => table { + Indef => table {Masc => tovim ; Fem => tovot } ; + Def => table { Masc => defH tovim ; Fem => defH tovot } + } + } + } ; + + regAdj : Str -> Adj = \tov -> + case tov of { to + c@? => + adjective tov (to + replaceLastLetter (c) + "ה" ) (to + replaceLastLetter (c) +"ים" ) (to + replaceLastLetter (c) + "ות" )}; + + regAdj2 : Str -> Adj = \italki -> + case italki of { italk+ c@? => + adjective italki (italk + replaceLastLetter (c) +"ת" ) (italk + replaceLastLetter (c)+ "ים" ) (italk + replaceLastLetter (c) + "ות" )}; + +} -- FoodsHeb diff --git a/samples/Grammatical Framework/FoodsHin.gf b/samples/Grammatical Framework/FoodsHin.gf new file mode 100644 index 00000000..67c29df8 --- /dev/null +++ b/samples/Grammatical Framework/FoodsHin.gf @@ -0,0 +1,75 @@ +-- (c) 2010 Vikash Rauniyar under LGPL + +concrete FoodsHin of Foods = { + + flags coding=utf8 ; + + param + Gender = Masc | Fem ; + Number = Sg | Pl ; + lincat + Comment = {s : Str} ; + Item = {s : Str ; g : Gender ; n : Number} ; + Kind = {s : Number => Str ; g : Gender} ; + Quality = {s : Gender => Number => Str} ; + lin + Pred item quality = { + s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n + } ; + This kind = {s = "यह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; + That kind = {s = "वह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; + These kind = {s = "ये" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; + Those kind = {s = "वे" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; + Mod quality kind = { + s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; + g = kind.g + } ; + Wine = regN "मदिरा" ; + Cheese = regN "पनीर" ; + Fish = regN "मछली" ; + Pizza = regN "पिज़्ज़ा" ; + Very quality = {s = \\g,n => "अति" ++ quality.s ! g ! n} ; + Fresh = regAdj "ताज़ा" ; + Warm = regAdj "गरम" ; + Italian = regAdj "इटली" ; + Expensive = regAdj "बहुमूल्य" ; + Delicious = regAdj "स्वादिष्ट" ; + Boring = regAdj "अरुचिकर" ; + + oper + mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = + \s,p,g -> { + s = table { + Sg => s ; + Pl => p + } ; + g = g + } ; + + regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of { + lark + "ा" => mkN s (lark + "े") Masc ; + lark + "ी" => mkN s (lark + "ीयँा") Fem ; + _ => mkN s s Masc + } ; + + mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> { + s = table { + Masc => table { + Sg => ms ; + Pl => mp + } ; + Fem => \\_ => f + } + } ; + + regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of { + acch + "ा" => mkAdj a (acch + "े") (acch + "ी") ; + _ => mkAdj a a a + } ; + + copula : Number -> Str = \n -> case n of { + Sg => "है" ; + Pl => "हैं" + } ; + + } diff --git a/samples/Grammatical Framework/FoodsI.gf b/samples/Grammatical Framework/FoodsI.gf new file mode 100644 index 00000000..f4113b72 --- /dev/null +++ b/samples/Grammatical Framework/FoodsI.gf @@ -0,0 +1,29 @@ +-- (c) 2009 Aarne Ranta under LGPL + +incomplete concrete FoodsI of Foods = + open Syntax, LexFoods in { + lincat + Comment = Utt ; + Item = NP ; + Kind = CN ; + Quality = AP ; + lin + Pred item quality = mkUtt (mkCl item quality) ; + This kind = mkNP this_Det kind ; + That kind = mkNP that_Det kind ; + These kind = mkNP these_Det kind ; + Those kind = mkNP those_Det kind ; + Mod quality kind = mkCN quality kind ; + Very quality = mkAP very_AdA quality ; + + Wine = mkCN wine_N ; + Pizza = mkCN pizza_N ; + Cheese = mkCN cheese_N ; + Fish = mkCN fish_N ; + Fresh = mkAP fresh_A ; + Warm = mkAP warm_A ; + Italian = mkAP italian_A ; + Expensive = mkAP expensive_A ; + Delicious = mkAP delicious_A ; + Boring = mkAP boring_A ; +} diff --git a/samples/Grammatical Framework/FoodsIce.gf b/samples/Grammatical Framework/FoodsIce.gf new file mode 100644 index 00000000..ab1297c7 --- /dev/null +++ b/samples/Grammatical Framework/FoodsIce.gf @@ -0,0 +1,84 @@ +--# -path=.:prelude + +-- (c) 2009 Martha Dis Brandt under LGPL + +concrete FoodsIce of Foods = open Prelude in { + + flags coding=utf8; + + lincat + Comment = SS ; + Quality = {s : Gender => Number => Defin => Str} ; + Kind = {s : Number => Str ; g : Gender} ; + Item = {s : Str ; g : Gender ; n : Number} ; + + lin + Pred item quality = ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n ! Ind) ; + This, That = det Sg "þessi" "þessi" "þetta" ; + These, Those = det Pl "þessir" "þessar" "þessi" ; + Mod quality kind = { s = \\n => quality.s ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ; + Wine = noun "vín" "vín" Neutr ; + Cheese = noun "ostur" "ostar" Masc ; + Fish = noun "fiskur" "fiskar" Masc ; + -- the word "pizza" is more commonly used in Iceland, but "flatbaka" is the Icelandic word for it + Pizza = noun "flatbaka" "flatbökur" Fem ; + Very qual = {s = \\g,n,defOrInd => "mjög" ++ qual.s ! g ! n ! defOrInd } ; + Fresh = regAdj "ferskur" ; + Warm = regAdj "heitur" ; + Boring = regAdj "leiðinlegur" ; + -- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef + Italian = adjective "ítalskur" "ítölsk" "ítalskt" "ítalskir" "ítalskar" "ítölsk" "ítalski" "ítalska" "ítalsku" ; + Expensive = adjective "dýr" "dýr" "dýrt" "dýrir" "dýrar" "dýr" "dýri" "dýra" "dýru" ; + Delicious = adjective "ljúffengur" "ljúffeng" "ljúffengt" "ljúffengir" "ljúffengar" "ljúffeng" "ljúffengi" "ljúffenga" "ljúffengu" ; + + param + Number = Sg | Pl ; + Gender = Masc | Fem | Neutr ; + Defin = Ind | Def ; + + oper + det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} -> + {s : Str ; g : Gender ; n : Number} = + \n,masc,fem,neutr,cn -> { + s = case cn.g of {Masc => masc ; Fem => fem; Neutr => neutr } ++ cn.s ! n ; + g = cn.g ; + n = n + } ; + + noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = + \man,men,g -> { + s = table { + Sg => man ; + Pl => men + } ; + g = g + } ; + + adjective : (x1,_,_,_,_,_,_,_,x9 : Str) -> {s : Gender => Number => Defin => Str} = + \ferskur,fersk,ferskt,ferskir,ferskar,fersk_pl,ferski,ferska,fersku -> { + s = \\g,n,t => case of { + < Masc, Sg, Ind > => ferskur ; + < Masc, Pl, Ind > => ferskir ; + < Fem, Sg, Ind > => fersk ; + < Fem, Pl, Ind > => ferskar ; + < Neutr, Sg, Ind > => ferskt ; + < Neutr, Pl, Ind > => fersk_pl; + < Masc, Sg, Def > => ferski ; + < Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ; + < _ , Pl, Def > => fersku + } + } ; + + regAdj : Str -> {s : Gender => Number => Defin => Str} = \ferskur -> + let fersk = Predef.tk 2 ferskur + in adjective + ferskur fersk (fersk + "t") + (fersk + "ir") (fersk + "ar") fersk + (fersk + "i") (fersk + "a") (fersk + "u") ; + + copula : Number -> Str = + \n -> case n of { + Sg => "er" ; + Pl => "eru" + } ; +} diff --git a/samples/Grammatical Framework/FoodsIta.gf b/samples/Grammatical Framework/FoodsIta.gf new file mode 100644 index 00000000..51baf9d7 --- /dev/null +++ b/samples/Grammatical Framework/FoodsIta.gf @@ -0,0 +1,8 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsIta of Foods = FoodsI with + (Syntax = SyntaxIta), + (LexFoods = LexFoodsIta) ; + diff --git a/samples/Grammatical Framework/FoodsJpn.gf b/samples/Grammatical Framework/FoodsJpn.gf new file mode 100644 index 00000000..9525ff16 --- /dev/null +++ b/samples/Grammatical Framework/FoodsJpn.gf @@ -0,0 +1,72 @@ +--# -path=.:../lib/src/prelude + +-- (c) 2009 Zofia Stankiewicz under LGPL + +concrete FoodsJpn of Foods = open Prelude in { + +flags coding=utf8 ; + + lincat + Comment = {s: Style => Str}; + Quality = {s: AdjUse => Str ; t: AdjType} ; + Kind = {s : Number => Str} ; + Item = {s : Str ; n : Number} ; + + lin + Pred item quality = {s = case quality.t of { + IAdj => table {Plain => item.s ++ quality.s ! APred ; Polite => item.s ++ quality.s ! APred ++ copula ! Polite ! item.n } ; + NaAdj => \\p => item.s ++ quality.s ! APred ++ copula ! p ! item.n } + } ; + This = det Sg "この" ; + That = det Sg "その" ; + These = det Pl "この" ; + Those = det Pl "その" ; + Mod quality kind = {s = \\n => quality.s ! Attr ++ kind.s ! n} ; + Wine = regNoun "ワインは" ; + Cheese = regNoun "チーズは" ; + Fish = regNoun "魚は" ; + Pizza = regNoun "ピザは" ; + Very quality = {s = \\a => "とても" ++ quality.s ! a ; t = quality.t } ; + Fresh = adj "新鮮な" "新鮮"; + Warm = regAdj "あたたかい" ; + Italian = adj "イタリアの" "イタリアのもの"; + Expensive = regAdj "たかい" ; + Delicious = regAdj "おいしい" ; + Boring = regAdj "つまらない" ; + + param + Number = Sg | Pl ; + AdjUse = Attr | APred ; -- na-adjectives have different forms as noun attributes and predicates + Style = Plain | Polite ; -- for phrase types + AdjType = IAdj | NaAdj ; -- IAdj can form predicates without the copula, NaAdj cannot + + oper + det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} = + \n,d,cn -> { + s = d ++ cn.s ! n ; + n = n + } ; + noun : Str -> Str -> {s : Number => Str} = + \sakana,sakana -> {s = \\_ => sakana } ; + + regNoun : Str -> {s : Number => Str} = + \sakana -> noun sakana sakana ; + + adj : Str -> Str -> {s : AdjUse => Str ; t : AdjType} = + \chosenna, chosen -> { + s = table { + Attr => chosenna ; + APred => chosen + } ; + t = NaAdj + } ; + + regAdj : Str -> {s: AdjUse => Str ; t : AdjType} =\akai -> { + s = \\_ => akai ; t = IAdj} ; + + copula : Style => Number => Str = + table { + Plain => \\_ => "だ" ; + Polite => \\_ => "です" } ; + +} diff --git a/samples/Grammatical Framework/FoodsLav.gf b/samples/Grammatical Framework/FoodsLav.gf new file mode 100644 index 00000000..efab6345 --- /dev/null +++ b/samples/Grammatical Framework/FoodsLav.gf @@ -0,0 +1,91 @@ +--# -path=.:prelude + +-- (c) 2009 Inese Bernsone under LGPL + +concrete FoodsLav of Foods = open Prelude in { + + flags + coding=utf8 ; + + lincat + Comment = SS ; + Quality = {s : Q => Gender => Number => Defin => Str } ; + Kind = {s : Number => Str ; g : Gender} ; + Item = {s : Str ; g : Gender ; n : Number } ; + + lin + Pred item quality = ss (item.s ++ {- copula item.n -} "ir" ++ quality.s ! Q1 ! item.g ! item.n ! Ind ) ; + This = det Sg "šis" "šī" ; + That = det Sg "tas" "tā" ; + These = det Pl "šie" "šīs" ; + Those = det Pl "tie" "tās" ; + Mod quality kind = {s = \\n => quality.s ! Q1 ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ; + Wine = noun "vīns" "vīni" Masc ; + Cheese = noun "siers" "sieri" Masc ; + Fish = noun "zivs" "zivis" Fem ; + Pizza = noun "pica" "picas" Fem ; + Very qual = {s = \\q,g,n,spec => "ļoti" ++ qual.s ! Q2 ! g ! n ! spec }; + + Fresh = adjective "svaigs" "svaiga" "svaigi" "svaigas" "svaigais" "svaigā" "svaigie" "svaigās" ; + Warm = regAdj "silts" ; + Italian = specAdj "itāļu" (regAdj "itālisks") ; + Expensive = regAdj "dārgs" ; + Delicious = regAdj "garšīgs" ; + Boring = regAdj "garlaicīgs" ; + + param + Number = Sg | Pl ; + Gender = Masc | Fem ; + Defin = Ind | Def ; + Q = Q1 | Q2 ; + + oper + det : Number -> Str -> Str -> {s : Number => Str ; g : Gender} -> + {s : Str ; g : Gender ; n : Number} = + \n,m,f,cn -> { + s = case cn.g of {Masc => m ; Fem => f} ++ cn.s ! n ; + g = cn.g ; + n = n + } ; + noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = + \man,men,g -> { + s = table { + Sg => man ; + Pl => men + } ; + g = g + } ; + adjective : (_,_,_,_,_,_,_,_ : Str) -> {s : Q => Gender => Number => Defin => Str} = + \skaists,skaista,skaisti,skaistas,skaistais,skaistaa,skaistie,skaistaas -> { + s = table { + _ => table { + Masc => table { + Sg => table {Ind => skaists ; Def => skaistais} ; + Pl => table {Ind => skaisti ; Def => skaistie} + } ; + Fem => table { + Sg => table {Ind => skaista ; Def => skaistaa} ; + Pl => table {Ind => skaistas ; Def => skaistaas} + } + } + } + } ; + + {- irregAdj : Str -> {s : Gender => Number => Defin => Str} = \itaalju -> + let itaalju = itaalju + in adjective itaalju (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) ; -} + + regAdj : Str -> {s : Q => Gender => Number => Defin => Str} = \skaists -> + let skaist = init skaists + in adjective skaists (skaist + "a") (skaist + "i") (skaist + "as") (skaist + "ais") (skaist + "ā") (skaist + "ie") (skaist + "ās"); + + Adjective : Type = {s : Q => Gender => Number => Defin => Str} ; + + specAdj : Str -> Adjective -> Adjective = \s,a -> { + s = table { + Q2 => a.s ! Q1 ; + Q1 => \\_,_,_ => s + } + } ; + + } diff --git a/samples/Grammatical Framework/FoodsMlt.gf b/samples/Grammatical Framework/FoodsMlt.gf new file mode 100644 index 00000000..5fcd4de7 --- /dev/null +++ b/samples/Grammatical Framework/FoodsMlt.gf @@ -0,0 +1,105 @@ +-- (c) 2013 John J. Camilleri under LGPL + +concrete FoodsMlt of Foods = open Prelude in { + flags coding=utf8 ; + + lincat + Comment = SS ; + Quality = {s : Gender => Number => Str} ; + Kind = {s : Number => Str ; g : Gender} ; + Item = {s : Str ; g : Gender ; n : Number} ; + + lin + -- Pred item quality = ss (item.s ++ copula item.n item.g ++ quality.s ! item.g ! item.n) ; + Pred item quality = ss (item.s ++ quality.s ! item.g ! item.n) ; + + This kind = det Sg "dan" "din" kind ; + That kind = det Sg "dak" "dik" kind ; + These kind = det Pl "dawn" "" kind ; + Those kind = det Pl "dawk" "" kind ; + + Mod quality kind = { + s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; + g = kind.g + } ; + + Wine = noun "inbid" "inbejjed" Masc ; + Cheese = noun "ġobon" "ġobniet" Masc ; + Fish = noun "ħuta" "ħut" Fem ; + Pizza = noun "pizza" "pizzez" Fem ; + + Very qual = {s = \\g,n => qual.s ! g ! n ++ "ħafna"} ; + + Warm = adjective "sħun" "sħuna" "sħan" ; + Expensive = adjective "għali" "għalja" "għaljin" ; + Delicious = adjective "tajjeb" "tajba" "tajbin" ; + Boring = uniAdj "tad-dwejjaq" ; + Fresh = regAdj "frisk" ; + Italian = regAdj "Taljan" ; + + param + Number = Sg | Pl ; + Gender = Masc | Fem ; + + oper + --Create an adjective (full function) + --Params: Sing Masc, Sing Fem, Plural + adjective : (_,_,_ : Str) -> {s : Gender => Number => Str} = \iswed,sewda,suwed -> { + s = table { + Masc => table { + Sg => iswed ; + Pl => suwed + } ; + Fem => table { + Sg => sewda ; + Pl => suwed + } + } + } ; + + --Create a regular adjective + --Param: Sing Masc + regAdj : Str -> {s : Gender => Number => Str} = \frisk -> + adjective frisk (frisk + "a") (frisk + "i") ; + + --Create a "uni-adjective" eg tal-buzz + --Param: Sing Masc + uniAdj : Str -> {s : Gender => Number => Str} = \uni -> + adjective uni uni uni ; + + --Create a noun + --Params: Singular, Plural, Gender (inherent) + noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = \ktieb,kotba,g -> { + s = table { + Sg => ktieb ; + Pl => kotba + } ; + g = g + } ; + + --Copula is a linking verb + --Params: Number, Gender + -- copula : Number -> Gender -> Str = \n,g -> case n of { + -- Sg => case g of { Masc => "huwa" ; Fem => "hija" } ; + -- Pl => "huma" + -- } ; + + --Create an article, taking into account first letter of next word + article = pre { + "a"|"e"|"i"|"o"|"u" => "l-" ; + --cons@("ċ"|"d"|"n"|"r"|"s"|"t"|"x"|"ż") => "i" + cons + "-" ; + _ => "il-" + } ; + + --Create a determinant + --Params: Sg/Pl, Masc, Fem + det : Number -> Str -> Str -> {s : Number => Str ; g : Gender} -> {s : Str ; g : Gender ; n : Number} = \n,m,f,cn -> { + s = case n of { + Sg => case cn.g of {Masc => m ; Fem => f}; --string + Pl => m --default to masc + } ++ article ++ cn.s ! n ; + g = cn.g ; --gender + n = n --number + } ; + +} diff --git a/samples/Grammatical Framework/FoodsMon.gf b/samples/Grammatical Framework/FoodsMon.gf new file mode 100644 index 00000000..eda2012f --- /dev/null +++ b/samples/Grammatical Framework/FoodsMon.gf @@ -0,0 +1,49 @@ +--# -path=.:/GF/lib/src/prelude + +-- (c) 2009 Nyamsuren Erdenebadrakh under LGPL + +concrete FoodsMon of Foods = open Prelude in { + flags coding=utf8; + + lincat + Comment, Quality = SS ; + Kind = {s : Number => Str} ; + Item = {s : Str ; n : Number} ; + + lin + Pred item quality = ss (item.s ++ "бол" ++ quality.s) ; + This = det Sg "энэ" ; + That = det Sg "тэр" ; + These = det Pl "эдгээр" ; + Those = det Pl "тэдгээр" ; + Mod quality kind = {s = \\n => quality.s ++ kind.s ! n} ; + Wine = regNoun "дарс" ; + Cheese = regNoun "бяслаг" ; + Fish = regNoun "загас" ; + Pizza = regNoun "пицца" ; + Very = prefixSS "маш" ; + Fresh = ss "шинэ" ; + Warm = ss "халуун" ; + Italian = ss "итали" ; + Expensive = ss "үнэтэй" ; + Delicious = ss "амттай" ; + Boring = ss "амтгүй" ; + + param + Number = Sg | Pl ; + + oper + det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} = + \n,d,cn -> { + s = d ++ cn.s ! n ; + n = n + } ; + + regNoun : Str -> {s : Number => Str} = + \x -> {s = table { + Sg => x ; + Pl => x + "нууд"} + } ; + } + + diff --git a/samples/Grammatical Framework/FoodsNep.gf b/samples/Grammatical Framework/FoodsNep.gf new file mode 100644 index 00000000..ea02e64a --- /dev/null +++ b/samples/Grammatical Framework/FoodsNep.gf @@ -0,0 +1,60 @@ +-- (c) 2011 Dinesh Simkhada under LGPL + +concrete FoodsNep of Foods = { + + flags coding = utf8 ; + + lincat + Comment, Quality = {s : Str} ; + Kind = {s : Number => Str} ; + Item = {s : Str ; n : Number} ; + + lin + Pred item quality = + {s = item.s ++ quality.s ++ copula ! item.n} ; + + This = det Sg "यो" ; + That = det Sg "त्यो" ; + These = det Pl "यी" ; + Those = det Pl "ती" ; + Mod quality kind = + {s = \\n => quality.s ++ kind.s ! n} ; + + Wine = regNoun "रक्सी" ; + Cheese = regNoun "चिज" ; + Fish = regNoun "माछा" ; + Pizza = regNoun "पिज्जा" ; + Very a = {s = "धेरै" ++ a.s} ; + Fresh = adj "ताजा" ; + Warm = adj "तातो" ; + Italian = adj "इटालियन" ; + Expensive = adj "महँगो" | adj "बहुमूल्य" ; + Delicious = adj "स्वादिष्ट" | adj "मीठो" ; + Boring = adjPl "नमिठो" ; + + param + Number = Sg | Pl ; + + oper + det : Number -> Str -> + {s : Number => Str} -> {s : Str ; n : Number} = + \n,det,noun -> {s = det ++ noun.s ! n ; n = n} ; + + noun : Str -> Str -> {s : Number => Str} = + \man,men -> {s = table {Sg => man ; Pl => men}} ; + + regNoun : Str -> {s : Number => Str} = + \car -> noun car (car + "हरु") ; + + adjPl : Str -> {s : Str} = \a -> case a of { + bor + "ठो" => adj (bor + "ठा") ; + _ => adj a + } ; + + adj : Str -> {s : Str} = + \cold -> {s = cold} ; + + copula : Number => Str = + table {Sg => "छ" ; Pl => "छन्"} ; +} + diff --git a/samples/Grammatical Framework/FoodsOri.gf b/samples/Grammatical Framework/FoodsOri.gf new file mode 100644 index 00000000..ad4f492f --- /dev/null +++ b/samples/Grammatical Framework/FoodsOri.gf @@ -0,0 +1,30 @@ +concrete FoodsOri of Foods = { + +flags coding = utf8 ; + +lincat + Comment = Str; + Item = Str; + Kind = Str; + Quality = Str; + +lin + Pred item quality = item ++ quality ++ "ଅଟେ"; + This kind = "ଏଇ" ++ kind; + That kind = "ସେଇ" ++ kind; + These kind = "ଏଇ" ++ kind ++ "ଗୁଡିକ" ; + Those kind = "ସେଇ" ++ kind ++ "ଗୁଡିକ" ; + Mod quality kind = quality ++ kind; + Wine = "ମଦ"; + Cheese = "ଛେନା"; + Fish = "ମାଛ"; + Pizza = "ପିଜଜ଼ା" ; + Very quality = "ଅତି" ++ quality; + Fresh = "ତାଜା"; + Warm = "ଗରମ"; + Italian = "ଇଟାଲି"; + Expensive = "ମୁଲ୍ୟବାନ୍"; + Delicious = "ସ୍ଵାଦିସ୍ଟ "; + Boring = "ଅରୁଚିକର"; + +} diff --git a/samples/Grammatical Framework/FoodsPes.gf b/samples/Grammatical Framework/FoodsPes.gf new file mode 100644 index 00000000..c2e631e8 --- /dev/null +++ b/samples/Grammatical Framework/FoodsPes.gf @@ -0,0 +1,65 @@ +concrete FoodsPes of Foods = { + + flags optimize=noexpand ; coding=utf8 ; + + lincat + Comment = {s : Str} ; + Quality = {s : Add => Str; prep : Str} ; + Kind = {s : Add => Number => Str ; prep : Str}; + Item = {s : Str ; n : Number}; + lin + Pred item quality = {s = item.s ++ quality.s ! Indep ++ copula ! item.n} ; + This = det Sg "این" ; + That = det Sg "آن" ; + These = det Pl "این" ; + Those = det Pl "آن" ; + + Mod quality kind = {s = \\a,n => kind.s ! Attr ! n ++ kind.prep ++ quality.s ! a ; + prep = quality.prep + }; + Wine = regN "شراب" ; + Cheese = regN "پنیر" ; + Fish = regN "ماهى" ; + Pizza = regN "پیتزا" ; + Very a = {s = \\at => "خیلی" ++ a.s ! at ; prep = a.prep} ; + Fresh = adj "تازه" ; + Warm = adj "گرم" ; + Italian = adj "ایتالیایی" ; + Expensive = adj "گران" ; + Delicious = adj "لذىذ" ; + Boring = adj "ملال آور" ; -- it must be written as ملال آور. + + param + Number = Sg | Pl ; + Add = Indep | Attr ; + oper + det : Number -> Str -> {s: Add => Number => Str ; prep : Str} -> {s : Str ; n: Number} = + \n,det,noun -> {s = det ++ noun.s ! Indep ! n ; n = n }; + + noun : (x1,_,_,x4 : Str) -> {s : Add => Number => Str ; prep : Str} = \pytzA, pytzAy, pytzAhA,pr -> + {s = \\a,n => case of + { => pytzA ; => pytzAhA ; + =>pytzA ; => pytzAhA + "ى" }; + prep = pr + }; + + regN : Str -> {s: Add => Number => Str ; prep : Str} = \mrd -> + case mrd of + { _ + ("ا"|"ه"|"ى"|"و"|"") => noun mrd (mrd+"ى") (mrd + "ها") ""; + _ => noun mrd mrd (mrd + "ها") "e" + }; + + adj : Str -> {s : Add => Str; prep : Str} = \tAzh -> + case tAzh of + { _ + ("ا"|"ه"|"ى"|"و"|"") => mkAdj tAzh (tAzh ++ "ى") "" ; + _ => mkAdj tAzh tAzh "ه" + }; + + mkAdj : Str -> Str -> Str -> {s : Add => Str; prep : Str} = \tAzh, tAzhy, pr -> + {s = table {Indep => tAzh; + Attr => tAzhy}; + prep = pr + }; + copula : Number => Str = table {Sg => "است"; Pl => "هستند"}; + +} \ No newline at end of file diff --git a/samples/Grammatical Framework/FoodsPor.gf b/samples/Grammatical Framework/FoodsPor.gf new file mode 100644 index 00000000..6171c707 --- /dev/null +++ b/samples/Grammatical Framework/FoodsPor.gf @@ -0,0 +1,79 @@ +-- (c) 2009 Rami Shashati under LGPL + +concrete FoodsPor of Foods = open Prelude in { + flags coding=utf8; + + lincat + Comment = {s : Str} ; + Quality = {s : Gender => Number => Str} ; + Kind = {s : Number => Str ; g : Gender} ; + Item = {s : Str ; n : Number ; g : Gender } ; + + lin + Pred item quality = + {s = item.s ++ copula ! item.n ++ quality.s ! item.g ! item.n } ; + This = det Sg (table {Masc => "este" ; Fem => "esta"}) ; + That = det Sg (table {Masc => "esse" ; Fem => "essa"}) ; + These = det Pl (table {Masc => "estes" ; Fem => "estas"}) ; + Those = det Pl (table {Masc => "esses" ; Fem => "essas"}) ; + + Mod quality kind = { s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; g = kind.g } ; + + Wine = regNoun "vinho" Masc ; + Cheese = regNoun "queijo" Masc ; + Fish = regNoun "peixe" Masc ; + Pizza = regNoun "pizza" Fem ; + + Very a = { s = \\g,n => "muito" ++ a.s ! g ! n } ; + + Fresh = mkAdjReg "fresco" ; + Warm = mkAdjReg "quente" ; + Italian = mkAdjReg "Italiano" ; + Expensive = mkAdjReg "caro" ; + Delicious = mkAdjReg "delicioso" ; + Boring = mkAdjReg "chato" ; + + param + Number = Sg | Pl ; + Gender = Masc | Fem ; + + oper + QualityT : Type = {s : Gender => Number => Str} ; + + mkAdj : (_,_,_,_ : Str) -> QualityT = \bonito,bonita,bonitos,bonitas -> { + s = table { + Masc => table { Sg => bonito ; Pl => bonitos } ; + Fem => table { Sg => bonita ; Pl => bonitas } + } ; + } ; + + -- regular pattern + adjSozinho : Str -> QualityT = \sozinho -> + let sozinh = Predef.tk 1 sozinho + in mkAdj sozinho (sozinh + "a") (sozinh + "os") (sozinh + "as") ; + + -- for gender-independent adjectives + adjUtil : Str -> Str -> QualityT = \util,uteis -> + mkAdj util util uteis uteis ; + + -- smart paradigm for adjcetives + mkAdjReg : Str -> QualityT = \a -> case last a of { + "o" => adjSozinho a ; + "e" => adjUtil a (a + "s") + } ; + + ItemT : Type = {s : Str ; n : Number ; g : Gender } ; + + det : Number -> (Gender => Str) -> KindT -> ItemT = + \num,det,noun -> {s = det ! noun.g ++ noun.s ! num ; n = num ; g = noun.g } ; + + KindT : Type = {s : Number => Str ; g : Gender} ; + + noun : Str -> Str -> Gender -> KindT = + \animal,animais,gen -> {s = table {Sg => animal ; Pl => animais} ; g = gen } ; + + regNoun : Str -> Gender -> KindT = + \carro,gen -> noun carro (carro + "s") gen ; + + copula : Number => Str = table {Sg => "é" ; Pl => "são"} ; +} diff --git a/samples/Grammatical Framework/FoodsRon.gf b/samples/Grammatical Framework/FoodsRon.gf new file mode 100644 index 00000000..d7d917ff --- /dev/null +++ b/samples/Grammatical Framework/FoodsRon.gf @@ -0,0 +1,72 @@ +-- (c) 2009 Ramona Enache under LGPL + +concrete FoodsRon of Foods = +{ +flags coding=utf8 ; + +param Number = Sg | Pl ; + Gender = Masc | Fem ; + NGender = NMasc | NFem | NNeut ; +lincat +Comment = {s : Str}; +Quality = {s : Number => Gender => Str}; +Kind = {s : Number => Str; g : NGender}; +Item = {s : Str ; n : Number; g : Gender}; + +lin + +This = det Sg (mkTab "acest" "această"); +That = det Sg (mkTab "acel" "acea"); +These = det Pl (mkTab "acești" "aceste"); +Those = det Pl (mkTab "acei" "acele"); + +Wine = mkNoun "vin" "vinuri" NNeut ; +Cheese = mkNoun "brânză" "brânzeturi" NFem ; +Fish = mkNoun "peşte" "peşti" NMasc ; +Pizza = mkNoun "pizza" "pizze" NFem; + +Very a = {s = \\n,g => "foarte" ++ a.s ! n ! g}; + +Fresh = mkAdj "proaspăt" "proaspătă" "proaspeţi" "proaspete" ; +Warm = mkAdj "cald" "caldă" "calzi" "calde" ; +Italian = mkAdj "italian" "italiană" "italieni" "italiene" ; +Expensive = mkAdj "scump" "scumpă" "scumpi" "scumpe" ; +Delicious = mkAdj "delicios" "delcioasă" "delicioşi" "delicioase" ; +Boring = mkAdj "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ; + +Pred item quality = {s = item.s ++ copula ! item.n ++ quality.s ! item.n ! item.g} ; + +Mod quality kind = {s = \\n => kind.s ! n ++ quality.s ! n ! (getAgrGender kind.g n) ; g = kind.g}; + +oper + +mkTab : Str -> Str -> {s : Gender => Str} = \acesta, aceasta -> +{s = table{Masc => acesta; + Fem => aceasta}}; + +det : Number -> {s : Gender => Str} -> {s : Number => Str ; g : NGender} -> {s : Str; n : Number; g : Gender} = +\n,det,noun -> let gg = getAgrGender noun.g n + in + {s = det.s ! gg ++ noun.s ! n ; n = n ; g = gg}; + +mkNoun : Str -> Str -> NGender -> {s : Number => Str; g : NGender} = \peste, pesti,g -> +{s = table {Sg => peste; + Pl => pesti}; + g = g +}; + +oper mkAdj : (x1,_,_,x4 : Str) -> {s : Number => Gender => Str} = \scump, scumpa, scumpi, scumpe -> +{s = \\n,g => case of +{ => scump ; => scumpa; + => scumpi ; => scumpe +}}; + +copula : Number => Str = table {Sg => "este" ; Pl => "sunt"}; + +getAgrGender : NGender -> Number -> Gender = \ng,n -> +case of +{ => Masc ; => Fem; + => Masc ; => Fem +}; + +} diff --git a/samples/Grammatical Framework/FoodsSpa.gf b/samples/Grammatical Framework/FoodsSpa.gf new file mode 100644 index 00000000..972282ae --- /dev/null +++ b/samples/Grammatical Framework/FoodsSpa.gf @@ -0,0 +1,31 @@ +--# -path=.:present + +concrete FoodsSpa of Foods = open SyntaxSpa, StructuralSpa, ParadigmsSpa in { + + lincat + Comment = Utt ; + Item = NP ; + Kind = CN ; + Quality = AP ; + + lin + Pred item quality = mkUtt (mkCl item quality) ; + This kind = mkNP this_QuantSg kind ; + That kind = mkNP that_QuantSg kind ; + These kind = mkNP these_QuantPl kind ; + Those kind = mkNP those_QuantPl kind ; + Mod quality kind = mkCN quality kind ; + Very quality = mkAP very_AdA quality ; + Wine = mkCN (mkN "vino") ; + Pizza = mkCN (mkN "pizza") ; + Cheese = mkCN (mkN "queso") ; + Fish = mkCN (mkN "pescado") ; + Fresh = mkAP (mkA "fresco") ; + Warm = mkAP (mkA "caliente") ; + Italian = mkAP (mkA "italiano") ; + Expensive = mkAP (mkA "caro") ; + Delicious = mkAP (mkA "delicioso") ; + Boring = mkAP (mkA "aburrido") ; + +} + diff --git a/samples/Grammatical Framework/FoodsSwe.gf b/samples/Grammatical Framework/FoodsSwe.gf new file mode 100644 index 00000000..cbb35fb9 --- /dev/null +++ b/samples/Grammatical Framework/FoodsSwe.gf @@ -0,0 +1,7 @@ +--# -path=.:present + +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsSwe of Foods = FoodsI with + (Syntax = SyntaxSwe), + (LexFoods = LexFoodsSwe) ** {flags language = sv_SE;} ; diff --git a/samples/Grammatical Framework/FoodsTha.gf b/samples/Grammatical Framework/FoodsTha.gf new file mode 100644 index 00000000..b031a7e2 --- /dev/null +++ b/samples/Grammatical Framework/FoodsTha.gf @@ -0,0 +1,33 @@ +--# -path=.:alltenses + +concrete FoodsTha of Foods = open SyntaxTha, LexiconTha, + ParadigmsTha, (R=ResTha) in { + + flags coding = utf8 ; + + lincat + Comment = Utt ; + Item = NP ; + Kind = CN ; + Quality = AP ; + + lin + Pred item quality = mkUtt (mkCl item quality) ; + This kind = mkNP this_Det kind ; + That kind = mkNP that_Det kind ; + These kind = mkNP these_Det kind ; + Those kind = mkNP those_Det kind ; + Mod quality kind = mkCN quality kind ; + Very quality = mkAP very_AdA quality ; + Wine = mkCN (mkN (R.thword "เหล้าอ" "งุ่น") "ขวด") ; + Pizza = mkCN (mkN (R.thword "พิซ" "ซา") "ถาด") ; + Cheese = mkCN (mkN (R.thword "เนย" "แข็ง") "ก้อน") ; + Fish = mkCN fish_N ; + Fresh = mkAP (mkA "สด") ; + Warm = mkAP warm_A ; + Italian = mkAP (mkA " อิตาลี") ; + Expensive = mkAP (mkA "แพง") ; + Delicious = mkAP (mkA "อร่อย") ; + Boring = mkAP (mkA (R.thword "น่า" "เบิ่อ")) ; + +} diff --git a/samples/Grammatical Framework/FoodsTsn.gf b/samples/Grammatical Framework/FoodsTsn.gf new file mode 100644 index 00000000..a7a69a1a --- /dev/null +++ b/samples/Grammatical Framework/FoodsTsn.gf @@ -0,0 +1,178 @@ +--# -path=alltenses + +-- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL + +concrete FoodsTsn of Foods = open Prelude, Predef in { + flags coding = utf8; + lincat + Comment = {s:Str}; + Item = {s:Str; c:NounClass; n:Number}; + Kind = {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool}; + Quality = {s: NounClass => Number => Str; p_form: Str; t: TType}; + lin + Pred item quality = {s = item.s ++ ((mkPredDescrCop quality.t) ! item.c ! item.n) ++ quality.p_form}; + + This kind = {s = (kind.w ! Sg) ++ (mkDemPron1 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg}; + That kind = {s = (kind.w ! Sg) ++ (mkDemPron2 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg}; + These kind = {s = (kind.w ! Pl) ++ (mkDemPron1 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl}; + Those kind = {s = (kind.w ! Pl) ++ (mkDemPron2 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl}; + + Mod quality kind = mkMod quality kind; + + -- Lexicon + Wine = mkNounNC14_6 "jalwa"; + Cheese = mkNounNC9_10 "kase"; + Fish = mkNounNC9_10 "thlapi"; + Pizza = mkNounNC9_10 "pizza"; + Very quality = smartVery quality; + Fresh = mkVarAdj "ntsha"; + Warm = mkOrdAdj "bothitho"; + Italian = mkPerAdj "Itali"; + Expensive = mkVerbRel "tura"; + Delicious = mkOrdAdj "monate"; + Boring = mkOrdAdj "bosula"; + + param + NounClass = NC9_10 | NC14_6; + Number = Sg | Pl; + TType = P | V | ModV | R ; + oper + mkMod : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; + b: Bool} = \x,y -> case y.b of + { + True => {w = y.w; r = y.r; c = y.c; + q = table { + Sg => ((y.q ! Sg) ++ "le" ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) ++ (x.s ! y.c ! Sg)); + Pl => ((y.q ! Pl) ++ "le" ++ ((smartQualRelPart (x.t))! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) ++(x.s ! y.c ! Pl)) + }; b = True + }; + False => {w = y.w; r = y.r; c = y.c; + q = table { + Sg => ((y.q ! Sg) ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) ++ (x.s ! y.c ! Sg)); + Pl => ((y.q ! Pl) ++ ((smartQualRelPart (x.t)) ! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) ++(x.s ! y.c ! Pl)) + }; b = True + } + }; + + mkNounNC14_6 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "bo" + x; Pl => "ma" + x}; r = x; c = NC14_6; + q = table {Sg => ""; Pl => ""}; b = False}; + + mkNounNC9_10 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "" + x; Pl => "di" + x}; r = x; c = NC9_10; + q = table {Sg => ""; Pl => ""}; b = False}; + + mkVarAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> + { + s = table { + NC9_10 => table {Sg => "" + x; Pl => "di" + x}; + NC14_6 => table {Sg => "bo" + x; Pl => "ma" + x} + }; + p_form = x; + t = R; + }; + + mkOrdAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> + { + s = table { + NC9_10 => table {Sg => "" + x; Pl => "" + x}; + NC14_6 => table {Sg => "" + x; Pl => "" + x} + }; + p_form = x; + t = R; + }; + + mkVerbRel : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> + { + s = table { + NC9_10 => table {Sg => x + "ng"; Pl => x + "ng"}; + NC14_6 => table {Sg => x + "ng"; Pl => x + "ng"} + }; + p_form = x; + t = V; + }; + + mkPerAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> + { + s = table { + NC9_10 => table {Sg => "" + x; Pl => "" + x}; + NC14_6 => table {Sg => "" + x; Pl => "" + x} + }; + p_form = "mo" ++ x; + t = P; + }; + + mkVeryAdj : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> + { + s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = x.t + }; + + mkVeryVerb : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x -> + { + s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = ModV + }; + + smartVery : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = +\x -> case x.t of --(x.s!c!n) + { + (V | ModV) => mkVeryVerb x; + --ModV => mkVeryVerb x; + _ => mkVeryAdj x + }; + + mkDemPron1 : NounClass => Number => Str = table + { + NC9_10 => table {Sg => "e"; Pl => "tse"}; + NC14_6 => table {Sg => "bo"; Pl => "a"} + }; + + mkDemPron2 : NounClass => Number => Str = table + { + NC9_10 => table {Sg => "eo"; Pl => "tseo"}; + NC14_6 => table {Sg => "boo"; Pl => "ao"} + }; + + smartQualRelPart : TType -> (NounClass => Number => Str) = \x -> case x of + { + P => mkQualRelPart_PName; + _ => mkQualRelPart + }; + + mkQualRelPart : NounClass => Number => Str = table + { + NC9_10 => table {Sg => "e"; Pl => "tse"}; + NC14_6 => table {Sg => "bo"; Pl => "a"} + }; + + mkQualRelPart_PName : NounClass => Number => Str = table + { + NC9_10 => table {Sg => "ya"; Pl => "tsa"}; + NC14_6 => table {Sg => "ba"; Pl => "a"} + }; + + smartDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of + { + P => mkDescrCop_PName; + _ => mkDescrCop + }; + + mkDescrCop : NounClass => Number => Str = table + { + NC9_10 => table {Sg => "e"; Pl => "di"}; + NC14_6 => table {Sg => "bo"; Pl => "a"} + }; + + mkDescrCop_PName : NounClass => Number => Str = table + { + NC9_10 => table {Sg => "ga"; Pl => "ga"}; + NC14_6 => table {Sg => "ga"; Pl => "ga"} + }; + + mkPredDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of + { + V => table {NC9_10 => table {Sg => "e" ++ "a"; Pl => "di" ++ "a"}; + NC14_6 => table {Sg => "bo" ++ "a"; Pl => "a" ++ "a"}}; + + _ => table {NC9_10 => table {Sg => "e"; Pl => "di"}; + NC14_6 => table {Sg => "bo"; Pl => "a"}} + }; + +} diff --git a/samples/Grammatical Framework/FoodsTur.gf b/samples/Grammatical Framework/FoodsTur.gf new file mode 100644 index 00000000..9d6cd035 --- /dev/null +++ b/samples/Grammatical Framework/FoodsTur.gf @@ -0,0 +1,140 @@ +{- + File : FoodsTur.gf + Author : Server Çimen + Version : 1.0 + Created on: August 26, 2009 + + This file contains concrete grammar of Foods abstract grammar for Turkish Language. + This grammar is to be used for Fridge demo and developed in the scope of GF Resource + Grammar Summer School. + +-} + +concrete FoodsTur of Foods = open Predef in { + flags + coding=utf8 ; + lincat + Comment = {s : Str} ; + Quality = {s : Str ; c : Case; softness : Softness; h : Harmony} ; + Kind = {s : Case => Number => Str} ; + Item = {s : Str; n : Number} ; + lin + This = det Sg "bu" ; + That = det Sg "şu" ; + These = det Pl "bu" ; + Those = det Pl "şu" ; + -- Reason for excluding plural form of copula: In Turkish if subject is not a human being, + -- then singular form of copula is used regardless of the number of subject. Since all + -- possible subjects are non human, copula do not need to have plural form. + Pred item quality = {s = item.s ++ quality.s ++ "&+" ++ copula ! quality.softness ! quality.h} ;--! item.n} ; + Mod quality kind = {s = case quality.c of { + Nom => \\t,n => quality.s ++ kind.s ! t ! n ; + Gen => \\t,n => quality.s ++ kind.s ! Gen ! n + } + } ; + Wine = mkN "şarap" "şaraplar" "şarabı" "şarapları" ; + Cheese = mkN "peynir" "peynirler" "peyniri" "peynirleri" ; + Fish = mkN "balık" "balıklar" "balığı" "balıkları" ; + Pizza = mkN "pizza" "pizzalar" "pizzası" "pizzaları" ; + Very a = {s = "çok" ++ a.s ; c = a.c; softness = a.softness; h = a.h} ; + Fresh = adj "taze" Nom; + Warm = adj "ılık" Nom; + Italian = adj "İtalyan" Gen ; + Expensive = adj "pahalı" Nom; + Delicious = adj "lezzetli" Nom; + Boring = adj "sıkıcı" Nom; + param + Number = Sg | Pl ; + Case = Nom | Gen ; + Harmony = I_Har | Ih_Har | U_Har | Uh_Har ; --Ih = İ; Uh = Ü + Softness = Soft | Hard ; + oper + det : Number -> Str -> {s : Case => Number => Str} -> {s : Str; n : Number} = + \num,det,noun -> {s = det ++ noun.s ! Nom ! num; n = num} ; + mkN = overload { + mkN : Str -> Str -> {s : Case => Number => Str} = regNoun ; + mkn : Str -> Str -> Str -> Str-> {s : Case => Number => Str} = noun ; + } ; + regNoun : Str -> Str -> {s : Case => Number => Str} = + \peynir,peynirler -> noun peynir peynirler [] [] ; + noun : Str -> Str -> Str -> Str-> {s : Case => Number => Str} = + \sarap,saraplar,sarabi,saraplari -> { + s = table { + Nom => table { + Sg => sarap ; + Pl => saraplar + } ; + Gen => table { + Sg => sarabi ; + Pl => saraplari + } + } + }; + {- + Since there is a bug in overloading, this overload is useless. + + mkA = overload { + mkA : Str -> {s : Str; c : Case; softness : Softness; h : Harmony} = \base -> adj base Nom ; + mkA : Str -> Case -> {s : Str; c : Case; softness : Softness; h : Harmony} = adj ; + } ; + -} + adj : Str -> Case -> {s : Str; c : Case; softness : Softness; h : Harmony} = + \italyan,ca -> {s = italyan ; c = ca; softness = (getSoftness italyan); h = (getHarmony italyan)} ; + -- See the comment at lines 26 and 27 for excluded plural form of copula. + copula : Softness => Harmony {-=> Number-} => Str = + table { + Soft => table { + I_Har => "dır" ;--table { + -- Sg => "dır" ; + -- Pl => "dırlar" + --} ; + Ih_Har => "dir" ;--table { + --Sg => "dir" ; + --Pl => "dirler" + --} ; + U_Har => "dur" ;--table { + -- Sg => "dur" ; + -- Pl => "durlar" + --} ; + Uh_Har => "dür" --table { + --Sg => "dür" ; + --Pl => "dürler" + --} + } ; + Hard => table { + I_Har => "tır" ;--table { + --Sg => "tır" ; + --Pl => "tırlar" + --} ; + Ih_Har => "tir" ;--table { + --Sg => "tir" ; + --Pl => "tirler" + --} ; + U_Har => "tur" ;--table { + -- Sg => "tur" ; + -- Pl => "turlar" + --} ; + Uh_Har => "tür"--table { + --Sg => "tür" ; + --Pl => "türler" + --} + } + } ; + + getHarmony : Str -> Harmony + = \base -> case base of { + _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+ + ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* => + case c of { + ("ı"|"a") => I_Har ; + ("i"|"e") => Ih_Har ; + ("u"|"o") => U_Har ; + ("ü"|"ö") => Uh_Har + } + } ; + getSoftness : Str -> Softness + = \base -> case base of { + _+("f"|"s"|"t"|"k"|"ç"|"ş"|"h"|"p") => Hard ; + _ => Soft + } ; +} \ No newline at end of file diff --git a/samples/Grammatical Framework/FoodsUrd.gf b/samples/Grammatical Framework/FoodsUrd.gf new file mode 100644 index 00000000..186b2f92 --- /dev/null +++ b/samples/Grammatical Framework/FoodsUrd.gf @@ -0,0 +1,53 @@ +-- (c) 2009 Shafqat Virk under LGPL + +concrete FoodsUrd of Foods = { + + flags coding=utf8 ; + + + param Number = Sg | Pl ; + param Gender = Masc | Fem; + + oper coupla : Number -> Str =\n -> case n of {Sg => "ہے" ; Pl => "ہیں"}; + + + lincat + Comment = {s : Str} ; + Item = {s: Str ; n: Number ; g:Gender}; + Kind = {s: Number => Str ; g:Gender}; + Quality = {s: Gender => Number => Str}; + + lin + Pred item quality = {s = item.s ++ quality.s ! item.g ! item.n ++ coupla item.n} ; + This kind = {s = "یھ" ++ kind.s ! Sg; n= Sg ; g = kind.g } ; + These kind = {s = "یھ" ++ kind.s ! Pl; n = Pl ; g = kind.g} ; + That kind = {s = "وہ" ++ kind.s ! Sg; n= Sg ; g = kind.g} ; + Those kind = {s = "وہ" ++ kind.s ! Pl; n=Pl ; g = kind.g} ; + Mod quality kind = {s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; g = kind.g}; + Wine = {s = table { Sg => "شراب" ; Pl => "شرابیں"} ; g = Fem}; + Cheese = {s = table { Sg => "پنیر" ; Pl => "پنیریں"} ; g = Fem}; + Fish = {s = table { Sg => "مچھلی" ; Pl => "مچھلیاں"} ; g = Fem}; + Pizza = {s = table { Sg => "پیزہ" ; Pl => "پیزے"} ; g = Masc}; + Very quality = {s = \\g,n => "بہت" ++ quality.s ! g ! n} ; + Fresh = regAdj "تازہ" ; + Warm = regAdj "گرم" ; + Italian = regAdj "اٹا لوی" ; + Expensive = regAdj "مہنگا" ; + Delicious = regAdj "مزیدار" ; + Boring = regAdj "فضول" ; + + oper + regAdj : Str -> {s: Gender => Number => Str} = \a -> case a of { + x + "ا" => mkAdj a (x+"ے") (x+"ی"); + _ => mkAdj a a a + }; + mkAdj : Str -> Str -> Str -> {s: Gender => Number => Str} = \s,p,f -> { + s = table { + Masc => table { + Sg => s; + Pl => p + }; + Fem => \\_ => f + } + }; + } \ No newline at end of file diff --git a/samples/Grammatical Framework/LexFoods.gf b/samples/Grammatical Framework/LexFoods.gf new file mode 100644 index 00000000..12ace208 --- /dev/null +++ b/samples/Grammatical Framework/LexFoods.gf @@ -0,0 +1,15 @@ +-- (c) 2009 Aarne Ranta under LGPL + +interface LexFoods = open Syntax in { + oper + wine_N : N ; + pizza_N : N ; + cheese_N : N ; + fish_N : N ; + fresh_A : A ; + warm_A : A ; + italian_A : A ; + expensive_A : A ; + delicious_A : A ; + boring_A : A ; +} diff --git a/samples/Grammatical Framework/LexFoodsCat.gf b/samples/Grammatical Framework/LexFoodsCat.gf new file mode 100644 index 00000000..624fc98c --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsCat.gf @@ -0,0 +1,18 @@ +-- (c) 2009 Jordi Saludes under LGPL + +instance LexFoodsCat of LexFoods = + open SyntaxCat, ParadigmsCat, (M = MorphoCat) in { + flags + coding = utf8 ; + oper + wine_N = mkN "vi" "vins" M.Masc ; + pizza_N = mkN "pizza" ; + cheese_N = mkN "formatge" ; + fish_N = mkN "peix" "peixos" M.Masc; + fresh_A = mkA "fresc" "fresca" "frescos" "fresques" "frescament"; + warm_A = mkA "calent" ; + italian_A = mkA "italià" "italiana" "italians" "italianes" "italianament" ; + expensive_A = mkA "car" ; + delicious_A = mkA "deliciós" "deliciosa" "deliciosos" "delicioses" "deliciosament"; + boring_A = mkA "aburrit" "aburrida" "aburrits" "aburrides" "aburridament" ; +} diff --git a/samples/Grammatical Framework/LexFoodsFin.gf b/samples/Grammatical Framework/LexFoodsFin.gf new file mode 100644 index 00000000..dbf8af6b --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsFin.gf @@ -0,0 +1,21 @@ +-- (c) 2009 Aarne Ranta under LGPL + +instance LexFoodsFin of LexFoods = + open SyntaxFin, ParadigmsFin in { + flags coding=utf8; + oper + wine_N = mkN "viini" ; + pizza_N = mkN "pizza" ; + cheese_N = mkN "juusto" ; + fish_N = mkN "kala" ; + fresh_A = mkA "tuore" ; + warm_A = mkA + (mkN "lämmin" "lämpimän" "lämmintä" "lämpimänä" "lämpimään" + "lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin" + ) + "lämpimämpi" "lämpimin" ; + italian_A = mkA "italialainen" ; + expensive_A = mkA "kallis" ; + delicious_A = mkA "herkullinen" ; + boring_A = mkA "tylsä" ; +} diff --git a/samples/Grammatical Framework/LexFoodsGer.gf b/samples/Grammatical Framework/LexFoodsGer.gf new file mode 100644 index 00000000..253384f2 --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsGer.gf @@ -0,0 +1,17 @@ +-- (c) 2009 Aarne Ranta under LGPL + +instance LexFoodsGer of LexFoods = + open SyntaxGer, ParadigmsGer in { + flags coding=utf8; + oper + wine_N = mkN "Wein" ; + pizza_N = mkN "Pizza" "Pizzen" feminine ; + cheese_N = mkN "Käse" "Käse" masculine ; + fish_N = mkN "Fisch" ; + fresh_A = mkA "frisch" ; + warm_A = mkA "warm" "wärmer" "wärmste" ; + italian_A = mkA "italienisch" ; + expensive_A = mkA "teuer" ; + delicious_A = mkA "köstlich" ; + boring_A = mkA "langweilig" ; +} diff --git a/samples/Grammatical Framework/LexFoodsIta.gf b/samples/Grammatical Framework/LexFoodsIta.gf new file mode 100644 index 00000000..11de5fcd --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsIta.gf @@ -0,0 +1,16 @@ +-- (c) 2009 Aarne Ranta under LGPL + +instance LexFoodsIta of LexFoods = + open SyntaxIta, ParadigmsIta in { + oper + wine_N = mkN "vino" ; + pizza_N = mkN "pizza" ; + cheese_N = mkN "formaggio" ; + fish_N = mkN "pesce" ; + fresh_A = mkA "fresco" ; + warm_A = mkA "caldo" ; + italian_A = mkA "italiano" ; + expensive_A = mkA "caro" ; + delicious_A = mkA "delizioso" ; + boring_A = mkA "noioso" ; +} diff --git a/samples/Grammatical Framework/LexFoodsSwe.gf b/samples/Grammatical Framework/LexFoodsSwe.gf new file mode 100644 index 00000000..f9f02c33 --- /dev/null +++ b/samples/Grammatical Framework/LexFoodsSwe.gf @@ -0,0 +1,17 @@ +-- (c) 2009 Aarne Ranta under LGPL + +instance LexFoodsSwe of LexFoods = + open SyntaxSwe, ParadigmsSwe in { + flags coding=utf8; + oper + wine_N = mkN "vin" "vinet" "viner" "vinerna" ; + pizza_N = mkN "pizza" ; + cheese_N = mkN "ost" ; + fish_N = mkN "fisk" ; + fresh_A = mkA "färsk" ; + warm_A = mkA "varm" ; + italian_A = mkA "italiensk" ; + expensive_A = mkA "dyr" ; + delicious_A = mkA "läcker" ; + boring_A = mkA "tråkig" ; +} diff --git a/samples/Grammatical Framework/ResCze.gf b/samples/Grammatical Framework/ResCze.gf new file mode 100644 index 00000000..56b4aa6e --- /dev/null +++ b/samples/Grammatical Framework/ResCze.gf @@ -0,0 +1,46 @@ +-- (c) 2011 Katerina Bohmova under LGPL + +resource ResCze = open Prelude in { + flags + coding = utf8 ; + param + Number = Sg | Pl ; + Gender = Masc | Fem | Neutr; + oper + NounPhrase : Type = + {s : Str ; g : Gender ; n : Number} ; + Noun : Type = {s : Number => Str ; g : Gender} ; + Adjective : Type = {s : Gender => Number => Str} ; + + det : Number -> Str -> Str -> Str -> Noun -> NounPhrase = + \n,m,f,ne,cn -> { + s = table {Masc => m ; Fem => f; Neutr => ne} ! cn.g ++ + cn.s ! n ; + g = cn.g ; + n = n + } ; + noun : Str -> Str -> Gender -> Noun = + \muz,muzi,g -> { + s = table {Sg => muz ; Pl => muzi} ; + g = g + } ; + adjective : (msg,fsg,nsg,mpl,fpl,npl : Str) -> Adjective = + \msg,fsg,nsg,mpl,fpl,npl -> { + s = table { + Masc => table {Sg => msg ; Pl => mpl} ; + Fem => table {Sg => fsg ; Pl => fpl} ; + Neutr => table {Sg => nsg ; Pl => npl} + } + } ; + regAdj : Str -> Adjective = + \mlad -> + adjective (mlad+"ý") (mlad+"á") (mlad+"é") + (mlad+"é") (mlad+"é") (mlad+"á") ; + regnfAdj : Str -> Adjective = + \vynikajici -> + adjective vynikajici vynikajici vynikajici + vynikajici vynikajici vynikajici; + copula : Number => Str = + table {Sg => "je" ; Pl => "jsou"} ; +} + diff --git a/samples/Grammatical Framework/transFoodsHin.gf b/samples/Grammatical Framework/transFoodsHin.gf new file mode 100644 index 00000000..21d1d2ac --- /dev/null +++ b/samples/Grammatical Framework/transFoodsHin.gf @@ -0,0 +1,75 @@ +-- (c) 2009 Aarne Ranta under LGPL + +concrete FoodsHin of Foods = { + + flags coding=utf8 ; + + param + Gender = Masc | Fem ; + Number = Sg | Pl ; + lincat + Comment = {s : Str} ; + Item = {s : Str ; g : Gender ; n : Number} ; + Kind = {s : Number => Str ; g : Gender} ; + Quality = {s : Gender => Number => Str} ; + lin + Pred item quality = { + s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n + } ; + This kind = {s = "yah" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; + That kind = {s = "vah" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ; + These kind = {s = "ye" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; + Those kind = {s = "ve" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ; + Mod quality kind = { + s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; + g = kind.g + } ; + Wine = regN "madirA" ; + Cheese = regN "panIr" ; + Fish = regN "maClI" ; + Pizza = regN "pijjA" ; + Very quality = {s = \\g,n => "bahut" ++ quality.s ! g ! n} ; + Fresh = regAdj "tAzA" ; + Warm = regAdj "garam" ; + Italian = regAdj "i-t.alI" ; + Expensive = regAdj "mahaNgA" ; + Delicious = regAdj "rucikar" ; + Boring = regAdj "pEriyA" ; + + oper + mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = + \s,p,g -> { + s = table { + Sg => s ; + Pl => p + } ; + g = g + } ; + + regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of { + lark + "A" => mkN s (lark + "e") Masc ; + lark + "I" => mkN s (lark + "iyaM") Fem ; + _ => mkN s s Masc + } ; + + mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> { + s = table { + Masc => table { + Sg => ms ; + Pl => mp + } ; + Fem => \\_ => f + } + } ; + + regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of { + acch + "A" => mkAdj a (acch + "e") (acch + "I") ; + _ => mkAdj a a a + } ; + + copula : Number -> Str = \n -> case n of { + Sg => "hE" ; + Pl => "hEN" + } ; + + } diff --git a/samples/Groff/sample.4 b/samples/Groff/sample.4 new file mode 100644 index 00000000..061dfc2e --- /dev/null +++ b/samples/Groff/sample.4 @@ -0,0 +1,13 @@ +.TH FOO 1 +.SH NAME +foo \- bar +.SH SYNOPSIS +.B foo +.I bar +.SH DESCRIPTION +Foo bar +.BR baz +quux. +.PP +.B Foo +bar baz. diff --git a/samples/Groovy/build.gradle b/samples/Groovy/build.script! similarity index 100% rename from samples/Groovy/build.gradle rename to samples/Groovy/build.script! diff --git a/samples/Groovy/script.gvy b/samples/Groovy/script.gvy new file mode 100644 index 00000000..25ef2eab --- /dev/null +++ b/samples/Groovy/script.gvy @@ -0,0 +1,2 @@ +#!/usr/bin/env groovy +println "Hello World" diff --git a/samples/Groovy/template.grt b/samples/Groovy/template.grt new file mode 100644 index 00000000..59bb9c22 --- /dev/null +++ b/samples/Groovy/template.grt @@ -0,0 +1,9 @@ +html { + head { + component "bootstrap" + title "Bootstrap Template" + } + + html { + } +} diff --git a/samples/Groovy/template.gtpl b/samples/Groovy/template.gtpl new file mode 100644 index 00000000..f2e594d1 --- /dev/null +++ b/samples/Groovy/template.gtpl @@ -0,0 +1,9 @@ +html { + head { + title "Example Template" + } + + body { + p "This is a quick template example" + } +} diff --git a/samples/HTML+ERB/fishbowl.html.erb.deface b/samples/HTML+ERB/fishbowl.html.erb.deface new file mode 100644 index 00000000..43d60cec --- /dev/null +++ b/samples/HTML+ERB/fishbowl.html.erb.deface @@ -0,0 +1,31 @@ + +<% if Spree::Config[:enable_fishbowl] %> +

+ + +<% end %> \ No newline at end of file diff --git a/samples/HTML+ERB/index.html.erb b/samples/HTML+ERB/index.html.erb new file mode 100644 index 00000000..f8888a4b --- /dev/null +++ b/samples/HTML+ERB/index.html.erb @@ -0,0 +1,39 @@ +<% provide(:title, @header) %> +<% present @users do |user_presenter| %> +
+

<%= @header %>

+
+ +
+
+ <%= will_paginate %> +
+
+
+
+
+
Name
+
Email
+
Chords
+
Keys
+
Tunings
+
Credits
+
Prem?
+
Since?
+
+ + <% if @users == [] %> +
+
No Users
+
+ <% else %> + <%= render @users %> + <% end %> +
+
+
+
+ <%= will_paginate %> +
+
+<% end %> \ No newline at end of file diff --git a/samples/HTML/ApiOverviewPage.st b/samples/HTML/ApiOverviewPage.st new file mode 100644 index 00000000..4faa1935 --- /dev/null +++ b/samples/HTML/ApiOverviewPage.st @@ -0,0 +1,60 @@ + + + +$Common_meta()$ + +Android API Differences Report + + +
+ + + + + + + diff --git a/samples/HTML/pages.html b/samples/HTML/pages.html new file mode 100644 index 00000000..e068e4fa --- /dev/null +++ b/samples/HTML/pages.html @@ -0,0 +1,31 @@ + + + + +Related Pages + + + + + + +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+
+ + + diff --git a/samples/Haml/buttons.html.haml.deface b/samples/Haml/buttons.html.haml.deface new file mode 100644 index 00000000..f338721a --- /dev/null +++ b/samples/Haml/buttons.html.haml.deface @@ -0,0 +1,29 @@ +/ + replace '.actions' + +.pull-right + .btn-group + = link_to page.url, target: "_blank", title: t('.view_live_html'), class: "tip btn btn-xs btn-default" do + %i.icon-picture.row-black + + = link_to refinery.edit_admin_page_path(page.nested_url, + switch_locale: (page.translations.first.locale unless page.translated_to_default_locale?)), + title: t('edit', :scope => 'refinery.admin.pages'), + class: "tip btn btn-xs btn-default" do + %i.icon-edit.row-blue + + + - if page.deletable? + = link_to refinery.admin_page_path(page.nested_url), + methode: :delete, + title: t('delete', :scope => 'refinery.admin.pages'), + class: "tip cancel confirm-delete btn btn-xs btn-default", + data: { confirm: t('message', scope: 'refinery.admin.delete', title: page_title_with_translations(page)) } do + %i.icon-trash.row-red + - else + %button.btn.btn-xs.btn-default.disabled + %i.icon-trash + + .btn-group + = link_to refinery.new_admin_page_path(:parent_id => page.id), title: t('new', :scope => 'refinery.admin.pages'), class: "tip btn btn-xs btn-default" do + %i.icon-plus.row-green diff --git a/samples/Haskell/Hello.hs b/samples/Haskell/Hello.hs new file mode 100644 index 00000000..cef0b4a9 --- /dev/null +++ b/samples/Haskell/Hello.hs @@ -0,0 +1,6 @@ +import Data.Char + +main :: IO () +main = do + let hello = "hello world" + putStrLn $ map toUpper hello \ No newline at end of file diff --git a/samples/Haskell/Main.hs b/samples/Haskell/Main.hs new file mode 100644 index 00000000..4a37a8c0 --- /dev/null +++ b/samples/Haskell/Main.hs @@ -0,0 +1,33 @@ +module Main where + +import Sudoku +import Data.Maybe + + +sudoku :: Sudoku +sudoku = [8, 0, 1, 3, 4, 0, 0, 0, 0, + 4, 3, 0, 8, 0, 0, 1, 0, 7, + 0, 0, 0, 0, 6, 0, 0, 0, 3, + 2, 0, 8, 0, 5, 0, 0, 0, 9, + 0, 0, 9, 0, 0, 0, 7, 0, 0, + 6, 0, 0, 0, 7, 0, 8, 0, 4, + 3, 0, 0, 0, 1, 0, 0, 0, 0, + 1, 0, 5, 0, 0, 6, 0, 4, 2, + 0, 0, 0, 0, 2, 4, 3, 0, 8] + +{- +sudoku :: Sudoku +sudoku = [8, 6, 1, 3, 4, 7, 2, 9, 5, + 4, 3, 2, 8, 9, 5, 1, 6, 7, + 9, 5, 7, 1, 6, 2, 4, 8, 3, + 2, 7, 8, 4, 5, 1, 6, 3, 9, + 5, 4, 9, 6, 8, 3, 7, 2, 1, + 6, 1, 3, 2, 7, 9, 8, 5, 4, + 3, 2, 4, 9, 1, 8, 5, 7, 6, + 1, 8, 5, 7, 3, 6, 9, 4, 2, + 7, 9, 6, 5, 2, 4, 3, 1, 8] +-} +main :: IO () +main = do + putStrLn $ pPrint sudoku ++ "\n\n" + putStrLn $ pPrint $ fromMaybe [] $ solve sudoku \ No newline at end of file diff --git a/samples/Haskell/Sudoku.hs b/samples/Haskell/Sudoku.hs new file mode 100644 index 00000000..ca6122e3 --- /dev/null +++ b/samples/Haskell/Sudoku.hs @@ -0,0 +1,46 @@ +module Sudoku +( + Sudoku, + solve, + isSolved, + pPrint +) where + +import Data.Maybe +import Data.List +import Data.List.Split + +type Sudoku = [Int] + +solve :: Sudoku -> Maybe Sudoku +solve sudoku + | isSolved sudoku = Just sudoku + | otherwise = do + index <- elemIndex 0 sudoku + let sudokus = [nextTest sudoku index i | i <- [1..9], + checkRow (nextTest sudoku index i) index, + checkColumn (nextTest sudoku index i) index, + checkBox (nextTest sudoku index i) index] + listToMaybe $ mapMaybe solve sudokus + where nextTest sudoku index i = take index sudoku ++ [i] ++ drop (index+1) sudoku + checkRow sudoku index = (length $ getRow sudoku index) == (length $ nub $ getRow sudoku index) + checkColumn sudoku index = (length $ getColumn sudoku index) == (length $ nub $ getColumn sudoku index) + checkBox sudoku index = (length $ getBox sudoku index) == (length $ nub $ getBox sudoku index) + getRow sudoku index = filter (/=0) $ (chunksOf 9 sudoku) !! (quot index 9) + getColumn sudoku index = filter (/=0) $ (transpose $ chunksOf 9 sudoku) !! (mod index 9) + getBox sudoku index = filter (/=0) $ (map concat $ concatMap transpose $ chunksOf 3 $ map (chunksOf 3) $ chunksOf 9 sudoku) + !! (3 * (quot index 27) + (quot (mod index 9) 3)) + +isSolved :: Sudoku -> Bool +isSolved sudoku + | product sudoku == 0 = False + | map (length . nub) sudokuRows /= map length sudokuRows = False + | map (length . nub) sudokuColumns /= map length sudokuColumns = False + | map (length . nub) sudokuBoxes /= map length sudokuBoxes = False + | otherwise = True + where sudokuRows = chunksOf 9 sudoku + sudokuColumns = transpose sudokuRows + sudokuBoxes = map concat $ concatMap transpose $ chunksOf 3 $ map (chunksOf 3) $ chunksOf 9 sudoku + +pPrint :: Sudoku -> String +pPrint sudoku = intercalate "\n" $ map (intercalate " " . map show) $ chunksOf 9 sudoku \ No newline at end of file diff --git a/samples/IGOR Pro/functions.ipf b/samples/IGOR Pro/functions.ipf new file mode 100644 index 00000000..a1c82363 --- /dev/null +++ b/samples/IGOR Pro/functions.ipf @@ -0,0 +1,38 @@ +#pragma rtGlobals=3 + +Function FooBar() + return 0 +End + +Function FooBarSubType() : ButtonControl + return 0 +End + +Function/D FooBarVar() + return 0 +End + +static Function FooBarStatic() + return 0 +End + +threadsafe static Function FooBarStaticThreadsafe() + return 0 +End + +threadsafe Function FooBarThread() + return 0 +End + +Function CallOperationsAndBuiltInFuncs(string var) + + string someDQString = "abcd" + + Make/N=(1,2,3,4) myWave + Redimension/N=(-1,-1,-1,5) myWave + + print strlen(someDQString) + + return 0 +End + diff --git a/samples/IGOR Pro/generic.ipf b/samples/IGOR Pro/generic.ipf new file mode 100644 index 00000000..63f96aeb --- /dev/null +++ b/samples/IGOR Pro/generic.ipf @@ -0,0 +1,21 @@ +#pragma rtGlobals=3 + +StrConstant myConstString="abcd" +// some comment +constant myConst=123 + +Structure struct1 + string str + variable var +EndStructure + +static Structure struct2 + string str + variable var +EndStructure + +#include "someFile" + +#ifdef NOT_DEFINED + // conditional compilation +#endif diff --git a/samples/Inform 7/Trivial Extension.i7x b/samples/Inform 7/Trivial Extension.i7x new file mode 100644 index 00000000..1aae1b85 --- /dev/null +++ b/samples/Inform 7/Trivial Extension.i7x @@ -0,0 +1,6 @@ +Version 1 of Trivial Extension by Andrew Plotkin begins here. + +A cow is a kind of animal. A cow can be purple. + +Trivial Extension ends here. + diff --git a/samples/Inform 7/story.ni b/samples/Inform 7/story.ni new file mode 100644 index 00000000..f8873369 --- /dev/null +++ b/samples/Inform 7/story.ni @@ -0,0 +1,12 @@ +"Test Case" by Andrew Plotkin. + +Include Trivial Extension by Andrew Plotkin. + +The Kitchen is a room. + +[This kitchen is modelled after the one in Zork, although it lacks the detail to establish this to the player.] + +A purple cow called Gelett is in the Kitchen. + +Instead of examining Gelett: + say "You'd rather see than be one." diff --git a/samples/Isabelle/HelloWorld.thy b/samples/Isabelle/HelloWorld.thy new file mode 100644 index 00000000..7c814dae --- /dev/null +++ b/samples/Isabelle/HelloWorld.thy @@ -0,0 +1,46 @@ +theory HelloWorld +imports Main +begin + +section{*Playing around with Isabelle*} + +text{* creating a lemma with the name hello_world*} +lemma hello_world: "True" by simp + +(*inspecting it*) +thm hello_world + +text{* defining a string constant HelloWorld *} + +definition HelloWorld :: "string" where + "HelloWorld \ ''Hello World!''" + +(*reversing HelloWorld twice yilds HelloWorld again*) +theorem "rev (rev HelloWorld) = HelloWorld" + by (fact List.rev_rev_ident) + +text{*now we delete the already proven List.rev_rev_ident lema and show it by hand*} +declare List.rev_rev_ident[simp del] +hide_fact List.rev_rev_ident + +(*It's trivial since we can just 'execute' it*) +corollary "rev (rev HelloWorld) = HelloWorld" + apply(simp add: HelloWorld_def) + done + +text{*does it hold in general?*} +theorem rev_rev_ident:"rev (rev l) = l" + proof(induction l) + case Nil thus ?case by simp + next + case (Cons l ls) + assume IH: "rev (rev ls) = ls" + have "rev (l#ls) = (rev ls) @ [l]" by simp + hence "rev (rev (l#ls)) = rev ((rev ls) @ [l])" by simp + also have "\ = [l] @ rev (rev ls)" by simp + finally show "rev (rev (l#ls)) = l#ls" using IH by simp + qed + +corollary "\(l::string). rev (rev l) = l" by(fastforce intro: rev_rev_ident) + +end diff --git a/samples/JSONiq/detail.jq b/samples/JSONiq/detail.jq new file mode 100644 index 00000000..9ae43f8b --- /dev/null +++ b/samples/JSONiq/detail.jq @@ -0,0 +1,9 @@ +(: Query for returning one database entry :) + +import module namespace req = "http://www.28msec.com/modules/http-request"; +import module namespace catalog = "http://guide.com/catalog"; + +variable $id := (req:param-values("id"), "London")[1]; +variable $part := (req:param-values("part"), "main")[1]; + +catalog:get-data-by-key($id, $part) diff --git a/samples/JSONiq/query.jq b/samples/JSONiq/query.jq new file mode 100644 index 00000000..d1abbaba --- /dev/null +++ b/samples/JSONiq/query.jq @@ -0,0 +1,17 @@ +(: Query for searching the database for keywords :) + +import module namespace index = "http://guide.com/index"; +import module namespace catalog = "http://guide.com/catalog"; + +import module namespace req = "http://www.28msec.com/modules/http-request"; + +variable $phrase := (req:param-values("q"), "London")[1]; +variable $limit := integer((req:param-values("limit"), 5)[1]); + +[ +for $result at $idx in index:index-search($phrase) +where $idx le $limit +let $data := catalog:get-data-by-id($result.s, $result.p) +return + {| { score : $result.r } , $data |} +] diff --git a/samples/JavaScript/helloHanaEndpoint.xsjs b/samples/JavaScript/helloHanaEndpoint.xsjs new file mode 100644 index 00000000..25629850 --- /dev/null +++ b/samples/JavaScript/helloHanaEndpoint.xsjs @@ -0,0 +1,24 @@ +/* + invoke endpoint by calling in a browser: + http://:////helloHanaMath.xsjslib?x=4&y=2 + e.g.: + http://192.168.178.20:8000/geekflyer/linguist/helloHanaEndpoint.xsjs?x=4&y=2 + */ + +var hanaMath = $.import("./helloHanaMath.xsjslib"); + +var x = parseFloat($.request.parameters.get("x")); +var y = parseFloat($.request.parameters.get("y")); + + +var result = hanaMath.multiply(x, y); + +var output = { + title: "Hello HANA XS - do some simple math", + input: {x: x, y: y}, + result: result +}; + +$.response.contentType = "application/json"; +$.response.statusCode = $.net.http.OK; +$.response.setBody(JSON.stringify(output)); \ No newline at end of file diff --git a/samples/JavaScript/helloHanaMath.xsjslib b/samples/JavaScript/helloHanaMath.xsjslib new file mode 100644 index 00000000..311c2570 --- /dev/null +++ b/samples/JavaScript/helloHanaMath.xsjslib @@ -0,0 +1,9 @@ +/* simple hana xs demo library, which can be used by multiple endpoints */ + +function multiply(x, y) { + return x * y; +} + +function add(x, y) { + return x + y; +} \ No newline at end of file diff --git a/samples/JavaScript/intro.js.frag b/samples/JavaScript/intro.js.frag new file mode 100644 index 00000000..a4e06b08 --- /dev/null +++ b/samples/JavaScript/intro.js.frag @@ -0,0 +1,7 @@ +(function(window, angular) { + +Array.prototype.last = function() { + return this[this.length-1]; +}; + +var app = angular.module('ConwayGameOfLife', []); diff --git a/samples/JavaScript/jsbuild.jsb b/samples/JavaScript/jsbuild.jsb new file mode 100644 index 00000000..8d14ff16 --- /dev/null +++ b/samples/JavaScript/jsbuild.jsb @@ -0,0 +1,12 @@ +jsb.library('mylibrary', jsb.STATIC_LIBRARY, function(libObject) { + libObject.outputName = 'mylibrary'; + libObject.cflags = [ '-Wall' ]; + libObject.ldflags = [ '-pthread' ]; + libObject.includePaths = [ 'src/include' ]; + libObject.sources = [ + 'src/main.cpp', + 'src/app.cpp' + ]; +}); + +jsb.build(); diff --git a/samples/JavaScript/outro.js.frag b/samples/JavaScript/outro.js.frag new file mode 100644 index 00000000..8634f6ed --- /dev/null +++ b/samples/JavaScript/outro.js.frag @@ -0,0 +1,3 @@ + +})(window, window.angular); + diff --git a/samples/Kit/demo.kit b/samples/Kit/demo.kit new file mode 100644 index 00000000..7c948f16 --- /dev/null +++ b/samples/Kit/demo.kit @@ -0,0 +1,8 @@ + + +
+

+

+ +

+
\ No newline at end of file diff --git a/samples/LSL/LSL.lsl b/samples/LSL/LSL.lsl new file mode 100644 index 00000000..5d281b95 --- /dev/null +++ b/samples/LSL/LSL.lsl @@ -0,0 +1,74 @@ +/* + Testing syntax highlighting + for the Linden Scripting Language +*/ + +integer someIntNormal = 3672; +integer someIntHex = 0x00000000; +integer someIntMath = PI_BY_TWO; + +integer event = 5673;// 'event' is invalid.illegal + +key someKeyTexture = TEXTURE_DEFAULT; +string someStringSpecial = EOF; + +some_user_defined_function_without_return_type(string inputAsString) +{ + llSay(PUBLIC_CHANNEL, inputAsString); +} + +string user_defined_function_returning_a_string(key inputAsKey) +{ + return (string)inputAsKey; +} + +default +{ + state_entry() + { + key someKey = NULL_KEY; + someKey = llGetOwner(); + + string someString = user_defined_function_returning_a_string(someKey); + + some_user_defined_function_without_return_type(someString); + } + + touch_start(integer num_detected) + { + list agentsInRegion = llGetAgentList(AGENT_LIST_REGION, []); + integer numOfAgents = llGetListLength(agentsInRegion); + + integer index; // defaults to 0 + for (; index <= numOfAgents - 1; index++) // for each agent in region + { + llRegionSayTo(llList2Key(agentsInRegion, index), PUBLIC_CHANNEL, "Hello, Avatar!"); + } + } + + touch_end(integer num_detected) + { + someIntNormal = 3672; + someIntHex = 0x00000000; + someIntMath = PI_BY_TWO; + + event = 5673;// 'event' is invalid.illegal + + someKeyTexture = TEXTURE_DEFAULT; + someStringSpecial = EOF; + + llSetInventoryPermMask("some item", MASK_NEXT, PERM_ALL);// 'llSetInventoryPermMask' is reserved.godmode + + llWhisper(PUBLIC_CHANNEL, "Leaving \"default\" now..."); + state other; + } +} + +state other +{ + state_entry() + { + llWhisper(PUBLIC_CHANNEL, "Entered \"state other\", returning to \"default\" again..."); + state default; + } +} diff --git a/samples/Latte/layout.latte b/samples/Latte/layout.latte new file mode 100644 index 00000000..5e94975f --- /dev/null +++ b/samples/Latte/layout.latte @@ -0,0 +1,59 @@ +{** + * @param string $basePath web base path + * @param string $robots tell robots how to index the content of a page (optional) + * @param array $flashes flash messages + *} + + + + + + + + + + + {ifset $title}{$title} › {/ifset}Translation report + + + + + + + {block #head}{/block} + + + + + + {block #navbar} + {include _navbar.latte} + {/block} + +
+
+
+ {include _flash.latte, flash => $flash} +
+
+ + {include #content} +
+ +
+
+ + + {block #scripts}{/block} + + diff --git a/samples/Latte/template.latte b/samples/Latte/template.latte new file mode 100644 index 00000000..1718045a --- /dev/null +++ b/samples/Latte/template.latte @@ -0,0 +1,243 @@ +{var $title => "⚐ {$new->title}"} +{define author} + + + {$author->name|trim} + + + {$author->estimatedTimeTranslated|secondsToTime}{* + *}{if $author->joined}, {/if} + {if $author->joined}joined {$author->joined|timeAgo}{/if}{* + *}{ifset $postfix}, {$postfix}{/ifset} +{/define} +{block #scripts} + +{/block} +{block #content} + +{if isset($old)} +

Diffing revision #{$old->revision} and #{$new->revision}

+{else} +

First revision

+{/if} + +{var $editor = $user->loggedIn && $new->language === 'cs'} +{var $rev = $new->video->siteRevision} +
+
+

+ published {$new->publishedAt|timeAgo}{* + *}{ifset $old}, + + {$new->textChange * 100|number} % text change{* + *}{* + *}{if $new->timeChange}, + + {$new->timeChange * 100|number} % timing change + + {/if} + {/ifset} +

+ {cache $new->id, expires => '+4 hours'} +

+ {if isset($old) && $old->author->name !== $new->author->name} + {include author, author => $old->author, class => 'author-old'} + — + {include author, author => $new->author, class => 'author-new'} + {elseif isset($old)} + {include author, author => $new->author, class => 'author-new', postfix => 'authored both revisions'} + {else} + {include author, author => $new->author, class => 'author-new'} + {/if} +

+ {/cache} + + {var $threshold = 10} + {cache $new->id} + {var $done = $new->timeTranslated} + {var $outOf = $new->video->canonicalTimeTranslated} + {if $outOf} +

+ Only {$done|time} translated out of {$outOf|time}, + {(1-$done/$outOf) * 100|number} % ({$outOf - $done|time}) left +

+

+ Seems complete: {$done|time} translated out of {$outOf|time} +

+ {elseif $done} +

+ Although {$done|time} is translated, there are no English subtitles for comparison. +

+ {/if} + {/cache} + + {if $editor} + {var $ksid = $new->video->siteId} + {if $ksid} + + Video on khanovaskola.cz + {if $new->revision === $rev} + (on this revision) + {elseif $new->revision > $rev} + (on older revision #{$rev}) + {else} + (on newer revision #{$rev}) + {/if} + + {/if} + {/if} + +

{$diffs->title|noescape}

+
{$diffs->description|noescape}
+
+
+ {$line->text|noescape}  +
+
+ + + +
+
+ + {if $editor} + {if $new->approved} + + Revision has been approved{if $new->editor} by {$new->editor->name}{/if}. + + + + Edit on Amara + + + on Khan Academy + + + {elseif $new->incomplete} + + Revision has been marked as incomplete by {if $new->editor}{$new->editor->name}{/if}. + + {include editButton} + {include kaButton} + + {* else $new->status === UNSET: *} + {elseif $new->video->siteId} + + {include kaButton} + + {else} + + {include kaButton} +
+
Filed under category:
+ {foreach $new->video->categories as $list} + — {$list|implode:' › '}{sep}
{/sep} + {/foreach} +
+ {/if} + {/if} +
+
+

All revisions:

+ + {foreach $new->video->getRevisionsIn($new->language) as $revision} + + + + + + + {if $user->loggedIn && $revision->comments->count()} + + + + {/if} + {if $user->loggedIn && $new->id === $revision->id} + + + + {/if} + + {/foreach} +
+ #{$revision->revision} + + + + {$revision->author->name} + + + + {$revision->publishedAt|timeAgo} + + + {* vars $outOf, $threshold already set *} + {default $outOf = $new->video->canonicalTimeTranslated} + {if $outOf} {* ignore if canonical time not set *} + {var $done = $revision->timeTranslated} + + {$done/$outOf * 100|number} % + + + ~100 % + + {/if} + + {if $revision->incomplete || $revision->approved} + {var $i = $revision->incomplete} + + {if $i}incomplete{else}approved{/if} + + {/if} +
+ + + + + +
+ + {$comment->user->name}: + + + + {$comment->text} + +
+
+ {form commentForm} +
+ {input text, class => "form-control", placeholder => "Comment this revision (only visible to other editors)"} + + + +
+ {/form} +
+ +
+
diff --git a/samples/Liquid/layout.liquid b/samples/Liquid/layout.liquid new file mode 100644 index 00000000..7954c7ec --- /dev/null +++ b/samples/Liquid/layout.liquid @@ -0,0 +1,104 @@ + + + + + + {{shop.name}} - {{page_title}} + + {{ 'textile.css' | global_asset_url | stylesheet_tag }} + {{ 'lightbox/v204/lightbox.css' | global_asset_url | stylesheet_tag }} + + {{ 'prototype/1.6/prototype.js' | global_asset_url | script_tag }} + {{ 'scriptaculous/1.8.2/scriptaculous.js' | global_asset_url | script_tag }} + {{ 'lightbox/v204/lightbox.js' | global_asset_url | script_tag }} + {{ 'option_selection.js' | shopify_asset_url | script_tag }} + + {{ 'layout.css' | asset_url | stylesheet_tag }} + {{ 'shop.js' | asset_url | script_tag }} + + {{ content_for_header }} + + + + +

Skip to navigation.

+ + {% if cart.item_count > 0 %} + + {% endif %} + +
+ +
+
+ +
+
+ {{ content_for_layout }} +
+
+ +
+
+ + + + {% if tags %} + + {% endif %} + + + +
+ +

+ + + +
+
+ +
+ + + + diff --git a/samples/Liquid/template.liquid b/samples/Liquid/template.liquid new file mode 100644 index 00000000..5502c2e7 --- /dev/null +++ b/samples/Liquid/template.liquid @@ -0,0 +1,70 @@ +

We have wonderful products!

+
    +
    +
    + {% for image in product.images %} + {% if forloop.first %} + + {{product.title | escape }} + + {% else %} + + {{product.title | escape }} + + {% endif %} + {% endfor %} +
    + +

    {{ product.title }}

    + +
      +
    • Vendor: {{ product.vendor | link_to_vendor }}
    • +
    • Type: {{ product.type | link_to_type }}
    • +
    + + {{ product.price_min | money }}{% if product.price_varies %} - {{ product.price_max | money }}{% endif %} + +
    +
    + + + +
    + +
    +
    +
    + +
    + {{ product.description }} +
    +
    + + +
diff --git a/samples/LookML/comments.view.lookml b/samples/LookML/comments.view.lookml new file mode 100644 index 00000000..ed2d29aa --- /dev/null +++ b/samples/LookML/comments.view.lookml @@ -0,0 +1,43 @@ +- view: comments + fields: + + - dimension: id + primary_key: true + type: int + sql: ${TABLE}.id + + - dimension: body + sql: ${TABLE}.body + + - dimension_group: created + type: time + timeframes: [time, date, week, month] + sql: ${TABLE}.created_at + + - dimension: headline_id + type: int + hidden: true + sql: ${TABLE}.headline_id + + - dimension_group: updated + type: time + timeframes: [time, date, week, month] + sql: ${TABLE}.updated_at + + - dimension: user_id + type: int + hidden: true + sql: ${TABLE}.user_id + + - measure: count + type: count + detail: detail* + + + # ----- Detail ------ + sets: + detail: + - id + - headlines.id + - headlines.name + - users.id diff --git a/samples/M/Comment.m b/samples/M/Comment.m new file mode 100644 index 00000000..6ddd7653 --- /dev/null +++ b/samples/M/Comment.m @@ -0,0 +1,36 @@ +Comment ; + ; this is a comment block + ; comments always start with a semicolon + ; the next line, while not a comment, is a legal blank line + + ;whitespace alone is a valid line in a routine + ;** Comments can have any graphic character, but no "control" + ;** characters + + ;graphic characters such as: !@#$%^&*()_+=-{}[]|\:"?/>.<, + ;the space character is considered a graphic character, even + ;though you can't see it. + ; ASCII characters whose numeric code is above 128 and below 32 + ; are NOT allowed on a line in a routine. + ;; multiple semicolons are okay + ; a line that has a tag must have whitespace after the tag, bug + ; does not have to have a comment or a command on it +Tag1 + ; + ;Tags can start with % or an uppercase or lowercase alphabetic + ; or can be a series of numeric characters +%HELO ; + ; +0123 ; + ; +%987 ; + ; the most common label is uppercase alphabetic +LABEL ; + ; + ; Tags can be followed directly by an open parenthesis and a + ; formal list of variables, and a close parenthesis +ANOTHER(X) ; + ; + ;Normally, a subroutine would be ended by a QUIT command, but we + ; are taking advantage of the rule that the END of routine is an + ; implicit QUIT diff --git a/samples/MTML/categories_to_columns.mtml b/samples/MTML/categories_to_columns.mtml new file mode 100644 index 00000000..a46c0674 --- /dev/null +++ b/samples/MTML/categories_to_columns.mtml @@ -0,0 +1,35 @@ +<$mt:Var name="num_cols" value="6"$> +<$mt:Var name="index" value="0"$> + + <$mt:Var name="index" op="++" setvar="index"$> + + <$mt:CategoryLabel remove_html="1"$> + + +<$mt:Var name="categories" function="count" setvar="cat_count"$> +<$mt:Var name="cat_count" op="%" value="$num_cols" setvar="modulus"$> + + <$mt:Var name="cat_count" op="-" value="$modulus" setvar="cat_count_minus_mod"$> + <$mt:Var name="cat_count_minus_mod" op="/" value="$num_cols" setvar="cats_per_col"$> + <$mt:Var name="cats_per_col" op="+" value="1" setvar="cats_per_col"$> + + <$mt:Var name="cat_count" op="/" value="$num_cols" setvar="cats_per_col"$> + + + <$mt:Var name="index" op="++" setvar="index"$> + + <$mt:Var name="categories{$index}"$> + + + +<$mt:Var name="index" value="0"$> +<$mt:Var name="col_num" value="1"$> + +
"> + + <$mt:Var name="for_inner"$> + +
+ <$mt:Var name="col_num" op="++" setvar="col_num"$> +
+ diff --git a/samples/Mask/view.mask b/samples/Mask/view.mask new file mode 100644 index 00000000..521273e6 --- /dev/null +++ b/samples/Mask/view.mask @@ -0,0 +1,61 @@ + +// HTML Elements +header { + + img .logo src='/images/~[currentLogo].png' alt=logo; + + h4 > 'Bar View' + + if (currentUser) { + + .account > + a href='/acount' > + 'Hello, ~[currentUser.username]' + } +} + +.view { + ul { + + // Iteration + for ((user, index) of users) { + + li.user data-id='~[user.id]' { + + // interpolation + .name > '~[ user.username ]' + + // expression + .count > '~[: user.level.toFixed(2) ]' + + // util + /* Localization sample + * lastActivity: "Am {0:dd. MM} war der letzte Eintrag" + */ + .date > '~[ L: "lastActivity", user.date]' + } + } + } + + // Component + :countdownComponent { + input type = text > + :dualbind value='number'; + + button x-signal='click: countdownStart' > 'Start'; + + h5 { + '~[bind: number]' + + :animation x-slot='countdownStart' { + @model > 'transition | scale(0) > scale(1) | 500ms' + @next > 'background-color | red > blue | 2s linear' + } + } + } +} + +footer > :bazCompo { + + 'Component generated at ~[: $u.format($c.date, "HH-mm") ]' +} \ No newline at end of file diff --git a/samples/Mathematica/Init.m b/samples/Mathematica/Init.m new file mode 100644 index 00000000..720d6100 --- /dev/null +++ b/samples/Mathematica/Init.m @@ -0,0 +1,3 @@ +(* Mathematica Init File *) + +Get[ "Foobar`Foobar`"] diff --git a/samples/Mathematica/MiscCalculations.nb b/samples/Mathematica/MiscCalculations.nb new file mode 100644 index 00000000..5e34ac95 --- /dev/null +++ b/samples/Mathematica/MiscCalculations.nb @@ -0,0 +1,232 @@ +(* Content-type: application/vnd.wolfram.mathematica *) + +(*** Wolfram Notebook File ***) +(* http://www.wolfram.com/nb *) + +(* CreatedBy='Mathematica 9.0' *) + +(*CacheID: 234*) +(* Internal cache information: +NotebookFileLineBreakTest +NotebookFileLineBreakTest +NotebookDataPosition[ 157, 7] +NotebookDataLength[ 7164, 223] +NotebookOptionsPosition[ 6163, 182] +NotebookOutlinePosition[ 6508, 197] +CellTagsIndexPosition[ 6465, 194] +WindowFrame->Normal*) + +(* Beginning of Notebook Content *) +Notebook[{ + +Cell[CellGroupData[{ +Cell[BoxData[ + RowBox[{ + RowBox[{"Solve", "[", + RowBox[{ + RowBox[{"y", "'"}], "\[Equal]", " ", "xy"}], "]"}], + "\[IndentingNewLine]"}]], "Input", + CellChangeTimes->{{3.6112716342092056`*^9, 3.6112716549793935`*^9}}], + +Cell[BoxData[ + RowBox[{"{", + RowBox[{"{", + RowBox[{"xy", "\[Rule]", + SuperscriptBox["y", "\[Prime]", + MultilineFunction->None]}], "}"}], "}"}]], "Output", + CellChangeTimes->{3.6112716579295626`*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Log", "[", + RowBox[{"Sin", "[", "38", "]"}], "]"}]], "Input", + CellChangeTimes->{{3.611271663920905*^9, 3.6112716759275913`*^9}}], + +Cell[BoxData[ + RowBox[{"Log", "[", + RowBox[{"Sin", "[", "38", "]"}], "]"}]], "Output", + CellChangeTimes->{3.611271678256725*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"N", "[", + RowBox[{"Log", "[", + RowBox[{"Sin", "[", "38", "]"}], "]"}], "]"}]], "Input", + NumberMarks->False], + +Cell[BoxData[ + RowBox[{"-", "1.2161514009320473`"}]], "Output", + CellChangeTimes->{3.611271682061942*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Abs", "[", + RowBox[{"-", "1.2161514009320473`"}], "]"}]], "Input", + NumberMarks->False], + +Cell[BoxData["1.2161514009320473`"], "Output", + CellChangeTimes->{3.6112716842780695`*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"RealDigits", "[", "1.2161514009320473`", "]"}]], "Input", + NumberMarks->False], + +Cell[BoxData[ + RowBox[{"{", + RowBox[{ + RowBox[{"{", + RowBox[{ + "1", ",", "2", ",", "1", ",", "6", ",", "1", ",", "5", ",", "1", ",", "4", + ",", "0", ",", "0", ",", "9", ",", "3", ",", "2", ",", "0", ",", "4", + ",", "7"}], "}"}], ",", "1"}], "}"}]], "Output", + CellChangeTimes->{3.611271685319129*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{ + RowBox[{"Graph", "[", + RowBox[{"Log", "[", "x", "]"}], "]"}], "\[IndentingNewLine]"}]], "Input", + CellChangeTimes->{{3.611271689258354*^9, 3.611271702038085*^9}}], + +Cell[BoxData[ + RowBox[{"Graph", "[", + RowBox[{"Log", "[", "x", "]"}], "]"}]], "Output", + CellChangeTimes->{3.611271704295214*^9}] +}, Open ]], + +Cell[BoxData[""], "Input", + CellChangeTimes->{{3.611271712769699*^9, 3.6112717423153887`*^9}}], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{ + RowBox[{"Plot", "[", + RowBox[{ + RowBox[{"Log", "[", "x", "]"}], ",", " ", + RowBox[{"{", + RowBox[{"x", ",", " ", "0", ",", " ", "10"}], "}"}]}], "]"}], + "\[IndentingNewLine]"}]], "Input", + CellChangeTimes->{{3.6112717573482485`*^9, 3.6112717747822456`*^9}}], + +Cell[BoxData[ + GraphicsBox[{{}, {}, + {Hue[0.67, 0.6, 0.6], LineBox[CompressedData[" +1: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 +/wc13qzo + "]]}}, + AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948], + Axes->True, + AxesLabel->{None, None}, + AxesOrigin->{0, 0}, + Method->{}, + PlotRange->{{0, 10}, {-1.623796532045525, 2.3025850725858823`}}, + PlotRangeClipping->True, + PlotRangePadding->{ + Scaled[0.02], + Scaled[0.02]}]], "Output", + CellChangeTimes->{3.6112717778594217`*^9}] +}, Open ]] +}, +WindowSize->{716, 833}, +WindowMargins->{{Automatic, 214}, {Automatic, 26}}, +FrontEndVersion->"9.0 for Microsoft Windows (64-bit) (January 25, 2013)", +StyleDefinitions->"Default.nb" +] +(* End of Notebook Content *) + +(* Internal cache information *) +(*CellTagsOutline +CellTagsIndex->{} +*) +(*CellTagsIndex +CellTagsIndex->{} +*) +(*NotebookFileOutline +Notebook[{ +Cell[CellGroupData[{ +Cell[579, 22, 224, 6, 52, "Input"], +Cell[806, 30, 211, 6, 31, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[1054, 41, 155, 3, 31, "Input"], +Cell[1212, 46, 130, 3, 31, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[1379, 54, 137, 4, 31, "Input"], +Cell[1519, 60, 105, 2, 31, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[1661, 67, 113, 3, 31, "Input"], +Cell[1777, 72, 90, 1, 31, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[1904, 78, 102, 2, 31, "Input"], +Cell[2009, 82, 321, 8, 31, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[2367, 95, 191, 4, 52, "Input"], +Cell[2561, 101, 131, 3, 31, "Output"] +}, Open ]], +Cell[2707, 107, 94, 1, 31, "Input"], +Cell[CellGroupData[{ +Cell[2826, 112, 299, 8, 52, "Input"], +Cell[3128, 122, 3019, 57, 265, "Output"] +}, Open ]] +} +] +*) + +(* End of internal cache information *) diff --git a/samples/Mathematica/MiscCalculations2.nb b/samples/Mathematica/MiscCalculations2.nb new file mode 100644 index 00000000..84960c53 --- /dev/null +++ b/samples/Mathematica/MiscCalculations2.nb @@ -0,0 +1,3666 @@ +(* Content-type: application/vnd.wolfram.mathematica *) + +(*** Wolfram Notebook File ***) +(* http://www.wolfram.com/nb *) + +(* CreatedBy='Mathematica 9.0' *) + +(*CacheID: 234*) +(* Internal cache information: +NotebookFileLineBreakTest +NotebookFileLineBreakTest +NotebookDataPosition[ 157, 7] +NotebookDataLength[ 200462, 3656] +NotebookOptionsPosition[ 199657, 3624] +NotebookOutlinePosition[ 200002, 3639] +CellTagsIndexPosition[ 199959, 3636] +WindowFrame->Normal*) + +(* Beginning of Notebook Content *) +Notebook[{ + +Cell[CellGroupData[{ +Cell["\<\ +How far is the Earth from the Moon?\ +\>", "WolframAlphaLong", + CellChangeTimes->{{3.6112720079145803`*^9, 3.61127201386392*^9}}], + +Cell[BoxData[ + NamespaceBox["WolframAlphaQueryResults", + DynamicModuleBox[{Typeset`q$$ = "How far is the Earth from the Moon?", + Typeset`opts$$ = { + AppearanceElements -> { + "Warnings", "Assumptions", "Brand", "Pods", "PodMenus", "Unsuccessful", + "Sources"}, Asynchronous -> All, + TimeConstraint -> {30, Automatic, Automatic, Automatic}, + Method -> { + "Formats" -> {"cell", "minput", "msound", "dataformats"}, "Server" -> + "http://api.wolframalpha.com/v1/"}}, Typeset`elements$$ = { + "Warnings", "Assumptions", "Brand", "Pods", "PodMenus", "Unsuccessful", + "Sources"}, Typeset`pod1$$ = XMLElement[ + "pod", {"title" -> "Input interpretation", "scanner" -> "Identity", "id" -> + "Input", "position" -> "100", "error" -> "false", "numsubpods" -> "1"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + TagBox[ + FormBox[ + TagBox[ + GridBox[{{ + PaneBox[ + StyleBox[ + TagBox[ + GridBox[{{ + StyleBox[ + TagBox[ + TagBox["\"Moon\"", + $CellContext`TagBoxWrapper[ + "Entity" -> {AstronomicalData, "Moon"}]], Identity], { + LineIndent -> 0, LineSpacing -> {0.9, 0, 1.5}}], + "\"distance from Earth\""}}, + GridBoxBackground -> {"Columns" -> { + GrayLevel[0.949], None}, "Rows" -> {{None}}}, + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + ColumnsEqual -> False, RowsEqual -> False, + GridBoxDividers -> {"Columns" -> { + GrayLevel[0.84], + GrayLevel[0.84], + GrayLevel[0.84]}, "Rows" -> {{ + GrayLevel[0.84]}}, + "RowsIndexed" -> { + 1 -> GrayLevel[0.84], -1 -> GrayLevel[0.84]}}, + GridBoxSpacings -> { + "Columns" -> {1, 1, 1}, "Rows" -> {{0.3}}}, + GridBoxAlignment -> { + "Columns" -> {{Left}}, "Rows" -> {{Baseline}}}, + AllowScriptLevelChange -> False, BaselinePosition -> 1], + $CellContext`TagBoxWrapper["Separator" -> " | "]], + LineSpacing -> {1, 0, 1.5}, LineIndent -> 0], + BaselinePosition -> Center]}}, + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + ColumnsEqual -> False, RowsEqual -> False, + GridBoxSpacings -> {"Columns" -> {{ + AbsoluteThickness[-1]}}, "Rows" -> {{0}}}, + AllowScriptLevelChange -> False], + $CellContext`TagBoxWrapper["Separator" -> " | "]], + TraditionalForm], + PolynomialForm[#, TraditionalOrder -> False]& ], + TraditionalForm]], "Output", {}]}], + XMLElement[ + "dataformats", {}, {"plaintext,computabledata,formatteddata"}]}]}], + Typeset`pod2$$ = XMLElement[ + "pod", {"title" -> "Current result", "scanner" -> "Data", "id" -> "Result", + "position" -> "200", "error" -> "false", "numsubpods" -> "1", "primary" -> + "true"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["239\[ThinSpace]262", + $CellContext`TagBoxWrapper["StringBoxes" -> "239262"]], + "\[InvisibleSpace]", " ", + StyleBox[ + "\"miles\"", LinebreakAdjustments -> {1, 100, 1, 0, 100}, + LineIndent -> 0, { + FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, StripOnInput -> False]}], Identity], #& , + SyntaxForm -> Dot], "Unit", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> 0, + ZeroWidthTimes -> False], TraditionalForm]], "Output", {}]}], + XMLElement[ + "dataformats", {}, { + "plaintext,moutput,computabledata,formatteddata,numberdata,\ +quantitydata"}]}], + XMLElement["states", {"count" -> "1"}, { + XMLElement[ + "state", { + "name" -> "Show metric", "input" -> "Result__Show metric"}, {}]}]}], + Typeset`pod3$$ = XMLElement[ + "pod", {"title" -> "History", "scanner" -> "Data", "id" -> + "DistanceHistory:AstronomicalData", "position" -> "300", "error" -> + "false", "numsubpods" -> "1"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> True, "string" -> False}, { + Cell[ + BoxData[ + FormBox[ + TemplateBox[{ + GraphicsBox[ + GraphicsComplexBox[CompressedData[" +1:eJxcnHc8lv/7961K0lCUnRWl7JHMt7JCIoRCGso4r+u0QktRpIyGKCoaRkap +bNFQUQoVSRlZITOJkHS/rvv+fP+5f//8Hq/Hh+s8jufxfh/H6zgvfSX30Nvc +OdjY2ATnsrGx/v+wEU/7SFO/YUOKbGH4LpoEPBBMiPjcb6j70EbK25YmdcFB +U2u+9BvKxbtfdz7CJIXcHGcqoJ1lDalFZxnksi4t7NjcbzivYCPbyRKKWL1Z +5zQN/eiozmB4AEUuSC1/caGl3/DCduc4Q3sGyWzY2qLR2m+YkhR6eOAjkzyS +pyYaoc3/GAj4HqCJ0+Z8XUZbv6GqcrJn4nMmqamwVF7ytd9QJ2Ms9Uwig9Rw +8VnfgS7McrW78Y0iVf1Fvnrt/YZncyYcxR5RJGFtLvkKHap4MvC8AoOMqn/Q +CezoN/QLi+9o1GYSqUTjbqHOfkOj6GrBUGOaWN68GlsK3T4+P1pQliacfmLu +1l39hsun8pUNZxnk3PWRvp/QNV66JcoVFMm4MHTlbHe/4Zb30xPV5ykS364z +ofit39CJ42NTNJ53tJ6yfwfNXFIyv3Ylk/yIfd2+v6ff8Lpc+POzvDTZkBYo +xNPbb1iZvGJ3AUWTRae2htyCzghf4ut2nUnY/r//UznCp6ODepx28K88fZgm +UgKvTJuguRKsZjaMM0nFU13DQNQjhO2Z82IOJkm/VWyzEPwzm7oCY4UZ5Cdn +7YZM6L9n15gMoB4/Am8uMkE9Iv94sp1GPtf/qL7rgj57QkDQX4xJHv5z8YxA +PWSKtN/8NacJj/Z5ISnUo7h8aIOwKk2WRZwofAy9h8OpUH4d6tOlSJxRjyfz +4zakrmOQ6qDu9p/QKisin4g+o4hilJpTLOoRXXKl7U0zRYzuk8fyqMfN0yb8 +NukMwtO7YMkraN663d2un5hk/XWfDV6ox6/4SofZPTS5c6bl0Bzwd/GfN/dV +OpO8Pj034yb0l0SfQx2mDHL18vBTfdRDcmHz69IzFBEvuVTVAv0y4dQPmVqK +cO9oSDuOejzMLKzISmEQTRWRqyKox8noIVfua0zCLyxxrBh6rjrvcArOfyp/ +l8V21OPkJbHJyjU0CTS+qzIEffXJl8GD7QyypD0mRgD8swMtLXQDaWKx9wcz +F7po3/ePB/Dzr0R3iFmjHrwX/g4M6DPJPXuXoV5oi79b1q+2YRCjG+JZJ1CP +mCmuPck4Pysle9UkwH9E72x+/wWKrDgnU10KXXRgRuRkEYMo9jdKuaIerSvv +rYwVpske1dnTM9D8/Y9v7rWnSeGBpKl41COG+8TbqENMsqVeT0sT/Gdsik/l +uTKI5ePDV2qgSXPw9fA6ikyXHvzmjnp8U7eWbHhJkaGhoH9c4L/v8ivXD/sY +ZHbhyKoU6I0Bh2o0o5lknUjzoo2oh/l8jWd24HNYQJerHfqJYdSXc0NM0jPD +N/cQ6rHNYp3KQ/CNFx5pEAR/d44FT3yvU2TPKsP7edDfV271H89EfxDjtnJA +PfZVKU2dwPOcOIwmx6G/vnhYKeHKJGENv+6dQz12OzonL9GjyXBLjqoy+P/J +qOhkR74V+2Y/VUF/mfkxw9jEJNuWx/e5gb9d268PUkyaTFamSLCDd1yy+KRJ +KZMkjywrVAXvI0X8krt7KXLjwLHX76E97kfN8/OiyNO3O797g3d1QtSFAi4G +kfYwbOQF39oNIpY6x5lEU+Bb7j1oLl/7ky37aPLQUCrbFLxlfmWJu7LRxCd1 +v38v9Cb5NdmKOB9bfq00CwPvcFONtJv4PDMVqzWC4D2g/PuObil47Bx9Wwi9 +bnt3ssIsRZL85h+zBu9etuGl08MMsvzp6ukf0Eo+juTVcppsXDl330Xwrt5w +cfTOVpo0/j06Ig/eOW/fOJ60Z5KcpX9Mq6E9t5auSpqhyE3+4Zx94O0re8FF +PIIiXyz72uaA78nET9SdaYosc/upZwi+hd1zuXhx39J3WVh0QBc1Lg8/4oP+ +aynkfhR8d9aeXNs9wPzv/H/57/y7kONL3xZygDeJKmHr8KKJ29lTHFehDb5k +qKob0uRttccCPfCvu+w1bunCJKq5SjofoesvVNlcZTAIc9hkDwX+uY7SIa9v +UURz4ozJQvBPDqiM6AqhSIOjmGk6tFlRwbadEQxC7Yr7txn8VW0sFzRPMkms +osaT79AD6iLn/XbTJNJR7moo+I/MvmEYpTDJQgtjdWnwn+Iwvlt4hEGiO4x/ +lUL/ZRP/RH2mSPuHhGwb8LfNLC1sfEyRiuhlEj+hh47VXu43Y5Dgm+33z4J/ +j7NMyfu9TCK34/yUAvhzHa8S+rOdJnubvTfXQKuMLBFrQj8PKLpcsA/851+w +cpyqZZClziNtc8D/vDDbxsG7FDm187JMCvSJiVizliSK/JyVlNqEeix5cbJm +N57X79Uk2wVtoDVmMYV+UaLy1fQI6mEsrON/FvOI/xmfrBjqERtX+mzBfpp4 +/JJdWwDNZ+ofWueD/m9Wz2cF/rzD3cXn0Y8WDqvlD0IfOXbiAt9nzLvNPZwS +4H2Nmah5mY1BXhekhZZDX6kcdKrF+W+6OfvHEbzPZeXpb+4EHxVt20noVIq6 +5GrFJAFnb0YngbeTJqfWkBNN2vScOtXBWz1eN+2eKM5n/Bh/PfS3sqSQ1Dng +T8kZ0eA90snmHybIIGfshMLngO+Utc3Sc5jPZv5L425BP2iVLUoeoAjNl3Zd +D7wzmv/Y7atmkPO2wuEt0MvD9xodnGISXddHViHgPSAletoQ/efJ8xx1QfAO +ThsS9g9hEu2aE78LoB/U7nMKk2QQ8e3DhTbgbdLJOKJ+iiIzYfq2o9CzNSfP +reuiSOqrCEoRfJ/2zOy5W8IkrWUa3W+hvWJUbfO8aRKiHOLoCb6vrd11+hfS +RPCX4bdRhW7D/MWpvo4e+8mNu1v3rQZfAS+dC7cO0URT17n5OfRgruiBPXw0 +Edk2MXoJfM/wv+YjxzF/LI0k1cBTRDt7Yk8G5m+AsIkfeH5WsT+6SB2/r1ll +vRj8dHuSa8NNaRKzU1N3M/i13l31NduYQRZczdVth/ZsfUxlVVKE/7bdysPg +Z8ambW6Ifn7q8N+kPPCyv1nNvygP961llcx28Jrh9l39COflwlbeJz+h2Xmr +fKLfMInjxujtMeBV+PxMYaQ/gwh+Hq5eCz628nUaiZhHZKRf5xW0wpKtZubo +VxZBPMtTwefvQfk2DhuavJ40NdjEmo+PqjknN9FE9OPHU1+gddq+/RrlY5Ku +ru1P/MHj+6qXE2f20kQ4wdDDGDxePL2a7I54g4Ts+Xqg1yfJFwjg/N35XdwY +Aj5zXv8KK4N/2J9s5iQJPhcb/L3eZzHJZMrq+groLxcSMqs8aBJhPOC/A7yi +Ri2ss7uYJOaooGU8+By7kFHp/wu8F52skQefQbUFSznhR49uejf3DXQev/ej +9/wMcm3denoOeLhEa3PkqNDEtN36UDr0li/lk28MaCLuePBKG/jwemgP8rVR +RKZ+6FYQeFzzyjfgjqRI2G+XxXbgIRovffDITybx4dj9cBw6sk05WdKfJuoe ++b7nwKNsRerdTZX/65/V//XPLaRwrbfFFPy2noDPTjV3mvRft3p7Hrx+be6S +uwe/VSvpE6aGfvlAwOO1HcUkv5oFO99Ar3Dm+tqAfhYmsFN/D/iZ8ERtTEV/ +qXBrruMEv5zJEyX5hyjysDxxzjXokjnz/WvRb3mSRocMwE/ZQySUvY9JUnPe +7WiHts5WsXqP8/Hj3ZB3EHgeFCwYYD5gkqG5mx8KgaeQveiaG/D36/zX3noA +3RL3w98NPBpcM2JNwXNudtO86TKKrHPefb8Pen3j6tN6Ogyi7u0UeALnsWxT ++bdzW/G8qf5hafAlF+9o6WF+OT7mHHwO3eIbYxcsRJOySztidoD3+QdfB671 +MMi7oyN7Z1j+O+PwyTWF8POBFW2XwH9V94uU+niKvBhR5N3A8gt719n+1mYQ +tRSpx5+hHWQas/YqMYmdmx2/L+pxIo3LKht+SVbtRcoy1GPCuPpNgSdNdHQf +NWRDu/QYTq04zSTTu/3SjcC/b7wluwr++gr77LFO6EVneitX9TJJ98G6rOXg +rVC901B1IYO0tZS45EH/funU/pSmyD5e6/Ct4M1bH7vS4wNFHicU8g1Dt3HF +a/3QYJJlL/8dPg/eHEI7Lh60o8mvR7+OrQXvwDXx9D45mmQtLP32Cjq+/VBS +ryD4y62tcAfv1Ps9n/2kGES+Z1Z1htVP8wb77DGvdP5JBV4B7xtvvpoXoJ99 +af+poA7e/15zBAoVw3+IxZl/gP7urmB5+juTlP4VMAoAb0dn35GVmJf56Uaf +FoGvQ9Th89cvwm9lbarLhj7Fq+0/ocYgLYHDOmbgnT/bHmcB/7Aw2XNhL/Ru +Va6nd5rgF2feca4C39i+oKWzuJ/BA1n3K6Bzl/49OMzqN7eUP+wC33S/Z4lN +IjSpuhYUNXK21/DOAQOlAzJepKlyeFIcfHf7p0wooX8+3SqbVsLab+TPZoSK +0UT5EE/tWfBd8Xq8PvI0RS4VxmetAc+EsqSP6dcoci43WN0DPNXozoaE1djf +8vcMzgG/Oy/OyzvjfDFWaJcagNfwv+EHStsYJGddfH8j9G6zdLaL1RSZp+TO +4QN+l4VfFpyFNjQKdMsErx//bjt43mCS3CMnhCzBK7V24FIo+leEauru79CT +qzJXxbYwScrKrYonWf3Tabm98xkGaZwa3ioFPo8Dzx9Tx/m04Vk+UQ69QLCu +deVDivSkHe9MBJ+OicE8WzOatHhNF28Any0PTMaOWtJkRNRL8T10FGNgMlee +SYT/jtt6gUdw48zXAZzXlgr5xbrg0b9z2/LKLxSJJp5DzdBWq3a2bUL/VN/D +43YQfPqUCE8J5q0R58sVK8An5Ae1xyieSS5/iXhWDC3c+mzMD5937XnEYhvw +avI7UsSF/sXQEq2OAp92rrfHW/+gH6d4HJEEH2/V0NYU9E+6rv37U2hmgdzd +4/Ph1ydy1f+AV/m3bY99V9HkxfFs5jXw8eVZfbAU88tdQ8unAXycD5SEcwxS +pHNsSI4JHkde3bJahnpWr72Tbg4eh6p/1vh/Y5IFKo0hA9DH/nAnf/WjicmX +/QPh4MH9K25wGfzL/5u/Df/N3+3EbGqdFC/4bGTnTI+FX20MLNVKg+5JNuOy +0oB/rVKNCASflWv4f+QlUiQrSqt8OfiYPjkUp4jn18ho8NmBR6TWsfj8+TQJ +vp8oPQZ9fPGQoPdOmgxudTN5AR7iTAvtQw047yYRr3Yif42tzdFi2GezSjW4 +tFjzwyhkSA4/z5ysT2+EPu3COHdhFv1HZ8RpMav+seFsuWkU8SeUVyZ0pVwd +95ub2E85vY6Es85DyZvIGswf9q27cmSR74vr+h8iXGhyVkn9mAPyUe4ZfOkE +HvmxF9KqkE+YTpnyDdT749ZNyamI955tTus++KFXT8pN9FFPv4NfwosW0UTh +vnRlMOLXFhDhvbiIQfoq1D4tQvxeSoyAz5jn9r3s93OgX4wwpCPHKFJ/5uaT +HtTz9rRLhTg3/NVjN6dI5DPoOcO47ECTsZHylU9Z8/DcOYNFixnETWNYZSfy +8Tx1nFoTTpGNsU9XfEI+Sg9lqBXYv6jHb9r8kM/dO/5e+eDhZcFr8Otdu+Gz +Iu78zTl7iMel+3UqyO+V26e1Aui3c9d2CqQgvznWU9kChzGvO35e1mX5ARnj +jjTcHxvtMoejrPr8qpKOwHyWKF5bIIh8p21MuN7p0uRuiurjbci3bqcz7+oN +DOI1vzr2O7T/YemErucUkVxhpHuK5T+/3Wv7XU+RfN03im7I70KdyFPWPrej +eNhYA/lEi3z8tyaGIkoNT0I/QMv94ZK8id+/bxa/+R7yc7EX2W/jiH07Iv6l +JfJrLDq0vWA9TTbHGDZ3Qfdbtf9Qm0K/qS6SP4b80ryjog/jfOz5STR+NLPu +U7H+JJMikRveJq1FPmnFh/1cnzLJDvfq7rfQZ0y8d4nC33gcvb5SHfG2/r7H +sR/37+uex5mLEa9NdFhMgg5NqsnEyfvQXibvbG+p4fwffvi0D/UR83q0TfId +RfY/HBILRfwvOE0frorGvK4f+PYP8dfppx4foP/3PqP0Pz+iR7YVl8b/gh+J +3PEm0nkPTXIz1B5EIX7BEOE0XvRTq5qxckX4D43G/XlN/kxi7xejUQW94dmt +tNEwBuFd477OBfnptu+/GZcH/7X8FP8/6Dzttm1iQRSR+vGpOwH1dMhV5Yzc +zSA7iiS+aSNf53GOsktfmeS+d/KdZmij+mIVyQM0kVloY+eH+q5Py5Q/hf29 +tdt8lB/1lJ+d18t/kUFmdMSncqDT9rlJzXZQpDZV6cRG8PqafeD+AviRjk2R +k13QzhyNs/vVsY+9E3A6gvPNvydzr5oxk+zdfOW7OPhtOleyehf81ofcrXpP +oNvyLHxercQ+y6l7yB48GwzvFDB/MohyDJ3+G5pt/4YtudhfxLmaHp0D38Nf +dllsjYP/8dBgV4f/8HvItnwjnudYUjX/I7TmVdMvV+SY5Nbv2Glv1rzsecF9 +dRnmG3W9ZRHOi8ZPnwQN7BsybuFrMqDV16/R0MU8Thh+9sMA/Ie2PVv2DPfD +ZUHXnlboM4uvdigNM4kxr9EsH/je4Hre+GQZg3j8eG5xD/rQHcNl2/3Qn55N +vjYHb4sDM+eCMN8UX//60QftYpvJU7KGSfZ0KvpFgXfvil/JJdY0+Xe44o0s +eF/2f2b3ZB32u81itc+hmX6eq89Igf8cBfbd4B1y2WmhtxyDTN8bPfMb+py7 +tl3JE8wf4+wDceCttrHs0tOvmM+vhAKVwFuNRMz9dQ/+MWyrQg2061VTQf92 ++IUtz/Vp8Nabuiq9GOdN8cr51Tzg6/SPvHl4jUlkhVY9SodmZsucUNZjEN3T +zJBN4F02p02RM5L1fvd4fwe0gLtR037c56UrArdKgK+ul4ZX+m0mqQz7llAO +7XSbS9UU8zupef7ineBrfWrkVZ0U9nVb/U3C4Dkv2CZzIhjz3WnB2Xzo+VUl +jwOkaVIazV8WDp7bdv9NWob788Vbf0QG/OqPLX1pdpkibW8z1u4FP6uFa9ib +8XkO/sra7ODl8kmuZ9c21GtcZ0obfMbv2F71dWSQo+OnDT9Av7uwuG5BDUXY +Dg6NeYHXyYyz3kqvKCKRqboplbXvPopdap3AJMw3Cvym4LOOWrLWG36NTebH +w27oZjVhtsWYlxtjlYVDwKc6zVnG5BKDaPLQF8XAQ6psi7gt5t2Xy2vri6F3 +iZ67w3MP9dErfXUJPG5kyKx5uJEm327Xj6uDx+0cLu8nqH8TUT/5Fjpcc3h6 +0XomKTxjnOwOHvu/BDvNo2ii55SyZz14PDyTd3UZ7ttyO//mRugvXmM/d2Ae +HV6Rl+oDPk5d37YUYd7ka3D+5gOf2BOebcfOMknP74LiPGivf2u2X8H9zgiz +c7EEr+Nqy7xVsN+7LBeffxp8stwqfDP/USTYY+cHUfDJUdHdNIz+5yHg2fwI +Wm/O3PRGTgbR2kmtmACve9n2/0TFaXKyztHzMviISbnkPbCgCXeqkHMd+Jy4 +Xyfohvm2kYvp5QkeYb+FGq/Azw4bb/lpDB7z9m7O2duGffjVEvce6Jm+cxfu ++tLEehlZHcq6n+0LeI92wv+HH6XmgUesiWt9EYMmV0+kiN2AjtMNFjFEP+7+ +ohvgCx4BT0WK9JOx35MO9qXgEX5iNOxdKEVEN+7j3or8573Y986UHfHSB3yH +oTWlTjUwXbH/CNpef4L8Y4ryucca4RejF5VuR77Bd9Yueon75cHTNauK/I50 +3DrJ50STvu8rJ99DR97bxh45lyZ5FvQ1Htb3EQ0bb9ZkUmSmJtQ0FVpk3bn6 +gusUoZJSd59g1d+Lc3Yt7jdPpNZ3SeQnkjiz+TXOl2zZyaptyEe838PgYABN +9G9djatAPktC7YyLUF8Zhl98CuItf/GJJ9OZJvUhUZc2oH6Cmn4bugVoIha7 +ak4A4uefiTE4i35UHCWryIP4MxVXf5FDv7RSOHszA3r7fnNG3Aj202GXWx2o +36WnbpzVbDQJWbTI7iTySQxVyYnFvExwTVnwCPWrUjpsaQY/+8SYGbAd+Tjk +TYzdO0WR86v+/H2PfPpTsnd9w/k8+DtVhIl8JAzW846BB5ckm7AC8mG6n2lr +xn5xXn+QMwn5nFbtaMs6in054WrLetSnNVht3rMcitxwGLAKQn5JFxdZV2+g +ydqgKQ5+5Cdyze+7PO7L9WPqf7cgv0auZ+OeBgyi/aHsWzcr33W+7KYvKSLs +8lbhOOt9ul/ApWvv4feig9fsRD6mlMmvN9jvS14xI5UR/4jUh6SOWIoU7/7o +WgN9m/fcsV3Y52a/1illIh/uHimpLOyHT58wOcyQz/xXGeE5+jRRfbBA+St0 +z4qunxfnMImZw7yDwchvh9kdwzD4v8E5FtIDyG9jzMQBFYoiv715Dssin6sm +QcOXC5gkM2yquYr1/nTwBJcf/IWW8flAJdb9UrfOyS/Gvlp1OJoH8dZHt5ne +1KRJ5PnbIdnQ3D556w9o0+Tw97icLtRD4PvhFKFPFHlZwXA7ivifiQ4trj+D ++e4t+3Ya8WfH9sdG4P6suuTZG4/43gnkZG01ockku431AcS3VT23Kz8D/i5b +NYob/NMKpSUsUY/EIY6F3xDfLdOHFoHwY85ZWhaF4MswP53W04x+JrjyuiXi +XZu1eVdfOe5Hpt6v1YhvfcJlMxHwantblPQK+otSndZqzFdfipZkR3z1buWd +PPCPC7/nsCex3m8NrfnlcIUiYtP9ewTB0z1Rml0TPFw/SjlvRrzTo26qOZgH +dq9z6WLE69/le3ctgyIvMt6djEd8YxmK7irww99nZJWVcT7sv3qcnY/+v0OM +t4UN8W3hSDn2E/7jz12PzYcQz80nJo+U3WhybD9zyhLPt/ndNRmH8ytv51Nd +BV7fD5eYhHqBt6dD/D7E89ctzquDnya62in3pBHPI+bQJk+c33R3tvZziKdF +eZh3Ngz3iX3IXZHVb/9I9XDdogi5uFmPgfgE31+9s02RJobjl5J5EN/ogymm +I/bLlr234prBc3RWV1UQ82bR95YlB1n1j/n379tb9Ku19eI2iFdEpWr2Ms5r +0HfmQjnEW6Ty9p31RYq8Osom9By6YNniZRqFFLmyyHgmGfGPzlFN2rkF/klF +8qg+4m8ujDyijf02xCd9Ps3aXzk7sy+g33Mo7PrXjviffq14vQ79xKzcoboc +8fquz7ESwz7a1HhQRpZVX7XKIBv0+8MXxmzYEE9fVEJZIfrVXOVZ/5vQU6M/ +NZ9vQv/sYnzzY/n1xLVVMdjnHidevfKD9X5yYVgWH/pXDtX6aQme//tRRrC7 +P032NZ4LFgEvnln21GjM85B5c4Wd8Pz5d+N3SC6lyS+22UY31vvUCoFPwfD7 +v+ZG2jfjebe3zuQvmWBi/+fPyGR9X9154r4E/IrzzUOPH+DnhTIqLp+apMie +8J83g5D/ibI/5pbjTPJ23u5wTTxfynnVISv4N8115raGeH7VuU8+Cdi/OMRi +3ELxefu2h/42NKZJ+TPl4w6oT9XD31I9qgyy+v0j8zP4/D7lg6s/4b65eQZF +9OHzf4S3DjcMMsiVvKxXWvjvlh8+3DXE590I6dT+Cf+u9Dd45SjO28V16dJn +PrPePxZ26djQZNHtgp3r4NeDNfffSQpCPuWmX19Azxsb5T4RwSAfVL1u70B9 +eKsbrKNQ32yfpsIZ6KLm6JT3BymyY36Q3SXEL3vK9M2+nQzCYVLspoX48wfF +4zWamUTTInzrZ2j9A0elN6Pe+tlhr2icvysD0tWLnjDJx/o355civ4cf/hrX +xTPIvhuXU7Ogl0bu0qnrokh11dikAfIRW5d76hLmRVnR1Wsd0KsTc0r/KDNI +GEdAdTDmhYl/itQcAv8zOrxflNVfF1ZI/DClybk749/KWN/fN8iH/MB9fFi6 +bmQb+tXvM9FJDpPYV+NzTcehi3q1OX+g33ZW75GPwflJs1eQXIjz7ZZafEQF +fv3RZ6+gXjzPyyQp9wP0B3s2vzxpJtm8KYfhifMlMG9Vz9Il2Me5eY7wsr6v +N3txZBz+Xcivvz4VmtEmalt7GX4h/3u8Hvgb2gszUlF/ct7+4xfo5R9+DeeP +Mkmgw2zGYtb7HEa9rNwKBlGYflWRDV2WWJBzw58iW0S3UGbg7amiZna8Evtc +Z5xbD/TVw3n+1xEPj2/lUCR4RxxYUdCM+3dqR6afDHhvSHSoopTQb3utNj6D +3qGze8QJ+8fHX3dvuIL3AM8yud41DLJnmbfGOOt9mH7HfO+nFFHxoNvPs/an +Y1kbKlsp4qWrIKwA3ikHkv95ZDHI1fy7ydXQGgV2s32ot+O4UBkF3qGmD8oj +cB8Gzmu+nwe+OzakepTfhL9/J6CSCl3uV3OB2sgg1Ll7Kw3B2+CM80wb/PuO +n/Odvnazvm/b1/0S+6pMqtm4GPhu2eDb1JPCJIxaDp5H0Pe9uc/7w5+sDA68 +6wi+XtERbhayNPkb1DE6zHpfVixk+aGZQSqE9vetAN85Dcn5GUHYn9uOzTyA +DkywMWfi548nCKmdBF9aIXTWEfP3aOXFC1Lgae1SW5Z4iSIROw0y3MDT1Ek7 +7AX8ZMu2FR2z0Dy7x5532NLEvrvsihZ4Hfo75/xFnP9uJ/ahOujTmkaFZrUU ++Xv5AeXBej/EZFSyV2H/aT6ffxO87q7g8tl0gUm2+J+6YAReZaVSE7twP8tF +E3Z2QteUbmNs/c4kl4wlzx8BLyVOM8vXiQyyf2mumghrfrnmMPdcpUiya6Fh +IbS0+MhCNviV5shPOhfBh/3E070dBjTxIuSSKni0Znalt2P/qNmWqFANfT9x +5Ii+HpNwWTM27QUPlxbN5QLwr8xUJ16NZtb38ftctbvxeS7B2xqgb8UYHNuP +/izmN8+UCT5Ly4vpwvkMMmh1a/9i8Ljy6sA14XAmiY3Yov6A5V+Ln1Da+2my +bo8Olznr/TX/1xdVM0xiPyflzinwEWw4ErWKg0Ha3zYcEwYfiwdCgQLoV+5a +CnYl0PkKB6U42BkkI6Y6cgy8RhZ+SvFj/X1DUG7PJfBxuBe07S7O946dPB/e +gs+vf0Yr//6miB/vvQUHwGPuuY+JO+Hn2epXXtkEHsulVzcVfWGSf8sUm7qg +v+yyjeKHH2nIzakMAQ+jpioR5V4mUbVM5ZsDHurfF3hZwj+GzFl6/jp0A8+S +DG34rcxuwwEmeFyMThE+dYMicVc1UheDR2L9Cm2lE/AD7/6ctET+1882Mfj+ +Mgn3VivBQeiu7K0Pf8CPyRx7a1aO/E2cv48oNVGkK/eDqh3LH67279wCP2/2 +cMNRZeR3ULnAaq4j5nvnyxt1rO+Ta1UW359Pk07bXD1u5Pc16OZoSzZFnl7i +LbwJvf3IMz/xa9h3e541HEN+PYYpWjvXoP/JpJ1eifxsE5rD+7HvBoRlU9as +7ycHZWfCDsIP59zgeYp8Pty+UVeB+r79M5/vOuKNOsaQtIDfdnT101mP+imv +0I87LEQTgWPpqb6IP5Q2dZq7nEEkfqR8nof4ze/NWbgV/dnC2ko4DZrrltbS +xCGKSEqWLfuK+jVIdd5eCR4uhfven0A+DQstLc66YF8ROB9ajPrpHh/Z9k2U +QYa33BOwQz4V5g+LfOGHNH0FfeuQT/Ry2olVj+k4vlJv5KNtWnubyUOTbb1y +T+SRT8WBzvVP4Ie2m40evox8TKXtg8eP4TyNjoRooD7HnEZm+bLAtyesOgD5 +behU2T8IP3t/e3smH/Irf8bt3GREk3iq4JoF8tvh5N9/Fv3plqbmhU7obi7B +okn4+RUnzqcfZX0/sMFhhIn+tE29Lt0R+ZSW7ozdhPPe9+7eGkXEX5du7VF+ +Dv1ktVtNNfSBRSOddvB/qWuHbqUjn/S7sicacR+NnJtvGCMf88cDVY2GNJF7 +7vOlBXrJkW7/igVMkiCmJByI/PIKNUUj0O8eLrZO6kN+Gx7Fz9SgXorhmd+l +kc/Z6IM56veZxJrvgsNL6MVPFny6Bv96I3O+lALrfuUrfG2Gn1eYbvo7j7VP +RfOmyaqjH2pN/7kDfYwzLfO1Hk3e3jgl1YF6XLjz5WX8F/id6rvshxE/+5qn +jzPRn18XbjKYRPyJhTHL7fywTwu1OMUhvoBc0+8h8HflC7ZX7UN8FivF4nLA +e+Xc0wpzwT/T4QPFdoQi4jXf8zoR39b3x9ZMwk++WPRwIg98ZUYeRUtjvnzS +6RIwR7yJ8hfUfOHnX9pc8pVFfLr8N0gO/MrVly6bKlnfD1rfM7FejvwCcitm +Ee9eLlE14XyKfMhd73MZ8f7x+P1a4DJFbiU4sC8Hz1MjgT3j4JFz1ZzdFPGO +jomPlOC8CNXn9xQg3vyGbyaBTOzDmh7/LiK+p24vjtTbox+2LPykgPPxm+vf +TKEMTSpCw0/PIt6VzcZqqYjvi/2TykDEw7/I2f4O+ncO816SOZ6vcmRPJR1O +kfcpMXovWe+bzKdWVOD5vHNfqO1BPDFe8hwugjQ5y1ZlK8n6PtHX5Lol4vGm +5zjEIJ6pGV+fTfj90Z2G3OvA73dzW6t9CkX6JDqKvRBfocSTxwFraVLZcMSY +G/El67y0/IJ+aPRKxOAz4rtz21fI/jVFeHhvnvFj9Rfbzh3Fbyjyrn7NNStW +vCc+v47GPpU+eu+eDOK9UmCevC6OItGbok4/Zb2/FKCD5cHTYMce+hriDxW3 +OSRjQROH2hhhXcTPn3+gaKc5zotm7T0K8Yc16Eu3Ib8qzX2BbYg/gmOxnRbO +5w+LEeNHiFePZ72kGfw80Rmpk0Y8bx/ezgqGn+9/bvP8L/rDkZPvxUTRr759 +shtNRnwaIQsbH8P/Phy4G+GDeCaUe89aw8/v+1a8YBjxpJwyTg2Gf59WnXNs +EZ5/3dV+8TT6+TyVbmEh8LrTVn61FfunbML1+O0sf+4/f5L19xo/pCu2urLe +r0VOqlhUUOTBP4XZJjwvvlFdymaaSRSfZUtl4Oepq8urKlBPxxd663Px8761 +Kvz3xynSK7mLHET+lx8W7WDDzwvXRsqrs86/a8gHFfi5zxHJ4/p4fq/TojXJ +8MtZ2TItIfg8zvTUhfs20qTg/gNxe9THfF7WinmaDCLz6/jzCHx+jffempaP +FLE70qLcg89/NtBGc40xCJugTIAm/jv/N9JUD17y0UXsbay/hzUYN5hCv7n0 +KXVLLj5vg+Hu+QrtFDl105CSZL0/5XugXIv9ji1cac407sfm7vWXmbj/2XXK ++nz4/OXXxB4cxH5ptjrJYiPiv2rtUdqK+EttL0/EsN63vx+5swL+hve4Yqsx ++GuF7dotB/4r17+Sfgr+XM1sDcK4v7Ixy5NF8fsFBye3LmP9vYv+kvvu+P3c +8jkDxauw/8VtjuPE+by/xZm7zZom/BcWJTSw5v/Ql95anMdY6U8JmxGvqtjs +rkD4xbkcSqMr8TxaaKRmE+5vzOg1+8t4nmFd5HAYzoPHc7GpA3ge3VR6bQrx +63uK6xXieddMLhlM4Py5y133PIPPL5EUGC76i/109aL0SZyvWdMG1ypJmhQO +ru55Dx7rVwvlhLDeNx0dG+3D5+/we3vZBP1sS0/0Ln7U71uKRtRxzJ9+T3ND +J/DXWd29QRd+eO3ooa0NiPdQd9rMew6aaM373ZTOev8kr8R8ivtpLXc3jBc/ +z5NrnsGGebiNp3J1FrTfWudXMaPgp2uqrY3P178StNgnF/1Qm7sgFP89O+fC +huoP6LdJ5j/q8HlzBFYpsD2jiI40xz5z1n73ZMmwsg7mw4xxzhDuV+Muh/pL +DNzn9uVvVPD76TxiCpOob2afJfs9xLeh+dlLrvU0SShVeBLCer+5RHj3zFmK +qE1afPbE79fIZHQsSqMI/yLR/b3gN17ew/j1f/n3Bq7F78fVfO4eQf+74hLy +Qpjljza9EwnE/hb7JGuyFL9f8PPvsg5v3EcxckYV9c0r+bDCeSVNfhZfVOZE +POjuVQTzTnTu0rdH8HlKviqSJfA/Vq6KjlsRz5tDawx+n8R55bZ1qAZ/U64J +S2HsS+07/3hcxOenuntlFsNPlQnc+82Lzy/l0TBUQ78J+Le6rxX1HSxwl3KG +n+Y7dfSmLT4/qjNf7Tbug1mHIrUGn//p7hbOgxco8rNC7sxNfP42fUVdJdb3 +VfH5rYT19zfFmQZCJjRRzgrZ58t6vxlv+z4G51lXekdkF54/WxZoIIn+tWBX +fDsHPl862mOXCvYn2ciMidus96v7my5XYV7bNSsYHWT9fTGHD+cb3I8VViGr +xvC8g3MbVo2gP738kPvVCfFucjVWfKnEIN4OS1v68fyXUi2MtB4GaZ274Nv6 +vn7DYfVaVYYQg4R2L5/6DD3V1tDSJYPzedZqg+93/HxNurVGKkWKoxplBfpx +/h65fipuY5BiZcPlhdA5R7e8HsS+YJT8ScVyoN9Q7pP3NVHc57T9j6eHoU1O +TqpaaNMk7ve7kYjBfsOgOr/BO0MMcnhdZY/IUL+hvErwuqVOFFlftiCqHPqR +vaD+6SFvcoL/2E67YfiRBTPC1FIGSa7S//wb2sny7t7+ONb+u+7k+ZF+w3V5 +EbsJ+A3tmVGU/YHz75lpuieaJgdaRSNfQZfKJyckNWJ/k/Bc6DaK8yxoW/TU +gUHMHs8hXD8x/xs5bwu1ehMxtvCANOiLEZm6mgoUCeFR/qgzhv616MB3/QoG +KaDXdrVBL1t18L2/PE2Cr28TC/qF+b8py1sijiYatLMT7zjuc9fZ1aLw61VX +Czfeg15Rw5PxWZlJvp3XdTSewDzg2HI8Gn576aPxf0PQCyZ6RpIavQlH8P/b +H0XOWaxm7Y+540tGIlGPELuJ9DKaIklFqomrUI/+k3P1agwoohG1VPk59GXv +ANczegyi1RaV7I56ZEuJzByimSTkAK8MO6seG9afvon+H8BhkXAd+sISlfXx +x2kimms6ro16eG2qMm97wCRzL1p4v4eOF4opEYS/dvzVV0yhHn92l6Xnd3kT +Zw+jMW7wbxM8pVi9iyKLh12E06FfRs7YJbUzSEC4hqIR6rFr/7XTHEtpImLL +79QMXefzeNPBWJrI34jeGYR6ZL/97h8K/9k/W2HOj3qs/mDLEbGGSXbQRbIP +oXN8qjQ2BVFEdZfxFzvUo33VrO6ZZ97EKvxL6g/oBetGR/71U0S4XME5BvXo +SePQCMB5SJhrwLYW9fi50KvdFudve4TDo2fQdmf7t5ofxT4VPt/KBfX4HGY8 +90Itk2xPOFQzBd1HMt+2HGWQmVVCOYmoh7FVZchlAeq/+1H93/3YQkxmF3q5 +oR7zZWT+sv49x6Jamdf/oM/e0E3wlUP/PHtfPek76+9FBBQ+Yv+YVH+wRw/1 +0IzZL3MZ+Ym8lb3eDD1o92ewDPuMszVfdwDqsSZJ+7xGOPoPD+ckP/i3eR7a +dnyWSd4axSrkQP/2YsY9D2UQz/OfthqhHve1fobXLqaI+dLVBl3Q9bY7jr8T +wX4ROqR9DPU4X/OvqO4wg5yRLeUUB//rXEGtlk3YLy0khgug7S6OsdWF0CQ6 +1OilFeoxt9dNfWsQTVYP057D0AfP+Gati2CSbtMlwmdQD9k5ome0uihSHrsq +Zh34S6WELhgs9yaFFbm8b6ANnjn7H4RffNt178o+1KP8xKRgGs67rE7BKBf4 +x1bHpuc50aSXz566Bv3s6N59XDHYn6cf1quDvyX3gQ86vDRZJCTI3QB95eql +kqrPDOLTLB9Gox7pL7iF+HbDf8g6Ry0F74wBi5lPyE9waFnAA+gDa2ee5erC +b90knhbgL1CxopO1Twaf3v8lBrwFynni3+QySQfHzyxZ8B5MnuO1FftodP4p +s0rodr2qoIWYL4620T/dwPu8bLPLV3smIV+5MyegwwKNns5/AL6O05Lx4C28 +6+YtzSZvwnzslqEI3pPrE2dewK827qidqoWOO3o729SASVy77zt6gbes8BPV +UYJ9dyf3Czbw1RQ9PnQc/eLV44bRFOh7Cl8sOcXg3xcvX6cN3lqWk1F7nzPI ++wRXtWbon13f/XnFKHJHyV3uGHh7jqt0f+j1Jj2mc/SWg/fLPZkKedsZxCMh +Z2UhtPS129ese5lk3odXi2zA2/z7lgxh8K6cduLphd4mfchwCvvcrSVur8LB +u3FT6wK1cCZJXtZ8cSV4u1hQPXZiDHLaZ17jc+g2k4hRl2/e/92H0v/ugx65 +GBYtZwn+rR7BX3T7wOezWMcgtNwF25iOlRSpP/uvMBz1cEhlWx/3iiKO7c+N +1qAejqmdf+W4mMRrNu/zK2ir9KXte+BnrIN+nXVDPd5q5lh0hmHfKXabYgd/ +A9m5cw3EMS+Tc2MTof/221+SK2YQvzYrEWXUo8dc4M9vRYqQXiH3d9Dnf+W/ +buSgSLe5xhsP1KN2cUXNHhMG4Q86OsyDelhN+QuJFzOJvmm61m1o86oxDyPM +S10/icPaqEfiw/Un/uL5r9wrg5uhTTu3BQ1jv12dXxYXgHowD4oOXhdlkLD0 ++P2CqMc6ZeE3b6u9idfuJFIMvXwVZ5M95tmqoBFN6zFWvRUzo/4wCNPep390 +jPV+2PaiJvzk/U/1L86gHn+/zvVYeh7Pyz+dIIF6iPPt3lIvRxOvHQdWPYM2 +rAycyJ7LJPKFaowdqMf7rto88/PwXwWn2v5hXoSqCMQU3WWQfb4XVa6z7odg +eqSJDUXccjaEaoE/ezBvRdk2ijSpHio7BN4eCRcOVZ9jEmWN473LwFtAUNeb +E37rRPOBkQfQTsraihmBNNFm7x/bwuKtbtPQdpJJbmvJ83RDT71/4OLXAb+Z +7jt0ArwP5I2PfcJ9cI/bViMC3t53YuNN4ff8ZJafLYVemZe6YQ4fk3xX99/k +AN4PnkgGyKyjyRKH2EXD0Jcqk69MI/9DuffTo8DbvCJDpWoDTSxOUzpy4O3H +m5HJel++nHPB3UrW/Vhb+tPJlCIM049snuAtLO72s6remyT1jPhwgu/85dJ3 +10gwyLM1Q+U3ocVcMrWOPGMSq8GT8/R/sb7fXHm45RT85NOmPQ3QBZmTn8x8 +EM8b9Shf8Jbelu5blcMk03by93nB+620dc+0JYNstFjy7B60LNd22+C/3kTW ++NXAGsUGw4cZwj189fZk+tC5nADwf5vK/bcD/q+hYu2DpeA/lLsqhV0J/TEx +0W0Y/Fvvj713gJ/zWKOodwa8KV/xA9Xo/7POaRNy4Ds5Z83udvRrt41upxzB +18z2/gqBX97EVk9TaAJ6eudT3xg9isx+/C2oAn73F6y42v4b/XZr0u1X0EXm +x7fIn6ZJ83mPJXvBs2dp37Jj8KcpzXtvXAc/j72+4QbZmE+BBXkE/Op+5ha0 +op/7WzOng8Erd3inCsOdSdokpidXgM/wmvuZEhRNxC0bl+VCv1YMFxNFvIMG +bUs2g1dsXnfSjh9MUsgmdfnUBOvfK93aY60Df52gprUKPC4GpS/N2cwgbz3i +C19Czy55kdcqT5HBeFMbV5afoai0wAiKXHy3j7kBPJ6vqvO4in36SszNm1+g +pd7fty/APtga3ms6H/nzinySugl/TnhObs+EFrt+1PdTmzdpiBtmHEP+Hw+m +r+DHeZ50DTu0jHWeuuKfr8X5Eqyd1M2HHm04Gqo4wyTR8g9LRsCj3uNoQd+U +N+lcMb7lAnicctvT58mD+c5JhVaDxz3HrF0/MJ+eFi1cvg/5v7VSVPPF582q +Nz+Ygl51/dDt7zY0eRs/29+E/G8lF/rMtP6vX2b91y8VSPELi7kbWX4u2vC5 +4T/0J1dhRhf0voMtPMJSFKngkQs+Ah5ri+s37cP+zq1Zo7ES5+V77g0vn1EG +uXB5OugJ9G6r5M8FE0xSzbPfdTv4TM/lDTiOeZ5/bvHhSeg5dsdFjXG/Os2J +wXmcJ7bs15ec6hkkMJyHXRa8uB9XLptjhP3m/dLJSujCtB5OpUlv8lDJKc4V +93VQ+bbjunUM4pTSupcdPA3jE8wG0+Hvjb+3JkIn6em5b8R5uOQVa6cMnnsF +pdMbIlGvm75sH6Avc+/05nvJJOb9F629wPfGqyIbJW0GcX+4xXYR+K7mXLx+ +DPf1xf1zX+5Bszls5zHZRJEPTxfPNQHv0qyj7Gu/MsjFzpr9fdAdQt0qH7FP +XtJe5nsCvB9caPJMvAD+fD+DluP8PS5MFHJVQ33/LMovgq6uflpbIcIkkdLF +nVtRD6GfMYkDGRS5/VcwcgL9km44ZC9XxSBn82yWxIH/ibVDfzJdKfJXRXOh +EviPHzvzz2gzRSIjw+7S4L2U8+PA6+NM4lD7MpwHfLf8bdptYkmTaebnigzo +gzcKVMWP0GRt05UAI/BW140+15bEJHbfSku/QDfamHab/aGI3RaF+kDwfsDj +tMUE57X9mIXbUvA+uWt+J/dBnOf52tvuQysG6CxsmGIQRZeG4i3g7bT067Fl +2G+X27/P64Z+cVVxuOgcTT5kiIeGgndn1CKZNWY0EX6+4rkYeCf6/P04vIRJ +tDZ0eJax/EMNuWQFv25tGzPkCt6+UrmX72Be/dL4xjMNnTXydbCbC/PJf2HM +ZfC+zdFYGJTFJH6HOk6qg7dFjJHCFewLftKCi99A91Bat33gF01Xp1AHwPt4 +/7hOTjmT3Bl/r88J3jseHv08sI9BUoovaaZCa65Z9P30fPjVbtkRqffvDPk7 +nhp0K20jEmVWUV7gn8x+ODYW+6Wv2Wq9+eCvu/pB0oa18NOq7bPd4N+cQ495 +rsJ5LktZchy8q8Nz/hxH/xlRswsSB9+B9e8/5w4wyb7vIl5W4Jtt8r52lJ0i +tXJKOYPQ7A4xk/fWUcRo1jFWDvzEooIN9vUxybotrWZPoMOZGzJmMO/VzzT2 +O4JnhEZv12HMgwo+bZc48Ot/aDJPF/v+lzDGDU3wmnp1pb0b/VIiKfY1E7ys +8lvfqVgwCcc9h4OLwMfg8MrV/XtowpEr8DQNmjN0G1f4GZpIXzf7qQ9enZz9 +/D7w98uY6byHwaf47sdyZSuKOLRVdYiAh2LSxbA3uxnkZ5Zd/CPoSvUM132q +FDkjYtRqBz7HV1Q8vxZMkVLPbF5l8Cjd4+XJep+2VHLZwXfQofPK9u92wXxT +DZ78Bz4C1TG+H68g/wf6uingITq7iOd0szcRKtva5Y/8Z6tU0zgsWPPnpTgP +8reSiA5dcpEmPpX7V2Sx9rU9/jtuLqLJPbfIwG/goSeXd+nwAoq8lL6rfRo8 +JuTN94ujfz6yjLZ+Ch6e07IhEtPYH4y8L+5A/lKi+kMvsf91XhZ2/QEt4bYh +8P0O7IOcJ91qkX+cn7jK3Y7/zdMX/81TY0KRGrPtyN/PpNb77nuKZNtK2k9A +fxZ8dSFTGn67K6zIC/mevvdKZgDz/H3Hg+AFyPffRPSI1hKaMNfHaWgj3wL5 +ZXrZ8M8vZyQ+fIaONjp5LmQhRbQ2743LQf6/rbMoE+yL3Ycephgh33eWljtk +j9HkRlLrISnkZ+a8alc69k/zV0uZf5DfV+FZmWPW6PcBlwTjWP5aUWN/FPK7 +4CBWII/65vN2n5snTCP63N/7kJ95/eLaTNTrL+OH+nzEfyn2/gvTSwyir1S/ +LQOaW8pm1R8TijyX1Rs3RH2zKQbbd2f0/2tam8UGWO/7b3itcabJXLMJkTJo +EvAhsgTn0/Jfwbwo5CP0VE2np8GbpPIurXVDPi4Mi6dfNWnC42Th+RvafXTR +Jj3UU6Jo49t45Pdwkhi4r6XJr7fqP96hnsci1Wzc4U/O6ojx+yPf50J8W3pb +vAl/+9vhbOQ7R1fi0YkG+M9dslGmyHcmaqpS4ixNslwSC1uhT/YU80p6gl9r +lEUJ8tVpv17uMepNONI9+5SjPhlaMwOiDQKdSMP6dzUhyPfYsX82dZjf6/WU +Voki37YzJw/ba1JkOL7MMw753T2Ro8OLejpfTU3eg/yMS1aySX/3Jk3b9CL+ +QY+5jfV7476U3E24rY385pc4XRjlQn42DrPvoftkX445RNEk7Mq0BoPl33/0 +bToOfgLefyvNkV+6aNXZRtzf0rhrRyURf1LsubjFB+F3vyccKGbtqy1Fmnkn +aFLQ6a9ki3qqicS/O/iVSZzirkueQ37Nx+l5Pqspki7b+KkO+UgGW75qx/7v +vV783UbEL2zBrckH/yw+rVTbDZ16784Km800Wfd5++WlQ6x/j7gqJZiiiO7e +Kp88aHHd/ia5Tm8S6x0zGYH4b7C1hwi70uSnm0GDKOI3Sk+ZY4rz5fWreWYK +9fLMMm7c3udN2Hj1dl9FPq8vH/YqwP6/p8TiYQPqddh2fq24KE2uyd9PZCCf +wFDxQ6Kov/CHq3M4kU+RAUcPB+YFvfrwwS7ks73a6r7FF29S7Z49rot82Dvn +HXHgZZCHNwXz2qDts5rGQnDfSqtLHQNRr8mNetWWdynS3m6jKIz+/KDg3w3+ +PgaR6RarKoX+pnB7IgV+8HSDuJkN8l8yosNtdRT5/9lfOga9b/CRnBnmtfbN +yMtRuK/engFfm9oZZNKxb0wCPK4ErbwRhfpOm5wzrIA2D/kn0fwT/UrKO8gJ +87H4q0ad9koGOaoWmzwD/XZUcrv3dSYxeXFWOR78OCd3733mAb+2/6XhWvA7 +1bNz906chxMGpkY10I+uzLA11jCJ85xZRXfw3E6Hc02aMcj24szN88FThDGf +EYF9xsfxrFwW9LWh49L6Wti/v6UMEfANa/Edz3+HfDNnUrugFW/khMqo4H4O +qlYdAe+zXs/6ncE7iWR48IH3KculkuVa6Kdv9vx5CF1f/U3bSpZJNHccvm4O +/keOMHjL8igSLdnVMgp/YiiXs+Er/No1uwf/YsC/8amvjdoB7A8B6rby4O/D +biZ+Bv7NTW1euhd4HyiZSH0dxCT9wt8b5oBvoXDkL39TmhRpXcy5BX3KcSzf +Cf0sddOPfAPwTny8huEKP3dXh3NZI3SBRn/tfW4GaZRYUOkL3tsLeQ7/bfcm +4mNVmQvBV7nMJNKT9e9h/1hoZkMX/BNRWT/EIDajp8bMwNu5rJwjShD+q8Fv +bju0VsTEleXwJ7O37ZlHwbtNuz8qbAvm4e6huULgvfvmakpbjEk221maFUFv +Xcn1zcybIoZO37ucwHtN6vZ+wUpvcrP1q8M4tIrqj4ze35hfV64HXARvI7vB +8fFkJuEiSyqUwDt5y6e5Ezhf3Q3r3Suh13ecbGH9+53O7XYue8A7rEjspngl +k/x7uSpiFvrm1FLbbh8GsRrZPpoM/vI6/XnnFlNEzeXeYXfwrl9aZ9yYCz8W +JXuSC7wTugOv2K+BHzzOadUO3idDNXzi4MdSIhynD7H897mxlzvgRzxSsouE +wLN366qEFeNM0lM25bwZPF2e7pZv56YI7/Xs8V5or49jjwxkKLL/4vzXUuA1 +tyoo1rGdSZTehlwthWacWN7wDf3HLXxhky34Sal739wbQJP6dWk6seDF7axi +pv0R5yHydYIK+CxUXxjYh3428Vj8gSf4hAsPBAzoMcmlgIi8+eCxX8qh1wr9 +JMBNY/lNaEn5kqAS3IfHb/52bgCPlxF3xuznwO+kelQFsOaVFj1wwwH5c1zU +XAEeMVeFBCWYDDLHMv9UIfSK+zZLzq6niKPrRmlr8IkYGvyQ60sRq8LanWvB +Q4292LMT+2Zd/xvXN9D3bxnS6+GHeiOfWv8BHwuJ71dG4PcqT4kqJYHHNUXH +xrbP3kTXmk2cZu0Xo5MDU8Y0YW/Z7zsH+b/XP93OEYd+VnGdKw163at02w8C +uN9HxuzawaPslNWpTfwUKVwzXyUMPOwW66cF//AmF31FtR6Bh5qle0wx+lHg +gqR39si/hsPE/EcMTew2a+cPQJcYft7pDj5NG4xFXk+w/vcVtl0I7/ImxzvW +adkg3zsO0tLjLRQ5nLDy6ii02seYcy8lKRJ3V+emO/IrLl488hLzynzL/JK5 +yK8z5vW0zgqa/ODxXa2B/Pan3r6SiHpz+F0X+Qj9V+RajjzOg84rrp4M5CvJ +W+f1EvNiSeD3aIMfrPtlOMSH+l+4scFHDPnoVK6M34D70BJrmDOBfLifa3R3 +wK/py+YzYxG/9DzxXivct3URH9JWoZ6Xz91iDknQ5Ohx34e7kA+9Y4QcPkWR +ngulZ7hY70s7Ou/8u4H7+0514y1ox+t/GiUssX976ujooZ6nx7fcDkb9r/Xt +vCKI/BIPDXslONLkOV/unCJoy+CZbG+cx9oPcdPhyKdinlGVRKM3qbxRwe2M +fAbi+eZ9Qj9c2DT46Cf03+bGoavY1yzzDpWcR35qrgFaCao0mdOXUvsG9Wv+ +PHFzlw5Fjhoe4mEi3z3XilMc0H/7uVwa05HvRJRrteAbJilbZf96I/K1toy+ +EXKaJqKLS3g/Q4u+cvyZj300jt9qbj7yVf15KNLntzfpbVIqP4T8ZPhOZTie +ocjcEwreK5Cf08KNiYkq8JO7DtrGIh+9A5+ujeD+tjHDLrggn4TPK8tkh7zJ +8lclddPQO7863ZsxpkiLoWmbBvLh3au13BP+XfrdpHUN6/sNrVsShvD39y6p +SHsgP/6wvrUhuzEPfJ3KjZFP6WkdiS+4n5Y73pSKIt6XocH9j+DfcpIKy/Og +c8LFs3qxf1jzrZGwQv00+8o0+nqZhLt6V8sZ5MPgma/RjnhLqjSqqpHPOSNu +/V3oR7MnDVfqI/7mU41hC1CP5ud9RV+hRzXWbvlqRZNTSikjCxF/U+HRprWB +FHmsmbb3HnQypZZ2HP39wT89tTDEr23Z/k4Ufnz8a7usIOKvfJG0bwPO05HF +ps2/UJ/r8zteroSfG+VLdEhAPnJHmZmLl8E/tzUn1qE+fzxtLX/x00RxtO2T +B6u/eMg2mqDe0Scf7ZyFpofLjSawL4vv0lVuQz5b88OWyMBfLhcVletDPv6k +XbJAgiILDe8G7ET8XeItX+/j/P96sG7RWsQbyMU8HbIB86HSNCp5hPW/lyV4 +4DmNfst0OKCBeEPcFZZ9R/0CckadlyE+zUR+drc6+CPRlNVDiC8+TqQzXJ8m +e7t0T4uwvu9ZKbn0nwJNSj9bqf3BvL0WaupLlzJI0NKfEldY33/GWWtT2ymi +OLK+Sg3n5ch0dTsb/MiL0FuaixFf99c1dYI2NNFLk/icA+3RF3S/Mxj7+KGt +7UdY76d2ZUicw37F+1o6ZBviLfBkm7qK/TU9uzcuAvHulm2WnyQ0uWJ1LO0a +4mN78CRoqoBJ2h8+NN4AXr/fPrDVxnlg85ssroPeEnWlvMUf90lk5CrN4qUV +s807iSK35sj/Xoj4OrwHrokpUGTVWI/sKcRz9Yi7Shp4dAroB9kinqm3xJ/z +jzfhjkn564LnF93u/XPEmybfj/Jl6YBXt4uMRQfOp0/v6vXLfrH+HrjXI/wA +Tc7/HffMYu37nwbOW+O+RTLj2I3Ab/bEWs2zv5nk6/zxtKeIJ7BkJkcfz5cV +iyxXx/P1X4h6cjNpYu+wI+ojtA2l6RqF/qHZonSDC/EY+aqaP4qmSEWr2+ZU +6Os1L/WUWjG/5FLuBIPX3mTKdQH2qz+t0m8XId637BekxHGejKqV5HOhx4+r +H43DvLpuLHalf5T171FWpD1gve+Xm/F4CZ437vQxIzlpsi1E124X4g/S0Dx/ +FefZp2d63jh0i4UGR+t2mggJV9fQA6zvI0J3LAEvx8AdWkvQvxtO1izqnUeT +wb0FGw0QH8eDsI6y5Zj/p1Mj21j+/cPTjbtx/jWqn5EHiFcn9Z1C8VHW/Q89 +KQee63kmboyAZzF7txIbnlfkV+kuaE+THc8DKi5D+9pbfqvC/BFfOqTrhfsg +Z6m88zP2gV9d+rkmqGdqwsbRj3spsjlET/UZ4lv82fJEF+pVvbaJ/zyen3Su +nxmLfjvvS+byGTy/dq7plTb4zc4Hr/kaWd/XbQrf+3EVRRI1nokFIx7eK57T +gdivr1z5bWnJen9bZ89lHI16ZLw+/xjPl6x59tNtwJt4TCt/lcDz9819uZMP +/VjlLeeJKwOs93fMknehNPlSVZl9AM+/sZBZ793jTZJa/09RVx6P1fa9M5Qh +pAwp0q0oQyKRpLRTSTSSjGWWvOd9T/ESciuXkoQikZKpkAjhkhQiiUsoQ4ZK +ykwqUVJ9n/NHv9+fz6ez91rrOWuv/ax99quyDfzQg+ffXVjRgfUi31Rwp4VZ +n1L9VRzEp+CS1LAH9i/lmn5tAh9KdWz95bBvWD99P/c4+kfbDtfLsL/ja/Or +3/LoXzSOvx+AvXWxexXrN2N9Rgz8XQR7ohs1jzb2sQjV2vkwFPMbWq85moX6 +OtYdH7AE+RAefDN1P+xZvToq/xvxz1SVinmMeMVmdbsnwn5+7llVG+y/ws4B +Nh6wXxsnLfcZfJV9Kizuh/1Dbxfu9cR+s3+tDXs9c/4iPHTg3Tw2c552oBM4 +oPKA22qM/zeD/5kn+Dkk6CFank6RnWsvZ8yHHoxep17i2sMmnPPZnCLgHebf +7AxHOMRV90fJbsRj2mNmqn2CJv05kdafgCPXWWc9Q3/u+l/mlhDkW2P8lw+k +j03uG1iw5RGvw0uT3nozisQG7OotBfYYCFVfDT2zU5Y7cAB8LxuX8XohwyZh +f/fqTQFLJPR1ZsRySHVgx6tI5jzDnPtuBtZvy3v7IiXw0532z8vX0HtcMc3e +GuA6+zqTdU0c8j5yzQ1H8HV52/BB271ssudBa+Us8JWYNEuwAf2gYaZAfRrw +UJGkRrEmRSS+HXbQ/8KcV1MffZ+xCSUiubUbeKT7ovJ/qKellQYevkz9atG+ +8wj89rfydIuhXhyOqb9J6UG/5Ykk5AC3GX8bi1LlkHCvjqntE8zfl+vadvM+ +RQLWGAV/RD3es+eJql47myxXdDgeyuhxIa3p4+gP1lxZM7EC/GcZpKmpGjD6 +d8dSN/AdeTk44Jknh2iV+/nzgd+Pt988FIZ+vBLPWZIIbKY1z/v4Sejp77Lm +G8E3b8A3G/lMDml3XVH6Alg7Va/SeQ6bxAj7baLBt9IFJ3Er9OMP1c7ung1+ +z7q7dCxwwf4/vj89Hdhvm0hFfy+bOOp1XTQE39niak8MoUfjoiqyu4CjT1iP +Muddkks/vfcdY37vPvibB/VsQr0tXRp8P9HV17FfxiFN3QGF+cz3hyoXUUPo +5/W28+0swLevS4ZEYwWL+Kw++Osz8MmcsVrPTxTJznDpjwDfUn8fl9K+yiG7 +UlY4qDHrOSvxy03kV3zWdvFK4CptHWkNYI3Ru8124FstPveFRQ2HqNx9rjwN +HCL/OuKtN5vcEi7afZ05f9xqeTVqHkVK1A59dmTuM1z3XeJXQJG0TMXlvOD7 +4mOrGCclijQpRn/tAt9trNhV6XI0OTmkRR9nvh9KzVc1Qv1UMG+1mA8+e2z3 +cGu/c0h6qluLIfhs+aFsaSECvdV6JO4Doz8k0xYJYr/36XRw/Qt83XadLDDt +5JCc0Odbi4BXCJ1xbz9FE2++27v3gb9o0V73V140sS1uzwgFX7rZqW660OOV +oZNz1cFPzJGnZBD1xaGxV+EwU//rPhka6XBIV2u8qQD48Jv4bMhjC32iu638 +BrCZ+MeUZNQ/ESdLGx3wce6pQE+1IPaDsmcKHuDD95cer5Ut6rvk5FtJ8BFX +oSnsz2WTcDnn6TzgzaPLB+TWU6T01OaqXeCn3uIfa10O1qutPZ8y+PBoeD0g +44L9YE/6i2rg53SQZ7Iz8iH//fQ38LOw5krmdAZFgjmh6THgo6PKv0QY/c+u +OMsHFOJ/M9M2wmsLTf65VriQj+l36vnF/dH/3CO6J5KBR/xIg/sCmhgJKVd2 +gQ9NbbnpNBnkx0qdzFPg4xBvUaXiMIv8DHx/pwh8qHL5o/mHOeQRJ5c2Q/xf +vz7zOYN6KbrU2G4A+Kzm7d3q9sgX81SfKsRfsI8qP/YeeuFeZ/ZuxGvfXfcr +9h1Fugvl9T8Cq+UdDX+B9+cxT0baCfFNGlzm+REIvcunbcWP+Oa2Hz79cCFN +csffJGky3+dG+/PzoVeTMm3KmoC3n1N6cHom8i3YPOIW4jU/0j3Aj/e7fDyI +byPiW/Gq5N9g7DfnUw4PLUQ8pVNyGoHVLKL42dJkHPEsqeEMhhvRZPJXxYIL +8P+SZ2RaDvZ3v0Vq8svwPm0aeA7ZK6BfjmuacxDx/LXYzs/xPEU6UhZr8cJ/ +rtB0nE0am7QnvrufwNT3jobsPOi77+fXv16P91m5NuveQnP0S+Ejm6QRX5uR +1NB/0AvJ3qF++cCy+2XZIfA3ooSXG4h4LnddP+jfyiJtgwtTrRDPpjvcDFN1 +moTHbHQZY85DGtdvMYF+cVwtpRHO6BdxsYJVqP/hXs0bn+H9HQqwrLHdTBHu +1rQzLMRbayvybA729wPzFY1vIt7qgp+NzlUcMjOEciNMPmeah6mdpUlzX3Vh +C/BAkdKHk9Bbg+rZTrmIt/RHH5s7BT13+43W8X7m748YmsaHUYSdtFJMCvF9 +aTRI/MKc91buqw5FPBbDUzxdWL8Jlp+EbRAPR7p/IB77TT6vD/cbcJWcqPgT ++DcSmnBiDXO/qzCtTeEHh9yM2DFVAxxSLl6ofY4mlfPqrrogvinj/oSfTjT5 +7Rm8bgvi2frw62AH1mf0w3dWC+HvK3NJYw78dfGscssF1mtv7OFB/3wjPTDW +hPk+UrfXbQny1e5DmW4w4rnW0GwSu5YiBrEf9KsRz7BKr4+8CkWMVF5U6cH/ +8aSNtwWhj4uVnqzsYs4b+Tj7jKHPc6wrrs1m6vkyJa+ZJyhy6i/JrjsjzN+/ +sgy984ZFHu+40nAK/gfYb+HGWqDeJKxukGLOW/bLXL6HfOKP9zf+zLyforsb +g76iH5V82hTFnEfR/dUlYhRJGUsRrcP70fPymW03lybH9094uzJ60yaDv/Mi +TbbZ1s6aBq55IjtO76GJl198WAdTX25fJ+LQu39vlK35gHiGrA9dObyEIsO3 +QgYs4b+ixLgy872t4Nq1YCX4u8khrq5cH3r5TKzWdfib+kallxf8nRz+3KUJ +f8f00zsPQZ9T2YvbxOFfSv3c67cbWWTHqX+fDsK/By2/Q9Sw/+b4xfyWAb/t +rK7ouxqoT0N5Xd+w3zpk2jvVlrHJjJ6k2Gj4E/hOZZ+LNUWuiOu4r0a+FG1Q +GUs2oYiYktZrEfgnRwfEZqO/lBP+uSsDWKfyyrEZfui/nR5Z+TL8as0oHER/ +t0jCX3Yvc771iH5gsZQmJcqBwkEMv6+4aRe30oTPYduCOPjX+Mo4Zl0OhyhL +17xfy/SPaifIAPq/+8aCznXAC/zdclKx3q4M3ZBgM+ftfs/vDd6AnluhHDcb +/m0xrr+mupIi/JYV1wLgT+GMkCuRyOeU35lje5n7cUJCSX6/WER+th7XZozp +f/voH2zo5VObFHXBFzvqtVQP8vO+MWkRhz3V1MBqHdTvHS0zpdKBuSsTatyR +3y0zR303g7/y8vOKP6c4xK395qJH8CdxsvFMI9bT0YoFLpqwfyJqy4A+RROt +krUzXgAf1fV1nEB/7Siwfycv/Mlc9PZgdSRFAp8+f5wE3OkyuMwGfAl6TG7z +Zu5v5D3nCd5FE/94rpcI/F1+Scw0BvXD2qg2MRPYx/zi923CqJcvTAX6kZ/V +3h/kpAUosnd9Zedj8HmsKdj75S8OudZt9sWWOe9SKn6kgXxWLhXO+8zsf/SR +QAErmnw7mWrAhn9c5VulP7H+JFeebRNF/W64ODkcJ0KTrF0KJRuY/WnEeI7W +QvR3jx3VOoEN2iZOK4lDD4fMG7wLfydWbqrMhN5Ii8n+pcB8P1qhVGlbyiI8 +Lj/qf8KfWkPHJzWmNJG4HsSOhv2u8rJbytBH3mq74w5jPVwVS7xc7kER25n6 +pluZ/oO3zcfOniJKPQvSHsG/VakRQbuR76FS28PDYL99xRzz4mYWOXd1qvQ7 +7AtOZ4yEQW+yNv0+/QJ89H0y7dBFfYhc9zHWC/7YWD1cpo713v1DbHgH7Dep +arQfgx4Oe6wy+gD277aotzmPskiDrMY/8rCfbKTAyltHEfHVb8ejYZ++GeY3 +in78Wq62ogujx3uqjjxFP6Irc6qbB3rw0RISkmJKkYRLs8xfwh+1GwcOOkFf +yLk9N9kF+3J9ImUvkV/HNM50LWPOQ1ZVpdp704TXZ0PlJdjPup88VriMIiTa +zKoP9jgp/jcioF9P+FpOFsCegsamkAnsx38v0bYJwfyeWSGTPXY0OZY0qrIY ++dAvvbSlDvv5O9fUsGnEz9u8aO58PC8gNKc3HvYf3Zxhwugts6exUzSzvsLj +jIPBl4zoAple2Fdr1jptB/1hcnqBeDdzny/C+tR/SymS0a9cq4b5Wz7F08bn +aRI756TmOOqF/3Tk9sA6NpEI4jl3Ec+v9M5OHXWkSL9i8eRJPD9xbHA+nwlN +VKdXFFfD3u0LDck/fNDvXfjF64bnZUMU3DWhf4wFPBwO4Pkc67HWEQ+aPAhW +ZKUw+3nzTP0E2PM/wS96n6n3x/x1JrUoclpOulqAuZ+aLZQbAv/PbuUNTwOm +pERbdefh/RxVERrF+OG9QkeuQe/lG9mtdAOf19cMh7Qx971iumSEkN/5m1W9 +iiVoor6EN1sH/IYd7nBfivrrrPPGuxW4OWfOjZfCFCkWzN+QAb6H75YMnYH/ +sfGzvy4Gn/9eWjr1Efo8SlVF9Dvye3z0apA66qGK0YbYTcifHXmjUS1WFHmf +2XTxPnP+YSAVpsCc3wwoBJzD/B9XD2k8ecki/tbudvV4Xxaa0b6O2qgH+iYR +RzH/vA5n7wT0X56PN6psQzzLhx/nPUf9uXFoVfUCzC9b+y5kcg36n6nY1xcx +/6ht7bQy6t2iMxIy9phfJsLnyslBFkkWT097Dv8lc9ac3wk+xTiqBkaYX900 +wLwN+cg3mSe7mLlPk9V5Xgj+5XdlHyeYr/IwbSuGejt9SGTLO+CXbv1G3J00 ++blz7WAO8z3jpVipGfrrxIIP0UGYP2z/2ln7wPfngLnUJOJ5bS2x+wH054ew +p+tYzH0pbnJaLupX9pRc0CDe5w9Fxyxe5OPoZoPbccD15iccXqHf9esQj5jL +9Mt9jkO6ZjRZuaFgdQL4HT2jZVn8gEP03qvsF0f8fWGCN+asosgB3W2rKjBe +bDJp9Loq+jPvCSkdjOf5+rW/kaZJoeiQ7STsB3BbTZ3202RgZ2/PW/gvECXa +HTsf9euSmaAK+Mh8qdcyAj4SB53nx+H5VQOtCq5YT08nQt9QWB/c4LIln1wp +cnahFfsXc19xbo+BOvR4omZUsh/Gl7RINT7qYZG92m+zdmN8YmdjczbW/+tQ +tzXlGH+/0kz0YD+LXJ/nwvsK44Vdl15VQP1TdfQ0N8V4jb59rptRL802+wnF +4Hk5daGK7ai3DSZ62Tz4d6EAkUUc1C9pvryPycAOZSIid9GPlc9wL+Ey33fT +Ikds4c+RlgMHhzBee2jGX8Gt//97gqhLPltNY9z/7/cGf/Cf/1/hD/7z+/U/ ++H+hweW+ + "], {{{}, { + EdgeForm[], + Directive[ + Opacity[0.05], + Hue[0.67, 0.6, 0.6]], + GraphicsGroupBox[{ + PolygonBox[CompressedData[" +1:eJwl1nfYjnUYxvEH2XuTkD2yV1b23iTKnmWFMkr2SJTsVfauEClSSUOiUkaI +llIhIQ0qUX0u/XEe5/d73e/xep/7/t2Xp0CvIe0GJ00kEknkctL/O2eKRCKX +lOIV+VX9tws7dWX9hjyK17n2l0zktXgLPEYOyX1m2c1y4x2Shs+V1ma9+BW8 +DRfVm2UAnmt+Ei/EZ/AQfAeugCvhk/h1/Yhea3ZJ/8BX6z/5BHwXbo5z45XS +lY/m3+pD/Gl9kO/W9/JsOhevjffKJL6d/64v8hd0an1Qz9GtdE/Xi+BN0j/m +/Kw+wRfE38Tf1YN5SV2eV8SvyUi+hl/U3/NV+g/+gR7Pa+pmPBdeIV34Y/wT +6ciz8pz4FUnFZ0tLsx58tnwvD5qVMCuHm8oo+Vg6mGcxz4HLShN5VA7IPa5l +di077i6z5DsZZF7cvAyugE/gnXqEXh0/E/cZX8XjcA3cOM4Q/hQv1531I2YH +8Qz8EW6PM+FsuBb+Cr+nJ+qXzX7TF/jzOqWeJS1wN9cK443Sj8/kZ/RnfL4+ +zd/RA3kxXZqXx6/KcL6KX4ifi/urr/D9eiyvrhvxHHiZdOIj497jp/CH+E19 +N8+os/K78B6ZwLfxFPiT+Lt0c93VrFCcI3mAPx1nUQbworwUXhnnLd4ds2pm +DfGIOBPSziyDWRbcRWbIN9LfvIj5HXhF3C8ZbVbVrAH+FW+J56mP6KX6Pj08 +zgJ+Eu/HbXF6nBnXxF/id/V4/VL8Hv0Tf04nj/dHmuHOrhWM5yP386f4D/o4 +n6dP8X64MC6Jy+EdMizOBP9Jf8uX61/5vjjn/E5dn2fDS+RePiw+sz7Ap+t9 +fJduw9PpTLwGfkfG8a38F32eb9C36I/1DN1Ud3K9QHwm6cuf5F/LA7wQL4GX +xe+Id8esilk9/LC8L63N0ppljD0n0+Urud+8oHlxXFcekr3SyjyNeQa8RZLF +eZImsYPi2eOX8O36mN6g++hprn0pfXkBXgxfi7OMy+rPYlfph+P5xj2Kc4sv +x3uNK+M68Tnwi3Fe9WH9rO6oh7r2EZ4W7x5uiVPj9Ph67CtcXX+h39Zj9Yuu +/YjX46RxjqQx7mieHx/F63Vv/UTsI32Mz9Vf8D74dlwUl8GvyEN8CT8f54Yv +1T/HvY69wSvp2jwLfkY68CH8Q/wE3oPf0C14Kp2Ob5Yk/ACfrhvpDmb58Drp +xafyz6U3z8+L4Cv6rzirsTv0yzI07plrl2Qkr8hr4cGx56W5WUqztLFH5XE5 +Kb3M85kXjj0Rezl2kzQzT2GeBm9KJG7+pztNGpq1p3nxWunJp8SO1Uf5HH2C +98R5cSFcCm+TIfyZeDb663h39MU4f3oEr6Br8sx4sdzDB/FT+gM+NZ4xf103 +5cl1al4NvyVj+EZ+Lu4f/jfOTjxj3iB2YuwgvBXfptdIDzzZ/FM8O3Y0flv3 +4LfpgvxPvD32WLwDEl9GFsf7hJ/FF/B7sbd4eV2DX8ab473Xi6Q9Hmj+ljTh +t/BUuCreLaP5C/wfmcrr83Z4khyX7mZ5zArg6rGbZbc0Nk9mnhI/Lzfi2ZrV +M2uLJ8ox6WZ2a7y/+I8407Hz9PHYRfpBvSje5Ti/sU/xMFwOV8M/402xT/Qh +vVDfrfu7th8/jt/EjXBS7KtZ4k78ecz1Y/q5xP/f387G2dHX+RRcN/YkzoNX +S3c+gZ/WR/isOFu8K86N8+MSeIsMir8lnnm8u3FuYqfGHsRlcVWcAS+Qdrxf +7NHYz3yK3sUb4iQ4Od4gf8tkszpmrfH4OB/SxSyXWb74bLGL452WBuaJ2OHx +XkiV2LNxTqW+a//GM4odK+PkiHQ2yxnnEC+IdyJ2sVkZs8o4PZ4vbXnf2DN4 +Mn4N18P/JLn5Tyaq6F0yKnZaPCd9Js62vhb7R0/itXVLfiteJd34WH4Yz8SH +42zqTjyHzsOvxm7BxWM3y0A8P/ZRnGl8Du+JHc1L60qxf/DG2G96nrTBfcx3 +Sl1+Q/4D9Bd4ag== + "]]}]}, {}, { + EdgeForm[], + Directive[ + Opacity[0.05], + Hue[0.67, 0.6, 0.6]], + GraphicsGroupBox[{ + PolygonBox[CompressedData[" +1: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 + "]]}]}, {}, {}, {}, {}, {}, {}}, {{}, {}, { + Hue[0.67, 0.6, 0.6], + Directive[ + RGBColor[0.24720000000000014`, 0.24, 0.6]], + LineBox[CompressedData[" +1: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 +9H+6xHgr + "]]}, { + Hue[0.9060679774997897, 0.6, 0.6], + Directive[ + RGBColor[0.24720000000000014`, 0.24, 0.6], + Dashing[{0, Small}]], + LineBox[CompressedData[" +1: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 + "]]}}}], {GridLines -> Dynamic[ + Join[{{{3605299200, + GrayLevel[0.9]}, {3607891200, + GrayLevel[0.9]}, {3610569600, + GrayLevel[0.9]}, {3613161600, + GrayLevel[0.9]}, {3615840000, + GrayLevel[0.9]}, {3618518400, + GrayLevel[0.9]}}, {210, 220, 230, 240, 250, 260}}, + Replace[ + MousePosition[{"Graphics", Graphics}, None], { + None -> {{}, {}}, { + Pattern[CalculateUtilities`GraphicsUtilities`Private`x$, + Blank[]], + Pattern[CalculateUtilities`GraphicsUtilities`Private`y$, + Blank[]]} :> {{{ + CalculateUtilities`GraphicsUtilities`Private`x$, + GrayLevel[0.7]}}, {{ + CalculateUtilities`GraphicsUtilities`Private`y$, + GrayLevel[0.7]}}}}], 2]], Epilog -> {{ + Directive[ + AbsoluteThickness[0.5], + RGBColor[1, 0, 0]], + + LineBox[{{3611188800, 212.72879241512837`}, { + 3611188800, 257.21097084166985`}}], { + CapForm[None], { + GrayLevel[1], + PolygonBox[{ + Offset[{-4.6, -4.25}, + Scaled[{0, 0.08}]], + Offset[{-4.6, -0.34999999999999987`}, + Scaled[{0, 0.08}]], + Offset[{4.6, 4.25}, + Scaled[{0, 0.08}]], + Offset[{4.6, 0.34999999999999987`}, + Scaled[{0, 0.08}]]}]}, { + AbsoluteThickness[1], + GrayLevel[0], + LineBox[{{ + Offset[{-4.6, -4.25}, + Scaled[{0, 0.08}]], + Offset[{4.6, 0.34999999999999987`}, + Scaled[{0, 0.08}]]}, { + Offset[{-4.6, -0.34999999999999987`}, + Scaled[{0, 0.08}]], + Offset[{4.6, 4.25}, + Scaled[{0, 0.08}]]}}]}}}, + DynamicBox[ + Typeset`ToBoxes[ + + DynamicModule[{ + CalculateUtilities`GraphicsUtilities`Private`pt = ( + NearestFunction[1, {1541, 1}, 3, CompressedData[" +1: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 +B69ISgU= + "], CompressedData[" +1:eJwl2nc8l9/7B3AjQshKdjbZO1lRZIayV0kI2clKSkZKJDIiq0QhK0miRCER +4SNlZCWUmZXE73V/f389/3h7nPO6rnOPc+4HPiefEy6kJCQkFJQkJHPaNCPz +/TNaueFjKkvwRE1tyjKsFj9n+AdeZmqvJvsyoyVnlM9IASeiwzx3Qr0/Evy0 +cEOO4hI9LPEc+swAGUbi4/fARnbXqb0wwEzjCAcUjmfN5oL9zXPrPPAGSYsZ +H1RTySkVgLlPTJxF4YkfIq/F4A4+Eg5J6HanvFMWcnyMFVOA7TtPRytB2YuM +qqpEnqrpFHWYOvdm4RCRSzTD8DCR67R/gTaRK9OAVBee/I/fXp/IpdfDaEzk +ulrsaUrkqotsOUHkkVa4ZEXMz5oy5UjMb+p15Aysvq6T7ULkaOL+c5bI8W/F +zIPIofSx1BOG+xZQ+0CZonBnPzg+bvn6PJGHW5ojkMhjtfNCMJGj7bnYJWLe +CrbUGJgkUSBwHZYVylfEwZks4/ZESMU+aJMMhe64/0iBjjeiyDKJeSiYErNg +5pUc7lzYF1ir/BAanlnwLiPyDV/arIAxNrtuVMEGE+GHL6CSmv1AE+Tf06rb +DzUTLf77Ch12jTsNwXTSrUtjkG5OvuoXXG/O4SX9OqPVGRz0Zz+kf/DMTgIa +d/yul4If+XyvysP2Nrdd6rCVy5bbFDY2qGkFwmoqsuuNMKZe99tbaOEfr9gC +lwfYxj5AuTJp1f9gqYXD7A9YcL/mON3AjFag1VbhbqhDq73FCCcudBaxQn79 +SXJemD3PXC0HvfNtaBWhuk2O0wE42Ci2Ww1ypGq56cA0NR8Oa9gt5/HAFtLu +d5FwgFf32Gk4wfpdli3OcJ30uOlZKL9u+MWdGHfuqJMnfDyh9dObmP+rWoAf +tGmRiwmE2rk8RVfg5VR2+UhYe5OlLhrKhNB8vAHP+VBYxcMCF5KRW3DE7q9b +EuQ8sbp4B1rqLYamwUSNX+QZkFJ8bE8OXCL/ePAxlNxobSyGbgtNhqVwePCF +w1PI3lM1+Qyavy/zqYEJr4vWa+H7Zw8j6uGOklyaBqhxPzO5EVYl3H7YAnPP +Xnr/CQ44BJ/ohazm5wf64E1N99kB2KLkHDgMySRPbY9ANQHb2HEYxG7BOAkr +d5tmTMFfFIYCP6HIpk7JLHRa0lRcgMYfJGw2YLFvf/UmpGKNYtmGjY4DneSD +M1r7KK9JUsKwYrk4Kqi0ev0oHUzOVMzfDRc0R0mZ4LHJm6dYYFGccj0r3Ck7 +wcEOnftuBXMS4/D9kOclxmlOus0Pv57TmBeEd6pTivbDRTstKgloTDrrIgWp +jLT55KHL4ny4ImxMzRw8QIyjpquiQowzupSmBr/EZK9oELkkDMy0iDyBefRH +iTxcxzz1iDxv1t8bEDloTaNNYH/e1l9r2NBuN30Ocvvv1PWGoXuf5vtCBSca +xwvw0VpNXzi8zc/69ja0pQ4yvwP5Fz5PpMLK+rsU92CvNbduAdx7S7CtFmb9 +lesah65jyY6TUOr98sIUfJVazTgHR2RVzNahgJtWH+0Q1sX4vutuWKVIvsYI +tcnf7d0LXbP1bPigVPTjaQG4do4mVBjGHmzPEIePe00GFSHZ0RpHZWj7nPe7 +CqTJWJw9BD1PJW/rw7ddfyONINdhZyoT2CGoyGgOhVOzUixh+E5KDhtinpk+ +/pMwxu5QoSMcbi8UPwOVNBjKXeCtsmAFNzjFO1rjATWT9NW94EIAx1F/qDd5 +tS0A5lr9NA6Cx1XqrMJgUbHgYDiRkzveMQJWbju4xxA5/ZpnY6HTmJR/HKw1 +S1uNh8zvtkMTifxKbttJRP7CrsgUGHAj72YGbP9LzZgFBb38U3LgfyZHsvOJ +/G+K+QuJ/HIshY+J3Hu+l5XChJhjChVwcu1ZzVOo4c6jXg3Tvsa8qSHyG87r +vCTy11u11cP1HNGeRmjKeNvqHdHnq38GWoj+urRNtMOXYp6rfcT4htEmX2D5 +uexHA1Ds5nPSYZhf0mU7Ank6pp+OwbuzZHTfIQs9l+sPIo+U4utpSGVizPYL +Rvqc9ZuDweV3BX4T/ZDburYJB0/sHd2CVudlVEiH8RxM1k8mh0ZVTr8oYHPv +RR0qqLVyJ5sG1u0pXaOFSkotprthueXIY0YoHvSHjAXy1og/Y4M0Kons/DDK +9rG/INwObfwgDJdfLl8Sh96DdJ8l4fSmsIwMdObWvC4Hh9VtxhSg9Ul/1QOw +JzzuzkHY+rr+qAas1OIv1oUSTqo7DGDhVXMHI3ivKWb3cRij8/O8LbTRr1Lz +ghrFV1t9oCDdcXN/uNA1ey4IxlqLZEbA6rMZf1Igc8yV6ldw/Yfx4TdEDn3u +j02wiK72eys8nPKbpQf65rue/wE7Go1kGL7huuj5kMgEhyYMFlngLKV+JTuk +M9RREIDHetSVlaDFRF26MnRYUf2jAr32qtQegvF2Smr6MMXz2T1DmHVJ4d8x ++CRH7tUJ+Ky8gscC1r+RuWwF33WXfbOBHeNSmvbE/MtPck8S81NIkp4m5hcR +b3Qh5vcU0faBey4V5PtB7gQhigAoWS7QHEzkWt6nd5XIRZHzKIrIxcpDfQ26 +iGS5XyfyKXO1xRH5wtiMUoj5djCaPoLOuWn5RXBTledPCbzzOf9YGZQ4L36/ +Ar6lr1x9Cu2LlA2r4c1RneVaKHipXa8e1rGZZb2Gv0wcj76FRq9C0zvghA3p +bCcMW7mm1Q1ZbtOn9sISiZSZPqjdynnoCxw8cz95AAZsi04NwV2ZZWoj8L6S +0u0xqNJd930CelC3JUzDtqCJkSXoxHxOcQVulC5eX4Nik1tym7AxIvraFrTl +ph0kGcH7tSZJhhxeN2ePpoC8CzlfdsKaOGEpGmgq8uQqLZxqlP9MD/Vkjfez +wZH23kscMNjNrpsLPspxu8gHNVXnOwVgf98FQWFIRR/ZIQZzH1PzS0JlncRA +adg1wvpBFrqFZe1TgCRsggFKMP1pUasybJl57qcO21p+rx+CH/OlrxyGvScL +E3ThZ9XxPQbwK9u+LCMiT3dq8XE4XtYtZw4nb9LXWsIZdwMtGzh7NKbVDi4I +NJqchMskW32OcKP2wncX+C+twtONyHFh9rcH3CntQuYLaWjzrvtD+ulBhguQ +5YH5vlC490piQRjkcGiXvAx5VKieRUC+vdpqUVBw+XJTDBT99NLgOpSKk7dJ +gLJuPiOJUEGn+GwyVN3mD0wn+nqeKfk+NDQ15ngIjSVv5BXCEzTNokXQ4gdp +eQm0fqt+oAza54W8qoBOdovt1dBFWdL8BdHPPe4DL6FP58h0Aww70kX5AaaK +l2l+g3XPM++NwtEjsevjUML+dPkUbLzJzLtE9Gk2aHvHKK6/cs1XYtBDTZJD +Et5qZQ+Uhl9HliQVoA/jwyx1mOFPfckULip0qwbCq2QBbcGQqWuPzUWocM4m +8AoMzhspvwG36OaFcojxBhKr8iDvY7kj+VBLO9DxMYwK/ZfxFNL82MXQCjOr +nmS3QYmrJpId8Bh3skE3TDTjiB6EfHx1zN9g5ZzD/VHYcz3v9SRkbRDdWICF +8W2xv6GynefeVdgqSl+wDm1WyxT+wpmm403/YOjt38dJxnB/nUoZIYP3JA74 +UIwR+87+fzvhq5bQmzTwm9Orx7sh/12dCXZ4eHHOlQue0U+f5oFReVqefDD/ +z8ycAHx3/I6fMJx8rL4sCinJfgSKQxHbxD+SUK/yYJgMdKMZ35KDRbWKO5Sh +BOcA/WF47HzUbW3o/UGSRRcmCHxO1YdlF6+wG8Gunv33jOGCeA/PccgYFZZn +BuUGhQQt4QmFzgJreP5m8H47WKX2QcoRHsjyPegBrVfY6zxh8LEmDR9Y+2+P +dgD8avG6ORD+feKmHwK5KJnaL0K1ky+Nw6FDtfOnKzCcnt48Er5+5WgTS/Rj +H6VzEnQKKpu8AyM7rd3T4NvLxd734PfP5ovZRB9kts7nQeHYwtUHUHfENKSA +6IPyxt9HMDbxQXgxfDxlRFoK2zRXI8uhUV5mQi289Wjlex3sLjNRf03U8Yr8 +VxPMfOdwpHmM2Gc9z2gl1mXgnH4HLBh7l9sJp6b3rX+C4oshJr1EX9d7Cvpg +xbbkVj9cpoy1GIChe9R2jMB6rlS7MUgiuFA5MUbsg/JPT8PbJrSvl+Cj64Mh +FOMzWj8TlT7thFLpiaI0sKpA+zM9fN1UosAG+/6FzYtBcn9uF1NYWSsxfwI6 +kquFWMC6O7bxtjDgedozZzi5yUgZAu/o8CVehIcTZDjCYc4+E6lIaH34pmU8 +fH+NsjAPBnftkc2HwuxCLwvg1aIjncVQpePK2jM4tScxogamnszZ9RL+nq/f +1wBLmP7qtkFbO5rudkiVz27fCat/iU5+gi6Kyr69kMf6QvowbM+N4h+FodPJ +JeNEXaGVDVPwVtb81BJRT0qZ7gqUifcpWIMk0dIUG7ArbP7MJswNKGvcgn6e +PnykE3hO2M8PU8AxszJ1KvjU0OceDTRXnbfZDVM45nvZoCtTmTwnVKLxSeKe +IO4j6cV9sO/PnAk/LFgsLRWEQdPedCJQb1TKcz9k+zLXJg6nukr3S8EXrd6x +MtC2Zk5HEWamzTVoQM9bpfu0oNo17/AjkPay1JAOHAycU9WDJd6lGQbwkqv3 +HyNofFLK2gTyWM5VH4dzx0r3mMPXOt4BltBRcU7WDuaxzJU4Q3/a0l1n4eEd +3h7uRL2/Z0W8YeXPJzG+MHLc67s/UfeApPYFKNgzez8ILrc9IQ2F7xq9HMNg +aq3k63CiH5Wz3BGw8PZs+g1ivDYnsXgiz47+l7eIvwtsHL4zQdwfB3zTIN10 +CWkGjLJLE8yBDXdoq/PgZkeEbj5U3rnWXwDPa3p6PIZOQlrlT2H2yWqtavg1 +TbynBh6nYV2thzePxF1rgK1hJOxNUHN+RrUVhok6drTBmtP/newg8mcYLHRC +6d7XEd1Evhd3WgaJ/i9R23wjcopfnhkl8mW70/0g8lzVMFsk5jOaGqb4jvUf +UV2Vgo75NRdloYSbIqkCfDsvRXsQLm3x8R+BxtxUxlaQyrb34WUY1uNp0QU9 +jmaUdUPrFy3U/0H5HP5XX+CMR7/wOLQh015fgUqynJmck+h7vt4KN2TaG2jC +C2c3u8iFYH5rjKcUZHZcUteCJD370o/AOZ1jSzqwTfxRgQG8uuaw2xwuJLwf +cYX6R0q83OH9tYSNc9Dc0ZzFD76Q/aZ7kZhn8k3vJeiZkX/6CuQh97gYTYzT +u1x6Cw7EflZNggrqta13YPziPYs0OPnw8thdeMjWyeceTKfX2cyGS40i1/Og +YRANaz6RW3z2fgHc+tYp/RiW66Xol0IWDt5LNdDrIxnNS9h89XtqPdx3oFWg +AQb/LCpvhJ9y4tXfQTFz37YWGEVlZtUGh+oUJ9qhkh+bXydMFPr779Mk8Zxq +2PsZFpwyNByF28xS/ePQupXBZRJWhv1enIK7ZPvCf0Ln7zW75uCru5npC3Cv +cbjQb+hLdrpyBb6vPnJoHfKfE27fgL09P79vw4MPA9lpfuA5S0VzkRbKeGYN +0sPiThkNRigs/zaHGd5PtSJlhdwbM05sMN0h/C0HZHnDKMwNbwk+vLYP0sQq +T/NBUpNTJcJwbrBETgZ6aGrekYPfH/SsKMBBj42ag9DqYzyHGuyW5QvTgMYp +VUOa8P267qEjUNt+IFcHNrz2JtODqgJkzgawOiblnRHMZxk3tIT7ggOfWMOM +AerddvD2fZnuU5CW8q28E4x1t0pxhuEy4dbucCOZsfYcvLCWz+kNPV99GPaH +P/hOaV6ATtFLeUHQxojdJQz2lpU0h0NTZk3RCHj0q+vPaKjgVuV3C9JHmYTf +h+z+Mz35UNAxen8hkVftZW8xdFsWFn8GG523PrfAjhN3Jdtgv6ZCZDuc5/KQ ++gS5/vsv6isUafL9OgjlKnbJfIP68VoD49D84qDMJHR0D4qZguesmAZnYKDO +E9lZ+C9odHEOkgX/vxHyetfm4U2+8cFFYt12h8stwwf/2GJXYenPp0PrsPaL +sfxf2PUsangbDjzYp0A2hfvjdu31HfCf14ICNRQTto9jgoosayMsUJMsSWkv +tBpuGeWEUanyykJwiHLX9wPQXMnOSwW2uRSvqMGat4aUh2HS1ZsiRpCqcrDM +GF4elVA+Dj01O/Qs4dEtOg9HWCd5cskJyjuUhrrAoptbZG6Qt844zgOm/sxm +9oJ0nPOZPnAj5FZJAPR9/E0hCP7ol64Pgb0HujrCYdkKw3wsFBY6HRQH75lX +bMdD5ijS2ER44+lxhmRIMp6XngKDmJZ40+Gc1uHHGdDZL0k2C37NHXuRA493 +yR2+DzWke04UQrZZ5oAKmMDlvPkUUhhVRVXDsIs76F7ApSLzlJfQ7Ws+9yv4 +jXrlYQO0PKgj1QTb3VKq38HD6d81WuGLFsWWNlgg3Pe5E0ZMsP75Ajma9loO +wso8tqfD0PAKO8MonDjJ4TUOL6lztn2HrFxcIlNE3RtcUTNQ7wv36C84+pxH +Yx6Gpu7LXITFZnwWq5D+o+D7bVhYIiRMNo31jROO3AH99ETVqSGNyP6MXfA+ +hdgaHVSdEDNngL2N4hVM0CtPgn4PpLwieW7vNPHek2plhwfUpYW4YBenzFUe +6LYh840XZjyXuysE5VPlV0Vge4CCmRj8J6tEJw1TGQ54yEKp+QMt8tCx5GCE +MvxzQ2VYBSa5q6qqQzE9tfRDsElYfUUL2lNonNCGy+MaZUehcJ6muyF8fVmr ++dg08Z3osIApvM6pPWQOf6XoHj8JK28YH/SD1UU73p+HtW211oGwkUYk+CLs +ubFdHU2Me6NcIQMqxjHJNE0T5/w+4T0z2Fcr3SnaC0dGjktxQCqlDsV90Hqk +SXs/XFeocFKHysNx2S6wPVaf3w06yu8s8ICxsVef+MB+uZC6EBh8zfVrPKyR +0WKtht43yrxroOAEd0stvJ22EfQaemw9/dIKOduFswZgt1DKyhAx3mVy4xG4 +LDeyNUHMd/eu4xwMP0srSPoTz683oWHkcIZjupfiJ/E8fhdNA+lFFYZp4duI ++0q7YegAwy1GKKN4+QcznEyYPcQK703ZpbNBqnvK+txwlGypSBim2zuS74fG +1R/txGGtezGtDPRtYneRg8LcsfUKP4l94eqeAzCpy9n7INQT62lWhVuRWvs0 +YNVQWZAmPHeAp+sw1M7+LGsEXQ/+rTOG13p59I7DNhrXk5bw18Pr09aQTutJ +gB00DVq+4Qj9mdhYz8DkJ6p5LsS4eqck3GDf+NXnHnA9vOCwF2TnaOvwgfam +jBMBMPyngk8QzImx3giBY3U5DJfhDuumzAiIl6xwFHTbL6V+Hd54e7w1Dhaf +umCWANs30ocT4VxKnXsyZJAdWU6Bsu3kV9JhAJlhahZMzfLmy4XPlZNK7sMN +7y+NhZCL5t+xIqj+kPdLCbwycHa+At4PjAutgk2MZRTP4URJd+ILSKm3ylkH +RcfZC19B/XB1uTfwZlWUXjMsNXnU0wo7Zz6c/ACZ+JgvdBHXQZ0SSQ+0sLKN ++49Yv/i8vK/Euom+kxiCA01Tz7/BzZO0R8Ygz4b0xwmomWJm8wM6yQRNTMOH +rq825uBUeZLtIpT461r7m+j3rd2h67CxxvEP6S/kJFe02QENjlG/oIQJaUNs +1PDTaEXwLsgiEdNPB60DbZUZ4AgN+ToLFLT4bLUXuuUUP2eH8/LmQTxwy/7h +qgjkwrFJBTr+4bRQh/lHFqoOQfH+9ABtqEI68/sYMa7ZzSVHmLzWNR8DXdtL +jlwnfs+LTYuDYwaahxKhTHZZwl3Yrp0gWULkTjI89wl+dRV53QOfqJIz90Hz +77W1X+EDZTGaCaj5jerxKlFH1cTmOvwR22D6l6hTLnh9GzrtNDcim8W+b1A6 +dwcciv6hSw3LbZsyd8Eo6Zx5OijxxTKNCYZKNE9ywheHrbx44Lr11G9eGBhN +QyoMn2VmXhOFyxUS9OLQf9iYUwZWLH/Lk4MLNH6iilCaj6zsAPQ+kKyoAp8c +E6xTg7/OPDt8CLonfjbRho8K3PqOwsm6P/b60Hma08MYPtguWTCFY3s0gsyg +42HHKGuYY71IYweHva/edoDc0cxsjtA+Mz/bCWZWKAq5wK8tzcVnofXyVI0n +TKMJPeQD+3h3NftB82OSPYEw+cwrmxDYHWIychGaFvjNXoG36sgCIuHH7uSN +6FniPCYYEQuNtp/tjINxe3QT4meJc0Q/SyLUs97gS4HXvOMepcHmKC7pDKhd +oaGWAyNbOhvzYOOQo34+1KSJtHwML/OyDBXDV0oPz5TCf0ZKM+VQ7UyL71N4 +McR67RmsvTV9qQYeqNsVVw/TI45NvoYbR29pNcK6T0zrzcS4P9hdumBeiV1D +NyTzz+L8j+jrgW+Bn+G7Td7uL1C40UlyEMZey48dhtNGk+Mj0IBJ9NA4LP7s +nvEd0mYVr/wg+iAiXfILmqkrsa/CKrLggHXI2vqicwP2n1CP2YYH2S6Pks7h +fTvUoLYD2rtp/6aC9ZIxxrsgz++Wx3Rw5JKhIxN0ST7RwQm9XzkWSsErLJfs +zKERZ8C0JWTnPxdkAyulbZJPwgkDxQ9uUC9iVuUS3D3nwFEAB5fNHz2Cj/4a +KhVDTWqVE+XQX5D1Ri3ss/345yPMbtH4sgbjL02qbsAw+YTsTWiTM3SGdB73 +UVDYHA28LlxLzgODB0+78kLXJOr3/FB7yzpBBG79t8YmC2fjci7Kw0Et3WFF ++OJJ6gMVGBCtKKUNnVSHEo/C44tRv/WglENvzTHIzRzGaQpp3wuEn4DTCueP +WMH+GY4CG9ic20hlD/NpmT46wpMT5dYe8FiG9UtPqGZKwuMD2etMxs9DKv81 +nUC4KpLzKBj2Js95XYKN+qldl+eJ72Xq8ldh7rPvKVEw4Vz8egy8xKdodx16 +fh6sj5snzr8SkYmwNXLgSxI8+vaGTApRt8700F1ivOh0hXtQq1k3Lhtq6BYo +P4B11yxuPYSqrTsmC2EtVZVaEVTWP5NcMk/83wnTTClUbHujWQHlDHnnnsHy +uE7tGijdHp5ZCyWODem9hsImGQ9aifpv6W+0QYGuddMOeJ/hUWEn5D1utfUJ +5tymtOiFPN3PivvgPSYXsi+Q04zFZgBmJDeVDUG2Xn/KEchq8enpBGSwSqCf +I/qQpu6yAOn6f71cgjQ2hu5rMPbuxus/cOfXx6ybMIbDxmsL7rCjekuygPN+ +5nMOckg66OpHAa9wsbbuXCDeD+94aGBYVsAFWvh3SKCdHq6fvBrCDANzZLv2 +wJVvI8JscMnxUC8X9MubE9sHF0azIvjgrNOmlDDsm3CsEYUNru+0xGHR1P4P +kvCOR4K5DAz/tTQkB928rc4qQjV/3lAVKLwcRa4OGQKnbx6CEyGVOdrwZoT2 +O2MiB/lj4+PQMZqu3wwa7PQ/bQkVrvfNWEOeXaoBdpAqPuefAxxIdGM4A98y +ddx1gaV3ZAXciD6kbyh6QbHcm3ZBkIV/cSKE6MMDC+8wOCVUuxYOuwt5IiJg +3f5ImihYUPwjOQaGlJUXxEEn2T0yCdDoaciLRMj7/HB7Cmx91buYAys1D168 +D+81Zu14CGO0yRIKoW+z694iaKv3IbcEardJi5VBto/ralXw7BBXbCsMoJeb +bCPW6ZCudgdMz/Mj6SbGd2kOHoCicz7uc3Bmq9GAZRH3kXT/I1ZIdnqWkn3x +f+egJm5oeM1TVQSW7GaVUIFevO50jnAiST7baZE4D2xJuUCDmSRTDyhaVZcc +QPyuy8Bxnfi99mtRHOyReKiaABsZVRySYc7AmdwsaOvzXLgSdo9GPK+C+uZG +es+h8sFR9zrISr7rSTNMuPCf+ntIMZXz8QMMs/U49REutyssdMFzh7av9MCx +iveMffBT6kn5AahHvf/tEGy4+Nt8BJY6xgZ+h8I9J3ZOwSwd7vQZeFOs8sU8 +3JEVZrAEL+7WHViGSxGMnmvQY3lg8w8xvmtB/Ca0+eLLsw27DFXLSJcwzysK +zR3Q5OXnt5TQsuaxPjV0qTxmRg89y/b1M8CAkkV7Zni1IMWVDd54cPYnB7yd +e9CXG6Zn7VrZB3MzhkL4YWFa2ZbgEnH9RUSKwOrbZlRisD5BKF4Cvo1bY5Re +Is4771Nl4derXrlKcOzyIaGDcDqMsUgVrgc+e6oJt89fUz4CKf1s6nUgvbf4 +YT2459y/ZgPI5dZpeAwKuuR1mUBxp/MWJ6DcKZ2v5lDFfu8pK6hlMz1uA03N +4mdPQi/d/0jcifq0C6PPwTCtEBpvGKlheMuXqFOVm+U8TFKeT78A7yq+4Q4m +6pRLvh8KH0m7iFyCZRIHSi4Tde6nlr0K3wk8UblG1LN35dhtOMPS0p0MFxnv +WqVCElr105lwJ/XuySyiHspRj9wl4rp5On8fcpNEBzyER0t2fiyEvtY3RIqI +vpXf+loKPU5naNYQ8zWW0X6AxtFf8xdgsKzD1hLMG/pmtQKXFb/TbMCMyXlf +8t/Yv+lSqLPCcBqZ/1Qh8/rZ0xrw0fecWU3Y3bCb8igUCppXMoXt46XpzvD0 +p0nBs3D1FU+FO+TNSHjvDc+bem8EQ456Sft4WFbkMnULaqdnBSRB7/N08WmQ +/LQOewZMN7708B6UUHsmmwPf7J+tz4OWe4UM8uHMDoe+Asgy0j5XDN1SS/ZV +w3+RE8U1MMmPS/klfGl007QBmqq8HWyEEyKbbu8gPblnRBt8sPCAruM3ca4e +uNsJnV4YVvbCZz7i48PQk5ZFexQKPt7MHyfGHetwnYL6l6tbZiAJV47oLJHf +wndmkejHkrXhMhxM0CpZhcniYnR/oEErk/dfSOry9+M/WEM6IU2yjPtU9dni +Djj0OevETngnIOYpNSQrtbpAD18YaPYxQN8fogeY4TDvxvpemFI/ZsMBjWw/ +1HJB8rWnnPtgbfK9MD7oJxM9JABFO7w0hGEq5SEScXjsgchpSbhDk6FRGvqH +jEYqwP2sbRNKcKSyUucgNP4VuVMDUlz3dNOEdUIW7w/D843qYjpQ7JRwnC4c +/Uv/Sx+mp68ZGUFTxZEnxnBndyv9cfjKu8LHDAbuyuiygBPa55JsYeao2W97 +eCJczfwUbHhOx+oMg8xXA12h1OLwZzf4Pb5F+Ry8J1Z+1wuataRv+EAa5wg7 +f/iGxKMuAAZnneAOgq/fHvYPgZS/5FouEv1UYfa7Ass/97y9Dte2mthvQg3h +Ku+EZeK70R22ZMh8L8orBdo2BTSmwdwZ570Z8Aejhec9Is9BnTfZMMBRkTUP +vrwmdO4BsU5lexoeQv0+ij2PYOK/FfciyGPUx1wGXc43u1XAkozq+qdQZTr1 +bA20jLF6+QZmPdFleEv0pfeASzMU3xSpbSXWRYBt94f/rT+Vcwck8V+v6YQJ +Df1OvfC/H63P+yDX7he0X2CRw93qIdi8YUPzA9LxG5yahub6KlU/iX77ilHP +wbE0jpMLxHq/pnm6RFxXkxs7V+Bzup/2a3BLYaDiD9Sx/0C5CW9GvrTbghzd +mRTkK9jv+djb0MKpz6Sj9DBDs9CNEW4xLgWxwvLQtG02eGZc7RonbK26lsoL +Q7kleQSgREz3QyF424r7mRi03ajsUYC0Z6ztDsBXH/6NHYQCWXpLGrCPYi5E +C8Z6J5Nqw1+Hhhn0YfajyHTDFeL/2fbzGsNnY+elzWB4NLWxA5SZK/3vFByz +NHdwgrqiOZ5nIcMHhTi/FWLf6dgaDVsyqw+XwntPaXPKoe8Hp7+VkO0vfdVz +6GF7VugNpGdno+qFlqkhHX+gWGnn/k24/U4oZgs+WvmkQb6K85u5WDktzGYe +SNoHvyeqWeusEu/3gQ1dqGQbmmUAYwVqxkygWLW8ly3syeje7QDDLvtVnoId +emVrzjBQ0jjjLORhmlXzgC2rcd88oe+A2FUfyN7wXtAfNua7tQRAZu8C2lBY +TcKfFgVPfW84eA1StZ0avA5tkrP4bq0S3/nV3t6GRfYDrnegmVYodRrcFGIv +uQsf0tQY34PG85aL2TCn5o5SPjxsyPCmFM5Il52pgMksxpRVcGIozvAFjG8U +m3tJ1Fn4PvEVHI5zk38Dr/nu7GuCMhYFwc2w/6AO53uifvJIx4+wPWVrph9e +CM2KHyDqPaUmMwx9REMvjEM2Ona2Sdiw+Lx2Crr3WTr8hEwvV7Zn4f8BSDhK +Aw== + "], CompressedData[" +1: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 +nQ58IPd6+iXkCzVptpL1cMLBDl8Z9Pf09Sk6BnCZ4grjIkmK3NoiW20Ed4xb +L9MWQ/+3r2yDKcx2N7K3eiVFfJI/bDWH7+h9j25aRpGbed5tFnDbHwUXZx6K +DFb/dt8M73q6R7GHC3lvWNzXDi6yeNc0xYr9+1f8zX6cmTeX5IQt+JE+IZOQ +7fDvNySQ/Y8f8dzgGeUCW22/Iyz0049ku0xxu8H0lUPDV775kW565LldcNrH +VdVy435EMnqFiCcskhSaFj7iR9wzc7P2wpserGJZM+xHMu/qrPWCA/prfeq+ ++pFPdbVFB+GrvPQWv0E/4vJzqJKC/+ypzivt9yMXucNMGcz9jd/H79rnR9pW +L631h3eUc4f97fEjjltUWoLhu9yuWyy6/UjKvseuR+BubZaKkU4/8v7I1p6j +zHrZnb86qcOP2Of5j5+ED97/9eNDux9JqmYLOgVf6Lq869gHP9L0PmUuGq5Z +bF63us2P8A7LRsTAkxqj6i9b/Yjtv7LFcbDoUy3DQThOyDIxAf4kv8yp6j8/ +0qDULpgMZySN0BPxeiuXOelUWGx3zjVdfN4ZetzNi8z9rD1Wzf3Rj9RGSahl +wJdVXdq6YfO7JkbZsMQCH/cZjPdUXXNNDtzpNbLGDfOp6fLcnAtfaXxprNbl +Rwj3qR0FzPq6csz/A+Z/YrVgVxFz/hwucUWf/chj3Rv7bsNZlNaNE1ivv7a6 +I3eY9dDK92R7rx8x2ld36D4sZTTSLo/1PXrEZaYMllU3jZ0e8CNVScPHK2Fe +Y81D77Bf66uXxj2CHzqJmJzBfqdHbBl8wtzP4Tg1DdTDnEWSWQ1sHf5vdcd3 +P1L9TmC2Fi6/MciuNovxfhX1egsn/yx91cZGkZxit6fvYcuYdQ9PclKELeCK ++H/wX/HLxYrMel3/OfgD/N+dZVmt3BR5Ob/6/Uc43vxUUjgv8lTNXpVOeEP7 +9Ml1/BSJOZMb08087++fbtizgiLDtoP9PfDiFN7edGGKWAusM+1n1vv2nSfe +iiNPf/DJ+MJcH8F8SS7kbZ4rRb++wr7//XhoivPZJK9WPAazOifM3kY+3m6s +KzoNz7k99U8wpkgpW2jQLFwrwcv/0gx5v/5B8xzs9tn19vwmirRvMz79D/7h ++WPED/eJvsiJXtaJEbPH0iT2OvJmRtdTIw74bF+8fMcO5Edv8x9ccLdIlGrD +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 +yy7JIPeI/tFr8HgYeesrivNbc4XjBrPe6/O2v8fz6bQ5W2I+TAnxftDH8+tQ +7QHhQuZ89wbuzOFjkJ1Wr68Ww6FOyb83ceM+bVBTLGGO54T2sRROnO+mWaNS +eKr1WITqPJ0c7JKIqYerFLPSMtroJIhPc7ABbvRstNF7TycnTS3NG+GH6fMs +bY10kp7jz/Ievsjl5rf8JZ3Ue9WGdjDXv29byMQdOlk3wfCZYJ6/WP9C5dN0 +MrJQYy04hTzxfjvbaQU6mVZrv7kSfqlvst5zDZ2w7RlfJArvyVlHGUjSmX8P +ei4JXzr0978JfjqxOUMZysMBPPkFzO8DFy9bqWwA69nOxu17TiO01T68nvA3 +ke0VT53RL53XytoLX9g0tsvdnkbcORdUveAdjGiOWSsasR45b+87xfz3rgoH +NQMaWVdanRIE0w9LjF2RwOst+cViYTlOiVi9fvSHVZ8K42D9kjxv/U6KtCjf +MEyEudw1rAz+o0jNcoNdKfDIPYvFRnUUye7Yd/UK7L3PP9q0iCI7GRVy9+Di +Q3U6G0Mo8r43oqIUbqn14rXwp8hmR1urCnjrKo4vVn4U0dPv9amGvzeSC3bo +R1eyL71Vy5yvUtV3V0vk98P/Gb+CPSJcGtzR/3IOZTe9hjs+TufsNqTIsZ2+ +u5tgZ83UI3t1kJffaH97Cx+P0XLwUqOIn+m/ky3w16ltHfqKFOm7+2p5G3O+ +G6P3/beWIu/SPLQ6mJ/fPxzIgzxstUThRResqSMxny9CkadHfzj2wNVRdlEb +BSly2zMm+AtsLH//QthS5IOWbYuH4PrgLxIrF1PkyibJ9JEp5vc/hG/cRf6I +V7z3YJI5f+9jZUO//QjHlWPW35nzqbxtHPULeWiZZcdP+MqS3perpvzI94jl +1AzcvXOF3cMxP+L7s2P+N+xTuKltxxDy84G8hHmY7T/J5cLIT64fD0n9gzmV +hC7WIG+9tTEsYf2Oz4/gkaQjn1k95iQcsGwb+3VR5LmtDz+8WARfzVnE9faT +H9lRWbB5CSxOW0I7jfzodW/Ldj54Hfuy9T9a/AhVsqqdH77etPxywTs/ElQ8 +5b4C1r0kyOrZ7Eci81IPiMDK6mKv3zT4kbPXD46KwU/mJNRP1fuRc1f1D0nC +hrWrUvVrkeeuLP21Ci4/JzM3+dyPXM3oOiIDW7mv3Z33zI/kXyxZkIWfy697 +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 +9wS8dH5wKhb5+H+PylPO + "], Automatic, + Hold[ + Nearest[CompressedData[" +1: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 +Aw== + "] -> CompressedData[" +1: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 +nQ58IPd6+iXkCzVptpL1cMLBDl8Z9Pf09Sk6BnCZ4grjIkmK3NoiW20Ed4xb +L9MWQ/+3r2yDKcx2N7K3eiVFfJI/bDWH7+h9j25aRpGbed5tFnDbHwUXZx6K +DFb/dt8M73q6R7GHC3lvWNzXDi6yeNc0xYr9+1f8zX6cmTeX5IQt+JE+IZOQ +7fDvNySQ/Y8f8dzgGeUCW22/Iyz0049ku0xxu8H0lUPDV775kW565LldcNrH +VdVy435EMnqFiCcskhSaFj7iR9wzc7P2wpserGJZM+xHMu/qrPWCA/prfeq+ ++pFPdbVFB+GrvPQWv0E/4vJzqJKC/+ypzivt9yMXucNMGcz9jd/H79rnR9pW +L631h3eUc4f97fEjjltUWoLhu9yuWyy6/UjKvseuR+BubZaKkU4/8v7I1p6j +zHrZnb86qcOP2Of5j5+ED97/9eNDux9JqmYLOgVf6Lq869gHP9L0PmUuGq5Z +bF63us2P8A7LRsTAkxqj6i9b/Yjtv7LFcbDoUy3DQThOyDIxAf4kv8yp6j8/ +0qDULpgMZySN0BPxeiuXOelUWGx3zjVdfN4ZetzNi8z9rD1Wzf3Rj9RGSahl +wJdVXdq6YfO7JkbZsMQCH/cZjPdUXXNNDtzpNbLGDfOp6fLcnAtfaXxprNbl +Rwj3qR0FzPq6csz/A+Z/YrVgVxFz/hwucUWf/chj3Rv7bsNZlNaNE1ivv7a6 +I3eY9dDK92R7rx8x2ld36D4sZTTSLo/1PXrEZaYMllU3jZ0e8CNVScPHK2Fe +Y81D77Bf66uXxj2CHzqJmJzBfqdHbBl8wtzP4Tg1DdTDnEWSWQ1sHf5vdcd3 +P1L9TmC2Fi6/MciuNovxfhX1egsn/yx91cZGkZxit6fvYcuYdQ9PclKELeCK ++H/wX/HLxYrMel3/OfgD/N+dZVmt3BR5Ob/6/Uc43vxUUjgv8lTNXpVOeEP7 +9Ml1/BSJOZMb08087++fbtizgiLDtoP9PfDiFN7edGGKWAusM+1n1vv2nSfe +iiNPf/DJ+MJcH8F8SS7kbZ4rRb++wr7//XhoivPZJK9WPAazOifM3kY+3m6s +KzoNz7k99U8wpkgpW2jQLFwrwcv/0gx5v/5B8xzs9tn19vwmirRvMz79D/7h ++WPED/eJvsiJXtaJEbPH0iT2OvJmRtdTIw74bF+8fMcO5Edv8x9ccLdIlGrD +boo8UjlttxQ+7evVIepFEakfdQW8sHq1RYwP8mPPcRtPAfjU7iV9XIcp4pWy +rVEc9ruZmGp5FvfJY898VXh2/aX5F6UUOSl43M0R5l86L0YJIL+JBw3vgNf8 +FDncIkIjojJ+Ia5w5WedZoNVNHJPzTXFAx5Tv+6irEwjA9Y6r73hpmU1jXst +aMQqYtzgOJzc+K+iOYxGlk3sEsuDX8bMO2bgedT50/HmTThsE8/zoUEaufnH +RrcILvsnrrEezzOyxGDbHVg1yJC39TeNBMiuPFsFr7qfq8+5nE7adjb9boJT +jl0vsjSlk6w6k48zsKvtrX0jKXSScHzQcA5ekf21szCdTo5pJWbNw2+mpHf4 +XaET1+yufayTI2ZmqWlWY3j+CoYcm+CG7X4HikpV0kmsXBW7FHyFI6TLFs/z +0M49B1bDBQdmyrZ10smB80teycCL6kISXXroxHzBJVEelowLNd0/hH7gvxkR +DfjOUuHMnhk6GY/LPqoF767Ib5f9QyedZpbdOjDPPr2VPug3HtxKu24AL3ng +em6KA/1ttI6qOfP3D1w+wyaA/sqwK9kCLuFXeWkhxCAOU1E/rGD36kdscSIM +orqrtXIL7Crw+fgK5EnJFcfE7Znje8x46CzDIDyv1oRvg8t8WH5nIl8Oawdu +dIbvPpEOkkW/1T4ilucKmxYFFW5D3qy9WsPlDo+mLl/8QYNBcnkEmjzhXTSb +p5/Rv3kM3HHxheXEnmhOEQbZkuHykII/c7onHd7IIEb2LFIMOGNqdvQ3+kPR +6q39gfBCneYNNhvkxYCZTcFwxf1m1jNbGGRaPvtmKLwvi/JYas8grSkTtOPw +f4fzhAWRP2s2p709AUd4bgxKd2aQu/+MtSJhA9uetxLod6+WfUmNghMcdRc5 +IH8m+iXMnoavsvSEi3kwyHFpHbdYOPBW7Ez/bgahPnQ+ioMtdmodurWH+fdf +5VPJsPL903sI8mn9qY6P5+EZp6A+FvTjFi/OqqfC7LN79j3zRj7cNNx1iTk/ +Y2OvDcinNdHp2pfhvM+Kg2zo781qLeOyJpnfPxY5+Bz51MQyT+86bF33w9sc ++aD6jFPSDdjJp3eYA3nCsJ5jMB+W5mn2fYm8UcVValQIj92uHo1GHtHbvC+l +mDke+0LKIoz5/zsRGLkNTyubvihGntFpeEbuwoa5b1UqkUc1bVZPlMGO53+w +NCMP3YlrNq+E5ZdE+35CXlJ7E55ZBdNOrmz9gjyqvKXL6gkcTdfPn0fektua +cb2euT/WJ7YonsH+J22ea4Bjn/FX6MQwyJq3s/aNcLPetdVmschH/Dfzm2HB +O1pnbc8yyGoH54V38JDcyx/OcciX5xY5tcIqWTt27YtHnnhfVtTGXB+hoVp6 +AoNcFvBi+whzH5C5JJvIIOLbBV07mO9/6PHGw3BGyvOSLjj16M6Jl7BIa8Ci +Hljv9HT6yiQGWen07v4A/CJTdaIC5ndO5JuAL9Rmpc8lM/OBsdc35u+/M9ho +cw55vH3s4Xf4b0fbeCbM7WrjMwN7TfFtND7PIDGX5p78hrnmC8cT4MWfClbO +w02LLNO74dNirrQF5vsv79+gloJ87Mb1guXbiJmuxInxE3BkZoUYO6zcxMF/ +DGbtPODPCb8zOdPDBp+UWFm/GD5csuRuLN5vwf2lFDdstzo+gh8+diXoMA8s +d45v20WM70/Xmjd88BvWczJS8KxH5JEVsHV/6nMlzC84W+OtECzjKHLhHub/ +63OPnAhc+yJjvz783dO0VQI2z8vmtMT6+edMKK6Ch1bKtDVi/b/1XomQhhPP +5OY5wuN751XlYG6fAsu92K+2Ac/KdXBvfmRrN/bz6YGXZkpw1KDbHje4cEjh +tQrcNnWFYY39v+Cb6KgO7xNZk9eKegkf+96lCX8zudnpgXrypjsf1IHDvVRW +DCP/GwWsDjOAL91bf/Ivs/5+RrEbw/Ifq8vPIO/zBw/Hm35jPh/MxpejXgeO +3Ms2h9/a2u6UQ76PjzB/aQcv+uqpvTUE68FeYOcAp/IO+n7E+fKM5m3fzlwf +bb+cfcjr1osD9uyA7+z89mE8APk5tm3EBT6t87U/DHldaqlhkNs3Zn/0lfGH +hvsqIfvvLrji+tc/R5HXO5K9+ffBgwJDK44fYJAXAo2XvOA566Hsv/uQ3y9o +rPGGBSOHlMJxv0Smz+nQYMtvQxtP4H5SvBrvFgIXvRkOjNiGfCozNXDkG/P7 +XCP/WHH/LVx3oh+Duw1G4iJxPw6trZoJh6f9R4TZcX++z5eKiID74vhkFaxw +nyic4o5izu9jUH6yOYPkFX1NOQ3vketQnMX9fKTkTl4cs15q8jXq9PE80RBS +T4R/8fOVqeI+t71/5EEyrOURpJemifNbseFNKnxvlph6KeE+fNw6lQ3fVvlk +yy7JIPeI/tFr8HgYeesrivNbc4XjBrPe6/O2v8fz6bQ5W2I+TAnxftDH8+tQ +7QHhQuZ89wbuzOFjkJ1Wr68Ww6FOyb83ceM+bVBTLGGO54T2sRROnO+mWaNS +eKr1WITqPJ0c7JKIqYerFLPSMtroJIhPc7ABbvRstNF7TycnTS3NG+GH6fMs +bY10kp7jz/Ievsjl5rf8JZ3Ue9WGdjDXv29byMQdOlk3wfCZYJ6/WP9C5dN0 +MrJQYy04hTzxfjvbaQU6mVZrv7kSfqlvst5zDZ2w7RlfJArvyVlHGUjSmX8P +ei4JXzr0978JfjqxOUMZysMBPPkFzO8DFy9bqWwA69nOxu17TiO01T68nvA3 +ke0VT53RL53XytoLX9g0tsvdnkbcORdUveAdjGiOWSsasR45b+87xfz3rgoH +NQMaWVdanRIE0w9LjF2RwOst+cViYTlOiVi9fvSHVZ8K42D9kjxv/U6KtCjf +MEyEudw1rAz+o0jNcoNdKfDIPYvFRnUUye7Yd/UK7L3PP9q0iCI7GRVy9+Di +Q3U6G0Mo8r43oqIUbqn14rXwp8hmR1urCnjrKo4vVn4U0dPv9amGvzeSC3bo +R1eyL71Vy5yvUtV3V0vk98P/Gb+CPSJcGtzR/3IOZTe9hjs+TufsNqTIsZ2+ +u5tgZ83UI3t1kJffaH97Cx+P0XLwUqOIn+m/ky3w16ltHfqKFOm7+2p5G3O+ +G6P3/beWIu/SPLQ6mJ/fPxzIgzxstUThRResqSMxny9CkadHfzj2wNVRdlEb +BSly2zMm+AtsLH//QthS5IOWbYuH4PrgLxIrF1PkyibJ9JEp5vc/hG/cRf6I +V7z3YJI5f+9jZUO//QjHlWPW35nzqbxtHPULeWiZZcdP+MqS3perpvzI94jl +1AzcvXOF3cMxP+L7s2P+N+xTuKltxxDy84G8hHmY7T/J5cLIT64fD0n9gzmV +hC7WIG+9tTEsYf2Oz4/gkaQjn1k95iQcsGwb+3VR5LmtDz+8WARfzVnE9faT +H9lRWbB5CSxOW0I7jfzodW/Ldj54Hfuy9T9a/AhVsqqdH77etPxywTs/ElQ8 +5b4C1r0kyOrZ7Eci81IPiMDK6mKv3zT4kbPXD46KwU/mJNRP1fuRc1f1D0nC +hrWrUvVrkeeuLP21Ci4/JzM3+dyPXM3oOiIDW7mv3Z33zI/kXyxZkIWfy697 +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 +9wS8dH5wKhb5+H+PylPO + "]]]][ + Part[#, 1]]& )[ + MousePosition[{"Graphics", Graphics}, {0, 0}]], + CalculateUtilities`GraphicsUtilities`Private`scaled = + MousePosition[{"GraphicsScaled", Graphics}, None]}, + If[ + CalculateUtilities`GraphicsUtilities`Private`scaled === + None, {}, { + Text[ + Style[ + Row[{ + ( + DateString[#, { + "DayShort", " ", "MonthNameShort", " ", "Year"}]& )[ + Part[ + CalculateUtilities`GraphicsUtilities`Private`pt, 1, 1]], + ( + Function[{ + CalculateUtilities`GraphicsUtilities`Private`a, + CalculateUtilities`GraphicsUtilities`Private`acc}, + Quiet[ + RawBoxes[ + ToBoxes[ + NumberForm[CalculateUtilities`GraphicsUtilities`Private`a, + Max[1, + Ceiling[ + RealExponent[ + CalculateUtilities`GraphicsUtilities`Private`a] + + CalculateUtilities`GraphicsUtilities`Private`acc]], + ExponentFunction -> (Null& ), + NumberFormat -> (StringReplace[#, StringExpression[ + Pattern[CalculateUtilities`GraphicsUtilities`Private`s, + BlankSequence[]], ".", EndOfString] -> + CalculateUtilities`GraphicsUtilities`Private`s]& )]]]]][#, + 0]& )[ + Part[ + CalculateUtilities`GraphicsUtilities`Private`pt, 1, 2]]}, + ","], 12], + Part[ + CalculateUtilities`GraphicsUtilities`Private`pt, 1], { + 1.5 Sign[ + Part[CalculateUtilities`GraphicsUtilities`Private`scaled, + 1] - 0.5], 0}, Background -> White], + AbsolutePointSize[7], + Point[CalculateUtilities`GraphicsUtilities`Private`pt], + White, + AbsolutePointSize[5], + Point[CalculateUtilities`GraphicsUtilities`Private`pt]}]], + TraditionalForm, Graphics]]}, FrameTicks -> {{{{220., + FormBox[ + TagBox["220", #& ], TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {230., + FormBox[ + TagBox["230", #& ], TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {240., + FormBox[ + TagBox["240", #& ], TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {250., + FormBox[ + TagBox["250", #& ], TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {222., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {224., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {226., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {228., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {232., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {234., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {236., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {238., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {242., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {244., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {246., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {248., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {252., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {254., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {256., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}}, {{220., + FormBox["\"\"", TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {230., + FormBox["\"\"", TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {240., + FormBox["\"\"", TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {250., + FormBox["\"\"", TraditionalForm], {0.00625, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.25]}}, {222., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {224., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {226., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {228., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {232., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {234., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {236., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {238., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {242., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {244., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {246., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {248., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {218., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {216., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {214., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {252., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {254., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}, {256., + FormBox["\"\"", TraditionalForm], {0.00375, 0.}, { + GrayLevel[0.], + AbsoluteThickness[0.125]}}}}, {{{3605299200, + FormBox["\"Apr\"", TraditionalForm], { + 0.020601132958329826`, 0}}, {3607891200, + FormBox["\"May\"", TraditionalForm], { + 0.020601132958329826`, 0}}, {3610569600, + FormBox["\"Jun\"", TraditionalForm], { + 0.020601132958329826`, 0}}, {3613161600, + FormBox["\"Jul\"", TraditionalForm], { + 0.020601132958329826`, 0}}, {3615840000, + FormBox["\"Aug\"", TraditionalForm], { + 0.020601132958329826`, 0}}, {3618518400, + FormBox["\"Sep\"", TraditionalForm], { + 0.020601132958329826`, 0}}, {3603830400, + FormBox["\"\"", TraditionalForm], { + 0.012360679774997897`, 0}}, {3606508800, + FormBox["\"\"", TraditionalForm], { + 0.012360679774997897`, 0}}, {3609100800, + FormBox["\"\"", TraditionalForm], { + 0.012360679774997897`, 0}}, {3611779200, + FormBox["\"\"", TraditionalForm], { + 0.012360679774997897`, 0}}, {3614371200, + FormBox["\"\"", TraditionalForm], { + 0.012360679774997897`, 0}}, {3617049600, + FormBox["\"\"", TraditionalForm], { + 0.012360679774997897`, 0}}}, {{3605299200, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.020601132958329826`, 0}}, { + 3607891200, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.020601132958329826`, 0}}, { + 3610569600, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.020601132958329826`, 0}}, { + 3613161600, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.020601132958329826`, 0}}, { + 3615840000, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.020601132958329826`, 0}}, { + 3618518400, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.020601132958329826`, 0}}, { + 3603830400, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.012360679774997897`, 0}}, { + 3606508800, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.012360679774997897`, 0}}, { + 3609100800, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.012360679774997897`, 0}}, { + 3611779200, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.012360679774997897`, 0}}, { + 3614371200, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.012360679774997897`, 0}}, { + 3617049600, + FormBox[ + StyleBox["\"\"", 0, StripOnInput -> False], + TraditionalForm], {0.012360679774997897`, 0}}}}}, + ImagePadding -> All, GridLines -> {{{3605299200, + GrayLevel[0.9]}, {3607891200, + GrayLevel[0.9]}, {3610569600, + GrayLevel[0.9]}, {3613161600, + GrayLevel[0.9]}, {3615840000, + GrayLevel[0.9]}, {3618518400, + GrayLevel[0.9]}}, Automatic}, Epilog -> { + Directive[ + AbsoluteThickness[0.5], + RGBColor[1, 0, 0]], + + LineBox[{{3611188800, 212.72879241512837`}, { + 3611188800, 257.21097084166985`}}], { + CapForm[None], { + GrayLevel[1], + PolygonBox[{ + Offset[{-4.6, -4.25}, + Scaled[{0, 0.08}]], + Offset[{-4.6, -0.34999999999999987`}, + Scaled[{0, 0.08}]], + Offset[{4.6, 4.25}, + Scaled[{0, 0.08}]], + Offset[{4.6, 0.34999999999999987`}, + Scaled[{0, 0.08}]]}]}, { + AbsoluteThickness[1], + GrayLevel[0], + LineBox[{{ + Offset[{-4.6, -4.25}, + Scaled[{0, 0.08}]], + Offset[{4.6, 0.34999999999999987`}, + Scaled[{0, 0.08}]]}, { + Offset[{-4.6, -0.34999999999999987`}, + Scaled[{0, 0.08}]], + Offset[{4.6, 4.25}, + Scaled[{0, 0.08}]]}}]}}}, PlotRangeClipping -> False, + PlotRangePadding -> None, AspectRatio -> 0.3, + AxesOrigin -> {3.604*^9, 214.}, AxesStyle -> Directive[ + GrayLevel[0, 0.35], FontColor -> GrayLevel[0.25], + FontOpacity -> 1], BaseStyle -> AbsoluteThickness[1], + Epilog -> { + Directive[ + AbsoluteThickness[0.5], + RGBColor[1, 0, 0]], + + LineBox[{{3611188800, 212.72879241512837`}, { + 3611188800, 257.21097084166985`}}]}, Frame -> True, + FrameLabel -> {None, None}, FrameStyle -> Directive[ + GrayLevel[0, 0.35], FontColor -> GrayLevel[0.25], + FontOpacity -> 1], FrameTicksStyle -> + Directive[FontFamily -> "Times", FontSize -> 10], + GridLines -> {{{3605299200, + GrayLevel[0.9]}, {3607891200, + GrayLevel[0.9]}, {3610569600, + GrayLevel[0.9]}, {3613161600, + GrayLevel[0.9]}, {3615840000, + GrayLevel[0.9]}, {3618518400, + GrayLevel[0.9]}}, Automatic}, GridLinesStyle -> + GrayLevel[0.9], ImageSize -> Full, + LabelStyle -> {FontFamily -> "Verdana", FontSize -> 10}, + Method -> {"AxesInFront" -> True}, + PlotRange -> {{3603398400, 3619123200}, {212.72879241512837`, + 257.21097084166985`}}, PlotRangeClipping -> True, + PlotRangePadding -> None, Prolog -> { + Opacity[0], + TagBox[ + RectangleBox[ + Scaled[{0, 0}], + Scaled[{1, 1}]], Annotation[#, "DatePlot", "Frame"]& ]}, + TicksStyle -> + Directive[FontFamily -> "Times", FontSize -> 10]}], + TagBox[ + GridBox[{{ + TagBox[ + GridBox[{{ + StyleBox[ + RowBox[{"\"(\"", "\[NoBreak]", + FormBox[ + TagBox[ + FormBox[ + TemplateBox[{"\"from \"", + FormBox[ + TagBox["\"Mar 10, 2014\"", Identity], TraditionalForm], + "\" to \"", + FormBox[ + TagBox["\"Sep 8, 2014\"", Identity], TraditionalForm]}, + "RowDefault"], TraditionalForm], + Format[#, TraditionalForm]& ], TraditionalForm], + "\[NoBreak]", "\")\""}], { + FontFamily -> "Verdana", FontSize -> 10, + GrayLevel[0.5], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0}, StripOnInput -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, + DefaultBaseStyle -> "Column", + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Column"], + TagBox[ + GridBox[{{ + StyleBox[ + RowBox[{"\"(\"", "\[NoBreak]", + + TemplateBox[{ + "\"in \"", "\"thousands\"", "\" of \"", "\"miles\""}, + "RowDefault"], "\[NoBreak]", "\")\""}], { + FontFamily -> "Verdana", FontSize -> 10, + GrayLevel[0.5], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0}, StripOnInput -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, + DefaultBaseStyle -> "Column", + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Column"]}}, + GridBoxAlignment -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Baseline}}}, + AutoDelete -> False, + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> {"Columns" -> {{0.5}}}], "Grid"]}, + "Labeled", DisplayFunction -> (FormBox[ + GridBox[{{ + TagBox[ + ItemBox[ + PaneBox[ + TagBox[#, "SkipImageSizeLevel"], + Alignment -> {Center, Baseline}, BaselinePosition -> + Baseline], DefaultBaseStyle -> "Labeled"], + "SkipImageSizeLevel"]}, { + + ItemBox[#2, Alignment -> {Left, Inherited}, + DefaultBaseStyle -> "LabeledLabel"]}}, + GridBoxAlignment -> { + "Columns" -> {{Center}}, "Rows" -> {{Center}}}, AutoDelete -> + False, GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + BaselinePosition -> {1, 1}], TraditionalForm]& ), + InterpretationFunction -> (RowBox[{ + StyleBox[ + "Labeled", FontFamily -> "Bitstream Vera Sans", + FontSize -> -1 + Inherited], "[", + RowBox[{#, ",", + RowBox[{"{", #2, "}"}], ",", + RowBox[{"(", "\[NoBreak]", + GridBox[{{ + StyleBox[ + "Bottom", FontFamily -> "Bitstream Vera Sans", + FontSize -> -1 + Inherited], + StyleBox[ + "Left", FontFamily -> "Bitstream Vera Sans", + FontSize -> -1 + Inherited]}}, RowSpacings -> 1, + ColumnSpacings -> 1, RowAlignments -> Baseline, + ColumnAlignments -> Center], "\[NoBreak]", ")"}]}], + "]"}]& )], TraditionalForm]], "Output", { + Background -> None}]}], + XMLElement[ + "dataformats", {}, {"computabledata,formatteddata,timeseriesdata"}]}], + XMLElement["states", {"count" -> "2"}, { + XMLElement[ + "state", { + "name" -> "Use Metric", "input" -> + "DistanceHistory:AstronomicalData__Use Metric"}, {}], + XMLElement[ + "statelist", { + "count" -> "5", "value" -> "\[PlusMinus]3 months", "delimiters" -> + ""}, { + XMLElement[ + "state", { + "name" -> "\[PlusMinus]3 months", "input" -> + "DistanceHistory:AstronomicalData__\[PlusMinus]3 months"}, {}], + XMLElement[ + "state", { + "name" -> "\[PlusMinus]6 months", "input" -> + "DistanceHistory:AstronomicalData__\[PlusMinus]6 months"}, {}], + XMLElement[ + "state", { + "name" -> "\[PlusMinus]1 year", "input" -> + "DistanceHistory:AstronomicalData__\[PlusMinus]1 year"}, {}], + XMLElement[ + "state", { + "name" -> "\[PlusMinus]5 years", "input" -> + "DistanceHistory:AstronomicalData__\[PlusMinus]5 years"}, {}], + XMLElement[ + "state", { + "name" -> "\[PlusMinus]10 years", "input" -> + "DistanceHistory:AstronomicalData__\[PlusMinus]10 years"}, \ +{}]}]}]}], Typeset`pod4$$ = XMLElement[ + "pod", {"title" -> "Unit conversions", "scanner" -> "Unit", "id" -> + "UnitConversion", "position" -> "400", "error" -> "false", "numsubpods" -> + "2"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + StyleBox[ + TagBox[ + RowBox[{ + TagBox[ + TagBox[ + RowBox[{ + TagBox["385\[ThinSpace]056", + $CellContext`TagBoxWrapper["StringBoxes" -> "385056"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + "\"km\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], " ", + StyleBox[ + + RowBox[{ + "\"(\"", "\[NoBreak]", "\"kilometers\"", "\[NoBreak]", + "\")\""}], { + FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller, + GrayLevel[0.6], LinebreakAdjustments -> {1, 100, 1, 0, 100}, + LineIndent -> 0}, StripOnInput -> False]}], "Unit", + SyntaxForm -> Dot], LinebreakAdjustments -> {1, 100, 1, 0, 100}, + LineIndent -> 0, ZeroWidthTimes -> False], TraditionalForm]], + "Output", {}]}], + XMLElement[ + "dataformats", {}, { + "plaintext,computabledata,formatteddata,numberdata,quantitydata"}]}], + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox[ + RowBox[{"3.851", + StyleBox["\[Times]", + GrayLevel[0.5]], + SuperscriptBox["10", "8"]}], + $CellContext`TagBoxWrapper[ + "StringBoxes" -> RowBox[{"3.851", "\[Times]", + SuperscriptBox["10", "8"]}]], SyntaxForm -> CenterDot], + "\[InvisibleSpace]", " ", + StyleBox[ + "\"meters\"", LinebreakAdjustments -> {1, 100, 1, 0, 100}, + LineIndent -> 0, { + FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, StripOnInput -> False]}], Identity], #& , + SyntaxForm -> Dot], "Unit", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> 0, + ZeroWidthTimes -> False], TraditionalForm]], "Output", {}]}], + XMLElement[ + "dataformats", {}, { + "plaintext,computabledata,formatteddata,numberdata,quantitydata"}]}]}]\ +, Typeset`pod5$$ = XMLElement[ + "pod", {"title" -> "Comparison as distance", "scanner" -> "Unit", "id" -> + "ComparisonAsDistance", "position" -> "500", "error" -> "false", + "numsubpods" -> "1"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + FormBox[ + + TemplateBox[{ + "\" \[TildeTilde] \"", + "1.00017081986198578379799203020065608125`4.767535813146223", + "\" \"", + StyleBox["\"\[Times]\"", + GrayLevel[0.3], FontSize -> 10.219999999999999`, StripOnInput -> + False], "\"\[MediumSpace]\"", + StyleBox[ + "\"mean Moon\[Hyphen]Earth distance\"", FontFamily -> + "Helvetica", FontSize -> Smaller, StripOnInput -> False], + "\" \"", + StyleBox[ + RowBox[{"\"(\"", "\[NoBreak]", + TemplateBox[{"\"\[MediumSpace]\"", + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox[ + RowBox[{"3.85", + StyleBox["\[Times]", + GrayLevel[0.5]], + SuperscriptBox["10", "8"]}], + $CellContext`TagBoxWrapper[ + "StringBoxes" -> RowBox[{"3.85", "\[Times]", + SuperscriptBox["10", "8"]}]], SyntaxForm -> CenterDot], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + "\"m\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False], "\"\[MediumSpace]\""}, + "RowDefault"], "\[NoBreak]", "\")\""}], { + FontFamily -> "Verdana", FontSize -> 10, + GrayLevel[0.5], LinebreakAdjustments -> {1, 100, 1, 0, 100}, + LineIndent -> 0}, StripOnInput -> False]}, "RowDefault"], + TraditionalForm], TraditionalForm]], "Output", {}]}], + XMLElement["dataformats", {}, {"plaintext"}]}]}], Typeset`pod6$$ = + XMLElement[ + "pod", {"title" -> "Corresponding quantities", "scanner" -> "Unit", "id" -> + "CorrespondingQuantity", "position" -> "600", "error" -> "false", + "numsubpods" -> "2"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + TagBox[ + GridBox[{{ + InterpretationBox[ + Cell[ + TextData[{"Light travel time ", + Cell[ + BoxData[ + FormBox["t", TraditionalForm]]], " in vacuum from ", + Cell[ + BoxData[ + FormBox[ + FormBox[ + TemplateBox[{ + TagBox[ + RowBox[{"t", "\[LongEqual]", + + RowBox[{"x", "\[InvisibleSpace]", "\"/\"", + "\[InvisibleSpace]", "c"}]}], + PolynomialForm[#, TraditionalOrder -> False]& ]}, + "RowDefault"], TraditionalForm], TraditionalForm]]], + ":"}]], + TextCell[ + Row[{"Light travel time ", + $CellContext`CalculateSymbol["t"], " in vacuum from ", + $CellContext`InlineForm["t \[LongEqual] x/c"], ":"}]]]}, { + TagBox[ + GridBox[{{ + InterpretationBox[ + StyleBox[ + + GraphicsBox[{}, ImageSize -> {10, 0}, BaselinePosition -> + Baseline], "CacheGraphics" -> False], + Spacer[10]], + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["1.3", + $CellContext`TagBoxWrapper["StringBoxes" -> "1.3"]], + "\[InvisibleSpace]", " ", + StyleBox[ + "\"seconds\"", + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, {FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, StripOnInput -> False]}], Identity], #& , + SyntaxForm -> Dot], "Unit", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, AutoDelete -> + False, GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Grid"]}}, GridBoxAlignment -> {"Columns" -> {{Left}}}, + DefaultBaseStyle -> "Column", + GridBoxItemSize -> {"ColumnsIndexed" -> {1 -> 0}}], "Column"], + TraditionalForm]], "Output", {}]}], + XMLElement[ + "dataformats", {}, { + "plaintext,computabledata,formatteddata,numberdata,quantitydata"}]}], + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + TagBox[ + GridBox[{{ + InterpretationBox[ + Cell[ + TextData[{"Light travel time ", + Cell[ + BoxData[ + FormBox["t", TraditionalForm]]], " in an optical fiber ", + Cell[ + BoxData[ + FormBox[ + FormBox[ + TemplateBox[{ + TagBox[ + RowBox[{"t", "\[LongEqual]", + RowBox[{ + RowBox[{"1.48`", "\[InvisibleSpace]", "x"}], + "\[InvisibleSpace]", "\"/\"", "\[InvisibleSpace]", + "c"}]}], PolynomialForm[#, TraditionalOrder -> False]& ]}, + "RowDefault"], TraditionalForm], TraditionalForm]]], + ":"}]], + TextCell[ + Row[{"Light travel time ", + $CellContext`CalculateSymbol["t"], + " in an optical fiber ", + $CellContext`InlineForm["t \[LongEqual] 1.48x/c"], + ":"}]]]}, { + TagBox[ + GridBox[{{ + InterpretationBox[ + StyleBox[ + + GraphicsBox[{}, ImageSize -> {10, 0}, BaselinePosition -> + Baseline], "CacheGraphics" -> False], + Spacer[10]], + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["1.9", + $CellContext`TagBoxWrapper["StringBoxes" -> "1.9"]], + "\[InvisibleSpace]", " ", + StyleBox[ + "\"seconds\"", + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, {FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, StripOnInput -> False]}], Identity], #& , + SyntaxForm -> Dot], "Unit", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, AutoDelete -> + False, GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Grid"]}}, GridBoxAlignment -> {"Columns" -> {{Left}}}, + DefaultBaseStyle -> "Column", + GridBoxItemSize -> {"ColumnsIndexed" -> {1 -> 0}}], "Column"], + TraditionalForm]], "Output", {}]}], + XMLElement[ + "dataformats", {}, { + "plaintext,computabledata,formatteddata,numberdata,quantitydata"}]}]}]\ +, Typeset`pod7$$ = XMLElement[ + "pod", {"title" -> "Orbital properties", "scanner" -> "Data", "id" -> + "BasicPlanetOrbitalProperties:AstronomicalData", "position" -> "700", + "error" -> "false", "numsubpods" -> "1"}, { + XMLElement["subpod", {"title" -> ""}, { + XMLElement["cell", {"compressed" -> True, "string" -> False}, { + Cell[ + BoxData[ + FormBox[ + StyleBox[ + TagBox[ + GridBox[{{ + TagBox[ + PaneBox[ + "\"current distance from Earth\"", + BaseStyle -> {{ + BaselinePosition -> Baseline, FontColor -> + GrayLevel[0.3]}, LineSpacing -> {0.9, 0, 1.5}, + LinebreakAdjustments -> {1, 10, 10000, 0, 100}, + TextAlignment -> Left}, BaselinePosition -> Baseline], + $CellContext`TagBoxWrapper["Label"]], + TagBox[ + GridBox[{{ + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["239\[ThinSpace]262", + $CellContext`TagBoxWrapper["StringBoxes" -> "239262"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + "\"mi\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}, { + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["60.37", + $CellContext`TagBoxWrapper["StringBoxes" -> "60.37"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + SubscriptBox[ + StyleBox["\"a\"", Italic, StripOnInput -> False], + "\"\[Earth]\""], FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, + BaselinePosition -> 1, DefaultBaseStyle -> "Column", + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Column"]}, { + TagBox[ + PaneBox[ + TagBox["\"average distance from Earth\"", Identity], + BaseStyle -> {{ + BaselinePosition -> Baseline, FontColor -> + GrayLevel[0.3]}, LineSpacing -> {0.9, 0, 1.5}, + LinebreakAdjustments -> {1, 10, 10000, 0, 100}, + TextAlignment -> Left}, BaselinePosition -> Baseline], + $CellContext`TagBoxWrapper["Label"]], + TagBox[ + GridBox[{{ + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["239\[ThinSpace]200", + $CellContext`TagBoxWrapper["StringBoxes" -> "239200"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + "\"mi\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}, { + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["60.36", + $CellContext`TagBoxWrapper["StringBoxes" -> "60.36"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + SubscriptBox[ + StyleBox["\"a\"", Italic, StripOnInput -> False], + "\"\[Earth]\""], FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, + BaselinePosition -> 1, DefaultBaseStyle -> "Column", + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Column"]}, { + TagBox[ + PaneBox[ + "\"largest distance from orbit center\"", + BaseStyle -> {{ + BaselinePosition -> Baseline, FontColor -> + GrayLevel[0.3]}, LineSpacing -> {0.9, 0, 1.5}, + LinebreakAdjustments -> {1, 10, 10000, 0, 100}, + TextAlignment -> Left}, BaselinePosition -> Baseline], + $CellContext`TagBoxWrapper["Label"]], + TagBox[ + GridBox[{{ + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["252\[ThinSpace]100", + $CellContext`TagBoxWrapper["StringBoxes" -> "252100"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + "\"mi\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}, { + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["63.61", + $CellContext`TagBoxWrapper["StringBoxes" -> "63.61"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + SubscriptBox[ + StyleBox["\"a\"", Italic, StripOnInput -> False], + "\"\[Earth]\""], FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, + BaselinePosition -> 1, DefaultBaseStyle -> "Column", + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Column"]}, { + TagBox[ + PaneBox[ + "\"nearest distance from orbit center\"", + BaseStyle -> {{ + BaselinePosition -> Baseline, FontColor -> + GrayLevel[0.3]}, LineSpacing -> {0.9, 0, 1.5}, + LinebreakAdjustments -> {1, 10, 10000, 0, 100}, + TextAlignment -> Left}, BaselinePosition -> Baseline], + $CellContext`TagBoxWrapper["Label"]], + TagBox[ + GridBox[{{ + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["225\[ThinSpace]600", + $CellContext`TagBoxWrapper["StringBoxes" -> "225600"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + "\"mi\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}, { + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["56.93", + $CellContext`TagBoxWrapper["StringBoxes" -> "56.93"]], + "\[NoBreak]", + StyleBox[ + RowBox[{}], FontFamily -> "Helvetica", FontSize -> + Smaller], "\[InvisibleSpace]", "\[ThickSpace]", + "\[InvisibleSpace]", + StyleBox[ + SubscriptBox[ + StyleBox["\"a\"", Italic, StripOnInput -> False], + "\"\[Earth]\""], FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], #& , SyntaxForm -> Dot], "Unit", + SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> {"Columns" -> {{Left}}}, + BaselinePosition -> 1, DefaultBaseStyle -> "Column", + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], + "Column"]}, { + TagBox[ + PaneBox[ + TagBox["\"orbital period\"", Identity], + BaseStyle -> {{ + BaselinePosition -> Baseline, FontColor -> + GrayLevel[0.3]}, LineSpacing -> {0.9, 0, 1.5}, + LinebreakAdjustments -> {1, 10, 10000, 0, 100}, + TextAlignment -> Left}, BaselinePosition -> Baseline], + $CellContext`TagBoxWrapper["Label"]], + StyleBox[ + TagBox[ + TagBox[ + TagBox[ + RowBox[{ + TagBox["27.322", + $CellContext`TagBoxWrapper["StringBoxes" -> "27.322"]], + "\[InvisibleSpace]", " ", + StyleBox[ + "\"days\"", LinebreakAdjustments -> {1, 100, 1, 0, 100}, + LineIndent -> 0, { + FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, StripOnInput -> False]}], Identity], #& , + SyntaxForm -> Dot], "Unit", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False]}}, + GridBoxAlignment -> { + "Columns" -> {Left, Left}, "Rows" -> {{Baseline}}}, + AutoDelete -> False, + GridBoxBackground -> {"Columns" -> {None, None}}, + GridBoxFrame -> {"Columns" -> {{True}}, "Rows" -> {{True}}}, + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> {"Columns" -> {{1.5}, 2}, "Rows" -> {{1}}}, + FrameStyle -> GrayLevel[0.84], BaselinePosition -> Automatic, + AllowScriptLevelChange -> False], "Grid"], + LineSpacing -> {0.9, 0, 1.5}, LineIndent -> 0, StripOnInput -> + False], TraditionalForm]], "Output", {}]}], + XMLElement[ + "dataformats", {}, { + "plaintext,computabledata,formatteddata,numberdata,quantitydata"}]}], + XMLElement["states", {"count" -> "2"}, { + XMLElement[ + "state", { + "name" -> "Show metric", "input" -> + "BasicPlanetOrbitalProperties:AstronomicalData__Show metric"}, {}], + XMLElement[ + "state", { + "name" -> "More", "input" -> + "BasicPlanetOrbitalProperties:AstronomicalData__More"}, {}]}], + XMLElement["infos", {"count" -> "1"}, { + XMLElement["info", {}, { + XMLElement["units", {"count" -> "2"}, { + XMLElement[ + "unit", { + "short" -> "a_\[Earth]", "long" -> + "equatorial radii of Earth"}, {}], + XMLElement["unit", {"short" -> "mi", "long" -> "miles"}, {}], + XMLElement["cell", {"compressed" -> False, "string" -> True}, { + Cell[ + BoxData[ + FormBox[ + StyleBox[ + TagBox[ + GridBox[{{ + StyleBox[ + StyleBox[ + TagBox[ + TagBox[ + RowBox[{ + StyleBox[ + SubscriptBox[ + StyleBox["\"a\"", Italic, StripOnInput -> False], + "\"\[Earth]\""], FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], "UnitOnly", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False], 10, StripOnInput -> False], + StyleBox[ + "\"equatorial radii of Earth\"", FontSize -> 10, + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, {FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, + GrayLevel[0.6], StripOnInput -> False]}, { + StyleBox[ + StyleBox[ + TagBox[ + TagBox[ + RowBox[{ + StyleBox[ + "\"mi\"", FontFamily -> "Helvetica", FontSize -> + Smaller]}], Identity], "UnitOnly", SyntaxForm -> Dot], + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, ZeroWidthTimes -> False], 10, StripOnInput -> False], + StyleBox[ + "\"miles\"", FontSize -> 10, + LinebreakAdjustments -> {1, 100, 1, 0, 100}, LineIndent -> + 0, {FontFamily :> $CellContext`$UnitFontFamily, FontSize -> + Smaller}, + GrayLevel[0.6], StripOnInput -> False]}}, + GridBoxAlignment -> { + "Columns" -> {Left, Left}, "Rows" -> {{Baseline}}}, + AutoDelete -> False, + GridBoxBackground -> {"Columns" -> {{None}}}, + GridBoxFrame -> { + "Columns" -> {{True}}, "Rows" -> {{True}}}, + GridBoxItemSize -> { + "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, + GridBoxSpacings -> { + "Columns" -> {{1.5}}, "Rows" -> {{0.5}}}, FrameStyle -> + GrayLevel[0.84], BaselinePosition -> Automatic, + AllowScriptLevelChange -> False], "Grid"], + LineSpacing -> {0.9, 0, 1.5}, LineIndent -> 0, StripOnInput -> + False], TraditionalForm]], "Output", {}]}]}]}]}]}], + Typeset`aux1$$ = {True, False, {False}, True}, Typeset`aux2$$ = { + True, False, {False}, True}, Typeset`aux3$$ = {True, False, {False}, True}, + Typeset`aux4$$ = {True, False, {False, False}, True}, Typeset`aux5$$ = { + True, False, {False}, True}, Typeset`aux6$$ = { + True, False, {False, False}, True}, Typeset`aux7$$ = { + True, False, {False}, True}, Typeset`asyncpods$$ = {}, Typeset`nonpods$$ = { + XMLElement["sources", {"count" -> "1"}, { + XMLElement[ + "source", { + "url" -> + "http://www.wolframalpha.com/sources/\ +AstronomicalDataSourceInformationNotes.html", "text" -> + "Astronomical data"}, {}]}]}, Typeset`initdone$$ = True, + Typeset`queryinfo$$ = { + "success" -> "true", "error" -> "false", "numpods" -> "7", "datatypes" -> + "Astronomical", "timedout" -> "", "timedoutpods" -> "", "timing" -> + "2.573", "parsetiming" -> "0.486", "parsetimedout" -> "false", + "recalculate" -> "", "id" -> + "MSPa79522303fg0608bh95i00004h41i28eicg1ci5g", "host" -> + "http://www3.wolframalpha.com", "server" -> "20", "related" -> + "http://www3.wolframalpha.com/api/v2/relatedQueries.jsp?id=\ +MSPa79622303fg0608bh95i000037d20g9h7ib3ec64&s=20", "version" -> "2.6"}, + Typeset`sessioninfo$$ = { + "TimeZone" -> -4., + "Date" -> {2014, 6, 8, 23, 7, 20.2144277`9.058236384941416}, "Line" -> 3, + "SessionID" -> 25552092645876612485}, Typeset`showpods$$ = {1, 2, 3, 4, 5, + 6, 7}, Typeset`failedpods$$ = {}, Typeset`chosen$$ = {}, Typeset`open$$ = + False, Typeset`newq$$ = "How far is the Earth from the Moon?"}, + DynamicBox[ToBoxes[ + AlphaIntegration`FormatAlphaResults[ + Dynamic[{ + 1, {Typeset`pod1$$, Typeset`pod2$$, Typeset`pod3$$, Typeset`pod4$$, + Typeset`pod5$$, Typeset`pod6$$, Typeset`pod7$$}, { + Typeset`aux1$$, Typeset`aux2$$, Typeset`aux3$$, Typeset`aux4$$, + Typeset`aux5$$, Typeset`aux6$$, Typeset`aux7$$}, Typeset`chosen$$, + Typeset`open$$, Typeset`elements$$, Typeset`q$$, Typeset`opts$$, + Typeset`nonpods$$, Typeset`queryinfo$$, Typeset`sessioninfo$$, + Typeset`showpods$$, Typeset`failedpods$$, Typeset`newq$$}]], + StandardForm], + ImageSizeCache->{648., {478., 483.}}, + TrackedSymbols:>{Typeset`showpods$$, Typeset`failedpods$$}], + DynamicModuleValues:>{}, + Initialization:>If[ + Not[Typeset`initdone$$], Null; WolframAlphaClient`Private`doAsyncUpdates[ + Hold[{ + Typeset`pod1$$, Typeset`pod2$$, Typeset`pod3$$, Typeset`pod4$$, + Typeset`pod5$$, Typeset`pod6$$, Typeset`pod7$$}], + Typeset`asyncpods$$, + Dynamic[Typeset`failedpods$$]]; Typeset`asyncpods$$ = {}; + Typeset`initdone$$ = True], + SynchronousInitialization->False], + BaseStyle->{Deployed -> True}, + DeleteWithContents->True, + Editable->False, + SelectWithContents->True]], "Print", + CellMargins->{{20, 10}, {Inherited, Inherited}}, + CellChangeTimes->{3.611272040233429*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Plot3D", "[", + RowBox[{ + RowBox[{ + RowBox[{"Power", "[", + RowBox[{"x", ",", " ", "2"}], "]"}], " ", "+", " ", "y", " ", "+", " ", + "z"}], ",", " ", + RowBox[{"{", + RowBox[{"x", ",", " ", "0", ",", " ", "10"}], "}"}], " ", ",", " ", + RowBox[{"{", + RowBox[{"y", ",", " ", "0", ",", " ", "10"}], "}"}]}], "]"}]], "Input", + CellChangeTimes->{{3.6112720578024335`*^9, 3.6112721112124887`*^9}}], + +Cell[BoxData[ + Graphics3DBox[{}, + Axes->True, + BoxRatios->{1, 1, 0.4}, + Method->{"RotationControl" -> "Globe"}, + PlotRange->{{0, 10}, {0, 10}, {0., 0.}}, + PlotRangePadding->{ + Scaled[0.02], + Scaled[0.02], + Scaled[0.02]}]], "Output", + CellChangeTimes->{3.6112721144606743`*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Plot3D", "[", + RowBox[{ + RowBox[{ + SuperscriptBox["x", "2"], "+", "y", "+", "z"}], ",", + RowBox[{"{", + RowBox[{"x", ",", "0", ",", "10"}], "}"}], ",", + RowBox[{"{", + RowBox[{"y", ",", "0", ",", "10"}], "}"}], ",", + RowBox[{"Mesh", "\[Rule]", "Automatic"}], ",", + RowBox[{"MeshFunctions", "\[Rule]", "Automatic"}]}], "]"}]], "Input", + NumberMarks->False], + +Cell[BoxData[ + Graphics3DBox[{}, + Axes->True, + BoxRatios->{1, 1, 0.4}, + Method->{"RotationControl" -> "Globe"}, + PlotRange->{{0, 10}, {0, 10}, {0., 0.}}, + PlotRangePadding->{ + Scaled[0.02], + Scaled[0.02], + Scaled[0.02]}]], "Output", + CellChangeTimes->{3.6112721290995116`*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Plot3D", "[", + RowBox[{ + RowBox[{ + SuperscriptBox["x", "2"], "+", "y", "+", "z"}], ",", + RowBox[{"{", + RowBox[{"x", ",", "0", ",", "10"}], "}"}], ",", + RowBox[{"{", + RowBox[{"y", ",", "0", ",", "10"}], "}"}], ",", + RowBox[{"MeshStyle", "\[Rule]", + RowBox[{"Directive", "[", + RowBox[{ + RowBox[{"RGBColor", "[", + RowBox[{"0.05`", ",", "1.`", ",", "0.98`"}], "]"}], ",", + RowBox[{"Opacity", "[", "0.11`", "]"}], ",", + RowBox[{"AbsoluteThickness", "[", "1.555`", "]"}]}], "]"}]}], ",", + RowBox[{"Mesh", "\[Rule]", "Automatic"}], ",", + RowBox[{"MeshFunctions", "\[Rule]", "Automatic"}]}], "]"}]], "Input", + NumberMarks->False], + +Cell[BoxData[ + Graphics3DBox[{}, + Axes->True, + BoxRatios->{1, 1, 0.4}, + Method->{"RotationControl" -> "Globe"}, + PlotRange->{{0, 10}, {0, 10}, {0., 0.}}, + PlotRangePadding->{ + Scaled[0.02], + Scaled[0.02], + Scaled[0.02]}]], "Output", + CellChangeTimes->{3.6112721409161873`*^9}] +}, Open ]], + +Cell[CellGroupData[{ + +Cell[BoxData[ + RowBox[{"Manipulate", "[", + RowBox[{ + RowBox[{"Plot", "[", + RowBox[{ + RowBox[{"Derivative", "[", + RowBox[{"Power", "[", + RowBox[{"x", ",", " ", "3"}], "]"}], "]"}], ",", " ", + RowBox[{"{", + RowBox[{"x", ",", " ", "0", ",", " ", "10"}], "}"}]}], "]"}], ",", " ", + RowBox[{"{", + RowBox[{"x", ",", " ", "0", ",", " ", "100"}], "}"}]}], "]"}]], "Input", + CellChangeTimes->{{3.611272144379386*^9, 3.61127220827404*^9}}], + +Cell[BoxData[ + TagBox[ + StyleBox[ + DynamicModuleBox[{$CellContext`x$$ = 74.60000000000001, Typeset`show$$ = + True, Typeset`bookmarkList$$ = {}, Typeset`bookmarkMode$$ = "Menu", + Typeset`animator$$, Typeset`animvar$$ = 1, Typeset`name$$ = + "\"untitled\"", Typeset`specs$$ = {{ + Hold[$CellContext`x$$], 0, 100}}, Typeset`size$$ = {360., {106., 110.}}, + Typeset`update$$ = 0, Typeset`initDone$$, Typeset`skipInitDone$$ = + True, $CellContext`x$5214$$ = 0}, + DynamicBox[Manipulate`ManipulateBoxes[ + 1, StandardForm, "Variables" :> {$CellContext`x$$ = 0}, + "ControllerVariables" :> { + Hold[$CellContext`x$$, $CellContext`x$5214$$, 0]}, + "OtherVariables" :> { + Typeset`show$$, Typeset`bookmarkList$$, Typeset`bookmarkMode$$, + Typeset`animator$$, Typeset`animvar$$, Typeset`name$$, + Typeset`specs$$, Typeset`size$$, Typeset`update$$, Typeset`initDone$$, + Typeset`skipInitDone$$}, "Body" :> Plot[ + Derivative[$CellContext`x$$^3], {$CellContext`x$$, 0, 10}], + "Specifications" :> {{$CellContext`x$$, 0, 100}}, "Options" :> {}, + "DefaultOptions" :> {}], + ImageSizeCache->{411., {152., 157.}}, + SingleEvaluation->True], + Deinitialization:>None, + DynamicModuleValues:>{}, + SynchronousInitialization->True, + UnsavedVariables:>{Typeset`initDone$$}, + UntrackedVariables:>{Typeset`size$$}], "Manipulate", + Deployed->True, + StripOnInput->False], + Manipulate`InterpretManipulate[1]]], "Output", + CellChangeTimes->{3.611272211487224*^9}] +}, Open ]] +}, +WindowSize->{716, 833}, +WindowMargins->{{Automatic, 275}, {Automatic, 64}}, +FrontEndVersion->"9.0 for Microsoft Windows (64-bit) (January 25, 2013)", +StyleDefinitions->"Default.nb" +] +(* End of Notebook Content *) + +(* Internal cache information *) +(*CellTagsOutline +CellTagsIndex->{} +*) +(*CellTagsIndex +CellTagsIndex->{} +*) +(*NotebookFileOutline +Notebook[{ +Cell[CellGroupData[{ +Cell[579, 22, 138, 3, 41, "WolframAlphaLong"], +Cell[720, 27, 194311, 3452, 971, "Print"] +}, Open ]], +Cell[CellGroupData[{ +Cell[195068, 3484, 441, 11, 31, "Input"], +Cell[195512, 3497, 292, 10, 306, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[195841, 3512, 404, 11, 55, "Input"], +Cell[196248, 3525, 292, 10, 306, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[196577, 3540, 708, 18, 76, "Input"], +Cell[197288, 3560, 292, 10, 306, "Output"] +}, Open ]], +Cell[CellGroupData[{ +Cell[197617, 3575, 472, 12, 31, "Input"], +Cell[198092, 3589, 1549, 32, 358, "Output"] +}, Open ]] +} +] +*) + +(* End of internal cache information *) + diff --git a/samples/Mathematica/PacletInfo.m b/samples/Mathematica/PacletInfo.m new file mode 100644 index 00000000..489b58c7 --- /dev/null +++ b/samples/Mathematica/PacletInfo.m @@ -0,0 +1,17 @@ +(* Paclet Info File *) + +(* created 2014/02/07*) + +Paclet[ + Name -> "Foobar", + Version -> "0.0.1", + MathematicaVersion -> "8+", + Description -> "Example of an automatically generated PacletInfo file.", + Creator -> "Chris Granade", + Extensions -> + { + {"Documentation", Language -> "English", MainPage -> "Guides/Foobar"} + } +] + + diff --git a/samples/Mathematica/Predicates.m b/samples/Mathematica/Predicates.m new file mode 100644 index 00000000..3c569691 --- /dev/null +++ b/samples/Mathematica/Predicates.m @@ -0,0 +1,150 @@ +(* ::Package:: *) + +BeginPackage["Predicates`"]; + + +(* ::Title:: *) +(*Predicates*) + + +(* ::Section::Closed:: *) +(*Fuzzy Logic*) + + +(* ::Subsection:: *) +(*Documentation*) + + +PossiblyTrueQ::usage="Returns True if the argument is not definitely False."; +PossiblyFalseQ::usage="Returns True if the argument is not definitely True."; +PossiblyNonzeroQ::usage="Returns True if and only if its argument is not definitely zero."; + + +(* ::Subsection:: *) +(*Implimentation*) + + +Begin["`Private`"]; + + +PossiblyTrueQ[expr_]:=\[Not]TrueQ[\[Not]expr] + + +PossiblyFalseQ[expr_]:=\[Not]TrueQ[expr] + + +End[]; + + +(* ::Section::Closed:: *) +(*Numbers and Lists*) + + +(* ::Subsection:: *) +(*Documentation*) + + +AnyQ::usage="Given a predicate and a list, retuns True if and only if that predicate is True for at least one element of the list."; +AnyElementQ::usage="Returns True if cond matches any element of L."; +AllQ::usage="Given a predicate and a list, retuns True if and only if that predicate is True for all elements of the list."; +AllElementQ::usage="Returns True if cond matches any element of L."; + + +AnyNonzeroQ::usage="Returns True if L is a list such that at least one element is definitely not zero."; +AnyPossiblyNonzeroQ::usage="Returns True if expr is a list such that at least one element is not definitely zero."; + + +RealQ::usage="Returns True if and only if the argument is a real number"; +PositiveQ::usage="Returns True if and only if the argument is a positive real number"; +NonnegativeQ::usage="Returns True if and only if the argument is a non-negative real number"; +PositiveIntegerQ::usage="Returns True if and only if the argument is a positive integer"; +NonnegativeIntegerQ::usage="Returns True if and only if the argument is a non-negative integer"; + + +IntegerListQ::usage="Returns True if and only if the input is a list of integers."; +PositiveIntegerListQ::usage="Returns True if and only if the input is a list of positive integers."; +NonnegativeIntegerListQ::usage="Returns True if and only if the input is a list of non-negative integers."; +IntegerOrListQ::usage="Returns True if and only if the input is a list of integers or an integer."; +PositiveIntegerOrListQ::usage="Returns True if and only if the input is a list of positive integers or a positive integer."; +NonnegativeIntegerOrListQ::usage="Returns True if and only if the input is a list of positive integers or a positive integer."; + + +SymbolQ::usage="Returns True if argument is an unassigned symbol."; +SymbolOrNumberQ::usage="Returns True if argument is a number of has head 'Symbol'"; + + +(* ::Subsection:: *) +(*Implimentation*) + + +Begin["`Private`"]; + + +AnyQ[cond_, L_] := Fold[Or, False, cond /@ L] + + +AnyElementQ[cond_,L_]:=AnyQ[cond,Flatten[L]] + + +AllQ[cond_, L_] := Fold[And, True, cond /@ L] + + +AllElementQ[cond_, L_] := Fold[And, True, cond /@ L] + + +AnyNonzeroQ[L_]:=AnyElementQ[#!=0&,L] + + +PossiblyNonzeroQ[expr_]:=PossiblyTrueQ[expr!=0] + + +AnyPossiblyNonzeroQ[expr_]:=AnyElementQ[PossiblyNonzeroQ,expr] + + +RealQ[n_]:=TrueQ[Im[n]==0]; + + +PositiveQ[n_]:=Positive[n]; + + +PositiveIntegerQ[n_]:=PositiveQ[n]\[And]IntegerQ[n]; + + +NonnegativeQ[n_]:=TrueQ[RealQ[n]&&n>=0]; + + +NonnegativeIntegerQ[n_]:=NonnegativeQ[n]\[And]IntegerQ[n]; + + +IntegerListQ[input_]:=ListQ[input]&&Not[MemberQ[IntegerQ/@input,False]]; + + +IntegerOrListQ[input_]:=IntegerListQ[input]||IntegerQ[input]; + + +PositiveIntegerListQ[input_]:=IntegerListQ[input]&&Not[MemberQ[Positive[input],False]]; + + +PositiveIntegerOrListQ[input_]:=PositiveIntegerListQ[input]||PositiveIntegerQ[input]; + + +NonnegativeIntegerListQ[input_]:=IntegerListQ[input]&&Not[MemberQ[NonnegativeIntegerQ[input],False]]; + + +NonnegativeIntegerOrListQ[input_]:=NonnegativeIntegerListQ[input]||NonnegativeIntegerQ[input]; + + +SymbolQ[a_]:=Head[a]===Symbol; + + +SymbolOrNumberQ[a_]:=NumericQ[a]||Head[a]===Symbol; + + +End[]; + + +(* ::Section:: *) +(*Epilogue*) + + +EndPackage[]; diff --git a/samples/Mathematica/Problem12.m b/samples/Mathematica/Problem12.m new file mode 100644 index 00000000..2e8e0ac7 --- /dev/null +++ b/samples/Mathematica/Problem12.m @@ -0,0 +1,8 @@ +(* ::Package:: *) + +(* Problem12.m *) +(* Author: William Woodruff *) +(* Problem: What is the value of the first triangle number to have over five hundred divisors? *) + +Do[If[Length[Divisors[Binomial[i + 1, 2]]] > 500, + Print[Binomial[i + 1, 2]]; Break[]], {i, 1000000}] diff --git a/samples/Mercury/code_info.m b/samples/Mercury/code_info.m new file mode 100644 index 00000000..59f8eee4 --- /dev/null +++ b/samples/Mercury/code_info.m @@ -0,0 +1,4843 @@ +%---------------------------------------------------------------------------% +% vim: ft=mercury ts=4 sw=4 et +%---------------------------------------------------------------------------% +% Copyright (C) 1994-2012 The University of Melbourne. +% This file may only be copied under the terms of the GNU General +% Public License - see the file COPYING in the Mercury distribution. +%---------------------------------------------------------------------------% +% +% File: code_info.m. +% Main authors: conway, zs. +% +% This file defines the code_info type and various operations on it. +% The code_info structure is the 'state' of the code generator. +% +% This file is organized into ten submodules: +% +% - the code_info structure and its access predicates +% - simple wrappers around access predicates +% - handling branched control structures +% - handling failure continuations +% - handling liveness issues +% - saving and restoring heap pointers, trail tickets etc +% - interfacing to var_locn +% - managing the info required by garbage collection and value numbering +% - managing stack slots +% - support for debugging the code generator itself. +% +%---------------------------------------------------------------------------% + +:- module ll_backend.code_info. +:- interface. + +:- import_module check_hlds.type_util. +:- import_module hlds.code_model. +:- import_module hlds.hlds_data. +:- import_module hlds.hlds_goal. +:- import_module hlds.hlds_llds. +:- import_module hlds.hlds_module. +:- import_module hlds.hlds_pred. +:- import_module hlds.instmap. +:- import_module libs.globals. +:- import_module ll_backend.continuation_info. +:- import_module ll_backend.global_data. +:- import_module ll_backend.layout. +:- import_module ll_backend.llds. +:- import_module ll_backend.trace_gen. +:- import_module mdbcomp.prim_data. +:- import_module mdbcomp.goal_path. +:- import_module parse_tree.prog_data. +:- import_module parse_tree.set_of_var. + +:- import_module assoc_list. +:- import_module bool. +:- import_module counter. +:- import_module io. +:- import_module list. +:- import_module map. +:- import_module maybe. +:- import_module set. +:- import_module set_tree234. +:- import_module term. + +%----------------------------------------------------------------------------% +%----------------------------------------------------------------------------% + +:- implementation. + +:- import_module backend_libs.builtin_ops. +:- import_module backend_libs.proc_label. +:- import_module hlds.arg_info. +:- import_module hlds.hlds_desc. +:- import_module hlds.hlds_rtti. +:- import_module libs.options. +:- import_module libs.trace_params. +:- import_module ll_backend.code_util. +:- import_module ll_backend.opt_debug. +:- import_module ll_backend.var_locn. +:- import_module parse_tree.builtin_lib_types. +:- import_module parse_tree.prog_type. +:- import_module parse_tree.mercury_to_mercury. + +:- import_module cord. +:- import_module int. +:- import_module pair. +:- import_module require. +:- import_module set. +:- import_module stack. +:- import_module string. +:- import_module varset. + +%---------------------------------------------------------------------------% + + % Submodule for the code_info type and its access predicates. + % + % This submodule has the following components: + % + % declarations for exported access predicates + % declarations for non-exported access predicates + % the definition of the type and the init predicate + % the definition of the get access predicates + % the definition of the set access predicates + % + % Please keep the order of mention of the various fields + % consistent in each of these five components. + +:- interface. + +:- type code_info. + + % Create a new code_info structure. Also return the + % outermost resumption point, and info about the non-fixed + % stack slots used for tracing purposes. + % +:- pred code_info_init(bool::in, globals::in, pred_id::in, proc_id::in, + pred_info::in, proc_info::in, abs_follow_vars::in, module_info::in, + static_cell_info::in, const_struct_map::in, resume_point_info::out, + trace_slot_info::out, maybe(containing_goal_map)::in, + list(string)::in, int::in, code_info::out) is det. + + % Get the globals table. + % +:- pred get_globals(code_info::in, globals::out) is det. + + % Get the exprn_opts. + % +:- pred get_exprn_opts(code_info::in, exprn_opts::out) is det. + + % Get the HLDS of the entire module. + % +:- pred get_module_info(code_info::in, module_info::out) is det. + + % Get the id of the predicate we are generating code for. + % +:- pred get_pred_id(code_info::in, pred_id::out) is det. + + % Get the id of the procedure we are generating code for. + % +:- pred get_proc_id(code_info::in, proc_id::out) is det. + + % Get the HLDS of the predicate containing the procedure + % we are generating code for. + % +:- pred get_pred_info(code_info::in, pred_info::out) is det. + + % Get the HLDS of the procedure we are generating code for. + % +:- pred get_proc_info(code_info::in, proc_info::out) is det. + + % Get the variables for the current procedure. + % +:- pred get_varset(code_info::in, prog_varset::out) is det. + +:- func get_var_types(code_info) = vartypes. + +:- pred get_maybe_trace_info(code_info::in, maybe(trace_info)::out) is det. + +:- pred get_emit_trail_ops(code_info::in, add_trail_ops::out) is det. + +:- pred get_emit_region_ops(code_info::in, add_region_ops::out) is det. + + % Get the set of currently forward-live variables. + % +:- pred get_forward_live_vars(code_info::in, set_of_progvar::out) is det. + + % Set the set of currently forward-live variables. + % +:- pred set_forward_live_vars(set_of_progvar::in, + code_info::in, code_info::out) is det. + + % Get the table mapping variables to the current + % instantiation states. + % +:- pred get_instmap(code_info::in, instmap::out) is det. + + % Set the table mapping variables to the current + % instantiation states. + % +:- pred set_instmap(instmap::in, code_info::in, code_info::out) is det. + + % Get the current nesting depth for parallel conjunctions. + % +:- pred get_par_conj_depth(code_info::in, int::out) is det. + + % Set the current nesting depth for parallel conjunctions. + % +:- pred set_par_conj_depth(int::in, code_info::in, code_info::out) is det. + + % The number of the last local label allocated. + % +:- pred get_label_counter(code_info::in, counter::out) is det. + + % Get the flag that indicates whether succip is used or not. + % +:- pred get_succip_used(code_info::in, bool::out) is det. + + % Get the label layout information created by tracing + % during code generation. + % +:- pred get_layout_info(code_info::in, proc_label_layout_info::out) is det. + +:- pred get_proc_trace_events(code_info::in, bool::out) is det. + +:- pred set_proc_trace_events(bool::in, code_info::in, code_info::out) is det. + + % Get the global static data structures that have + % been created during code generation for closure layouts. + % +:- pred get_closure_layouts(code_info::in, list(closure_proc_id_data)::out) + is det. + +:- pred get_max_reg_in_use_at_trace(code_info::in, int::out, int::out) is det. + +:- pred set_max_reg_in_use_at_trace(int::in, int::in, + code_info::in, code_info::out) is det. + + % Get the flag which is true iff the procedure has so far + % emitted code that creates a temporary nondet stack frame. + % +:- pred get_created_temp_frame(code_info::in, bool::out) is det. + +:- pred get_static_cell_info(code_info::in, static_cell_info::out) is det. + +:- pred set_static_cell_info(static_cell_info::in, + code_info::in, code_info::out) is det. + +:- pred get_alloc_sites(code_info::in, set_tree234(alloc_site_info)::out) + is det. + +:- pred set_alloc_sites(set_tree234(alloc_site_info)::in, + code_info::in, code_info::out) is det. + +:- pred get_used_env_vars(code_info::in, set(string)::out) is det. + +:- pred set_used_env_vars(set(string)::in, code_info::in, code_info::out) + is det. + +:- pred get_opt_trail_ops(code_info::in, bool::out) is det. + +:- pred get_opt_region_ops(code_info::in, bool::out) is det. + +:- pred get_auto_comments(code_info::in, bool::out) is det. + +:- pred get_lcmc_null(code_info::in, bool::out) is det. + +:- pred get_containing_goal_map(code_info::in, maybe(containing_goal_map)::out) + is det. + +:- pred get_containing_goal_map_det(code_info::in, containing_goal_map::out) + is det. + +:- pred get_const_struct_map(code_info::in, const_struct_map::out) is det. + +:- pred add_out_of_line_code(llds_code::in, code_info::in, code_info::out) + is det. + +:- pred get_out_of_line_code(code_info::in, llds_code::out) is det. + +%---------------------------------------------------------------------------% + +:- implementation. + +:- pred get_var_slot_count(code_info::in, int::out) is det. + +:- pred set_maybe_trace_info(maybe(trace_info)::in, + code_info::in, code_info::out) is det. + +:- pred get_opt_no_return_calls(code_info::in, bool::out) is det. + +:- pred get_zombies(code_info::in, set_of_progvar::out) is det. + +:- pred set_zombies(set_of_progvar::in, code_info::in, code_info::out) is det. + +:- pred get_var_locn_info(code_info::in, var_locn_info::out) is det. + +:- pred set_var_locn_info(var_locn_info::in, + code_info::in, code_info::out) is det. + +:- pred get_temps_in_use(code_info::in, set(lval)::out) is det. + +:- pred set_temps_in_use(set(lval)::in, code_info::in, code_info::out) is det. + +:- pred get_fail_info(code_info::in, fail_info::out) is det. + +:- pred set_fail_info(fail_info::in, code_info::in, code_info::out) is det. + +:- pred set_label_counter(counter::in, code_info::in, code_info::out) is det. + +:- pred set_succip_used(bool::in, code_info::in, code_info::out) is det. + +:- pred set_layout_info(proc_label_layout_info::in, + code_info::in, code_info::out) is det. + +:- pred get_max_temp_slot_count(code_info::in, int::out) is det. + +:- pred set_max_temp_slot_count(int::in, code_info::in, code_info::out) is det. + +:- pred get_temp_content_map(code_info::in, + map(lval, slot_contents)::out) is det. + +:- pred set_temp_content_map(map(lval, slot_contents)::in, + code_info::in, code_info::out) is det. + +:- pred get_persistent_temps(code_info::in, set(lval)::out) is det. + +:- pred set_persistent_temps(set(lval)::in, + code_info::in, code_info::out) is det. + +:- pred set_closure_layouts(list(closure_proc_id_data)::in, + code_info::in, code_info::out) is det. + +:- pred get_closure_seq_counter(code_info::in, counter::out) is det. + +:- pred set_closure_seq_counter(counter::in, + code_info::in, code_info::out) is det. + +:- pred set_created_temp_frame(bool::in, code_info::in, code_info::out) is det. + +%---------------------------------------------------------------------------% + + % The code_info structure has three groups of fields. + % + % Some fields are static; they are set when the code_info structure + % is initialized, and never changed afterwards. + % + % Some fields record information about the state of the code generator + % at a particular location in the HLDS code of the current procedure. + % At the start of the branched control structure, the code generator + % remembers the values of these fields, and starts generating code + % for each branch from the same location-dependent state. + % + % Some fields record persistent information that does not depend + % on a code location. Updates to these fields must remain effective + % even when the code generator resets its location-dependent state. + +:- type code_info + ---> code_info( + code_info_static :: code_info_static, + code_info_loc_dep :: code_info_loc_dep, + code_info_persistent :: code_info_persistent + ). + +:- type code_info_static + ---> code_info_static( + % For the code generation options. + cis_globals :: globals, + cis_exprn_opts :: exprn_opts, + + % The module_info structure - you just never know + % when you might need it. + cis_module_info :: module_info, + + % The id of the current predicate. + cis_pred_id :: pred_id, + + % The id of the current procedure. + cis_proc_id :: proc_id, + + % The pred_info for the predicate containing this procedure. + cis_pred_info :: pred_info, + + % The proc_info for this procedure. + cis_proc_info :: proc_info, + + % The proc_label for this procedure. + cis_proc_label :: proc_label, + + % The variables in this procedure. + cis_varset :: prog_varset, + + % The number of stack slots allocated. for storing variables. + % (Some extra stack slots are used for saving and restoring + % registers.) + cis_var_slot_count :: int, + + % Information about which stack slots the call sequence number + % and depth are stored in, provided tracing is switched on. + cis_maybe_trace_info :: maybe(trace_info), + + % Should we optimize calls that cannot return? + cis_opt_no_resume_calls :: bool, + + % Should we emit trail operations? + cis_emit_trail_ops :: add_trail_ops, + + % Should we try to avoid generating trail operations? + cis_opt_trail_ops :: bool, + + % Should we emit region operations? + cis_emit_region_ops :: add_region_ops, + + % Should we try to avoid generating region operations? + cis_opt_region_ops :: bool, + + % The setting of --auto-comments. + cis_auto_comments :: bool, + + % The setting of --optimize-constructor-last-call-null. + cis_lcmc_null :: bool, + + cis_containing_goal_map :: maybe(containing_goal_map), + + % Maps the number of an entry in the module's const_struct_db + % to its rval. + cis_const_struct_map :: const_struct_map + ). + +:- type code_info_loc_dep + ---> code_info_loc_dep( + % Variables that are forward live after this goal. + cild_forward_live_vars :: set_of_progvar, + + % Current insts of the live variables. + cild_instmap :: instmap, + + % Zombie variables; variables that are not forward live + % but which are protected by an enclosing resume point. + cild_zombies :: set_of_progvar, + + % A map storing the information about the status of each known + % variable. (Known vars = forward live vars + zombies.) + cild_var_locn_info :: var_locn_info, + + % The set of temporary locations currently in use. These lvals + % must be all be keys in the map of temporary locations ever + % used, which is one of the persistent fields below. Any keys + % in that map which are not in this set are free for reuse. + cild_temps_in_use :: set(lval), + + % Information about how to manage failures. + cild_fail_info :: fail_info, + + % How deep in a nested parallel conjunction we are. + % This is zero at the beginning of a procedure and + % is incremented as we enter parallel conjunctions. + cild_par_conj_depth :: int + ). + +:- type code_info_persistent + ---> code_info_persistent( + % Counter for the local labels used by this procedure. + cip_label_num_src :: counter, + + % do we need to store succip? + cip_store_succip :: bool, + + % Information on which values are live and where at which + % labels, for tracing and/or accurate gc. + cip_label_info :: proc_label_layout_info, + + % Did the procedure have any trace events? + cip_proc_trace_events :: bool, + + % The maximum number of extra temporary stackslots that + % have been used during the procedure. + cip_stackslot_max :: int, + + % The temporary locations that have ever been used on the + % stack, and what they contain. Once we have used a stack slot + % to store e.g. a ticket, we never reuse that slot to hold + % something else, e.g. a saved hp. This policy prevents us + % from making such conflicting choices in parallel branches, + % which would make it impossible to describe to gc what the + % slot contains after the end of the branched control + % structure. + cip_temp_contents :: map(lval, slot_contents), + + % Stack slot locations that should not be released even when + % the code generator resets its location-dependent state. + cip_persistent_temps :: set(lval), + + cip_closure_layout_seq :: counter, + + % Closure layout structures generated by this procedure. + cip_closure_layouts :: list(closure_proc_id_data), + + % At each call to MR_trace, we compute the highest rN and fN + % registers that contain useful values. These slot contain the + % maximum of these highest values. Therefore at all calls to + % MR_trace in the procedure, we need only save the registers + % whose numbers are equal to or smaller than this field. + % This slot contains -1 if tracing is not enabled. + cip_max_reg_r_used :: int, + cip_max_reg_f_used :: int, + + % True iff the procedure has created one or more temporary + % nondet frames. + cip_created_temp_frame :: bool, + + cip_static_cell_info :: static_cell_info, + + cip_alloc_sites :: set_tree234(alloc_site_info), + + cip_used_env_vars :: set(string), + + % A counter and table for allocating and maintaining slots + % where string IDs will be placed at runtime for threadscope + % profiling. The actual string IDs are allocated at runtime + % and their IDs are placed in an array slot which can be + % referred to statically. + cip_ts_string_table_size :: int, + cip_ts_rev_string_table :: list(string), + + % Code that is part of this procedure, but that can be placed + % after the procedure without a cache penalty. For example, + % code that is spawned off by loop control is placed here. + cip_out_of_line_code :: llds_code + ). + +%---------------------------------------------------------------------------% + +code_info_init(SaveSuccip, Globals, PredId, ProcId, PredInfo, ProcInfo, + FollowVars, ModuleInfo, StaticCellInfo, ConstStructMap, ResumePoint, + TraceSlotInfo, MaybeContainingGoalMap, + TSRevStringTable, TSStringTableSize, CodeInfo) :- + ProcLabel = make_proc_label(ModuleInfo, PredId, ProcId), + proc_info_get_initial_instmap(ProcInfo, ModuleInfo, InstMap), + proc_info_get_liveness_info(ProcInfo, Liveness), + CodeModel = proc_info_interface_code_model(ProcInfo), + build_input_arg_list(ProcInfo, ArgList), + proc_info_get_varset(ProcInfo, VarSet), + proc_info_get_vartypes(ProcInfo, VarTypes), + proc_info_get_stack_slots(ProcInfo, StackSlots), + ExprnOpts = init_exprn_opts(Globals), + globals.lookup_bool_option(Globals, use_float_registers, UseFloatRegs), + ( + UseFloatRegs = yes, + FloatRegType = reg_f + ; + UseFloatRegs = no, + FloatRegType = reg_r + ), + globals.get_trace_level(Globals, TraceLevel), + ( + eff_trace_level_is_none(ModuleInfo, PredInfo, ProcInfo, TraceLevel) + = no + -> + trace_fail_vars(ModuleInfo, ProcInfo, FailVars), + MaybeFailVars = yes(FailVars), + set_of_var.union(Liveness, FailVars, EffLiveness) + ; + MaybeFailVars = no, + EffLiveness = Liveness + ), + init_var_locn_state(ArgList, EffLiveness, VarSet, VarTypes, FloatRegType, + StackSlots, FollowVars, VarLocnInfo), + stack.init(ResumePoints), + globals.lookup_bool_option(Globals, allow_hijacks, AllowHijack), + ( + AllowHijack = yes, + Hijack = allowed + ; + AllowHijack = no, + Hijack = not_allowed + ), + DummyFailInfo = fail_info(ResumePoints, resume_point_unknown, + may_be_different, not_inside_non_condition, Hijack), + map.init(TempContentMap), + set.init(PersistentTemps), + set.init(TempsInUse), + Zombies = set_of_var.init, + map.init(LayoutMap), + max_var_slot(StackSlots, VarSlotMax), + trace_reserved_slots(ModuleInfo, PredInfo, ProcInfo, Globals, + FixedSlots, _), + int.max(VarSlotMax, FixedSlots, SlotMax), + globals.lookup_bool_option(Globals, opt_no_return_calls, + OptNoReturnCalls), + globals.lookup_bool_option(Globals, use_trail, UseTrail), + globals.lookup_bool_option(Globals, disable_trail_ops, DisableTrailOps), + ( + UseTrail = yes, + DisableTrailOps = no + -> + EmitTrailOps = add_trail_ops + ; + EmitTrailOps = do_not_add_trail_ops + ), + globals.lookup_bool_option(Globals, optimize_trail_usage, OptTrailOps), + globals.lookup_bool_option(Globals, optimize_region_ops, OptRegionOps), + globals.lookup_bool_option(Globals, region_analysis, UseRegions), + ( + UseRegions = yes, + EmitRegionOps = add_region_ops + ; + UseRegions = no, + EmitRegionOps = do_not_add_region_ops + ), + globals.lookup_bool_option(Globals, auto_comments, AutoComments), + globals.lookup_bool_option(Globals, optimize_constructor_last_call_null, + LCMCNull), + CodeInfo0 = code_info( + code_info_static( + Globals, + ExprnOpts, + ModuleInfo, + PredId, + ProcId, + PredInfo, + ProcInfo, + ProcLabel, + VarSet, + SlotMax, + no, + OptNoReturnCalls, + EmitTrailOps, + OptTrailOps, + EmitRegionOps, + OptRegionOps, + AutoComments, + LCMCNull, + MaybeContainingGoalMap, + ConstStructMap + ), + code_info_loc_dep( + Liveness, + InstMap, + Zombies, + VarLocnInfo, + TempsInUse, + DummyFailInfo, % init_fail_info will override this dummy value + 0 % nested parallel conjunction depth + ), + code_info_persistent( + counter.init(1), + SaveSuccip, + LayoutMap, + no, + 0, + TempContentMap, + PersistentTemps, + counter.init(1), + [], + -1, + -1, + no, + StaticCellInfo, + set_tree234.init, + set.init, + TSStringTableSize, + TSRevStringTable, + cord.empty + ) + ), + init_maybe_trace_info(TraceLevel, Globals, ModuleInfo, + PredInfo, ProcInfo, TraceSlotInfo, CodeInfo0, CodeInfo1), + init_fail_info(CodeModel, MaybeFailVars, ResumePoint, + CodeInfo1, CodeInfo). + +:- func init_exprn_opts(globals) = exprn_opts. + +init_exprn_opts(Globals) = ExprnOpts :- + globals.lookup_bool_option(Globals, gcc_non_local_gotos, OptNLG), + ( + OptNLG = yes, + NLG = have_non_local_gotos + ; + OptNLG = no, + NLG = do_not_have_non_local_gotos + ), + globals.lookup_bool_option(Globals, asm_labels, OptASM), + ( + OptASM = yes, + ASM = have_asm_labels + ; + OptASM = no, + ASM = do_not_have_asm_labels + ), + globals.lookup_bool_option(Globals, static_ground_cells, OptSGCell), + ( + OptSGCell = yes, + SGCell = have_static_ground_cells + ; + OptSGCell = no, + SGCell = do_not_have_static_ground_cells + ), + globals.lookup_bool_option(Globals, unboxed_float, OptUBF), + ( + OptUBF = yes, + UBF = have_unboxed_floats + ; + OptUBF = no, + UBF = do_not_have_unboxed_floats + ), + globals.lookup_bool_option(Globals, use_float_registers, OptFloatRegs), + ( + OptFloatRegs = yes, + UseFloatRegs = use_float_registers + ; + OptFloatRegs = no, + UseFloatRegs = do_not_use_float_registers + ), + globals.lookup_bool_option(Globals, static_ground_floats, OptSGFloat), + ( + OptSGFloat = yes, + SGFloat = have_static_ground_floats + ; + OptSGFloat = no, + SGFloat = do_not_have_static_ground_floats + ), + globals.lookup_bool_option(Globals, static_code_addresses, + OptStaticCodeAddr), + ( + OptStaticCodeAddr = yes, + StaticCodeAddrs = have_static_code_addresses + ; + OptStaticCodeAddr = no, + StaticCodeAddrs = do_not_have_static_code_addresses + ), + ExprnOpts = exprn_opts(NLG, ASM, UBF, UseFloatRegs, SGCell, SGFloat, + StaticCodeAddrs). + +:- pred init_maybe_trace_info(trace_level::in, globals::in, + module_info::in, pred_info::in, proc_info::in, trace_slot_info::out, + code_info::in, code_info::out) is det. + +init_maybe_trace_info(TraceLevel, Globals, ModuleInfo, PredInfo, + ProcInfo, TraceSlotInfo, !CI) :- + ( + eff_trace_level_is_none(ModuleInfo, PredInfo, ProcInfo, TraceLevel) + = no + -> + proc_info_get_has_tail_call_events(ProcInfo, HasTailCallEvents), + ( + HasTailCallEvents = tail_call_events, + get_next_label(TailRecLabel, !CI), + MaybeTailRecLabel = yes(TailRecLabel) + ; + HasTailCallEvents = no_tail_call_events, + MaybeTailRecLabel = no + ), + trace_setup(ModuleInfo, PredInfo, ProcInfo, Globals, MaybeTailRecLabel, + TraceSlotInfo, TraceInfo, !CI), + set_maybe_trace_info(yes(TraceInfo), !CI) + ; + TraceSlotInfo = trace_slot_info(no, no, no, no, no, no) + ). + +%---------------------------------------------------------------------------% + +get_globals(CI, CI ^ code_info_static ^ cis_globals). +get_module_info(CI, CI ^ code_info_static ^ cis_module_info). +get_exprn_opts(CI, CI ^ code_info_static ^ cis_exprn_opts). +get_pred_id(CI, CI ^ code_info_static ^ cis_pred_id). +get_proc_id(CI, CI ^ code_info_static ^ cis_proc_id). +get_pred_info(CI, CI ^ code_info_static ^ cis_pred_info). +get_proc_info(CI, CI ^ code_info_static ^ cis_proc_info). +get_varset(CI, CI ^ code_info_static ^ cis_varset). +get_var_slot_count(CI, CI ^ code_info_static ^ cis_var_slot_count). +get_maybe_trace_info(CI, CI ^ code_info_static ^ cis_maybe_trace_info). +get_opt_no_return_calls(CI, CI ^ code_info_static ^ cis_opt_no_resume_calls). +get_emit_trail_ops(CI, CI ^ code_info_static ^ cis_emit_trail_ops). +get_opt_trail_ops(CI, CI ^ code_info_static ^ cis_opt_trail_ops). +get_emit_region_ops(CI, CI ^ code_info_static ^ cis_emit_region_ops). +get_opt_region_ops(CI, CI ^ code_info_static ^ cis_opt_region_ops). +get_auto_comments(CI, CI ^ code_info_static ^ cis_auto_comments). +get_lcmc_null(CI, CI ^ code_info_static ^ cis_lcmc_null). +get_containing_goal_map(CI, CI ^ code_info_static ^ cis_containing_goal_map). +get_const_struct_map(CI, CI ^ code_info_static ^ cis_const_struct_map). +get_forward_live_vars(CI, CI ^ code_info_loc_dep ^ cild_forward_live_vars). +get_instmap(CI, CI ^ code_info_loc_dep ^ cild_instmap). +get_zombies(CI, CI ^ code_info_loc_dep ^ cild_zombies). +get_var_locn_info(CI, CI ^ code_info_loc_dep ^ cild_var_locn_info). +get_temps_in_use(CI, CI ^ code_info_loc_dep ^ cild_temps_in_use). +get_fail_info(CI, CI ^ code_info_loc_dep ^ cild_fail_info). +get_par_conj_depth(CI, CI ^ code_info_loc_dep ^ cild_par_conj_depth). +get_label_counter(CI, CI ^ code_info_persistent ^ cip_label_num_src). +get_succip_used(CI, CI ^ code_info_persistent ^ cip_store_succip). +get_layout_info(CI, CI ^ code_info_persistent ^ cip_label_info). +get_proc_trace_events(CI, CI ^ code_info_persistent ^ cip_proc_trace_events). +get_max_temp_slot_count(CI, CI ^ code_info_persistent ^ cip_stackslot_max). +get_temp_content_map(CI, CI ^ code_info_persistent ^ cip_temp_contents). +get_persistent_temps(CI, CI ^ code_info_persistent ^ cip_persistent_temps). +get_closure_seq_counter(CI, + CI ^ code_info_persistent ^ cip_closure_layout_seq). +get_closure_layouts(CI, CI ^ code_info_persistent ^ cip_closure_layouts). +get_max_reg_in_use_at_trace(CI, MaxRegR, MaxRegF) :- + MaxRegR = CI ^ code_info_persistent ^ cip_max_reg_r_used, + MaxRegF = CI ^ code_info_persistent ^ cip_max_reg_f_used. +get_created_temp_frame(CI, CI ^ code_info_persistent ^ cip_created_temp_frame). +get_static_cell_info(CI, CI ^ code_info_persistent ^ cip_static_cell_info). +get_alloc_sites(CI, CI ^ code_info_persistent ^ cip_alloc_sites). +get_used_env_vars(CI, CI ^ code_info_persistent ^ cip_used_env_vars). + +%---------------------------------------------------------------------------% + +set_maybe_trace_info(TI, CI, + CI ^ code_info_static ^ cis_maybe_trace_info := TI). +set_forward_live_vars(LV, CI, + CI ^ code_info_loc_dep ^ cild_forward_live_vars := LV). +set_instmap(IM, CI, CI ^ code_info_loc_dep ^ cild_instmap := IM). +set_zombies(Zs, CI, CI ^ code_info_loc_dep ^ cild_zombies := Zs). +set_var_locn_info(EI, CI, CI ^ code_info_loc_dep ^ cild_var_locn_info := EI). +set_temps_in_use(TI, CI, CI ^ code_info_loc_dep ^ cild_temps_in_use := TI). +set_fail_info(FI, CI, CI ^ code_info_loc_dep ^ cild_fail_info := FI). +set_par_conj_depth(N, CI, CI ^ code_info_loc_dep ^ cild_par_conj_depth := N). +set_label_counter(LC, CI, CI ^ code_info_persistent ^ cip_label_num_src := LC). +set_succip_used(SU, CI, CI ^ code_info_persistent ^ cip_store_succip := SU). +set_layout_info(LI, CI, CI ^ code_info_persistent ^ cip_label_info := LI). +set_proc_trace_events(PTE, CI, + CI ^ code_info_persistent ^ cip_proc_trace_events := PTE). +set_max_temp_slot_count(TM, CI, + CI ^ code_info_persistent ^ cip_stackslot_max := TM). +set_temp_content_map(CM, CI, + CI ^ code_info_persistent ^ cip_temp_contents := CM). +set_persistent_temps(PT, CI, + CI ^ code_info_persistent ^ cip_persistent_temps := PT). +set_closure_seq_counter(CLS, CI, + CI ^ code_info_persistent ^ cip_closure_layout_seq := CLS). +set_closure_layouts(CG, CI, + CI ^ code_info_persistent ^ cip_closure_layouts := CG). +set_max_reg_in_use_at_trace(MR, MF, !CI) :- + !CI ^ code_info_persistent ^ cip_max_reg_r_used := MR, + !CI ^ code_info_persistent ^ cip_max_reg_f_used := MF. +set_created_temp_frame(MR, CI, + CI ^ code_info_persistent ^ cip_created_temp_frame := MR). +set_static_cell_info(SCI, CI, + CI ^ code_info_persistent ^ cip_static_cell_info := SCI). +set_alloc_sites(ASI, CI, + CI ^ code_info_persistent ^ cip_alloc_sites := ASI). +set_used_env_vars(UEV, CI, + CI ^ code_info_persistent ^ cip_used_env_vars := UEV). + +get_containing_goal_map_det(CI, ContainingGoalMap) :- + get_containing_goal_map(CI, MaybeContainingGoalMap), + ( + MaybeContainingGoalMap = yes(ContainingGoalMap) + ; + MaybeContainingGoalMap = no, + unexpected($module, $pred, "no map") + ). + +add_out_of_line_code(NewCode, !CI) :- + Code0 = !.CI ^ code_info_persistent ^ cip_out_of_line_code, + Code = Code0 ++ NewCode, + !CI ^ code_info_persistent ^ cip_out_of_line_code := Code. + +get_out_of_line_code(CI, CI ^ code_info_persistent ^ cip_out_of_line_code). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule for simple wrappers around access predicates. + +:- interface. + + % Get the hlds mapping from variables to stack slots + % +:- pred get_stack_slots(code_info::in, stack_slots::out) is det. + + % Get the table that contains advice about where + % variables should be put. + % +:- pred get_follow_var_map(code_info::in, abs_follow_vars_map::out) is det. + + % Get the integer that gives the number of the next + % non-reserved register. + % +:- pred get_next_non_reserved(code_info::in, reg_type::in, int::out) is det. + + % Set the table that contains advice about where + % variables should be put. +:- pred set_follow_vars(abs_follow_vars::in, + code_info::in, code_info::out) is det. + + % pre_goal_update(GoalInfo, HasSubGoal, OldCodeInfo, NewCodeInfo) + % updates OldCodeInfo to produce NewCodeInfo with the changes + % specified by GoalInfo. + % +:- pred pre_goal_update(hlds_goal_info::in, has_subgoals::in, + code_info::in, code_info::out) is det. + + % post_goal_update(GoalInfo, OldCodeInfo, NewCodeInfo) + % updates OldCodeInfo to produce NewCodeInfo with the changes described + % by GoalInfo. + % +:- pred post_goal_update(hlds_goal_info::in, + code_info::in, code_info::out) is det. + + % Find out whether the body of the current procedure should use + % typeinfo liveness. + % +:- func body_typeinfo_liveness(code_info) = bool. + + % Find out the type of the given variable. + % +:- func variable_type(code_info, prog_var) = mer_type. + +:- func variable_is_of_dummy_type(code_info, prog_var) = is_dummy_type. + + % Compute the principal type constructor of the given type, and return the + % definition of this type constructor, if it has one (some type + % constructors are built in, and some are hidden behind abstraction + % barriers). + % +:- pred search_type_defn(code_info::in, mer_type::in, hlds_type_defn::out) is + semidet. + + % Compute the principal type constructor of the given type, and return the + % definition of this type constructor. Abort if it doesn't have a + % definition (e.g. because it is a builtin). + % +:- func lookup_type_defn(code_info, mer_type) = hlds_type_defn. + +:- func lookup_cheaper_tag_test(code_info, mer_type) = maybe_cheaper_tag_test. + +:- func filter_region_vars(code_info, set_of_progvar) = set_of_progvar. + + % Get the code model of the current procedure. + % +:- func get_proc_model(code_info) = code_model. + + % Get the list of the head variables of the current procedure. + % +:- func get_headvars(code_info) = list(prog_var). + + % Get the call argument information for the current procedure + % +:- func get_arginfo(code_info) = list(arg_info). + + % Get the call argument info for a given mode of a given predicate + % +:- func get_pred_proc_arginfo(code_info, pred_id, proc_id) = list(arg_info). + + % Get the set of variables currently needed by the resume + % points of enclosing goals. + % +:- func current_resume_point_vars(code_info) = set_of_progvar. + +:- func variable_name(code_info, prog_var) = string. + + % Create a code address which holds the address of the specified + % procedure. + % The fourth argument should be `no' if the the caller wants the + % returned address to be valid from everywhere in the program. + % If being valid from within the current procedure is enough, + % this argument should be `yes' wrapped around the value of the + % --procs-per-c-function option and the current procedure id. + % Using an address that is only valid from within the current + % procedure may make jumps more efficient. + % + % If the procs_per_c_function option tells us to put more than one + % procedure into each C function, but not all procedures in the module + % are in one function, then we would like to be able to use the + % fast form of reference to a procedure for references not only from + % within the same procedure but also from other procedures within + % the same C function. However, at the time of code generation, + % we do not yet know which procedures will be put into the same + % C functions, and so we cannot do this. + % +:- func make_proc_entry_label(code_info, module_info, pred_id, proc_id, bool) + = code_addr. + + % Generate the next local label in sequence. + % +:- pred get_next_label(label::out, code_info::in, code_info::out) + is det. + + % Note that the succip slot is used, and thus cannot be optimized away. + % +:- pred succip_is_used(code_info::in, code_info::out) is det. + +:- pred add_trace_layout_for_label(label::in, term.context::in, trace_port::in, + bool::in, forward_goal_path::in, maybe(user_event_info)::in, + layout_label_info::in, code_info::in, code_info::out) is det. + +:- pred get_cur_proc_label(code_info::in, proc_label::out) is det. + +:- pred get_next_closure_seq_no(int::out, + code_info::in, code_info::out) is det. + +:- pred add_closure_layout(closure_proc_id_data::in, + code_info::in, code_info::out) is det. + +:- pred add_threadscope_string(string::in, int::out, + code_info::in, code_info::out) is det. + +:- pred get_threadscope_rev_string_table(code_info::in, + list(string)::out, int::out) is det. + +:- pred add_scalar_static_cell(list(typed_rval)::in, + data_id::out, code_info::in, code_info::out) is det. + +:- pred add_scalar_static_cell_natural_types(list(rval)::in, + data_id::out, code_info::in, code_info::out) is det. + +:- pred add_vector_static_cell(list(llds_type)::in, list(list(rval))::in, + data_id::out, code_info::in, code_info::out) is det. + +:- pred add_alloc_site_info(prog_context::in, string::in, int::in, + alloc_site_id::out, code_info::in, code_info::out) is det. + +%---------------------------------------------------------------------------% + +:- implementation. + +:- pred add_resume_layout_for_label(label::in, + layout_label_info::in, code_info::in, code_info::out) is det. + +get_stack_slots(CI, StackSlots) :- + get_var_locn_info(CI, VarLocnInfo), + var_locn_get_stack_slots(VarLocnInfo, StackSlots). + +get_follow_var_map(CI, FollowVarMap) :- + get_var_locn_info(CI, VarLocnInfo), + var_locn_get_follow_var_map(VarLocnInfo, FollowVarMap). + +get_next_non_reserved(CI, RegType, NextNonReserved) :- + get_var_locn_info(CI, VarLocnInfo), + var_locn_get_next_non_reserved(VarLocnInfo, RegType, NextNonReserved). + +set_follow_vars(FollowVars, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_set_follow_vars(FollowVars, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +%-----------------------------------------------------------------------------% + +pre_goal_update(GoalInfo, HasSubGoals, !CI) :- + % The liveness pass puts resume_point annotations on some kinds + % of goals. The parts of the code generator that handle those kinds + % of goals should handle the resume point annotation as well; + % when they do, they remove the annotation. The following code + % is a sanity check to make sure that this has in fact been done. + goal_info_get_resume_point(GoalInfo, ResumePoint), + ( + ResumePoint = no_resume_point + ; + ResumePoint = resume_point(_, _), + unexpected($module, $pred, "pre_goal_update with resume point") + ), + goal_info_get_follow_vars(GoalInfo, MaybeFollowVars), + ( + MaybeFollowVars = yes(FollowVars), + set_follow_vars(FollowVars, !CI) + ; + MaybeFollowVars = no + ), + % NOTE: we must be careful to apply deaths before births + goal_info_get_pre_deaths(GoalInfo, PreDeaths), + rem_forward_live_vars(PreDeaths, !CI), + maybe_make_vars_forward_dead(PreDeaths, no, !CI), + goal_info_get_pre_births(GoalInfo, PreBirths), + add_forward_live_vars(PreBirths, !CI), + ( + HasSubGoals = does_not_have_subgoals, + goal_info_get_post_deaths(GoalInfo, PostDeaths), + rem_forward_live_vars(PostDeaths, !CI) + ; + HasSubGoals = has_subgoals + ). + +post_goal_update(GoalInfo, !CI) :- + % note: we must be careful to apply deaths before births + goal_info_get_post_deaths(GoalInfo, PostDeaths), + rem_forward_live_vars(PostDeaths, !CI), + maybe_make_vars_forward_dead(PostDeaths, no, !CI), + goal_info_get_post_births(GoalInfo, PostBirths), + add_forward_live_vars(PostBirths, !CI), + make_vars_forward_live(PostBirths, !CI), + InstMapDelta = goal_info_get_instmap_delta(GoalInfo), + get_instmap(!.CI, InstMap0), + instmap.apply_instmap_delta(InstMap0, InstMapDelta, InstMap), + set_instmap(InstMap, !CI). + +%---------------------------------------------------------------------------% + +body_typeinfo_liveness(CI) = TypeInfoLiveness :- + get_module_info(CI, ModuleInfo), + get_pred_id(CI, PredId), + module_info_pred_info(ModuleInfo, PredId, PredInfo), + get_globals(CI, Globals), + body_should_use_typeinfo_liveness(PredInfo, Globals, TypeInfoLiveness). + +get_var_types(CI) = VarTypes :- + get_proc_info(CI, ProcInfo), + proc_info_get_vartypes(ProcInfo, VarTypes). + +variable_type(CI, Var) = Type :- + lookup_var_type(get_var_types(CI), Var, Type). + +variable_is_of_dummy_type(CI, Var) = IsDummy :- + VarType = variable_type(CI, Var), + get_module_info(CI, ModuleInfo), + IsDummy = check_dummy_type(ModuleInfo, VarType). + +search_type_defn(CI, Type, TypeDefn) :- + get_module_info(CI, ModuleInfo), + type_to_ctor_det(Type, TypeCtor), + module_info_get_type_table(ModuleInfo, TypeTable), + search_type_ctor_defn(TypeTable, TypeCtor, TypeDefn). + +lookup_type_defn(CI, Type) = TypeDefn :- + ( search_type_defn(CI, Type, TypeDefnPrime) -> + TypeDefn = TypeDefnPrime + ; + unexpected($module, $pred, "type ctor has no definition") + ). + +lookup_cheaper_tag_test(CI, Type) = CheaperTagTest :- + ( + search_type_defn(CI, Type, TypeDefn), + get_type_defn_body(TypeDefn, TypeBody), + TypeBody = hlds_du_type(_, _, CheaperTagTestPrime, _, _, _, _, _, _) + -> + CheaperTagTest = CheaperTagTestPrime + ; + CheaperTagTest = no_cheaper_tag_test + ). + +filter_region_vars(CI, ForwardLiveVarsBeforeGoal) = RegionVars :- + VarTypes = code_info.get_var_types(CI), + RegionVars = set_of_var.filter(is_region_var(VarTypes), + ForwardLiveVarsBeforeGoal). + +%---------------------------------------------------------------------------% + +get_proc_model(CI) = CodeModel :- + get_proc_info(CI, ProcInfo), + CodeModel = proc_info_interface_code_model(ProcInfo). + +get_headvars(CI) = HeadVars :- + get_module_info(CI, ModuleInfo), + get_pred_id(CI, PredId), + get_proc_id(CI, ProcId), + module_info_pred_proc_info(ModuleInfo, PredId, ProcId, _, ProcInfo), + proc_info_get_headvars(ProcInfo, HeadVars). + +get_arginfo(CI) = ArgInfo :- + get_pred_id(CI, PredId), + get_proc_id(CI, ProcId), + ArgInfo = get_pred_proc_arginfo(CI, PredId, ProcId). + +get_pred_proc_arginfo(CI, PredId, ProcId) = ArgInfo :- + get_module_info(CI, ModuleInfo), + module_info_pred_proc_info(ModuleInfo, PredId, ProcId, _, ProcInfo), + proc_info_arg_info(ProcInfo, ArgInfo). + +current_resume_point_vars(CI) = ResumeVars :- + get_fail_info(CI, FailInfo), + FailInfo = fail_info(ResumePointStack, _, _, _, _), + stack.det_top(ResumePointStack, ResumePointInfo), + pick_first_resume_point(ResumePointInfo, ResumeMap, _), + map.keys(ResumeMap, ResumeMapVarList), + ResumeVars = set_of_var.list_to_set(ResumeMapVarList). + +variable_name(CI, Var) = Name :- + get_varset(CI, Varset), + varset.lookup_name(Varset, Var, Name). + +%---------------------------------------------------------------------------% + +make_proc_entry_label(CI, ModuleInfo, PredId, ProcId, Immed0) = CodeAddr :- + ( + Immed0 = no, + Immed = no + ; + Immed0 = yes, + get_globals(CI, Globals), + globals.lookup_int_option(Globals, procs_per_c_function, ProcsPerFunc), + get_pred_id(CI, CurPredId), + get_proc_id(CI, CurProcId), + Immed = yes(ProcsPerFunc - proc(CurPredId, CurProcId)) + ), + CodeAddr = make_entry_label(ModuleInfo, PredId, ProcId, Immed). + +get_next_label(Label, !CI) :- + get_cur_proc_label(!.CI, ProcLabel), + get_label_counter(!.CI, C0), + counter.allocate(N, C0, C), + set_label_counter(C, !CI), + Label = internal_label(N, ProcLabel). + +succip_is_used(!CI) :- + set_succip_used(yes, !CI). + +add_trace_layout_for_label(Label, Context, Port, IsHidden, GoalPath, + MaybeSolverEventInfo, Layout, !CI) :- + get_layout_info(!.CI, Internals0), + Exec = yes(trace_port_layout_info(Context, Port, IsHidden, GoalPath, + MaybeSolverEventInfo, Layout)), + ( + Label = internal_label(LabelNum, _) + ; + Label = entry_label(_, _), + unexpected($module, $pred, "entry") + ), + ( map.search(Internals0, LabelNum, Internal0) -> + Internal0 = internal_layout_info(Exec0, Resume, Return), + ( + Exec0 = no + ; + Exec0 = yes(_), + unexpected($module, $pred, "already known label") + ), + Internal = internal_layout_info(Exec, Resume, Return), + map.det_update(LabelNum, Internal, Internals0, Internals) + ; + Internal = internal_layout_info(Exec, no, no), + map.det_insert(LabelNum, Internal, Internals0, Internals) + ), + set_layout_info(Internals, !CI). + +add_resume_layout_for_label(Label, LayoutInfo, !CI) :- + get_layout_info(!.CI, Internals0), + Resume = yes(LayoutInfo), + ( + Label = internal_label(LabelNum, _) + ; + Label = entry_label(_, _), + unexpected($module, $pred, "entry") + ), + ( map.search(Internals0, LabelNum, Internal0) -> + Internal0 = internal_layout_info(Exec, Resume0, Return), + ( + Resume0 = no + ; + Resume0 = yes(_), + unexpected($module, $pred, "already known label") + ), + Internal = internal_layout_info(Exec, Resume, Return), + map.det_update(LabelNum, Internal, Internals0, Internals) + ; + Internal = internal_layout_info(no, Resume, no), + map.det_insert(LabelNum, Internal, Internals0, Internals) + ), + set_layout_info(Internals, !CI). + +:- pred get_active_temps_data(code_info::in, + assoc_list(lval, slot_contents)::out) is det. + +get_active_temps_data(CI, Temps) :- + get_temps_in_use(CI, TempsInUse), + get_temp_content_map(CI, TempContentMap), + map.select(TempContentMap, TempsInUse, TempsInUseContentMap), + map.to_assoc_list(TempsInUseContentMap, Temps). + +get_cur_proc_label(CI, ProcLabel) :- + ProcLabel = CI ^ code_info_static ^ cis_proc_label. + +get_next_closure_seq_no(SeqNo, !CI) :- + get_closure_seq_counter(!.CI, C0), + counter.allocate(SeqNo, C0, C), + set_closure_seq_counter(C, !CI). + +add_closure_layout(ClosureLayout, !CI) :- + get_closure_layouts(!.CI, ClosureLayouts), + set_closure_layouts([ClosureLayout | ClosureLayouts], !CI). + +add_threadscope_string(String, SlotNum, !CI) :- + Size0 = !.CI ^ code_info_persistent ^ cip_ts_string_table_size, + RevTable0 = !.CI ^ code_info_persistent ^ cip_ts_rev_string_table, + SlotNum = Size0, + Size = Size0 + 1, + RevTable = [String | RevTable0], + !CI ^ code_info_persistent ^ cip_ts_string_table_size := Size, + !CI ^ code_info_persistent ^ cip_ts_rev_string_table := RevTable. + +get_threadscope_rev_string_table(CI, RevTable, TableSize) :- + RevTable = CI ^ code_info_persistent ^ cip_ts_rev_string_table, + TableSize = CI ^ code_info_persistent ^ cip_ts_string_table_size. + +add_scalar_static_cell(RvalsTypes, DataAddr, !CI) :- + get_static_cell_info(!.CI, StaticCellInfo0), + global_data.add_scalar_static_cell(RvalsTypes, DataAddr, + StaticCellInfo0, StaticCellInfo), + set_static_cell_info(StaticCellInfo, !CI). + +add_scalar_static_cell_natural_types(Rvals, DataAddr, !CI) :- + get_static_cell_info(!.CI, StaticCellInfo0), + global_data.add_scalar_static_cell_natural_types(Rvals, DataAddr, + StaticCellInfo0, StaticCellInfo), + set_static_cell_info(StaticCellInfo, !CI). + +add_vector_static_cell(Types, Vector, DataAddr, !CI) :- + get_static_cell_info(!.CI, StaticCellInfo0), + global_data.add_vector_static_cell(Types, Vector, DataAddr, + StaticCellInfo0, StaticCellInfo), + set_static_cell_info(StaticCellInfo, !CI). + +add_alloc_site_info(Context, Type, Size, AllocId, !CI) :- + get_cur_proc_label(!.CI, ProcLabel), + AllocSite = alloc_site_info(ProcLabel, Context, Type, Size), + AllocId = alloc_site_id(AllocSite), + get_alloc_sites(!.CI, AllocSites0), + set_tree234.insert(AllocSite, AllocSites0, AllocSites), + set_alloc_sites(AllocSites, !CI). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule for handling branched control structures. + +:- interface. + +:- type position_info. +:- type branch_end_info. + +:- type branch_end == maybe(branch_end_info). + +:- pred remember_position(code_info::in, position_info::out) is det. + +:- pred reset_to_position(position_info::in, + code_info::in, code_info::out) is det. + +:- pred reset_resume_known(position_info::in, + code_info::in, code_info::out) is det. + +:- pred generate_branch_end(abs_store_map::in, branch_end::in, branch_end::out, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred after_all_branches(abs_store_map::in, branch_end::in, + code_info::in, code_info::out) is det. + +:- pred save_hp_in_branch(llds_code::out, lval::out, + position_info::in, position_info::out, code_info::in, code_info::out) + is det. + +:- implementation. + +:- type position_info + ---> position_info( + % The location-dependent part of the code_info + % at a given position. + code_info_loc_dep + ). + +:- type branch_end_info + ---> branch_end_info( + % The code_info at the end of a branch. + code_info + ). + +:- func pos_get_fail_info(position_info) = fail_info. + +pos_get_fail_info(position_info(LocDep)) = LocDep ^ cild_fail_info. + +remember_position(CI, position_info(CI ^ code_info_loc_dep)). + +reset_to_position(position_info(LocDep), CurCI, NextCI) :- + CurCI = code_info(Static, _, Persistent), + NextCI0 = code_info(Static, LocDep, Persistent), + + get_persistent_temps(NextCI0, PersistentTemps), + get_temps_in_use(NextCI0, TempsInUse0), + set.union(PersistentTemps, TempsInUse0, TempsInUse), + set_temps_in_use(TempsInUse, NextCI0, NextCI). + +reset_resume_known(BranchStart, !CI) :- + BranchStartFailInfo = pos_get_fail_info(BranchStart), + BranchStartFailInfo = fail_info(_, BSResumeKnown, _, _, _), + get_fail_info(!.CI, CurFailInfo), + CurFailInfo = fail_info(CurFailStack, _, CurCurfMaxfr, CurCondEnv, + CurHijack), + NewFailInfo = fail_info(CurFailStack, BSResumeKnown, CurCurfMaxfr, + CurCondEnv, CurHijack), + set_fail_info(NewFailInfo, !CI). + +generate_branch_end(StoreMap, MaybeEnd0, MaybeEnd, Code, !CI) :- + % The code generator generates better code if it knows in advance where + % each variable should go. We don't need to reset the follow_vars + % afterwards, since every goal following a branched control structure + % must in any case be annotated with its own follow_var set. + map.to_assoc_list(StoreMap, AbsVarLocs), + assoc_list.values(AbsVarLocs, AbsLocs), + code_util.max_mentioned_abs_regs(AbsLocs, MaxRegR, MaxRegF), + set_follow_vars(abs_follow_vars(StoreMap, MaxRegR + 1, MaxRegF + 1), !CI), + get_instmap(!.CI, InstMap), + ( instmap_is_reachable(InstMap) -> + VarLocs = assoc_list.map_values_only(abs_locn_to_lval, AbsVarLocs), + place_vars(VarLocs, Code, !CI) + ; + % With --opt-no-return-call, the variables that we would have + % saved across a call that cannot return have had the last + % of their code generation state destroyed, so calling + % place_vars would cause a code generator abort. However, + % pretending that all the variables are where the store map + % says they should be is perfectly fine, since we can never + % reach the end of *this* branch anyway. + remake_with_store_map(StoreMap, !CI), + Code = empty + ), + EndCodeInfo1 = !.CI, + ( + MaybeEnd0 = no, + MaybeEnd = yes(branch_end_info(EndCodeInfo1)) + ; + MaybeEnd0 = yes(branch_end_info(EndCodeInfo0)), + + % Make sure the left context we leave the branched structure with + % is valid for all branches. + get_fail_info(EndCodeInfo0, FailInfo0), + get_fail_info(EndCodeInfo1, FailInfo1), + FailInfo0 = fail_info(_, ResumeKnown0, CurfrMaxfr0, CondEnv0, Hijack0), + FailInfo1 = fail_info(R, ResumeKnown1, CurfrMaxfr1, CondEnv1, Hijack1), + ( + ResumeKnown0 = resume_point_known(Redoip0), + ResumeKnown1 = resume_point_known(Redoip1) + -> + ResumeKnown = resume_point_known(Redoip0), + expect(unify(Redoip0, Redoip1), $module, $pred, "redoip mismatch") + ; + ResumeKnown = resume_point_unknown + ), + ( + CurfrMaxfr0 = must_be_equal, + CurfrMaxfr1 = must_be_equal + -> + CurfrMaxfr = must_be_equal + ; + CurfrMaxfr = may_be_different + ), + ( + Hijack0 = allowed, + Hijack1 = allowed + -> + Hijack = allowed + ; + Hijack = not_allowed + ), + expect(unify(CondEnv0, CondEnv1), $module, $pred, + "some but not all branches inside a non condition"), + FailInfo = fail_info(R, ResumeKnown, CurfrMaxfr, CondEnv0, Hijack), + set_fail_info(FailInfo, EndCodeInfo1, EndCodeInfoA), + + % Make sure the "temps in use" set at the end of the branched control + % structure includes every slot in use at the end of any branch. + get_temps_in_use(EndCodeInfo0, TempsInUse0), + get_temps_in_use(EndCodeInfo1, TempsInUse1), + set.union(TempsInUse0, TempsInUse1, TempsInUse), + set_temps_in_use(TempsInUse, EndCodeInfoA, EndCodeInfo), + + MaybeEnd = yes(branch_end_info(EndCodeInfo)) + ). + +after_all_branches(StoreMap, MaybeEnd, !CI) :- + ( + MaybeEnd = yes(BranchEnd), + BranchEnd = branch_end_info(BranchEndCodeInfo), + BranchEndLocDep = BranchEndCodeInfo ^ code_info_loc_dep, + reset_to_position(position_info(BranchEndLocDep), !CI), + remake_with_store_map(StoreMap, !CI) + ; + MaybeEnd = no, + unexpected($module, $pred, "no branches in branched control structure") + ). + + % remake_with_store_map throws away the var_info data structure, forgetting + % the current locations of all variables, and rebuilds it from scratch + % based on the given store map. The new var_info will know about only + % the variables present in the store map, and will believe they are + % where the store map says they are. + % +:- pred remake_with_store_map(abs_store_map::in, + code_info::in, code_info::out) is det. + +remake_with_store_map(StoreMap, !CI) :- + map.to_assoc_list(StoreMap, VarLocns), + VarLvals = assoc_list.map_values_only(abs_locn_to_lval, VarLocns), + get_var_locn_info(!.CI, VarLocnInfo0), + reinit_var_locn_state(VarLvals, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +save_hp_in_branch(Code, Slot, Pos0, Pos, CI0, CI) :- + CI0 = code_info(CIStatic0, CILocDep0, CIPersistent0), + Pos0 = position_info(LocDep0), + CI1 = code_info(CIStatic0, LocDep0, CIPersistent0), + save_hp(Code, Slot, CI1, CI2), + CI2 = code_info(CIStatic, LocDep, CIPersistent), + Pos = position_info(LocDep), + % Reset the location dependent part to the original. + CI = code_info(CIStatic, CILocDep0, CIPersistent). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule for the handling of failure continuations. + + % The principles underlying this submodule of code_info.m are + % documented in the file compiler/notes/failure.html, which also + % defines terms such as "quarter hijack"). Some parts of the submodule + % also require knowledge of compiler/notes/allocation.html. + +:- interface. + +:- type resume_map. + +:- type resume_point_info. + + % `prepare_for_disj_hijack' should be called before entering + % a disjunction. It saves the values of any nondet stack slots + % the disjunction may hijack, and if necessary, sets the redofr + % slot of the top frame to point to this frame. The code at the + % start of the individual disjuncts will override the redoip slot. + % + % `undo_disj_hijack' should be called before entering the last disjunct + % of a disjunction. It undoes the effects of `prepare_for_disj_hijack'. + % +:- type disj_hijack_info. + +:- pred prepare_for_disj_hijack(code_model::in, + disj_hijack_info::out, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred undo_disj_hijack(disj_hijack_info::in, + llds_code::out, code_info::in, code_info::out) is det. + + % `prepare_for_ite_hijack' should be called before entering + % an if-then-else. It saves the values of any nondet stack slots + % the if-then-else may hijack, and if necessary, sets the redofr + % slot of the top frame to point to this frame. Our caller + % will then override the redoip slot to point to the start of + % the else part before generating the code of the condition. + % The maybe(lval) argument, if set to `yes', specifies the slot + % holding the success record to use in deciding whether to execute + % a region_ite_nondet_cond_fail operation at the start of the else branch. + % + % `ite_enter_then', which should be called after generating code for + % the condition, sets up the failure state of the code generator + % for generating the then-part, and returns the code sequences + % to be used at the starts of the then-part and the else-part + % to undo the effects of any hijacking. + % +:- type ite_hijack_info. + +:- pred prepare_for_ite_hijack(code_model::in, + maybe(embedded_stack_frame_id)::in, ite_hijack_info::out, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred ite_enter_then(ite_hijack_info::in, resume_point_info::in, + llds_code::out, llds_code::out, code_info::in, code_info::out) is det. + + % `enter_simple_neg' and `leave_simple_neg' should be called before + % and after generating the code for a negated unification, in + % situations where failure is a direct branch. We handle this case + % specially, because it occurs frequently and should not require + % a flushing of the expression cache, whereas the general way of + % handling negations does require a flush. These two predicates + % handle all aspects of the negation except for the unification itself. + % +:- type simple_neg_info. + +:- pred enter_simple_neg(list(prog_var)::in, hlds_goal_info::in, + simple_neg_info::out, code_info::in, code_info::out) is det. + +:- pred leave_simple_neg(hlds_goal_info::in, simple_neg_info::in, + code_info::in, code_info::out) is det. + + % `prepare_for_det_commit' and `generate_det_commit' should be + % called before and after generating the code for the multi goal + % being cut across. If the goal succeeds, the commit will cut away + % any choice points generated in the goal. + % + % The set_of_progvar should be the set of variables live before + % the scope goal. + % +:- type det_commit_info. + +:- pred prepare_for_det_commit(add_trail_ops::in, add_region_ops::in, + set_of_progvar::in, hlds_goal_info::in, det_commit_info::out, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred generate_det_commit(det_commit_info::in, + llds_code::out, code_info::in, code_info::out) is det. + + % `prepare_for_semi_commit' and `generate_semi_commit' should be + % called before and after generating the code for the nondet goal + % being cut across. If the goal succeeds, the commit will cut + % any choice points generated in the goal. + % + % The set_of_progvar should be the set of variables live before + % the scope goal. + % +:- type semi_commit_info. + +:- pred prepare_for_semi_commit(add_trail_ops::in, add_region_ops::in, + set_of_progvar::in, hlds_goal_info::in, semi_commit_info::out, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred generate_semi_commit(semi_commit_info::in, + llds_code::out, code_info::in, code_info::out) is det. + + % Put the given resume point into effect, by pushing it on to + % the resume point stack, and if necessary generating code to + % override the redoip of the top nondet stack frame. + % +:- pred effect_resume_point(resume_point_info::in, code_model::in, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred pop_resume_point(code_info::in, code_info::out) is det. + + % Return the details of the resume point currently on top of the + % failure continuation stack. + % +:- pred top_resume_point(code_info::in, resume_point_info::out) is det. + + % Call this predicate to say "we have just left a disjunction; + % we don't know what address the following code will need to + % backtrack to". + % +:- pred set_resume_point_to_unknown(code_info::in, code_info::out) is det. + + % Call this predicate to say "we have just returned from a model_non + % call; we don't know what address the following code will need to + % backtrack to, and there may now be nondet frames on top of ours + % that do not have their redofr slots pointing to our frame". + % +:- pred set_resume_point_and_frame_to_unknown(code_info::in, code_info::out) + is det. + + % Generate code for executing a failure that is appropriate for the + % current failure environment. + % +:- pred generate_failure(llds_code::out, code_info::in, code_info::out) is det. + + % Generate code that checks if the given rval is false, and if yes, + % executes a failure that is appropriate for the current failure + % environment. + % +:- pred fail_if_rval_is_false(rval::in, llds_code::out, + code_info::in, code_info::out) is det. + + % Checks whether the appropriate code for failure in the current + % failure environment is a direct branch. + % +:- pred failure_is_direct_branch(code_info::in, code_addr::out) is semidet. + + % Checks under what circumstances the current failure environment + % would allow a model_non call at this point to be turned into a + % tail call, provided of course that the return from the call is + % followed immediately by succeed(). + % +:- pred may_use_nondet_tailcall(code_info::in, nondet_tail_call::out) is det. + + % Materialize the given variables into registers or stack slots. + % +:- pred produce_vars(list(prog_var)::in, resume_map::out, llds_code::out, + code_info::in, code_info::out) is det. + + % Put the variables needed in enclosing failure continuations + % into their stack slots. + % +:- pred flush_resume_vars_to_stack(llds_code::out, + code_info::in, code_info::out) is det. + + % Set up the resume_point_info structure. + % The ResumeVars passed as the first arguments should be a sorted list + % without duplicates. + % +:- pred make_resume_point(list(prog_var)::in, resume_locs::in, resume_map::in, + resume_point_info::out, code_info::in, code_info::out) is det. + + % Generate the code for a resume point. + % +:- pred generate_resume_point(resume_point_info::in, llds_code::out, + code_info::in, code_info::out) is det. + + % List the variables that need to be preserved for the given resume point. + % +:- pred resume_point_vars(resume_point_info::in, list(prog_var)::out) is det. + + % See whether the given resume point includes a code address that presumes + % all the resume point variables to be in their stack slots. If yes, + % return that code address; otherwise, abort the compiler. + % +:- pred resume_point_stack_addr(resume_point_info::in, code_addr::out) is det. + +%---------------------------------------------------------------------------% + +:- implementation. + + % The part of the code generator state that says how to handle + % failures; also called the failure continuation stack. + +:- type fail_info + ---> fail_info( + stack(resume_point_info), + resume_point_known, + curfr_vs_maxfr, + condition_env, + hijack_allowed + ). + + % A resumption point has one or two labels associated with it. + % Backtracking can arrive at either label. The code following + % each label will assume that the variables needed at the resumption + % point are in the locations given by the resume_map associated with + % the given label and nowhere else. Any code that can cause + % backtracking to a label must make sure that those variables are + % in the positions expected by the label. + % + % The only time when a code_addr in a resume_point info is not a label + % is when the code_addr is do_redo or do_fail, which indicate that + % the resumption point is either unknown or not in (this invocation of) + % this procedure. + % +:- type resume_point_info + ---> orig_only(resume_map, code_addr) + ; stack_only(resume_map, code_addr) + ; orig_and_stack(resume_map, code_addr, resume_map, code_addr) + ; stack_and_orig(resume_map, code_addr, resume_map, code_addr). + + % A resume map maps the variables that will be needed at a resumption + % point to the locations in which they will be. + % +:- type resume_map == map(prog_var, set(lval)). + +:- type redoip_update + ---> has_been_done + ; wont_be_done. + +:- type resume_point_known + ---> resume_point_known(redoip_update) + ; resume_point_unknown. + +:- type curfr_vs_maxfr + ---> must_be_equal + ; may_be_different. + +:- type condition_env + ---> inside_non_condition + ; not_inside_non_condition. + +:- type hijack_allowed + ---> allowed + ; not_allowed. + +%---------------------------------------------------------------------------% + +:- type disj_hijack_info + ---> disj_no_hijack + ; disj_temp_frame + ; disj_quarter_hijack + ; disj_half_hijack( + % The stack slot in which we saved the value + % of the hijacked redoip. + lval + ) + ; disj_full_hijack( + % The stack slot in which we saved the value + % of the hijacked redoip. + lval, + + % The stack slot in which we saved the value + % of the hijacked redofr. + lval + ). + +prepare_for_disj_hijack(CodeModel, HijackInfo, Code, !CI) :- + get_fail_info(!.CI, FailInfo), + FailInfo = fail_info(ResumePoints, ResumeKnown, CurfrMaxfr, CondEnv, + Allow), + ( + ( CodeModel = model_det + ; CodeModel = model_semi + ), + HijackInfo = disj_no_hijack, + Code = singleton( + llds_instr(comment("disj no hijack"), "") + ) + ; + CodeModel = model_non, + ( + CondEnv = inside_non_condition, + HijackInfo = disj_temp_frame, + create_temp_frame(do_fail, "prepare for disjunction", Code, !CI) + ; + CondEnv = not_inside_non_condition, + ( + Allow = not_allowed, + ( + CurfrMaxfr = must_be_equal, + ResumeKnown = resume_point_known(has_been_done), + stack.pop(TopResumePoint, ResumePoints, RestResumePoints), + stack.is_empty(RestResumePoints), + TopResumePoint = stack_only(_, do_fail) + -> + HijackInfo = disj_quarter_hijack, + Code = singleton( + llds_instr(comment("disj quarter hijack of do_fail"), + "") + ) + ; + HijackInfo = disj_temp_frame, + create_temp_frame(do_fail, "prepare for disjunction", Code, + !CI) + ) + ; + Allow = allowed, + ( + CurfrMaxfr = must_be_equal, + ( + ResumeKnown = resume_point_known(has_been_done), + HijackInfo = disj_quarter_hijack, + Code = singleton( + llds_instr(comment("disj quarter hijack"), "") + ) + ; + ( ResumeKnown = resume_point_known(wont_be_done) + ; ResumeKnown = resume_point_unknown + ), + acquire_temp_slot(slot_lval(redoip_slot(lval(curfr))), + non_persistent_temp_slot, RedoipSlot, !CI), + HijackInfo = disj_half_hijack(RedoipSlot), + Code = singleton( + llds_instr(assign(RedoipSlot, + lval(redoip_slot(lval(curfr)))), + "prepare for half disj hijack") + ) + ) + ; + CurfrMaxfr = may_be_different, + acquire_temp_slot(slot_lval(redoip_slot(lval(maxfr))), + non_persistent_temp_slot, RedoipSlot, !CI), + acquire_temp_slot(slot_lval(redofr_slot(lval(maxfr))), + non_persistent_temp_slot, RedofrSlot, !CI), + HijackInfo = disj_full_hijack(RedoipSlot, RedofrSlot), + Code = from_list([ + llds_instr( + assign(RedoipSlot, lval(redoip_slot(lval(maxfr)))), + "prepare for full disj hijack"), + llds_instr( + assign(RedofrSlot, lval(redofr_slot(lval(maxfr)))), + "prepare for full disj hijack"), + llds_instr( + assign(redofr_slot(lval(maxfr)), lval(curfr)), + "prepare for full disj hijack") + ]) + ) + ) + ) + ). + +undo_disj_hijack(HijackInfo, Code, !CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints, ResumeKnown, CurfrMaxfr, CondEnv, + Allow), + ( + HijackInfo = disj_no_hijack, + Code = empty + ; + HijackInfo = disj_temp_frame, + Code = singleton( + llds_instr(assign(maxfr, lval(prevfr_slot(lval(maxfr)))), + "restore maxfr for temp frame disj") + ) + ; + HijackInfo = disj_quarter_hijack, + expect(unify(CurfrMaxfr, must_be_equal), $module, $pred, + "maxfr may differ from curfr in disj_quarter_hijack"), + stack.det_top(ResumePoints, ResumePoint), + pick_stack_resume_point(ResumePoint, _, StackLabel), + LabelConst = const(llconst_code_addr(StackLabel)), + % peephole.m looks for the "curfr==maxfr" pattern in the comment. + Code = singleton( + llds_instr(assign(redoip_slot(lval(curfr)), LabelConst), + "restore redoip for quarter disj hijack (curfr==maxfr)") + ) + ; + HijackInfo = disj_half_hijack(RedoipSlot), + expect(unify(ResumeKnown, resume_point_unknown), $module, $pred, + "resume point known in disj_half_hijack"), + expect(unify(CurfrMaxfr, must_be_equal), $module, $pred, + "maxfr may differ from curfr in disj_half_hijack"), + % peephole.m looks for the "curfr==maxfr" pattern in the comment. + Code = singleton( + llds_instr(assign(redoip_slot(lval(curfr)), lval(RedoipSlot)), + "restore redoip for half disj hijack (curfr==maxfr)") + ) + ; + HijackInfo = disj_full_hijack(RedoipSlot, RedofrSlot), + expect(unify(CurfrMaxfr, may_be_different), $module, $pred, + "maxfr same as curfr in disj_full_hijack"), + Code = from_list([ + llds_instr(assign(redoip_slot(lval(maxfr)), lval(RedoipSlot)), + "restore redoip for full disj hijack"), + llds_instr(assign(redofr_slot(lval(maxfr)), lval(RedofrSlot)), + "restore redofr for full disj hijack") + ]) + ), + ( + % HijackInfo \= disj_no_hijack if and only if the disjunction + % is model_non. + HijackInfo \= disj_no_hijack, + CondEnv = inside_non_condition + -> + FailInfo = fail_info(ResumePoints, resume_point_unknown, CurfrMaxfr, + CondEnv, Allow), + set_fail_info(FailInfo, !CI) + ; + true + ). + +%---------------------------------------------------------------------------% + + % For model_non if-then-elses, we need to clean up the embedded stack frame + % we create for the if-then-else when the condition fails after succeeding. + % For such if-then-elses, we record the id of the embedded frame we need to + % clean up, and the id of the slot that is initialized to false, and set to + % true each time the condition succeeds. +:- type ite_region_info + ---> ite_region_info( + embedded_stack_frame_id, + lval + ). + +:- type ite_hijack_info + ---> ite_info( + resume_point_known, + condition_env, + ite_hijack_type, + maybe(ite_region_info) + ). + +:- type ite_hijack_type + ---> ite_no_hijack + ; ite_temp_frame( + % The stack slot in which we saved the value of maxfr. + lval + ) + ; ite_quarter_hijack + ; ite_half_hijack( + % The stack slot in which we saved the value + % of the hijacked redoip. + lval + ) + ; ite_full_hijack( + % The stack slot in which we saved the value + % of the hijacked redoip. + lval, + + % The stack slot in which we saved the value + % of the hijacked redofr. + lval, + + % The stack slot in which we saved the value of maxfr. + lval + ). + +prepare_for_ite_hijack(CondCodeModel, MaybeEmbeddedFrameId, HijackInfo, Code, + !CI) :- + get_fail_info(!.CI, FailInfo), + FailInfo = fail_info(_, ResumeKnown, CurfrMaxfr, CondEnv, Allow), + ( + % It is possible for a negated goal (which is the "Condition" of the + % equivalent if-then-else) to be det, if it is also impure. + ( CondCodeModel = model_det + ; CondCodeModel = model_semi + ), + expect(unify(MaybeEmbeddedFrameId, no), $module, $pred, + "MaybeEmbeddedFrameId in model_semi"), + HijackType = ite_no_hijack, + Code = singleton( + llds_instr(comment("ite no hijack"), "") + ), + MaybeRegionInfo = no + ; + CondCodeModel = model_non, + ( + ( Allow = not_allowed + ; CondEnv = inside_non_condition + ; MaybeEmbeddedFrameId = yes(_) + ) + -> + acquire_temp_slot(slot_lval(maxfr), non_persistent_temp_slot, + MaxfrSlot, !CI), + HijackType = ite_temp_frame(MaxfrSlot), + create_temp_frame(do_fail, "prepare for ite", TempFrameCode, !CI), + MaxfrCode = singleton( + llds_instr(assign(MaxfrSlot, lval(maxfr)), "prepare for ite") + ), + ( + MaybeEmbeddedFrameId = yes(EmbeddedFrameId), + % Note that this slot is intentionally not released anywhere. + acquire_temp_slot(slot_success_record, persistent_temp_slot, + SuccessRecordSlot, !CI), + InitSuccessCode = singleton( + llds_instr( + assign(SuccessRecordSlot, const(llconst_false)), + "record no success of the condition yes") + ), + MaybeRegionInfo = + yes(ite_region_info(EmbeddedFrameId, SuccessRecordSlot)) + ; + MaybeEmbeddedFrameId = no, + InitSuccessCode = empty, + MaybeRegionInfo = no + ), + Code = TempFrameCode ++ MaxfrCode ++ InitSuccessCode + ; + ( + CurfrMaxfr = must_be_equal, + ( + ResumeKnown = resume_point_known(_), + HijackType = ite_quarter_hijack, + Code = singleton( + llds_instr(comment("ite quarter hijack"), "") + ) + ; + ResumeKnown = resume_point_unknown, + acquire_temp_slot(slot_lval(redoip_slot(lval(curfr))), + non_persistent_temp_slot, RedoipSlot, !CI), + HijackType = ite_half_hijack(RedoipSlot), + Code = singleton( + llds_instr( + assign(RedoipSlot, lval(redoip_slot(lval(curfr)))), + "prepare for half ite hijack") + ) + ) + ; + CurfrMaxfr = may_be_different, + acquire_temp_slot(slot_lval(redoip_slot(lval(maxfr))), + non_persistent_temp_slot, RedoipSlot, !CI), + acquire_temp_slot(slot_lval(redofr_slot(lval(maxfr))), + non_persistent_temp_slot, RedofrSlot, !CI), + acquire_temp_slot(slot_lval(maxfr), + non_persistent_temp_slot, MaxfrSlot, !CI), + HijackType = ite_full_hijack(RedoipSlot, RedofrSlot, + MaxfrSlot), + Code = from_list([ + llds_instr( + assign(MaxfrSlot, lval(maxfr)), + "prepare for full ite hijack"), + llds_instr( + assign(RedoipSlot, lval(redoip_slot(lval(maxfr)))), + "prepare for full ite hijack"), + llds_instr( + assign(RedofrSlot, lval(redofr_slot(lval(maxfr)))), + "prepare for full ite hijack"), + llds_instr( + assign(redofr_slot(lval(maxfr)), lval(curfr)), + "prepare for full ite hijack") + ]) + ), + MaybeRegionInfo = no + ), + inside_non_condition(!CI) + ), + HijackInfo = ite_info(ResumeKnown, CondEnv, HijackType, MaybeRegionInfo). + +ite_enter_then(HijackInfo, ITEResumePoint, ThenCode, ElseCode, !CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints0, ResumeKnown0, CurfrMaxfr, _, Allow), + stack.det_pop(_, ResumePoints0, ResumePoints), + HijackInfo = ite_info(HijackResumeKnown, OldCondEnv, HijackType, + MaybeRegionInfo), + ( + HijackType = ite_no_hijack, + expect(unify(MaybeRegionInfo, no), $module, $pred, + "MaybeRegionInfo ite_no_hijack"), + ThenCode = empty, + ElseCode = empty + ; + HijackType = ite_temp_frame(MaxfrSlot), + ( + MaybeRegionInfo = no, + ThenCode = singleton( + % We can't remove the frame, it may not be on top. + llds_instr(assign(redoip_slot(lval(MaxfrSlot)), + const(llconst_code_addr(do_fail))), + "soft cut for temp frame ite") + ), + ElseCode = singleton( + % XXX search for assignments to maxfr + llds_instr(assign(maxfr, lval(prevfr_slot(lval(MaxfrSlot)))), + "restore maxfr for temp frame ite") + ) + ; + MaybeRegionInfo = yes(RegionInfo), + RegionInfo = ite_region_info(EmbeddedStackFrameId, + SuccessRecordSlot), + % XXX replace do_fail with ref to ResumePoint stack label + resume_point_stack_addr(ITEResumePoint, ITEStackResumeCodeAddr), + ThenCode = from_list([ + llds_instr(assign(SuccessRecordSlot, const(llconst_true)), + "record success of the condition"), + llds_instr(assign(redoip_slot(lval(MaxfrSlot)), + const(llconst_code_addr(ITEStackResumeCodeAddr))), + "redirect to cut for temp frame ite") + ]), + get_next_label(AfterRegionOp, !CI), + ElseCode = from_list([ + llds_instr(assign(maxfr, lval(prevfr_slot(lval(MaxfrSlot)))), + "restore maxfr for temp frame ite"), + llds_instr(if_val(unop(logical_not, lval(SuccessRecordSlot)), + code_label(AfterRegionOp)), + "jump around if the condition never succeeded"), + llds_instr(use_and_maybe_pop_region_frame( + region_ite_nondet_cond_fail, EmbeddedStackFrameId), + "cleanup after the post-success failure of the condition"), + llds_instr(goto(do_fail), + "the condition succeeded, so don't execute else branch"), + llds_instr(label(AfterRegionOp), + "after region op") + ]) + ) + ; + HijackType = ite_quarter_hijack, + expect(unify(MaybeRegionInfo, no), $module, $pred, + "MaybeRegionInfo ite_quarter_hijack"), + stack.det_top(ResumePoints, ResumePoint), + ( maybe_pick_stack_resume_point(ResumePoint, _, StackLabel) -> + LabelConst = const(llconst_code_addr(StackLabel)), + ThenCode = singleton( + llds_instr(assign(redoip_slot(lval(curfr)), LabelConst), + "restore redoip for quarter ite hijack") + ) + ; + % This can happen only if ResumePoint is unreachable from here. + ThenCode = empty + ), + ElseCode = ThenCode + ; + HijackType = ite_half_hijack(RedoipSlot), + expect(unify(MaybeRegionInfo, no), $module, $pred, + "MaybeRegionInfo ite_half_hijack"), + ThenCode = singleton( + llds_instr(assign(redoip_slot(lval(curfr)), lval(RedoipSlot)), + "restore redoip for half ite hijack") + ), + ElseCode = ThenCode + ; + HijackType = ite_full_hijack(RedoipSlot, RedofrSlot, MaxfrSlot), + expect(unify(MaybeRegionInfo, no), $module, $pred, + "MaybeRegionInfo ite_full_hijack"), + ThenCode = from_list([ + llds_instr(assign(redoip_slot(lval(MaxfrSlot)), lval(RedoipSlot)), + "restore redoip for full ite hijack"), + llds_instr(assign(redofr_slot(lval(MaxfrSlot)), lval(RedofrSlot)), + "restore redofr for full ite hijack") + ]), + ElseCode = from_list([ + llds_instr(assign(redoip_slot(lval(maxfr)), lval(RedoipSlot)), + "restore redoip for full ite hijack"), + llds_instr(assign(redofr_slot(lval(maxfr)), lval(RedofrSlot)), + "restore redofr for full ite hijack") + ]) + ), + ( + ResumeKnown0 = resume_point_unknown, + ResumeKnown = resume_point_unknown + ; + ResumeKnown0 = resume_point_known(_), + ResumeKnown = HijackResumeKnown + ), + FailInfo = fail_info(ResumePoints, ResumeKnown, CurfrMaxfr, OldCondEnv, + Allow), + set_fail_info(FailInfo, !CI). + +%---------------------------------------------------------------------------% + +:- type simple_neg_info == fail_info. + +enter_simple_neg(ResumeVars, GoalInfo, FailInfo0, !CI) :- + get_fail_info(!.CI, FailInfo0), + % The only reason why we push a resume point at all is to protect + % the variables in ResumeVars from becoming unknown; by including them + % in the domain of the resume point, we guarantee that they will become + % zombies instead of unknown if they die in the pre- or post-goal updates. + % Therefore the only part of ResumePoint that matters is the set of + % variables in the resume map; the other parts of ResumePoint + % (the locations, the code address) will not be referenced. + map.init(ResumeMap0), + make_fake_resume_map(ResumeVars, ResumeMap0, ResumeMap), + ResumePoint = orig_only(ResumeMap, do_redo), + effect_resume_point(ResumePoint, model_semi, Code, !CI), + expect(is_empty(Code), $module, $pred, "nonempty code for simple neg"), + pre_goal_update(GoalInfo, does_not_have_subgoals, !CI). + +leave_simple_neg(GoalInfo, FailInfo, !CI) :- + post_goal_update(GoalInfo, !CI), + set_fail_info(FailInfo, !CI). + +:- pred make_fake_resume_map(list(prog_var)::in, + map(prog_var, set(lval))::in, map(prog_var, set(lval))::out) is det. + +make_fake_resume_map([], !ResumeMap). +make_fake_resume_map([Var | Vars], !ResumeMap) :- + % A visibly fake location. + Locns = set.make_singleton_set(reg(reg_r, -1)), + map.det_insert(Var, Locns, !ResumeMap), + make_fake_resume_map(Vars, !ResumeMap). + +%---------------------------------------------------------------------------% + +:- type det_commit_info + ---> det_commit_info( + % Location of saved maxfr. + maybe(lval), + + % Location of saved ticket % counter and trail pointer. + maybe(pair(lval)), + + maybe(region_commit_stack_frame) + ). + +:- type region_commit_stack_frame + ---> region_commit_stack_frame( + % The id of the region commit stack frame, which is emdedded + % in the current procedure's stack frame, and whose layout is: + + % saved region_commit_stack_pointer + % saved region sequence number + % number of live nonprotected regions + % space reserved for the ids of live nonprotected regions + + embedded_stack_frame_id, + + % The list of temporary slots that constitute + % this embedded stack frame. + list(lval) + ). + +prepare_for_det_commit(AddTrailOps, AddRegionOps, ForwardLiveVarsBeforeGoal, + CommitGoalInfo, DetCommitInfo, Code, !CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(_, _, CurfrMaxfr, _, _), + ( + CurfrMaxfr = may_be_different, + acquire_temp_slot(slot_lval(maxfr), non_persistent_temp_slot, + MaxfrSlot, !CI), + SaveMaxfrCode = singleton( + llds_instr(save_maxfr(MaxfrSlot), "save the value of maxfr") + ), + MaybeMaxfrSlot = yes(MaxfrSlot) + ; + CurfrMaxfr = must_be_equal, + SaveMaxfrCode = empty, + MaybeMaxfrSlot = no + ), + maybe_save_trail_info(AddTrailOps, MaybeTrailSlots, SaveTrailCode, !CI), + maybe_save_region_commit_frame(AddRegionOps, ForwardLiveVarsBeforeGoal, + CommitGoalInfo, MaybeRegionCommitFrameInfo, SaveRegionCommitFrameCode, + !CI), + DetCommitInfo = det_commit_info(MaybeMaxfrSlot, MaybeTrailSlots, + MaybeRegionCommitFrameInfo), + Code = SaveMaxfrCode ++ SaveTrailCode ++ SaveRegionCommitFrameCode. + +generate_det_commit(DetCommitInfo, Code, !CI) :- + DetCommitInfo = det_commit_info(MaybeMaxfrSlot, MaybeTrailSlots, + MaybeRegionCommitFrameInfo), + ( + MaybeMaxfrSlot = yes(MaxfrSlot), + RestoreMaxfrCode = singleton( + llds_instr(restore_maxfr(MaxfrSlot), + "restore the value of maxfr - perform commit") + ), + release_temp_slot(MaxfrSlot, non_persistent_temp_slot, !CI) + ; + MaybeMaxfrSlot = no, + RestoreMaxfrCode = singleton( + llds_instr(assign(maxfr, lval(curfr)), + "restore the value of maxfr - perform commit") + ) + ), + maybe_restore_trail_info(MaybeTrailSlots, CommitTrailCode, _, !CI), + maybe_restore_region_commit_frame(MaybeRegionCommitFrameInfo, + SuccessRegionCode, _FailureRegionCode, !CI), + Code = RestoreMaxfrCode ++ CommitTrailCode ++ SuccessRegionCode. + +%---------------------------------------------------------------------------% + +:- type semi_commit_info + ---> semi_commit_info( + % Fail_info on entry. + fail_info, + + resume_point_info, + commit_hijack_info, + + % Location of saved ticket counter and trail pointer. + maybe(pair(lval)), + + maybe(region_commit_stack_frame) + ). + +:- type commit_hijack_info + ---> commit_temp_frame( + % The stack slot in which we saved the old value of maxfr. + lval, + + % Do we bracket the goal with MR_commit_mark and MR_commit_cut? + bool + ) + ; commit_quarter_hijack + ; commit_half_hijack( + % The stack slot in which we saved the value + % of the hijacked redoip. + lval + ) + ; commit_full_hijack( + % The stack slot in which we saved the value + % of the hijacked redoip. + lval, + + % The stack slot in which we saved the value + % of the hijacked redofr. + lval, + + % The stack slot in which we saved the value of maxfr. + lval + ). + +prepare_for_semi_commit(AddTrailOps, AddRegionOps, ForwardLiveVarsBeforeGoal, + CommitGoalInfo, SemiCommitInfo, Code, !CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints0, ResumeKnown, CurfrMaxfr, CondEnv, + Allow), + stack.det_top(ResumePoints0, TopResumePoint), + clone_resume_point(TopResumePoint, NewResumePoint, !CI), + stack.push(NewResumePoint, ResumePoints0, ResumePoints), + FailInfo = fail_info(ResumePoints, resume_point_known(has_been_done), + CurfrMaxfr, CondEnv, Allow), + set_fail_info(FailInfo, !CI), + + pick_stack_resume_point(NewResumePoint, _, StackLabel), + StackLabelConst = const(llconst_code_addr(StackLabel)), + ( + ( Allow = not_allowed ; CondEnv = inside_non_condition ) + -> + acquire_temp_slot(slot_lval(maxfr), non_persistent_temp_slot, + MaxfrSlot, !CI), + MaxfrCode = singleton( + llds_instr(save_maxfr(MaxfrSlot), + "prepare for temp frame commit") + ), + create_temp_frame(StackLabel, + "prepare for temp frame commit", TempFrameCode, !CI), + get_globals(!.CI, Globals), + globals.lookup_bool_option(Globals, use_minimal_model_stack_copy_cut, + UseMinimalModelStackCopyCut), + HijackInfo = commit_temp_frame(MaxfrSlot, UseMinimalModelStackCopyCut), + ( + UseMinimalModelStackCopyCut = yes, + % If the code we are committing across starts but does not complete + % the evaluation of a tabled subgoal, the cut will remove the + % generator's choice point, so that the evaluation of the subgoal + % will never be completed. We handle such "dangling" generators + % by removing them from the subgoal trie of the tabled procedure. + % This requires knowing what tabled subgoals are started inside + % commits, which is why we wrap the goal being committed across + % inside MR_commit_{mark,cut}. + Components = [ + foreign_proc_raw_code(cannot_branch_away, + proc_affects_liveness, live_lvals_info(set.init), + "\t\tMR_save_transient_registers();\n"), + foreign_proc_raw_code(cannot_branch_away, + proc_does_not_affect_liveness, live_lvals_info(set.init), + "\t\tMR_commit_mark();\n"), + foreign_proc_raw_code(cannot_branch_away, + proc_affects_liveness, live_lvals_info(set.init), + "\t\tMR_restore_transient_registers();\n") + ], + MD = proc_may_duplicate, + MarkCode = singleton( + llds_instr(foreign_proc_code([], Components, + proc_will_not_call_mercury, no, no, no, no, no, no, MD), + "") + ) + ; + UseMinimalModelStackCopyCut = no, + MarkCode = empty + ), + HijackCode = MaxfrCode ++ TempFrameCode ++ MarkCode + ; + ( + CurfrMaxfr = must_be_equal, + ( + ResumeKnown = resume_point_known(has_been_done), + HijackInfo = commit_quarter_hijack, + HijackCode = singleton( + llds_instr(assign(redoip_slot(lval(curfr)), + StackLabelConst), + "hijack the redofr slot") + ) + ; + ( ResumeKnown = resume_point_known(wont_be_done) + ; ResumeKnown = resume_point_unknown + ), + acquire_temp_slot(slot_lval(redoip_slot(lval(curfr))), + non_persistent_temp_slot, RedoipSlot, !CI), + HijackInfo = commit_half_hijack(RedoipSlot), + HijackCode = from_list([ + llds_instr(assign(RedoipSlot, + lval(redoip_slot(lval(curfr)))), + "prepare for half commit hijack"), + llds_instr(assign(redoip_slot(lval(curfr)), + StackLabelConst), + "hijack the redofr slot") + ]) + ) + ; + CurfrMaxfr = may_be_different, + acquire_temp_slot(slot_lval(redoip_slot(lval(maxfr))), + non_persistent_temp_slot, RedoipSlot, !CI), + acquire_temp_slot(slot_lval(redofr_slot(lval(maxfr))), + non_persistent_temp_slot, RedofrSlot, !CI), + acquire_temp_slot(slot_lval(maxfr), + non_persistent_temp_slot, MaxfrSlot, !CI), + HijackInfo = commit_full_hijack(RedoipSlot, RedofrSlot, MaxfrSlot), + HijackCode = from_list([ + llds_instr(assign(RedoipSlot, lval(redoip_slot(lval(maxfr)))), + "prepare for full commit hijack"), + llds_instr(assign(RedofrSlot, lval(redofr_slot(lval(maxfr)))), + "prepare for full commit hijack"), + llds_instr(save_maxfr(MaxfrSlot), + "prepare for full commit hijack"), + llds_instr(assign(redofr_slot(lval(maxfr)), lval(curfr)), + "hijack the redofr slot"), + llds_instr(assign(redoip_slot(lval(maxfr)), StackLabelConst), + "hijack the redoip slot") + ]) + ) + ), + maybe_save_trail_info(AddTrailOps, MaybeTrailSlots, SaveTrailCode, !CI), + maybe_save_region_commit_frame(AddRegionOps, ForwardLiveVarsBeforeGoal, + CommitGoalInfo, MaybeRegionCommitFrameInfo, SaveRegionCommitFrameCode, + !CI), + SemiCommitInfo = semi_commit_info(FailInfo0, NewResumePoint, + HijackInfo, MaybeTrailSlots, MaybeRegionCommitFrameInfo), + Code = HijackCode ++ SaveTrailCode ++ SaveRegionCommitFrameCode. + +generate_semi_commit(SemiCommitInfo, Code, !CI) :- + SemiCommitInfo = semi_commit_info(FailInfo, ResumePoint, + HijackInfo, MaybeTrailSlots, MaybeRegionCommitFrameInfo), + + set_fail_info(FailInfo, !CI), + % XXX Should release the temp slots in each arm of the switch. + ( + HijackInfo = commit_temp_frame(MaxfrSlot, UseMinimalModel), + MaxfrCode = singleton( + llds_instr(restore_maxfr(MaxfrSlot), + "restore maxfr for temp frame hijack") + ), + ( + UseMinimalModel = yes, + % See the comment in prepare_for_semi_commit above. + Components = [ + foreign_proc_raw_code(cannot_branch_away, + proc_does_not_affect_liveness, live_lvals_info(set.init), + "\t\tMR_commit_cut();\n") + ], + MD = proc_may_duplicate, + CutCode = singleton( + llds_instr(foreign_proc_code([], Components, + proc_will_not_call_mercury, no, no, no, no, no, no, MD), + "commit for temp frame hijack") + ) + ; + UseMinimalModel = no, + CutCode = empty + ), + SuccessUndoCode = MaxfrCode ++ CutCode, + FailureUndoCode = MaxfrCode ++ CutCode + ; + HijackInfo = commit_quarter_hijack, + FailInfo = fail_info(ResumePoints, _, _, _, _), + stack.det_top(ResumePoints, TopResumePoint), + pick_stack_resume_point(TopResumePoint, _, StackLabel), + StackLabelConst = const(llconst_code_addr(StackLabel)), + SuccessUndoCode = from_list([ + llds_instr(assign(maxfr, lval(curfr)), + "restore maxfr for quarter commit hijack"), + llds_instr(assign(redoip_slot(lval(maxfr)), StackLabelConst), + "restore redoip for quarter commit hijack") + ]), + FailureUndoCode = singleton( + llds_instr(assign(redoip_slot(lval(maxfr)), StackLabelConst), + "restore redoip for quarter commit hijack") + ) + ; + HijackInfo = commit_half_hijack(RedoipSlot), + SuccessUndoCode = from_list([ + llds_instr(assign(maxfr, lval(curfr)), + "restore maxfr for half commit hijack"), + llds_instr(assign(redoip_slot(lval(maxfr)), lval(RedoipSlot)), + "restore redoip for half commit hijack") + ]), + FailureUndoCode = singleton( + llds_instr(assign(redoip_slot(lval(maxfr)), lval(RedoipSlot)), + "restore redoip for half commit hijack") + ) + ; + HijackInfo = commit_full_hijack(RedoipSlot, RedofrSlot, MaxfrSlot), + SuccessUndoCode = from_list([ + llds_instr(restore_maxfr(MaxfrSlot), + "restore maxfr for full commit hijack"), + llds_instr(assign(redoip_slot(lval(maxfr)), lval(RedoipSlot)), + "restore redoip for full commit hijack"), + llds_instr(assign(redofr_slot(lval(maxfr)), lval(RedofrSlot)), + "restore redofr for full commit hijack") + ]), + FailureUndoCode = from_list([ + llds_instr(assign(redoip_slot(lval(maxfr)), lval(RedoipSlot)), + "restore redoip for full commit hijack"), + llds_instr(assign(redofr_slot(lval(maxfr)), lval(RedofrSlot)), + "restore redofr for full commit hijack") + ]) + ), + + remember_position(!.CI, AfterCommit), + generate_resume_point(ResumePoint, ResumePointCode, !CI), + generate_failure(FailCode, !CI), + reset_to_position(AfterCommit, !CI), + + maybe_restore_trail_info(MaybeTrailSlots, CommitTrailCode, + RestoreTrailCode, !CI), + maybe_restore_region_commit_frame(MaybeRegionCommitFrameInfo, + SuccessRegionCode, FailureRegionCode, !CI), + + get_next_label(SuccLabel, !CI), + GotoSuccLabel = singleton( + llds_instr(goto(code_label(SuccLabel)), "Jump to success continuation") + ), + SuccLabelCode = singleton( + llds_instr(label(SuccLabel), "Success continuation") + ), + SuccessCode = SuccessUndoCode ++ CommitTrailCode ++ SuccessRegionCode, + FailureCode = ResumePointCode ++ FailureUndoCode ++ RestoreTrailCode ++ + FailureRegionCode ++ FailCode, + Code = SuccessCode ++ GotoSuccLabel ++ FailureCode ++ SuccLabelCode. + +%---------------------------------------------------------------------------% + +:- pred maybe_save_region_commit_frame(add_region_ops::in, set_of_progvar::in, + hlds_goal_info::in, maybe(region_commit_stack_frame)::out, llds_code::out, + code_info::in, code_info::out) is det. + +maybe_save_region_commit_frame(AddRegionOps, _ForwardLiveVarsBeforeGoal, + CommitGoalInfo, MaybeRegionCommitFrameInfo, Code, !CI) :- + ( + AddRegionOps = do_not_add_region_ops, + MaybeRegionCommitFrameInfo = no, + Code = empty + ; + AddRegionOps = add_region_ops, + MaybeRbmmInfo = goal_info_get_maybe_rbmm(CommitGoalInfo), + ( + MaybeRbmmInfo = no, + MaybeRegionCommitFrameInfo = no, + Code = empty + ; + MaybeRbmmInfo = yes(RbmmInfo), + RbmmInfo = rbmm_goal_info(_, CommitRemovedRegionVars, _, _, _), + + RemovedRegionVarList = set.to_sorted_list(CommitRemovedRegionVars), + + NumRemovedRegionVars = list.length(RemovedRegionVarList), + + code_info.get_globals(!.CI, Globals), + globals.lookup_int_option(Globals, size_region_commit_fixed, + FixedSize), + globals.lookup_int_option(Globals, size_region_commit_entry, + EntrySize), + FrameSize = FixedSize + EntrySize * NumRemovedRegionVars, + Items = list.duplicate(FrameSize, slot_region_commit), + acquire_several_temp_slots(Items, non_persistent_temp_slot, + StackVars, MainStackId, FirstSlotNum, LastSlotNum, !CI), + EmbeddedStackFrame = embedded_stack_frame_id(MainStackId, + FirstSlotNum, LastSlotNum), + FirstSavedRegionAddr = first_nonfixed_embedded_slot_addr( + EmbeddedStackFrame, FixedSize), + acquire_reg(reg_r, NumRegLval, !CI), + acquire_reg(reg_r, AddrRegLval, !CI), + PushInitCode = from_list([ + llds_instr( + push_region_frame(region_stack_commit, EmbeddedStackFrame), + "Save stack pointer of embedded region commit stack"), + llds_instr( + assign(NumRegLval, const(llconst_int(0))), + "Initialize number of unprotected live regions"), + llds_instr( + assign(AddrRegLval, FirstSavedRegionAddr), + "Initialize pointer to the next unprotected live" ++ + " region slot") + ]), + save_unprotected_live_regions(NumRegLval, AddrRegLval, + EmbeddedStackFrame, RemovedRegionVarList, FillCode, !CI), + SetCode = singleton( + llds_instr( + region_set_fixed_slot(region_set_commit_num_entries, + EmbeddedStackFrame, lval(NumRegLval)), + "Store the number of unprotected live regions") + ), + release_reg(NumRegLval, !CI), + release_reg(AddrRegLval, !CI), + + RegionCommitFrameInfo = + region_commit_stack_frame(EmbeddedStackFrame, StackVars), + MaybeRegionCommitFrameInfo = yes(RegionCommitFrameInfo), + + Code = PushInitCode ++ FillCode ++ SetCode + ) + ). + +:- pred save_unprotected_live_regions(lval::in, lval::in, + embedded_stack_frame_id::in, list(prog_var)::in, llds_code::out, + code_info::in, code_info::out) is det. + +save_unprotected_live_regions(_, _, _, [], empty, !CI). +save_unprotected_live_regions(NumLval, AddrLval, EmbeddedStackFrame, + [RegionVar | RegionVars], Code ++ Codes, !CI) :- + produce_variable(RegionVar, ProduceVarCode, RegionVarRval, !CI), + SaveCode = singleton( + llds_instr( + region_fill_frame(region_fill_commit, EmbeddedStackFrame, + RegionVarRval, NumLval, AddrLval), + "Save the region in the commit stack frame if it is unprotected") + ), + Code = ProduceVarCode ++ SaveCode, + save_unprotected_live_regions(NumLval, AddrLval, EmbeddedStackFrame, + RegionVars, Codes, !CI). + +:- pred maybe_restore_region_commit_frame(maybe(region_commit_stack_frame)::in, + llds_code::out, llds_code::out, code_info::in, code_info::out) is det. + +maybe_restore_region_commit_frame(MaybeRegionCommitFrameInfo, + SuccessCode, FailureCode, !CI) :- + ( + MaybeRegionCommitFrameInfo = no, + SuccessCode = empty, + FailureCode = empty + ; + MaybeRegionCommitFrameInfo = yes(RegionCommitFrameInfo), + RegionCommitFrameInfo = region_commit_stack_frame(EmbeddedStackFrame, + StackVars), + SuccessCode = singleton( + llds_instr( + use_and_maybe_pop_region_frame(region_commit_success, + EmbeddedStackFrame), + "Destroy removed regions protected by cut away disjunctions") + ), + FailureCode = singleton( + llds_instr( + use_and_maybe_pop_region_frame(region_commit_failure, + EmbeddedStackFrame), + "Undo the creation of the commit frame") + ), + release_several_temp_slots(StackVars, non_persistent_temp_slot, !CI) + ). + +%---------------------------------------------------------------------------% + +:- pred inside_non_condition(code_info::in, code_info::out) is det. + +inside_non_condition(!CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints, ResumeKnown, CurfrMaxfr, _, Allow), + FailInfo = fail_info(ResumePoints, ResumeKnown, CurfrMaxfr, + inside_non_condition, Allow), + set_fail_info(FailInfo, !CI). + +:- pred create_temp_frame(code_addr::in, string::in, llds_code::out, + code_info::in, code_info::out) is det. + +create_temp_frame(Redoip, Comment, Code, !CI) :- + ( get_proc_model(!.CI) = model_non -> + Kind = nondet_stack_proc + ; + Kind = det_stack_proc + ), + Code = singleton( + llds_instr(mkframe(temp_frame(Kind), yes(Redoip)), Comment) + ), + set_created_temp_frame(yes, !CI), + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints, ResumeKnown, _, CondEnv, Allow), + FailInfo = fail_info(ResumePoints, ResumeKnown, may_be_different, + CondEnv, Allow), + set_fail_info(FailInfo, !CI). + +%---------------------------------------------------------------------------% + +effect_resume_point(ResumePoint, CodeModel, Code, !CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints0, _ResumeKnown, CurfrMaxfr, + CondEnv, Allow), + ( stack.top(ResumePoints0, OldResumePoint) -> + pick_first_resume_point(OldResumePoint, OldMap, _), + pick_first_resume_point(ResumePoint, NewMap, _), + map.keys(OldMap, OldKeys), + map.keys(NewMap, NewKeys), + set.list_to_set(OldKeys, OldKeySet), + set.list_to_set(NewKeys, NewKeySet), + expect(set.subset(OldKeySet, NewKeySet), $module, $pred, + "non-nested resume point variable sets") + ; + true + ), + stack.push(ResumePoint, ResumePoints0, ResumePoints), + ( + CodeModel = model_non, + pick_stack_resume_point(ResumePoint, _, StackLabel), + LabelConst = const(llconst_code_addr(StackLabel)), + Code = singleton( + llds_instr(assign(redoip_slot(lval(maxfr)), LabelConst), + "hijack redoip to effect resume point") + ), + RedoipUpdate = has_been_done + ; + ( CodeModel = model_det + ; CodeModel = model_semi + ), + Code = empty, + RedoipUpdate = wont_be_done + ), + FailInfo = fail_info(ResumePoints, resume_point_known(RedoipUpdate), + CurfrMaxfr, CondEnv, Allow), + set_fail_info(FailInfo, !CI). + +pop_resume_point(!CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints0, ResumeKnown, CurfrMaxfr, + CondEnv, Allow), + stack.det_pop(_, ResumePoints0, ResumePoints), + FailInfo = fail_info(ResumePoints, ResumeKnown, CurfrMaxfr, + CondEnv, Allow), + set_fail_info(FailInfo, !CI). + +%---------------------------------------------------------------------------% + +top_resume_point(CI, ResumePoint) :- + get_fail_info(CI, FailInfo), + FailInfo = fail_info(ResumePoints, _, _, _, _), + stack.det_top(ResumePoints, ResumePoint). + +set_resume_point_to_unknown(!CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints, _, CurfrMaxfr, CondEnv, Allow), + FailInfo = fail_info(ResumePoints, resume_point_unknown, + CurfrMaxfr, CondEnv, Allow), + set_fail_info(FailInfo, !CI). + +set_resume_point_and_frame_to_unknown(!CI) :- + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(ResumePoints, _, _, CondEnv, Allow), + FailInfo = fail_info(ResumePoints, resume_point_unknown, may_be_different, + CondEnv, Allow), + set_fail_info(FailInfo, !CI). + +%---------------------------------------------------------------------------% + +generate_failure(Code, !CI) :- + get_fail_info(!.CI, FailInfo), + FailInfo = fail_info(ResumePoints, ResumeKnown, _, _, _), + ( + ResumeKnown = resume_point_known(_), + stack.det_top(ResumePoints, TopResumePoint), + ( pick_matching_resume_addr(!.CI, TopResumePoint, FailureAddress0) -> + FailureAddress = FailureAddress0, + PlaceCode = empty + ; + pick_first_resume_point(TopResumePoint, Map, FailureAddress), + map.to_assoc_list(Map, AssocList), + remember_position(!.CI, CurPos), + pick_and_place_vars(AssocList, _, PlaceCode, !CI), + reset_to_position(CurPos, !CI) + ), + BranchCode = singleton(llds_instr(goto(FailureAddress), "fail")), + Code = PlaceCode ++ BranchCode + ; + ResumeKnown = resume_point_unknown, + Code = singleton(llds_instr(goto(do_redo), "fail")) + ). + +fail_if_rval_is_false(Rval0, Code, !CI) :- + get_fail_info(!.CI, FailInfo), + FailInfo = fail_info(ResumePoints, ResumeKnown, _, _, _), + ( + ResumeKnown = resume_point_known(_), + stack.det_top(ResumePoints, TopResumePoint), + ( pick_matching_resume_addr(!.CI, TopResumePoint, FailureAddress0) -> + % We branch away if the test *fails* + code_util.neg_rval(Rval0, Rval), + Code = singleton( + llds_instr(if_val(Rval, FailureAddress0), "Test for failure") + ) + ; + pick_first_resume_point(TopResumePoint, Map, FailureAddress), + map.to_assoc_list(Map, AssocList), + get_next_label(SuccessLabel, !CI), + remember_position(!.CI, CurPos), + pick_and_place_vars(AssocList, _, PlaceCode, !CI), + reset_to_position(CurPos, !CI), + SuccessAddress = code_label(SuccessLabel), + % We branch away if the test *fails*, therefore if the test + % succeeds, we branch around the code that moves variables to + % their failure locations and branches away to the failure + % continuation. + TestCode = singleton( + llds_instr(if_val(Rval0, SuccessAddress), "Test for failure") + ), + TailCode = from_list([ + llds_instr(goto(FailureAddress), "Goto failure"), + llds_instr(label(SuccessLabel), "Success continuation") + ]), + Code = TestCode ++ PlaceCode ++ TailCode + ) + ; + ResumeKnown = resume_point_unknown, + % We branch away if the test *fails* + code_util.neg_rval(Rval0, Rval), + Code = singleton( + llds_instr(if_val(Rval, do_redo), "Test for failure") + ) + ). + +%---------------------------------------------------------------------------% + +failure_is_direct_branch(CI, CodeAddr) :- + get_fail_info(CI, FailInfo), + FailInfo = fail_info(ResumePoints, resume_point_known(_), _, _, _), + stack.top(ResumePoints, TopResumePoint), + pick_matching_resume_addr(CI, TopResumePoint, CodeAddr). + +may_use_nondet_tailcall(CI, TailCallStatus) :- + get_fail_info(CI, FailInfo), + FailInfo = fail_info(ResumePoints0, ResumeKnown, _, _, _), + ( + stack.pop(ResumePoint1, ResumePoints0, ResumePoints1), + stack.is_empty(ResumePoints1), + ResumePoint1 = stack_only(_, do_fail) + -> + ( + ResumeKnown = resume_point_known(_), + TailCallStatus = unchecked_tail_call + ; + ResumeKnown = resume_point_unknown, + TailCallStatus = checked_tail_call + ) + ; + TailCallStatus = no_tail_call + ). + +%---------------------------------------------------------------------------% + + % See whether the current locations of variables match the locations + % associated with any of the options in the given failure map. + % If yes, return the code_addr of that option. + % +:- pred pick_matching_resume_addr(code_info::in, + resume_point_info::in, code_addr::out) is semidet. + +pick_matching_resume_addr(CI, ResumeMaps, Addr) :- + variable_locations(CI, CurLocs), + ( + ResumeMaps = orig_only(Map1, Addr1), + ( match_resume_loc(Map1, CurLocs) -> + Addr = Addr1 + ; + fail + ) + ; + ResumeMaps = stack_only(Map1, Addr1), + ( match_resume_loc(Map1, CurLocs) -> + Addr = Addr1 + ; + fail + ) + ; + ResumeMaps = orig_and_stack(Map1, Addr1, Map2, Addr2), + ( match_resume_loc(Map1, CurLocs) -> + Addr = Addr1 + ; match_resume_loc(Map2, CurLocs) -> + Addr = Addr2 + ; + fail + ) + ; + ResumeMaps = stack_and_orig(Map1, Addr1, Map2, Addr2), + ( match_resume_loc(Map1, CurLocs) -> + Addr = Addr1 + ; match_resume_loc(Map2, CurLocs) -> + Addr = Addr2 + ; + fail + ) + ). + +:- pred match_resume_loc(resume_map::in, resume_map::in) is semidet. + +match_resume_loc(Map, Locations0) :- + map.keys(Map, KeyList), + set.list_to_set(KeyList, Keys), + map.select(Locations0, Keys, Locations), + map.to_assoc_list(Locations, List), + all_vars_match_resume_map(Map, List). + +:- pred all_vars_match_resume_map(resume_map::in, + assoc_list(prog_var, set(lval))::in) is semidet. + +all_vars_match_resume_map(_Map, []). +all_vars_match_resume_map(Map, [Var - Actual | VarsActuals]) :- + map.search(Map, Var, Lvals), + set.subset(Lvals, Actual), + all_vars_match_resume_map(Map, VarsActuals). + +:- pred pick_first_resume_point(resume_point_info::in, + resume_map::out, code_addr::out) is det. + +pick_first_resume_point(orig_only(Map, Addr), Map, Addr). +pick_first_resume_point(stack_only(Map, Addr), Map, Addr). +pick_first_resume_point(orig_and_stack(Map, Addr, _, _), Map, Addr). +pick_first_resume_point(stack_and_orig(Map, Addr, _, _), Map, Addr). + +:- pred pick_stack_resume_point(resume_point_info::in, + resume_map::out, code_addr::out) is det. + +pick_stack_resume_point(ResumePoint, Map, Addr) :- + ( maybe_pick_stack_resume_point(ResumePoint, Map1, Addr1) -> + Map = Map1, + Addr = Addr1 + ; + unexpected($module, $pred, "no stack resume point") + ). + +:- pred maybe_pick_stack_resume_point(resume_point_info::in, + resume_map::out, code_addr::out) is semidet. + +maybe_pick_stack_resume_point(stack_only(Map, Addr), Map, Addr). +maybe_pick_stack_resume_point(orig_and_stack(_, _, Map, Addr), + Map, Addr). +maybe_pick_stack_resume_point(stack_and_orig(Map, Addr, _, _), + Map, Addr). + +%---------------------------------------------------------------------------% + +produce_vars([], Map, empty, !CI) :- + map.init(Map). +produce_vars([Var | Vars], Map, Code, !CI) :- + produce_vars(Vars, Map0, CodeVars, !CI), + produce_variable_in_reg_or_stack(Var, CodeVar, Lval, !CI), + Lvals = set.make_singleton_set(Lval), + map.set(Var, Lvals, Map0, Map), + Code = CodeVars ++ CodeVar. + +flush_resume_vars_to_stack(Code, !CI) :- + compute_resume_var_stack_locs(!.CI, VarLocs), + place_vars(VarLocs, Code, !CI). + +:- pred compute_resume_var_stack_locs(code_info::in, + assoc_list(prog_var, lval)::out) is det. + +compute_resume_var_stack_locs(CI, VarLocs) :- + get_fail_info(CI, FailInfo), + FailInfo = fail_info(ResumePointStack, _, _, _, _), + stack.det_top(ResumePointStack, ResumePoint), + pick_stack_resume_point(ResumePoint, StackMap, _), + map.to_assoc_list(StackMap, VarLocSets), + pick_var_places(VarLocSets, VarLocs). + +%---------------------------------------------------------------------------% + +:- pred init_fail_info(code_model::in, maybe(set_of_progvar)::in, + resume_point_info::out, code_info::in, code_info::out) is det. + +init_fail_info(CodeModel, MaybeFailVars, ResumePoint, !CI) :- + ( + CodeModel = model_det, + get_next_label(ResumeLabel, !CI), + ResumeAddress = code_label(ResumeLabel), + ResumeKnown = resume_point_unknown, + CurfrMaxfr = may_be_different + ; + CodeModel = model_semi, + % The resume point for this label will be part of the procedure epilog. + get_next_label(ResumeLabel, !CI), + ResumeAddress = code_label(ResumeLabel), + ResumeKnown = resume_point_known(wont_be_done), + CurfrMaxfr = may_be_different + ; + CodeModel = model_non, + ( + MaybeFailVars = yes(_), + get_next_label(ResumeLabel, !CI), + ResumeAddress = code_label(ResumeLabel) + ; + MaybeFailVars = no, + ResumeAddress = do_fail + ), + ResumeKnown = resume_point_known(has_been_done), + CurfrMaxfr = must_be_equal + ), + ( + MaybeFailVars = yes(FailVars), + get_stack_slots(!.CI, StackSlots), + map.select_sorted_list(StackSlots, set_of_var.to_sorted_list(FailVars), + AbsStackMap), + map.to_assoc_list(AbsStackMap, AbsStackList), + StackList0 = assoc_list.map_values_only(stack_slot_to_lval, + AbsStackList), + make_singleton_sets(StackList0, StackList), + map.from_sorted_assoc_list(StackList, StackMap) + ; + MaybeFailVars = no, + map.init(StackMap) + ), + ResumePoint = stack_only(StackMap, ResumeAddress), + stack.init(ResumeStack0), + stack.push(ResumePoint, ResumeStack0, ResumeStack), + get_fail_info(!.CI, FailInfo0), + FailInfo0 = fail_info(_, _, _, _, Allow), + FailInfo = fail_info(ResumeStack, ResumeKnown, CurfrMaxfr, + not_inside_non_condition, Allow), + set_fail_info(FailInfo, !CI). + +%---------------------------------------------------------------------------% + +make_resume_point(ResumeVars, ResumeLocs, FullMap, ResumePoint, !CI) :- + get_stack_slots(!.CI, StackSlots), + map.select_sorted_list(FullMap, ResumeVars, OrigMap), + ( + ResumeLocs = resume_locs_orig_only, + get_next_label(OrigLabel, !CI), + OrigAddr = code_label(OrigLabel), + ResumePoint = orig_only(OrigMap, OrigAddr), + trace [compiletime(flag("codegen_goal")), io(!IO)] ( + ( should_trace_code_gen(!.CI) -> + code_info.get_varset(!.CI, VarSet), + io.write_string("orig_only\n", !IO), + output_resume_map(VarSet, OrigMap, !IO), + io.flush_output(!IO) + ; + true + ) + ) + ; + ResumeLocs = resume_locs_stack_only, + make_stack_resume_map(ResumeVars, StackSlots, StackMap), + get_next_label(StackLabel, !CI), + StackAddr = code_label(StackLabel), + ResumePoint = stack_only(StackMap, StackAddr), + trace [compiletime(flag("codegen_goal")), io(!IO)] ( + ( should_trace_code_gen(!.CI) -> + code_info.get_varset(!.CI, VarSet), + io.write_string("stack_only\n", !IO), + output_resume_map(VarSet, StackMap, !IO), + io.flush_output(!IO) + ; + true + ) + ) + ; + ResumeLocs = resume_locs_orig_and_stack, + make_stack_resume_map(ResumeVars, StackSlots, StackMap), + get_next_label(OrigLabel, !CI), + OrigAddr = code_label(OrigLabel), + get_next_label(StackLabel, !CI), + StackAddr = code_label(StackLabel), + ResumePoint = orig_and_stack(OrigMap, OrigAddr, StackMap, StackAddr), + trace [compiletime(flag("codegen_goal")), io(!IO)] ( + ( should_trace_code_gen(!.CI) -> + code_info.get_varset(!.CI, VarSet), + io.write_string("stack_and_orig\n", !IO), + io.write_string("orig:\n", !IO), + output_resume_map(VarSet, OrigMap, !IO), + io.write_string("stack:\n", !IO), + output_resume_map(VarSet, StackMap, !IO), + io.flush_output(!IO) + ; + true + ) + ) + ; + ResumeLocs = resume_locs_stack_and_orig, + make_stack_resume_map(ResumeVars, StackSlots, StackMap), + get_next_label(StackLabel, !CI), + StackAddr = code_label(StackLabel), + get_next_label(OrigLabel, !CI), + OrigAddr = code_label(OrigLabel), + ResumePoint = stack_and_orig(StackMap, StackAddr, OrigMap, OrigAddr), + trace [compiletime(flag("codegen_goal")), io(!IO)] ( + ( should_trace_code_gen(!.CI) -> + code_info.get_varset(!.CI, VarSet), + io.write_string("stack_and_orig\n", !IO), + io.write_string("stack:\n", !IO), + output_resume_map(VarSet, StackMap, !IO), + io.write_string("orig:\n", !IO), + output_resume_map(VarSet, OrigMap, !IO), + io.flush_output(!IO) + ; + true + ) + ) + ). + +:- pred make_stack_resume_map(list(prog_var)::in, stack_slots::in, + map(prog_var, set(lval))::out) is det. + +make_stack_resume_map(ResumeVars, StackSlots, StackMap) :- + map.select_sorted_list(StackSlots, ResumeVars, StackMap0), + map.to_assoc_list(StackMap0, AbsStackList), + StackList0 = assoc_list.map_values_only(stack_slot_to_lval, AbsStackList), + make_singleton_sets(StackList0, StackList), + map.from_sorted_assoc_list(StackList, StackMap). + +:- pred make_singleton_sets(assoc_list(prog_var, lval)::in, + assoc_list(prog_var, set(lval))::out) is det. + +make_singleton_sets([], []). +make_singleton_sets([Var - Lval | Tail], [Var - Lvals | SetTail]) :- + Lvals = set.make_singleton_set(Lval), + make_singleton_sets(Tail, SetTail). + +%---------------------------------------------------------------------------% + + % The code we generate for a resumption point looks like this: + % + % label(StackLabel) + % + % + % label(OrigLabel) + % + % + % Failures at different points may cause control to arrive at + % the resumption point via either label, which is why the last + % line is necessary. + % + % The idea is that failures from other procedures will go to + % StackLabel, and that failures from this procedure while + % everything is in its original place will go to OrigLabel. + % Failures from this procedure where not everything is in its + % original place can go to either, after moving the resume variables + % to the places where the label expects them. + % + % The above layout (stack, then orig) is the most common. However, + % liveness.m may decide that one or other of the two labels will + % never be referred to (e.g. because there are no calls inside + % the range of effect of the resumption point or because a call + % follows immediately after the establishment of the resumption + % point), or that it would be more efficient to put the two labels + % in the other order (e.g. because the code after the resumption point + % needs most of the variables in their stack slots). + +generate_resume_point(ResumePoint, Code, !CI) :- + ( + ResumePoint = orig_only(Map1, Addr1), + extract_label_from_code_addr(Addr1, Label1), + Code = singleton( + llds_instr(label(Label1), "orig only failure continuation") + ), + set_var_locations(Map1, !CI) + ; + ResumePoint = stack_only(Map1, Addr1), + extract_label_from_code_addr(Addr1, Label1), + Code = singleton( + llds_instr(label(Label1), "stack only failure continuation") + ), + set_var_locations(Map1, !CI), + generate_resume_layout(Label1, Map1, !CI) + ; + ResumePoint = stack_and_orig(Map1, Addr1, Map2, Addr2), + extract_label_from_code_addr(Addr1, Label1), + extract_label_from_code_addr(Addr2, Label2), + Label1Code = singleton( + llds_instr(label(Label1), "stack failure continuation before orig") + ), + set_var_locations(Map1, !CI), + generate_resume_layout(Label1, Map1, !CI), + map.to_assoc_list(Map2, AssocList2), + place_resume_vars(AssocList2, PlaceCode, !CI), + Label2Code = singleton( + llds_instr(label(Label2), "orig failure continuation after stack") + ), + set_var_locations(Map2, !CI), + Code = Label1Code ++ PlaceCode ++ Label2Code + ; + ResumePoint = orig_and_stack(Map1, Addr1, Map2, Addr2), + extract_label_from_code_addr(Addr1, Label1), + extract_label_from_code_addr(Addr2, Label2), + Label1Code = singleton( + llds_instr(label(Label1), "orig failure continuation before stack") + ), + set_var_locations(Map1, !CI), + map.to_assoc_list(Map2, AssocList2), + place_resume_vars(AssocList2, PlaceCode, !CI), + Label2Code = singleton( + llds_instr(label(Label2), "stack failure continuation after orig") + ), + set_var_locations(Map2, !CI), + generate_resume_layout(Label2, Map2, !CI), + Code = Label1Code ++ PlaceCode ++ Label2Code + ). + +:- pred extract_label_from_code_addr(code_addr::in, label::out) is det. + +extract_label_from_code_addr(CodeAddr, Label) :- + ( CodeAddr = code_label(Label0) -> + Label = Label0 + ; + unexpected($module, $pred, "non-label") + ). + +:- pred place_resume_vars(assoc_list(prog_var, set(lval))::in, + llds_code::out, code_info::in, code_info::out) is det. + +place_resume_vars([], empty, !CI). +place_resume_vars([Var - TargetSet | Rest], Code, !CI) :- + set.to_sorted_list(TargetSet, Targets), + place_resume_var(Var, Targets, FirstCode, !CI), + place_resume_vars(Rest, RestCode, !CI), + Code = FirstCode ++ RestCode. + +:- pred place_resume_var(prog_var::in, list(lval)::in, + llds_code::out, code_info::in, code_info::out) is det. + +place_resume_var(_Var, [], empty, !CI). +place_resume_var(Var, [Target | Targets], Code, !CI) :- + place_var(Var, Target, FirstCode, !CI), + place_resume_var(Var, Targets, RestCode, !CI), + Code = FirstCode ++ RestCode. + + % Reset the code generator's database of what is where. + % Remember that the variables in the map are available in their + % associated rvals; forget about all other variables. + % +:- pred set_var_locations(resume_map::in, + code_info::in, code_info::out) is det. + +set_var_locations(Map, !CI) :- + map.to_assoc_list(Map, LvalList0), + flatten_varlval_list(LvalList0, LvalList), + get_var_locn_info(!.CI, VarLocnInfo0), + reinit_var_locn_state(LvalList, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +:- pred flatten_varlval_list(assoc_list(prog_var, set(lval))::in, + assoc_list(prog_var, lval)::out) is det. + +flatten_varlval_list([], []). +flatten_varlval_list([V - Rvals | Rest0], All) :- + flatten_varlval_list(Rest0, Rest), + set.to_sorted_list(Rvals, RvalList), + flatten_varlval_list_2(RvalList, V, Rest1), + list.append(Rest1, Rest, All). + +:- pred flatten_varlval_list_2(list(lval)::in, prog_var::in, + assoc_list(prog_var, lval)::out) is det. + +flatten_varlval_list_2([], _V, []). +flatten_varlval_list_2([R | Rs], V, [V - R | Rest]) :- + flatten_varlval_list_2(Rs, V, Rest). + +resume_point_vars(ResumePoint, Vars) :- + pick_first_resume_point(ResumePoint, ResumeMap, _), + map.keys(ResumeMap, Vars). + +resume_point_stack_addr(ResumePoint, StackAddr) :- + pick_stack_resume_point(ResumePoint, _, StackAddr). + +%---------------------------------------------------------------------------% + +:- pred maybe_save_trail_info(add_trail_ops::in, maybe(pair(lval))::out, + llds_code::out, code_info::in, code_info::out) is det. + +maybe_save_trail_info(AddTrailOps, MaybeTrailSlots, SaveTrailCode, !CI) :- + ( + AddTrailOps = add_trail_ops, + acquire_temp_slot(slot_ticket_counter, non_persistent_temp_slot, + CounterSlot, !CI), + acquire_temp_slot(slot_ticket, non_persistent_temp_slot, + TrailPtrSlot, !CI), + MaybeTrailSlots = yes(CounterSlot - TrailPtrSlot), + SaveTrailCode = from_list([ + llds_instr(mark_ticket_stack(CounterSlot), + "save the ticket counter"), + llds_instr(store_ticket(TrailPtrSlot), + "save the trail pointer") + ]) + ; + AddTrailOps = do_not_add_trail_ops, + MaybeTrailSlots = no, + SaveTrailCode = empty + ). + +:- pred maybe_restore_trail_info(maybe(pair(lval))::in, + llds_code::out, llds_code::out, code_info::in, code_info::out) is det. + +maybe_restore_trail_info(MaybeTrailSlots, CommitCode, RestoreCode, !CI) :- + ( + MaybeTrailSlots = no, + CommitCode = empty, + RestoreCode = empty + ; + MaybeTrailSlots = yes(CounterSlot - TrailPtrSlot), + CommitCode = from_list([ + llds_instr(reset_ticket(lval(TrailPtrSlot), reset_reason_commit), + "discard trail entries and restore trail ptr"), + llds_instr(prune_tickets_to(lval(CounterSlot)), + "restore ticket counter (but not high water mark)") + ]), + RestoreCode = from_list([ + llds_instr(reset_ticket(lval(TrailPtrSlot), reset_reason_undo), + "apply trail entries and restore trail ptr"), + llds_instr(discard_ticket, + "restore ticket counter and high water mark") + ]), + release_temp_slot(CounterSlot, non_persistent_temp_slot, !CI), + release_temp_slot(TrailPtrSlot, non_persistent_temp_slot, !CI) + ). + +%---------------------------------------------------------------------------% + +:- pred clone_resume_point(resume_point_info::in, + resume_point_info::out, code_info::in, code_info::out) is det. + +clone_resume_point(ResumePoint0, ResumePoint, !CI) :- + ( + ResumePoint0 = orig_only(_, _), + unexpected($module, $pred, "cloning orig_only resume point") + ; + ResumePoint0 = stack_only(Map1, _), + get_next_label(Label1, !CI), + Addr1 = code_label(Label1), + ResumePoint = stack_only(Map1, Addr1) + ; + ResumePoint0 = stack_and_orig(Map1, _, Map2, _), + get_next_label(Label1, !CI), + Addr1 = code_label(Label1), + get_next_label(Label2, !CI), + Addr2 = code_label(Label2), + ResumePoint = stack_and_orig(Map1, Addr1, Map2, Addr2) + ; + ResumePoint0 = orig_and_stack(Map1, _, Map2, _), + get_next_label(Label2, !CI), + Addr2 = code_label(Label2), + get_next_label(Label1, !CI), + Addr1 = code_label(Label1), + ResumePoint = stack_and_orig(Map2, Addr2, Map1, Addr1) + ). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule to deal with liveness issues. + + % The principles underlying this submodule of code_info.m are + % documented in the file compiler/notes/allocation.html. + +:- interface. + +:- pred add_forward_live_vars(set_of_progvar::in, + code_info::in, code_info::out) is det. + +:- pred get_known_variables(code_info::in, list(prog_var)::out) is det. + +:- pred variable_is_forward_live(code_info::in, prog_var::in) is semidet. + +:- pred make_vars_forward_dead(set_of_progvar::in, + code_info::in, code_info::out) is det. + +:- pred maybe_make_vars_forward_dead(set_of_progvar::in, bool::in, + code_info::in, code_info::out) is det. + +:- pred pickup_zombies(set_of_progvar::out, + code_info::in, code_info::out) is det. + +%---------------------------------------------------------------------------% + +:- implementation. + +:- pred rem_forward_live_vars(set_of_progvar::in, + code_info::in, code_info::out) is det. + + % Make these variables appear magically live. + % We don't care where they are put. + % +:- pred make_vars_forward_live(set_of_progvar::in, + code_info::in, code_info::out) is det. + +get_known_variables(CI, VarList) :- + get_forward_live_vars(CI, ForwardLiveVars), + ResumeVars = current_resume_point_vars(CI), + set_of_var.union(ForwardLiveVars, ResumeVars, Vars), + VarList = set_of_var.to_sorted_list(Vars). + +variable_is_forward_live(CI, Var) :- + get_forward_live_vars(CI, Liveness), + set_of_var.member(Liveness, Var). + +add_forward_live_vars(Births, !CI) :- + get_forward_live_vars(!.CI, Liveness0), + set_of_var.union(Liveness0, Births, Liveness), + set_forward_live_vars(Liveness, !CI). + +rem_forward_live_vars(Deaths, !CI) :- + get_forward_live_vars(!.CI, Liveness0), + set_of_var.difference(Liveness0, Deaths, Liveness), + set_forward_live_vars(Liveness, !CI). + +make_vars_forward_live(Vars, !CI) :- + get_stack_slots(!.CI, StackSlots), + get_var_locn_info(!.CI, VarLocnInfo0), + VarList = set_of_var.to_sorted_list(Vars), + make_vars_forward_live_2(VarList, StackSlots, 1, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +:- pred make_vars_forward_live_2(list(prog_var)::in, + stack_slots::in, int::in, var_locn_info::in, var_locn_info::out) + is det. + +make_vars_forward_live_2([], _, _, !VarLocnInfo). +make_vars_forward_live_2([Var | Vars], StackSlots, N0, !VarLocnInfo) :- + ( map.search(StackSlots, Var, Slot) -> + Lval = stack_slot_to_lval(Slot), + N1 = N0 + ; + % reg_r is fine since we don't care where the variables are put. + RegType = reg_r, + find_unused_reg(!.VarLocnInfo, RegType, N0, N1), + Lval = reg(RegType, N1) + ), + var_locn_set_magic_var_location(Var, Lval, !VarLocnInfo), + make_vars_forward_live_2(Vars, StackSlots, N1, !VarLocnInfo). + +:- pred find_unused_reg(var_locn_info::in, reg_type::in, int::in, int::out) + is det. + +find_unused_reg(VLI, RegType, N0, N) :- + ( var_locn_lval_in_use(VLI, reg(RegType, N0)) -> + find_unused_reg(VLI, RegType, N0 + 1, N) + ; + N = N0 + ). + +make_vars_forward_dead(Vars, !CI) :- + maybe_make_vars_forward_dead(Vars, yes, !CI). + +maybe_make_vars_forward_dead(Vars0, FirstTime, !CI) :- + ResumeVars = current_resume_point_vars(!.CI), + set_of_var.intersect(Vars0, ResumeVars, FlushVars), + get_zombies(!.CI, Zombies0), + set_of_var.union(Zombies0, FlushVars, Zombies), + set_zombies(Zombies, !CI), + set_of_var.difference(Vars0, Zombies, Vars), + VarList = set_of_var.to_sorted_list(Vars), + get_var_locn_info(!.CI, VarLocnInfo0), + maybe_make_vars_forward_dead_2(VarList, FirstTime, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +:- pred maybe_make_vars_forward_dead_2(list(prog_var)::in, bool::in, + var_locn_info::in, var_locn_info::out) is det. + +maybe_make_vars_forward_dead_2([], _, !VLI). +maybe_make_vars_forward_dead_2([Var | Vars], FirstTime, !VLI) :- + var_locn_var_becomes_dead(Var, FirstTime, !VLI), + maybe_make_vars_forward_dead_2(Vars, FirstTime, !VLI). + +pickup_zombies(Zombies, !CI) :- + get_zombies(!.CI, Zombies), + set_zombies(set_of_var.init, !CI). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule for handling the saving and restoration + % of trail tickets, heap pointers, stack pointers etc. + +:- interface. + +:- pred save_hp(llds_code::out, lval::out, + code_info::in, code_info::out) is det. + +:- pred restore_hp(lval::in, llds_code::out) is det. + +:- pred release_hp(lval::in, code_info::in, code_info::out) is det. + +:- pred restore_and_release_hp(lval::in, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred maybe_save_hp(bool::in, llds_code::out, maybe(lval)::out, + code_info::in, code_info::out) is det. + +:- pred maybe_restore_hp(maybe(lval)::in, llds_code::out) is det. + +:- pred maybe_release_hp(maybe(lval)::in, + code_info::in, code_info::out) is det. + +:- pred maybe_restore_and_release_hp(maybe(lval)::in, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred save_ticket(llds_code::out, lval::out, + code_info::in, code_info::out) is det. + +:- pred reset_ticket(lval::in, reset_trail_reason::in, llds_code::out) is det. + +:- pred release_ticket(lval::in, code_info::in, code_info::out) is det. + +:- pred reset_and_prune_ticket(lval::in, reset_trail_reason::in, + llds_code::out) is det. + +:- pred reset_prune_and_release_ticket(lval::in, reset_trail_reason::in, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred reset_and_discard_ticket(lval::in, reset_trail_reason::in, + llds_code::out) is det. + +:- pred reset_discard_and_release_ticket(lval::in, reset_trail_reason::in, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred discard_and_release_ticket(lval::in, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred maybe_save_ticket(add_trail_ops::in, llds_code::out, + maybe(lval)::out, code_info::in, code_info::out) is det. + +:- pred maybe_reset_ticket(maybe(lval)::in, reset_trail_reason::in, + llds_code::out) is det. + +:- pred maybe_release_ticket(maybe(lval)::in, + code_info::in, code_info::out) is det. + +:- pred maybe_reset_and_prune_ticket(maybe(lval)::in, + reset_trail_reason::in, llds_code::out) is det. + +:- pred maybe_reset_prune_and_release_ticket(maybe(lval)::in, + reset_trail_reason::in, llds_code::out, code_info::in, code_info::out) + is det. + +:- pred maybe_reset_and_discard_ticket(maybe(lval)::in, + reset_trail_reason::in, llds_code::out) is det. + +:- pred maybe_reset_discard_and_release_ticket(maybe(lval)::in, + reset_trail_reason::in, llds_code::out, code_info::in, code_info::out) + is det. + +:- pred maybe_discard_and_release_ticket(maybe(lval)::in, llds_code::out, + code_info::in, code_info::out) is det. + + % Should we add trail ops to the code we generate for the goal with the + % given goal_info. This will be 'no' unless we are in a trailing grade. + % +:- func should_add_trail_ops(code_info, hlds_goal_info) = add_trail_ops. + + % Should we add region ops to the code we generate for the goal with the + % given goal_info. This will be 'no' unless we are in a rbmm grade. + % +:- func should_add_region_ops(code_info, hlds_goal_info) = add_region_ops. + +%---------------------------------------------------------------------------% + +:- implementation. + +save_hp(Code, HpSlot, !CI) :- + acquire_temp_slot(slot_lval(hp), non_persistent_temp_slot, HpSlot, !CI), + Code = singleton( + llds_instr(mark_hp(HpSlot), "Save heap pointer") + ). + +restore_hp(HpSlot, Code) :- + Code = singleton( + llds_instr(restore_hp(lval(HpSlot)), "Restore heap pointer") + ). + +release_hp(HpSlot, !CI) :- + release_temp_slot(HpSlot, non_persistent_temp_slot, !CI). + +restore_and_release_hp(HpSlot, Code, !CI) :- + restore_hp(HpSlot, Code), + release_hp(HpSlot, !CI). + +%---------------------------------------------------------------------------% + +maybe_save_hp(Maybe, Code, MaybeHpSlot, !CI) :- + ( + Maybe = yes, + save_hp(Code, HpSlot, !CI), + MaybeHpSlot = yes(HpSlot) + ; + Maybe = no, + Code = empty, + MaybeHpSlot = no + ). + +maybe_restore_hp(MaybeHpSlot, Code) :- + ( + MaybeHpSlot = yes(HpSlot), + restore_hp(HpSlot, Code) + ; + MaybeHpSlot = no, + Code = empty + ). + +maybe_release_hp(MaybeHpSlot, !CI) :- + ( + MaybeHpSlot = yes(HpSlot), + release_hp(HpSlot, !CI) + ; + MaybeHpSlot = no + ). + +maybe_restore_and_release_hp(MaybeHpSlot, Code, !CI) :- + ( + MaybeHpSlot = yes(HpSlot), + restore_and_release_hp(HpSlot, Code, !CI) + ; + MaybeHpSlot = no, + Code = empty + ). + +%---------------------------------------------------------------------------% + +save_ticket(Code, TicketSlot, !CI) :- + acquire_temp_slot(slot_ticket, non_persistent_temp_slot, TicketSlot, !CI), + Code = singleton( + llds_instr(store_ticket(TicketSlot), "Save trail state") + ). + +reset_ticket(TicketSlot, Reason, Code) :- + Code = singleton( + llds_instr(reset_ticket(lval(TicketSlot), Reason), "Reset trail") + ). + +release_ticket(TicketSlot, !CI) :- + release_temp_slot(TicketSlot, non_persistent_temp_slot, !CI). + +reset_and_prune_ticket(TicketSlot, Reason, Code) :- + Code = from_list([ + llds_instr(reset_ticket(lval(TicketSlot), Reason), "Restore trail"), + llds_instr(prune_ticket, "Prune ticket stack") + ]). + +reset_prune_and_release_ticket(TicketSlot, Reason, Code, !CI) :- + Code = from_list([ + llds_instr(reset_ticket(lval(TicketSlot), Reason), "Release trail"), + llds_instr(prune_ticket, "Prune ticket stack") + ]), + release_temp_slot(TicketSlot, non_persistent_temp_slot, !CI). + +reset_and_discard_ticket(TicketSlot, Reason, Code) :- + Code = from_list([ + llds_instr(reset_ticket(lval(TicketSlot), Reason), "Restore trail"), + llds_instr(discard_ticket, "Pop ticket stack") + ]). + +reset_discard_and_release_ticket(TicketSlot, Reason, Code, !CI) :- + Code = from_list([ + llds_instr(reset_ticket(lval(TicketSlot), Reason), "Release trail"), + llds_instr(discard_ticket, "Pop ticket stack") + ]), + release_temp_slot(TicketSlot, non_persistent_temp_slot, !CI). + +discard_and_release_ticket(TicketSlot, Code, !CI) :- + Code = singleton( + llds_instr(discard_ticket, "Pop ticket stack") + ), + release_temp_slot(TicketSlot, non_persistent_temp_slot, !CI). + +%---------------------------------------------------------------------------% + +maybe_save_ticket(AddTrailOps, Code, MaybeTicketSlot, !CI) :- + ( + AddTrailOps = add_trail_ops, + save_ticket(Code, TicketSlot, !CI), + MaybeTicketSlot = yes(TicketSlot) + ; + AddTrailOps = do_not_add_trail_ops, + Code = empty, + MaybeTicketSlot = no + ). + +maybe_reset_ticket(MaybeTicketSlot, Reason, Code) :- + ( + MaybeTicketSlot = yes(TicketSlot), + reset_ticket(TicketSlot, Reason, Code) + ; + MaybeTicketSlot = no, + Code = empty + ). + +maybe_release_ticket(MaybeTicketSlot, !CI) :- + ( + MaybeTicketSlot = yes(TicketSlot), + release_ticket(TicketSlot, !CI) + ; + MaybeTicketSlot = no + ). + +maybe_reset_and_prune_ticket(MaybeTicketSlot, Reason, Code) :- + ( + MaybeTicketSlot = yes(TicketSlot), + reset_and_prune_ticket(TicketSlot, Reason, Code) + ; + MaybeTicketSlot = no, + Code = empty + ). + +maybe_reset_prune_and_release_ticket(MaybeTicketSlot, Reason, + Code, !CI) :- + ( + MaybeTicketSlot = yes(TicketSlot), + reset_prune_and_release_ticket(TicketSlot, Reason, + Code, !CI) + ; + MaybeTicketSlot = no, + Code = empty + ). + +maybe_reset_and_discard_ticket(MaybeTicketSlot, Reason, Code) :- + ( + MaybeTicketSlot = yes(TicketSlot), + reset_and_discard_ticket(TicketSlot, Reason, Code) + ; + MaybeTicketSlot = no, + Code = empty + ). + +maybe_reset_discard_and_release_ticket(MaybeTicketSlot, Reason, + Code, !CI) :- + ( + MaybeTicketSlot = yes(TicketSlot), + reset_discard_and_release_ticket(TicketSlot, Reason, + Code, !CI) + ; + MaybeTicketSlot = no, + Code = empty + ). + +maybe_discard_and_release_ticket(MaybeTicketSlot, Code, !CI) :- + ( + MaybeTicketSlot = yes(TicketSlot), + discard_and_release_ticket(TicketSlot, Code, !CI) + ; + MaybeTicketSlot = no, + Code = empty + ). + + % XXX We will eventually need to make use of GoalInfo here. + % +should_add_trail_ops(CodeInfo, _GoalInfo) = AddTrailOps :- + get_emit_trail_ops(CodeInfo, AddTrailOps). + + % XXX We will eventually need to make use of GoalInfo here. + % +should_add_region_ops(CodeInfo, _GoalInfo) = AddRegionOps :- + get_emit_region_ops(CodeInfo, AddRegionOps). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule to deal with var_locn. + + % Most of these procedures just forward to the var_locn module. + % See var_locn for documentation. + +:- interface. + +:- pred variable_locations(code_info::in, + map(prog_var, set(lval))::out) is det. + +:- pred set_var_location(prog_var::in, lval::in, + code_info::in, code_info::out) is det. + +:- pred assign_var_to_var(prog_var::in, prog_var::in, + code_info::in, code_info::out) is det. + +:- pred assign_lval_to_var(prog_var::in, lval::in, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred assign_const_to_var(prog_var::in, rval::in, + code_info::in, code_info::out) is det. + +:- pred assign_expr_to_var(prog_var::in, rval::in, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred reassign_mkword_hole_var(prog_var::in, tag::in, rval::in, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred assign_field_lval_expr_to_var(prog_var::in, list(lval)::in, rval::in, + llds_code::out, code_info::in, code_info::out) is det. + + % assign_cell_to_var(Var, ReserveWordAtStart, Ptag, MaybeRvals, + % AllFilled, MaybeSize, FieldAddrs, TypeMsg, MayUseAtomic, Where, + % Code, !CI). + % +:- pred assign_cell_to_var(prog_var::in, bool::in, tag::in, + list(cell_arg)::in, how_to_construct::in, maybe(term_size_value)::in, + maybe(alloc_site_id)::in, may_use_atomic_alloc::in, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred save_reused_cell_fields(prog_var::in, lval::in, llds_code::out, + list(lval)::out, code_info::in, code_info::out) is det. + +:- pred place_var(prog_var::in, lval::in, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred produce_variable(prog_var::in, llds_code::out, rval::out, + code_info::in, code_info::out) is det. + +:- pred produce_variable_in_reg(prog_var::in, llds_code::out, + lval::out, code_info::in, code_info::out) is det. + +:- pred produce_variable_in_reg_or_stack(prog_var::in, + llds_code::out, lval::out, code_info::in, code_info::out) is det. + +:- pred materialize_vars_in_lval(lval::in, lval::out, + llds_code::out, code_info::in, code_info::out) is det. + +:- pred acquire_reg_for_var(prog_var::in, reg_type::in, lval::out, + code_info::in, code_info::out) is det. + +:- pred acquire_reg_not_in_storemap(abs_store_map::in, reg_type::in, lval::out, + code_info::in, code_info::out) is det. + +:- pred acquire_reg(reg_type::in, lval::out, + code_info::in, code_info::out) is det. + +:- pred release_reg(lval::in, code_info::in, code_info::out) is det. + +:- pred reserve_r1(llds_code::out, code_info::in, code_info::out) is det. + +:- pred clear_r1(llds_code::out, code_info::in, code_info::out) is det. + +:- type call_direction + ---> caller + ; callee. + + % Move variables to where they need to be at the time of the call: + % + % - The variables that need to be saved across the call (either because + % they are forward live after the call or because they are protected + % by an enclosing resumption point) will be saved on the stack. + % Note that if the call cannot succeed and the trace level is none, + % then no variables need to be saved across the call. (If the call + % cannot succeed but the trace level is not none, then we still + % save the usual variables on the stack to make them available + % for up-level printing in the debugger.) + % + % - The input arguments will be moved to their registers. + % +:- pred setup_call(hlds_goal_info::in, assoc_list(prog_var, arg_info)::in, + set(lval)::out, llds_code::out, code_info::in, code_info::out) is det. + + % Move the output arguments of the current procedure to where + % they need to be at return. + % +:- pred setup_return(assoc_list(prog_var, arg_info)::in, + set(lval)::out, llds_code::out, code_info::in, code_info::out) is det. + +:- pred lock_regs(int::in, int::in, assoc_list(prog_var, lval)::in, + code_info::in, code_info::out) is det. + +:- pred unlock_regs(code_info::in, code_info::out) is det. + + % Record the fact that all the registers have been clobbered (as by a + % call). If the bool argument is true, then the call cannot return, and + % thus it is OK for this action to delete the last record of the state + % of a variable. + % +:- pred clear_all_registers(bool::in, code_info::in, code_info::out) is det. + +:- pred clobber_regs(list(lval)::in, code_info::in, code_info::out) is det. + +:- pred save_variables(set_of_progvar::in, set(lval)::out, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred save_variables_on_stack(list(prog_var)::in, llds_code::out, + code_info::in, code_info::out) is det. + +:- pred max_reg_in_use(code_info::in, int::out, int::out) is det. + +:- pred magically_put_var_in_unused_reg(prog_var::in, + code_info::in, code_info::out) is det. + +%---------------------------------------------------------------------------% + +:- implementation. + +variable_locations(CI, Lvals) :- + get_var_locn_info(CI, VarLocnInfo), + var_locn_get_var_locations(VarLocnInfo, Lvals). + +:- func rval_map_to_lval_map(prog_var, set(rval)) = set(lval). + +rval_map_to_lval_map(_Var, Rvals) = + set.filter_map(rval_is_lval, Rvals). + +:- func rval_is_lval(rval) = lval is semidet. + +rval_is_lval(lval(Lval)) = Lval. + +set_var_location(Var, Lval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_check_and_set_magic_var_location(Var, Lval, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +assign_var_to_var(Var, AssignedVar, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_assign_var_to_var(Var, AssignedVar, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +assign_lval_to_var(Var, Lval, Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_static_cell_info(!.CI, StaticCellInfo), + get_module_info(!.CI, ModuleInfo), + var_locn_assign_lval_to_var(ModuleInfo, Var, Lval, + StaticCellInfo, Code, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +assign_const_to_var(Var, ConstRval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_exprn_opts(!.CI, ExprnOpts), + var_locn_assign_const_to_var(ExprnOpts, Var, ConstRval, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +assign_expr_to_var(Var, Rval, Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + Lvals = lvals_in_rval(Rval), + ( + Lvals = [], + var_locn_assign_expr_to_var(Var, Rval, Code, + VarLocnInfo0, VarLocnInfo) + ; + Lvals = [_ | _], + unexpected($module, $pred, "non-var lvals") + ), + set_var_locn_info(VarLocnInfo, !CI). + +reassign_mkword_hole_var(Var, Ptag, Rval, Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + Lvals = lvals_in_rval(Rval), + ( + Lvals = [], + var_locn_reassign_mkword_hole_var(Var, Ptag, Rval, Code, + VarLocnInfo0, VarLocnInfo) + ; + Lvals = [_ | _], + unexpected($module, $pred, "non-var lvals") + ), + set_var_locn_info(VarLocnInfo, !CI). + +assign_field_lval_expr_to_var(Var, FieldLvals, Rval, Code, !CI) :- + ( + FieldLvals = [field(MaybeTag, var(BaseVar), _) | RestFieldLvals], + list.all_true(is_var_field(MaybeTag, BaseVar), RestFieldLvals) + -> + ( + Lvals = lvals_in_rval(Rval), + all [Lval] ( + list.member(Lval, Lvals) + => + list.member(Lval, FieldLvals) + ) + -> + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_assign_field_lval_expr_to_var(Var, BaseVar, Rval, Code, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI) + ; + unexpected($module, $pred, "rval contains unexpected lval") + ) + ; + unexpected($module, $pred, + "FieldLvals not all fields of the same base variable") + ). + +:- pred is_var_field(maybe(tag)::in, prog_var::in, lval::in) is semidet. + +is_var_field(MaybeTag, Var, field(MaybeTag, var(Var), _)). + +assign_cell_to_var(Var, ReserveWordAtStart, Ptag, CellArgs, HowToConstruct, + MaybeSize, MaybeAllocId, MayUseAtomic, Code, !CI) :- + get_next_label(Label, !CI), + get_var_locn_info(!.CI, VarLocnInfo0), + get_static_cell_info(!.CI, StaticCellInfo0), + get_module_info(!.CI, ModuleInfo), + get_exprn_opts(!.CI, ExprnOpts), + var_locn_assign_cell_to_var(ModuleInfo, ExprnOpts, Var, ReserveWordAtStart, + Ptag, CellArgs, HowToConstruct, MaybeSize, MaybeAllocId, MayUseAtomic, + Label, Code, StaticCellInfo0, StaticCellInfo, + VarLocnInfo0, VarLocnInfo), + set_static_cell_info(StaticCellInfo, !CI), + set_var_locn_info(VarLocnInfo, !CI). + +save_reused_cell_fields(Var, Lval, Code, Regs, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_save_cell_fields(ModuleInfo, Var, Lval, Code, Regs, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +place_var(Var, Lval, Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_place_var(ModuleInfo, Var, Lval, Code, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +:- pred pick_and_place_vars(assoc_list(prog_var, set(lval))::in, + set(lval)::out, llds_code::out, code_info::in, code_info::out) is det. + +pick_and_place_vars(VarLocSets, LiveLocs, Code, !CI) :- + pick_var_places(VarLocSets, VarLocs), + assoc_list.values(VarLocs, Locs), + set.list_to_set(Locs, LiveLocs), + place_vars(VarLocs, Code, !CI). + +:- pred pick_var_places(assoc_list(prog_var, set(lval))::in, + assoc_list(prog_var, lval)::out) is det. + +pick_var_places([], []). +pick_var_places([Var - LvalSet | VarLvalSets], VarLvals) :- + pick_var_places(VarLvalSets, VarLvals0), + ( + set.to_sorted_list(LvalSet, LvalList), + LvalList = [Lval | _] + -> + VarLvals = [Var - Lval | VarLvals0] + ; + VarLvals = VarLvals0 + ). + +:- pred place_vars(assoc_list(prog_var, lval)::in, + llds_code::out, code_info::in, code_info::out) is det. + +place_vars(VarLocs, Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_place_vars(ModuleInfo, VarLocs, Code, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +produce_variable(Var, Code, Rval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_produce_var(ModuleInfo, Var, Rval, Code, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +produce_variable_in_reg(Var, Code, Lval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_produce_var_in_reg(ModuleInfo, Var, Lval, Code, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +produce_variable_in_reg_or_stack(Var, Code, Lval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_produce_var_in_reg_or_stack(ModuleInfo, Var, Lval, Code, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +materialize_vars_in_lval(Lval0, Lval, Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_materialize_vars_in_lval(ModuleInfo, Lval0, Lval, Code, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +acquire_reg_for_var(Var, RegType, Lval, !CI) :- + get_follow_var_map(!.CI, FollowVarsMap), + get_next_non_reserved(!.CI, RegType, NextNonReserved), + get_var_locn_info(!.CI, VarLocnInfo0), + ( + map.search(FollowVarsMap, Var, PrefLocn), + PrefLocn = abs_reg(RegType, PrefRegNum), + PrefRegNum >= 1 + -> + var_locn_acquire_reg_prefer_given(RegType, PrefRegNum, Lval, + VarLocnInfo0, VarLocnInfo) + ; + % XXX We should only get a register if the map.search succeeded; + % otherwise we should put the var in its stack slot. + var_locn_acquire_reg_start_at_given(RegType, NextNonReserved, Lval, + VarLocnInfo0, VarLocnInfo) + ), + set_var_locn_info(VarLocnInfo, !CI). + +acquire_reg_not_in_storemap(StoreMap, RegType, Lval, !CI) :- + map.foldl2(record_highest_used_reg, StoreMap, 0, HighestUsedRegR, + 0, HighestUsedRegF), + get_var_locn_info(!.CI, VarLocnInfo0), + ( + RegType = reg_r, + NextRegNum = HighestUsedRegR + 1 + ; + RegType = reg_f, + NextRegNum = HighestUsedRegF + 1 + ), + var_locn_acquire_reg_start_at_given(RegType, NextRegNum, Lval, + VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +:- pred record_highest_used_reg(prog_var::in, abs_locn::in, int::in, int::out, + int::in, int::out) is det. + +record_highest_used_reg(_, AbsLocn, !HighestUsedRegR, !HighestUsedRegF) :- + ( + AbsLocn = any_reg + ; + AbsLocn = abs_reg(reg_r, N), + int.max(N, !HighestUsedRegR) + ; + AbsLocn = abs_reg(reg_f, N), + int.max(N, !HighestUsedRegF) + ; + AbsLocn = abs_stackvar(_, _) + ; + AbsLocn = abs_parent_stackvar(_, _) + ; + AbsLocn = abs_framevar(_, _) + ). + +acquire_reg(Type, Lval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_acquire_reg(Type, Lval, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +release_reg(Lval, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_release_reg(Lval, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +reserve_r1(Code, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + get_module_info(!.CI, ModuleInfo), + var_locn_clear_r1(ModuleInfo, Code, VarLocnInfo0, VarLocnInfo1), + var_locn_acquire_reg_require_given(reg(reg_r, 1), + VarLocnInfo1, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +clear_r1(empty, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_release_reg(reg(reg_r, 1), VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +%---------------------------------------------------------------------------% + +setup_return(VarArgInfos, OutLocs, Code, !CI) :- + setup_call_args(VarArgInfos, callee, OutLocs, Code, !CI). + +setup_call(GoalInfo, ArgInfos, LiveLocs, Code, !CI) :- + partition_args(ArgInfos, InArgInfos, OutArgInfos, _UnusedArgInfos), + assoc_list.keys(OutArgInfos, OutVars), + set.list_to_set(OutVars, OutVarSet), + Detism = goal_info_get_determinism(GoalInfo), + get_opt_no_return_calls(!.CI, OptNoReturnCalls), + get_module_info(!.CI, ModuleInfo), + VarTypes = get_var_types(!.CI), + ( + Detism = detism_erroneous, + OptNoReturnCalls = yes + -> + RealStackVarLocs = [], + DummyStackVarLocs = [] + ; + compute_forward_live_var_saves(!.CI, set_to_bitset(OutVarSet), + ForwardVarLocs), + CodeModel = goal_info_get_code_model(GoalInfo), + ( + CodeModel = model_non, + % Save variables protected by the nearest resumption point on the + % stack. + % XXX This should be unnecessary; with the current setup, the code + % that established the resume point should have saved those + % variables on the stack already. However, later we should arrange + % things so that this saving of the resume vars on the stack + % is delayed until the first call after the setup of the + % resume point. + compute_resume_var_stack_locs(!.CI, ResumeVarLocs), + list.append(ResumeVarLocs, ForwardVarLocs, StackVarLocs) + ; + ( CodeModel = model_det + ; CodeModel = model_semi + ), + StackVarLocs = ForwardVarLocs + ), + list.filter(valid_stack_slot(ModuleInfo, VarTypes), StackVarLocs, + RealStackVarLocs, DummyStackVarLocs) + ), + get_var_locn_info(!.CI, VarLocnInfo0), + list.filter(key_var_is_of_non_dummy_type(ModuleInfo, VarTypes), + InArgInfos, RealInArgInfos), + var_arg_info_to_lval(RealInArgInfos, RealInArgLocs), + AllRealLocs = RealStackVarLocs ++ RealInArgLocs, + AllLocs = DummyStackVarLocs ++ AllRealLocs, + var_locn_place_vars(ModuleInfo, AllLocs, Code, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI), + assoc_list.values(AllRealLocs, LiveLocList), + set.list_to_set(LiveLocList, LiveLocs). + +:- pred key_var_is_of_non_dummy_type(module_info::in, vartypes::in, + pair(prog_var, arg_info)::in) is semidet. + +key_var_is_of_non_dummy_type(ModuleInfo, VarTypes, Var - _ArgInfo) :- + var_is_of_non_dummy_type(ModuleInfo, VarTypes, Var). + +:- pred valid_stack_slot(module_info::in, vartypes::in, + pair(prog_var, lval)::in) is semidet. + +valid_stack_slot(ModuleInfo, VarTypes, Var - Lval) :- + lookup_var_type(VarTypes, Var, Type), + check_dummy_type(ModuleInfo, Type) = is_not_dummy_type, + ( + ( Lval = stackvar(N) + ; Lval = parent_stackvar(N) + ; Lval = framevar(N) + ), + N < 0 + -> + unexpected($module, $pred, "nondummy var in dummy stack slot") + ; + true + ). + +:- pred setup_call_args(assoc_list(prog_var, arg_info)::in, + call_direction::in, set(lval)::out, llds_code::out, + code_info::in, code_info::out) is det. + +setup_call_args(AllArgsInfos, Direction, LiveLocs, Code, !CI) :- + list.filter(call_arg_in_selected_dir(Direction), AllArgsInfos, ArgsInfos), + var_arg_info_to_lval(ArgsInfos, ArgsLocns), + get_module_info(!.CI, ModuleInfo), + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_place_vars(ModuleInfo, ArgsLocns, Code, + VarLocnInfo0, VarLocnInfo1), + set_var_locn_info(VarLocnInfo1, !CI), + assoc_list.values(ArgsLocns, LiveLocList), + set.list_to_set(LiveLocList, LiveLocs), + assoc_list.keys(ArgsLocns, ArgVars), + which_variables_are_forward_live(!.CI, ArgVars, set_of_var.init, DeadVars), + make_vars_forward_dead(DeadVars, !CI). + +:- pred var_arg_info_to_lval(assoc_list(prog_var, arg_info)::in, + assoc_list(prog_var, lval)::out) is det. + +var_arg_info_to_lval([], []). +var_arg_info_to_lval([Var - ArgInfo | RestInfos], [Var - Lval | RestLvals]) :- + ArgInfo = arg_info(Loc, _Mode), + code_util.arg_loc_to_register(Loc, Lval), + var_arg_info_to_lval(RestInfos, RestLvals). + +:- pred which_variables_are_forward_live(code_info::in, + list(prog_var)::in, set_of_progvar::in, set_of_progvar::out) is det. + +which_variables_are_forward_live(_, [], !DeadVars). +which_variables_are_forward_live(CI, [Var | Vars], !DeadVars) :- + ( variable_is_forward_live(CI, Var) -> + true + ; + set_of_var.insert(Var, !DeadVars) + ), + which_variables_are_forward_live(CI, Vars, !DeadVars). + +:- pred call_arg_in_selected_dir(call_direction::in, + pair(prog_var, arg_info)::in) is semidet. + +call_arg_in_selected_dir(Direction, _ - arg_info(_, Mode)) :- + ( + Mode = top_in, + Direction = caller + ; + Mode = top_out, + Direction = callee + ). + +lock_regs(R, F, Exceptions, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_lock_regs(R, F, Exceptions, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +unlock_regs(!CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_unlock_regs(VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +clear_all_registers(OkToDeleteAny, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_clobber_all_regs(OkToDeleteAny, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +clobber_regs(Regs, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + var_locn_clobber_regs(Regs, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +save_variables(OutArgs, SavedLocs, Code, !CI) :- + compute_forward_live_var_saves(!.CI, OutArgs, VarLocs), + assoc_list.values(VarLocs, SavedLocList), + set.list_to_set(SavedLocList, SavedLocs), + place_vars(VarLocs, Code, !CI). + +save_variables_on_stack(Vars, Code, !CI) :- + list.map(associate_stack_slot(!.CI), Vars, VarLocs), + place_vars(VarLocs, Code, !CI). + +:- pred compute_forward_live_var_saves(code_info::in, + set_of_progvar::in, assoc_list(prog_var, lval)::out) is det. + +compute_forward_live_var_saves(CI, OutArgs, VarLocs) :- + get_known_variables(CI, Variables0), + Vars0 = set_of_var.list_to_set(Variables0), + TypeInfoLiveness = body_typeinfo_liveness(CI), + get_proc_info(CI, ProcInfo), + proc_info_get_vartypes(ProcInfo, VarTypes), + proc_info_get_rtti_varmaps(ProcInfo, RttiVarMaps), + maybe_complete_with_typeinfo_vars(Vars0, TypeInfoLiveness, VarTypes, + RttiVarMaps, Vars1), + set_of_var.difference(Vars1, OutArgs, Vars), + Variables = set_of_var.to_sorted_list(Vars), + list.map(associate_stack_slot(CI), Variables, VarLocs). + +:- pred associate_stack_slot(code_info::in, prog_var::in, + pair(prog_var, lval)::out) is det. + +associate_stack_slot(CI, Var, Var - Slot) :- + get_variable_slot(CI, Var, Slot). + +max_reg_in_use(CI, MaxR, MaxF) :- + get_var_locn_info(CI, VarLocnInfo), + var_locn_max_reg_in_use(VarLocnInfo, MaxR, MaxF). + +magically_put_var_in_unused_reg(Var, !CI) :- + get_var_locn_info(!.CI, VarLocnInfo0), + make_vars_forward_live_2([Var], map.init, 1, VarLocnInfo0, VarLocnInfo), + set_var_locn_info(VarLocnInfo, !CI). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule for dealing with the recording of variable liveness + % information around calls. + % + % Value numbering needs to know what locations are live before calls; + % the garbage collector and the debugger need to know what locations + % are live containing what types of values after calls. + +:- interface. + +:- pred generate_call_vn_livevals(code_info::in, list(arg_loc)::in, + set_of_progvar::in, set(lval)::out) is det. + +:- pred generate_return_live_lvalues(code_info::in, + assoc_list(prog_var, arg_loc)::in, instmap::in, bool::in, + list(liveinfo)::out) is det. + +%---------------------------------------------------------------------------% + +:- implementation. + +generate_call_vn_livevals(CI, InputArgLocs, OutputArgs, LiveVals) :- + generate_call_stack_vn_livevals(CI, OutputArgs, StackLiveVals), + generate_input_var_vn(InputArgLocs, StackLiveVals, LiveVals). + +:- pred generate_call_stack_vn_livevals(code_info::in, + set_of_progvar::in, set(lval)::out) is det. + +generate_call_stack_vn_livevals(CI, OutputArgs, LiveVals) :- + get_known_variables(CI, KnownVarList0), + get_module_info(CI, ModuleInfo), + VarTypes = get_var_types(CI), + list.filter(var_is_of_non_dummy_type(ModuleInfo, VarTypes), + KnownVarList0, KnownVarList), + set_of_var.list_to_set(KnownVarList, KnownVars), + set_of_var.difference(KnownVars, OutputArgs, LiveVars), + set_of_var.to_sorted_list(LiveVars, LiveVarList), + generate_stack_var_vn(CI, LiveVarList, set.init, LiveVals1), + get_active_temps_data(CI, Temps), + generate_call_temp_vn(Temps, LiveVals1, LiveVals). + +:- pred generate_stack_var_vn(code_info::in, list(prog_var)::in, + set(lval)::in, set(lval)::out) is det. + +generate_stack_var_vn(_, [], !Vals). +generate_stack_var_vn(CI, [V | Vs], !Vals) :- + get_variable_slot(CI, V, Lval), + set.insert(Lval, !Vals), + generate_stack_var_vn(CI, Vs, !Vals). + +:- pred generate_call_temp_vn(assoc_list(lval, slot_contents)::in, + set(lval)::in, set(lval)::out) is det. + +generate_call_temp_vn([], !Vals). +generate_call_temp_vn([Lval - _ | Temps], !Vals) :- + set.insert(Lval, !Vals), + generate_call_temp_vn(Temps, !Vals). + +:- pred generate_input_var_vn(list(arg_loc)::in, + set(lval)::in, set(lval)::out) is det. + +generate_input_var_vn([], !Vals). +generate_input_var_vn([InputArgLoc | InputArgLocs], !Vals) :- + code_util.arg_loc_to_register(InputArgLoc, Lval), + set.insert(Lval, !Vals), + generate_input_var_vn(InputArgLocs, !Vals). + +%---------------------------------------------------------------------------% + +generate_return_live_lvalues(CI, OutputArgLocs, ReturnInstMap, + OkToDeleteAny, LiveLvalues) :- + variable_locations(CI, VarLocs), + get_known_variables(CI, Vars0), + get_module_info(CI, ModuleInfo), + VarTypes = get_var_types(CI), + list.filter(var_is_of_non_dummy_type(ModuleInfo, VarTypes), Vars0, Vars), + get_active_temps_data(CI, Temps), + get_proc_info(CI, ProcInfo), + get_globals(CI, Globals), + continuation_info.generate_return_live_lvalues(OutputArgLocs, + ReturnInstMap, Vars, VarLocs, Temps, ProcInfo, ModuleInfo, + Globals, OkToDeleteAny, LiveLvalues). + +:- pred generate_resume_layout(label::in, resume_map::in, + code_info::in, code_info::out) is det. + +generate_resume_layout(Label, ResumeMap, !CI) :- + get_globals(!.CI, Globals), + globals.lookup_bool_option(Globals, agc_stack_layout, AgcStackLayout), + ( + AgcStackLayout = yes, + get_active_temps_data(!.CI, Temps), + get_instmap(!.CI, InstMap), + get_proc_info(!.CI, ProcInfo), + get_module_info(!.CI, ModuleInfo), + continuation_info.generate_resume_layout(ResumeMap, Temps, InstMap, + ProcInfo, ModuleInfo, Layout), + add_resume_layout_for_label(Label, Layout, !CI) + ; + AgcStackLayout = no + ). + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + + % Submodule for managing stack slots. + + % Det stack frames are organized as follows. + % + % ... unused ... + % sp ---> + % + % ... local vars ... + % + % + % ... temporaries ... + % + % + % + % The stack pointer points to the first free location at the + % top of the stack. + % + % `succip_is_used' determines whether we need a slot to + % hold the succip. + % + % Nondet stack frames also have the local variables above the + % temporaries, but contain several fixed slots on top, and the + % saved succip is stored in one of these. + % + % For both kinds of stack frames, the slots holding variables + % are allocated during the live_vars pass, while the slots holding + % temporaries are acquired (and if possible, released) on demand + % during code generation. + +:- interface. + + % Returns the total stackslot count, but not including space for + % succip. This total can change in the future if this call is + % followed by further allocations of temp slots. + % +:- pred get_total_stackslot_count(code_info::in, int::out) is det. + + % If a stack slot is persistent, then the stack slot is not implicitly + % released when the code generator resets its location-dependent state, + % usually when entering the next arm of a disjunction, switch, etc. + +:- type temp_slot_persistence + ---> persistent_temp_slot + ; non_persistent_temp_slot. + + % Acquire a stack slot for storing a temporary. The slot_contents + % description is for accurate gc. + % +:- pred acquire_temp_slot(slot_contents::in, temp_slot_persistence::in, + lval::out, code_info::in, code_info::out) is det. + + % Release a stack slot acquired earlier for a temporary value. + % The persistence argument should match the acquire operation. + % +:- pred release_temp_slot(lval::in, temp_slot_persistence::in, + code_info::in, code_info::out) is det. + + % acquire_several_temp_slots(Items, Persistence, StackVars, + % StackId, N, M, !Info): + % + % Perform an acquire_temp_slot operation for each element of the + % input list, all with the same persistence. + % + % The slots will be the ones from stack_slot_num_to_lval(StackId, N) + % consecutively to stack_slot_num_to_lval(StackId, M), with N < M. + % These will also be returned as StackVars. + % +:- pred acquire_several_temp_slots(list(slot_contents)::in, + temp_slot_persistence::in, list(lval)::out, + main_stack::out, int::out, int::out, code_info::in, code_info::out) is det. + + % Release the stack slots acquired by an earlier acquire_several_temp_slots + % operation. The persistence argument should match the acquire operation. + % +:- pred release_several_temp_slots(list(lval)::in, temp_slot_persistence::in, + code_info::in, code_info::out) is det. + + % Return the lval of the stack slot in which the given variable is stored. + % Aborts if the variable does not have a stack slot an assigned to it. + % +:- pred get_variable_slot(code_info::in, prog_var::in, lval::out) is det. + +%---------------------------------------------------------------------------% +%---------------------------------------------------------------------------% + +:- implementation. + +acquire_temp_slot(Item, Persistence, StackVar, !CI) :- + get_temp_content_map(!.CI, TempContentMap0), + map.to_assoc_list(TempContentMap0, TempContentList), + get_temps_in_use(!.CI, TempsInUse0), + ( + find_unused_slot_for_item(TempContentList, Item, TempsInUse0, + ChosenStackVar, _) + -> + StackVar = ChosenStackVar + ; + new_temp_slot(Item, StackVar, !CI) + ), + set.insert(StackVar, TempsInUse0, TempsInUse), + set_temps_in_use(TempsInUse, !CI), + ( + Persistence = persistent_temp_slot, + get_persistent_temps(!.CI, PersistentTemps0), + set.insert(StackVar, PersistentTemps0, PersistentTemps), + set_persistent_temps(PersistentTemps, !CI) + ; + Persistence = non_persistent_temp_slot + ). + +acquire_several_temp_slots([], _, _, _, _, _, !CI) :- + % We could return an empty list of stack vars for StackVars, but there is + % nothing meaningful we can return for the other outputs. + unexpected($module, $pred, "[]"). +acquire_several_temp_slots([HeadItem | TailItems], Persistence, StackVars, + StackId, FirstSlotNum, LastSlotNum, !CI) :- + get_temp_content_map(!.CI, TempContentMap0), + map.to_assoc_list(TempContentMap0, TempContentList), + get_temps_in_use(!.CI, TempsInUse0), + ( + find_unused_slots_for_items(TempContentList, HeadItem, TailItems, + TempsInUse0, StackVarsPrime, + StackIdPrime, FirstSlotNumPrime, LastSlotNumPrime) + -> + StackVars = StackVarsPrime, + StackId = StackIdPrime, + FirstSlotNum = FirstSlotNumPrime, + LastSlotNum = LastSlotNumPrime + ; + new_temp_slots([HeadItem | TailItems], StackVars, + StackId, FirstSlotNum, LastSlotNum, !CI) + ), + set.insert_list(StackVars, TempsInUse0, TempsInUse), + set_temps_in_use(TempsInUse, !CI), + ( + Persistence = persistent_temp_slot, + get_persistent_temps(!.CI, PersistentTemps0), + set.insert_list(StackVars, PersistentTemps0, PersistentTemps), + set_persistent_temps(PersistentTemps, !CI) + ; + Persistence = non_persistent_temp_slot + ). + +:- pred new_temp_slot(slot_contents::in, lval::out, + code_info::in, code_info::out) is det. + +new_temp_slot(Item, StackVar, !CI) :- + get_var_slot_count(!.CI, VarSlotCount), + get_max_temp_slot_count(!.CI, TempSlotCount0), + TempSlotCount = TempSlotCount0 + 1, + SlotNum = VarSlotCount + TempSlotCount, + CodeModel = get_proc_model(!.CI), + StackId = code_model_to_main_stack(CodeModel), + StackVar = stack_slot_num_to_lval(StackId, SlotNum), + set_max_temp_slot_count(TempSlotCount, !CI), + + get_temp_content_map(!.CI, TempContentMap0), + map.det_insert(StackVar, Item, TempContentMap0, TempContentMap), + set_temp_content_map(TempContentMap, !CI). + +:- pred new_temp_slots(list(slot_contents)::in, list(lval)::out, + main_stack::out, int::out, int::out, code_info::in, code_info::out) is det. + +new_temp_slots(Items, StackVars, StackId, FirstSlotNum, LastSlotNum, !CI) :- + get_var_slot_count(!.CI, VarSlotCount), + get_max_temp_slot_count(!.CI, TempSlotCount0), + FirstSlotNum = VarSlotCount + TempSlotCount0 + 1, + CodeModel = get_proc_model(!.CI), + StackId = code_model_to_main_stack(CodeModel), + get_temp_content_map(!.CI, TempContentMap0), + record_new_temp_slots(Items, StackId, FirstSlotNum, FirstUnusedSlotNum, + TempSlotCount0, TempSlotCount, TempContentMap0, TempContentMap, + StackVars), + LastSlotNum = FirstUnusedSlotNum - 1, + set_max_temp_slot_count(TempSlotCount, !CI), + set_temp_content_map(TempContentMap, !CI). + +:- pred record_new_temp_slots(list(slot_contents)::in, + main_stack::in, int::in, int::out, int::in, int::out, + map(lval, slot_contents)::in, map(lval, slot_contents)::out, + list(lval)::out) is det. + +record_new_temp_slots([], _, !CurSlotNum, !TempSlotCount, !TempContentMap, []). +record_new_temp_slots([Item | Items], StackId, !CurSlotNum, + !TempSlotCount, !TempContentMap, [StackVar | StackVars]) :- + StackVar = stack_slot_num_to_lval(StackId, !.CurSlotNum), + map.det_insert(StackVar, Item, !TempContentMap), + !:CurSlotNum = !.CurSlotNum + 1, + !:TempSlotCount = !.TempSlotCount + 1, + record_new_temp_slots(Items, StackId, !CurSlotNum, + !TempSlotCount, !TempContentMap, StackVars). + +:- pred find_unused_slot_for_item(assoc_list(lval, slot_contents)::in, + slot_contents::in, set(lval)::in, lval::out, + assoc_list(lval, slot_contents)::out) is semidet. + +find_unused_slot_for_item([Head | Tail], Item, TempsInUse, + ChosenStackVar, Remainder) :- + Head = HeadStackVar - HeadSlotType, + ( + HeadSlotType = Item, + \+ set.member(HeadStackVar, TempsInUse) + -> + ChosenStackVar = HeadStackVar, + Remainder = Tail + ; + find_unused_slot_for_item(Tail, Item, TempsInUse, + ChosenStackVar, Remainder) + ). + +:- pred find_unused_slots_for_items(assoc_list(lval, slot_contents)::in, + slot_contents::in, list(slot_contents)::in, set(lval)::in, list(lval)::out, + main_stack::out, int::out, int::out) is semidet. + +find_unused_slots_for_items([Head | Tail], HeadItem, TailItems, TempsInUse, + ChosenStackVars, StackId, FirstSlotNum, LastSlotNum) :- + ( + find_unused_slot_for_item([Head | Tail], HeadItem, TempsInUse, + ChosenHeadStackVar, Remainder), + ( ChosenHeadStackVar = stackvar(N) -> + StackId0 = det_stack, + FirstSlotNum0 = N + ; ChosenHeadStackVar = framevar(N) -> + StackId0 = nondet_stack, + FirstSlotNum0 = N + ; + unexpected($module, $pred, "not stackvar or framevar") + ), + StackId1 = StackId0, + FirstSlotNum1 = FirstSlotNum0, + find_next_slots_for_items(Remainder, TailItems, TempsInUse, + ChosenTailStackVars, StackId1, FirstSlotNum1, LastSlotNum1) + -> + ChosenStackVars = [ChosenHeadStackVar | ChosenTailStackVars], + StackId = StackId1, + FirstSlotNum = FirstSlotNum1, + LastSlotNum = LastSlotNum1 + ; + find_unused_slots_for_items(Tail, HeadItem, TailItems, TempsInUse, + ChosenStackVars, StackId, FirstSlotNum, LastSlotNum) + ). + +:- pred find_next_slots_for_items(assoc_list(lval, slot_contents)::in, + list(slot_contents)::in, set(lval)::in, list(lval)::out, + main_stack::in, int::in, int::out) is semidet. + +find_next_slots_for_items([], [], _, [], _, !SlotNum). +find_next_slots_for_items([Head | Tail], [HeadItem | TailItems], TempsInUse, + [HeadStackVar | TailStackVars], StackId, !SlotNum) :- + Head = HeadStackVar - HeadSlotType, + !:SlotNum = !.SlotNum + 1, + HeadStackVar = stack_slot_num_to_lval(StackId, !.SlotNum), + HeadSlotType = HeadItem, + \+ set.member(HeadStackVar, TempsInUse), + find_next_slots_for_items(Tail, TailItems, TempsInUse, + TailStackVars, StackId, !SlotNum). + +release_temp_slot(StackVar, Persistence, !CI) :- + get_temps_in_use(!.CI, TempsInUse0), + set.delete(StackVar, TempsInUse0, TempsInUse), + set_temps_in_use(TempsInUse, !CI), + + get_persistent_temps(!.CI, PersistentTemps0), + set.is_member(StackVar, PersistentTemps0, IsInPersistentTemps0), + ( + Persistence = persistent_temp_slot, + expect(unify(IsInPersistentTemps0, yes), + $module, $pred, "released stack slot should be persistent"), + set.delete(StackVar, PersistentTemps0, PersistentTemps), + set_persistent_temps(PersistentTemps, !CI) + ; + Persistence = non_persistent_temp_slot, + expect(unify(IsInPersistentTemps0, no), + $module, $pred, "released stack slot should not be persistent") + ). + +release_several_temp_slots([], _Persistence, !CI). +release_several_temp_slots([StackVar | StackVars], Persistence, !CI) :- + release_temp_slot(StackVar, Persistence, !CI), + release_several_temp_slots(StackVars, Persistence, !CI). + +%---------------------------------------------------------------------------% + +get_variable_slot(CI, Var, Slot) :- + get_stack_slots(CI, StackSlots), + ( map.search(StackSlots, Var, SlotLocn) -> + Slot = stack_slot_to_lval(SlotLocn) + ; + Name = variable_name(CI, Var), + term.var_to_int(Var, Num), + string.int_to_string(Num, NumStr), + Str = "variable `" ++ Name ++ "' " ++ "(" ++ NumStr ++ ") not found", + unexpected($module, $pred, Str) + ). + +get_total_stackslot_count(CI, NumSlots) :- + get_var_slot_count(CI, SlotsForVars), + get_max_temp_slot_count(CI, SlotsForTemps), + NumSlots = SlotsForVars + SlotsForTemps. + +:- pred max_var_slot(stack_slots::in, int::out) is det. + +max_var_slot(StackSlots, SlotCount) :- + map.values(StackSlots, StackSlotList), + max_var_slot_2(StackSlotList, 0, SlotCount). + +:- pred max_var_slot_2(list(stack_slot)::in, int::in, int::out) is det. + +max_var_slot_2([], !Max). +max_var_slot_2([L | Ls], !Max) :- + ( + L = det_slot(N, Width) + ; + L = parent_det_slot(N, Width) + ; + L = nondet_slot(N, Width) + ), + ( + Width = single_width, + int.max(N, !Max) + ; + Width = double_width, + int.max(N + 1, !Max) + ), + max_var_slot_2(Ls, !Max). + +%---------------------------------------------------------------------------% + + % Submodule for debugging the code generator itself. + +:- interface. + + % Should we trace the operation of the code generator. + % +:- pred should_trace_code_gen(code_info::in) is semidet. + +:- type code_info_component + ---> cic_forward_live_vars + ; cic_zombies + ; cic_temps_in_use + ; cic_par_conj_depth. + + % Print the selected parts of the code_info. + % + % If you need to print a part that is not currently selectable, make it + % selectable. + % +:- pred output_code_info(list(code_info_component)::in, code_info::in, + io::di, io::uo) is det. + +:- implementation. + +should_trace_code_gen(CI) :- + code_info.get_pred_id(CI, PredId), + pred_id_to_int(PredId, PredIdInt), + code_info.get_module_info(CI, ModuleInfo), + module_info_get_globals(ModuleInfo, Globals), + globals.lookup_int_option(Globals, debug_code_gen_pred_id, DebugPredIdInt), + PredIdInt = DebugPredIdInt. + +output_code_info(Components, CI, !IO) :- + CI = code_info(Static, LocDep, _Persistent), + VarSet = Static ^ cis_varset, + LocDep = code_info_loc_dep(ForwardLiveVars, _InstMap, Zombies, + _VarLocnInfo, TempsInUse, _FailInfo, ParConjDepth), + ( list.member(cic_forward_live_vars, Components) -> + io.write_string("forward live vars: ", !IO), + mercury_output_vars(VarSet, yes, + set_of_var.to_sorted_list(ForwardLiveVars), !IO), + io.nl(!IO) + ; + true + ), + ( list.member(cic_zombies, Components) -> + io.write_string("zombies: ", !IO), + mercury_output_vars(VarSet, yes, + set_of_var.to_sorted_list(Zombies), !IO), + io.nl(!IO) + ; + true + ), + ( list.member(cic_temps_in_use, Components) -> + io.write_string("temps_in_use: ", !IO), + io.write_string(dump_lvals(no, set.to_sorted_list(TempsInUse)), !IO), + io.nl(!IO) + ; + true + ), + ( list.member(cic_par_conj_depth, Components) -> + io.format("par_conj_depth: %d\n", [i(ParConjDepth)], !IO) + ; + true + ). + +:- pred output_resume_map(prog_varset::in, map(prog_var, set(lval))::in, + io::di, io::uo) is det. + +output_resume_map(VarSet, ResumeMap, !IO) :- + map.to_assoc_list(ResumeMap, ResumeAssocList), + list.foldl(output_resume_map_element(VarSet), ResumeAssocList, !IO). + +:- pred output_resume_map_element(prog_varset::in, + pair(prog_var, set(lval))::in, io::di, io::uo) is det. + +output_resume_map_element(VarSet, Var - LvalSet, !IO) :- + io.write_string(describe_var(VarSet, Var), !IO), + io.write_string(": ", !IO), + Lvals = set.to_sorted_list(LvalSet), + LvalDescs = list.map(dump_lval(no), Lvals), + SpaceLvalDescs = list.map(string.append(" "), LvalDescs), + io.write_string(string.append_list(SpaceLvalDescs), !IO), + io.nl(!IO). + +%---------------------------------------------------------------------------% +:- end_module ll_backend.code_info. +%---------------------------------------------------------------------------% diff --git a/samples/Mercury/expr.moo b/samples/Mercury/expr.moo new file mode 100644 index 00000000..30a140ab --- /dev/null +++ b/samples/Mercury/expr.moo @@ -0,0 +1,72 @@ +:- module expr. + +:- interface. + +:- import_module char, int, list. + +:- type token + ---> ('+') + ; ('-') + ; ('*') + ; ('/') + ; num(int) + ; ('(') + ; (')') + ; eof + . + +:- parse(exprn/1, token, eof, xx, in, out). + +:- pred scan(list(char), list(token)). +:- mode scan(in, out) is det. + +:- implementation. + +:- import_module string, require. + +:- rule exprn(int). +exprn(Num) ---> exprn(A), [+], term(B), { Num = A + B }. +exprn(Num) ---> exprn(A), [-], term(B), { Num = A - B }. +exprn(Num) ---> term(Num). + +:- rule term(int). +term(Num) ---> term(A), [*], factor(B), { Num = A * B }. +term(Num) ---> term(A), [/], factor(B), { Num = A // B }. +term(Num) ---> factor(Num). + +:- rule factor(int). +factor(Num) ---> ['('], exprn(Num), [')']. +factor(Num) ---> [num(Num)]. + +scan(Chars, Toks) :- + scan(Chars, [], Toks0), + list__reverse(Toks0, Toks). + +:- pred scan(list(char), list(token), list(token)). +:- mode scan(in, in, out) is det. + +scan([], Toks, [eof|Toks]). +scan([C|Cs], Toks0, Toks) :- + ( char__is_whitespace(C) -> + scan(Cs, Toks0, Toks) + ; char__is_digit(C) -> + takewhile(char__is_digit, [C|Cs], Digits, Rest), + string__from_char_list(Digits, NumStr), + Num = string__det_to_int(NumStr), + scan(Rest, [num(Num)|Toks0], Toks) + ; C = ('+') -> + scan(Cs, ['+'|Toks0], Toks) + ; C = ('-') -> + scan(Cs, ['-'|Toks0], Toks) + ; C = ('*') -> + scan(Cs, ['*'|Toks0], Toks) + ; C = ('/') -> + scan(Cs, ['/'|Toks0], Toks) + ; C = ('(') -> + scan(Cs, ['('|Toks0], Toks) + ; C = (')') -> + scan(Cs, [')'|Toks0], Toks) + ; + error("expr: syntax error in input") + ). + diff --git a/samples/Mercury/hello.m b/samples/Mercury/hello.m new file mode 100644 index 00000000..c73f65ca --- /dev/null +++ b/samples/Mercury/hello.m @@ -0,0 +1,14 @@ +% "Hello World" in Mercury. + +% This source file is hereby placed in the public domain. -fjh (the author). + +:- module hello. +:- interface. +:- import_module io. + +:- pred main(io::di, io::uo) is det. + +:- implementation. + +main(!IO) :- + io.write_string("Hello, world\n", !IO). diff --git a/samples/Mercury/options.m b/samples/Mercury/options.m new file mode 100644 index 00000000..ceee077c --- /dev/null +++ b/samples/Mercury/options.m @@ -0,0 +1,5884 @@ +%-----------------------------------------------------------------------------% +% vim: ft=mercury ts=4 sw=4 et +%-----------------------------------------------------------------------------% +% Copyright (C) 1994-2012 The University of Melbourne. +% This file may only be copied under the terms of the GNU General +% Public License - see the file COPYING in the Mercury distribution. +%-----------------------------------------------------------------------------% +% +% File: options.m. +% Main author: fjh. +% +% This defines the stuff necessary so that getopt_io.m can parse the +% command-line options. +% +% IMPORTANT NOTE: any changes to the options should be reflected in both the +% help message produced below, and in the Mercury User's Guide +% (../doc/user_guide.texi). +% +%-----------------------------------------------------------------------------% + +:- module libs.options. +:- interface. + +:- import_module char. +:- import_module getopt_io. +:- import_module io. +:- import_module set. + +%-----------------------------------------------------------------------------% + +:- pred short_option(char::in, option::out) is semidet. +:- pred long_option(string::in, option::out) is semidet. +:- pred option_defaults(option::out, option_data::out) is nondet. + + % special_handler(Option, ValueForThatOption, OptionTableIn, + % MaybeOptionTableOut): + % + % This predicate is invoked whenever getopt finds an option + % (long or short) designated as special, with special_data holding + % the argument of the option (if any). The predicate can change the + % option table in arbitrary ways in the course of handling the option, + % or it can return an error message. + % The canonical examples of special options are -O options in + % compilers, which set many other options at once. + % The MaybeOptionTableOut may either be ok(OptionTableOut), or it may + % be error(ErrorString). + % +:- pred special_handler(option::in, special_data::in, option_table::in, + maybe_option_table::out) is semidet. + + % Return the set of options which are inconsequential as far as the + % `--track-flags' option is concerned. That is, adding or removing such + % an option to a module should not force the module to be recompiled. + % +:- pred inconsequential_options(set(option)::out) is det. + +:- pred options_help(io::di, io::uo) is det. + +:- type option_table == option_table(option). +:- type maybe_option_table == maybe_option_table(option). + + % Add a directory to search for Mercury libraries. This + % adds `--search-directory', `--c-include-directory', + % `--erlang-include-directory', + % `--library-directory' and `--init-file-directory' options. + % +:- func option_table_add_mercury_library_directory(option_table, string) + = option_table. + + % Add a directory using all of the + % `--search-directory', `--intermod-directory', + % `--library-directory', `--init-file-directory' and + % `--c-include-directory', `--erlang-include-directory' + % options. + % +:- func option_table_add_search_library_files_directory(option_table, + string) = option_table. + + % Quote an argument to a shell command. + % +:- func quote_arg(string) = string. + + % NOTE: ALL OPTIONS SHOULD BE DOCUMENTED! + % + % Officially supported options should be documented both in the + % help message output by options_help/2, and also in the + % "invocation" chapter of doc/user_guide.texi. + % + % Options which are not officially supported (e.g. those used + % internally by the Mercury implementation, those which are not + % sufficiently useful to be worth mentioning in the User Guide, + % or options for experimental features that are not yet stable + % enough to be officially supported should still be documented. + % The documentation can go either next to the option definition + % here, or as commented-out code in the appropriate subroutine + % of options_help/2. +:- type option + + % Warning options + ---> inhibit_warnings + ; inhibit_accumulator_warnings + ; halt_at_warn + ; halt_at_syntax_errors + ; halt_at_auto_parallel_failure + ; warn_singleton_vars + ; warn_overlapping_scopes + ; warn_det_decls_too_lax + ; warn_inferred_erroneous + ; warn_nothing_exported + ; warn_unused_args + ; warn_interface_imports + ; warn_missing_opt_files + ; warn_missing_trans_opt_files + ; warn_missing_trans_opt_deps + ; warn_non_contiguous_clauses + ; warn_non_contiguous_foreign_procs + ; warn_non_stratification + ; warn_unification_cannot_succeed + ; warn_simple_code + ; warn_duplicate_calls + ; warn_missing_module_name + ; warn_wrong_module_name + ; warn_smart_recompilation + ; warn_undefined_options_variables + ; warn_non_tail_recursion + ; warn_target_code + ; warn_up_to_date + ; warn_stubs + ; warn_dead_procs + ; warn_table_with_inline + ; warn_non_term_special_preds + ; warn_known_bad_format_calls + ; warn_unknown_format_calls + ; warn_obsolete + ; warn_insts_without_matching_type + ; warn_unused_imports + ; inform_ite_instead_of_switch + ; warn_unresolved_polymorphism + ; warn_suspicious_foreign_procs + ; warn_state_var_shadowing + ; inform_inferred + ; inform_inferred_types + ; inform_inferred_modes + + % Verbosity options + ; verbose + ; very_verbose + ; verbose_errors + ; verbose_recompilation + ; find_all_recompilation_reasons + ; verbose_make + ; verbose_commands + ; output_compile_error_lines + ; report_cmd_line_args + ; report_cmd_line_args_in_doterr + ; statistics + ; detailed_statistics + ; proc_size_statistics + ; debug_types + ; debug_modes + ; debug_modes_statistics + ; debug_modes_minimal + ; debug_modes_verbose + ; debug_modes_pred_id + ; debug_dep_par_conj + ; debug_det + ; debug_code_gen_pred_id + ; debug_opt + ; debug_term % term = constraint termination analysis + ; debug_opt_pred_id + ; debug_opt_pred_name + ; debug_pd % pd = partial deduction/deforestation + ; debug_il_asm % il_asm = IL generation via asm + ; debug_liveness + ; debug_stack_opt + ; debug_make + ; debug_closure + ; debug_trail_usage + ; debug_mode_constraints + ; debug_intermodule_analysis + ; debug_mm_tabling_analysis + ; debug_indirect_reuse + ; debug_type_rep + + % Output options + ; make_short_interface + ; make_interface + ; make_private_interface + ; make_optimization_interface + ; make_transitive_opt_interface + ; make_analysis_registry + ; make_xml_documentation + ; generate_source_file_mapping + ; generate_dependency_file + ; generate_dependencies + ; generate_module_order + ; generate_standalone_interface + ; convert_to_mercury + ; typecheck_only + ; errorcheck_only + ; target_code_only + ; compile_only + ; compile_to_shared_lib + ; output_grade_string + ; output_link_command + ; output_shared_lib_link_command + ; output_libgrades + ; output_cc + ; output_c_compiler_type + ; output_csharp_compiler_type + ; output_cflags + ; output_library_link_flags + ; output_grade_defines + ; output_c_include_directory_flags + + % Auxiliary output options + ; smart_recompilation + % Even if this option is set to `yes', smart recompilation may + % have been disabled with io_set_disable_smart_recompilation. + % Before using the value of this option, call + % io_get_disable_smart_recompilation to see whether this + % has been done. + + ; generate_item_version_numbers + % This option is used to control output of version numbers + % in interface files. It is implied by --smart-recompilation, + % and cannot be set explicitly by the user. + + % Even if this option is set to `yes', version numbers may have + % been disabled with io_set_disable_generate_item_version_numbers. + % Before using the value of this option, call + % io_get_disable_generate_item_version_numbers to see whether this + % has been done. + + ; generate_mmc_make_module_dependencies + ; assume_gmake + ; trace_level + ; trace_optimized + ; trace_prof + ; trace_table_io + ; trace_table_io_only_retry + ; trace_table_io_states + ; trace_table_io_require + ; trace_table_io_all + ; trace_goal_flags + ; prof_optimized + ; exec_trace_tail_rec + ; suppress_trace + ; force_disable_tracing + % Force no tracing, even in .debug grades. This is used to turn off + % tracing in the browser directory while still allowing the browser + % library to be linked in with an executable compiled in a .debug + % grade. + ; delay_death + ; delay_death_max_vars + + ; stack_trace_higher_order + ; force_disable_ssdebug + ; generate_bytecode + ; line_numbers + ; auto_comments + ; frameopt_comments + ; max_error_line_width + ; show_dependency_graph + ; imports_graph + ; dump_trace_counts + ; dump_hlds + ; dump_hlds_pred_id + ; dump_hlds_pred_name + ; dump_hlds_alias + ; dump_hlds_options + ; dump_hlds_inst_limit + ; dump_hlds_file_suffix + ; dump_same_hlds + ; dump_mlds + ; verbose_dump_mlds + ; mode_constraints + ; simple_mode_constraints + ; prop_mode_constraints + ; benchmark_modes + ; benchmark_modes_repeat + ; sign_assembly + ; separate_assemblies + + % Language semantics options + ; reorder_conj + ; reorder_disj + ; fully_strict + ; strict_sequential + ; allow_stubs + ; infer_types + ; infer_modes + ; infer_det + ; infer_all + ; type_inference_iteration_limit + ; mode_inference_iteration_limit + ; event_set_file_name + + % Compilation Model options + ; grade + + % Target selection options + ; target + ; il % target il + ; il_only % target il + target_code_only + ; compile_to_c % target c + target_code_only + ; java % target java + ; java_only % target java + target_code_only + ; csharp % target csharp + ; csharp_only % target csharp + target_code_only + % XXX The following options need to be documented. + ; x86_64 % target x86_64 + ; x86_64_only % target x86_64 + target_code_only + ; erlang % target erlang + ; erlang_only % target erlang + target_code_only + + % Compilation model options for optional features: + + % (a) Debugging + % For documentation of the exec_trace and decl_debug options, see the + % documentation for MR_EXEC_TRACE and MR_DECL_DEBUG in + % runtime/mercury_conf_param.h. + ; exec_trace + ; decl_debug + + % (b) Profiling + ; profiling % profile_time + profile_calls + ; time_profiling % profile_time + profile_calls + ; memory_profiling % profile_mem + profile_calls + ; deep_profiling % profile_deep + ; profile_calls + ; profile_time + ; profile_memory + ; profile_deep + ; use_activation_counts + % Use_activation_counts is used to determine which mechanism for + % cycle detection should be used for deep profiling. Actually, + % we only want to use the `yes' value, but we keep support for + % the `no' value for benchmarks for the paper. + + ; pre_prof_transforms_simplify + % Run the simplification pass at before profiling (stage 215) this + % is implied by some of the profiling settings. Specifying this + % option causes this simplification pass to run even when profiling + % is not enabled. + + ; pre_implicit_parallelism_simplify + % Run the simplification pass before the implicit parallelism pass + % to ensure that the HLDS more closely matches the feedback data. + + % Perform coverage profiling, this affects only deep profiling + % grades. + ; coverage_profiling + ; coverage_profiling_via_calls + ; coverage_profiling_static + + % What types of coverage points to instrument the code with. + ; profile_deep_coverage_after_goal + ; profile_deep_coverage_branch_ite + ; profile_deep_coverage_branch_switch + ; profile_deep_coverage_branch_disj + + % Tunables for the coverage profiling pass. + % XXX: Currently both these options are unsupported. + ; profile_deep_coverage_use_portcounts + ; profile_deep_coverage_use_trivial + + % Turn on flags relevant for profiler directed feedback analysis. + % Currently the only feedback analysis is automatic parallelism. + ; profile_for_feedback + + ; use_zeroing_for_ho_cycles + ; use_lots_of_ho_specialization + + % We should always handle tail recursion specially in deep + % profiling; the option is only for benchmarks for the paper, + % except that this is currently broken, and not supported with + % coverage profiling. + ; deep_profile_tail_recursion + ; record_term_sizes_as_words + ; record_term_sizes_as_cells + ; experimental_complexity + + % (c) Miscellaneous + ; gc + ; parallel + ; threadscope + ; use_trail + ; trail_segments + ; use_minimal_model_stack_copy + ; use_minimal_model_own_stacks + ; minimal_model_debug + ; single_prec_float + ; type_layout + ; maybe_thread_safe_opt + ; extend_stacks_when_needed + ; stack_segments + ; use_regions + ; use_alloc_regions + ; use_regions_debug + ; use_regions_profiling + ; source_to_source_debug + ; ssdb_trace_level + ; link_ssdb_libs + + % Data representation compilation model options + ; tags + ; num_tag_bits + ; num_reserved_addresses + ; num_reserved_objects + ; bits_per_word + ; bytes_per_word + % The undocumented conf_low_tag_bits option is used by the `mmc' + % script to pass the default value for num_tag_bits assuming + % --tags low. The reason that `mmc' doesn't just pass a default + % value for --num-tag-bits is that we want to be able to give an + % error message if the user specifies `--tags high' and doesn't + % specify `--num-tag-bits'. + + ; conf_low_tag_bits + ; unboxed_float + ; unboxed_enums + ; unboxed_no_tag_types + ; sync_term_size % in words + + % LLDS back-end compilation model options + ; gcc_non_local_gotos + ; gcc_global_registers + ; asm_labels + ; pic_reg + ; use_float_registers + + % MLDS back-end compilation model options + ; highlevel_code + ; highlevel_data + ; gcc_nested_functions + ; det_copy_out + ; nondet_copy_out + ; put_commit_in_own_func + ; put_nondet_env_on_heap + + % IL back-end compilation model options + ; verifiable_code + ; il_refany_fields + ; il_funcptr_types + ; il_byref_tailcalls + % Currently this is not really a compilation model option, i.e. + % it doesn't affect the ABI. In future it might become one, though + % -- we should return multiple values in value types, rather than + % using byrefs. Also it's nicer to keep it with the other IL + % back-end options here. + + % Options for internal use only (the values of these options are implied + % by the settings of other options) + + ; backend_foreign_languages + % The foreign programming languages that this backend can + % interface to. + + ; stack_trace + % Stack layout information required to do a stack trace. + + ; basic_stack_layout + % Stack layout information required to do accurate GC. + + ; agc_stack_layout + % Stack layout information required to do procedure identification. + + ; procid_stack_layout + % Stack layout information required to do execution tracing. + + ; trace_stack_layout + + ; body_typeinfo_liveness + % Use an alternate calculation of liveness where the typeinfo + % for a type variable must live at any point in the body of the + % procedure at which a live variable's type includes that type + % variable. + % + % Although this option governs whether the body of a procedure + % uses this liveness calculation, it is not the only consideration + % we have to take into account when deciding on the interface + % of any procedure whose address may be taken. We must include + % typeinfos describing the types of all arguments in the interface + % of a procedure if either this option is set *or* the procedure's + % address may be taken, otherwise, the layout structure we include + % in closures using that procedure may not have all the information + % required to reconstruct the types of all the values inside the + % closure. + % + % The only place in the compiler that should look at this option + % is the predicate body_should_use_typeinfo_liveness in + % hlds_pred.m; everything else, including the predicates deciding + % interface typeinfo liveness, should go through there. + + ; can_compare_constants_as_ints + % Should be set to yes if the target back end guarantees that + % comparing two values for equality, at least one of which is a + % constant, can be done by casting them both to integers and + % comparing the integers for equality. + + ; pretest_equality_cast_pointers + % Should be set to yes if the test of whether two input arguments + % are object identical should be done by casting the arguments to a + % generic pointer type. Otherwise they will be cast to integers. + + ; can_compare_compound_values + % Should be set to yes if the target back end supports comparison + % of non-atomic values with builtin operators. + + ; lexically_order_constructors + % Should be set to yes if we need to order functors + % lexically when generating comparison predicates, + % e.g. to match the natural order that functors will be compared + % on the backend. + + ; mutable_always_boxed + + ; delay_partial_instantiations + + % Options for internal use only (setting these options to non-default + % values can result in programs that do not link, or programs that dump + % core) + ; allow_defn_of_builtins + % Do not generate errors for definitions of builtin predicates. + % When a new builtin is introduced, the installed compiler won't + % know about it, and thus when it sees its declaration, it wants a + % definition, but when the modified compiler is bootstrapped, + % it would normally generate an error when it sees that very same + % definition in the library (usually in builtin.m or + % private_builtin.m). When this option is set, it allows such + % definitions. Once the modified compiler is installed on all + % relevant machines, the option can be turned off again. + + ; special_preds + % Generate unify and compare preds. For measurement only. + % Code generated with this set to `no' is unlikely to actually + % work. + + ; type_ctor_info + % Generate type_ctor_info structures. For measurement only -- + % if you turn this off, then you're unlikely to be able to link. + + ; type_ctor_layout + % Generate type_ctor_layout structures. For measurement only -- + % if you turn this off, then you're unlikely to be able to link. + + ; type_ctor_functors + % Generate type_ctor_functors structures. For measurement only -- + % if you turn this off, then you're unlikely to be able to link. + + ; new_type_class_rtti + % XXX temporary option: enables the generation of new style static + % data structures for runtime information about type classes. + % These are not yet used. When we add code to generate the matching + % dynamic data structures and switch over to use them, we won't + % need this option anymore. + + ; rtti_line_numbers + % Generate line number information in the RTTI when debugging is + % enabled. For measurement only -- if you turn this off, then the + % debugger may dereference garbage pointers. + + ; disable_minimal_model_stack_copy_pneg + ; disable_minimal_model_stack_copy_cut + ; use_minimal_model_stack_copy_pneg + ; use_minimal_model_stack_copy_cut + % These four are used to analyze the performance effects + % of minimal model tabling. + + ; disable_trail_ops + % This is used to analyze the performance effects of trailing. + + ; size_region_ite_fixed + ; size_region_disj_fixed + ; size_region_semi_disj_fixed + ; size_region_commit_fixed + + ; size_region_ite_protect + ; size_region_ite_snapshot + ; size_region_semi_disj_protect + ; size_region_disj_snapshot + ; size_region_commit_entry + + ; solver_type_auto_init + % Insert calls to solver type initialisation predicates when + % the inst of solver type variables changes from free to any. + + ; allow_multi_arm_switches + + ; type_check_constraints + + ; allow_argument_packing + + % Code generation options + ; low_level_debug + ; table_debug + ; trad_passes + ; parallel_liveness + ; parallel_code_gen + ; polymorphism + ; reclaim_heap_on_failure + ; reclaim_heap_on_semidet_failure + ; reclaim_heap_on_nondet_failure + ; have_delay_slot + ; num_real_r_regs + ; num_real_f_regs + ; num_real_r_temps + ; num_real_f_temps + ; max_jump_table_size + ; max_specialized_do_call_closure + ; max_specialized_do_call_class_method + ; compare_specialization + ; should_pretest_equality + ; fact_table_max_array_size + % Maximum number of elements in a single fact table data array. + + ; fact_table_hash_percent_full + % How full the fact table hash tables should be allowed to get, + % given as an integer percentage. + + ; gcc_local_labels + ; prefer_switch + ; opt_no_return_calls + + % Optimization Options + ; opt_level + ; opt_level_number + ; opt_space % Default is to optimize time. + ; intermodule_optimization + ; read_opt_files_transitively + ; use_opt_files + ; use_trans_opt_files + ; transitive_optimization + ; intermodule_analysis + ; analysis_repeat + ; analysis_file_cache + + % - HLDS + ; allow_inlining + ; inlining + ; inline_simple + ; inline_builtins + ; inline_single_use + ; inline_call_cost + ; inline_compound_threshold + ; inline_simple_threshold + ; inline_vars_threshold + ; intermod_inline_simple_threshold + ; from_ground_term_threshold + ; enable_const_struct + ; common_struct + ; common_struct_preds + ; common_goal + ; constraint_propagation + ; local_constraint_propagation + ; optimize_unused_args + ; intermod_unused_args + ; optimize_higher_order + ; higher_order_size_limit + ; higher_order_arg_limit + ; unneeded_code + ; unneeded_code_copy_limit + ; unneeded_code_debug + ; unneeded_code_debug_pred_name + ; type_specialization + ; user_guided_type_specialization + ; introduce_accumulators + ; optimize_constructor_last_call_accumulator + ; optimize_constructor_last_call_null + ; optimize_constructor_last_call + ; optimize_duplicate_calls + ; constant_propagation + ; excess_assign + ; optimize_format_calls + ; optimize_saved_vars_const + ; optimize_saved_vars_cell + ; optimize_saved_vars_cell_loop + ; optimize_saved_vars_cell_full_path + ; optimize_saved_vars_cell_on_stack + ; optimize_saved_vars_cell_candidate_headvars + ; optimize_saved_vars_cell_cv_store_cost + ; optimize_saved_vars_cell_cv_load_cost + ; optimize_saved_vars_cell_fv_store_cost + ; optimize_saved_vars_cell_fv_load_cost + ; optimize_saved_vars_cell_op_ratio + ; optimize_saved_vars_cell_node_ratio + ; optimize_saved_vars_cell_all_path_node_ratio + ; optimize_saved_vars_cell_include_all_candidates + ; optimize_saved_vars + ; loop_invariants + ; delay_construct + ; follow_code + ; optimize_dead_procs + ; deforestation + ; deforestation_depth_limit + ; deforestation_cost_factor + ; deforestation_vars_threshold + ; deforestation_size_threshold + ; analyse_trail_usage + ; optimize_trail_usage + ; optimize_region_ops + ; analyse_mm_tabling + ; untuple + ; tuple + ; tuple_trace_counts_file + ; tuple_costs_ratio + ; tuple_min_args + ; inline_par_builtins + ; always_specialize_in_dep_par_conjs + ; allow_some_paths_only_waits + ; region_analysis + + % Stuff for the CTGC system (structure sharing / structure reuse). + ; structure_sharing_analysis + ; structure_sharing_widening + ; structure_reuse_analysis + ; structure_reuse_constraint + ; structure_reuse_constraint_arg + ; structure_reuse_max_conditions + ; structure_reuse_repeat + ; structure_reuse_free_cells + + % Stuff for the old termination analyser. + ; termination + ; termination_check + ; verbose_check_termination + ; termination_single_args + ; termination_norm + ; termination_error_limit + ; termination_path_limit + + % Stuff for the new termination analyser. + ; termination2 + ; check_termination2 + ; verbose_check_termination2 + ; termination2_norm + ; widening_limit + ; arg_size_analysis_only + ; propagate_failure_constrs + ; term2_maximum_matrix_size + ; analyse_exceptions + ; analyse_closures + + % - HLDS->LLDS + ; smart_indexing + ; dense_switch_req_density + ; lookup_switch_req_density + ; dense_switch_size + ; lookup_switch_size + ; string_hash_switch_size + ; string_binary_switch_size + ; tag_switch_size + ; try_switch_size + ; binary_switch_size + ; switch_single_rec_base_first + ; switch_multi_rec_base_first + + ; static_ground_cells + ; static_ground_floats + ; static_code_addresses + + ; use_atomic_cells + ; middle_rec + ; simple_neg + ; allow_hijacks + + % - MLDS + ; optimize_tailcalls + ; optimize_initializations + ; eliminate_local_vars + ; generate_trail_ops_inline + + % - LLDS + ; common_data + ; common_layout_data + ; optimize % Also used for MLDS->MLDS optimizations. + ; optimize_peep + ; optimize_peep_mkword + ; optimize_jumps + ; optimize_fulljumps + ; pessimize_tailcalls + ; checked_nondet_tailcalls + ; use_local_vars + ; local_var_access_threshold + ; standardize_labels + ; optimize_labels + ; optimize_dups + ; optimize_proc_dups + ; optimize_frames + ; optimize_delay_slot + ; optimize_reassign + ; optimize_repeat + ; layout_compression_limit + + % - C + ; use_macro_for_redo_fail + ; emit_c_loops + ; procs_per_c_function + ; everything_in_one_c_function + ; local_thread_engine_base + + % - IL + % (none yet) + + % - Erlang + ; erlang_switch_on_strings_as_atoms + + % Target code compilation options + ; target_debug + + % C + ; cc + ; cflags + ; quoted_cflag + ; c_include_directory + ; c_optimize + ; ansi_c + ; inline_alloc + + % Flags for specific C compilers. + ; gcc_flags + ; quoted_gcc_flag + ; clang_flags + ; quoted_clang_flag + ; msvc_flags + ; quoted_msvc_flag + + % Auto-configured C compilation options. + ; cflags_for_warnings + ; cflags_for_optimization + ; cflags_for_ansi + ; cflags_for_regs + ; cflags_for_gotos + ; cflags_for_threads + ; cflags_for_debug + ; cflags_for_pic + ; c_flag_to_name_object_file + ; object_file_extension + ; pic_object_file_extension + ; link_with_pic_object_file_extension + ; c_compiler_type + ; csharp_compiler_type + + % Java + ; java_compiler + ; java_interpreter + ; java_flags + ; quoted_java_flag + ; java_classpath + ; java_object_file_extension + + % IL + ; il_assembler + ; ilasm_flags + ; quoted_ilasm_flag + ; dotnet_library_version + ; support_ms_clr + ; support_rotor_clr + + % C# + ; csharp_compiler + ; csharp_flags + ; quoted_csharp_flag + ; cli_interpreter + + % Erlang + ; erlang_compiler + ; erlang_interpreter + ; erlang_flags + ; quoted_erlang_flag + ; erlang_include_directory + ; erlang_object_file_extension + ; erlang_native_code + ; erlang_inhibit_trivial_warnings + + % Link options + ; output_file_name + ; ld_flags + ; quoted_ld_flag + ; ld_libflags + ; quoted_ld_libflag + ; link_library_directories + ; runtime_link_library_directories + ; link_libraries + ; link_objects + ; mercury_library_directories + ; mercury_library_directory_special + ; search_library_files_directories + ; search_library_files_directory_special + ; mercury_libraries + ; mercury_library_special + ; mercury_standard_library_directory + ; mercury_standard_library_directory_special + ; init_file_directories + ; init_files + ; trace_init_files + ; linkage + ; linkage_special + ; mercury_linkage + ; mercury_linkage_special + ; strip + ; demangle + ; main + ; allow_undefined + ; use_readline + ; runtime_flags + ; extra_initialization_functions + ; frameworks + ; framework_directories + + % Auto-configured options. + ; shared_library_extension + ; library_extension + ; executable_file_extension + ; link_executable_command + ; link_shared_lib_command + ; create_archive_command + ; create_archive_command_output_flag + ; create_archive_command_flags + ; ranlib_command + ; ranlib_flags + ; mkinit_command + ; mkinit_erl_command + ; demangle_command + ; filtercc_command + ; trace_libs + ; thread_libs + ; hwloc_libs + ; hwloc_static_libs + ; shared_libs + ; math_lib + ; readline_libs + ; linker_opt_separator + ; linker_thread_flags + ; shlib_linker_thread_flags + ; linker_static_flags + ; linker_strip_flag + ; linker_link_lib_flag + ; linker_link_lib_suffix + ; shlib_linker_link_lib_flag + ; shlib_linker_link_lib_suffix + ; linker_debug_flags + ; shlib_linker_debug_flags + ; linker_trace_flags + ; shlib_linker_trace_flags + ; linker_path_flag + ; linker_rpath_flag + ; linker_rpath_separator + ; shlib_linker_rpath_flag + ; shlib_linker_rpath_separator + ; linker_allow_undefined_flag + ; linker_error_undefined_flag + ; shlib_linker_use_install_name + ; shlib_linker_install_name_flag + ; shlib_linker_install_name_path + ; java_archive_command + + % Build system options + ; make + ; keep_going + ; rebuild + ; jobs + ; track_flags + ; invoked_by_mmc_make + ; extra_init_command + ; pre_link_command + ; install_prefix + ; use_symlinks + ; mercury_configuration_directory + ; mercury_configuration_directory_special + ; install_command + ; install_command_dir_option + ; libgrades + ; libgrades_include_components + ; libgrades_exclude_components + ; lib_linkages + ; flags_file + ; options_files + ; config_file + ; options_search_directories + ; use_subdirs + ; use_grade_subdirs + ; search_directories + ; intermod_directories + ; use_search_directories_for_intermod + ; libgrade_install_check + ; order_make_by_timestamp + ; show_make_times + ; extra_library_header + ; restricted_command_line + ; env_type + ; host_env_type + ; target_env_type + + % Miscellaneous Options + ; filenames_from_stdin + ; typecheck_ambiguity_warn_limit + ; typecheck_ambiguity_error_limit + ; help + ; version + ; fullarch + ; cross_compiling + ; local_module_id + ; analysis_file_cache_dir + ; compiler_sufficiently_recent + % This option is used to test that the compiler is sufficiently + % recent when no other test can easily be constructed in + % configure.in. + + ; experiment + % This option is provided for use by implementors who want to + % compare a new way of doing something with the old way. The idea + % is that the code that switches between the two ways should + % consult this option and make its decision accordingly. + % + % The intention is that all use of this option is within developer + % workspaces; no code using this option should be committed. + % + % Of course, a developer could always create a purpose-specific + % option to control their code, but adding an option requires + % recompiling most of the modules in the compiler. Having this + % option permanently here should reduce the need for that. + + ; ignore_par_conjunctions + ; control_granularity + ; distance_granularity + ; implicit_parallelism + ; feedback_file + ; par_loop_control + ; par_loop_control_preserve_tail_recursion. + +%----------------------------------------------------------------------------% +%----------------------------------------------------------------------------% + +:- implementation. + +:- import_module libs.handle_options. + +:- import_module assoc_list. +:- import_module bool. +:- import_module dir. +:- import_module int. +:- import_module list. +:- import_module map. +:- import_module maybe. +:- import_module pair. +:- import_module require. +:- import_module string. + +%----------------------------------------------------------------------------% + +:- type option_category + ---> warning_option + ; verbosity_option + ; output_option + ; aux_output_option + ; language_semantics_option + ; compilation_model_option + ; internal_use_option + ; code_gen_option + ; special_optimization_option + ; optimization_option + ; target_code_compilation_option + ; link_option + ; build_system_option + ; miscellaneous_option. + +option_defaults(Option, Default) :- + option_defaults_2(_Category, OptionsList), + list.member(Option - Default, OptionsList). + +:- pred option_defaults_2(option_category, list(pair(option, option_data))). +:- mode option_defaults_2(in, out) is det. +:- mode option_defaults_2(out, out) is multi. + +option_defaults_2(warning_option, [ + % Warning Options + inhibit_warnings - bool_special, + inhibit_accumulator_warnings - bool(no), + halt_at_warn - bool(no), + halt_at_syntax_errors - bool(no), + halt_at_auto_parallel_failure - bool(no), + + % IMPORTANT NOTE: + % if you add any new warning options, or if you change the default + % for an existing warning option to `yes', then you will need to modify + % the handling of inhibit_warnings. + + warn_singleton_vars - bool(yes), + warn_overlapping_scopes - bool(yes), + warn_det_decls_too_lax - bool(yes), + warn_inferred_erroneous - bool(yes), + warn_nothing_exported - bool(yes), + warn_unused_args - bool(no), + warn_interface_imports - bool(yes), + warn_non_contiguous_clauses - bool(no), % XXX should be yes + warn_non_contiguous_foreign_procs - bool(no), + warn_non_stratification - bool(no), + warn_missing_opt_files - bool(yes), + warn_missing_trans_opt_files - bool(no), + warn_missing_trans_opt_deps - bool(yes), + warn_unification_cannot_succeed - bool(yes), + warn_simple_code - bool(yes), + warn_duplicate_calls - bool(no), + warn_missing_module_name - bool(yes), + warn_wrong_module_name - bool(yes), + warn_smart_recompilation - bool(yes), + warn_undefined_options_variables - bool(yes), + warn_non_tail_recursion - bool(no), + warn_target_code - bool(yes), + warn_up_to_date - bool(yes), + warn_stubs - bool(yes), + warn_dead_procs - bool(no), + warn_table_with_inline - bool(yes), + warn_non_term_special_preds - bool(yes), + warn_known_bad_format_calls - bool(yes), + warn_unknown_format_calls - bool(no), + warn_obsolete - bool(yes), + warn_insts_without_matching_type - bool(yes), + % XXX disabled by default until someone + % removes all the unused imports from + % the compiler itself which is compiled + % with --halt-at-warn by default. + warn_unused_imports - bool(no), + inform_ite_instead_of_switch - bool(no), + warn_unresolved_polymorphism - bool(yes), + warn_suspicious_foreign_procs - bool(no), + warn_state_var_shadowing - bool(yes), + inform_inferred - bool_special, + inform_inferred_types - bool(yes), + inform_inferred_modes - bool(yes) +]). +option_defaults_2(verbosity_option, [ + % Verbosity Options + verbose - bool(no), + very_verbose - bool(no), + verbose_errors - bool(no), + verbose_recompilation - bool(no), + find_all_recompilation_reasons - bool(no), + verbose_make - bool(yes), + verbose_commands - bool(no), + output_compile_error_lines - int(15), + report_cmd_line_args - bool(no), + report_cmd_line_args_in_doterr - bool(no), + statistics - bool(no), + detailed_statistics - bool(no), + proc_size_statistics - string(""), + debug_types - bool(no), + debug_modes - bool(no), + debug_modes_statistics - bool(no), + debug_modes_minimal - bool(no), + debug_modes_verbose - bool(no), + debug_modes_pred_id - int(-1), + debug_dep_par_conj - accumulating([]), + debug_det - bool(no), + debug_code_gen_pred_id - int(-1), + debug_term - bool(no), + debug_opt - bool(no), + debug_opt_pred_id - accumulating([]), + debug_opt_pred_name - accumulating([]), + debug_pd - bool(no), + debug_il_asm - bool(no), + debug_liveness - int(-1), + debug_stack_opt - int(-1), + debug_make - bool(no), + debug_closure - bool(no), + debug_trail_usage - bool(no), + debug_mode_constraints - bool(no), + debug_intermodule_analysis - bool(no), + debug_mm_tabling_analysis - bool(no), + debug_indirect_reuse - bool(no), + debug_type_rep - bool(no) +]). +option_defaults_2(output_option, [ + % Output Options (mutually exclusive) + generate_source_file_mapping - bool(no), + generate_dependency_file - bool(no), + generate_dependencies - bool(no), + generate_module_order - bool(no), + generate_standalone_interface - maybe_string(no), + make_short_interface - bool(no), + make_interface - bool(no), + make_private_interface - bool(no), + make_optimization_interface - bool(no), + make_transitive_opt_interface - bool(no), + make_analysis_registry - bool(no), + make_xml_documentation - bool(no), + convert_to_mercury - bool(no), + typecheck_only - bool(no), + errorcheck_only - bool(no), + target_code_only - bool(no), + compile_only - bool(no), + compile_to_shared_lib - bool(no), + output_grade_string - bool(no), + output_link_command - bool(no), + output_shared_lib_link_command - bool(no), + output_libgrades - bool(no), + output_cc - bool(no), + output_c_compiler_type - bool(no), + output_csharp_compiler_type - bool(no), + output_cflags - bool(no), + output_library_link_flags - bool(no), + output_grade_defines - bool(no), + output_c_include_directory_flags - bool(no) +]). +option_defaults_2(aux_output_option, [ + % Auxiliary Output Options + smart_recompilation - bool(no), + generate_item_version_numbers - bool(no), + generate_mmc_make_module_dependencies - bool(no), + assume_gmake - bool(yes), + trace_level - string("default"), + trace_optimized - bool(no), + trace_prof - bool(no), + trace_table_io - bool(no), + trace_table_io_only_retry - bool(no), + trace_table_io_states - bool(no), + trace_table_io_require - bool(no), + trace_table_io_all - bool(no), + trace_goal_flags - accumulating([]), + prof_optimized - bool(no), + exec_trace_tail_rec - bool(no), + suppress_trace - string(""), + force_disable_tracing - bool(no), + delay_death - bool(yes), + delay_death_max_vars - int(1000), + stack_trace_higher_order - bool(no), + force_disable_ssdebug - bool(no), + generate_bytecode - bool(no), + line_numbers - bool(yes), + auto_comments - bool(no), + frameopt_comments - bool(no), + max_error_line_width - int(79), + show_dependency_graph - bool(no), + imports_graph - bool(no), + dump_trace_counts - accumulating([]), + dump_hlds - accumulating([]), + dump_hlds_pred_id - accumulating([]), + dump_hlds_pred_name - accumulating([]), + dump_hlds_alias - string(""), + dump_hlds_options - string(""), + dump_hlds_inst_limit - int(100), + dump_hlds_file_suffix - string(""), + dump_same_hlds - bool(no), + dump_mlds - accumulating([]), + verbose_dump_mlds - accumulating([]), + mode_constraints - bool(no), + simple_mode_constraints - bool(no), + prop_mode_constraints - bool(no), + benchmark_modes - bool(no), + benchmark_modes_repeat - int(1), + sign_assembly - bool(no), + % XXX should default to no but currently broken + separate_assemblies - bool(yes) +]). +option_defaults_2(language_semantics_option, [ + strict_sequential - special, + reorder_conj - bool(yes), + reorder_disj - bool(yes), + fully_strict - bool(yes), + allow_stubs - bool(no), + infer_types - bool(no), + infer_modes - bool(no), + infer_det - bool(yes), + infer_all - bool_special, + type_inference_iteration_limit - int(60), + mode_inference_iteration_limit - int(30), + event_set_file_name - string("") +]). +option_defaults_2(compilation_model_option, [ + % Compilation model options (ones that affect binary compatibility). + grade - string_special, + % The `mmc' script will pass the default grade determined + % at configuration time. + + % Target selection compilation model options + target - string("c"), + il - special, + il_only - special, + compile_to_c - special, + csharp - special, + csharp_only - special, + java - special, + java_only - special, + x86_64 - special, + x86_64_only - special, + erlang - special, + erlang_only - special, + + % Optional feature compilation model options: + % (a) Debuggging + exec_trace - bool(no), + decl_debug - bool(no), + % (b) Profiling + profiling - bool_special, + time_profiling - special, + memory_profiling - special, + deep_profiling - special, + profile_calls - bool(no), + profile_time - bool(no), + profile_memory - bool(no), + profile_deep - bool(no), + use_activation_counts - bool(no), + pre_prof_transforms_simplify - bool(no), + pre_implicit_parallelism_simplify - bool(no), + coverage_profiling - bool(yes), + coverage_profiling_via_calls - bool(no), + coverage_profiling_static - bool(no), + profile_deep_coverage_after_goal - bool(yes), + profile_deep_coverage_branch_ite - bool(yes), + profile_deep_coverage_branch_switch - bool(yes), + profile_deep_coverage_branch_disj - bool(yes), + profile_deep_coverage_use_portcounts - bool(no), + profile_deep_coverage_use_trivial - bool(no), + profile_for_feedback - bool(no), + use_zeroing_for_ho_cycles - bool(yes), + use_lots_of_ho_specialization - bool(no), + deep_profile_tail_recursion - bool(no), + record_term_sizes_as_words - bool(no), + record_term_sizes_as_cells - bool(no), + experimental_complexity - string(""), + % (c) Miscellaneous optional features + gc - string("boehm"), + parallel - bool(no), + threadscope - bool(no), + use_trail - bool(no), + trail_segments - bool(no), + maybe_thread_safe_opt - string("no"), + extend_stacks_when_needed - bool(no), + stack_segments - bool(no), + use_regions - bool(no), + use_alloc_regions - bool(yes), + use_regions_debug - bool(no), + use_regions_profiling - bool(no), + use_minimal_model_stack_copy - bool(no), + use_minimal_model_own_stacks - bool(no), + minimal_model_debug - bool(no), + single_prec_float - bool(no), + type_layout - bool(yes), + source_to_source_debug - bool(no), + ssdb_trace_level - string("default"), + link_ssdb_libs - bool(no), + + % Data representation compilation model options + pic_reg - bool(no), + tags - string("low"), + num_tag_bits - int(-1), + % -1 is a special value which means + % use the value of conf_low_tag_bits + % instead + num_reserved_addresses - int(0), + num_reserved_objects - int(0), + bits_per_word - int(32), + % A good default for the current + % generation of architectures. + bytes_per_word - int(4), + % A good default for the current + % generation of architectures. + conf_low_tag_bits - int(2), + % The `mmc' script will override the + % above default with a value determined + % at configuration time. + sync_term_size - int(8), + % 8 is the size on linux (at the time + % of writing) - will usually be + % overridden by a value from configure. + unboxed_float - bool(no), + unboxed_enums - bool(yes), + unboxed_no_tag_types - bool(yes), + + % LLDS back-end compilation model options + gcc_non_local_gotos - bool(yes), + gcc_global_registers - bool(yes), + asm_labels - bool(yes), + use_float_registers - bool(yes), + + % MLDS back-end compilation model options + highlevel_code - bool(no), + highlevel_data - bool(no), + gcc_nested_functions - bool(no), + det_copy_out - bool(no), + nondet_copy_out - bool(no), + put_commit_in_own_func - bool(no), + put_nondet_env_on_heap - bool(no), + + % IL back-end compilation model options + verifiable_code - bool(no), + il_funcptr_types - bool(no), + il_refany_fields - bool(no), + il_byref_tailcalls - bool(no) +]). +option_defaults_2(internal_use_option, [ + % Options for internal use only + backend_foreign_languages - accumulating([]), + % The backend_foreign_languages option + % depends on the target and is set in + % handle_options. + stack_trace - bool(no), + basic_stack_layout - bool(no), + agc_stack_layout - bool(no), + procid_stack_layout - bool(no), + trace_stack_layout - bool(no), + body_typeinfo_liveness - bool(no), + can_compare_constants_as_ints - bool(no), + pretest_equality_cast_pointers - bool(no), + can_compare_compound_values - bool(no), + lexically_order_constructors - bool(no), + mutable_always_boxed - bool(yes), + delay_partial_instantiations - bool(no), + allow_defn_of_builtins - bool(no), + special_preds - bool(yes), + type_ctor_info - bool(yes), + type_ctor_layout - bool(yes), + type_ctor_functors - bool(yes), + rtti_line_numbers - bool(yes), + new_type_class_rtti - bool(no), + disable_minimal_model_stack_copy_pneg - bool(no), + disable_minimal_model_stack_copy_cut - bool(no), + use_minimal_model_stack_copy_pneg - bool(no), + use_minimal_model_stack_copy_cut - bool(no), + disable_trail_ops - bool(no), + % The size_* values below *must* be consistent with the corresponding + % values or data structures in mercury_region.h. + size_region_ite_fixed - int(4), + size_region_disj_fixed - int(4), + size_region_commit_fixed - int(5), + size_region_ite_protect - int(1), + size_region_ite_snapshot - int(3), + size_region_semi_disj_protect - int(1), + size_region_disj_snapshot - int(3), + size_region_commit_entry - int(1), + solver_type_auto_init - bool(no), + allow_multi_arm_switches - bool(yes), + type_check_constraints - bool(no), + allow_argument_packing - bool(yes) +]). +option_defaults_2(code_gen_option, [ + % Code Generation Options + low_level_debug - bool(no), + table_debug - bool(no), + trad_passes - bool(yes), + parallel_liveness - bool(no), + parallel_code_gen - bool(no), + polymorphism - bool(yes), + reclaim_heap_on_failure - bool_special, + reclaim_heap_on_semidet_failure - bool(yes), + reclaim_heap_on_nondet_failure - bool(yes), + have_delay_slot - bool(no), + % The `mmc' script may override the + % above default if configure says + % the machine has branch delay slots. + num_real_r_regs - int(5), + num_real_f_regs - int(0), + num_real_r_temps - int(5), + num_real_f_temps - int(0), + % The `mmc' script will override the + % above defaults with values determined + % at configuration time. + max_jump_table_size - int(0), + % 0 indicates any size. + max_specialized_do_call_closure - int(5), + % mercury.do_call_closure_N + % exists for N <= option_value; + % set to -1 to disable. + % Should be less than or equal to + % max_spec_explicit_arg + % in tools/make_spec_ho_call. + max_specialized_do_call_class_method - int(6), + % mercury.do_call_class_method_N + % exists for N <= option_value; + % set to -1 to disable. + % Should be less than or equal to + % max_spec_explicit_arg + % in tools/make_spec_method_call. + compare_specialization - int(-1), + % -1 asks handle_options.m to give + % the value, which may be grade + % dependent. + should_pretest_equality - bool(yes), + fact_table_max_array_size - int(1024), + fact_table_hash_percent_full - int(90), + gcc_local_labels - bool(no), + prefer_switch - bool(yes), + opt_no_return_calls - bool(yes) +]). +option_defaults_2(special_optimization_option, [ + % Special optimization options. + % These ones are not affected by `-O'. + opt_level - int_special, + opt_level_number - int(-2), + opt_space - special, + intermodule_optimization - bool(no), + read_opt_files_transitively - bool(yes), + use_opt_files - bool(no), + use_trans_opt_files - bool(no), + transitive_optimization - bool(no), + intermodule_analysis - bool(no), + analysis_repeat - int(0), + analysis_file_cache - bool(no), + termination_check - bool(no), + verbose_check_termination - bool(no), + structure_sharing_analysis - bool(no), + structure_sharing_widening - int(0), + structure_reuse_analysis - bool(no), + structure_reuse_constraint - string("within_n_cells_difference"), + structure_reuse_constraint_arg - int(0), + structure_reuse_max_conditions - int(10), + structure_reuse_repeat - int(0), + structure_reuse_free_cells - bool(no), + termination - bool(no), + termination_single_args - int(0), + termination_norm - string("total"), + termination_error_limit - int(3), + termination_path_limit - int(256), + termination2 - bool(no), + termination2_norm - string("total"), + check_termination2 - bool(no), + verbose_check_termination2 - bool(no), + widening_limit - int(4), + arg_size_analysis_only - bool(no), + propagate_failure_constrs - bool(yes), + % XXX This is just a guess - I'm not sure what sensible + % value for this is. + term2_maximum_matrix_size - int(70), + analyse_exceptions - bool(no), + analyse_closures - bool(no), + analyse_trail_usage - bool(no), + optimize_trail_usage - bool(no), + optimize_region_ops - bool(no), + analyse_mm_tabling - bool(no) +]). +option_defaults_2(optimization_option, [ + % Optimization options + % + % IMPORTANT: the default here should be all optimizations OFF. + % Optimizations should be enabled by the appropriate + % optimization level in the opt_level table. + + % HLDS + allow_inlining - bool(yes), + inlining - bool_special, + inline_simple - bool(no), + inline_builtins - bool(yes), + inline_single_use - bool(no), + inline_call_cost - int(0), + inline_compound_threshold - int(0), + inline_simple_threshold - int(5), + % Has no effect until + % --inline-simple is enabled. + inline_vars_threshold - int(100), + intermod_inline_simple_threshold - int(5), + % Has no effect until + % --intermodule-optimization. + from_ground_term_threshold - int(5), + enable_const_struct - bool(yes), + common_struct - bool(no), + common_struct_preds - string(""), + common_goal - bool(yes), + % common_goal is not really an + % optimization, since it affects + % the semantics. + + constraint_propagation - bool(no), + local_constraint_propagation - bool(no), + optimize_duplicate_calls - bool(no), + constant_propagation - bool(no), + excess_assign - bool(no), + optimize_format_calls - bool(yes), + loop_invariants - bool(no), + optimize_saved_vars_const - bool(no), + optimize_saved_vars_cell - bool(no), + optimize_saved_vars_cell_loop - bool(yes), + optimize_saved_vars_cell_full_path - bool(yes), + optimize_saved_vars_cell_on_stack - bool(yes), + optimize_saved_vars_cell_candidate_headvars - bool(yes), + optimize_saved_vars_cell_cv_store_cost - int(3), + optimize_saved_vars_cell_cv_load_cost - int(1), + optimize_saved_vars_cell_fv_store_cost - int(1), + optimize_saved_vars_cell_fv_load_cost - int(1), + optimize_saved_vars_cell_op_ratio - int(100), + optimize_saved_vars_cell_node_ratio - int(100), + optimize_saved_vars_cell_all_path_node_ratio - int(100), + optimize_saved_vars_cell_include_all_candidates - bool(yes), + optimize_saved_vars - bool_special, + delay_construct - bool(no), + follow_code - bool(no), + optimize_unused_args - bool(no), + intermod_unused_args - bool(no), + optimize_higher_order - bool(no), + higher_order_size_limit - int(20), + higher_order_arg_limit - int(10), + unneeded_code - bool(no), + unneeded_code_copy_limit - int(10), + unneeded_code_debug - bool(no), + unneeded_code_debug_pred_name - accumulating([]), + type_specialization - bool(no), + user_guided_type_specialization - bool(no), + introduce_accumulators - bool(no), + optimize_constructor_last_call_accumulator - bool(no), + optimize_constructor_last_call_null - bool(no), + optimize_constructor_last_call - bool(no), + optimize_dead_procs - bool(no), + deforestation - bool(no), + deforestation_depth_limit - int(4), + deforestation_cost_factor - int(1000), + deforestation_vars_threshold - int(200), + deforestation_size_threshold - int(15), + untuple - bool(no), + tuple - bool(no), + tuple_trace_counts_file - string(""), + tuple_costs_ratio - int(100), + tuple_min_args - int(4), + inline_par_builtins - bool(no), + always_specialize_in_dep_par_conjs - bool(no), + allow_some_paths_only_waits - bool(yes), + region_analysis - bool(no), + + % HLDS -> LLDS + smart_indexing - bool(no), + dense_switch_req_density - int(25), + % Minimum density before using + % a dense switch. + lookup_switch_req_density - int(25), + % Minimum density before using + % a lookup switch. + dense_switch_size - int(4), + lookup_switch_size - int(4), + string_hash_switch_size - int(8), + string_binary_switch_size - int(4), + tag_switch_size - int(3), + try_switch_size - int(3), + binary_switch_size - int(4), + switch_single_rec_base_first - bool(no), + switch_multi_rec_base_first - bool(yes), + static_ground_cells - bool(no), + static_ground_floats - bool(no), + static_code_addresses - bool(no), + use_atomic_cells - bool(no), + middle_rec - bool(no), + simple_neg - bool(no), + allow_hijacks - bool(yes), + + % MLDS + optimize_tailcalls - bool(no), + optimize_initializations - bool(no), + eliminate_local_vars - bool(no), + generate_trail_ops_inline - bool(yes), + + % LLDS + common_data - bool(no), + common_layout_data - bool(yes), + optimize - bool(no), + optimize_peep - bool(no), + optimize_peep_mkword - bool(no), + optimize_jumps - bool(no), + optimize_fulljumps - bool(no), + pessimize_tailcalls - bool(no), + checked_nondet_tailcalls - bool(no), + use_local_vars - bool(no), + local_var_access_threshold - int(2), + standardize_labels - bool(no), + optimize_labels - bool(no), + optimize_dups - bool(no), + optimize_proc_dups - bool(no), + optimize_frames - bool(no), + optimize_delay_slot - bool(no), + optimize_reassign - bool(no), + optimize_repeat - int(0), + layout_compression_limit - int(4000), + + % LLDS -> C + use_macro_for_redo_fail - bool(no), + emit_c_loops - bool(no), + procs_per_c_function - int(1), + everything_in_one_c_function - special, + local_thread_engine_base - bool(yes), + + % Erlang + erlang_switch_on_strings_as_atoms - bool(no) +]). +option_defaults_2(target_code_compilation_option, [ + % Target code compilation options + target_debug - bool(no), + + % C + cc - string("gcc"), + % The `mmc' script will override the + % default with a value determined at + % configuration time. + c_include_directory - accumulating([]), + % The `mmc' script will override the + % default with a value determined at + % configuration time. + c_optimize - bool(no), + ansi_c - bool(yes), + inline_alloc - bool(no), + cflags - accumulating([]), + quoted_cflag - string_special, + + gcc_flags - accumulating([]), + quoted_gcc_flag - string_special, + clang_flags - accumulating([]), + quoted_clang_flag - string_special, + msvc_flags - accumulating([]), + quoted_msvc_flag - string_special, + + cflags_for_warnings - string(""), + % The `mmc' script will override the + % default with values determined at + % configuration time. + cflags_for_optimization - string("-O"), + cflags_for_ansi - string(""), + cflags_for_regs - string(""), + cflags_for_gotos - string(""), + cflags_for_threads - string(""), + cflags_for_debug - string("-g"), + cflags_for_pic - string(""), + c_flag_to_name_object_file - string("-o "), + object_file_extension - string(".o"), + pic_object_file_extension - string(".o"), + link_with_pic_object_file_extension - string(".o"), + c_compiler_type - string("gcc"), + csharp_compiler_type - string("mono"), + % The `mmc' script will override the + % default with a value determined at + % configuration time for the above + % two options + % Java + java_compiler - string("javac"), + java_interpreter - string("java"), + java_flags - accumulating([]), + quoted_java_flag - string_special, + java_classpath - accumulating([]), + java_object_file_extension - string(".class"), + + % IL + il_assembler - string("ilasm"), + ilasm_flags - accumulating([]), + quoted_ilasm_flag - string_special, + dotnet_library_version - string("1.0.3300.0"), + % We default to the version of the + % library that came with Beta2. + support_ms_clr - bool(yes), + support_rotor_clr - bool(no), + + % C# + csharp_compiler - string("csc"), + csharp_flags - accumulating([]), + quoted_csharp_flag - string_special, + cli_interpreter - string(""), + + % Erlang + erlang_compiler - string("erlc"), + erlang_interpreter - string("erl"), + erlang_flags - accumulating([]), + quoted_erlang_flag - string_special, + erlang_include_directory - accumulating([]), + erlang_object_file_extension - string(".beam"), + erlang_native_code - bool(no), + erlang_inhibit_trivial_warnings - bool(yes) +]). +option_defaults_2(link_option, [ + % Link Options + output_file_name - string(""), + % If the output_file_name is an empty + % string, we use the name of the first + % module on the command line. + ld_flags - accumulating([]), + quoted_ld_flag - string_special, + ld_libflags - accumulating([]), + quoted_ld_libflag - string_special, + link_library_directories - accumulating([]), + runtime_link_library_directories - accumulating([]), + link_libraries - accumulating([]), + link_objects - accumulating([]), + mercury_library_directory_special - string_special, + mercury_library_directories - accumulating([]), + search_library_files_directory_special - string_special, + search_library_files_directories - accumulating([]), + mercury_library_special - string_special, + mercury_libraries - accumulating([]), + mercury_standard_library_directory - maybe_string(no), + % The Mercury.config file will set the + % default standard library directory. + mercury_standard_library_directory_special - maybe_string_special, + init_file_directories - accumulating([]), + init_files - accumulating([]), + trace_init_files - accumulating([]), + linkage - string("shared"), + linkage_special - string_special, + mercury_linkage - string("shared"), + mercury_linkage_special - string_special, + demangle - bool(yes), + strip - bool(yes), + main - bool(yes), + allow_undefined - bool(yes), + use_readline - bool(yes), + runtime_flags - accumulating([]), + extra_initialization_functions - bool(no), + frameworks - accumulating([]), + framework_directories - accumulating([]), + + shared_library_extension - string(".so"), + % The `mmc' script will override the + % default with a value determined at + % configuration time. + library_extension - string(".a"), + executable_file_extension - string(""), + link_executable_command - string("gcc"), + link_shared_lib_command - string("gcc -shared"), + create_archive_command - string("ar"), + create_archive_command_output_flag - string(""), + create_archive_command_flags - accumulating([]), % "cr" + ranlib_command - string(""), + ranlib_flags - string(""), + mkinit_command - string("mkinit"), + mkinit_erl_command - string("mkinit_erl"), + demangle_command - string("mdemangle"), + filtercc_command - string("mfiltercc"), + trace_libs - string(""), + thread_libs - string(""), + hwloc_libs - string(""), + hwloc_static_libs - string(""), + shared_libs - string(""), + math_lib - string(""), + readline_libs - string(""), + linker_opt_separator - string(""), + linker_debug_flags - string("-g"), + shlib_linker_debug_flags - string("-g"), + linker_trace_flags - string("-g"), + shlib_linker_trace_flags - string("-g"), + linker_thread_flags - string(""), + shlib_linker_thread_flags - string(""), + linker_static_flags - string("-static"), + linker_strip_flag - string("-s"), + linker_link_lib_flag - string("-l"), + linker_link_lib_suffix - string(""), + shlib_linker_link_lib_flag - string("-l"), + shlib_linker_link_lib_suffix - string(""), + linker_path_flag - string("-L"), + linker_rpath_flag - string("-Wl,-rpath"), + linker_rpath_separator - string(" -Wl,-rpath"), + shlib_linker_rpath_flag - string("-Wl,-rpath"), + shlib_linker_rpath_separator - string(" -Wl,-rpath"), + linker_allow_undefined_flag - string(""), + linker_error_undefined_flag - string("-Wl,-no-undefined"), + shlib_linker_use_install_name - bool(no), + shlib_linker_install_name_flag - string("-install_name "), + shlib_linker_install_name_path - string(""), + java_archive_command - string("jar") +]). +option_defaults_2(build_system_option, [ + % Build System Options + make - bool(no), + keep_going - bool(no), + rebuild - bool(no), + jobs - int(1), + track_flags - bool(no), + invoked_by_mmc_make - bool(no), + pre_link_command - maybe_string(no), + extra_init_command - maybe_string(no), + install_prefix - string("/usr/local/"), + use_symlinks - bool(yes), + + % If `--mercury-stdlib-dir' is set, `--mercury-config-dir' + % must also be set. This invariant is maintained by the + % `special' variants of the options. + mercury_configuration_directory_special - string_special, + mercury_configuration_directory - maybe_string(no), + install_command - string("cp"), + install_command_dir_option - string("-r"), + libgrades - accumulating([]), + libgrades_include_components - accumulating([]), + libgrades_exclude_components - accumulating([]), + lib_linkages - accumulating([]), + flags_file - file_special, + options_files - accumulating(["Mercury.options"]), + + config_file - maybe_string(yes("")), + % yes("") means unset. + options_search_directories - accumulating(["."]), + use_subdirs - bool(no), + use_grade_subdirs - bool(no), + search_directories - accumulating(["."]), + intermod_directories - accumulating([]), + use_search_directories_for_intermod - bool(yes), + libgrade_install_check - bool(yes), + order_make_by_timestamp - bool(no), + show_make_times - bool(no), + extra_library_header - accumulating([]), + restricted_command_line - bool(no), + env_type - string_special, + host_env_type - string("posix"), + target_env_type - string("posix") +]). +option_defaults_2(miscellaneous_option, [ + % Miscellaneous Options + filenames_from_stdin - bool(no), + typecheck_ambiguity_warn_limit - int(50), + typecheck_ambiguity_error_limit - int(3000), + help - bool(no), + version - bool(no), + fullarch - string(""), + cross_compiling - bool(no), + local_module_id - accumulating([]), + analysis_file_cache_dir - string(""), + compiler_sufficiently_recent - bool(no), + experiment - string(""), + ignore_par_conjunctions - bool(no), + control_granularity - bool(no), + distance_granularity - int(0), + implicit_parallelism - bool(no), + feedback_file - string(""), + par_loop_control - bool(no), + par_loop_control_preserve_tail_recursion - bool(no) +]). + + % please keep this in alphabetic order +short_option('c', compile_only). +short_option('C', target_code_only). +short_option('d', dump_hlds). +short_option('D', dump_hlds_alias). +short_option('e', errorcheck_only). +short_option('E', verbose_errors). +short_option('f', generate_source_file_mapping). +short_option('F', framework_directories). +short_option('h', help). +short_option('H', highlevel_code). +short_option('i', make_interface). +short_option('j', jobs). +short_option('I', search_directories). +short_option('k', keep_going). +short_option('l', link_libraries). +short_option('L', link_library_directories). +short_option('m', make). +short_option('M', generate_dependencies). +short_option('n', line_numbers). +short_option('N', debug_modes). +short_option('o', output_file_name). +short_option('O', opt_level). +short_option('p', profiling). +short_option('P', convert_to_mercury). +short_option('r', rebuild). +short_option('R', runtime_link_library_directories). +short_option('s', grade). +short_option('S', statistics). +short_option('T', debug_types). +short_option('t', typecheck_only). +short_option('v', verbose). +short_option('V', very_verbose). +short_option('w', inhibit_warnings). +short_option('x', make_xml_documentation). +short_option('?', help). + +% warning options +long_option("inhibit-warnings", inhibit_warnings). +long_option("inhibit-accumulator-warnings", inhibit_accumulator_warnings). +long_option("halt-at-warn", halt_at_warn). +long_option("halt-at-syntax-errors", halt_at_syntax_errors). +long_option("halt-at-auto-parallel-failure", halt_at_auto_parallel_failure). +long_option("warn-singleton-variables", warn_singleton_vars). +long_option("warn-overlapping-scopes", warn_overlapping_scopes). +long_option("warn-det-decls-too-lax", warn_det_decls_too_lax). +long_option("warn-inferred-erroneous", warn_inferred_erroneous). +long_option("warn-nothing-exported", warn_nothing_exported). +long_option("warn-unused-args", warn_unused_args). +long_option("warn-interface-imports", warn_interface_imports). +long_option("warn-non-contiguous-clauses", warn_non_contiguous_clauses). +long_option("warn-non-contiguous-foreign-procs", + warn_non_contiguous_foreign_procs). +long_option("warn-non-stratification", warn_non_stratification). +long_option("warn-missing-opt-files", warn_missing_opt_files). +long_option("warn-missing-trans-opt-files", warn_missing_trans_opt_files). +long_option("warn-missing-trans-opt-deps", warn_missing_trans_opt_deps). +long_option("warn-unification-cannot-succeed", + warn_unification_cannot_succeed). +long_option("warn-simple-code", warn_simple_code). +long_option("warn-duplicate-calls", warn_duplicate_calls). +long_option("warn-missing-module-name", warn_missing_module_name). +long_option("warn-wrong-module-name", warn_wrong_module_name). +long_option("warn-smart-recompilation", warn_smart_recompilation). +long_option("warn-undefined-options-variables", + warn_undefined_options_variables). +long_option("warn-non-tail-recursion", warn_non_tail_recursion). +long_option("warn-target-code", warn_target_code). +long_option("warn-up-to-date", warn_up_to_date). +long_option("warn-stubs", warn_stubs). +long_option("warn-dead-procs", warn_dead_procs). +long_option("warn-table-with-inline", warn_table_with_inline). +long_option("warn-non-term-special-preds", warn_non_term_special_preds). +long_option("warn-known-bad-format-calls", warn_known_bad_format_calls). +long_option("warn-unknown-format-calls", warn_unknown_format_calls). +long_option("warn-obsolete", warn_obsolete). +long_option("warn-insts-without-matching-type", + warn_insts_without_matching_type). +long_option("warn-unused-imports", warn_unused_imports). +long_option("inform-ite-instead-of-switch", inform_ite_instead_of_switch). +long_option("warn-unresolved-polymorphism", warn_unresolved_polymorphism). +long_option("warn-suspicious-foreign-procs", warn_suspicious_foreign_procs). +long_option("warn-state-var-shadowing", warn_state_var_shadowing). +long_option("inform-inferred", inform_inferred). +long_option("inform-inferred-types", inform_inferred_types). +long_option("inform-inferred-modes", inform_inferred_modes). + +% verbosity options +long_option("verbose", verbose). +long_option("very-verbose", very_verbose). +long_option("verbose-error-messages", verbose_errors). +long_option("verbose-recompilation", verbose_recompilation). +long_option("find-all-recompilation-reasons", + find_all_recompilation_reasons). +long_option("verbose-make", verbose_make). +long_option("verbose-commands", verbose_commands). +long_option("output-compile-error-lines", output_compile_error_lines). +long_option("report-cmd-line-args", report_cmd_line_args). +long_option("report-cmd-line-args-in-doterr", + report_cmd_line_args_in_doterr). +long_option("statistics", statistics). +long_option("detailed-statistics", detailed_statistics). +long_option("proc-size-statistics", proc_size_statistics). +long_option("debug-types", debug_types). +long_option("debug-modes", debug_modes). +long_option("debug-modes-statistics", debug_modes_statistics). +long_option("debug-modes-minimal", debug_modes_minimal). +long_option("debug-modes-verbose", debug_modes_verbose). +long_option("debug-modes-pred-id", debug_modes_pred_id). +long_option("debug-dep-par-conj", debug_dep_par_conj). +long_option("debug-determinism", debug_det). +long_option("debug-det", debug_det). +long_option("debug-code-gen-pred-id", debug_code_gen_pred_id). +long_option("debug-termination", debug_term). +long_option("debug-term", debug_term). +long_option("debug-opt", debug_opt). +long_option("debug-opt-pred-id", debug_opt_pred_id). +long_option("debug-opt-pred-name", debug_opt_pred_name). +long_option("debug-pd", debug_pd). + % debug-il-asm does very low-level printf style debugging of + % IL assembler. Each instruction is written on stdout before it + % is executed. It is a temporary measure until the IL debugging + % system built into .NET improves. +long_option("debug-il-asm", debug_il_asm). +long_option("debug-liveness", debug_liveness). +long_option("debug-stack-opt", debug_stack_opt). +long_option("debug-make", debug_make). +long_option("debug-closure", debug_closure). +long_option("debug-trail-usage", debug_trail_usage). +long_option("debug-mode-constraints", debug_mode_constraints). +long_option("debug-intermodule-analysis", debug_intermodule_analysis). +long_option("debug-mm-tabling-analysis", debug_mm_tabling_analysis). +long_option("debug-indirect-reuse", debug_indirect_reuse). +long_option("debug-type-rep", debug_type_rep). + +% output options (mutually exclusive) +long_option("generate-source-file-mapping", generate_source_file_mapping). +long_option("generate-dependency-file", generate_dependency_file). +long_option("generate-dependencies", generate_dependencies). +long_option("generate-module-order", generate_module_order). +long_option("generate-standalone-interface", generate_standalone_interface). +long_option("make-short-interface", make_short_interface). +long_option("make-short-int", make_short_interface). +long_option("make-interface", make_interface). +long_option("make-int", make_interface). +long_option("make-private-interface", make_private_interface). +long_option("make-priv-int", make_private_interface). +long_option("make-optimization-interface", make_optimization_interface). +long_option("make-optimisation-interface", make_optimization_interface). +long_option("make-opt-int", make_optimization_interface). +long_option("make-transitive-optimization-interface", + make_transitive_opt_interface). +long_option("make-transitive-optimisation-interface", + make_transitive_opt_interface). +long_option("make-trans-opt", make_transitive_opt_interface). +long_option("make-analysis-registry", make_analysis_registry). +long_option("make-xml-doc", make_xml_documentation). +long_option("make-xml-documentation", make_xml_documentation). +long_option("convert-to-mercury", convert_to_mercury). +long_option("convert-to-Mercury", convert_to_mercury). +long_option("pretty-print", convert_to_mercury). +long_option("typecheck-only", typecheck_only). +long_option("errorcheck-only", errorcheck_only). +long_option("target-code-only", target_code_only). +long_option("compile-only", compile_only). +long_option("compile-to-shared-lib", compile_to_shared_lib). +long_option("output-grade-string", output_grade_string). +long_option("output-link-command", output_link_command). +long_option("output-shared-lib-link-command", output_shared_lib_link_command). +long_option("output-libgrades", output_libgrades). +long_option("output-cc", output_cc). +long_option("output-cc-type", output_c_compiler_type). +long_option("output-c-compiler-type", output_c_compiler_type). +long_option("output-csharp-compiler-type", output_csharp_compiler_type). +long_option("output-cflags", output_cflags). +long_option("output-library-link-flags", output_library_link_flags). +long_option("output-grade-defines", output_grade_defines). +long_option("output-c-include-directory-flags", + output_c_include_directory_flags). +long_option("output-c-include-dir-flags", + output_c_include_directory_flags). + +% aux output options +long_option("smart-recompilation", smart_recompilation). +long_option("assume-gmake", assume_gmake). +long_option("generate-mmc-make-module-dependencies", + generate_mmc_make_module_dependencies). +long_option("generate-mmc-deps", generate_mmc_make_module_dependencies). +long_option("ssdb-trace", ssdb_trace_level). +long_option("link-ssdb-libs", link_ssdb_libs). +long_option("link-ssdebug-libs", link_ssdb_libs). +long_option("trace", trace_level). +long_option("trace-optimised", trace_optimized). +long_option("trace-optimized", trace_optimized). +long_option("trace-prof", trace_prof). +long_option("trace-table-io", trace_table_io). +long_option("trace-table-io-only-retry", trace_table_io_only_retry). +long_option("trace-table-io-states", trace_table_io_states). +long_option("trace-table-io-require", trace_table_io_require). +long_option("trace-table-io-all", trace_table_io_all). +long_option("trace-flag", trace_goal_flags). +long_option("profile-optimised", prof_optimized). +long_option("profile-optimized", prof_optimized). +long_option("exec-trace-tail-rec", exec_trace_tail_rec). +long_option("suppress-trace", suppress_trace). +long_option("force-disable-tracing", force_disable_tracing). +long_option("delay-death", delay_death). +long_option("delay-death-max-vars", delay_death_max_vars). +long_option("stack-trace-higher-order", stack_trace_higher_order). +long_option("force-disable-ssdebug", force_disable_ssdebug). +long_option("generate-bytecode", generate_bytecode). +long_option("line-numbers", line_numbers). +long_option("auto-comments", auto_comments). +long_option("frameopt-comments", frameopt_comments). +long_option("max-error-line-width", max_error_line_width). +long_option("show-dependency-graph", show_dependency_graph). +long_option("imports-graph", imports_graph). +long_option("dump-trace-counts", dump_trace_counts). +long_option("dump-hlds", dump_hlds). +long_option("hlds-dump", dump_hlds). +long_option("dump-hlds-pred-id", dump_hlds_pred_id). +long_option("dump-hlds-pred-name", dump_hlds_pred_name). +long_option("dump-hlds-alias", dump_hlds_alias). +long_option("dump-hlds-options", dump_hlds_options). +long_option("dump-hlds-inst-limit", dump_hlds_inst_limit). +long_option("dump-hlds-file-suffix", dump_hlds_file_suffix). +long_option("dump-same-hlds", dump_same_hlds). +long_option("dump-mlds", dump_mlds). +long_option("mlds-dump", dump_mlds). +long_option("verbose-dump-mlds", verbose_dump_mlds). +long_option("verbose-mlds-dump", verbose_dump_mlds). +long_option("sign-assembly", sign_assembly). +long_option("separate-assemblies", separate_assemblies). +long_option("mode-constraints", mode_constraints). +long_option("simple-mode-constraints", simple_mode_constraints). +long_option("prop-mode-constraints", prop_mode_constraints). +long_option("propagate-mode-constraints", prop_mode_constraints). +long_option("benchmark-modes", benchmark_modes). +long_option("benchmark-modes-repeat", benchmark_modes_repeat). + +% language semantics options +long_option("reorder-conj", reorder_conj). +long_option("reorder-disj", reorder_disj). +long_option("fully-strict", fully_strict). +long_option("strict-sequential", strict_sequential). +long_option("allow-stubs", allow_stubs). +long_option("infer-all", infer_all). +long_option("infer-types", infer_types). +long_option("infer-modes", infer_modes). +long_option("infer-determinism", infer_det). +long_option("infer-det", infer_det). +long_option("type-inference-iteration-limit", type_inference_iteration_limit). +long_option("mode-inference-iteration-limit", mode_inference_iteration_limit). +long_option("event-set-file-name", event_set_file_name). + +% compilation model options +long_option("grade", grade). +% target selection options +long_option("target", target). +long_option("il", il). +long_option("il-only", il_only). +long_option("IL-only", il_only). +long_option("compile-to-c", compile_to_c). +long_option("compile-to-C", compile_to_c). +long_option("java", java). +long_option("Java", java). +long_option("java-only", java_only). +long_option("Java-only", java_only). +long_option("csharp", csharp). +long_option("C#", csharp). +long_option("csharp-only", csharp_only). +long_option("C#-only", csharp_only). +long_option("x86_64", x86_64). +long_option("x86-64", x86_64). +long_option("x86_64-only", x86_64_only). +long_option("x86-64-only", x86_64_only). +long_option("erlang", erlang). +long_option("Erlang", erlang). +long_option("erlang-only", erlang_only). +long_option("Erlang-only", erlang_only). +% Optional features compilation model options: +% (a) debugging +long_option("debug", exec_trace). +long_option("decl-debug", decl_debug). +long_option("ssdb", source_to_source_debug). +long_option("ss-debug", source_to_source_debug). +long_option("source-to-source-debug", source_to_source_debug). + % (b) profiling +long_option("profiling", profiling). +long_option("time-profiling", time_profiling). +long_option("memory-profiling", memory_profiling). +long_option("deep-profiling", deep_profiling). +long_option("profile-calls", profile_calls). +long_option("profile-time", profile_time). +long_option("profile-memory", profile_memory). +long_option("profile-deep", profile_deep). +long_option("use-activation-counts", use_activation_counts). +long_option("pre-prof-transforms-simplify", pre_prof_transforms_simplify). +long_option("pre-implicit-parallelism-simplify", + pre_implicit_parallelism_simplify). +long_option("coverage-profiling", + coverage_profiling). +long_option("coverage-profiling-via-calls", + coverage_profiling_via_calls). +long_option("coverage-profiling-static", + coverage_profiling_static). +long_option("profile-deep-coverage-after-goal", + profile_deep_coverage_after_goal). +long_option("profile-deep-coverage-branch-ite", + profile_deep_coverage_branch_ite). +long_option("profile-deep-coverage-branch-switch", + profile_deep_coverage_branch_switch). +long_option("profile-deep-coverage-branch-disj", + profile_deep_coverage_branch_disj). +long_option("profile-deep-coverage-use-portcounts", + profile_deep_coverage_use_portcounts). +long_option("profile-deep-coverage-use-trivial", + profile_deep_coverage_use_trivial). +long_option("profile-for-implicit-parallelism", + profile_for_feedback). +long_option("profile-for-feedback", + profile_for_feedback). +long_option("use-zeroing-for-ho-cycles", + use_zeroing_for_ho_cycles). +long_option("use-lots-of-ho-specialization", + use_lots_of_ho_specialization). +long_option("deep-profile-tail-recursion", + deep_profile_tail_recursion). +long_option("record-term-sizes-as-words", record_term_sizes_as_words). +long_option("record-term-sizes-as-cells", record_term_sizes_as_cells). +long_option("experimental-complexity", experimental_complexity). +long_option("region-analysis", region_analysis). +% (c) miscellaneous optional features +long_option("gc", gc). +long_option("garbage-collection", gc). +long_option("parallel", parallel). +long_option("use-trail", use_trail). +long_option("trail-segments", trail_segments). +long_option("type-layout", type_layout). +long_option("maybe-thread-safe", maybe_thread_safe_opt). +long_option("extend-stacks-when-needed", extend_stacks_when_needed). +long_option("stack-segments", stack_segments). +long_option("use-regions", use_regions). +long_option("use-alloc-regions", use_alloc_regions). +long_option("use-regions-debug", use_regions_debug). +long_option("use-regions-profiling",use_regions_profiling). +% Data representation options +long_option("use-minimal-model-stack-copy", use_minimal_model_stack_copy). +long_option("use-minimal-model-own-stacks", use_minimal_model_own_stacks). +long_option("minimal-model-debug", minimal_model_debug). +long_option("single-prec-float", single_prec_float). +long_option("single-precision-float", single_prec_float). +long_option("pic-reg", pic_reg). +long_option("tags", tags). +long_option("num-tag-bits", num_tag_bits). +long_option("num-reserved-addresses", num_reserved_addresses). +long_option("num-reserved-objects", num_reserved_objects). +long_option("bits-per-word", bits_per_word). +long_option("bytes-per-word", bytes_per_word). +long_option("conf-low-tag-bits", conf_low_tag_bits). +long_option("sync-term-size", sync_term_size). +long_option("unboxed-float", unboxed_float). +long_option("unboxed-enums", unboxed_enums). +long_option("unboxed-no-tag-types", unboxed_no_tag_types). +long_option("highlevel-data", highlevel_data). +long_option("high-level-data", highlevel_data). +% LLDS back-end compilation model options +long_option("gcc-non-local-gotos", gcc_non_local_gotos). +long_option("gcc-global-registers", gcc_global_registers). +long_option("asm-labels", asm_labels). +long_option("use-float-registers", use_float_registers). +% MLDS back-end compilation model options +long_option("highlevel-code", highlevel_code). +long_option("high-level-code", highlevel_code). +long_option("highlevel-C", highlevel_code). +long_option("highlevel-c", highlevel_code). +long_option("high-level-C", highlevel_code). +long_option("high-level-c", highlevel_code). +long_option("gcc-nested-functions", gcc_nested_functions). +long_option("det-copy-out", det_copy_out). +long_option("nondet-copy-out", nondet_copy_out). +long_option("put-commit-in-own-func", put_commit_in_own_func). +long_option("put-nondet-env-on-heap", put_nondet_env_on_heap). +% IL back-end compilation model options +long_option("verifiable-code", verifiable_code). +long_option("verifiable", verifiable_code). +long_option("il-funcptr-types", il_funcptr_types). +long_option("IL-funcptr-types", il_funcptr_types). +long_option("il-refany-fields", il_refany_fields). +long_option("IL-refany-fields", il_refany_fields). +long_option("il-byref-tailcalls", il_byref_tailcalls). +long_option("IL-byref-tailcalls", il_byref_tailcalls). + +% internal use options +long_option("backend-foreign-languages", backend_foreign_languages). +long_option("agc-stack-layout", agc_stack_layout). +long_option("basic-stack-layout", basic_stack_layout). +long_option("procid-stack-layout", procid_stack_layout). +long_option("trace-stack-layout", trace_stack_layout). +long_option("body-typeinfo-liveness", body_typeinfo_liveness). +long_option("can-compare-constants-as-ints", can_compare_constants_as_ints). +long_option("pretest-equality-cast-pointers", pretest_equality_cast_pointers). +long_option("can-compare-compound-values", can_compare_compound_values). +long_option("lexically-order-constructors", + lexically_order_constructors). +long_option("mutable-always-boxed", mutable_always_boxed). +long_option("delay-partial-instantiations", delay_partial_instantiations). +long_option("allow-defn-of-builtins", allow_defn_of_builtins). +long_option("special-preds", special_preds). +long_option("type-ctor-info", type_ctor_info). +long_option("type-ctor-layout", type_ctor_layout). +long_option("type-ctor-functors", type_ctor_functors). +long_option("new-type-class-rtti", new_type_class_rtti). +long_option("rtti-line-numbers", rtti_line_numbers). +long_option("disable-mm-pneg", disable_minimal_model_stack_copy_pneg). +long_option("disable-mm-cut", disable_minimal_model_stack_copy_cut). +long_option("disable-trail-ops", disable_trail_ops). +long_option("size-region-ite-fixed", size_region_ite_fixed). +long_option("size-region-disj-fixed", size_region_disj_fixed). +long_option("size-region-commit-fixed", size_region_commit_fixed). +long_option("size-region-ite-protect", size_region_ite_protect). +long_option("size-region-ite-snapshot", size_region_ite_snapshot). +long_option("size-region-semi-disj-protect", size_region_semi_disj_protect). +long_option("size-region-disj-snapshot", size_region_disj_snapshot). +long_option("size-region-commit-entry", size_region_commit_entry). +long_option("solver-type-auto-init", solver_type_auto_init). +long_option("allow-multi-arm-switches", allow_multi_arm_switches). +long_option("type-check-constraints", type_check_constraints). +long_option("allow-argument-packing", allow_argument_packing). + +% code generation options +long_option("low-level-debug", low_level_debug). +long_option("table-debug", table_debug). +long_option("polymorphism", polymorphism). +long_option("trad-passes", trad_passes). +long_option("parallel-liveness", parallel_liveness). +long_option("parallel-code-gen", parallel_code_gen). +long_option("reclaim-heap-on-failure", reclaim_heap_on_failure). +long_option("reclaim-heap-on-semidet-failure", + reclaim_heap_on_semidet_failure). +long_option("reclaim-heap-on-nondet-failure", + reclaim_heap_on_nondet_failure). +long_option("branch-delay-slot", have_delay_slot). +long_option("have-delay-slot", have_delay_slot). +long_option("num-real-r-regs", num_real_r_regs). +long_option("num-real-f-regs", num_real_f_regs). +long_option("num-real-r-temps", num_real_r_temps). +long_option("num-real-f-temps", num_real_f_temps). +long_option("num-real-temps", num_real_r_temps). % obsolete +long_option("max-jump-table-size", max_jump_table_size). +% long_option("max-spec-do-call-closure", +% max_specialized_do_call_closure). +% long_option("max-spec-do-call-class-method", +% max_specialized_do_call_class_method). +long_option("compare-specialization", compare_specialization). +long_option("should-pretest-equality", should_pretest_equality). +long_option("fact-table-max-array-size",fact_table_max_array_size). +long_option("fact-table-hash-percent-full", + fact_table_hash_percent_full). +long_option("gcc-local-labels", gcc_local_labels). +long_option("prefer-switch", prefer_switch). +long_option("opt-no-return-calls", opt_no_return_calls). + +% optimization options + +long_option("opt-level", opt_level). +long_option("optimization-level", opt_level). +long_option("optimisation-level", opt_level). +long_option("opt-space", opt_space). +long_option("optimize-space", opt_space). +long_option("optimise-space", opt_space). +long_option("intermod-opt", intermodule_optimization). +long_option("intermodule-optimization", intermodule_optimization). +long_option("intermodule-optimisation", intermodule_optimization). +long_option("read-opt-files-transitively", read_opt_files_transitively). +long_option("use-opt-files", use_opt_files). +long_option("use-trans-opt-files", use_trans_opt_files). +long_option("transitive-intermodule-optimization", + transitive_optimization). +long_option("transitive-intermodule-optimisation", + transitive_optimization). +long_option("trans-intermod-opt", transitive_optimization). +long_option("intermodule-analysis", intermodule_analysis). +long_option("analysis-repeat", analysis_repeat). +long_option("analysis-file-cache", analysis_file_cache). + +% HLDS->HLDS optimizations +long_option("inlining", inlining). +long_option("inline-simple", inline_simple). +long_option("inline-builtins", inline_builtins). +long_option("inline-single-use", inline_single_use). +long_option("inline-call-cost", inline_call_cost). +long_option("inline-compound-threshold", inline_compound_threshold). +long_option("inline-simple-threshold", inline_simple_threshold). +long_option("intermod-inline-simple-threshold", + intermod_inline_simple_threshold). +long_option("from-ground-term-threshold", + from_ground_term_threshold). +long_option("inline-vars-threshold", inline_vars_threshold). +long_option("const-struct", enable_const_struct). +long_option("common-struct", common_struct). +long_option("common-struct-preds", common_struct_preds). +long_option("common-goal", common_goal). +long_option("excess-assign", excess_assign). +long_option("optimize-format-calls", optimize_format_calls). +long_option("optimize-duplicate-calls", optimize_duplicate_calls). +long_option("optimise-duplicate-calls", optimize_duplicate_calls). +long_option("optimise-constant-propagation", constant_propagation). +long_option("optimize-constant-propagation", constant_propagation). +long_option("optimize-saved-vars", optimize_saved_vars). +long_option("optimise-saved-vars", optimize_saved_vars). +long_option("loop-invariants", loop_invariants). +long_option("optimize-saved-vars-const", optimize_saved_vars_const). +long_option("optimise-saved-vars-const", optimize_saved_vars_const). +long_option("optimize-saved-vars-cell", optimize_saved_vars_cell). +long_option("optimise-saved-vars-cell", optimize_saved_vars_cell). +long_option("osv-loop", optimize_saved_vars_cell_loop). +long_option("osv-full-path", optimize_saved_vars_cell_full_path). +long_option("osv-on-stack", optimize_saved_vars_cell_on_stack). +long_option("osv-cand-head", + optimize_saved_vars_cell_candidate_headvars). +% The next four options are used by tupling.m as well; changes to them +% may require changes there as well. +long_option("osv-cvstore-cost", optimize_saved_vars_cell_cv_store_cost). +long_option("osv-cvload-cost", optimize_saved_vars_cell_cv_load_cost). +long_option("osv-fvstore-cost", optimize_saved_vars_cell_fv_store_cost). +long_option("osv-fvload-cost", optimize_saved_vars_cell_fv_load_cost). +long_option("osv-op-ratio", optimize_saved_vars_cell_op_ratio). +long_option("osv-node-ratio", optimize_saved_vars_cell_node_ratio). +long_option("osv-allpath-node-ratio", + optimize_saved_vars_cell_all_path_node_ratio). +long_option("osv-all-cand", + optimize_saved_vars_cell_include_all_candidates). +long_option("delay-construct", delay_construct). +long_option("delay-constructs", delay_construct). +long_option("follow-code", follow_code). +long_option("constraint-propagation", constraint_propagation). +long_option("local-constraint-propagation", local_constraint_propagation). +long_option("optimize-unused-args", optimize_unused_args). +long_option("optimise-unused-args", optimize_unused_args). +long_option("intermod-unused-args", intermod_unused_args). +long_option("optimize-higher-order", optimize_higher_order). +long_option("optimise-higher-order", optimize_higher_order). +long_option("higher-order-size-limit", higher_order_size_limit). +long_option("higher-order-arg-limit", higher_order_arg_limit). +long_option("unneeded-code", unneeded_code). +long_option("unneeded-code-copy-limit", unneeded_code_copy_limit). +long_option("unneeded-code-debug", unneeded_code_debug). +long_option("unneeded-code-debug-pred-name", unneeded_code_debug_pred_name). +long_option("type-specialization", type_specialization). +long_option("type-specialisation", type_specialization). +long_option("user-guided-type-specialization", + user_guided_type_specialization). +long_option("user-guided-type-specialisation", + user_guided_type_specialization). +% This option is for use in configure.in to test for some bug-fixes for +% type-specialization which are needed to compile the library. It's not +% documented, and should eventually be removed. +long_option("fixed-user-guided-type-specialization", + user_guided_type_specialization). +long_option("introduce-accumulators", introduce_accumulators). +long_option("optimise-constructor-last-call-accumulator", + optimize_constructor_last_call_accumulator). +long_option("optimize-constructor-last-call-accumulator", + optimize_constructor_last_call_accumulator). +long_option("optimise-constructor-last-call-null", + optimize_constructor_last_call_null). +long_option("optimize-constructor-last-call-null", + optimize_constructor_last_call_null). +long_option("optimise-constructor-last-call", + optimize_constructor_last_call). +long_option("optimize-constructor-last-call", + optimize_constructor_last_call). +long_option("optimize-dead-procs", optimize_dead_procs). +long_option("optimise-dead-procs", optimize_dead_procs). +long_option("deforestation", deforestation). +long_option("deforestation-depth-limit", deforestation_depth_limit). +long_option("deforestation-cost-factor", deforestation_cost_factor). +long_option("deforestation-vars-threshold", deforestation_vars_threshold). +long_option("deforestation-size-threshold", deforestation_size_threshold). +long_option("enable-termination", termination). +long_option("enable-term", termination). +long_option("check-termination", termination_check). +long_option("check-term", termination_check). +long_option("chk-term", termination_check). +long_option("verbose-check-termination",verbose_check_termination). +long_option("verb-check-term", verbose_check_termination). +long_option("verb-chk-term", verbose_check_termination). +long_option("termination-single-argument-analysis", + termination_single_args). +long_option("term-single-arg", termination_single_args). +long_option("termination-norm", termination_norm). +long_option("term-norm", termination_norm). +long_option("termination-error-limit", termination_error_limit). +long_option("term-err-limit", termination_error_limit). +long_option("termination-path-limit", termination_path_limit). +long_option("term-path-limit", termination_path_limit). +long_option("enable-termination2", termination2). +long_option("enable-term2", termination2). +long_option("check-termination2", check_termination2). +long_option("check-term2", check_termination2). +long_option("chk-term2", check_termination2). +long_option("verbose-check-termination2",verbose_check_termination2). +long_option("verb-check-term2", verbose_check_termination2). +long_option("verb-chk-term2", verbose_check_termination2). +long_option("termination2-widening-limit", widening_limit). +long_option("term2-widening-limit", widening_limit). +long_option("arg-size-analysis-only", arg_size_analysis_only). +long_option("termination2-propagate-failure-constraints", + propagate_failure_constrs). +long_option("term2-propagate-failure-constraints", + propagate_failure_constrs). +long_option("term2-propagate-failure-constrs", propagate_failure_constrs). +long_option("termination2-norm", termination2_norm). +long_option("term2-norm", termination2_norm). +long_option("termination2-maximum-matrix-size", term2_maximum_matrix_size). +long_option("term2-max-matrix-size", term2_maximum_matrix_size). +long_option("analyse-exceptions", analyse_exceptions). +long_option("analyse-closures", analyse_closures). +long_option("analyse-local-closures", analyse_closures). +long_option("analyse-trail-usage", analyse_trail_usage). +long_option("optimize-trail-usage", optimize_trail_usage). +long_option("optimize-region-ops", optimize_region_ops). +long_option("analyse-mm-tabling", analyse_mm_tabling). +long_option("untuple", untuple). +long_option("tuple", tuple). +long_option("tuple-trace-counts-file", tuple_trace_counts_file). +long_option("tuple-costs-ratio", tuple_costs_ratio). +long_option("tuple-min-args", tuple_min_args). +long_option("inline-par-builtins", inline_par_builtins). +long_option("always-specialize-in-dep-par-conjs", + always_specialize_in_dep_par_conjs). +long_option("allow-some-paths-only-waits", + allow_some_paths_only_waits). + +% CTGC related options. +long_option("structure-sharing", structure_sharing_analysis). +long_option("structure-sharing-widening", structure_sharing_widening). +long_option("structure-reuse", structure_reuse_analysis). +long_option("ctgc", structure_reuse_analysis). +long_option("structure-reuse-constraint", structure_reuse_constraint). +long_option("ctgc-constraint", structure_reuse_constraint). +long_option("structure-reuse-constraint-arg", structure_reuse_constraint_arg). +long_option("ctgc-constraint-arg", structure_reuse_constraint_arg). +long_option("structure-reuse-max-conditions", structure_reuse_max_conditions). +long_option("structure-reuse-repeat", structure_reuse_repeat). +long_option("structure-reuse-free-cells", structure_reuse_free_cells). + +% HLDS->LLDS optimizations +long_option("smart-indexing", smart_indexing). +long_option("dense-switch-req-density", dense_switch_req_density). +long_option("lookup-switch-req-density",lookup_switch_req_density). +long_option("dense-switch-size", dense_switch_size). +long_option("lookup-switch-size", lookup_switch_size). +long_option("string-switch-size", string_hash_switch_size). +long_option("string-hash-switch-size", string_hash_switch_size). +long_option("string-binary-switch-size", string_binary_switch_size). +long_option("tag-switch-size", tag_switch_size). +long_option("try-switch-size", try_switch_size). +long_option("binary-switch-size", binary_switch_size). +long_option("switch-single-rec-base-first", switch_single_rec_base_first). +long_option("switch-multi-rec-base-first", switch_multi_rec_base_first). +long_option("static-ground-terms", static_ground_cells). +% static_ground_floats should be set only in handle_options.m. +% long_option("static-ground-floats", static_ground_floats). +% static_code_addresses should be set only in handle_options.m. +% long_option("static-code-addresses", static_code_addresses). +long_option("use-atomic-cells", use_atomic_cells). +long_option("middle-rec", middle_rec). +long_option("simple-neg", simple_neg). +long_option("allow-hijacks", allow_hijacks). + +% MLDS optimizations +% Option `optimize' is used for both MLDS and LLDS optimizations, but since +% you can't use both at the same time it doesn't really matter. +long_option("mlds-optimize", optimize). +long_option("mlds-optimise", optimize). +long_option("mlds-peephole", optimize_peep). +long_option("optimize-tailcalls", optimize_tailcalls). +long_option("optimise-tailcalls", optimize_tailcalls). +long_option("optimize-initializations", optimize_initializations). +long_option("optimise-initializations", optimize_initializations). +long_option("eliminate-local-vars", eliminate_local_vars). +long_option("generate-trail-ops-inline", generate_trail_ops_inline). + +% LLDS optimizations +long_option("common-data", common_data). +long_option("common-layout-data", common_layout_data). +long_option("llds-optimize", optimize). +long_option("llds-optimise", optimize). +long_option("optimize-peep", optimize_peep). +long_option("optimise-peep", optimize_peep). +long_option("optimize-peep-mkword", optimize_peep_mkword). +long_option("optimise-peep-mkword", optimize_peep_mkword). +long_option("optimize-jumps", optimize_jumps). +long_option("optimise-jumps", optimize_jumps). +long_option("optimize-fulljumps", optimize_fulljumps). +long_option("optimise-fulljumps", optimize_fulljumps). +long_option("pessimize-tailcalls", pessimize_tailcalls). +long_option("checked-nondet-tailcalls", checked_nondet_tailcalls). +long_option("use-local-vars", use_local_vars). +long_option("local-var-access-threshold", local_var_access_threshold). +long_option("standardise-labels", standardize_labels). +long_option("standardize-labels", standardize_labels). +long_option("optimize-labels", optimize_labels). +long_option("optimise-labels", optimize_labels). +long_option("optimize-dups", optimize_dups). +long_option("optimise-dups", optimize_dups). +long_option("optimize-proc-dups", optimize_proc_dups). +long_option("optimise-proc-dups", optimize_proc_dups). +%%% long_option("optimize-copyprop", optimize_copyprop). +%%% long_option("optimise-copyprop", optimize_copyprop). +long_option("optimize-frames", optimize_frames). +long_option("optimise-frames", optimize_frames). +long_option("optimize-delay-slot", optimize_delay_slot). +long_option("optimise-delay-slot", optimize_delay_slot). +long_option("optimize-reassign", optimize_reassign). +long_option("optimise-reassign", optimize_reassign). +long_option("optimize-repeat", optimize_repeat). +long_option("optimise-repeat", optimize_repeat). +long_option("layout-compression-limit", layout_compression_limit). + +% LLDS->C optimizations +long_option("use-macro-for-redo-fail", use_macro_for_redo_fail). +long_option("emit-c-loops", emit_c_loops). +long_option("procs-per-c-function", procs_per_c_function). +long_option("procs-per-C-function", procs_per_c_function). +long_option("everything-in-one-c-function", everything_in_one_c_function). +long_option("everything-in-one-C-function", everything_in_one_c_function). +long_option("inline-alloc", inline_alloc). +long_option("local-thread-engine-base", local_thread_engine_base). + +% Erlang +long_option("erlang-switch-on-strings-as-atoms", + erlang_switch_on_strings_as_atoms). + +% Target code compilation options +long_option("target-debug", target_debug). + +long_option("cc", cc). +long_option("c-optimise", c_optimize). +long_option("c-optimize", c_optimize). +% XXX we should consider the relationship between c_debug and target_debug +% more carefully. Perhaps target_debug could imply C debug if the target is C. +% However for the moment they are just synonyms. +long_option("c-debug", target_debug). +long_option("c-include-directory", c_include_directory). +long_option("c-include-dir", c_include_directory). +long_option("ansi-c", ansi_c). +long_option("cflags", cflags). +long_option("cflag", quoted_cflag). + +long_option("gcc-flags", gcc_flags). +long_option("gcc-flag", quoted_gcc_flag). +long_option("clang-flags", clang_flags). +long_option("clang-flag", quoted_clang_flag). +long_option("msvc-flags", msvc_flags). +long_option("msvc-flag", quoted_msvc_flag). + +long_option("cflags-for-warnings", cflags_for_warnings). +long_option("cflags-for-optimization", cflags_for_optimization). +long_option("cflags-for-ansi", cflags_for_ansi). +long_option("cflags-for-regs", cflags_for_regs). +long_option("cflags-for-gotos", cflags_for_gotos). +long_option("cflags-for-threads", cflags_for_threads). +long_option("cflags-for-debug", cflags_for_debug). +long_option("cflags-for-pic", cflags_for_pic). +long_option("c-flag-to-name-object-file", c_flag_to_name_object_file). +long_option("object-file-extension", object_file_extension). +long_option("pic-object-file-extension", pic_object_file_extension). +long_option("link-with-pic-object-file-extension", + link_with_pic_object_file_extension). +long_option("c-compiler-type", c_compiler_type). +long_option("csharp-compiler-type", csharp_compiler_type). + + +long_option("java-compiler", java_compiler). +long_option("javac", java_compiler). +long_option("java-interpreter", java_interpreter). +long_option("java-flags", java_flags). +long_option("java-flag", quoted_java_flag). +% XXX we should consider the relationship between java_debug and target_debug +% more carefully. Perhaps target_debug could imply Java debug if the target +% is Java. However for the moment they are just synonyms. +long_option("java-debug", target_debug). +long_option("java-classpath", java_classpath). +long_option("java-object-file-extension", java_object_file_extension). + +long_option("il-assembler", il_assembler). +long_option("ilasm-flags", ilasm_flags). +long_option("ilasm-flag", quoted_ilasm_flag). +long_option("dotnet-library-version", dotnet_library_version). +long_option("support-ms-clr", support_ms_clr). +long_option("support-rotor-clr", support_rotor_clr). + +long_option("csharp-compiler", csharp_compiler). +long_option("csharp-flags", csharp_flags). +long_option("csharp-flag", quoted_csharp_flag). +long_option("cli-interpreter", cli_interpreter). + +long_option("erlang-compiler", erlang_compiler). +long_option("erlang-interpreter", erlang_interpreter). +long_option("erlang-flags", erlang_flags). +long_option("erlang-flag", quoted_erlang_flag). +long_option("erlang-include-directory", erlang_include_directory). +long_option("erlang-include-dir", erlang_include_directory). +long_option("erlang-object-file-extension", erlang_object_file_extension). +long_option("erlang-native-code", erlang_native_code). +long_option("erlang-inhibit-trivial-warnings", + erlang_inhibit_trivial_warnings). + +% link options +long_option("output-file", output_file_name). +long_option("ld-flags", ld_flags). +long_option("ld-flag", quoted_ld_flag). +long_option("ld-libflags", ld_libflags). +long_option("ld-libflag", quoted_ld_libflag). +long_option("library-directory", link_library_directories). +long_option("runtime-library-directory", runtime_link_library_directories). +long_option("library", link_libraries). +long_option("link-object", link_objects). +long_option("mercury-library", mercury_library_special). +long_option("ml", mercury_library_special). +long_option("mercury-library-directory", mercury_library_directory_special). +long_option("mld", mercury_library_directory_special). +long_option("search-library-files-directory", + search_library_files_directory_special). +long_option("search-lib-files-dir", + search_library_files_directory_special). +long_option("mercury-standard-library-directory", + mercury_standard_library_directory_special). +long_option("mercury-stdlib-dir", + mercury_standard_library_directory_special). +long_option("init-file-directory", init_file_directories). +long_option("init-file", init_files). +long_option("trace-init-file", trace_init_files). +long_option("linkage", linkage_special). +long_option("mercury-linkage", mercury_linkage_special). +long_option("demangle", demangle). +long_option("strip", strip). +long_option("main", main). +long_option("allow-undefined", allow_undefined). +long_option("use-readline", use_readline). +long_option("runtime-flags", runtime_flags). +long_option("extra-initialization-functions", + extra_initialization_functions). +long_option("extra-inits", extra_initialization_functions). +long_option("framework", frameworks). +long_option("framework-directory", framework_directories). + +long_option("shared-library-extension", shared_library_extension). +long_option("library-extension", library_extension). +long_option("executable-file-extension", executable_file_extension). +long_option("create-archive-command", create_archive_command). +long_option("create-archive-command-output-flag", + create_archive_command_output_flag). +long_option("create-archive-command-flags", create_archive_command_flags). +long_option("link-executable-command", link_executable_command). +long_option("link-shared-lib-command", link_shared_lib_command). +long_option("ranlib-command", ranlib_command). +long_option("ranlib-flags", ranlib_flags). +long_option("mkinit-command", mkinit_command). +long_option("mkinit-erl-command", mkinit_erl_command). +long_option("demangle-command", demangle_command). +long_option("filtercc-command", filtercc_command). +long_option("trace-libs", trace_libs). +long_option("thread-libs", thread_libs). +long_option("hwloc-libs", hwloc_libs). +long_option("hwloc-static-libs", hwloc_static_libs). +long_option("shared-libs", shared_libs). +long_option("math-lib", math_lib). +long_option("readline-libs", readline_libs). +long_option("linker-opt-separator", linker_opt_separator). +long_option("linker-debug-flags", linker_debug_flags). +long_option("shlib-linker-debug-flags", shlib_linker_debug_flags). +long_option("linker-trace-flags", linker_trace_flags). +long_option("shlib-linker-trace-flags", shlib_linker_trace_flags). +long_option("linker-thread-flags", linker_thread_flags). +long_option("shlib-linker-thread-flags", shlib_linker_thread_flags). +long_option("linker-static-flags", linker_static_flags). +long_option("linker-strip-flag", linker_strip_flag). +long_option("linker-link-lib-flag", linker_link_lib_flag). +long_option("linker-link-lib-suffix", linker_link_lib_suffix). +long_option("shlib-linker-link-lib-flag", shlib_linker_link_lib_flag). +long_option("shlib-linker-link-lib-suffix", shlib_linker_link_lib_suffix). +long_option("linker-path-flag", linker_path_flag). +long_option("linker-rpath-flag", linker_rpath_flag). +long_option("linker-rpath-separator", linker_rpath_separator). +long_option("shlib-linker-rpath-flag", shlib_linker_rpath_flag). +long_option("shlib-linker-rpath-separator", shlib_linker_rpath_separator). +long_option("linker-allow-undefined-flag", linker_allow_undefined_flag). +long_option("linker-error-undefined-flag", linker_error_undefined_flag). +long_option("shlib-linker-use-install-name", shlib_linker_use_install_name). +long_option("shlib-linker-install-name-flag", shlib_linker_install_name_flag). +long_option("shlib-linker-install-name-path", shlib_linker_install_name_path). +long_option("java-archive-command", java_archive_command). + +% build system options +long_option("make", make). +long_option("keep-going", keep_going). +long_option("rebuild", rebuild). +long_option("jobs", jobs). +long_option("track-flags", track_flags). +long_option("track-options", track_flags). +long_option("invoked-by-mmc-make", invoked_by_mmc_make). +long_option("pre-link-command", pre_link_command). +long_option("extra-init-command", extra_init_command). +long_option("mercury-configuration-directory", + mercury_configuration_directory_special). +long_option("mercury-config-dir", + mercury_configuration_directory_special). +long_option("install-prefix", install_prefix). +long_option("install-command", install_command). +long_option("install-command-dir-option", install_command_dir_option). +long_option("use-symlinks", use_symlinks). +long_option("library-grade", libgrades). +long_option("libgrade", libgrades). +long_option("libgrades-include-component", libgrades_include_components). +long_option("libgrades-include", libgrades_include_components). +long_option("libgrades-exclude-component", libgrades_exclude_components). +long_option("libgrades-exclude", libgrades_exclude_components). +long_option("library-linkage", lib_linkages). +long_option("lib-linkage", lib_linkages). +long_option("flags", flags_file). +long_option("flags-file", flags_file). +long_option("options-file", options_files). +long_option("config-file", config_file). +long_option("options-search-directory", options_search_directories). +long_option("use-subdirs", use_subdirs). +long_option("use-grade-subdirs", use_grade_subdirs). +long_option("search-directory", search_directories). +long_option("intermod-directory", intermod_directories). +long_option("use-search-directories-for-intermod", + use_search_directories_for_intermod). +long_option("libgrade-install-check", libgrade_install_check). +long_option("order-make-by-timestamp", order_make_by_timestamp). +long_option("show-make-times", show_make_times). +long_option("extra-lib-header", extra_library_header). +long_option("extra-library-header", extra_library_header). +long_option("restricted-command-line", restricted_command_line). +long_option("env-type", env_type). +long_option("host-env-type", host_env_type). +long_option("target-env-type", target_env_type). + +% misc options +long_option("typecheck-ambiguity-warn-limit", + typecheck_ambiguity_warn_limit). +long_option("typecheck-ambiguity-error-limit", + typecheck_ambiguity_error_limit). +long_option("help", help). +long_option("version", version). +long_option("filenames-from-stdin", filenames_from_stdin). +long_option("fullarch", fullarch). +long_option("cross-compiling", cross_compiling). +long_option("local-module-id", local_module_id). +long_option("analysis-file-cache-dir", analysis_file_cache_dir). +long_option("bug-intermod-2002-06-13", compiler_sufficiently_recent). +long_option("bug-intermod-2006-09-28", compiler_sufficiently_recent). +long_option("bug-foreign_import-2002-08-06", compiler_sufficiently_recent). +long_option("install-opt-files-2002-08-30", compiler_sufficiently_recent). +long_option("read-config-file-2003-03-01", compiler_sufficiently_recent). +% XXX this option won't be recognised because of the "no-" prefix, +% but "no-no-" will be recognised. +long_option("no-noncompact-ho-call-2004-01-15", compiler_sufficiently_recent). +long_option("trace-io-builtins-2006-08-14", compiler_sufficiently_recent). +long_option("compound-compare-builtins-2007-07-09", + compiler_sufficiently_recent). +% XXX this option won't be recognised because of the "no-" prefix, +% but "no-no-" will be recognised. +long_option("no-det-warning-compound-compare-2007-07-17", + compiler_sufficiently_recent). +long_option("foreign-enum-switch-fix", + compiler_sufficiently_recent). +long_option("failing-disjunct-in-switch-dup-fix", + compiler_sufficiently_recent). +long_option("store-at-ref-impure-2008-09-11", + compiler_sufficiently_recent). +long_option("java-export-ref-out", compiler_sufficiently_recent). +long_option("java-generics-2010-04-13", + compiler_sufficiently_recent). +long_option("experiment", experiment). +long_option("ignore-par-conjunctions", + ignore_par_conjunctions). +long_option("control-granularity", control_granularity). +long_option("distance-granularity", distance_granularity). +long_option("implicit-parallelism", implicit_parallelism). +long_option("feedback-file", feedback_file). +long_option("par-loop-control", par_loop_control). +long_option("par-loop-control-preserve-tail-recursion", + par_loop_control_preserve_tail_recursion). + +%-----------------------------------------------------------------------------% + +special_handler(grade, string(Grade), OptionTable0, Result) :- + ( convert_grade_option(Grade, OptionTable0, OptionTable) -> + Result = ok(OptionTable) + ; + Result = error("invalid grade `" ++ Grade ++ "'") + ). +special_handler(il, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("il"), !OptionTable). +special_handler(il_only, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("il"), !OptionTable), + map.set(target_code_only, bool(yes), !OptionTable). +special_handler(compile_to_c, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("c"), !OptionTable), + map.set(target_code_only, bool(yes), !OptionTable). +special_handler(java, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("java"), !OptionTable). +special_handler(java_only, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("java"), !OptionTable), + map.set(target_code_only, bool(yes), !OptionTable). +special_handler(csharp, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("csharp"), !OptionTable). +special_handler(csharp_only, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("csharp"), !OptionTable), + map.set(target_code_only, bool(yes), !OptionTable). +special_handler(x86_64, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("x86_64"), !OptionTable). +special_handler(x86_64_only, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("x86_64"), !OptionTable), + map.set(target_code_only, bool(yes), !OptionTable). +special_handler(erlang, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("erlang"), !OptionTable). +special_handler(erlang_only, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(target, string("erlang"), !OptionTable), + map.set(target_code_only, bool(yes), !OptionTable). +special_handler(profiling, bool(Value), !.OptionTable, ok(!:OptionTable)) :- + map.set(profile_time, bool(Value), !OptionTable), + map.set(profile_calls, bool(Value), !OptionTable), + map.set(profile_memory, bool(no), !OptionTable), + map.set(profile_deep, bool(no), !OptionTable). +special_handler(time_profiling, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(profile_time, bool(yes), !OptionTable), + map.set(profile_calls, bool(yes), !OptionTable), + map.set(profile_memory, bool(no), !OptionTable), + map.set(profile_deep, bool(no), !OptionTable). +special_handler(memory_profiling, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(profile_time, bool(no), !OptionTable), + map.set(profile_calls, bool(yes), !OptionTable), + map.set(profile_memory, bool(yes), !OptionTable), + map.set(profile_deep, bool(no), !OptionTable). +special_handler(deep_profiling, none, !.OptionTable, ok(!:OptionTable)) :- + map.set(profile_time, bool(no), !OptionTable), + map.set(profile_calls, bool(no), !OptionTable), + map.set(profile_memory, bool(no), !OptionTable), + map.set(profile_deep, bool(yes), !OptionTable). +special_handler(inlining, bool(Value), !.OptionTable, ok(!:OptionTable)) :- + map.set(inline_simple, bool(Value), !OptionTable), + map.set(inline_builtins, bool(Value), !OptionTable), + map.set(inline_single_use, bool(Value), !OptionTable), + ( + Value = yes, + map.set(inline_compound_threshold, int(10), !OptionTable) + ; + Value = no, + map.set(inline_compound_threshold, int(0), !OptionTable) + ). +special_handler(everything_in_one_c_function, none, !.OptionTable, + ok(!:OptionTable)) :- + map.set(procs_per_c_function, int(0), !OptionTable). +special_handler(reclaim_heap_on_failure, bool(Value), !.OptionTable, + ok(!:OptionTable)) :- + map.set(reclaim_heap_on_semidet_failure, bool(Value), !OptionTable), + map.set(reclaim_heap_on_nondet_failure, bool(Value), !OptionTable). +special_handler(strict_sequential, none, !.OptionTable, ok(!:OptionTable)) :- + override_options([ + reorder_conj - bool(no), + reorder_disj - bool(no), + fully_strict - bool(yes) + ], !OptionTable). +special_handler(inhibit_warnings, bool(Inhibit), !.OptionTable, + ok(!:OptionTable)) :- + bool.not(Inhibit, Enable), + override_options([ + inhibit_accumulator_warnings - bool(Inhibit), + warn_singleton_vars - bool(Enable), + warn_overlapping_scopes - bool(Enable), + warn_det_decls_too_lax - bool(Enable), + warn_inferred_erroneous - bool(Enable), + warn_nothing_exported - bool(Enable), + warn_interface_imports - bool(Enable), + warn_missing_opt_files - bool(Enable), + warn_missing_trans_opt_files - bool(Enable), + warn_missing_trans_opt_deps - bool(Enable), + warn_unification_cannot_succeed - bool(Enable), + warn_simple_code - bool(Enable), + warn_missing_module_name - bool(Enable), + warn_wrong_module_name - bool(Enable), + warn_smart_recompilation - bool(Enable), + warn_undefined_options_variables - bool(Enable), + warn_target_code - bool(Enable), + warn_up_to_date - bool(Enable), + warn_stubs - bool(Enable), + warn_dead_procs - bool(Enable), + warn_table_with_inline - bool(Enable), + warn_non_term_special_preds - bool(Enable), + warn_insts_without_matching_type - bool(Enable) + ], !OptionTable). +special_handler(infer_all, bool(Infer), !.OptionTable, ok(!:OptionTable)) :- + override_options([ + infer_types - bool(Infer), + infer_modes - bool(Infer), + infer_det - bool(Infer) + ], !OptionTable). +special_handler(opt_space, none, !.OptionTable, ok(!:OptionTable)) :- + opt_space(OptionSettingsList), + override_options(OptionSettingsList, !OptionTable). +special_handler(opt_level, int(N0), !.OptionTable, ok(!:OptionTable)) :- + ( N0 > 6 -> + N = 6 + ; N0 < -1 -> + N = -1 + ; + N = N0 + ), + map.set(opt_level_number, int(N), !OptionTable), + set_opt_level(N, !OptionTable). +special_handler(optimize_saved_vars, bool(Optimize), + !.OptionTable, ok(!:OptionTable)) :- + map.set(optimize_saved_vars_const, bool(Optimize), !OptionTable), + map.set(optimize_saved_vars_cell, bool(Optimize), !OptionTable). +special_handler(mercury_library_directory_special, string(Dir), + !.OptionTable, ok(!:OptionTable)) :- + !:OptionTable = option_table_add_mercury_library_directory( + !.OptionTable, Dir). +special_handler(search_library_files_directory_special, string(Dir), + OptionTable0, ok(OptionTable)) :- + OptionTable = option_table_add_search_library_files_directory( + OptionTable0, Dir). +special_handler(mercury_library_special, string(Lib), + OptionTable0, ok(OptionTable)) :- + OptionTable = + list.foldl(append_to_accumulating_option, [ + link_libraries - Lib, + mercury_libraries - Lib, + init_files - (Lib ++ ".init") + ], OptionTable0). +special_handler(mercury_standard_library_directory_special, + maybe_string(MaybeStdLibDir), OptionTable0, ok(OptionTable)) :- + OptionTable = + map.set(map.set(OptionTable0, + mercury_standard_library_directory, maybe_string(MaybeStdLibDir)), + mercury_configuration_directory, maybe_string(MaybeStdLibDir)). +special_handler(mercury_configuration_directory_special, + string(ConfDir), OptionTable0, ok(OptionTable)) :- + OptionTable = map.set(OptionTable0, mercury_configuration_directory, + maybe_string(yes(ConfDir))). +special_handler(quoted_cflag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(cflags, Flag, OptionTable0, OptionTable). +special_handler(quoted_gcc_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(gcc_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_clang_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(clang_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_msvc_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(msvc_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_java_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(java_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_ilasm_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(ilasm_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_csharp_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(csharp_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_erlang_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(erlang_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_ld_flag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(ld_flags, Flag, OptionTable0, OptionTable). +special_handler(quoted_ld_libflag, string(Flag), + OptionTable0, ok(OptionTable)) :- + handle_quoted_flag(ld_libflags, Flag, OptionTable0, OptionTable). +special_handler(linkage_special, string(Flag), OptionTable0, Result) :- + ( ( Flag = "shared" ; Flag = "static" ) -> + Result = ok( + (OptionTable0 ^ elem(mercury_linkage) := string(Flag)) + ^ elem(linkage) := string(Flag)) + ; + Result = error("argument of `--linkage' should be either " ++ + """shared"" or ""static"".") + ). +special_handler(mercury_linkage_special, string(Flag), + OptionTable0, Result) :- + ( ( Flag = "shared" ; Flag = "static" ) -> + Result = ok(OptionTable0 ^ elem(mercury_linkage) := string(Flag)) + ; + Result = error("argument of `--mercury-linkage' should be either " ++ + """shared"" or ""static"".") + ). + +special_handler(env_type, string(EnvTypeStr), OptionTable0, ok(OptionTable)) :- + OptionTable = + map.set(map.set(OptionTable0, + host_env_type, string(EnvTypeStr)), + target_env_type, string(EnvTypeStr)). + +special_handler(inform_inferred, bool(Inform), !.OptionTable, + ok(!:OptionTable)) :- + override_options([ + inform_inferred_types - bool(Inform), + inform_inferred_modes - bool(Inform) + ], !OptionTable). + +%-----------------------------------------------------------------------------% + +option_table_add_mercury_library_directory(OptionTable0, Dir) = + % The init_file_directories and link_library_directories for Mercury + % libraries are grade dependent, so they need to be handled in + % handle_options.m after we know the grade. + list.foldl(append_to_accumulating_option, [ + search_directories - dir.make_path_name(Dir, "ints"), + c_include_directory - dir.make_path_name(Dir, "inc"), + erlang_include_directory - dir.make_path_name(Dir, "inc"), + mercury_library_directories - Dir + ], OptionTable0). + +option_table_add_search_library_files_directory(OptionTable0, Dir) = + % Grade dependent directories need to be handled in handle_options.m + % after we know the grade. + list.foldl(append_to_accumulating_option, [ + search_directories - Dir, + c_include_directory - Dir, + erlang_include_directory - Dir, + search_library_files_directories - Dir + ], OptionTable0). + +:- func append_to_accumulating_option(pair(option, string), + option_table) = option_table. + +append_to_accumulating_option(Option - Value, OptionTable0) = + OptionTable0 ^ elem(Option) := + accumulating( + getopt_io.lookup_accumulating_option(OptionTable0, Option) + ++ [Value]). + +:- pred set_opt_level(int::in, option_table::in, option_table::out) is det. + +set_opt_level(N, !OptionTable) :- + % First reset all optimizations to their default + % (the default should be all optimizations off). + option_defaults_2(optimization_option, OptimizationDefaults), + override_options(OptimizationDefaults, !OptionTable), + + % Next enable the optimization levels from 0 up to N. + enable_opt_levels(0, N, !OptionTable). + +:- pred enable_opt_levels(int::in, int::in, + option_table::in, option_table::out) is det. + +enable_opt_levels(N0, N, !OptionTable) :- + ( N0 > N -> + true + ; opt_level(N0, !.OptionTable, OptionSettingsList) -> + override_options(OptionSettingsList, !OptionTable), + N1 = N0 + 1, + enable_opt_levels(N1, N, !OptionTable) + ; + unexpected($module, $pred, "unknown optimization level") + ). + +:- pred override_options(list(pair(option, option_data))::in, + option_table::in, option_table::out) is det. + +override_options([], !OptionTable). +override_options([Option - Value | Settings], !OptionTable) :- + map.set(Option, Value, !OptionTable), + override_options(Settings, !OptionTable). + +%-----------------------------------------------------------------------------% + +:- pred opt_space(list(pair(option, option_data))::out) is det. + +opt_space([ + unneeded_code_copy_limit - int(1), + optimize_dead_procs - bool(yes), + optimize_labels - bool(yes), + optimize_dups - bool(yes), + optimize_proc_dups - bool(yes), + optimize_fulljumps - bool(no), + optimize_reassign - bool(yes), + inline_alloc - bool(no), + use_macro_for_redo_fail - bool(no), + loop_invariants - bool(no) +]). + +%-----------------------------------------------------------------------------% + +:- pred opt_level(int::in, option_table::in, + list(pair(option, option_data))::out) is semidet. + +% Optimization level -1: +% Generate totally unoptimized code; turns off ALL optimizations that +% can be turned off, including HLDS->HLDS, HLDS->LLDS, LLDS->LLDS, LLDS->C, +% and C->object optimizations. +% (However, there are some optimizations that can't be disabled.) + +% Optimization level 0: aim to minimize overall compilation time. +% XXX I just guessed. We should run lots of experiments. + +opt_level(0, _, [ + common_data - bool(yes), + optimize - bool(yes), + optimize_repeat - int(1), + optimize_peep - bool(yes), + optimize_peep_mkword - bool(yes), + static_ground_cells - bool(yes), + smart_indexing - bool(yes), + optimize_jumps - bool(yes), + optimize_labels - bool(yes), + optimize_dead_procs - bool(yes), + excess_assign - bool(yes) % ??? +]). + +% Optimization level 1: apply optimizations which are cheap and +% have a good payoff while still keeping compilation time small. + +opt_level(1, OptionTable, [ + use_local_vars - bool(yes), + c_optimize - bool(yes), % XXX we want `gcc -O1' + optimize_frames - bool(yes), + optimize_delay_slot - bool(DelaySlot), + middle_rec - bool(yes), + emit_c_loops - bool(yes), + optimize_tailcalls - bool(yes) + % dups? +]) :- + getopt_io.lookup_bool_option(OptionTable, have_delay_slot, DelaySlot). + +% Optimization level 2: apply optimizations which have a good +% payoff relative to their cost; but include optimizations +% which are more costly than with -O1. + +opt_level(2, _, [ + optimize_fulljumps - bool(yes), + optimize_repeat - int(3), + optimize_dups - bool(yes), + follow_code - bool(yes), + inline_simple - bool(yes), + inline_single_use - bool(yes), + inline_compound_threshold - int(10), + common_struct - bool(yes), + user_guided_type_specialization - bool(yes), + % XXX While inst `array' is defined as `ground', we can't optimize + % duplicate calls (we might combine calls to `array.init'). + % optimize_duplicate_calls - bool(yes), + simple_neg - bool(yes), + + optimize_initializations - bool(yes) +]). + +% Optimization level 3: apply optimizations which usually have a good +% payoff even if they increase compilation time quite a bit. + +opt_level(3, _, [ + optimize_saved_vars_const - bool(yes), + optimize_unused_args - bool(yes), + optimize_higher_order - bool(yes), + deforestation - bool(yes), + local_constraint_propagation - bool(yes), + constant_propagation - bool(yes), + optimize_reassign - bool(yes), + % Disabled until a bug in extras/trailed_update/var.m is resolved. + % introduce_accumulators - bool(yes), + optimize_repeat - int(4) +]). + +% Optimization level 4: apply optimizations which may have some +% payoff even if they increase compilation time quite a bit. + +% Currently this enables the use of local variables +% and increases the inlining thresholds. + +opt_level(4, _, [ + inline_simple_threshold - int(8), + inline_compound_threshold - int(20), + higher_order_size_limit - int(30) +]). + +% Optimization level 5: apply optimizations which may have some +% payoff even if they increase compilation time a lot. + +% Currently this enables the search for construction unifications that can be +% delayed past failing computations, allows more passes of the low-level +% optimizations, and increases the inlining thresholds still further. +% We also enable eliminate_local_vars only at this level, +% because that pass is implemented pretty inefficiently. + +opt_level(5, _, [ + optimize_repeat - int(5), + delay_construct - bool(yes), + inline_compound_threshold - int(100), + higher_order_size_limit - int(40), + eliminate_local_vars - bool(yes), + loop_invariants - bool(yes) +]). + +% Optimization level 6: apply optimizations which may have any payoff even if +% they increase compilation time to completely unreasonable levels. + +% Currently this sets `everything_in_one_c_function', which causes the compiler +% to put everything in the one C function and treat calls to predicates in the +% same module as local. We also enable inlining of GC_malloc(), redo(), and +% fail(). + +opt_level(6, _, [ + procs_per_c_function - int(0), % everything in one C function + inline_alloc - bool(yes), + use_macro_for_redo_fail - bool(yes) +]). + +% The following optimization options are not enabled at any level: +% +% checked_nondet_tailcalls: +% This is deliberate, because the transformation +% might make code run slower. +% +% constraint_propagation: +% I think this is deliberate, because the transformation +% might make code run slower? +% +% unneeded_code: +% Because it can cause slowdowns at high optimization levels; +% cause unknown +% type_specialization: +% XXX why not? +% +% introduce_accumulators: +% XXX Disabled until a bug in extras/trailed_update/var.m +% is resolved. +% +% optimize_constructor_last_call: +% Not a speedup in general. + +%-----------------------------------------------------------------------------% + +:- pred handle_quoted_flag(option::in, string::in, + option_table::in, option_table::out) is det. + +handle_quoted_flag(Option, Flag, Table, + append_to_accumulating_option(Option - quote_arg(Flag), Table)). + +quote_arg(Arg0) = Arg :- + % XXX Instead of using dir.use_windows_paths, this should really + % test whether we are using a Unix or Windows shell. + ( dir.use_windows_paths -> + ( ( string_contains_whitespace(Arg0) ; Arg0 = "" ) -> + Arg = """" ++ Arg0 ++ """" + ; + Arg = Arg0 + ) + ; + ArgList = quote_arg_unix(string.to_char_list(Arg0)), + ( + ArgList = [], + Arg = """""" + ; + ArgList = [_ | _], + ( + list.member(Char, ArgList), + \+ + ( char.is_alnum_or_underscore(Char) + ; Char = ('-') + ; Char = ('/') + ; Char = ('.') + ; Char = (',') + ; Char = (':') + ) + -> + Arg = """" ++ string.from_char_list(ArgList) ++ """" + ; + Arg = string.from_char_list(ArgList) + ) + ) + ). + +:- pred string_contains_whitespace(string::in) is semidet. + +string_contains_whitespace(Str) :- + Chars = string.to_char_list(Str), + some [Char] ( + list.member(Char, Chars), + char.is_whitespace(Char) + ). + +:- func quote_arg_unix(list(char)) = list(char). + +quote_arg_unix([]) = []. +quote_arg_unix([Char | Chars0]) = Chars :- + Chars1 = quote_arg_unix(Chars0), + ( quote_char_unix(Char) -> + Chars = [('\\'), Char | Chars1] + ; + Chars = [Char | Chars1] + ). + +:- pred quote_char_unix(char::in) is semidet. + +quote_char_unix('\\'). +quote_char_unix('"'). +quote_char_unix('`'). +quote_char_unix('$'). + +%-----------------------------------------------------------------------------% + +inconsequential_options(InconsequentialOptions) :- + option_defaults_2(warning_option, WarningOptions), + option_defaults_2(verbosity_option, VerbosityOptions), + option_defaults_2(internal_use_option, InternalUseOptions), + option_defaults_2(build_system_option, BuildSystemOptions), + assoc_list.keys(WarningOptions, WarningKeys), + assoc_list.keys(VerbosityOptions, VerbosityKeys), + assoc_list.keys(InternalUseOptions, InternalUseKeys), + assoc_list.keys(BuildSystemOptions, BuildSystemKeys), + Keys = WarningKeys ++ VerbosityKeys ++ InternalUseKeys ++ BuildSystemKeys, + InconsequentialOptions = set.from_list(Keys). + +%-----------------------------------------------------------------------------% + +options_help --> + io.write_string("\t-?, -h, --help\n"), + io.write_string("\t\tPrint this usage message.\n"), + options_help_warning, + options_help_verbosity, + options_help_output, + options_help_aux_output, + options_help_semantics, + options_help_termination, + options_help_ctgc, + options_help_compilation_model, + options_help_code_generation, + options_help_optimization, + options_help_hlds_hlds_optimization, + options_help_hlds_llds_optimization, + options_help_llds_llds_optimization, + options_help_mlds_mlds_optimization, + options_help_hlds_elds_optimization, + options_help_output_optimization, + options_help_target_code_compilation, + options_help_link, + options_help_build_system, + options_help_misc. + +:- pred options_help_warning(io::di, io::uo) is det. + +options_help_warning --> + io.write_string("\nWarning Options:\n"), + write_tabbed_lines([ + "-w, --inhibit-warnings", + "\tDisable all warning messages.", + "--halt-at-warn", + "\tThis option causes the compiler to treat all ", + "\twarnings as if they were errors. This means that", + "\tif any warning is issued, the compiler will not", + "\tgenerate code --- instead, it will return a", + "\tnon-zero exit status.", + "--halt-at-syntax-errors", + "\tThis option causes the compiler to halt immediately", + "\tafter syntax checking and not do any semantic checking", + "\tif it finds any syntax errors in the program.", +% "--halt-at-auto-parallel-failure", +% "\tThis option causes the compiler to halt if it cannot perform", +% "\tan auto-parallelization requested by a feedback file.", + "--inhibit-accumulator-warnings", + "\tDon't warn about argument order rearrangement caused", + "\tby --introduce-accumulators.", + "--no-warn-singleton-variables", + "\tDon't warn about variables which only occur once.", + "--no-warn-overlapping-scopes", + "\tDon't warn about variables which occur in overlapping scopes.", + "--no-warn-det-decls-too-lax", + "\tDon't warn about determinism declarations", + "\twhich could have been stricter.", + "--no-warn-inferred-erroneous", + "\tDon't warn about procedures whose determinism is inferred", + "\terroneous but whose determinism declarations are laxer.", + "--no-warn-insts-without-matching-type", + "\tDon't warn about insts that are not consistent with any", + "\tof the types in scope.", + % XXX disabled until compiler unused_imports, + % don't forget to update the user_guide.texi + % "--no-warn-unused-imports", + % "\tDon't warn about modules that are imported but not used.", + "--warn-unused-imports", + "\tWarn about modules that are imported but not used.", + "--no-warn-nothing-exported", + "\tDon't warn about modules which export nothing.", + "--warn-unused-args", + "\tWarn about predicate arguments which are not used.", + "--warn-interface-imports", + "\tWarn about modules imported in the interface, but", + "\twhich are not used in the interface.", + "--no-warn-missing-opt-files", + "\tDisable warnings about `.opt' files which cannot be opened.", + "--warn-missing-trans-opt-files", + "\tEnable warnings about `.trans_opt' files which cannot", + "\tbe opened.", + "--no-warn-missing-trans-opt-deps", + "\tDisable warnings produced when the information required", + "\tto allow `.trans_opt' files to be read when creating other", + "\t`.trans_opt' files has been lost. The information can be", + "\trecreated by running `mmake .depend'", + "--no-warn-non-contiguous-clauses", + "\tDo not generate a warning if the clauses of a predicate or function", + "\tare not contiguous.", + "--warn-non-contiguous-foreign-procs", + "\tGenerate a warning if the clauses and foreign_procs of a predicate", + "\tor function are not contiguous.", + "--warn-non-stratification", + "\tWarn about possible non-stratification of the predicates and/or", + "\tfunctions in the module.", + "\tNon-stratification occurs when a predicate or function can call", + "\titself negatively through some path along its call graph.", + "--no-warn-unification-cannot-succeed", + "\tDisable warnings about unifications which cannot succeed.", + "--no-warn-simple-code", + "\tDisable warnings about constructs which are so", + "\tsimple that they are likely to be programming errors.", + "--warn-duplicate-calls", + "\tWarn about multiple calls to a predicate with the", + "\tsame input arguments.", + "--no-warn-missing-module-name", + "\tDisable warnings for modules that do no start with", + "\ta `:- module' declaration.", + "--no-warn-wrong-module-name", + "\tDisable warnings for modules whose `:- module'", + "\tdeclaration does not match the module's file name.", + "--no-warn-smart-recompilation", + "\tDisable warnings from the smart recompilation system.", + "--no-warn-undefined-options-variables", + "\tDo not warn about references to undefined variables in", + "\toptions files with `--make'.", + "--warn-non-tail-recursion", + "\tWarn about any directly recursive calls that are not tail calls.", + "--no-warn-up-to-date", + "\tDon't warn if targets specified on the command line", + "\twith `--make' are already up to date.", + "--no-warn-stubs", + "\tDisable warnings about procedures for which there are no", + "\tclauses. Note that this option only has any effect if", + "\tthe `--allow-stubs' option (described in the ""Language", + "\tSemantics Options"" section below) is enabled.", + "--warn-dead-procs", + "\tWarn about procedures which are never called.", + "--no-warn-target-code", + "\tDisable warnings from the compiler used to process the", + "\ttarget code (e.g. gcc).", + "--no-warn-table-with-inline", + "\tDisable warnings about tabled procedures that also have", + "\ta `pragma inline' declaration.", + "--no-warn-non-term-special-preds", + "\tDo not warn about types that have user-defined equality or", + "\tcomparison predicates that cannot be proved to terminate.", + "\tThis option is only enabled when termination analysis is enabled.", + "\t(See the ""Termination Analysis Options"" section below).", + "--no-warn-known-bad-format-calls", + "\tDo not warn about calls to string.format or io.format that", + "\tthe compiler knows for sure contain mismatches between the", + "\tformat string and the supplied values.", + "--warn-unknown-format-calls", + "\tWarn about calls to string.format or io.format for which", + "\tthe compiler cannot tell whether there are any mismatches", + "\tbetween the format string and the supplied values.", + "--no-warn-obsolete", + "\tDo not warn about calls to predicates or functions that have", + "\tbeen marked as obsolete.", + "--inform-ite-instead-of-switch", + "\tGenerate informational messages for if-then-elses that could be", + "\treplaced by switches.", + "--no-warn-unresolved-polymorphism", + "\tDo not warn about unresolved polymorphism.", + "--warn-suspicious-foreign-procs", + "\tWarn about possible errors in the bodies of foreign", + "\tprocedures.", + "--no-warn-state-var-shadowing", + "\tDo not warn about one state variable shadowing another.", + "--no-inform-inferred", + "\tDo not generate messages about inferred types or modes.", + "--no-inform-inferred-types", + "\tDo not generate messages about inferred types.", + "--no-inform-inferred-modes", + "\tDo not generate messages about inferred modes." + ]). + +:- pred options_help_verbosity(io::di, io::uo) is det. + +options_help_verbosity --> + io.write_string("\nVerbosity Options:\n"), + write_tabbed_lines([ + "-v, --verbose", + "\tOutput progress messages at each stage in the compilation.", + "-V, --very-verbose", + "\tOutput very verbose progress messages.", + "-E, --verbose-error-messages", + "\tExplain error messages. Asks the compiler to give you a more", + "\tdetailed explanation of any errors it finds in your program.", + "--no-verbose-make", + "\tDisable messages about the progress of builds using", + "\tthe `--make' option.", + "--verbose-commands", + "\tOutput each external command before it is run.", + "\tNote that some commands will only be printed with `--verbose'.", + "--verbose-recompilation", + "\tWhen using `--smart-recompilation', output messages", + "\texplaining why a module needs to be recompiled.", + "--find-all-recompilation-reasons", + "\tFind all the reasons why a module needs to be recompiled,", + "\tnot just the first. Implies `--verbose-recompilation'.", + "--output-compile-error-lines ", + "\tWith `--make', output the first lines of the `.err'", + "\tfile after compiling a module (default: 15).", + "--report-cmd-line-args-doterr", + "\tReport the command line arguments.", + "--report-cmd-line-args-in-doterr", + "\tReport the command line arguments for compilations whose output", + "\tmmake normally redirects to a .err file.", + "-S, --statistics", + "\tOutput messages about the compiler's time/space usage.", + "\tAt the moment this option implies `--no-trad-passes', so you get", + "\tinformation at the boundaries between phases of the compiler.", +% The only sensible way to use --detailed-statistics, based on --very-verbose, +% is implemented automatically in handle_options, so users shouldn't need to be +% aware of it. +% "--detailed-statistics", +% "\tOutput more detailed messages about the compiler's", +% "\ttime/space usage.", + "--proc-size-statistics ", + "\tAppend information about the size of each procedure in the module", + "\tin terms of goals and variables to the end of the named file.", +% --debug-types works only if the compiler was compiled with +% "--trace-flag type_checkpoint". +% "-T, --debug-types", +% "\tOutput detailed debugging traces of the type checking.", + "-N, --debug-modes", + "\tOutput debugging traces of the mode checking.", + "--debug-modes-statistics", + "\tOutput statistics after each step of mode checking.", + "--debug-modes-minimal", + "\tOutput only minimal debugging traces of the mode checking.", + "--debug-modes-verbose", + "\tOutput detailed debugging traces of the mode checking.", + "--debug-modes-pred-id ", + "\tWith --debug-modes, restrict the debugging traces to the", + "\tmode checking of the predicate or function with the specified", + "\tpred id.", +% --debug-dep-par-conj is a developer only option, +% and it is effective only if the compiler was compiled with the right +% trace flags. +% "--debug-dep-par-conj ", +% "\tOutput detailed debugging traces during the dependent", +% "\tAND-parallelism transformation of the predicate with the", +% "\tpredicate id.", + "--debug-det, --debug-determinism", + "\tOutput detailed debugging traces of determinism analysis.", +% --debug-code-gen-pred-id is a developer only option, +% and it is effective only if the compiler was compiled with the right +% trace flags. +% "--debug-code-gen-pred-id ", +% "\tOutput detailed debugging traces of code generation for the", +% "\tpredicate or function with the given pred id.", +% The new termination analyser is currently a work-in-progress. +% + %"--debug-term, --debug-termination", + %"\tOutput detailed debugging traces of the termination2 analysis.", + "--debug-opt", + "\tOutput detailed debugging traces of the optimization process.", + "--debug-opt-pred-id ", + "\tOutput detailed debugging traces of the optimization process", + "\tonly for the predicate/function with the specified pred id.", + "--debug-opt-pred-name ", + "\tOutput detailed debugging traces of the optimization process", + "\tonly for the predicate/function with the specified name.", + "--debug-pd", + "\tOutput detailed debugging traces of the partial", + "\tdeduction and deforestation process.", + "--debug-liveness ", + "\tOutput detailed debugging traces of the liveness analysis", + "\tof the predicate with the given predicate id.", + "--debug-make", + "\tOutput detailed debugging traces of the `--make' option.", +% This can be uncommented when the '--analyse-closures' option is uncommented. +% (See below.) +% "--debug-closure", +% "\tOutput detailed debugging traces of the closure analysis." + "--debug-trail-usage", + "\tOutput detailed debugging traces of the `--analyse-trail-usage'", + "\toption.", + "--debug-intermodule-analysis", + "\tOutput detailed debugging traces of the `--intermodule-analysis'", + "\toption.", + "--debug-indirect-reuse", + "\tOutput detailed debugging traces of the indirect reuse pass of", + "\t`--structure-reuse' option.", + "--debug-type-rep", + "\tOutput debugging traces of type representation choices." +% The mode constraints code is still experimental so this option is +% currently commented out. +% "--debug-mode-constraints", +% "\tOutput detailed debugging traces of the `--prop-mode-constraints'", +% "\toption." + ]). + +:- pred options_help_output(io::di, io::uo) is det. + +options_help_output --> + io.write_string("\nOutput Options:\n"), + write_tabbed_lines([ + "These options are mutually exclusive.", + "Only the first one specified will apply.", + "If none of these options are specified, the default action", + "is to link the named modules to produce an executable.\n", + "-f, --generate-source-file-mapping", + "\tOutput the module name to file name mapping for the list", + "\tof source files given as non-option arguments to mmc", + "\tto `Mercury.modules'. This must be done before", + "\t`mmc --generate-dependencies' if there are any modules", + "\tfor which the file name does not match the module name.", + "\tIf there are no such modules the mapping need not be", + "\tgenerated.", + "-M, --generate-dependencies", + "\tOutput `Make'-style dependencies for the module", + "\tand all of its dependencies to `.dep'.", + "--generate-dependency-file", + "\tOutput `Make'-style dependencies for the module", + "\tto `.d'.", + "--generate-module-order", + "\tOutput the strongly connected components of the module", + "\tdependency graph in top-down order to `.order'.", + "\tImplies --generate-dependencies.", + "--generate-standalone-interface ", + "\tOutput a stand-alone interface.", + "\t is used as the basename of any files generated for", + "\tthe stand-alone interface. (See the Stand-alone Interface", + "\tchapter of the Mercury User's Guide for further details.)", + "-i, --make-int, --make-interface", + "\tWrite the module interface to `.int',", + "\tand write the short interface to `.int2'", + "\tThis option should only be used by mmake.", + "--make-priv-int, --make-private-interface", + "\tWrite the private interface to `.int0'.", + "\tThis option should only be used by mmake.", + "--make-short-int, --make-short-interface", + "\tWrite the unqualified short interface to `.int3'.", + "\tThis option should only be used by mmake.", + "--make-opt-int, --make-optimization-interface", + "\tWrite inter-module optimization information to", + "\t`.opt'.", + "\tThis option should only be used by mmake.", + "--make-trans-opt", + "--make-transitive-optimization-interface", + "\tOutput transitive optimization information", + "\tinto the `.trans_opt' file.", + "\tThis option should only be used by mmake.", + "-x,--make-xml-doc,--make-xml-documentation", + "\tOutput XML documentation of the module", + "\tinto the `.xml' file.", + "\tThis option should only be used by mmake.", + "-P, --convert-to-mercury", + "\tConvert to Mercury. Output to file `.ugly'", + "\tThis option acts as a Mercury ugly-printer.", + "-t, --typecheck-only", + "\tJust check that the code is syntactically correct and", + "\ttype-correct. Don't check modes or determinism,", + "\tand don't generate any code.", + "-e, --errorcheck-only", + "\tCheck the module for errors, but do not generate any code.", + "-C, --target-code-only", + "\tGenerate target code (i.e. C code in `.c',", + "\tIL code in `.il', or Java code in", + "\t`.java'), but not object code.", + "-c, --compile-only", + "\tGenerate C code in `.c' and object code in `.o'", + "\tbut do not attempt to link the named modules.", + % --compile-to-shared-lib is intended only for use + % by the debugger's interactive query facility, + % so it isn't documented. + "--output-grade-string", + "\tCompute the grade of the library to link with based on", + "\tthe command line options, and print it to the standard", + "\toutput.", + "--output-link-command", + "\tPrint the command used to link executables to the", + "\tstandard output.", + "--output-shared-lib-link-command", + "\tPrint the command used to link shared libraries to the", + "\tstandard output.", + "--output-libgrades", + "\tPrint the list of compilation grades in which a library", + "\tto be installed should be built to the standard output.", + "--output-cc", + "\tPrint the command used to invoke the C compiler to the", + "\tstandard output.", + "--output-cc-type, --output-c-compiler-type", + "\tPrint the C compiler type to the standard output.", + "--output-cflags", + "\tPrint the flags with which the C compiler will be invoked", + "\tto the standard output.", + "--output-csharp-compiler-type", + "\tPrint the C# compiler type to the standard output.", + "--output-library-link-flags", + "\tPrint the flags that are passed to linker in order to link", + "\tagainst the current set of libraries. This includes the", + "\tstandard library as well as any other libraries specified", + "\tvia the --ml option. The flags are printed to the standard", + "\toutput.", + "--output-grade-defines", + "\tPrint the flags that are passed to the C compiler to define the", + "\tmacros used to specify the compilation grade.", + "\tThe flags are printed to the standard output.", + "--output-c-include-dir-flags, --output-c-include-directory-flags", + "\tPrint the flags that are passed to the C compiler to specify", + "\twhich directories to search for C header files.", + "\tThis includes the C header files from the standard library.", + "\tThe flags are printed to the standard output." + ]). + +:- pred options_help_aux_output(io::di, io::uo) is det. + +options_help_aux_output --> + io.write_string("\nAuxiliary Output Options:\n"), + write_tabbed_lines([ + "--smart-recompilation", + "\tWhen compiling, write program dependency information", + "\tto be used to avoid unnecessary recompilations if an", + "\timported module's interface changes in a way which does", + "\tnot invalidate the compiled code. `--smart-recompilation'", + "\tdoes not yet work with `--intermodule-optimization'.", + "--no-assume-gmake", + "\tWhen generating `.dep' files, generate Makefile", + "\tfragments that use only the features of standard make;", + "\tdo not assume the availability of GNU Make extensions.", + "\tWhen generating `.dep' files, generate dependencies", + "\tfor use by `mmc --make' in addition to the dependencies", + "\tused by mmake.", + "--generate-mmc-deps", + "--generate-mmc-make-module-dependencies", + "\tGenerate dependencies for use by `mmc --make' even", + "\twhen using Mmake. This is recommended when building a", + "\tlibrary for installation.", + +% XXX The source-to-source debugging transform is not ready for public +% consumption. + %"--link-ssdebug-libs", + %"--link-ssdb-libs", + %"\tLink the source to source debugging libraries into the", + %"\tthe executable.", + %"--ss-trace {none, shallow, deep}", + %"\tThe trace level to use for source to source debugging of", + %"\tthe given module.", + +% "--trace decl" is not documented, because it is for backwards +% compatibility only. It is now equivalent to `--trace rep'. +% "--trace {minimum, shallow, deep, decl, rep, default}", + "--trace {minimum, shallow, deep, rep, default}", + "\tGenerate code that includes the specified level", + "\tof execution tracing.", + "\tSee the Debugging chapter of the Mercury User's Guide", + "\tfor details.", + "--exec-trace-tail-rec", + "\tGenerate TAIL events for self-tail-recursive calls instead of", + "\tEXIT events. This allows these recursive calls to reuse", + "\ttheir parent call's stack frame, but it also means that", + "\tthe debugger won't have access to the contents of the reused", + "\tstack frames", +% "--suppress-trace ,", +% "\tSuppress the named aspects of the execution tracing system.", +% This is a developer-only option: +% "--force-disable-trace", +% "\tForce tracing to be set to trace level none.", +% "\tThis overrides all other tracing/grade options.", +% "\tIts main use is to turn off tracing in the browser", +% "\tdirectory, even for .debug and .decldebug grades.", + "--trace-optimized", + "\tDo not disable optimizations that can change the trace.", +% "--trace-prof" is not documented because if is only intended for developers +% of the deep profiler. +% "--trace-prof"", +% "\tEnable tracing of deep profiling service predicates.", +% I/O tabling is deliberately not documented. It is mean to be switched on, +% with consistent parameters, in debugging grades, and to be consistently +% switched off in non-debugging grades. Inconsistent use of the options +% governing I/O tabling can yield core dumps from the debugger, so these +% options are for implementors only. +% "--trace-table-io", +% "\tEnable the tabling of I/O actions, to allow the debugger", +% "\tto execute retry commands across I/O actions.", +% "--trace-table-io-only-retry", +% "\tSet up I/O tabling to support only retries across I/O", +% "\tactions, not the printing of actions or declarative", +% "\tdebugging. This reduces the size of the I/O action table.", +% "--trace-table-io-states", +% "\tWhen tabling I/O actions, table the io.state arguments", +% "\ttogether with the others. This should be required iff", +% "\tvalues of type io.state actually contain information.", +% "--trace-table-io-require", +% "\tRequire the tabling of I/O actions, i.e. generate an error", +% "\tif an I/O primitive does not have the tabled_for_io", +% "\tannotation.", +% "--trace-table-io-all", +% "\tTable all I/O actions even in the absence of annotations.", +% "\tIf a primitive has no annotation specifying the type of", +% "\ttabling required, deduce it from the values of the other", +% "\tannotations.", + "--trace-flag ", + "\tEnable the trace goals that depend on the trace flag.", + "--profile-optimized", + "\tDo not disable optimizations that can distort deep profiles.", + "--no-delay-death", + "\tWhen the trace level is `deep', the compiler normally", + "\tpreserves the values of variables as long as possible, even", + "\tbeyond the point of their last use, in order to make them", + "\taccessible from as many debugger events as possible.", + "\tHowever, it will not do this if this option is given.", + "--delay-death-max-vars ", + "\tDelay the deaths of variables only when the number of variables", + "\tin the procedure is no more than N. The default value is 1000.", + "--stack-trace-higher-order", + "\tEnable stack traces through predicates and functions with", + "\thigher-order arguments, even if stack tracing is not", + "\tsupported in general.", +% This is a developer-only option: +% "--force-disable-ssdebug", +% "\tDisable ssdebug transformation even in ssdebug grades.", +% "--tabling-via-extra-args", +% "\tGenerate output via extra_args in foreign_procs.", +% "--allow-table-reset", +% "\tGenerate C code for resetting tabling data structures.", + "--generate-bytecode", + "\tOutput a bytecode form of the module for use", + "\tby an experimental debugger.", + "-n-, --no-line-numbers", + "\tDo not put source line numbers in the generated code.", + "\tThe generated code may be in C (the usual case),", + "\tor in Mercury (with the option --convert-to-mercury).", + "--auto-comments", + "\tOutput comments in the `.c' file.", +% This option is for developers only. Since it can include one C comment inside +% another, the resulting code is not guaranteed to be valid C. +% "--frameopt-comments", +% "\tGet frameopt.m to generate comments describing its operation.", + "\t(The code may be easier to understand if you also", + "\tuse the `--no-llds-optimize' option.)", + "--max-error-line-width ", + "\tSet the maximum width of an error message line to characters", + "\t(unless a long single word forces the line over this limit).", + "--show-dependency-graph", + "\tWrite out the dependency graph to `.dependency_graph'.", + "--imports-graph", + "\tWrite out the imports graph to `.imports_graph'.", + "\tThe imports graph contains the directed graph module A", + "\timports module B.", + "\tThe resulting file can be processed by the graphviz tools.", +% This option is for developers only. +% "--dump-trace-counts ", +% "\tIf the compiler was compiled with debugging enabled and is being", +% "\trun with trace counting enabled, write out the trace counts file", +% "\tafter the specified stage to `.trace_counts.-'.", +% "\tStage numbers range from 1-599.", +% "\tMultiple dump options accumulate.", + "-d , --dump-hlds ", + "\tDump the HLDS (high level intermediate representation) after", + "\tthe specified stage to `.hlds_dump.-'.", + "\tStage numbers range from 1-599.", + "\tMultiple dump options accumulate.", + "--dump-hlds-pred-id ", + "\tDump the HLDS only of the predicate/function with the given", + "\tpred id.", + "--dump-hlds-pred-name ", + "\tDump the HLDS only of the predicate/function with the given", + "\tname.", +% This option is for developers only. +% "-D, --dump-hlds-alias ", +% "\tWith `--dump-hlds', include extra detail in the dump.", +% "\tEach dump alias is shorthand for a set of option letters.", +% "\tThe list of aliases is in handle_options.m", + "--dump-hlds-options ", + "\tWith `--dump-hlds', include extra detail in the dump.", + "\tEach type of detail is included in the dump if its", + "\tcorresponding letter occurs in the option argument", + "\t(see the Mercury User's Guide for details).", + "--dump-hlds-inst-limit ", + "\tDump at most N insts in each inst table.", + "--dump-hlds-file-suffix ", + "\tAppend the given suffix to the names of the files created by", + "\tthe `--dump-hlds' option.", + "--dump-same-hlds", + "\tCreate a file for a HLDS stage even if the file notes only that", + "\tthis stage is identical to the previously dumped HLDS stage.", + "--dump-mlds ", + "\tDump the MLDS (medium level intermediate representation)", + "\tafter the specified stage, as C code,", + "\tto`.c_dump.-',", + "\tand `.h_dump.-'.", + "\tStage numbers range from 1-99.", + "\tMultiple dump options accumulate.", + "--verbose-dump-mlds ", + "\tDump the internal compiler representation of the MLDS, after", + "\tthe specified stage, to `.mlds_dump.-'." +% The mode constraints code is still experimental so these options are +% currently commented out. +% "--mode-constraints" +% "\tRun constraint based mode analysis. The default is to", +% "\tuse the robdd solution using the full (subtyping)", +% "\tconstraints and dump results.", +% "--simple-mode-constraints", +% "\tUse only the simplified constraint system when running", +% "\tthe robdd solver constraints based mode analysis.", +% "--prop-mode-constraints", +% "\tUse the new propagation solver for constraints based", +% "\tmode analysis.", +% IL options are commented out to reduce confusion. +% "--sign-assembly", +% "\tSign the current assembly with the Mercury strong name.", +% "\tTo use assemblies created with this command all the Mercury", +% "\tmodules must be compiled with this option enabled.", +% "\tThis option is specific to the IL backend, and is likely", +% "\tto be deprecated at a later date." + + /* XXX currently broken. + "--separate-assemblies", + "\tPlace sub-modules in separate assemblies.", + "\tThis option is specific to the IL backend." + */ + ]). + +:- pred options_help_semantics(io::di, io::uo) is det. + +options_help_semantics --> + io.write_string("\nLanguage semantics options:\n"), + io.write_string("(See the Mercury language reference manual for detailed explanations.)\n"), + write_tabbed_lines([ + "--no-reorder-conj", + "\tExecute conjunctions left-to-right except where the modes imply", + "\tthat reordering is unavoidable.", + "--no-reorder-disj", + "\tExecute disjunctions strictly left-to-right.", + "--no-fully-strict", + "\tAllow infinite loops or goals with determinism erroneous to be", + "\toptimised away.", + "--allow-stubs", + "\tAllow procedures to have no clauses. Any calls to", + "\tsuch procedures will raise an exception at run-time.", + "\tThis option is sometimes useful during program development.", + "\t(See also the documentation for the `--warn-stubs' option", + "\tin the ""Warning Options"" section.)", + "--infer-all", + "\tAbbreviation for `--infer-types --infer-modes --infer-det'.", + "--infer-types", + "\tIf there is no type declaration for a predicate or function,", + "\ttry to infer the type, rather than just reporting an error.", + "--infer-modes", + "\tIf there is no mode declaration for a predicate,", + "\ttry to infer the modes, rather than just reporting an error.", + + "--no-infer-det, --no-infer-determinism", + "\tIf there is no determinism declaration for a procedure,", + "\tdon't try to infer the determinism, just report an error.", + "--type-inference-iteration-limit ", + "\tPerform at most passes of type inference (default: 60).", + "--mode-inference-iteration-limit ", + "\tPerform at most passes of mode inference (default: 30).", + "--event-set-file-name ", + "\tGet the specification of user-defined events from ." + ]). + + +:- pred options_help_ctgc(io::di, io::uo) is det. + +options_help_ctgc --> + io.write_string("\nCompile Time Garbage Collection Options:\n"), + write_tabbed_lines([ + "--structure-sharing", + "\tPerform structure sharing analysis.", + "--structure-sharing-widening ", + "\tPerform widening when the set of structure sharing pairs becomes", + "\tlarger than . When n=0, widening is not enabled.", + "\t(default: 0).", + "--structure-reuse, --ctgc", + "\tPerform structure reuse analysis (Compile Time Garbage ", + "\tCollection).", + "--structure-reuse-constraint {same_cons_id, ", + "\twithin_n_cells_difference}, --ctgc-constraint {same_cons_id,", + "\twithin_n_cells_difference}", + "\tConstraint on the way we allow structure reuse. `same_cons_id'", + "\tspecifies that reuse is only allowed between terms of the same", + "\ttype and constructor. `within_n_cells_difference' states that", + "\treuse is allowed as long as the arities between the reused term", + "\tand new term does not exceed a certain threshold. The threshold ", + "\tneeds to be set using `--structure-reuse-constraint-arg'.", + "\t(default: within_n_cells_difference, with threshold 0)", + "--structure-reuse-constraint-arg, --ctgc-constraint-arg", + "\tSpecify the maximum difference in arities between the terms that", + "\tcan be reused, and the terms that reuse these terms.", + "\t(default: 0)" + +% This option is for developers only. +% "--structure-reuse-max-conditions", +% "\tSoft limit on the number of reuse conditions to accumulate", +% "\tfor a procedure. (default: 10)" + +% This option is likely to break many optimisations which haven't been updated. +% "--structure-reuse-free-cells", +% "\tImmediately free cells which are known to be dead but which", +% "\tcannot be reused." + ]). + +:- pred options_help_termination(io::di, io::uo) is det. + +options_help_termination --> + io.write_string("\nTermination Analysis Options:\n"), + write_tabbed_lines([ + "--enable-term, --enable-termination", + "\tAnalyse each predicate to discover if it terminates.", + "--chk-term, --check-term, --check-termination", + "\tEnable termination analysis, and emit warnings for some", + "\tpredicates or functions that cannot be proved to terminate.", + "\tIn many cases where the compiler is unable to prove termination", + "\tthe problem is either a lack of information about the", + "\ttermination properties of other predicates, or because language", + "\tconstructs (such as higher order calls) were used which could", + "\tnot be analysed. In these cases the compiler does not emit a", + "\twarning of non-termination, as it is likely to be spurious.", + "--verb-chk-term, --verb-check-term, --verbose-check-termination", + "\tEnable termination analysis, and emit warnings for all", + "\tpredicates or functions that cannot be proved to terminate.", + "--term-single-arg , --termination-single-argument-analysis ", + "\tWhen performing termination analysis, try analyzing", + "\trecursion on single arguments in strongly connected", + "\tcomponents of the call graph that have up to procedures.", + "\tSetting this limit to zero disables single argument analysis.", + "--termination-norm {simple, total, num-data-elems}", + "\tThe norm defines how termination analysis measures the size", + "\tof a memory cell. The `simple' norm says that size is always", + "\tone. The `total' norm says that it is the number of words", + "\tin the cell. The `num-data-elems' norm says that it is the", + "\tnumber of words in the cell that contain something other", + "\tthan pointers to cells of the same type.", + "--term-err-limit , --termination-error-limit ", + "\tPrint at most reasons for any single termination error", + "\t(default: 3).", + "--term-path-limit , --termination-path-limit ", + "\tPerform termination analysis only on predicates", + "\twith at most paths (default: 256)." + +% The following options are used to control the new termination analyser. +% They are currently disabled because that is still a work-in-progress. +% +% "--enable-term2, --enable-termination2", +% "\tAnalyse each predicate to discover if it terminates. ", +% "\tThis uses an alternative termination analysis based", +% "\ton convex constraints.", +% "--chk-term2, --check-termination2", +% "\tEnable the alternative termination analysis, and emit warnings for", +% "\tsome predicates or functions that cannot be proved to terminate. In", +% "\tmany cases where the compiler is unable to prove termination", +% "\tthe problem is either a lack of information about the", +% "\ttermination properties of other predicates, or because language", +% "\tconstructs (such as higher order calls) were used which could", +% "\tnot be analysed. In these cases the compiler does not emit a", +% "\twarning of non-termination, as it is likely to be spurious.", +% "--verb-chk-term2, --verb-check-term2, --verbose-check-termination2", +% "--termination2-norm {simple, total, num-data-elems}", +% "\tTell the alternative termination analyser which norm to use.", +% "\tSee the description of the `--termination-norm' option for a", +% "\tdescription of the different types of norm available." +% "--term2-widening-limit , --termination2-widening-limit ", +% "\tSet the threshold for the number of iterations after which the", +% "\targument size analyser invokes widening.", +% "--term2-propagate-failure-constrs, --termination2-propagate-failure-constraints", +% "\tMake the argument analyser infer information about the sizes of any" +% "\tinputs to a goal in contexts where that goal fails." +% "--term2-max-matrix-size , --termination2-maximum-matrix-size ", +% "\tLimit the sizes of constraints systems in the analyser to ", +% "\tconstraints. Use approximations of some constraint operations,", +% "\tsuch as projection, if this threshold is exceeded. This will", +% "\tspeed up the analysis at the cost of reduced precision.", + +% This option is for developers only. +% It is useful for benchmarking the argument size analysis. +% "--term2-argument-size-analysis-only, --term2-arg-size-analysis-only", +% "\tPerform argument size analysis on each SCC but do not", +% "\tattempt to infer termination," + ]). + +:- pred options_help_compilation_model(io::di, io::uo) is det. + +options_help_compilation_model --> + io.write_string("\nCompilation model options:\n"), + write_tabbed_lines([ + "The following compilation options affect the generated", + "code in such a way that the entire program must be", + "compiled with the same setting of these options,", + "and it must be linked to a version of the Mercury", + "library which has been compiled with the same setting.", + "", + "-s , --grade ", + "\tSelect the compilation model. The should be one of", + "\tthe base grades `none', `reg', `jump', `asm_jump', `fast', ", + "\t`asm_fast', `hl', `hlc', `il', or `java',", +% The hl, hl_nest, and hlc_nest are not yet documented, because +% the --high-level-data option is not yet supported for C, +% and the --gcc-nested-functions option is not yet documented. +% The ilc grade is not documented because it is not useful; +% it has been superceded by the il grade. + "\tor one of those with one or more of the grade modifiers", + "\t`.gc', `.mps', `.prof', `.memprof', `.profdeep', `.tr',", + "\t`.spf', `.stseg', `.debug', `.par' and/or `.pic_reg' appended.", + "\tDepending on your particular installation, only a subset", + "\tof these possible grades will have been installed.", + "\tAttempting to use a grade which has not been installed", + "\twill result in an error at link time." + ]), + + io.write_string("\n Target selection compilation model options:\n"), + write_tabbed_lines([ + "--target c\t\t\t(grades: none, reg, jump, fast,", + "\t\t\t\t\tasm_jump, asm_fast, hl, hlc)", + "--target il\t\t\t(grades: il)", + "--target csharp\t\t\t(grades: csharp)", + "--target java\t\t\t(grades: java)", + "--target erlang\t\t\t(grades: erlang)", + "\tSpecify the target language: C, IL, C#, Java or Erlang.", + "\tThe default is C. ""IL"" (also known as ""CIL"" or ""MSIL"")", + "\tis the Intermediate Language for the .NET Common Language", + "\tRuntime.", + "\tTargets other than C imply `--high-level-code' (see below).", + +% IL options are commented out to reduce confusion. +% "--il", +% "\tAn abbreviation for `--target il'.", +% "--il-only", +% "\tAn abbreviation for `--target il --target-code-only'.", +% "\tGenerate IL code in `.il', but do not generate", +% "\tobject code.", +% +% "--dotnet-library-version ", +% "\tThe version number for the mscorlib assembly distributed", +% "\twith the Microsoft .NET SDK.", +% +% "--no-support-ms-clr", +% "\tDon't use MS CLR specific workarounds in the generated code.", +% +% "--support-rotor-clr", +% "\tUse specific workarounds for the ROTOR CLR in the generated", +% "\tcode.", + + "--csharp", + "\tAn abbreviation for `--target csharp'.", + "--csharp-only", + "\tAn abbreviation for `--target csharp --target-code-only'.", + "\tGenerate C# code in `.cs', but do not generate", + "\tobject code.", + + "--java", + "\tAn abbreviation for `--target java'.", + "--java-only", + "\tAn abbreviation for `--target java --target-code-only'.", + "\tGenerate Java code in `.java', but do not generate", + "\tobject code.", + + "--erlang", + "\tAn abbreviation for `--target erlang'.", + "--erlang-only", + "\tAn abbreviation for `--target erlang --target-code-only'.", + "\tGenerate Erlang code in `.erl', but do not generate", + "\tobject code.", + + "--compile-to-c", + "\tAn abbreviation for `--target c --target-code-only'.", + "\tGenerate C code in `.c', but do not generate object", + "\tcode." + ]), + + io.write_string("\n Optional feature compilation model options:\n"), + io.write_string(" Debugging\n"), + write_tabbed_lines([ + "--debug\t\t\t\t(grade modifier: `.debug')", + "\tEnable Mercury-level debugging.", + "\tSee the Debugging chapter of the Mercury User's Guide", + "\tfor details.", + "\tThis option is not yet supported for the `--high-level-code'", + "\tback-ends.", + "--decl-debug\t\t\t\t(grade modifier: `.decldebug')", + "\tEnable full support for declarative debugging.", + "\tThis allows subterm dependency tracking in the declarative", + "\tdebugger.", + "\tSee the Debugging chapter of the Mercury User's Guide", + "\tfor details.", + "\tThis option is not yet supported for the `--high-level-code'", + "\tback-ends." +% XXX The source-to-source debugging transform is not ready for public +% consumption. +% "--ss-debug\t\t\t\t(grade modifier: `.ssdebug')", +% "\tEnable the source-to-source debugging transform." + ]), + io.write_string(" Profiling\n"), + write_tabbed_lines([ + "-p, --profiling, --time-profiling", + "\t\t\t\t(grade modifier: `.prof')", + "\tEnable time and call profiling. Insert profiling hooks in the", + "\tgenerated code, and also output some profiling", + "\tinformation (the static call graph) to the file", + "\t`.prof'.", + "\tThis option is not supported for the IL, C# or Java back-ends.", + "--memory-profiling\t\t(grade modifier: `.memprof')", + "\tEnable memory and call profiling.", + "\tThis option is not supported for the IL, C# or Java back-ends.", + "--deep-profiling\t\t(grade modifier: `.profdeep')", + "\tEnable deep profiling.", + "\tThis option is not supported for the high-level C, IL, C#", + "\tor Java back-ends.", + +% This option is not documented, it is intended for use by developers only. +% +% "--pre-prof-transforms-simplify", +% "\tForce the pre-profiling simplification pass that is usually", +% "\tenabled when building a profiling version of a program. This", +% "\tallows a developer to enable this pass when using a", +% "\tnon-profiling build. It can be used to test that generated code", +% "\tintroduced in earlier passes is well-formed before it is", +% "\tpotentially removed by the dead procedure elimination pass later", +% "\ton.", +% + +% XXX The following options are not documented, +% because they are currently not useful. +% The idea was for you to be able to use --profile-calls +% and --profile-time separately, but that doesn't work +% because compiling with --profile-time instead of +% --profile-calls results in different code addresses, +% so you can't combine the data from versions of +% your program compiled with different options. +% +% "--profile-calls\t\t(grade modifier: `.profcalls')", +% "\tSimilar to `--profiling', except that only gathers", +% "\tcall counts, not timing information.", +% "\tUseful on systems where time profiling is not supported,", +% "\tbut not as useful as `--memory-profiling'.", +% "--profile-time\t\t(grade modifier: `.proftime')", +% "\tSimilar to `--profiling', except that it only gathers", +% "\ttiming information, not call counts.", +% "--profile-memory\t\t(grade modifier: `.profmem')", +% "\tSimilar to `--memory-profiling', except that it only", +% "\tgathers memory usage information, not call counts.", + + "--no-coverage-profiling", + "\tDisable coverage profiling.", +% The following options are for implementors only (intended for experiments). +% "--coverage-profiling-via-calls", +% "\tUse calls to implement coverage points, not inline foreign code.", + +% "--coverage-profiling-static", +% "\tDisable dynamic coverage profiling, this uses less memory and may ", +% "\tbe faster.", + +% "Switches to effect coverage profiling (part of deep profiling). ", +% "they enable different types of coverage points.", + +% "--no-profile-deep-coverage-after-goal", +% "\tDisable coverage points after goals.", +% "--no-profile-deep-coverage-branch-ite", +% "\tDisable coverage points at the beginning of then and else", +% "\tbranches.", +% "--no-profile-deep-coverage-branch-switch", +% "\tDisable coverage points at the beginning of switch branches.", +% "--no-profile-deep-coverage-branch-disj", +% "\tDisable coverage points at the beginning of disjunction branches.", + +% I beleive these options are broken - pbone. +% "Switches to tune the coverage profiling pass, useful for ", +% "debugging.", +% +% "--no-profile-deep-coverage-use-portcounts", +% "\tTurn off usage of port counts in the deep profiler to provide", +% "\tsome coverage information.", +% "--no-profile-deep-coverage-use-trivial", +% "\tTurn off usage of trivial goal information", + + "--profile-for-feedback", + "\tSelect deep profiling options suitable for profiler directed", + "\timplicit parallelism.", + "\t--profile-for-implicit-parallelism is a deprecated synonym for", + "\tthis option", + + "--record-term-sizes-as-words\t\t(grade modifier: `.tsw')", + "\tAugment each heap cells with its size in words.", + "--record-term-sizes-as-cells\t\t(grade modifier: `.tsc')", + "\tAugment each heap cells with its size in cells.", + + "--experimental-complexity=\t\t", + "\tEnable experimental complexity analysis for the predicates", + "\tlisted in the given file.", + "\tThis option is supported for the C back-end, with", + "\t--no-highlevel-code.", + + "--threadscope\t\t(grade modifier: `.threadscope')", + "\tEnable support for profiling parallel execution.", + "\tThis option is supported by the low-level C back-end parallel", + "\tgrades on some processors, See README.ThreadScope for details." + ]), + + io.write_string(" Miscellaneous optional features\n"), + write_tabbed_lines([ + "--gc {none, boehm, hgc, mps, accurate, automatic}", + "--garbage-collection {none, boehm, hgc, mps, accurate, automatic}", + "\t\t\t\t(`java', `csharp', `il' and `erlang'", + "\t\t\t\t\tgrades use `--gc automatic',", + "\t\t\t\t`.gc' grades use `--gc boehm',", + "\t\t\t\t`.hgc' grades use `--gc hgc',", + "\t\t\t\t`.mps' grades use `--gc mps',", + "\t\t\t\tother grades use `--gc none'.)", + "\tSpecify which method of garbage collection to use", + "\t(default: boehm).", + "\t`boehm' is Hans Boehm et al's conservative collector.", + "\t`hgc' is our own conservative collector;", + "\t`accurate' is our own type-accurate copying GC;", + "\tit requires `--high-level-code'.", + "\t`mps' is a different conservative collector, based on", + "\tRavenbrook Limited's MPS (Memory Pool System) kit.", + "\t`automatic' means the target language provides it.", + "\tThis is the case for the IL, C#, Java and Erlang back-ends,", + "\twhich always use the garbage collector of the underlying", + "\timplementation.", + "--use-trail\t\t\t(grade modifier: `.tr')", + "\tEnable use of a trail.", + "\tThis is necessary for interfacing with constraint solvers,", + "\tor for backtrackable destructive update.", + "\tThis option is not yet supported for the IL, C# or Java back-ends.", + "--trail-segments\t\t\t(grade modifier: `.trseg')", + "\tAs above, but use a dynamically sized trail that is composed", + "\tof small segments. This can help to avoid trail exhaustion", + "\tat the cost of increased execution time.", + "--parallel\t\t(grade modifier: `.par')", + "\tEnable parallel execution support for the low-level C grades.", + "\tEnable concurrency (via pthreads) for the high-level C grades.", + "--maybe-thread-safe {yes, no}", + "\tSpecify how to treat the `maybe_thread_safe' foreign code", + "\tattribute. `yes' means that a foreign procedure with the", + "\t`maybe_thread_safe' option is treated as though it has a", + "\t`thread_safe' attribute. `no' means that the foreign", + "\tprocedure is treated as though it has a `not_thread_safe'", + "\tattribute. The default is no.", + "--single-prec-float\t\t(grade modifier: `.spf')", + "\tUse single precision floats so that, on 32-bit machines,", + "\tfloating point values don't need to be boxed. Double", + "\tprecision floats are used by default." + % This is commented out as this feature is still experimental. + %"--extend-stacks-when-needed", + %"\tSpecify that code that increments a stack pointer must", + %"\textend the stack when this is needed.", + % RBMM is undocumented since it is still experimental. + % should also document rbmmd rbmmp rbmmdp + %"--use-regions\t\t(grade modifier: `.rbmm')", + %"\tEnable support for region-based memory managment." + %"--use-alloc-regions", + %"\tCompute and use the exact set of regions", + %"\t that may be allocated into by a call." + ]), + + io.write_string("\n LLDS back-end compilation model options:\n"), + write_tabbed_lines([ + + "--gcc-global-registers\t\t(grades: reg, fast, asm_fast)", + "--no-gcc-global-registers\t(grades: none, jump, asm_jump)", + "\tSpecify whether or not to use GNU C's", + "\tglobal register variables extension.", + "\tThis option is ignored if the `--high-level-code' option is", + "\tenabled.", + "--gcc-non-local-gotos\t\t(grades: jump, fast, asm_jump, asm_fast)", + "--no-gcc-non-local-gotos\t(grades: none, reg)", + "\tSpecify whether or not to use GNU C's", + "\t""labels as values"" extension.", + "\tThis option is ignored if the `--high-level-code' option is", + "\tenabled.", + "--asm-labels\t\t\t(grades: asm_jump, asm_fast)", + "--no-asm-labels\t\t\t(grades: none, reg, jump, fast)", + "\tSpecify whether or not to use GNU C's", + "\tasm extensions for inline assembler labels.", + "\tThis option is ignored if the `--high-level-code' option is", + "\tenabled.", + "--pic-reg\t\t\t(grade modifier: `.pic_reg')", + "[For Unix with intel x86 architecture only]", + "\tSelect a register usage convention that is compatible,", + "\twith position-independent code (gcc's `-fpic' option).", + "\tThis is necessary when using shared libraries on Intel x86", + "\tsystems running Unix. On other systems it has no effect.", + "--stack-segments\t\t(grade modifier: `.stseg')", + "\tSpecify whether to use dynamically sized stacks that are", + "\tcomposed of small segments. This can help to avoid stack", + "\texhaustion at the cost of increased execution time.", + "\tThis option is ignored if the `--high-level-code' option is", + "\tenabled." + % This is a developer only option. +% "--use-float-registers", +% "(This option is not for general use.)", +% "\tUse float registers for argument passing." + ]), + + io.write_string("\n MLDS back-end compilation model options:\n"), + write_tabbed_lines([ +% These grades (hl_nest, and hlc_nest) are not yet documented, +% because the --gcc-nested-functions option is not yet documented. +% "-H, --high-level-code\t\t\t(grades: hl_nest, hlc_nest)", +% The ilc grade is not documented because it is not useful; +% it has been superceded by the il grade. + "-H, --high-level-code\t\t\t(grades: hl, hlc, il, csharp, java)", + "\tUse an alternative back-end that generates high-level code", + "\trather than the very low-level code that is generated by our", + "\toriginal back-end.", +% The hl_nest grade is not yet documented, +% because the --gcc-nested-functions option is not yet documented. +% because it is not yet supported +% "--high-level-data\t\t\t(grades: hl, hl_nest, il, csharp, java)", + "--high-level-data\t\t\t(grades: hl, il, csharp, java)", + "\tUse an alternative higher-level data representation.", +% "--high-level\t\t\t(grades: hl, hl_nest, il, csharp, java)", + "--high-level\t\t\t(grades: hl, il, csharp, java)", + "\tAn abbreviation for `--high-level-code --high-level-data'." +% The --gcc-nested-functions option is not yet documented, +% because it doesn't pass our test suite, and it is +% probably not very useful. +% "--gcc-nested-functions\t\t(grades: hl_nest, hlc_nest)", +% "\tSpecify whether or not to use GNU C's nested functions extension.", +% "\tThis option is ignored if the `--high-level-code' option is not enabled.", +% The --det-copy-out option is not yet documented, +% because it is not yet tested much and probably not very useful, +% except for Java, where it is the default. +% "--det-copy-out", +% "\tSpecify whether to handle output arguments for det/semidet", +% "\tprocedures using return-by-value rather than pass-by-reference.", +% "\tThis option is ignored if the `--high-level-code' option is not enabled.", +% The --nondet-copy-out option is not yet documented, +% because it is probably not very useful except for IL and Java, +% where it is the default. +% "--nondet-copy-out\t\t(grades: il, ilc)", +% "\tSpecify whether to handle output arguments for nondet", +% "\tprocedures using pass-by-value rather than pass-by-reference.", +% "\tThis option is ignored if the `--high-level-code' option is not enabled.", +% The --put-commit-in-own-func option is not documented because +% it is enabled automatically (by handle_options) in the situations +% where it is needed; the user should never need to set it. +% "--put-commit-in-own-func", +% "\tPut each commit in its own C function.", +% "\tThis option only affects the MLDS back-ends.", +% "\tIt is needed for the high-level C back-end,", +% "\twhere commits are implemented via setjmp()/longjmp(),", +% "\tsince longjmp() may clobber any non-volatile local vars", +% "\tin the function that called setjmp().", +% The --put-nondet-env-on-heap option is not documented because +% it is enabled automatically (by handle_options) in the situations +% where it is needed; the user should never need to set it. +% "--put-nondet-env-on-heap", +% "\tAllocate the environment structures used for", +% "\tnondeterministic Mercury procedures on the heap,", +% "\trather than on the stack." +% ]), +% io.write_string("\n IL back-end compilation model options:\n"), +% write_tabbed_lines([ +% +% The --verifiable-code option is not yet documented because it is not yet fully +% implemented. +% "--verifiable, --verifiable-code\t\t\t", +% "\tEnsure that the generated IL code is verifiable.", +% +% The --il-refany-fields option is not documented because currently there +% are no IL implementations for which it is useful. +% "--il-refany-fields", +% "\tGenerate IL code that assumes that the CLI implementation", +% "\tsupports value types with fields of type `refany'.", +% "\tUsing this option could in theory allow more efficient", +% "\tverifiable IL code for nondeterministic Mercury procedures,", +% "\tif the CLI implementation supported it." +% "\tHowever, the current Microsoft CLR does not support it." +% +% The --il-byref-tailcalls option is not documented because currently there +% are no IL implementations for which it is useful. +% "--il-byref-tailcalls", +% "\tGenerate IL code that assumes that the CLI verifier", +% "\tsupports tail calls with byref arguments." +% +% The --il-funcptr-types option is not documented because it is not yet +% implemented. +% "--il-funcptr-types", +% "\tGenerate IL code that assumes that the IL assembler", +% "\tsupports function pointer types." +% "\tThe ECMA CLI specification allows function pointer types," +% "\tbut some CLR implementations, e.g. the old Beta 2 version of" +% "\tthe Microsoft CLR implementation, do not support them." + ]), + + io.write_string("\n Developer compilation model options:\n"), + io.write_string("\n Data representation\n"), + write_tabbed_lines([ + "--tags {none, low, high} (This option is not for general use.)", + "\tSpecify whether to use the low bits or the high bits of ", + "\teach word as tag bits (default: low).", + % "\t\t`--tags none' implies `--num-tag-bits 0'.", + "--num-tag-bits (This option is not for general use.)", + "\tUse tag bits.", + "--num-reserved-addresses (This option is not for general use.)", + "\tTreat the integer values from 0 up to - 1 as reserved", + "\taddresses that can be used to represent nullary constructors", + "\t(constants) of discriminated union types.", + "--num-reserved-objects (This option is not for general use.)", + "\tAllocate up to global objects per type,", + "\tfor representing nullary constructors", + "\t(constants) of discriminated union types." + + % The --conf-low-tag-bits option is reserved for use + % by the `mmc' script; it is deliberately not documented. + + % The --bits-per-word option is intended for use + % by the `mmc' script; it is deliberately not documented. + + % The --bytes-per-word option is intended for use + % by the `mmc' script; it is deliberately not documented. + + % This is a developer only option. +% "--unboxed-float", +% "(This option is not for general use.)", +% "\tDon't box floating point numbers.", +% "\tThis assumes that a Mercury float will fit in a word.", +% "\tThe C code needs to be compiled with `-UBOXED_FLOAT'.", +% "\tIt may also need to be compiled with", +% "\t`-DUSE_SINGLE_PREC_FLOAT', if double precision", +% "\tfloats don't fit into a word." + + % This is a developer only option. +% "--no-unboxed-enums", +% "(This option is not for general use.)", +% "\tBox enumerations. This option is disabled by default.", + + % This is a developer only option. +% "--no-unboxed-no-tag-types", +% "(This option is not for general use.)", +% "\tBox no-tag types. This option is disabled by default." + + ]), + io.write_string("\n Developer optional features\n"), + write_tabbed_lines([ + "--use-minimal-model-stack-copy", + "(This option is not for general use.)", + "\tEnable the use of the standard form of minimal model tabling.", + + "--use-minimal-model-own-stacks", + "(This option is not for general use.)", + "\tEnable the use of an experimental form of minimal model tabling.", + + "--minimal-model-debug", + "(This option is not for general use.)", + "\tEnables extra data structures that assist in debugging", + "\tminimal model tabling.", + + "--no-type-layout", + "(This option is not for general use.)", + "\tDon't output type_ctor_layout structures or references", + "\tto them. (The C code also needs to be compiled with", + "\t`-DNO_TYPE_LAYOUT')." + + % This is a developer only option. +% "--basic-stack-layout", +% "(This option is not for general use.)", +% "\tGenerate the simple stack_layout structures required", +% "\tfor stack traces.", + + % This is a developer only option. +% "--agc-stack-layout", +% "(This option is not for general use.)", +% "\tGenerate the stack_layout structures required for", +% "\taccurate garbage collection.", + + % This is a developer only option. +% "--procid-stack-layout", +% "(This option is not for general use.)", +% "\tGenerate the stack_layout structures required for", +% "\tlooking up procedure identification information.", + + % This is a developer only option. +% "--trace-stack-layout", +% "(This option is not for general use.)", +% "\tGenerate the stack_layout structures required for", +% "\texecution tracing.", + + % This is a developer only option. +% "--body-typeinfo-liveness", +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--can-compare-constants-as-ints", +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--pretest-equality-cast-pointers", +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--can-compare-compound-values" +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--lexically-order-constructors" +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--mutable-always-boxed", +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--delay-partial-instantiations", +% "(This option is not for general use.)", +% For documentation, see delay_partial_inst.m + + % This is a developer only option. +% "--allow-defn-of-builtins", +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % This is a developer only option. +% "--special-preds", +% "(This option is not for general use.)", +% For documentation, see the comment in the type declaration. + + % All these are developer only options. +% "(These options are not for general use.)", +% For documentation, see runtime/mercury_region.h. +% "--size-region-ite-fixed" +% "--size-region-disj-fixed" +% "--size-region-commit-fixed" +% "--size-region-ite-protect" +% "--size-region-ite-snapshot" +% "--size-region-disj-protect" +% "--size-region-disj-snapshot" +% "--size-region-commit-entry" + + % This is a developer only option. +% "--solver-type-auto-init", +% "(This option is not for general use.)", +% Allow automatic initialisation of solver types. + + % This is a developer only option. +% "--allow-multi-arm-switches", +% "(This option is not for general use.)", +% Allow the compiler to generate switches in which one arm handles +% more than one cons_id. + + % This is a developer only option. +% "--type-check-constraints", +% "(This option is not for general use.)", +% Use the constraint based type checker instead of the old one. + + % This is a developer only option. +% "--allow-argument-packing", +% "(This option is not for general use.)", +% Allow the compiler to pack multiple constructor arguments into +% a single field. + ]). + +:- pred options_help_code_generation(io::di, io::uo) is det. + +options_help_code_generation --> + io.write_string("\nCode generation options:\n"), + write_tabbed_lines([ +% "--low-level-debug", +% "\tEnables various low-level debugging stuff, that was in", +% "\tthe distant past used to debug the low-level code generation.", +% "\tYou don't want to use this option unless you are hacking", +% "\tthe Mercury compiler itself (and probably not even then).", +% "\tCauses the generated code to become VERY big and VERY", +% "\tinefficient. Slows down compilation a LOT.", + +% "--table-debug", +% "\tEnables the generation of code that helps to debug tabling", +% "\tprimitives.", + + "--no-trad-passes", + "\tThe default `--trad-passes' completely processes each predicate", + "\tbefore going on to the next predicate.", + "\tThis option tells the compiler", + "\tto complete each phase of code generation on all predicates", + "\tbefore going on the next phase on all predicates.", + % "--parallel-liveness", + % "Use multiple threads when computing liveness.", + % "At the moment this option implies `--no-trad-passes',", + % "and requires the compiler to be built in a", + % "low-level parallel grade and running with multiple engines.", + % "--parallel-code-gen", + % "Use multiple threads when generating code.", + % "At the moment this option implies `--no-trad-passes',", + % "and requires the compiler to be built in a", + % "low-level parallel grade and running with multiple engines.", + % "\t--no-polymorphism", + % "\t\tDon't handle polymorphic types.", + % "\t\t(Generates slightly more efficient code, but stops", + % "\t\tpolymorphism from working except in special cases.)", + "--no-reclaim-heap-on-nondet-failure", + "\tDon't reclaim heap on backtracking in nondet code.", + "--no-reclaim-heap-on-semidet-failure", + "\tDon't reclaim heap on backtracking in semidet code.", + "--no-reclaim-heap-on-failure", + "\tCombines the effect of the two options above.", + + "--max-jump-table-size=", + "\tThe maximum number of entries a jump table can have.", + "\tThe special value 0 indicates the table size is unlimited.", + "\tThis option can be useful to avoid exceeding fixed limits", + "\timposed by some C compilers.", + + % This is a developer only option. +% "--compare-specialization=", +% "\tGenerate quadratic instead of linear compare predicates for", +% "\ttypes with up to n function symbols. Higher values of n lead to", +% "\tfaster but also bigger compare predicates.", + + % This is a developer only option. +% "--no-should-pretest-equality", +% "\tIf specified, do not add a test for the two values being equal", +% "\tas words to the starts of potentially expensive unify and compare", +% "\tpredicates." + + "--fact-table-max-array-size ", + "\tSpecify the maximum number of elements in a single", + "\t`:- pragma fact_table' data array (default: 1024).", + "--fact-table-hash-percent-full ", + "\tSpecify how full the `:- pragma fact_table' hash tables", + "\tshould be allowed to get. Given as an integer percentage", + "\t(valid range: 1 to 100, default: 90)." + +% This option is not yet documented because the `--gcc-nested-functions' option +% is not documented. +% "--gcc-local-labels", +% "\tThis option has no effect unless both the `--high-level-code' option", +% "\tand the `--gcc-nested-functions' options are enabled.", +% "\tIf this option is enabled, the Mercury compiler will generate", +% "\tC code that uses GNU C's local labels extension to allow", +% "\tGNU C nested functions to exit into their containing function", +% "\tvia a `goto'.", +% "\tIf this option is not enabled, the default behaviour is to", +% "\tuse the standard ANSI/ISO C setjmp() and longjmp() functions." + +% This option is not yet documented because it is not yet useful -- currently +% we don't take advantage of GNU C's computed gotos extension. +% "--no-prefer-switch", +% "\tGenerate code using computed gotos rather than switches.", +% "\tThis makes the generated code less readable, but potentially", +% "\tslightly more efficient.", +% "\tThis option has no effect unless the `--high-level-code' option", +% "\tis enabled. It also has no effect if the `--target' option is", +% "\tset to `il'.", +% This optimization is for implementors only. Turning this option on provides +% the fairest possible test of --optimize-saved-vars-cell. +% "--no-opt-no-return-calls", +% "\tDo not optimize the stack usage of calls that cannot return.", + + ]), + + io.write_string("\n Code generation target options:\n"), + write_tabbed_lines([ + "--branch-delay-slot \t(This option is not for general use.)", + "\tAssume that branch instructions have a delay slot.", + "--num-real-r-regs \t(This option is not for general use.)", + "\tAssume registers r1 up to r are real general purpose", + "\tregisters.", + "--num-real-f-regs \t(This option is not for general use.)", + "\tAssume registers f1 up to f are real floating point", + "\tregisters.", + "--num-real-r-temps \t(This option is not for general use.)", + "\tAssume that non-float temporaries will fit into", + "\treal machine registers.", + "--num-real-f-temps \t(This option is not for general use.)", + "\tAssume that float temporaries will fit into", + "\treal machine registers." + ]). + +:- pred options_help_optimization(io::di, io::uo) is det. + +options_help_optimization --> + io.write_string("\nOptimization Options:\n"), + write_tabbed_lines([ + "-O , --opt-level , --optimization-level ", + "\tSet optimization level to .", + "\tOptimization level -1 means no optimization", + "\twhile optimization level 6 means full optimization.", + % "\t\tFor a full description of each optimization level,", + % "\t\tsee the Mercury User's Guide.", + "--opt-space, --optimize-space", + "\tTurn on optimizations that reduce code size", + "\tand turn off optimizations that significantly", + "\tincrease code size.", + "--intermod-opt", + "--intermodule-optimization", + "\tPerform inlining and higher-order specialization of", + "\tthe code for predicates imported from other modules.", + "\tThis option must be set throughout the compilation process.", + "--trans-intermod-opt", + "--transitive-intermodule-optimization", + "\tImport the transitive intermodule optimization data.", + "\tThis data is imported from `.trans_opt' files.", + "\tNote that `--transitive-intermodule-optimization' does not", + "\twork with `mmc --make'.", + "--no-read-opt-files-transitively", + "\tOnly read the inter-module optimization information", + "\tfor directly imported modules, not the transitive", + "\tclosure of the imports.", + "--use-opt-files", + "\tPerform inter-module optimization using any", + "\t`.opt' files which are already built,", + "\te.g. those for the standard library, but do", + "\tnot build any others.", + "--use-trans-opt-files", + "\tPerform inter-module optimization using any", + "\t`.trans_opt' files which are already built,", + "\te.g. those for the standard library, but do", + "\tnot build any others.", + "--intermodule-analysis", + "\tPerform analyses such as termination analysis and", + "\tunused argument elimination across module boundaries.", + "\tThis option is not yet fully implemented.", + "--analysis-repeat ", + "\tThe maximum number of times to repeat analyses of", + "\tsuboptimal modules with `--intermodule-analysis'", + "\t(default: 0)." + % This is commented out as this feature is still experimental. +% "--analysis-file-cache", +% "\tEnable caching of parsed analysis files. This may", +% "\timprove compile times with `--intermodule-analysis'." + ]). + +:- pred options_help_hlds_hlds_optimization(io::di, io::uo) is det. + +options_help_hlds_hlds_optimization --> + io.write_string("\n High-level (HLDS -> HLDS) optimizations:\n"), + write_tabbed_lines([ + "--no-inlining", + "\tDisable all forms of inlining.", + "--no-inline-simple", + "\tDisable the inlining of simple procedures.", + "--no-inline-builtins", + "\tGenerate builtins (e.g. arithmetic operators) as calls to", + "\tout of line procedures. This is done by default when,", + "\tdebugging, as without this option the execution of", + "\tbuiltins is not traced.", + "--no-inline-single-use", + "\tDisable the inlining of procedures called only once.", + "--inline-call-cost ", + "\tAssume that the cost of a call is the given parameter.", + "\tUsed only in conjunction with --inline-compound-threshold.", + "\tmultiplied by the number of times it is called,", + "--inline-compound-threshold ", + "\tInline a procedure if its size (measured roughly", + "\tin terms of the number of connectives in its internal form)", + "\tless the assumed call cost, multiplied by the number of times", + "\tit is called is below the given threshold.", + "--inline-simple-threshold ", + "\tInline a procedure if its size is less than the", + "\tgiven threshold.", + "--intermod-inline-simple-threshold", + "\tSimilar to `--inline-simple-threshold', except used to", + "\tdetermine which predicates should be included in", + "\t`.opt' files. Note that changing this between writing", + "\tthe `.opt' file and compiling to C may cause link errors,", + "\tand too high a value may result in reduced performance.", + "--inline-vars-threshold ", + "\tDon't inline a call if it would result in a procedure", + "\tcontaining more than variables. Procedures", + "\tcontaining large numbers of variables can cause", + "\tslow compilation.", +% "--from-ground-term-threshold ", +% "\tWrap a from_ground_term scope around the expanded,", +% "\tsuperhomogeneous form of a ground term that involves at least.", +% "\tthe given number of function symbols.", + "--no-const-struct", + "\tDisable the gathering of constant structures in a separate table.", + "--no-common-struct", + "\tDisable optimization of common term structures.", +% "--common-struct-preds ", +% "\tLimit common struct optimization to the preds with the given ids.", + +% Common goal optimization should not be turned off, since it can +% break programs that would otherwise compile properly (e.g., +% benchmarks/icfp2000). This is kept as a developer-only option. +% +% "--no-common-goal", +% "\tDisable optimization of common goals.", +% "\tAt the moment this optimization", +% "\tdetects only common deconstruction unifications.", +% "\tDisabling this optimization reduces the class of predicates", +% "\tthat the compiler considers to be deterministic.", + + "--constraint-propagation", + "\tEnable the constraint propagation transformation,", + "\twhich attempts to transform the code so that goals", + "\twhich can fail are executed as early as possible.", + "--local-constraint-propagation", + "\tEnable the constraint propagation transformation,", + "\tbut only rearrange goals within each procedure.", + "\tSpecialized versions of procedures will not be created.", + "--prev-code", + "\tMigrate into the start of branched goals.", + "--no-follow-code", + "\tDon't migrate into the end of branched goals.", + "--excess-assign", + "\tRemove excess assignment unifications.", + "--no-optimize-format-calls", + "\tDo not attempt to interpret the format string in calls to", + "\tstring.format and related predicates at compile time;", + "\talways leave this to be done at runtime.", + "--optimize-duplicate-calls", + "\tOptimize away multiple calls to a predicate", + "\twith the same input arguments.", + "--loop-invariants", + "\tHoist loop invariants out of loops.", + "--delay-constructs", + "\tReorder goals to move construction unifications after", + "\tprimitive goals that can fail.", + % "--optimize-saved-vars-const", + % "\tMinimize the number of variables saved across calls by", + % "\tintroducing duplicate copies of variables bound to", + % "\tconstants in each interval between flushes where they", + % "\tare needed.", + % "--optimize-saved-vars-cell", + % "\tMinimize the number of variables saved across calls by", + % "\ttrying to use saved variables pointing to cells to reach", + % "\tthe variables stored in those cells.", + "--optimize-saved-vars", + "\tMinimize the number of variables saved across calls.", + "--optimize-unused-args", + "\tRemove unused predicate arguments.", + "\tThis will cause the compiler to generate more", + "\tefficient code for many polymorphic predicates.", + "--intermod-unused-args", + "\tPerform unused argument removal across module boundaries.", + "\tThis option implies `--optimize-unused-args' and", + "\t`--intermodule-optimization'.", + + "--optimize-higher-order", + "\tEnable specialization of higher-order predicates.", + "--type-specialization", + "\tEnable specialization of polymorphic predicates where the", + "\tpolymorphic types are known.", + "--user-guided-type-specialization", + "\tEnable specialization of polymorphic predicates for which", + "\tthere are `:- pragma type_spec' declarations.", + "--higher-order-size-limit", + "\tSet the maximum goal size of specialized versions created by", + "\t`--optimize-higher-order' and `--type-specialization'.", + "\tGoal size is measured as the number of calls, unifications", + "\tand branched goals.", + "--higher-order-arg-limit", + "\tSet the maximum size of higher-order arguments to", + "\tbe specialized by `--optimize-higher-order' and", + "\t`--type-specialization'.", + "--unneeded-code", + "\tRemove goals from computation paths where their outputs are", + "\tnot needed, provided the semantics options allow the deletion", + "\tor movement of the goal.", + "--unneeded-code-copy-limit", + "\tGives the maximum number of places to which a goal may be copied", + "\twhen removing it from computation paths on which its outputs are", + "\tnot needed. A value of zero forbids goal movement and allows", + "\tonly goal deletion; a value of one prevents any increase in the", + "\tsize of the code.", +% "--unneeded-code-debug", +% "\tPrint progress messages during the unneeded code elimination", +% "\tpasses.", +% "--unneeded-code-debug-pred-name ", +% "\tPrint the definition of at the start of each pass", +% "\tof the unneeded code elimination algorithm.", + "--introduce-accumulators", + "\tAttempt to introduce accumulating variables into", + "\tprocedures, so as to make them tail recursive.", +% "--optimize-constructor-last-call-accumulator", +% "\tEnable the optimization via accumulators of ""last"" calls", +% "\tthat are followed by constructor application.", +% "--optimize-constructor-last-call-null", +% "\tWhen --optimize-constructor-last-call is enabled, put NULL in" +% "\tuninitialized fields (to prevent the garbage collector from", +% "\tlooking at and following a random bit pattern).", + "--optimize-constructor-last-call", + "\tEnable the optimization of ""last"" calls that are followed by", + "\tconstructor application.", + "--deforestation", + "\tEnable deforestation. Deforestation is a program", + "\ttransformation whose aim is to avoid the construction of", + "\tintermediate data structures and to avoid repeated traversals", + "\tover data structures within a conjunction.", + "--deforestation-depth-limit ", + "\tSpecify a depth limit to prevent infinite loops in the", + "\tdeforestation algorithm.", + "\tA value of -1 specifies no depth limit. The default is 4.", + "--deforestation-vars-threshold ", + "\tSpecify a rough limit on the number of variables", + "\tin a procedure created by deforestation.", + "\tA value of -1 specifies no limit. The default is 200.", + "--deforestation-size-threshold ", + "\tSpecify a rough limit on the size of a goal", + "\tto be optimized by deforestation.", + "\tA value of -1 specifies no limit. The default is 15.", + "--analyse-exceptions", + "\tEnable exception analysis. Identify those", + "\tprocedures that will not throw an exception.", + "\tSome optimizations can make use of this information.", +% XXX The options controlling closure analysis are currently +% commented out because it isn't useful. It can be uncommented when +% we actually have something that uses it. +% "--analyse-closures", +% "\tEnable closure analysis. Try to identify the possible", +% "\tvalues that higher-order valued variables can take.", +% "\tSome optimizations can make use of this information.", + "--analyse-trail-usage", + "\tEnable trail usage analysis. Identify those", + "\tprocedures that will not modify the trail.", + "\tThis information is used to reduce the overhead", + "\tof trailing.", +% `--no-optimize-trail-usage' is a developer-only option. +% It is intended for the benchmarking of trail usage optimization. +% Otherwise, it should not be turned off as doing so interferes with +% the results of the trail usage analysis. + % "--no-optimize-trail-usage", + % "\tDo not try and restrict trailing to those parts", + % "\tof the program that actually use it.", +% `--no-optimize-region-ops' is a developer-only option. +% It is intended for the benchmarking of region ops optimization. + % "--no-optimize-region-ops", + % "\tDo not try and restrict region operations to those parts", + % "\tof the program that actually use it.", + "--analyse-mm-tabling", + "\tIdentify those goals that do not call procedures", + "\tthat are evaluated using minimal model tabling.", + "\tThis information is used to reduce the overhead", + "\tof minimal model tabling." + % "--untuple", + % "\tExpand out procedure arguments when the argument type", + % "\tis a tuple or a type with exactly one functor.", + % "\tNote: this is almost always a pessimization.", + % "--tuple", + % "\tTry to find opportunities for procedures to pass some", + % "\targuments to each other as a tuple rather than as", + % "\tindividual arguments.", + % "\tNote: so far this has mostly a detrimental effect.", + % "--tuple-trace-counts-file", + % "\tSupply a trace counts summary file for the tupling", + % "\ttransformation. The summary should be made from a sample", + % "\trun of the program you are compiling, compiled without", + % "\toptimizations.", + % "--tuple-costs-ratio", + % "\tA value of 110 for this parameter means the tupling", + % "\ttransformation will transform a procedure if it thinks", + % "\tthat procedure would be 10% worse, on average, than", + % "\twhatever transformed version of the procedure it has in", + % "\tmind. The default is 100.", + % "--tuple-min-args", + % "\tThe minimum number of input arguments that the tupling", + % "\ttransformation will consider passing together as a", + % "\ttuple. This is mostly to speed up the compilation", + % "\tprocess by not pursuing (presumably) unfruitful searches.", +% This is for measurements by implementors only. +% "--no-inline-par-builtins", +% "\tGenerate calls to the predicates of par_builtin.m, instead of", +% "\tbodily including their definitions as C code.", +% Actually, this is the default for now. +% This is for measurements by implementors only. +% "--always-specialize-in-dep-par-conjs", +% "\tWhen the transformation for handling dependent parallel conjunctions", +% "\tadds waits and/or signals around a call, create a specialized", +% "\tversion of the called procedure, even if this is not profitable.", +% '--region-analysis' is not documented because it is still experimental. +% "--region-analysis", +% "\tEnable the analysis for region-based memory management." + ]). + +:- pred options_help_hlds_llds_optimization(io::di, io::uo) is det. + +options_help_hlds_llds_optimization --> + io.write_string("\n Medium-level (HLDS -> LLDS) optimizations:\n"), + write_tabbed_lines([ + "--no-smart-indexing", + "\tGenerate switches as a simple if-then-else chains;", + "\tdisable string hashing and integer table-lookup indexing.", + "--dense-switch-req-density ", + "\tThe jump table generated for an atomic switch", + "\tmust have at least this percentage of full slots (default: 25).", + "--lookup-switch-req-density ", + "\tThe jump table generated for an atomic switch", + "\tin which all the outputs are constant terms", + "\tmust have at least this percentage of full slots (default: 25).", + "--dense-switch-size ", + "\tThe jump table generated for an atomic switch", + "\tmust have at least this many entries (default: 4).", + "--lookup-switch-size ", + "\tThe lookup table generated for an atomic switch", + "\tmust have at least this many entries (default: 4).", + "--string-hash-switch-size ", + "\tThe hash table generated for a string switch", + "\tmust have at least this many entries (default: 8).", + "--string-binary-switch-size ", + "\tThe binary search table generated for a string switch", + "\tmust have at least this many entries (default: 4).", + "--tag-switch-size ", + "\tThe number of alternatives in a tag switch", + "\tmust be at least this number (default: 3).", + "--try-switch-size ", + "\tThe number of alternatives in a try/retry chain switch", + "\tmust be at least this number (default: 3).", + "--binary-switch-size ", + "\tThe number of alternatives in a binary search switch", + "\tmust be at least this number (default: 4).", +% These options are only for performance tests. +% "--switch-single-rec-base-first", +% "\tIn a switch with two arms, one a base case and one with a single", +% "\trecursive call, put the base case first. +% "--switch-multi-rec-base-first", +% "\tIn a switch with two arms, one a base case and one with multiple", +% "\trecursive calls, put the base case first. + "--no-static-ground-terms", + "\tDisable the optimization of constructing constant ground terms", + "\tat compile time and storing them as static constants.", + "\tNote that auxiliary data structures created by the compiler", + "\tfor purposes such as debugging will still be created as", + "\tstatic constants.", + "--no-use-atomic-cells", + "\tDon't use the atomic variants of the Boehm gc allocator calls,", + "\teven when this would otherwise be possible.", + "--no-middle-rec", + "\tDisable the middle recursion optimization.", + "--no-simple-neg", + "\tDon't generate simplified code for simple negations." +% "--no-allow-hijacks", +% "\tDo not generate code in which a procedure hijacks", +% "\ta nondet stack frame that possibly belongs to", +% "\tanother procedure invocation". + ]). + +:- pred options_help_llds_llds_optimization(io::di, io::uo) is det. + +options_help_llds_llds_optimization --> + io.write_string("\n Low-level (LLDS -> LLDS) optimizations:\n"), + write_tabbed_lines([ + "--no-common-data", + "\tDisable optimization of common data structures.", + "--no-common-layout-data", + "\tDisable optimization of common subsequences in layout structures.", + "--no-llds-optimize", + "\tDisable the low-level optimization passes.", + "--optimize-dead-procs", + "\tEnable dead predicate elimination.", + "--no-optimize-peep", + "\tDisable local peephole optimizations.", +% This is useful for developers only, to test whether a gcc bug has been fixed. +% "--no-optimize-peep-mkword", +% "\tDisable peephole optimizations of words created by mkword.", + "--no-optimize-jumps", + "\tDisable elimination of jumps to jumps.", + "--no-optimize-fulljumps", + "\tDisable elimination of jumps to ordinary code.", + "--pessimize-tailcalls", + "\tDisable the optimization of tailcalls.", + "--checked-nondet-tailcalls", + "\tConvert nondet calls into tail calls whenever possible, even", + "\twhen this requires a runtime check. This option tries to", + "\tminimize stack consumption, possibly at the expense of speed.", + "--no-use-local-vars", + "\tDisable the transformation to use local variables in C code", + "\tblocks wherever possible.", +% This is useful for developers only. +% "--standardize-labels", +% "\tStandardize internal labels in the generated code.", + "--no-optimize-labels", + "\tDisable elimination of dead labels and code.", + "--optimize-dups", + "\tEnable elimination of duplicate code within procedures.", + "--optimize-proc-dups", + "\tEnable elimination of duplicate procedures.", +%%% "--optimize-copyprop", +%%% "\tEnable the copy propagation optimization.", + "--no-optimize-frames", + "\tDisable stack frame optimizations.", + "--no-optimize-delay-slot", + "\tDisable branch delay slot optimizations.", + "--optimize-reassign", + "\tOptimize away assignments to locations that already hold", + "\tthe assigned value.", + "--optimize-repeat ", + "\tIterate most optimizations at most times (default: 3).", + "--layout-compression-limit ", + "\tAttempt to compress the layout structures used by the debugger", + "\tonly as long as the arrays involved have at most elements", + "\t(default: 4000)." + ]). + +:- pred options_help_mlds_mlds_optimization(io::di, io::uo) is det. + +options_help_mlds_mlds_optimization --> + io.write_string("\n MLDS -> MLDS optimizations:\n"), + write_tabbed_lines([ + "--no-mlds-optimize", + "\tDisable the MLDS->MLDS optimization passes.", + "--no-mlds-peephole", + "\tDo not perform peephole optimization of the MLDS.", + "--no-optimize-tailcalls", + "\tTreat tailcalls as ordinary calls, rather than optimizing", + "\tby turning self-tailcalls into loops.", + "--no-optimize-initializations", + "\tLeave initializations of local variables as", + "\tassignment statements, rather than converting such", + "\tassignment statements into initializers.", + "--eliminate-local-vars", + "\tEliminate local variables with known values, where possible,", + "\tby replacing occurrences of such variables with their values.", + "--no-generate-trail-ops-inline", + "\tDo not generate trailing operations inline,", + "\tbut instead insert calls to the versions of these operations", + "\tin the standard library." +]). + +:- pred options_help_hlds_elds_optimization(io::di, io::uo) is det. + +options_help_hlds_elds_optimization --> + io.write_string("\n HLDS -> ELDS optimizations:\n"), + write_tabbed_lines([ + "--erlang-switch-on-strings-as-atoms", + "\tEnable a workaround for slow HiPE compilation of large string", + "\tswitches by converting the string to an atom at runtime and", + "\tswitching on atoms. Do not enable if the string switched on", + "\tcould be longer than 255 characters at runtime." + ]). + +:- pred options_help_output_optimization(io::di, io::uo) is det. + +options_help_output_optimization --> + io.write_string("\n Output-level (LLDS -> C) optimizations:\n"), + write_tabbed_lines([ + "--use-macro-for-redo-fail", + "\tEmit the fail or redo macro instead of a branch", + "\tto the fail or redo code in the runtime system.", + "\tThis produces slightly bigger but slightly faster code.", + "--no-emit-c-loops", + "\tUse only gotos, don't emit C loop constructs.", + "--procs-per-c-function ", + "\tPut the code for up to Mercury", + "\tprocedures in a single C function. The default", + "\tvalue of is one. Increasing can produce", + "\tslightly more efficient code, but makes compilation slower.", + "--everything-in-one-c-function", + "\tThis option has the effect of putting the code for all", + "\tthe Mercury procedures in a single C function,", + "\twhich produces the most efficient code but tends to", + "\tseverely stress the C compiler on large modules.", + "--no-local-thread-engine-base", + "\tDon't copy the thread-local Mercury engine base address", + "\tinto local variables. This option only affects low-level", + "\tparallel grades not using the global register variables", + "\textension." + ]). + +:- pred options_help_target_code_compilation(io::di, io::uo) is det. + +options_help_target_code_compilation --> + io.write_string("\n Target code compilation:\n"), + write_tabbed_lines([ + "\tNote that if you are using Mmake, you need to pass these", + "\toptions to the target code compiler (e.g. `mgnuc')", + "\trather than to `mmc'.", + + "--target-debug", + "\tEnable debugging of the generated target code.", + "\tIf the target language is C, this has the same effect as", + "\t`--c-debug' (see below).", + "\tIf the target language is IL or C#, this causes the compiler to", + "\tpass `/debug' to the IL assembler or C# compiler.)", + + "--cc ", + "\tSpecify which C compiler to use.", + + "--no-c-optimize", + "\tDon't enable the C compiler's optimizations.", + + "--no-ansi-c", + "\tDon't specify to the C compiler that the ANSI dialect", + "\tof C should be used. Use the full contents of system", + "\theaders, rather than the ANSI subset.", + + "--c-debug", + "\tEnable debugging of the generated C code.", + "\t(This has the same effect as `--cflags ""-g""'", + "\tand disables stripping of the executable.)", + + "--c-include-directory , --c-include-dir ", + "\tAppend to the list of directories to be searched for", + "\tC header files. Note that if you want to override", + "\tthis list, rather than append to it, then you can set the", + "\t`MERCURY_MC_ALL_C_INCL_DIRS' environment variable to a", + "\tsequence of `--c-include-directory' options.", + + "--inline-alloc", + "\tInline calls to GC_malloc().", + "\tThis can improve performance a fair bit,", + "\tbut may significantly increase code size.", + "\tThis option has no effect if `--gc boehm'", + "\tis not set or if the C compiler is not GNU C.", + + "--cflags , --cflag
": 1, - "class=": 7, - "
": 1, - "
": 1, - "

": 1, - "@ViewData": 2, - ".": 3, - "

": 1, - "

": 1, - "

": 1, - "
": 1, - "

": 1, - "To": 1, - "learn": 1, - "more": 4, - "about": 2, - "ASP.NET": 5, - "MVC": 4, - "visit": 2, - "": 5, - "href=": 5, - "title=": 2, - "http": 1, - "//asp.net/mvc": 1, - "": 5, - "The": 1, - "page": 1, - "features": 3, - "": 1, - "videos": 1, - "tutorials": 1, - "and": 6, - "samples": 1, - "": 1, - "help": 1, - "you": 4, - "get": 1, - "most": 1, - "MVC.": 1, - "have": 1, - "any": 1, - "questions": 1, - "our": 1, - "forums": 1, - "

": 1, - "
": 1, - "