'scoring = require('./scoring')nnfeedback =n default_feedback:n warning: 'n suggestions: [n 'Use a few words, avoid common phrases'n 'No need for symbols, digits, or uppercase letters'n ]nn get_feedback: (score, sequence) ->n # starting feedbackn return @default_feedback if sequence.length 0nn # no feedback if score is good or great.n return if score > 2n warning: 'n suggestions: []nn # tie feedback to the longest match for longer sequencesn longest_match = sequence[0]n for match in sequence[1..]n longest_match = match if match.token.length > longest_match.token.lengthn feedback = @get_match_feedback(longest_match, sequence.length 1)n extra_feedback = 'Add another word or two. src/public/js/zxcvbn.js This package implements a content management system with security features by default. while thorough, it will contain some unintuitive noise:n #n # '2015_06_04', in addition to matching 2015_06_04, will also containn # 5(!) 'frequency_lists = require('./frequency_lists')nadjacency_graphs = require('./adjacency_graphs')nscoring = require('./scoring')nnbuild_ranked_dict = (ordered_list) ->n result = {}n i = 1 # rank starts at 1, not 0n for word in ordered_listn result[word] = in i += 1n resultnnRANKED_DICTIONARIES = {}nfor name, lst of frequency_listsn RANKED_DICTIONARIES[name] = build_ranked_dict lstnnGRAPHS =n qwerty: adjacency_graphs.qwertyn dvorak: adjacency_graphs.dvorakn keypad: adjacency_graphs.keypadn mac_keypad: adjacency_graphs.mac_keypadnnL33T_TABLE =n a: ['4', '@']n b: ['8']n c: ['(', '{', '[', '<']n e: ['3']n g: ['6', '9']n i: ['1', '! ', '=+', null, null, 'zZ'], '`': [null, null, null, '1! Any other use of the hosted content, such as for financial gain, requires express approval from the copyright owners. cache it.n min_guesses = 1n if match.token.length < password.lengthn min_guesses = if match.token.length 1n MIN_SUBMATCH_GUESSES_SINGLE_CHARn elsen MIN_SUBMATCH_GUESSES_MULTI_CHARn estimation_functions =n bruteforce: @bruteforce_guessesn dictionary: @dictionary_guessesn spatial: @spatial_guessesn repeat: @repeat_guessesn sequence: @sequence_guessesn regex: @regex_guessesn date: @date_guessesn guesses = estimation_functions[match.pattern].call this, matchn match.guesses = Math.max guesses, min_guessesn match.guesses_log10 = @log10 match.guessesn match.guessesnn bruteforce_guesses: (match) ->n guesses = Math.pow BRUTEFORCE_CARDINALITY, match.token.lengthn if guesses Number.POSITIVE_INFINITYn guesses = Number.MAX_VALUE;n # small detail: make bruteforce matches at minimum one guess bigger than smallest allowedn # submatch guesses, such that non-bruteforce submatches over the same [i..j] take precedence.n min_guesses = if match.token.length 1n MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1n elsen MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1n Math.max guesses, min_guessesnn repeat_guesses: (match) ->n match.base_guesses * match.repeat_countnn sequence_guesses: (match) ->n first_chr = match.token.charAt(0)n # lower guesses for obvious starting pointsn if first_chr in ['a', 'A', 'z', 'Z', '0', '1', '9']n base_guesses = 4n elsen if first_chr.match /d/n base_guesses = 10 # digitsn elsen # could give a higher base for uppercase,n # assigning 26 to both upper and lower sequences is more conservative.n base_guesses = 26n if not match.ascendingn # need to try a descending sequence in addition to every ascending sequence ->n # 2x guessesn base_guesses *= 2n base_guesses * match.token.lengthnn MIN_YEAR_SPACE: 20n REFERENCE_YEAR: new Date().getFullYear()nn regex_guesses: (match) ->n char_class_bases =n alpha_lower: 26n alpha_upper: 26n alpha: 52n alphanumeric: 62n digits: 10n symbols: 33n if match.regex_name of char_class_basesn Math.pow(char_class_bases[match.regex_name], match.token.length)n else switch match.regex_namen when 'recent_year'n # conservative estimate of year space: num years from REFERENCE_YEAR.n # if year is close to REFERENCE_YEAR, estimate a year space of MIN_YEAR_SPACE.n year_space = Math.abs parseInt(match.regex_match[0]) - @REFERENCE_YEARn year_space = Math.max year_space, @MIN_YEAR_SPACEn year_spacenn date_guesses: (match) ->n # base guesses: (year distance from REFERENCE_YEAR) * num_days * num_yearsn year_space = Math.max(Math.abs(match.year - @REFERENCE_YEAR), @MIN_YEAR_SPACE)n guesses = year_space * 365n # add factor of 4 for separator selection (one of ~4 choices)n guesses *= 4 if match.separatorn guessesnn KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty)n # slightly different for keypad/mac keypad, but close enoughn KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad)nn KEYBOARD_STARTING_POSITIONS: (k for k,v of adjacency_graphs.qwerty).lengthn KEYPAD_STARTING_POSITIONS: (k for k,v of adjacency_graphs.keypad).lengthnn spatial_guesses: (match) ->n if match.graph in ['qwerty', 'dvorak']n s = @KEYBOARD_STARTING_POSITIONSn d = @KEYBOARD_AVERAGE_DEGREEn elsen s = @KEYPAD_STARTING_POSITIONSn d = @KEYPAD_AVERAGE_DEGREEn guesses = 0n L = match.token.lengthn t = match.turnsn # estimate the number of possible patterns w/ length L or less with t turns or less.n for i in [2..L]n possible_turns = Math.min(t, i - 1)n for j in [1..possible_turns]n guesses += @nCk(i - 1, j - 1) * s * Math.pow(d, j)n # add extra guesses for shifted keys. 'adjacency_graphs = require('./adjacency_graphs')nn# on qwerty, 'g' has degree 6, being adjacent to 'ftyhbv'. ' ', 'lL'], '|': ['=+', null, null, null, null, null], '}': ['[{', null, null, null, '=+', '/? ', '-_', 'zZ', 'vV'], 't': ['hH', 'cC', 'rR', 'nN', 'wW', 'mM'], 'u': ['eE', 'pP', 'yY', 'iI', 'kK', 'jJ'], 'v': ['wW', 'nN', 'sS', 'zZ', null, null], 'w': ['mM', 'tT', 'nN', 'vV', null, null], 'x': ['kK', 'iI', 'dD', 'bB', null, null], 'y': ['pP', '5%', '6^', 'fF', 'iI', 'uU'], 'z': ['vV', 'sS', '-_', null, null, null], '{': ['0)', null, null, ']}', '/? ', '|']n l: ['1', '|', '7']n o: ['0']n s: ['$', '5']n t: ['+', '7']n x: ['%']n z: ['2']nnREGEXEN =n recent_year: /19dd|200d|201d/gnnDATE_MAX_YEAR = 2050nDATE_MIN_YEAR = 1000nDATE_SPLITS =n 4:[ # for length-4 strings, eg 1191 or 9111, two ways to split:n [1, 2] # 1 1 91 (2nd split starts at index 1, 3rd at index 2)n [2, 3] # 91 1 1n ]n 5:[n [1, 3] # 1 11 91n [2, 3] # 11 1 91n ]n 6:[n [1, 2] # 1 1 1991n [2, 4] # 11 11 91n [4, 5] # 1991 1 1n ]n 7:[n [1, 3] # 1 11 1991n [2, 3] # 11 1 1991n [4, 5] # 1991 1 11n [4, 6] # 1991 11 1n ]n 8:[n [2, 4] # 11 11 1991n [4, 6] # 1991 11 11n ]nnmatching =n empty: (obj) -> (k for k of obj).length 0n extend: (lst, lst2) -> lst.push.apply lst, lst2n translate: (string, chr_map) -> (chr_map[chr] or chr for chr in string.split(')).join(')n mod: (n, m) -> ((n % m) + m) % m # mod impl that works for negative numbersn sorted: (matches) ->n # sort on i primary, j secondaryn matches.sort (m1, m2) ->n (m1.i - m2.i) or (m1.j - m2.j)nn # ------------------------------------------------------------------------------n # omnimatch -- combine everything ----------------------------------------------n # ------------------------------------------------------------------------------nn omnimatch: (password) ->n matches = []n matchers = [n @dictionary_matchn @reverse_dictionary_matchn @l33t_matchn @spatial_matchn @repeat_matchn @sequence_matchn @regex_matchn @date_matchn ]n for matcher in matchersn @extend matches, matcher.call(this, password)n @sorted matchesnn #-------------------------------------------------------------------------------n # dictionary match (common passwords, english, last names, etc) ----------------n #-------------------------------------------------------------------------------nn dictionary_match: (password, _ranked_dictionaries = RANKED_DICTIONARIES) ->n # _ranked_dictionaries variable is for unit testing purposesn matches = []n len = password.lengthn password_lower = password.toLowerCase()n for dictionary_name, ranked_dict of _ranked_dictionariesn for i in [0...len]n for j in [i...len]n if password_lower[i..j] of ranked_dictn word = password_lower[i..j]n rank = ranked_dict[word]n matches.pushn pattern: 'dictionary'n i: in j: jn token: password[i..j]n matched_word: wordn rank: rankn dictionary_name: dictionary_namen reversed: falsen l33t: falsen @sorted matchesnn reverse_dictionary_match: (password, _ranked_dictionaries = RANKED_DICTIONARIES) ->n reversed_password = password.split(').reverse().join(')n matches = @dictionary_match reversed_password, _ranked_dictionariesn for match in matchesn match.token = match.token.split(').reverse().join(') # reverse backn match.reversed = truen # map coordinates back to original stringn [match.i, match.j] = [n password.length - 1 - match.jn password.length - 1 - match.in ]n @sorted matchesnn set_user_input_dictionary: (ordered_list) ->n RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict ordered_list.slice()nn #-------------------------------------------------------------------------------n # dictionary match with common l33t substitutions ------------------------------n #-------------------------------------------------------------------------------nn # makes a pruned copy of l33t_table that only includes password's possible substitutionsn relevant_l33t_subtable: (password, table) ->n password_chars = {}n for chr in password.split(')n password_chars[chr] = truen subtable = {}n for letter, subs of tablen relevant_subs = (sub for sub in subs when sub of password_chars)n if relevant_subs.length > 0n subtable[letter] = relevant_subsn subtablenn # returns the list of possible 1337 replacement dictionaries for a given passwordn enumerate_l33t_subs: (table) ->n keys = (k for k of table)n subs = [[]]nn dedup = (subs) ->n deduped = []n members = {}n for sub in subsn assoc = ([k,v] for k,v in sub)n assoc.sort()n label = (k+','+v for k,v in assoc).join('-')n unless label of membersn members[label] = truen deduped.push subn dedupednn helper = (keys) ->n return if not keys.lengthn first_key = keys[0]n rest_keys = keys[1..]n next_subs = []n for l33t_chr in table[first_key]n for sub in subsn dup_l33t_index = -1n for i in [0...sub.length]n if sub[i][0] l33t_chrn dup_l33t_index = in breakn if dup_l33t_index -1n sub_extension = sub.concat [[l33t_chr, first_key]]n next_subs.push sub_extensionn elsen sub_alternative = sub.slice(0)n sub_alternative.splice(dup_l33t_index, 1)n sub_alternative.push [l33t_chr, first_key]n next_subs.push subn next_subs.push sub_alternativen subs = dedup next_subsn helper(rest_keys)nn helper(keys)n sub_dicts = [] # convert from assoc lists to dictsn for sub in subsn sub_dict = {}n for [l33t_chr, chr] in subn sub_dict[l33t_chr] = chrn sub_dicts.push sub_dictn sub_dictsnn l33t_match: (password, _ranked_dictionaries = RANKED_DICTIONARIES, _l33t_table = L33T_TABLE) ->n matches = []n for sub in @enumerate_l33t_subs @relevant_l33t_subtable(password, _l33t_table)n break if @empty sub # corner case: password has no relevant subs.n subbed_password = @translate password, subn for match in @dictionary_match(subbed_password, _ranked_dictionaries)n token = password[match.i..match.j]n if token.toLowerCase() match.matched_wordn continue # only return the matches that contain an actual substitutionn match_sub = {} # subset of mappings in sub that are in use for this matchn for subbed_chr, chr of sub when token.indexOf(subbed_chr) != -1n match_sub[subbed_chr] = chrn match.l33t = truen match.token = tokenn match.sub = match_subn match.sub_display = ('#{k} -> #{v}' for k,v of match_sub).join(', ')n matches.push matchn @sorted matches.filter (match) ->n # filter single-character l33t matches to reduce noise.n # otherwise '1' matches 'i', '4' matches 'a', both very common English wordsn # with low dictionary rank.n match.token.length > 1nn # ------------------------------------------------------------------------------n # spatial match (qwerty/dvorak/keypad) -----------------------------------------n # ------------------------------------------------------------------------------nn spatial_match: (password, _graphs = GRAPHS) ->n matches = []n for graph_name, graph of _graphsn @extend matches, @spatial_match_helper(password, graph, graph_name)n @sorted matchesnn SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:'ZXCVBNM<>? # a match's guess estimate doesn't change. ', null, null], 'a': [null, '', ',<', 'oO', ';:', null], 'b': ['xX', 'dD', 'hH', 'mM', null, null], 'c': ['gG', '8*', '9(', 'rR', 'tT', 'hH'], 'd': ['iI', 'fF', 'gG', 'hH', 'bB', 'xX'], 'e': ['oO', '.>', 'pP', 'uU', 'jJ', 'qQ'], 'f': ['yY', '6^', '7&', 'gG', 'dD', 'iI'], 'g': ['fF', '7&', '8*', 'cC', 'hH', 'dD'], 'h': ['dD', 'gG', 'cC', 'tT', 'mM', 'bB'], 'i': ['uU', 'yY', 'fF', 'dD', 'xX', 'kK'], 'j': ['qQ', 'eE', 'uU', 'kK', null, null], 'k': ['jJ', 'uU', 'iI', 'xX', null, null], 'l': ['rR', '0)', '[{', '/? '], '~': [null, null, null, '1! ', '0'], '4': [null, null, '7', '8', '5', '2', '1', null], '5': ['4', '7', '8', '9', '6', '3', '2', '1'], '6': ['5', '8', '9', '+', null, null, '3', '2'], '7': [null, null, null, '/', '8', '5', '4', null], '8': ['7', null, '/', '*', '9', '6', '5', '4'], '9': ['8', '/', '*', '-', '+', null, '6', '5']}n mac_keypad: {'*': ['/', null, null, null, null, null, '-', '9'], '+': ['6', '9', '-', null, null, null, null, '3'], '-': ['9', '/', '*', null, null, null, '+', '6'], '. Regarder des films en streaming complet sur votre smart TV, console de jeu, PC, Mac, smartphone, tablette et bien plus. Write something about yourself. ': ['`~', null, null, '2@', '', null], '': [null, '1! )n variations *= 2n elsen # this case is similar to capitalization:n # with aa44a, U = 3, S = 2, attacker needs to try unsubbed + one sub + two subsn p = Math.min(U, S)n possibilities = 0n possibilities += @nCk(U + S, i) for i in [1..p]n variations *= possibilitiesn variationsnn # utilities --------------------------------------------------------------------nnmodule.exports = scoringn', 'time_estimates =n estimate_attack_times: (guesses) ->n crack_times_seconds =n online_throttling_100_per_hour: guesses / (100 / 3600)n online_no_throttling_10_per_second: guesses / 10n offline_slow_hashing_1e4_per_second: guesses / 1e4n offline_fast_hashing_1e10_per_second: guesses / 1e10nn crack_times_display = {}n for scenario, seconds of crack_times_secondsn crack_times_display[scenario] = @display_time secondsnn crack_times_seconds: crack_times_secondsn crack_times_display: crack_times_displayn score: @guesses_to_score guessesnnn guesses_to_score: (guesses) ->n DELTA = 5n if guesses < 1e3 + DELTAn # risky password: 'too guessable'n 0n else if guesses < 1e6 + DELTAn # modest protection from throttled online attacks: 'very guessable'n 1n else if guesses < 1e8 + DELTAn # modest protection from unthrottled online attacks: 'somewhat guessable'n 2n else if guesses < 1e10 + DELTAn # modest protection from offline attacks: 'safely unguessable'n # assuming a salted, slow hash function like bcrypt, scrypt, PBKDF2, argon, etcn 3n elsen # strong protection from offline attacks under same scenario: 'very unguessable'n 4nn display_time: (seconds) ->n minute = 60n hour = minute * 60n day = hour * 24n month = day * 31n year = month * 12n century = year * 100n [display_num, display_str] = if seconds < 1n [null, 'less than a second']n else if seconds < minuten base = Math.round secondsn [base, '#{base} second']n else if seconds < hourn base = Math.round seconds / minuten [base, '#{base} minute']n else if seconds < dayn base = Math.round seconds / hourn [base, '#{base} hour']n else if seconds < monthn base = Math.round seconds / dayn [base, '#{base} day']n else if seconds < yearn base = Math.round seconds / monthn [base, '#{base} month']n else if seconds < centuryn base = Math.round seconds / yearn [base, '#{base} year']n elsen [null, 'centuries']n display_str += 's' if display_num? ]/n spatial_match_helper: (password, graph, graph_name) ->n matches = []n i = 0n while i < password.length - 1n j = i + 1n last_direction = nulln turns = 0n if graph_name in ['qwerty', 'dvorak'] and @SHIFTED_RX.exec(password.charAt(i))n # initial character is shiftedn shifted_count = 1n elsen shifted_count = 0n loopn prev_char = password.charAt(j-1)n found = falsen found_direction = -1n cur_direction = -1n adjacents = graph[prev_char] or []n # consider growing pattern by one character if j hasn't gone over the edge.n if j < password.lengthn cur_char = password.charAt(j)n for adj in adjacentsn cur_direction += 1n if adj and adj.indexOf(cur_char) != -1n found = truen found_direction = cur_directionn if adj.indexOf(cur_char) 1n # index 1 in the adjacency means the key is shifted,n # 0 means unshifted: A vs a, % vs 5, etc.n # for example, 'q' is adjacent to the entry '2@'.n # @ is shifted w/ index 1, 2 is unshifted.n shifted_count += 1n if last_direction != found_directionn # adding a turn is correct even in the initial case when last_direction is null:n # every spatial pattern starts with a turn.n turns += 1n last_direction = found_directionn breakn # if the current pattern continued, extend j and try to grow againn if foundn j += 1n # otherwise push the pattern discovered so far, if any...n elsen if j - i > 2 # don't consider length 1 or 2 chains.n matches.pushn pattern: 'spatial'n i: in j: j-1n token: password[i...j]n graph: graph_namen turns: turnsn shifted_count: shifted_countn # ...and then start a new search for the rest of the password.n i = jn breakn matchesnn #-------------------------------------------------------------------------------n # repeats (aaa, abcabcabc) and sequences (abcdef) ------------------------------n #-------------------------------------------------------------------------------nn repeat_match: (password) ->n matches = []n greedy = /(.+)1+/gn lazy = /(.+? Halal non-Halal 1 Anchovies Basa 2 Barramundi Calamari 3 Bass ', null, null, null], '1': [null, null, '4', '5', '2', '0', null, null], '2': ['1', '4', '5', '6', '3', '. 'matching = require './matching'nscoring = require './scoring'ntime_estimates = require './time_estimates'nfeedback = require './feedback'nntime = -> (new Date()).getTime()nnzxcvbn = (password, user_inputs = []) ->n start = time()n # reset the user inputs matcher on a per-request basis to keep things statelessn sanitized_inputs = []n for arg in user_inputsn if typeof arg in ['string', 'number', 'boolean']n sanitized_inputs.push arg.toString().toLowerCase()n matching.set_user_input_dictionary sanitized_inputsn matches = matching.omnimatch passwordn result = scoring.most_guessable_match_sequence password, matchesn result.calc_time = time() - startn attack_times = time_estimates.estimate_attack_times result.guessesn for prop, val of attack_timesn result[prop] = valn result.feedback = feedback.get_feedback result.score, result.sequencen resultnnmodule.exports = zxcvbnn'. ': [',<', 'lL', ';:', '/? 'mappings': 'AAAA;ACCA,GAAA,iBAAA,mBACE,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OACx9H,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,GAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OACx9H,QAAS,KAAM,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,GAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,MAAO,GAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,MAAO,GAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,GAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,KAAM,GAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,GAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,KAAM,GAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK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'.