/js/libs/socket.io.js
https://github.com/JoshElias/EmberSkeleton · JavaScript · 7590 lines · 7409 code · 181 blank · 0 comment · 5 complexity · 9d09eb9fca68e8020e9ecbddd3c8af09 MD5 · raw file
- <!DOCTYPE html>
- <html class=" ">
- <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
- <meta charset='utf-8'>
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-
- <title>socket.io-client/socket.io.js at master · Automattic/socket.io-client</title>
- <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
- <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
- <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
- <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
- <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
- <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
- <meta property="fb:app_id" content="1401488693436528"/>
- <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="Automattic/socket.io-client" name="twitter:title" /><meta content="socket.io-client - Realtime application framework (client)" name="twitter:description" /><meta content="https://avatars2.githubusercontent.com/u/887802?s=400" name="twitter:image:src" />
- <meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars2.githubusercontent.com/u/887802?s=400" property="og:image" /><meta content="Automattic/socket.io-client" property="og:title" /><meta content="https://github.com/Automattic/socket.io-client" property="og:url" /><meta content="socket.io-client - Realtime application framework (client)" property="og:description" />
- <link rel="assets" href="https://assets-cdn.github.com/">
- <link rel="conduit-xhr" href="https://ghconduit.com:25035">
- <link rel="xhr-socket" href="/_sockets" />
- <meta name="msapplication-TileImage" content="/windows-tile.png" />
- <meta name="msapplication-TileColor" content="#ffffff" />
- <meta name="selected-link" value="repo_source" data-pjax-transient />
- <meta name="google-analytics" content="UA-3769691-2">
- <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="4C41D68F:01FE:FF1AFE9:53A44452" name="octolytics-dimension-request_id" /><meta content="7076407" name="octolytics-actor-id" /><meta content="JoshElias" name="octolytics-actor-login" /><meta content="ada1c0e9d438baace9508c4c3534588ae29311448350116881d6b4b3ceec6fbb" name="octolytics-actor-hash" />
-
-
-
- <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico" />
- <meta content="authenticity_token" name="csrf-param" />
- <meta content="7ecIGPFLYxUkrtQYTTFF9YpDyoo9i+82foi7/6NViOGWwDdTJriw2zuOMvvOIYVqqmjNTwQedJiSAJXGptRNVg==" name="csrf-token" />
- <link href="https://assets-cdn.github.com/assets/github-26c7cdac8c5ba3b7dcb80ef2e9ad5563e60f4390.css" media="all" rel="stylesheet" type="text/css" />
- <link href="https://assets-cdn.github.com/assets/github2-b92e4911181077d3006b99fc1559e995107a6332.css" media="all" rel="stylesheet" type="text/css" />
-
- <meta http-equiv="x-pjax-version" content="87bffd6373b876fa17b54c64e8484cd7">
-
- <meta name="description" content="socket.io-client - Realtime application framework (client)" />
- <meta content="887802" name="octolytics-dimension-user_id" /><meta content="Automattic" name="octolytics-dimension-user_login" /><meta content="557977" name="octolytics-dimension-repository_id" /><meta content="Automattic/socket.io-client" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="557977" name="octolytics-dimension-repository_network_root_id" /><meta content="Automattic/socket.io-client" name="octolytics-dimension-repository_network_root_nwo" />
- <link href="https://github.com/Automattic/socket.io-client/commits/master.atom" rel="alternate" title="Recent Commits to socket.io-client:master" type="application/atom+xml" />
- </head>
- <body class="logged_in env-production windows vis-public page-blob">
- <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
- <div class="wrapper">
-
-
-
-
- <div class="header header-logged-in true">
- <div class="container clearfix">
- <a class="header-logo-invertocat" href="https://github.com/" aria-label="Homepage">
- <span class="mega-octicon octicon-mark-github"></span>
- </a>
-
- <a href="/notifications" aria-label="You have no unread notifications" class="notification-indicator tooltipped tooltipped-s" data-hotkey="g n">
- <span class="mail-status all-read"></span>
- </a>
- <div class="command-bar js-command-bar in-repository">
- <form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
- <div class="commandbar">
- <span class="message"></span>
- <input type="text" data-hotkey="s, /" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
-
- data-username="JoshElias"
- data-repo="Automattic/socket.io-client"
- data-branch="master"
- data-sha="daf2a7332bae7742181a32cf651b031b09c4cc91"
- >
- <div class="display hidden"></div>
- </div>
- <input type="hidden" name="nwo" value="Automattic/socket.io-client" />
- <div class="select-menu js-menu-container js-select-menu search-context-select-menu">
- <span class="minibutton select-menu-button js-menu-target" role="button" aria-haspopup="true">
- <span class="js-select-button">This repository</span>
- </span>
- <div class="select-menu-modal-holder js-menu-content js-navigation-container" aria-hidden="true">
- <div class="select-menu-modal">
- <div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
- <div class="select-menu-item-text js-select-button-text">This repository</div>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <input type="radio" name="search_target" value="global" />
- <div class="select-menu-item-text js-select-button-text">All repositories</div>
- </div> <!-- /.select-menu-item -->
- </div>
- </div>
- </div>
- <span class="help tooltipped tooltipped-s" aria-label="Show command bar help">
- <span class="octicon octicon-question"></span>
- </span>
- <input type="hidden" name="ref" value="cmdform">
- </form>
- <ul class="top-nav">
- <li class="explore"><a href="/explore">Explore</a></li>
- <li><a href="https://gist.github.com">Gist</a></li>
- <li><a href="/blog">Blog</a></li>
- <li><a href="https://help.github.com">Help</a></li>
- </ul>
- </div>
-
- <ul id="user-links">
- <li>
- <a href="/JoshElias" class="name">
- <img alt="JoshElias" class=" js-avatar" data-user="7076407" height="20" src="https://avatars0.githubusercontent.com/u/7076407?s=140" width="20" /> JoshElias
- </a>
- </li>
- <li class="new-menu dropdown-toggle js-menu-container">
- <a href="#" class="js-menu-target tooltipped tooltipped-s" aria-label="Create new...">
- <span class="octicon octicon-plus"></span>
- <span class="dropdown-arrow"></span>
- </a>
- <div class="new-menu-content js-menu-content">
- </div>
- </li>
- <li>
- <a href="/settings/profile" id="account_settings"
- class="tooltipped tooltipped-s"
- aria-label="Account settings ">
- <span class="octicon octicon-tools"></span>
- </a>
- </li>
- <li>
- <form class="logout-form" action="/logout" method="post">
- <button class="sign-out-button tooltipped tooltipped-s" aria-label="Sign out">
- <span class="octicon octicon-sign-out"></span>
- </button>
- </form>
- </li>
- </ul>
- <div class="js-new-dropdown-contents hidden">
-
- <ul class="dropdown-menu">
- <li>
- <a href="/new"><span class="octicon octicon-repo"></span> New repository</a>
- </li>
- <li>
- <a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
- </li>
- <li class="section-title">
- <span title="Automattic/socket.io-client">This repository</span>
- </li>
- <li>
- <a href="/Automattic/socket.io-client/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
- </li>
- </ul>
- </div>
-
- </div>
- </div>
-
-
- <div id="start-of-content" class="accessibility-aid"></div>
- <div class="site" itemscope itemtype="http://schema.org/WebPage">
- <div id="js-flash-container">
-
- </div>
- <div class="pagehead repohead instapaper_ignore readability-menu">
- <div class="container">
-
- <ul class="pagehead-actions">
- <li class="subscription">
- <form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="K+b3Z5uff/1VkZ3DRFK2m1U1je7sc6Ji+9lNOT2bG5UjBVbgOgYGoHxe24CGLYrGIdejzepP+7qJLu6/P58zZg==" /></div> <input id="repository_id" name="repository_id" type="hidden" value="557977" />
- <div class="select-menu js-menu-container js-select-menu">
- <a class="social-count js-social-count" href="/Automattic/socket.io-client/watchers">
- 196
- </a>
- <span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0" aria-haspopup="true">
- <span class="js-select-button">
- <span class="octicon octicon-eye"></span>
- Watch
- </span>
- </span>
- <div class="select-menu-modal-holder">
- <div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true">
- <div class="select-menu-header">
- <span class="select-menu-title">Notification status</span>
- <span class="octicon octicon-x js-menu-close"></span>
- </div> <!-- /.select-menu-header -->
- <div class="select-menu-list js-navigation-container" role="menu">
- <div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <div class="select-menu-item-text">
- <input checked="checked" id="do_included" name="do" type="radio" value="included" />
- <h4>Not watching</h4>
- <span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
- <span class="js-select-button-text hidden-select-button-text">
- <span class="octicon octicon-eye"></span>
- Watch
- </span>
- </div>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
- <span class="select-menu-item-icon octicon octicon octicon-check"></span>
- <div class="select-menu-item-text">
- <input id="do_subscribed" name="do" type="radio" value="subscribed" />
- <h4>Watching</h4>
- <span class="description">You receive notifications for all conversations in this repository.</span>
- <span class="js-select-button-text hidden-select-button-text">
- <span class="octicon octicon-eye"></span>
- Unwatch
- </span>
- </div>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <div class="select-menu-item-text">
- <input id="do_ignore" name="do" type="radio" value="ignore" />
- <h4>Ignoring</h4>
- <span class="description">You do not receive any notifications for conversations in this repository.</span>
- <span class="js-select-button-text hidden-select-button-text">
- <span class="octicon octicon-mute"></span>
- Stop ignoring
- </span>
- </div>
- </div> <!-- /.select-menu-item -->
- </div> <!-- /.select-menu-list -->
- </div> <!-- /.select-menu-modal -->
- </div> <!-- /.select-menu-modal-holder -->
- </div> <!-- /.select-menu -->
- </form>
- </li>
- <li>
-
- <div class="js-toggler-container js-social-container starring-container ">
- <form accept-charset="UTF-8" action="/Automattic/socket.io-client/unstar" class="js-toggler-form starred" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="T9cvDV85HJ6Eyj1Ht/dGuVBd7CNF3a6cPSVgcXFflrnifxh8ZnQBlOQUXMxSkmrtsGB6yvyTTnoIHhl+/rLjvw==" /></div>
- <button
- class="minibutton with-count js-toggler-target star-button"
- aria-label="Unstar this repository" title="Unstar Automattic/socket.io-client">
- <span class="octicon octicon-star"></span>
- Unstar
- </button>
- <a class="social-count js-social-count" href="/Automattic/socket.io-client/stargazers">
- 2,331
- </a>
- </form>
- <form accept-charset="UTF-8" action="/Automattic/socket.io-client/star" class="js-toggler-form unstarred" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="TB6zJDtHJwtG+mBwOeHhj5gyYqrXZgQpjGq2Bs0uOEaSQB63Jm4FHAiyzC6ncxiYago91aUjkKMztsuZEEpAZg==" /></div>
- <button
- class="minibutton with-count js-toggler-target star-button"
- aria-label="Star this repository" title="Star Automattic/socket.io-client">
- <span class="octicon octicon-star"></span>
- Star
- </button>
- <a class="social-count js-social-count" href="/Automattic/socket.io-client/stargazers">
- 2,331
- </a>
- </form> </div>
- </li>
- <li>
- <a href="/Automattic/socket.io-client/fork" class="minibutton with-count js-toggler-target fork-button lighter tooltipped-n" title="Fork your own copy of Automattic/socket.io-client to your account" aria-label="Fork your own copy of Automattic/socket.io-client to your account" rel="nofollow" data-method="post">
- <span class="octicon octicon-repo-forked"></span>
- Fork
- </a>
- <a href="/Automattic/socket.io-client/network" class="social-count">738</a>
- </li>
- </ul>
- <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
- <span class="repo-label"><span>public</span></span>
- <span class="mega-octicon octicon-repo"></span>
- <span class="author"><a href="/Automattic" class="url fn" itemprop="url" rel="author"><span itemprop="title">Automattic</span></a></span><!--
- --><span class="path-divider">/</span><!--
- --><strong><a href="/Automattic/socket.io-client" class="js-current-repository js-repo-home-link">socket.io-client</a></strong>
- <span class="page-context-loader">
- <img alt="" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </span>
- </h1>
- </div><!-- /.container -->
- </div><!-- /.repohead -->
- <div class="container">
- <div class="repository-with-sidebar repo-container new-discussion-timeline js-new-discussion-timeline ">
- <div class="repository-sidebar clearfix">
-
- <div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
- <div class="sunken-menu-contents">
- <ul class="sunken-menu-group">
- <li class="tooltipped tooltipped-w" aria-label="Code">
- <a href="/Automattic/socket.io-client" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /Automattic/socket.io-client">
- <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </a> </li>
- <li class="tooltipped tooltipped-w" aria-label="Issues">
- <a href="/Automattic/socket.io-client/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g i" data-selected-links="repo_issues /Automattic/socket.io-client/issues">
- <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
- <span class='counter'>259</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </a> </li>
- <li class="tooltipped tooltipped-w" aria-label="Pull Requests">
- <a href="/Automattic/socket.io-client/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-hotkey="g p" data-selected-links="repo_pulls /Automattic/socket.io-client/pulls">
- <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
- <span class='counter'>84</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </a> </li>
- </ul>
- <div class="sunken-menu-separator"></div>
- <ul class="sunken-menu-group">
- <li class="tooltipped tooltipped-w" aria-label="Pulse">
- <a href="/Automattic/socket.io-client/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /Automattic/socket.io-client/pulse">
- <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </a> </li>
- <li class="tooltipped tooltipped-w" aria-label="Graphs">
- <a href="/Automattic/socket.io-client/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /Automattic/socket.io-client/graphs">
- <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </a> </li>
- <li class="tooltipped tooltipped-w" aria-label="Network">
- <a href="/Automattic/socket.io-client/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /Automattic/socket.io-client/network">
- <span class="octicon octicon-repo-forked"></span> <span class="full-word">Network</span>
- <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" />
- </a> </li>
- </ul>
- </div>
- </div>
- <div class="only-with-full-nav">
-
-
- <div class="clone-url open"
- data-protocol-type="http"
- data-url="/users/set_protocol?protocol_selector=http&protocol_type=clone">
- <h3><strong>HTTPS</strong> clone URL</h3>
- <div class="clone-url-box">
- <input type="text" class="clone js-url-field"
- value="https://github.com/Automattic/socket.io-client.git" readonly="readonly">
- <span class="url-box-clippy">
- <button aria-label="copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/Automattic/socket.io-client.git" data-copied-hint="copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </span>
- </div>
- </div>
-
- <div class="clone-url "
- data-protocol-type="ssh"
- data-url="/users/set_protocol?protocol_selector=ssh&protocol_type=clone">
- <h3><strong>SSH</strong> clone URL</h3>
- <div class="clone-url-box">
- <input type="text" class="clone js-url-field"
- value="git@github.com:Automattic/socket.io-client.git" readonly="readonly">
- <span class="url-box-clippy">
- <button aria-label="copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="git@github.com:Automattic/socket.io-client.git" data-copied-hint="copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </span>
- </div>
- </div>
-
- <div class="clone-url "
- data-protocol-type="subversion"
- data-url="/users/set_protocol?protocol_selector=subversion&protocol_type=clone">
- <h3><strong>Subversion</strong> checkout URL</h3>
- <div class="clone-url-box">
- <input type="text" class="clone js-url-field"
- value="https://github.com/Automattic/socket.io-client" readonly="readonly">
- <span class="url-box-clippy">
- <button aria-label="copy to clipboard" class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="https://github.com/Automattic/socket.io-client" data-copied-hint="copied!" type="button"><span class="octicon octicon-clippy"></span></button>
- </span>
- </div>
- </div>
- <p class="clone-options">You can clone with
- <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
- <a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
- or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
- <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
- <span class="octicon octicon-question"></span>
- </a>
- </p>
- <a href="github-windows://openRepo/https://github.com/Automattic/socket.io-client" class="minibutton sidebar-button" title="Save Automattic/socket.io-client to your computer and use it in GitHub Desktop." aria-label="Save Automattic/socket.io-client to your computer and use it in GitHub Desktop.">
- <span class="octicon octicon-device-desktop"></span>
- Clone in Desktop
- </a>
- <a href="/Automattic/socket.io-client/archive/master.zip"
- class="minibutton sidebar-button"
- aria-label="Download Automattic/socket.io-client as a zip file"
- title="Download Automattic/socket.io-client as a zip file"
- rel="nofollow">
- <span class="octicon octicon-cloud-download"></span>
- Download ZIP
- </a>
- </div>
- </div><!-- /.repository-sidebar -->
- <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
-
- <a href="/Automattic/socket.io-client/blob/191b342e552eaeb0c117c7aa932f180e46253922/socket.io.js" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>
- <!-- blob contrib key: blob_contributors:v21:a2814e96229bba825bf1fbbb5f433e09 -->
- <p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
- <div class="file-navigation">
-
- <div class="select-menu js-menu-container js-select-menu" >
- <span class="minibutton select-menu-button js-menu-target css-truncate" data-hotkey="w"
- data-master-branch="master"
- data-ref="master"
- title="master"
- role="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
- <span class="octicon octicon-git-branch"></span>
- <i>branch:</i>
- <span class="js-select-button css-truncate-target">master</span>
- </span>
- <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">
- <div class="select-menu-modal">
- <div class="select-menu-header">
- <span class="select-menu-title">Switch branches/tags</span>
- <span class="octicon octicon-x js-menu-close"></span>
- </div> <!-- /.select-menu-header -->
- <div class="select-menu-filters">
- <div class="select-menu-text-filter">
- <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
- </div>
- <div class="select-menu-tabs">
- <ul>
- <li class="select-menu-tab">
- <a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
- </li>
- <li class="select-menu-tab">
- <a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
- </li>
- </ul>
- </div><!-- /.select-menu-tabs -->
- </div><!-- /.select-menu-filters -->
- <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
- <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/blob/0.9/socket.io.js"
- data-name="0.9"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9">0.9</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/blob/06/socket.io.js"
- data-name="06"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="06">06</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/blob/add/zuul/socket.io.js"
- data-name="add/zuul"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="add/zuul">add/zuul</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/blob/develop/socket.io.js"
- data-name="develop"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="develop">develop</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item selected">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/blob/master/socket.io.js"
- data-name="master"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="master">master</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/blob/webworker/socket.io.js"
- data-name="webworker"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="webworker">webworker</a>
- </div> <!-- /.select-menu-item -->
- </div>
- <div class="select-menu-no-results">Nothing to show</div>
- </div> <!-- /.select-menu-list -->
- <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
- <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.6/socket.io.js"
- data-name="1.0.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.6">1.0.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.5/socket.io.js"
- data-name="1.0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.5">1.0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.4/socket.io.js"
- data-name="1.0.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.4">1.0.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.3/socket.io.js"
- data-name="1.0.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.3">1.0.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.2/socket.io.js"
- data-name="1.0.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.2">1.0.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.1/socket.io.js"
- data-name="1.0.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.1">1.0.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.0-pre5/socket.io.js"
- data-name="1.0.0-pre5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.0-pre5">1.0.0-pre5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.0-pre4/socket.io.js"
- data-name="1.0.0-pre4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.0-pre4">1.0.0-pre4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.0-pre3/socket.io.js"
- data-name="1.0.0-pre3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.0-pre3">1.0.0-pre3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.0-pre2/socket.io.js"
- data-name="1.0.0-pre2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.0-pre2">1.0.0-pre2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.0-pre/socket.io.js"
- data-name="1.0.0-pre"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.0-pre">1.0.0-pre</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/1.0.0/socket.io.js"
- data-name="1.0.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="1.0.0">1.0.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.17/socket.io.js"
- data-name="0.9.17"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.17">0.9.17</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.16/socket.io.js"
- data-name="0.9.16"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.16">0.9.16</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.15/socket.io.js"
- data-name="0.9.15"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.15">0.9.15</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.11/socket.io.js"
- data-name="0.9.11"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.11">0.9.11</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.10/socket.io.js"
- data-name="0.9.10"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.10">0.9.10</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.9/socket.io.js"
- data-name="0.9.9"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.9">0.9.9</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.8/socket.io.js"
- data-name="0.9.8"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.8">0.9.8</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.7/socket.io.js"
- data-name="0.9.7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.7">0.9.7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.6/socket.io.js"
- data-name="0.9.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.6">0.9.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.5/socket.io.js"
- data-name="0.9.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.5">0.9.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.4/socket.io.js"
- data-name="0.9.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.4">0.9.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.3/socket.io.js"
- data-name="0.9.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.3">0.9.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.2/socket.io.js"
- data-name="0.9.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.2">0.9.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.1-1/socket.io.js"
- data-name="0.9.1-1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.1-1">0.9.1-1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.1/socket.io.js"
- data-name="0.9.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.1">0.9.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.9.0/socket.io.js"
- data-name="0.9.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.9.0">0.9.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.7/socket.io.js"
- data-name="0.8.7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.7">0.8.7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.6/socket.io.js"
- data-name="0.8.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.6">0.8.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.5/socket.io.js"
- data-name="0.8.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.5">0.8.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.4/socket.io.js"
- data-name="0.8.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.4">0.8.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.3/socket.io.js"
- data-name="0.8.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.3">0.8.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.2/socket.io.js"
- data-name="0.8.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.2">0.8.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.1/socket.io.js"
- data-name="0.8.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.1">0.8.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.8.0/socket.io.js"
- data-name="0.8.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.8.0">0.8.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.11/socket.io.js"
- data-name="0.7.11"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.11">0.7.11</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.10/socket.io.js"
- data-name="0.7.10"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.10">0.7.10</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.9/socket.io.js"
- data-name="0.7.9"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.9">0.7.9</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.5/socket.io.js"
- data-name="0.7.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.5">0.7.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.4/socket.io.js"
- data-name="0.7.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.4">0.7.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.3/socket.io.js"
- data-name="0.7.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.3">0.7.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.2/socket.io.js"
- data-name="0.7.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.2">0.7.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.1/socket.io.js"
- data-name="0.7.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.1">0.7.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.7.0/socket.io.js"
- data-name="0.7.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.7.0">0.7.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.6.3/socket.io.js"
- data-name="0.6.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.6.3">0.6.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.6.2/socket.io.js"
- data-name="0.6.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.6.2">0.6.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.6.1/socket.io.js"
- data-name="0.6.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.6.1">0.6.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.6/socket.io.js"
- data-name="0.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.6">0.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.5.3/socket.io.js"
- data-name="0.5.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.5.3">0.5.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.5.2/socket.io.js"
- data-name="0.5.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.5.2">0.5.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.5.1/socket.io.js"
- data-name="0.5.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.5.1">0.5.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.5/socket.io.js"
- data-name="0.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.5">0.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.2.4/socket.io.js"
- data-name="0.2.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.2.4">0.2.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.2.3/socket.io.js"
- data-name="0.2.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.2.3">0.2.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.2.2/socket.io.js"
- data-name="0.2.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.2.2">0.2.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.2.1/socket.io.js"
- data-name="0.2.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.2.1">0.2.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.2.0/socket.io.js"
- data-name="0.2.0"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.2.0">0.2.0</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.8/socket.io.js"
- data-name="0.1.8"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.8">0.1.8</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.7/socket.io.js"
- data-name="0.1.7"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.7">0.1.7</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.6/socket.io.js"
- data-name="0.1.6"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.6">0.1.6</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.5/socket.io.js"
- data-name="0.1.5"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.5">0.1.5</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.4/socket.io.js"
- data-name="0.1.4"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.4">0.1.4</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.3/socket.io.js"
- data-name="0.1.3"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.3">0.1.3</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.2/socket.io.js"
- data-name="0.1.2"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.2">0.1.2</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1.1/socket.io.js"
- data-name="0.1.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1.1">0.1.1</a>
- </div> <!-- /.select-menu-item -->
- <div class="select-menu-item js-navigation-item ">
- <span class="select-menu-item-icon octicon octicon-check"></span>
- <a href="/Automattic/socket.io-client/tree/0.1/socket.io.js"
- data-name="0.1"
- data-skip-pjax="true"
- rel="nofollow"
- class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
- title="0.1">0.1</a>
- </div> <!-- /.select-menu-item -->
- </div>
- <div class="select-menu-no-results">Nothing to show</div>
- </div> <!-- /.select-menu-list -->
- </div> <!-- /.select-menu-modal -->
- </div> <!-- /.select-menu-modal-holder -->
- </div> <!-- /.select-menu -->
- <div class="button-group right">
- <a href="/Automattic/socket.io-client/find/master"
- class="js-show-file-finder minibutton empty-icon tooltipped tooltipped-s"
- data-pjax
- data-hotkey="t"
- aria-label="Quickly jump between files">
- <span class="octicon octicon-list-unordered"></span>
- </a>
- <button class="js-zeroclipboard minibutton zeroclipboard-button"
- data-clipboard-text="socket.io.js"
- aria-label="Copy to clipboard"
- data-copied-hint="Copied!">
- <span class="octicon octicon-clippy"></span>
- </button>
- </div>
- <div class="breadcrumb">
- <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/Automattic/socket.io-client" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">socket.io-client</span></a></span></span><span class="separator"> / </span><strong class="final-path">socket.io.js</strong>
- </div>
- </div>
- <div class="commit file-history-tease">
- <img alt="Guillermo Rauch" class="main-avatar js-avatar" data-user="13041" height="24" src="https://avatars0.githubusercontent.com/u/13041?s=140" width="24" />
- <span class="author"><a href="/guille" rel="contributor">guille</a></span>
- <time datetime="2014-06-19T14:57:45-07:00" is="relative-time">June 19, 2014</time>
- <div class="commit-title">
- <a href="/Automattic/socket.io-client/commit/191b342e552eaeb0c117c7aa932f180e46253922" class="message" data-pjax="true" title="Release 1.0.6">Release 1.0.6</a>
- </div>
- <div class="participation">
- <p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>8</strong> contributors</a></p>
- <a class="avatar tooltipped tooltipped-s" aria-label="guille" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=guille"><img alt="Guillermo Rauch" class=" js-avatar" data-user="13041" height="20" src="https://avatars0.githubusercontent.com/u/13041?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="3rd-Eden" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=3rd-Eden"><img alt="Arnout Kazemier" class=" js-avatar" data-user="28071" height="20" src="https://avatars1.githubusercontent.com/u/28071?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="dvv" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=dvv"><img alt="Vladimir Dronnikov" class=" js-avatar" data-user="211335" height="20" src="https://avatars2.githubusercontent.com/u/211335?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="kevin-roark" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=kevin-roark"><img alt="Kevin Roark" class=" js-avatar" data-user="3232081" height="20" src="https://avatars2.githubusercontent.com/u/3232081?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="kreichgauer" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=kreichgauer"><img alt="Martin Kreichgauer" class=" js-avatar" data-user="226014" height="20" src="https://avatars2.githubusercontent.com/u/226014?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="fat-bot" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=fat-bot"><img alt="fat-bot" class=" js-avatar" data-user="1976126" height="20" src="https://avatars2.githubusercontent.com/u/1976126?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="saikat" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=saikat"><img alt="Saikat Chakrabarti" class=" js-avatar" data-user="83782" height="20" src="https://avatars2.githubusercontent.com/u/83782?s=140" width="20" /></a>
- <a class="avatar tooltipped tooltipped-s" aria-label="substack" href="/Automattic/socket.io-client/commits/master/socket.io.js?author=substack"><img alt="James Halliday" class=" js-avatar" data-user="12631" height="20" src="https://avatars1.githubusercontent.com/u/12631?s=140" width="20" /></a>
- </div>
- <div id="blob_contributors_box" style="display:none">
- <h2 class="facebox-header">Users who have contributed to this file</h2>
- <ul class="facebox-user-list">
- <li class="facebox-user-list-item">
- <img alt="Guillermo Rauch" class=" js-avatar" data-user="13041" height="24" src="https://avatars0.githubusercontent.com/u/13041?s=140" width="24" />
- <a href="/guille">guille</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="Arnout Kazemier" class=" js-avatar" data-user="28071" height="24" src="https://avatars1.githubusercontent.com/u/28071?s=140" width="24" />
- <a href="/3rd-Eden">3rd-Eden</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="Vladimir Dronnikov" class=" js-avatar" data-user="211335" height="24" src="https://avatars2.githubusercontent.com/u/211335?s=140" width="24" />
- <a href="/dvv">dvv</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="Kevin Roark" class=" js-avatar" data-user="3232081" height="24" src="https://avatars2.githubusercontent.com/u/3232081?s=140" width="24" />
- <a href="/kevin-roark">kevin-roark</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="Martin Kreichgauer" class=" js-avatar" data-user="226014" height="24" src="https://avatars2.githubusercontent.com/u/226014?s=140" width="24" />
- <a href="/kreichgauer">kreichgauer</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="fat-bot" class=" js-avatar" data-user="1976126" height="24" src="https://avatars2.githubusercontent.com/u/1976126?s=140" width="24" />
- <a href="/fat-bot">fat-bot</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="Saikat Chakrabarti" class=" js-avatar" data-user="83782" height="24" src="https://avatars2.githubusercontent.com/u/83782?s=140" width="24" />
- <a href="/saikat">saikat</a>
- </li>
- <li class="facebox-user-list-item">
- <img alt="James Halliday" class=" js-avatar" data-user="12631" height="24" src="https://avatars1.githubusercontent.com/u/12631?s=140" width="24" />
- <a href="/substack">substack</a>
- </li>
- </ul>
- </div>
- </div>
- <div class="file-box">
- <div class="file">
- <div class="meta clearfix">
- <div class="info file-name">
- <span class="icon"><b class="octicon octicon-file-text"></b></span>
- <span class="mode" title="File Mode">file</span>
- <span class="meta-divider"></span>
- <span>6173 lines (5216 sloc)</span>
- <span class="meta-divider"></span>
- <span>155.214 kb</span>
- </div>
- <div class="actions">
- <div class="button-group">
- <a class="minibutton tooltipped tooltipped-w"
- href="github-windows://openRepo/https://github.com/Automattic/socket.io-client?branch=master&filepath=socket.io.js" aria-label="Open this file in GitHub for Windows">
- <span class="octicon octicon-device-desktop"></span> Open
- </a>
- <a class="minibutton tooltipped tooltipped-n js-update-url-with-hash"
- aria-label="Clicking this button will automatically fork this project so you can edit the file"
- href="/Automattic/socket.io-client/edit/master/socket.io.js"
- data-method="post" rel="nofollow">Edit</a>
- <a href="/Automattic/socket.io-client/raw/master/socket.io.js" class="minibutton " id="raw-url">Raw</a>
- <a href="/Automattic/socket.io-client/blame/master/socket.io.js" class="minibutton js-update-url-with-hash">Blame</a>
- <a href="/Automattic/socket.io-client/commits/master/socket.io.js" class="minibutton " rel="nofollow">History</a>
- </div><!-- /.button-group -->
- <a class="minibutton danger empty-icon tooltipped tooltipped-s"
- href="/Automattic/socket.io-client/delete/master/socket.io.js"
- aria-label="Fork this project and delete file"
- data-method="post" data-test-id="delete-blob-file" rel="nofollow">
- Delete
- </a>
- </div><!-- /.actions -->
- </div>
-
- <div class="blob-wrapper data type-javascript js-blob-data">
- <table class="file-code file-diff tab-size-8">
- <tr class="file-code-line">
- <td class="blob-line-nums">
- <span id="L1" rel="#L1">1</span>
- <span id="L2" rel="#L2">2</span>
- <span id="L3" rel="#L3">3</span>
- <span id="L4" rel="#L4">4</span>
- <span id="L5" rel="#L5">5</span>
- <span id="L6" rel="#L6">6</span>
- <span id="L7" rel="#L7">7</span>
- <span id="L8" rel="#L8">8</span>
- <span id="L9" rel="#L9">9</span>
- <span id="L10" rel="#L10">10</span>
- <span id="L11" rel="#L11">11</span>
- <span id="L12" rel="#L12">12</span>
- <span id="L13" rel="#L13">13</span>
- <span id="L14" rel="#L14">14</span>
- <span id="L15" rel="#L15">15</span>
- <span id="L16" rel="#L16">16</span>
- <span id="L17" rel="#L17">17</span>
- <span id="L18" rel="#L18">18</span>
- <span id="L19" rel="#L19">19</span>
- <span id="L20" rel="#L20">20</span>
- <span id="L21" rel="#L21">21</span>
- <span id="L22" rel="#L22">22</span>
- <span id="L23" rel="#L23">23</span>
- <span id="L24" rel="#L24">24</span>
- <span id="L25" rel="#L25">25</span>
- <span id="L26" rel="#L26">26</span>
- <span id="L27" rel="#L27">27</span>
- <span id="L28" rel="#L28">28</span>
- <span id="L29" rel="#L29">29</span>
- <span id="L30" rel="#L30">30</span>
- <span id="L31" rel="#L31">31</span>
- <span id="L32" rel="#L32">32</span>
- <span id="L33" rel="#L33">33</span>
- <span id="L34" rel="#L34">34</span>
- <span id="L35" rel="#L35">35</span>
- <span id="L36" rel="#L36">36</span>
- <span id="L37" rel="#L37">37</span>
- <span id="L38" rel="#L38">38</span>
- <span id="L39" rel="#L39">39</span>
- <span id="L40" rel="#L40">40</span>
- <span id="L41" rel="#L41">41</span>
- <span id="L42" rel="#L42">42</span>
- <span id="L43" rel="#L43">43</span>
- <span id="L44" rel="#L44">44</span>
- <span id="L45" rel="#L45">45</span>
- <span id="L46" rel="#L46">46</span>
- <span id="L47" rel="#L47">47</span>
- <span id="L48" rel="#L48">48</span>
- <span id="L49" rel="#L49">49</span>
- <span id="L50" rel="#L50">50</span>
- <span id="L51" rel="#L51">51</span>
- <span id="L52" rel="#L52">52</span>
- <span id="L53" rel="#L53">53</span>
- <span id="L54" rel="#L54">54</span>
- <span id="L55" rel="#L55">55</span>
- <span id="L56" rel="#L56">56</span>
- <span id="L57" rel="#L57">57</span>
- <span id="L58" rel="#L58">58</span>
- <span id="L59" rel="#L59">59</span>
- <span id="L60" rel="#L60">60</span>
- <span id="L61" rel="#L61">61</span>
- <span id="L62" rel="#L62">62</span>
- <span id="L63" rel="#L63">63</span>
- <span id="L64" rel="#L64">64</span>
- <span id="L65" rel="#L65">65</span>
- <span id="L66" rel="#L66">66</span>
- <span id="L67" rel="#L67">67</span>
- <span id="L68" rel="#L68">68</span>
- <span id="L69" rel="#L69">69</span>
- <span id="L70" rel="#L70">70</span>
- <span id="L71" rel="#L71">71</span>
- <span id="L72" rel="#L72">72</span>
- <span id="L73" rel="#L73">73</span>
- <span id="L74" rel="#L74">74</span>
- <span id="L75" rel="#L75">75</span>
- <span id="L76" rel="#L76">76</span>
- <span id="L77" rel="#L77">77</span>
- <span id="L78" rel="#L78">78</span>
- <span id="L79" rel="#L79">79</span>
- <span id="L80" rel="#L80">80</span>
- <span id="L81" rel="#L81">81</span>
- <span id="L82" rel="#L82">82</span>
- <span id="L83" rel="#L83">83</span>
- <span id="L84" rel="#L84">84</span>
- <span id="L85" rel="#L85">85</span>
- <span id="L86" rel="#L86">86</span>
- <span id="L87" rel="#L87">87</span>
- <span id="L88" rel="#L88">88</span>
- <span id="L89" rel="#L89">89</span>
- <span id="L90" rel="#L90">90</span>
- <span id="L91" rel="#L91">91</span>
- <span id="L92" rel="#L92">92</span>
- <span id="L93" rel="#L93">93</span>
- <span id="L94" rel="#L94">94</span>
- <span id="L95" rel="#L95">95</span>
- <span id="L96" rel="#L96">96</span>
- <span id="L97" rel="#L97">97</span>
- <span id="L98" rel="#L98">98</span>
- <span id="L99" rel="#L99">99</span>
- <span id="L100" rel="#L100">100</span>
- <span id="L101" rel="#L101">101</span>
- <span id="L102" rel="#L102">102</span>
- <span id="L103" rel="#L103">103</span>
- <span id="L104" rel="#L104">104</span>
- <span id="L105" rel="#L105">105</span>
- <span id="L106" rel="#L106">106</span>
- <span id="L107" rel="#L107">107</span>
- <span id="L108" rel="#L108">108</span>
- <span id="L109" rel="#L109">109</span>
- <span id="L110" rel="#L110">110</span>
- <span id="L111" rel="#L111">111</span>
- <span id="L112" rel="#L112">112</span>
- <span id="L113" rel="#L113">113</span>
- <span id="L114" rel="#L114">114</span>
- <span id="L115" rel="#L115">115</span>
- <span id="L116" rel="#L116">116</span>
- <span id="L117" rel="#L117">117</span>
- <span id="L118" rel="#L118">118</span>
- <span id="L119" rel="#L119">119</span>
- <span id="L120" rel="#L120">120</span>
- <span id="L121" rel="#L121">121</span>
- <span id="L122" rel="#L122">122</span>
- <span id="L123" rel="#L123">123</span>
- <span id="L124" rel="#L124">124</span>
- <span id="L125" rel="#L125">125</span>
- <span id="L126" rel="#L126">126</span>
- <span id="L127" rel="#L127">127</span>
- <span id="L128" rel="#L128">128</span>
- <span id="L129" rel="#L129">129</span>
- <span id="L130" rel="#L130">130</span>
- <span id="L131" rel="#L131">131</span>
- <span id="L132" rel="#L132">132</span>
- <span id="L133" rel="#L133">133</span>
- <span id="L134" rel="#L134">134</span>
- <span id="L135" rel="#L135">135</span>
- <span id="L136" rel="#L136">136</span>
- <span id="L137" rel="#L137">137</span>
- <span id="L138" rel="#L138">138</span>
- <span id="L139" rel="#L139">139</span>
- <span id="L140" rel="#L140">140</span>
- <span id="L141" rel="#L141">141</span>
- <span id="L142" rel="#L142">142</span>
- <span id="L143" rel="#L143">143</span>
- <span id="L144" rel="#L144">144</span>
- <span id="L145" rel="#L145">145</span>
- <span id="L146" rel="#L146">146</span>
- <span id="L147" rel="#L147">147</span>
- <span id="L148" rel="#L148">148</span>
- <span id="L149" rel="#L149">149</span>
- <span id="L150" rel="#L150">150</span>
- <span id="L151" rel="#L151">151</span>
- <span id="L152" rel="#L152">152</span>
- <span id="L153" rel="#L153">153</span>
- <span id="L154" rel="#L154">154</span>
- <span id="L155" rel="#L155">155</span>
- <span id="L156" rel="#L156">156</span>
- <span id="L157" rel="#L157">157</span>
- <span id="L158" rel="#L158">158</span>
- <span id="L159" rel="#L159">159</span>
- <span id="L160" rel="#L160">160</span>
- <span id="L161" rel="#L161">161</span>
- <span id="L162" rel="#L162">162</span>
- <span id="L163" rel="#L163">163</span>
- <span id="L164" rel="#L164">164</span>
- <span id="L165" rel="#L165">165</span>
- <span id="L166" rel="#L166">166</span>
- <span id="L167" rel="#L167">167</span>
- <span id="L168" rel="#L168">168</span>
- <span id="L169" rel="#L169">169</span>
- <span id="L170" rel="#L170">170</span>
- <span id="L171" rel="#L171">171</span>
- <span id="L172" rel="#L172">172</span>
- <span id="L173" rel="#L173">173</span>
- <span id="L174" rel="#L174">174</span>
- <span id="L175" rel="#L175">175</span>
- <span id="L176" rel="#L176">176</span>
- <span id="L177" rel="#L177">177</span>
- <span id="L178" rel="#L178">178</span>
- <span id="L179" rel="#L179">179</span>
- <span id="L180" rel="#L180">180</span>
- <span id="L181" rel="#L181">181</span>
- <span id="L182" rel="#L182">182</span>
- <span id="L183" rel="#L183">183</span>
- <span id="L184" rel="#L184">184</span>
- <span id="L185" rel="#L185">185</span>
- <span id="L186" rel="#L186">186</span>
- <span id="L187" rel="#L187">187</span>
- <span id="L188" rel="#L188">188</span>
- <span id="L189" rel="#L189">189</span>
- <span id="L190" rel="#L190">190</span>
- <span id="L191" rel="#L191">191</span>
- <span id="L192" rel="#L192">192</span>
- <span id="L193" rel="#L193">193</span>
- <span id="L194" rel="#L194">194</span>
- <span id="L195" rel="#L195">195</span>
- <span id="L196" rel="#L196">196</span>
- <span id="L197" rel="#L197">197</span>
- <span id="L198" rel="#L198">198</span>
- <span id="L199" rel="#L199">199</span>
- <span id="L200" rel="#L200">200</span>
- <span id="L201" rel="#L201">201</span>
- <span id="L202" rel="#L202">202</span>
- <span id="L203" rel="#L203">203</span>
- <span id="L204" rel="#L204">204</span>
- <span id="L205" rel="#L205">205</span>
- <span id="L206" rel="#L206">206</span>
- <span id="L207" rel="#L207">207</span>
- <span id="L208" rel="#L208">208</span>
- <span id="L209" rel="#L209">209</span>
- <span id="L210" rel="#L210">210</span>
- <span id="L211" rel="#L211">211</span>
- <span id="L212" rel="#L212">212</span>
- <span id="L213" rel="#L213">213</span>
- <span id="L214" rel="#L214">214</span>
- <span id="L215" rel="#L215">215</span>
- <span id="L216" rel="#L216">216</span>
- <span id="L217" rel="#L217">217</span>
- <span id="L218" rel="#L218">218</span>
- <span id="L219" rel="#L219">219</span>
- <span id="L220" rel="#L220">220</span>
- <span id="L221" rel="#L221">221</span>
- <span id="L222" rel="#L222">222</span>
- <span id="L223" rel="#L223">223</span>
- <span id="L224" rel="#L224">224</span>
- <span id="L225" rel="#L225">225</span>
- <span id="L226" rel="#L226">226</span>
- <span id="L227" rel="#L227">227</span>
- <span id="L228" rel="#L228">228</span>
- <span id="L229" rel="#L229">229</span>
- <span id="L230" rel="#L230">230</span>
- <span id="L231" rel="#L231">231</span>
- <span id="L232" rel="#L232">232</span>
- <span id="L233" rel="#L233">233</span>
- <span id="L234" rel="#L234">234</span>
- <span id="L235" rel="#L235">235</span>
- <span id="L236" rel="#L236">236</span>
- <span id="L237" rel="#L237">237</span>
- <span id="L238" rel="#L238">238</span>
- <span id="L239" rel="#L239">239</span>
- <span id="L240" rel="#L240">240</span>
- <span id="L241" rel="#L241">241</span>
- <span id="L242" rel="#L242">242</span>
- <span id="L243" rel="#L243">243</span>
- <span id="L244" rel="#L244">244</span>
- <span id="L245" rel="#L245">245</span>
- <span id="L246" rel="#L246">246</span>
- <span id="L247" rel="#L247">247</span>
- <span id="L248" rel="#L248">248</span>
- <span id="L249" rel="#L249">249</span>
- <span id="L250" rel="#L250">250</span>
- <span id="L251" rel="#L251">251</span>
- <span id="L252" rel="#L252">252</span>
- <span id="L253" rel="#L253">253</span>
- <span id="L254" rel="#L254">254</span>
- <span id="L255" rel="#L255">255</span>
- <span id="L256" rel="#L256">256</span>
- <span id="L257" rel="#L257">257</span>
- <span id="L258" rel="#L258">258</span>
- <span id="L259" rel="#L259">259</span>
- <span id="L260" rel="#L260">260</span>
- <span id="L261" rel="#L261">261</span>
- <span id="L262" rel="#L262">262</span>
- <span id="L263" rel="#L263">263</span>
- <span id="L264" rel="#L264">264</span>
- <span id="L265" rel="#L265">265</span>
- <span id="L266" rel="#L266">266</span>
- <span id="L267" rel="#L267">267</span>
- <span id="L268" rel="#L268">268</span>
- <span id="L269" rel="#L269">269</span>
- <span id="L270" rel="#L270">270</span>
- <span id="L271" rel="#L271">271</span>
- <span id="L272" rel="#L272">272</span>
- <span id="L273" rel="#L273">273</span>
- <span id="L274" rel="#L274">274</span>
- <span id="L275" rel="#L275">275</span>
- <span id="L276" rel="#L276">276</span>
- <span id="L277" rel="#L277">277</span>
- <span id="L278" rel="#L278">278</span>
- <span id="L279" rel="#L279">279</span>
- <span id="L280" rel="#L280">280</span>
- <span id="L281" rel="#L281">281</span>
- <span id="L282" rel="#L282">282</span>
- <span id="L283" rel="#L283">283</span>
- <span id="L284" rel="#L284">284</span>
- <span id="L285" rel="#L285">285</span>
- <span id="L286" rel="#L286">286</span>
- <span id="L287" rel="#L287">287</span>
- <span id="L288" rel="#L288">288</span>
- <span id="L289" rel="#L289">289</span>
- <span id="L290" rel="#L290">290</span>
- <span id="L291" rel="#L291">291</span>
- <span id="L292" rel="#L292">292</span>
- <span id="L293" rel="#L293">293</span>
- <span id="L294" rel="#L294">294</span>
- <span id="L295" rel="#L295">295</span>
- <span id="L296" rel="#L296">296</span>
- <span id="L297" rel="#L297">297</span>
- <span id="L298" rel="#L298">298</span>
- <span id="L299" rel="#L299">299</span>
- <span id="L300" rel="#L300">300</span>
- <span id="L301" rel="#L301">301</span>
- <span id="L302" rel="#L302">302</span>
- <span id="L303" rel="#L303">303</span>
- <span id="L304" rel="#L304">304</span>
- <span id="L305" rel="#L305">305</span>
- <span id="L306" rel="#L306">306</span>
- <span id="L307" rel="#L307">307</span>
- <span id="L308" rel="#L308">308</span>
- <span id="L309" rel="#L309">309</span>
- <span id="L310" rel="#L310">310</span>
- <span id="L311" rel="#L311">311</span>
- <span id="L312" rel="#L312">312</span>
- <span id="L313" rel="#L313">313</span>
- <span id="L314" rel="#L314">314</span>
- <span id="L315" rel="#L315">315</span>
- <span id="L316" rel="#L316">316</span>
- <span id="L317" rel="#L317">317</span>
- <span id="L318" rel="#L318">318</span>
- <span id="L319" rel="#L319">319</span>
- <span id="L320" rel="#L320">320</span>
- <span id="L321" rel="#L321">321</span>
- <span id="L322" rel="#L322">322</span>
- <span id="L323" rel="#L323">323</span>
- <span id="L324" rel="#L324">324</span>
- <span id="L325" rel="#L325">325</span>
- <span id="L326" rel="#L326">326</span>
- <span id="L327" rel="#L327">327</span>
- <span id="L328" rel="#L328">328</span>
- <span id="L329" rel="#L329">329</span>
- <span id="L330" rel="#L330">330</span>
- <span id="L331" rel="#L331">331</span>
- <span id="L332" rel="#L332">332</span>
- <span id="L333" rel="#L333">333</span>
- <span id="L334" rel="#L334">334</span>
- <span id="L335" rel="#L335">335</span>
- <span id="L336" rel="#L336">336</span>
- <span id="L337" rel="#L337">337</span>
- <span id="L338" rel="#L338">338</span>
- <span id="L339" rel="#L339">339</span>
- <span id="L340" rel="#L340">340</span>
- <span id="L341" rel="#L341">341</span>
- <span id="L342" rel="#L342">342</span>
- <span id="L343" rel="#L343">343</span>
- <span id="L344" rel="#L344">344</span>
- <span id="L345" rel="#L345">345</span>
- <span id="L346" rel="#L346">346</span>
- <span id="L347" rel="#L347">347</span>
- <span id="L348" rel="#L348">348</span>
- <span id="L349" rel="#L349">349</span>
- <span id="L350" rel="#L350">350</span>
- <span id="L351" rel="#L351">351</span>
- <span id="L352" rel="#L352">352</span>
- <span id="L353" rel="#L353">353</span>
- <span id="L354" rel="#L354">354</span>
- <span id="L355" rel="#L355">355</span>
- <span id="L356" rel="#L356">356</span>
- <span id="L357" rel="#L357">357</span>
- <span id="L358" rel="#L358">358</span>
- <span id="L359" rel="#L359">359</span>
- <span id="L360" rel="#L360">360</span>
- <span id="L361" rel="#L361">361</span>
- <span id="L362" rel="#L362">362</span>
- <span id="L363" rel="#L363">363</span>
- <span id="L364" rel="#L364">364</span>
- <span id="L365" rel="#L365">365</span>
- <span id="L366" rel="#L366">366</span>
- <span id="L367" rel="#L367">367</span>
- <span id="L368" rel="#L368">368</span>
- <span id="L369" rel="#L369">369</span>
- <span id="L370" rel="#L370">370</span>
- <span id="L371" rel="#L371">371</span>
- <span id="L372" rel="#L372">372</span>
- <span id="L373" rel="#L373">373</span>
- <span id="L374" rel="#L374">374</span>
- <span id="L375" rel="#L375">375</span>
- <span id="L376" rel="#L376">376</span>
- <span id="L377" rel="#L377">377</span>
- <span id="L378" rel="#L378">378</span>
- <span id="L379" rel="#L379">379</span>
- <span id="L380" rel="#L380">380</span>
- <span id="L381" rel="#L381">381</span>
- <span id="L382" rel="#L382">382</span>
- <span id="L383" rel="#L383">383</span>
- <span id="L384" rel="#L384">384</span>
- <span id="L385" rel="#L385">385</span>
- <span id="L386" rel="#L386">386</span>
- <span id="L387" rel="#L387">387</span>
- <span id="L388" rel="#L388">388</span>
- <span id="L389" rel="#L389">389</span>
- <span id="L390" rel="#L390">390</span>
- <span id="L391" rel="#L391">391</span>
- <span id="L392" rel="#L392">392</span>
- <span id="L393" rel="#L393">393</span>
- <span id="L394" rel="#L394">394</span>
- <span id="L395" rel="#L395">395</span>
- <span id="L396" rel="#L396">396</span>
- <span id="L397" rel="#L397">397</span>
- <span id="L398" rel="#L398">398</span>
- <span id="L399" rel="#L399">399</span>
- <span id="L400" rel="#L400">400</span>
- <span id="L401" rel="#L401">401</span>
- <span id="L402" rel="#L402">402</span>
- <span id="L403" rel="#L403">403</span>
- <span id="L404" rel="#L404">404</span>
- <span id="L405" rel="#L405">405</span>
- <span id="L406" rel="#L406">406</span>
- <span id="L407" rel="#L407">407</span>
- <span id="L408" rel="#L408">408</span>
- <span id="L409" rel="#L409">409</span>
- <span id="L410" rel="#L410">410</span>
- <span id="L411" rel="#L411">411</span>
- <span id="L412" rel="#L412">412</span>
- <span id="L413" rel="#L413">413</span>
- <span id="L414" rel="#L414">414</span>
- <span id="L415" rel="#L415">415</span>
- <span id="L416" rel="#L416">416</span>
- <span id="L417" rel="#L417">417</span>
- <span id="L418" rel="#L418">418</span>
- <span id="L419" rel="#L419">419</span>
- <span id="L420" rel="#L420">420</span>
- <span id="L421" rel="#L421">421</span>
- <span id="L422" rel="#L422">422</span>
- <span id="L423" rel="#L423">423</span>
- <span id="L424" rel="#L424">424</span>
- <span id="L425" rel="#L425">425</span>
- <span id="L426" rel="#L426">426</span>
- <span id="L427" rel="#L427">427</span>
- <span id="L428" rel="#L428">428</span>
- <span id="L429" rel="#L429">429</span>
- <span id="L430" rel="#L430">430</span>
- <span id="L431" rel="#L431">431</span>
- <span id="L432" rel="#L432">432</span>
- <span id="L433" rel="#L433">433</span>
- <span id="L434" rel="#L434">434</span>
- <span id="L435" rel="#L435">435</span>
- <span id="L436" rel="#L436">436</span>
- <span id="L437" rel="#L437">437</span>
- <span id="L438" rel="#L438">438</span>
- <span id="L439" rel="#L439">439</span>
- <span id="L440" rel="#L440">440</span>
- <span id="L441" rel="#L441">441</span>
- <span id="L442" rel="#L442">442</span>
- <span id="L443" rel="#L443">443</span>
- <span id="L444" rel="#L444">444</span>
- <span id="L445" rel="#L445">445</span>
- <span id="L446" rel="#L446">446</span>
- <span id="L447" rel="#L447">447</span>
- <span id="L448" rel="#L448">448</span>
- <span id="L449" rel="#L449">449</span>
- <span id="L450" rel="#L450">450</span>
- <span id="L451" rel="#L451">451</span>
- <span id="L452" rel="#L452">452</span>
- <span id="L453" rel="#L453">453</span>
- <span id="L454" rel="#L454">454</span>
- <span id="L455" rel="#L455">455</span>
- <span id="L456" rel="#L456">456</span>
- <span id="L457" rel="#L457">457</span>
- <span id="L458" rel="#L458">458</span>
- <span id="L459" rel="#L459">459</span>
- <span id="L460" rel="#L460">460</span>
- <span id="L461" rel="#L461">461</span>
- <span id="L462" rel="#L462">462</span>
- <span id="L463" rel="#L463">463</span>
- <span id="L464" rel="#L464">464</span>
- <span id="L465" rel="#L465">465</span>
- <span id="L466" rel="#L466">466</span>
- <span id="L467" rel="#L467">467</span>
- <span id="L468" rel="#L468">468</span>
- <span id="L469" rel="#L469">469</span>
- <span id="L470" rel="#L470">470</span>
- <span id="L471" rel="#L471">471</span>
- <span id="L472" rel="#L472">472</span>
- <span id="L473" rel="#L473">473</span>
- <span id="L474" rel="#L474">474</span>
- <span id="L475" rel="#L475">475</span>
- <span id="L476" rel="#L476">476</span>
- <span id="L477" rel="#L477">477</span>
- <span id="L478" rel="#L478">478</span>
- <span id="L479" rel="#L479">479</span>
- <span id="L480" rel="#L480">480</span>
- <span id="L481" rel="#L481">481</span>
- <span id="L482" rel="#L482">482</span>
- <span id="L483" rel="#L483">483</span>
- <span id="L484" rel="#L484">484</span>
- <span id="L485" rel="#L485">485</span>
- <span id="L486" rel="#L486">486</span>
- <span id="L487" rel="#L487">487</span>
- <span id="L488" rel="#L488">488</span>
- <span id="L489" rel="#L489">489</span>
- <span id="L490" rel="#L490">490</span>
- <span id="L491" rel="#L491">491</span>
- <span id="L492" rel="#L492">492</span>
- <span id="L493" rel="#L493">493</span>
- <span id="L494" rel="#L494">494</span>
- <span id="L495" rel="#L495">495</span>
- <span id="L496" rel="#L496">496</span>
- <span id="L497" rel="#L497">497</span>
- <span id="L498" rel="#L498">498</span>
- <span id="L499" rel="#L499">499</span>
- <span id="L500" rel="#L500">500</span>
- <span id="L501" rel="#L501">501</span>
- <span id="L502" rel="#L502">502</span>
- <span id="L503" rel="#L503">503</span>
- <span id="L504" rel="#L504">504</span>
- <span id="L505" rel="#L505">505</span>
- <span id="L506" rel="#L506">506</span>
- <span id="L507" rel="#L507">507</span>
- <span id="L508" rel="#L508">508</span>
- <span id="L509" rel="#L509">509</span>
- <span id="L510" rel="#L510">510</span>
- <span id="L511" rel="#L511">511</span>
- <span id="L512" rel="#L512">512</span>
- <span id="L513" rel="#L513">513</span>
- <span id="L514" rel="#L514">514</span>
- <span id="L515" rel="#L515">515</span>
- <span id="L516" rel="#L516">516</span>
- <span id="L517" rel="#L517">517</span>
- <span id="L518" rel="#L518">518</span>
- <span id="L519" rel="#L519">519</span>
- <span id="L520" rel="#L520">520</span>
- <span id="L521" rel="#L521">521</span>
- <span id="L522" rel="#L522">522</span>
- <span id="L523" rel="#L523">523</span>
- <span id="L524" rel="#L524">524</span>
- <span id="L525" rel="#L525">525</span>
- <span id="L526" rel="#L526">526</span>
- <span id="L527" rel="#L527">527</span>
- <span id="L528" rel="#L528">528</span>
- <span id="L529" rel="#L529">529</span>
- <span id="L530" rel="#L530">530</span>
- <span id="L531" rel="#L531">531</span>
- <span id="L532" rel="#L532">532</span>
- <span id="L533" rel="#L533">533</span>
- <span id="L534" rel="#L534">534</span>
- <span id="L535" rel="#L535">535</span>
- <span id="L536" rel="#L536">536</span>
- <span id="L537" rel="#L537">537</span>
- <span id="L538" rel="#L538">538</span>
- <span id="L539" rel="#L539">539</span>
- <span id="L540" rel="#L540">540</span>
- <span id="L541" rel="#L541">541</span>
- <span id="L542" rel="#L542">542</span>
- <span id="L543" rel="#L543">543</span>
- <span id="L544" rel="#L544">544</span>
- <span id="L545" rel="#L545">545</span>
- <span id="L546" rel="#L546">546</span>
- <span id="L547" rel="#L547">547</span>
- <span id="L548" rel="#L548">548</span>
- <span id="L549" rel="#L549">549</span>
- <span id="L550" rel="#L550">550</span>
- <span id="L551" rel="#L551">551</span>
- <span id="L552" rel="#L552">552</span>
- <span id="L553" rel="#L553">553</span>
- <span id="L554" rel="#L554">554</span>
- <span id="L555" rel="#L555">555</span>
- <span id="L556" rel="#L556">556</span>
- <span id="L557" rel="#L557">557</span>
- <span id="L558" rel="#L558">558</span>
- <span id="L559" rel="#L559">559</span>
- <span id="L560" rel="#L560">560</span>
- <span id="L561" rel="#L561">561</span>
- <span id="L562" rel="#L562">562</span>
- <span id="L563" rel="#L563">563</span>
- <span id="L564" rel="#L564">564</span>
- <span id="L565" rel="#L565">565</span>
- <span id="L566" rel="#L566">566</span>
- <span id="L567" rel="#L567">567</span>
- <span id="L568" rel="#L568">568</span>
- <span id="L569" rel="#L569">569</span>
- <span id="L570" rel="#L570">570</span>
- <span id="L571" rel="#L571">571</span>
- <span id="L572" rel="#L572">572</span>
- <span id="L573" rel="#L573">573</span>
- <span id="L574" rel="#L574">574</span>
- <span id="L575" rel="#L575">575</span>
- <span id="L576" rel="#L576">576</span>
- <span id="L577" rel="#L577">577</span>
- <span id="L578" rel="#L578">578</span>
- <span id="L579" rel="#L579">579</span>
- <span id="L580" rel="#L580">580</span>
- <span id="L581" rel="#L581">581</span>
- <span id="L582" rel="#L582">582</span>
- <span id="L583" rel="#L583">583</span>
- <span id="L584" rel="#L584">584</span>
- <span id="L585" rel="#L585">585</span>
- <span id="L586" rel="#L586">586</span>
- <span id="L587" rel="#L587">587</span>
- <span id="L588" rel="#L588">588</span>
- <span id="L589" rel="#L589">589</span>
- <span id="L590" rel="#L590">590</span>
- <span id="L591" rel="#L591">591</span>
- <span id="L592" rel="#L592">592</span>
- <span id="L593" rel="#L593">593</span>
- <span id="L594" rel="#L594">594</span>
- <span id="L595" rel="#L595">595</span>
- <span id="L596" rel="#L596">596</span>
- <span id="L597" rel="#L597">597</span>
- <span id="L598" rel="#L598">598</span>
- <span id="L599" rel="#L599">599</span>
- <span id="L600" rel="#L600">600</span>
- <span id="L601" rel="#L601">601</span>
- <span id="L602" rel="#L602">602</span>
- <span id="L603" rel="#L603">603</span>
- <span id="L604" rel="#L604">604</span>
- <span id="L605" rel="#L605">605</span>
- <span id="L606" rel="#L606">606</span>
- <span id="L607" rel="#L607">607</span>
- <span id="L608" rel="#L608">608</span>
- <span id="L609" rel="#L609">609</span>
- <span id="L610" rel="#L610">610</span>
- <span id="L611" rel="#L611">611</span>
- <span id="L612" rel="#L612">612</span>
- <span id="L613" rel="#L613">613</span>
- <span id="L614" rel="#L614">614</span>
- <span id="L615" rel="#L615">615</span>
- <span id="L616" rel="#L616">616</span>
- <span id="L617" rel="#L617">617</span>
- <span id="L618" rel="#L618">618</span>
- <span id="L619" rel="#L619">619</span>
- <span id="L620" rel="#L620">620</span>
- <span id="L621" rel="#L621">621</span>
- <span id="L622" rel="#L622">622</span>
- <span id="L623" rel="#L623">623</span>
- <span id="L624" rel="#L624">624</span>
- <span id="L625" rel="#L625">625</span>
- <span id="L626" rel="#L626">626</span>
- <span id="L627" rel="#L627">627</span>
- <span id="L628" rel="#L628">628</span>
- <span id="L629" rel="#L629">629</span>
- <span id="L630" rel="#L630">630</span>
- <span id="L631" rel="#L631">631</span>
- <span id="L632" rel="#L632">632</span>
- <span id="L633" rel="#L633">633</span>
- <span id="L634" rel="#L634">634</span>
- <span id="L635" rel="#L635">635</span>
- <span id="L636" rel="#L636">636</span>
- <span id="L637" rel="#L637">637</span>
- <span id="L638" rel="#L638">638</span>
- <span id="L639" rel="#L639">639</span>
- <span id="L640" rel="#L640">640</span>
- <span id="L641" rel="#L641">641</span>
- <span id="L642" rel="#L642">642</span>
- <span id="L643" rel="#L643">643</span>
- <span id="L644" rel="#L644">644</span>
- <span id="L645" rel="#L645">645</span>
- <span id="L646" rel="#L646">646</span>
- <span id="L647" rel="#L647">647</span>
- <span id="L648" rel="#L648">648</span>
- <span id="L649" rel="#L649">649</span>
- <span id="L650" rel="#L650">650</span>
- <span id="L651" rel="#L651">651</span>
- <span id="L652" rel="#L652">652</span>
- <span id="L653" rel="#L653">653</span>
- <span id="L654" rel="#L654">654</span>
- <span id="L655" rel="#L655">655</span>
- <span id="L656" rel="#L656">656</span>
- <span id="L657" rel="#L657">657</span>
- <span id="L658" rel="#L658">658</span>
- <span id="L659" rel="#L659">659</span>
- <span id="L660" rel="#L660">660</span>
- <span id="L661" rel="#L661">661</span>
- <span id="L662" rel="#L662">662</span>
- <span id="L663" rel="#L663">663</span>
- <span id="L664" rel="#L664">664</span>
- <span id="L665" rel="#L665">665</span>
- <span id="L666" rel="#L666">666</span>
- <span id="L667" rel="#L667">667</span>
- <span id="L668" rel="#L668">668</span>
- <span id="L669" rel="#L669">669</span>
- <span id="L670" rel="#L670">670</span>
- <span id="L671" rel="#L671">671</span>
- <span id="L672" rel="#L672">672</span>
- <span id="L673" rel="#L673">673</span>
- <span id="L674" rel="#L674">674</span>
- <span id="L675" rel="#L675">675</span>
- <span id="L676" rel="#L676">676</span>
- <span id="L677" rel="#L677">677</span>
- <span id="L678" rel="#L678">678</span>
- <span id="L679" rel="#L679">679</span>
- <span id="L680" rel="#L680">680</span>
- <span id="L681" rel="#L681">681</span>
- <span id="L682" rel="#L682">682</span>
- <span id="L683" rel="#L683">683</span>
- <span id="L684" rel="#L684">684</span>
- <span id="L685" rel="#L685">685</span>
- <span id="L686" rel="#L686">686</span>
- <span id="L687" rel="#L687">687</span>
- <span id="L688" rel="#L688">688</span>
- <span id="L689" rel="#L689">689</span>
- <span id="L690" rel="#L690">690</span>
- <span id="L691" rel="#L691">691</span>
- <span id="L692" rel="#L692">692</span>
- <span id="L693" rel="#L693">693</span>
- <span id="L694" rel="#L694">694</span>
- <span id="L695" rel="#L695">695</span>
- <span id="L696" rel="#L696">696</span>
- <span id="L697" rel="#L697">697</span>
- <span id="L698" rel="#L698">698</span>
- <span id="L699" rel="#L699">699</span>
- <span id="L700" rel="#L700">700</span>
- <span id="L701" rel="#L701">701</span>
- <span id="L702" rel="#L702">702</span>
- <span id="L703" rel="#L703">703</span>
- <span id="L704" rel="#L704">704</span>
- <span id="L705" rel="#L705">705</span>
- <span id="L706" rel="#L706">706</span>
- <span id="L707" rel="#L707">707</span>
- <span id="L708" rel="#L708">708</span>
- <span id="L709" rel="#L709">709</span>
- <span id="L710" rel="#L710">710</span>
- <span id="L711" rel="#L711">711</span>
- <span id="L712" rel="#L712">712</span>
- <span id="L713" rel="#L713">713</span>
- <span id="L714" rel="#L714">714</span>
- <span id="L715" rel="#L715">715</span>
- <span id="L716" rel="#L716">716</span>
- <span id="L717" rel="#L717">717</span>
- <span id="L718" rel="#L718">718</span>
- <span id="L719" rel="#L719">719</span>
- <span id="L720" rel="#L720">720</span>
- <span id="L721" rel="#L721">721</span>
- <span id="L722" rel="#L722">722</span>
- <span id="L723" rel="#L723">723</span>
- <span id="L724" rel="#L724">724</span>
- <span id="L725" rel="#L725">725</span>
- <span id="L726" rel="#L726">726</span>
- <span id="L727" rel="#L727">727</span>
- <span id="L728" rel="#L728">728</span>
- <span id="L729" rel="#L729">729</span>
- <span id="L730" rel="#L730">730</span>
- <span id="L731" rel="#L731">731</span>
- <span id="L732" rel="#L732">732</span>
- <span id="L733" rel="#L733">733</span>
- <span id="L734" rel="#L734">734</span>
- <span id="L735" rel="#L735">735</span>
- <span id="L736" rel="#L736">736</span>
- <span id="L737" rel="#L737">737</span>
- <span id="L738" rel="#L738">738</span>
- <span id="L739" rel="#L739">739</span>
- <span id="L740" rel="#L740">740</span>
- <span id="L741" rel="#L741">741</span>
- <span id="L742" rel="#L742">742</span>
- <span id="L743" rel="#L743">743</span>
- <span id="L744" rel="#L744">744</span>
- <span id="L745" rel="#L745">745</span>
- <span id="L746" rel="#L746">746</span>
- <span id="L747" rel="#L747">747</span>
- <span id="L748" rel="#L748">748</span>
- <span id="L749" rel="#L749">749</span>
- <span id="L750" rel="#L750">750</span>
- <span id="L751" rel="#L751">751</span>
- <span id="L752" rel="#L752">752</span>
- <span id="L753" rel="#L753">753</span>
- <span id="L754" rel="#L754">754</span>
- <span id="L755" rel="#L755">755</span>
- <span id="L756" rel="#L756">756</span>
- <span id="L757" rel="#L757">757</span>
- <span id="L758" rel="#L758">758</span>
- <span id="L759" rel="#L759">759</span>
- <span id="L760" rel="#L760">760</span>
- <span id="L761" rel="#L761">761</span>
- <span id="L762" rel="#L762">762</span>
- <span id="L763" rel="#L763">763</span>
- <span id="L764" rel="#L764">764</span>
- <span id="L765" rel="#L765">765</span>
- <span id="L766" rel="#L766">766</span>
- <span id="L767" rel="#L767">767</span>
- <span id="L768" rel="#L768">768</span>
- <span id="L769" rel="#L769">769</span>
- <span id="L770" rel="#L770">770</span>
- <span id="L771" rel="#L771">771</span>
- <span id="L772" rel="#L772">772</span>
- <span id="L773" rel="#L773">773</span>
- <span id="L774" rel="#L774">774</span>
- <span id="L775" rel="#L775">775</span>
- <span id="L776" rel="#L776">776</span>
- <span id="L777" rel="#L777">777</span>
- <span id="L778" rel="#L778">778</span>
- <span id="L779" rel="#L779">779</span>
- <span id="L780" rel="#L780">780</span>
- <span id="L781" rel="#L781">781</span>
- <span id="L782" rel="#L782">782</span>
- <span id="L783" rel="#L783">783</span>
- <span id="L784" rel="#L784">784</span>
- <span id="L785" rel="#L785">785</span>
- <span id="L786" rel="#L786">786</span>
- <span id="L787" rel="#L787">787</span>
- <span id="L788" rel="#L788">788</span>
- <span id="L789" rel="#L789">789</span>
- <span id="L790" rel="#L790">790</span>
- <span id="L791" rel="#L791">791</span>
- <span id="L792" rel="#L792">792</span>
- <span id="L793" rel="#L793">793</span>
- <span id="L794" rel="#L794">794</span>
- <span id="L795" rel="#L795">795</span>
- <span id="L796" rel="#L796">796</span>
- <span id="L797" rel="#L797">797</span>
- <span id="L798" rel="#L798">798</span>
- <span id="L799" rel="#L799">799</span>
- <span id="L800" rel="#L800">800</span>
- <span id="L801" rel="#L801">801</span>
- <span id="L802" rel="#L802">802</span>
- <span id="L803" rel="#L803">803</span>
- <span id="L804" rel="#L804">804</span>
- <span id="L805" rel="#L805">805</span>
- <span id="L806" rel="#L806">806</span>
- <span id="L807" rel="#L807">807</span>
- <span id="L808" rel="#L808">808</span>
- <span id="L809" rel="#L809">809</span>
- <span id="L810" rel="#L810">810</span>
- <span id="L811" rel="#L811">811</span>
- <span id="L812" rel="#L812">812</span>
- <span id="L813" rel="#L813">813</span>
- <span id="L814" rel="#L814">814</span>
- <span id="L815" rel="#L815">815</span>
- <span id="L816" rel="#L816">816</span>
- <span id="L817" rel="#L817">817</span>
- <span id="L818" rel="#L818">818</span>
- <span id="L819" rel="#L819">819</span>
- <span id="L820" rel="#L820">820</span>
- <span id="L821" rel="#L821">821</span>
- <span id="L822" rel="#L822">822</span>
- <span id="L823" rel="#L823">823</span>
- <span id="L824" rel="#L824">824</span>
- <span id="L825" rel="#L825">825</span>
- <span id="L826" rel="#L826">826</span>
- <span id="L827" rel="#L827">827</span>
- <span id="L828" rel="#L828">828</span>
- <span id="L829" rel="#L829">829</span>
- <span id="L830" rel="#L830">830</span>
- <span id="L831" rel="#L831">831</span>
- <span id="L832" rel="#L832">832</span>
- <span id="L833" rel="#L833">833</span>
- <span id="L834" rel="#L834">834</span>
- <span id="L835" rel="#L835">835</span>
- <span id="L836" rel="#L836">836</span>
- <span id="L837" rel="#L837">837</span>
- <span id="L838" rel="#L838">838</span>
- <span id="L839" rel="#L839">839</span>
- <span id="L840" rel="#L840">840</span>
- <span id="L841" rel="#L841">841</span>
- <span id="L842" rel="#L842">842</span>
- <span id="L843" rel="#L843">843</span>
- <span id="L844" rel="#L844">844</span>
- <span id="L845" rel="#L845">845</span>
- <span id="L846" rel="#L846">846</span>
- <span id="L847" rel="#L847">847</span>
- <span id="L848" rel="#L848">848</span>
- <span id="L849" rel="#L849">849</span>
- <span id="L850" rel="#L850">850</span>
- <span id="L851" rel="#L851">851</span>
- <span id="L852" rel="#L852">852</span>
- <span id="L853" rel="#L853">853</span>
- <span id="L854" rel="#L854">854</span>
- <span id="L855" rel="#L855">855</span>
- <span id="L856" rel="#L856">856</span>
- <span id="L857" rel="#L857">857</span>
- <span id="L858" rel="#L858">858</span>
- <span id="L859" rel="#L859">859</span>
- <span id="L860" rel="#L860">860</span>
- <span id="L861" rel="#L861">861</span>
- <span id="L862" rel="#L862">862</span>
- <span id="L863" rel="#L863">863</span>
- <span id="L864" rel="#L864">864</span>
- <span id="L865" rel="#L865">865</span>
- <span id="L866" rel="#L866">866</span>
- <span id="L867" rel="#L867">867</span>
- <span id="L868" rel="#L868">868</span>
- <span id="L869" rel="#L869">869</span>
- <span id="L870" rel="#L870">870</span>
- <span id="L871" rel="#L871">871</span>
- <span id="L872" rel="#L872">872</span>
- <span id="L873" rel="#L873">873</span>
- <span id="L874" rel="#L874">874</span>
- <span id="L875" rel="#L875">875</span>
- <span id="L876" rel="#L876">876</span>
- <span id="L877" rel="#L877">877</span>
- <span id="L878" rel="#L878">878</span>
- <span id="L879" rel="#L879">879</span>
- <span id="L880" rel="#L880">880</span>
- <span id="L881" rel="#L881">881</span>
- <span id="L882" rel="#L882">882</span>
- <span id="L883" rel="#L883">883</span>
- <span id="L884" rel="#L884">884</span>
- <span id="L885" rel="#L885">885</span>
- <span id="L886" rel="#L886">886</span>
- <span id="L887" rel="#L887">887</span>
- <span id="L888" rel="#L888">888</span>
- <span id="L889" rel="#L889">889</span>
- <span id="L890" rel="#L890">890</span>
- <span id="L891" rel="#L891">891</span>
- <span id="L892" rel="#L892">892</span>
- <span id="L893" rel="#L893">893</span>
- <span id="L894" rel="#L894">894</span>
- <span id="L895" rel="#L895">895</span>
- <span id="L896" rel="#L896">896</span>
- <span id="L897" rel="#L897">897</span>
- <span id="L898" rel="#L898">898</span>
- <span id="L899" rel="#L899">899</span>
- <span id="L900" rel="#L900">900</span>
- <span id="L901" rel="#L901">901</span>
- <span id="L902" rel="#L902">902</span>
- <span id="L903" rel="#L903">903</span>
- <span id="L904" rel="#L904">904</span>
- <span id="L905" rel="#L905">905</span>
- <span id="L906" rel="#L906">906</span>
- <span id="L907" rel="#L907">907</span>
- <span id="L908" rel="#L908">908</span>
- <span id="L909" rel="#L909">909</span>
- <span id="L910" rel="#L910">910</span>
- <span id="L911" rel="#L911">911</span>
- <span id="L912" rel="#L912">912</span>
- <span id="L913" rel="#L913">913</span>
- <span id="L914" rel="#L914">914</span>
- <span id="L915" rel="#L915">915</span>
- <span id="L916" rel="#L916">916</span>
- <span id="L917" rel="#L917">917</span>
- <span id="L918" rel="#L918">918</span>
- <span id="L919" rel="#L919">919</span>
- <span id="L920" rel="#L920">920</span>
- <span id="L921" rel="#L921">921</span>
- <span id="L922" rel="#L922">922</span>
- <span id="L923" rel="#L923">923</span>
- <span id="L924" rel="#L924">924</span>
- <span id="L925" rel="#L925">925</span>
- <span id="L926" rel="#L926">926</span>
- <span id="L927" rel="#L927">927</span>
- <span id="L928" rel="#L928">928</span>
- <span id="L929" rel="#L929">929</span>
- <span id="L930" rel="#L930">930</span>
- <span id="L931" rel="#L931">931</span>
- <span id="L932" rel="#L932">932</span>
- <span id="L933" rel="#L933">933</span>
- <span id="L934" rel="#L934">934</span>
- <span id="L935" rel="#L935">935</span>
- <span id="L936" rel="#L936">936</span>
- <span id="L937" rel="#L937">937</span>
- <span id="L938" rel="#L938">938</span>
- <span id="L939" rel="#L939">939</span>
- <span id="L940" rel="#L940">940</span>
- <span id="L941" rel="#L941">941</span>
- <span id="L942" rel="#L942">942</span>
- <span id="L943" rel="#L943">943</span>
- <span id="L944" rel="#L944">944</span>
- <span id="L945" rel="#L945">945</span>
- <span id="L946" rel="#L946">946</span>
- <span id="L947" rel="#L947">947</span>
- <span id="L948" rel="#L948">948</span>
- <span id="L949" rel="#L949">949</span>
- <span id="L950" rel="#L950">950</span>
- <span id="L951" rel="#L951">951</span>
- <span id="L952" rel="#L952">952</span>
- <span id="L953" rel="#L953">953</span>
- <span id="L954" rel="#L954">954</span>
- <span id="L955" rel="#L955">955</span>
- <span id="L956" rel="#L956">956</span>
- <span id="L957" rel="#L957">957</span>
- <span id="L958" rel="#L958">958</span>
- <span id="L959" rel="#L959">959</span>
- <span id="L960" rel="#L960">960</span>
- <span id="L961" rel="#L961">961</span>
- <span id="L962" rel="#L962">962</span>
- <span id="L963" rel="#L963">963</span>
- <span id="L964" rel="#L964">964</span>
- <span id="L965" rel="#L965">965</span>
- <span id="L966" rel="#L966">966</span>
- <span id="L967" rel="#L967">967</span>
- <span id="L968" rel="#L968">968</span>
- <span id="L969" rel="#L969">969</span>
- <span id="L970" rel="#L970">970</span>
- <span id="L971" rel="#L971">971</span>
- <span id="L972" rel="#L972">972</span>
- <span id="L973" rel="#L973">973</span>
- <span id="L974" rel="#L974">974</span>
- <span id="L975" rel="#L975">975</span>
- <span id="L976" rel="#L976">976</span>
- <span id="L977" rel="#L977">977</span>
- <span id="L978" rel="#L978">978</span>
- <span id="L979" rel="#L979">979</span>
- <span id="L980" rel="#L980">980</span>
- <span id="L981" rel="#L981">981</span>
- <span id="L982" rel="#L982">982</span>
- <span id="L983" rel="#L983">983</span>
- <span id="L984" rel="#L984">984</span>
- <span id="L985" rel="#L985">985</span>
- <span id="L986" rel="#L986">986</span>
- <span id="L987" rel="#L987">987</span>
- <span id="L988" rel="#L988">988</span>
- <span id="L989" rel="#L989">989</span>
- <span id="L990" rel="#L990">990</span>
- <span id="L991" rel="#L991">991</span>
- <span id="L992" rel="#L992">992</span>
- <span id="L993" rel="#L993">993</span>
- <span id="L994" rel="#L994">994</span>
- <span id="L995" rel="#L995">995</span>
- <span id="L996" rel="#L996">996</span>
- <span id="L997" rel="#L997">997</span>
- <span id="L998" rel="#L998">998</span>
- <span id="L999" rel="#L999">999</span>
- <span id="L1000" rel="#L1000">1000</span>
- <span id="L1001" rel="#L1001">1001</span>
- <span id="L1002" rel="#L1002">1002</span>
- <span id="L1003" rel="#L1003">1003</span>
- <span id="L1004" rel="#L1004">1004</span>
- <span id="L1005" rel="#L1005">1005</span>
- <span id="L1006" rel="#L1006">1006</span>
- <span id="L1007" rel="#L1007">1007</span>
- <span id="L1008" rel="#L1008">1008</span>
- <span id="L1009" rel="#L1009">1009</span>
- <span id="L1010" rel="#L1010">1010</span>
- <span id="L1011" rel="#L1011">1011</span>
- <span id="L1012" rel="#L1012">1012</span>
- <span id="L1013" rel="#L1013">1013</span>
- <span id="L1014" rel="#L1014">1014</span>
- <span id="L1015" rel="#L1015">1015</span>
- <span id="L1016" rel="#L1016">1016</span>
- <span id="L1017" rel="#L1017">1017</span>
- <span id="L1018" rel="#L1018">1018</span>
- <span id="L1019" rel="#L1019">1019</span>
- <span id="L1020" rel="#L1020">1020</span>
- <span id="L1021" rel="#L1021">1021</span>
- <span id="L1022" rel="#L1022">1022</span>
- <span id="L1023" rel="#L1023">1023</span>
- <span id="L1024" rel="#L1024">1024</span>
- <span id="L1025" rel="#L1025">1025</span>
- <span id="L1026" rel="#L1026">1026</span>
- <span id="L1027" rel="#L1027">1027</span>
- <span id="L1028" rel="#L1028">1028</span>
- <span id="L1029" rel="#L1029">1029</span>
- <span id="L1030" rel="#L1030">1030</span>
- <span id="L1031" rel="#L1031">1031</span>
- <span id="L1032" rel="#L1032">1032</span>
- <span id="L1033" rel="#L1033">1033</span>
- <span id="L1034" rel="#L1034">1034</span>
- <span id="L1035" rel="#L1035">1035</span>
- <span id="L1036" rel="#L1036">1036</span>
- <span id="L1037" rel="#L1037">1037</span>
- <span id="L1038" rel="#L1038">1038</span>
- <span id="L1039" rel="#L1039">1039</span>
- <span id="L1040" rel="#L1040">1040</span>
- <span id="L1041" rel="#L1041">1041</span>
- <span id="L1042" rel="#L1042">1042</span>
- <span id="L1043" rel="#L1043">1043</span>
- <span id="L1044" rel="#L1044">1044</span>
- <span id="L1045" rel="#L1045">1045</span>
- <span id="L1046" rel="#L1046">1046</span>
- <span id="L1047" rel="#L1047">1047</span>
- <span id="L1048" rel="#L1048">1048</span>
- <span id="L1049" rel="#L1049">1049</span>
- <span id="L1050" rel="#L1050">1050</span>
- <span id="L1051" rel="#L1051">1051</span>
- <span id="L1052" rel="#L1052">1052</span>
- <span id="L1053" rel="#L1053">1053</span>
- <span id="L1054" rel="#L1054">1054</span>
- <span id="L1055" rel="#L1055">1055</span>
- <span id="L1056" rel="#L1056">1056</span>
- <span id="L1057" rel="#L1057">1057</span>
- <span id="L1058" rel="#L1058">1058</span>
- <span id="L1059" rel="#L1059">1059</span>
- <span id="L1060" rel="#L1060">1060</span>
- <span id="L1061" rel="#L1061">1061</span>
- <span id="L1062" rel="#L1062">1062</span>
- <span id="L1063" rel="#L1063">1063</span>
- <span id="L1064" rel="#L1064">1064</span>
- <span id="L1065" rel="#L1065">1065</span>
- <span id="L1066" rel="#L1066">1066</span>
- <span id="L1067" rel="#L1067">1067</span>
- <span id="L1068" rel="#L1068">1068</span>
- <span id="L1069" rel="#L1069">1069</span>
- <span id="L1070" rel="#L1070">1070</span>
- <span id="L1071" rel="#L1071">1071</span>
- <span id="L1072" rel="#L1072">1072</span>
- <span id="L1073" rel="#L1073">1073</span>
- <span id="L1074" rel="#L1074">1074</span>
- <span id="L1075" rel="#L1075">1075</span>
- <span id="L1076" rel="#L1076">1076</span>
- <span id="L1077" rel="#L1077">1077</span>
- <span id="L1078" rel="#L1078">1078</span>
- <span id="L1079" rel="#L1079">1079</span>
- <span id="L1080" rel="#L1080">1080</span>
- <span id="L1081" rel="#L1081">1081</span>
- <span id="L1082" rel="#L1082">1082</span>
- <span id="L1083" rel="#L1083">1083</span>
- <span id="L1084" rel="#L1084">1084</span>
- <span id="L1085" rel="#L1085">1085</span>
- <span id="L1086" rel="#L1086">1086</span>
- <span id="L1087" rel="#L1087">1087</span>
- <span id="L1088" rel="#L1088">1088</span>
- <span id="L1089" rel="#L1089">1089</span>
- <span id="L1090" rel="#L1090">1090</span>
- <span id="L1091" rel="#L1091">1091</span>
- <span id="L1092" rel="#L1092">1092</span>
- <span id="L1093" rel="#L1093">1093</span>
- <span id="L1094" rel="#L1094">1094</span>
- <span id="L1095" rel="#L1095">1095</span>
- <span id="L1096" rel="#L1096">1096</span>
- <span id="L1097" rel="#L1097">1097</span>
- <span id="L1098" rel="#L1098">1098</span>
- <span id="L1099" rel="#L1099">1099</span>
- <span id="L1100" rel="#L1100">1100</span>
- <span id="L1101" rel="#L1101">1101</span>
- <span id="L1102" rel="#L1102">1102</span>
- <span id="L1103" rel="#L1103">1103</span>
- <span id="L1104" rel="#L1104">1104</span>
- <span id="L1105" rel="#L1105">1105</span>
- <span id="L1106" rel="#L1106">1106</span>
- <span id="L1107" rel="#L1107">1107</span>
- <span id="L1108" rel="#L1108">1108</span>
- <span id="L1109" rel="#L1109">1109</span>
- <span id="L1110" rel="#L1110">1110</span>
- <span id="L1111" rel="#L1111">1111</span>
- <span id="L1112" rel="#L1112">1112</span>
- <span id="L1113" rel="#L1113">1113</span>
- <span id="L1114" rel="#L1114">1114</span>
- <span id="L1115" rel="#L1115">1115</span>
- <span id="L1116" rel="#L1116">1116</span>
- <span id="L1117" rel="#L1117">1117</span>
- <span id="L1118" rel="#L1118">1118</span>
- <span id="L1119" rel="#L1119">1119</span>
- <span id="L1120" rel="#L1120">1120</span>
- <span id="L1121" rel="#L1121">1121</span>
- <span id="L1122" rel="#L1122">1122</span>
- <span id="L1123" rel="#L1123">1123</span>
- <span id="L1124" rel="#L1124">1124</span>
- <span id="L1125" rel="#L1125">1125</span>
- <span id="L1126" rel="#L1126">1126</span>
- <span id="L1127" rel="#L1127">1127</span>
- <span id="L1128" rel="#L1128">1128</span>
- <span id="L1129" rel="#L1129">1129</span>
- <span id="L1130" rel="#L1130">1130</span>
- <span id="L1131" rel="#L1131">1131</span>
- <span id="L1132" rel="#L1132">1132</span>
- <span id="L1133" rel="#L1133">1133</span>
- <span id="L1134" rel="#L1134">1134</span>
- <span id="L1135" rel="#L1135">1135</span>
- <span id="L1136" rel="#L1136">1136</span>
- <span id="L1137" rel="#L1137">1137</span>
- <span id="L1138" rel="#L1138">1138</span>
- <span id="L1139" rel="#L1139">1139</span>
- <span id="L1140" rel="#L1140">1140</span>
- <span id="L1141" rel="#L1141">1141</span>
- <span id="L1142" rel="#L1142">1142</span>
- <span id="L1143" rel="#L1143">1143</span>
- <span id="L1144" rel="#L1144">1144</span>
- <span id="L1145" rel="#L1145">1145</span>
- <span id="L1146" rel="#L1146">1146</span>
- <span id="L1147" rel="#L1147">1147</span>
- <span id="L1148" rel="#L1148">1148</span>
- <span id="L1149" rel="#L1149">1149</span>
- <span id="L1150" rel="#L1150">1150</span>
- <span id="L1151" rel="#L1151">1151</span>
- <span id="L1152" rel="#L1152">1152</span>
- <span id="L1153" rel="#L1153">1153</span>
- <span id="L1154" rel="#L1154">1154</span>
- <span id="L1155" rel="#L1155">1155</span>
- <span id="L1156" rel="#L1156">1156</span>
- <span id="L1157" rel="#L1157">1157</span>
- <span id="L1158" rel="#L1158">1158</span>
- <span id="L1159" rel="#L1159">1159</span>
- <span id="L1160" rel="#L1160">1160</span>
- <span id="L1161" rel="#L1161">1161</span>
- <span id="L1162" rel="#L1162">1162</span>
- <span id="L1163" rel="#L1163">1163</span>
- <span id="L1164" rel="#L1164">1164</span>
- <span id="L1165" rel="#L1165">1165</span>
- <span id="L1166" rel="#L1166">1166</span>
- <span id="L1167" rel="#L1167">1167</span>
- <span id="L1168" rel="#L1168">1168</span>
- <span id="L1169" rel="#L1169">1169</span>
- <span id="L1170" rel="#L1170">1170</span>
- <span id="L1171" rel="#L1171">1171</span>
- <span id="L1172" rel="#L1172">1172</span>
- <span id="L1173" rel="#L1173">1173</span>
- <span id="L1174" rel="#L1174">1174</span>
- <span id="L1175" rel="#L1175">1175</span>
- <span id="L1176" rel="#L1176">1176</span>
- <span id="L1177" rel="#L1177">1177</span>
- <span id="L1178" rel="#L1178">1178</span>
- <span id="L1179" rel="#L1179">1179</span>
- <span id="L1180" rel="#L1180">1180</span>
- <span id="L1181" rel="#L1181">1181</span>
- <span id="L1182" rel="#L1182">1182</span>
- <span id="L1183" rel="#L1183">1183</span>
- <span id="L1184" rel="#L1184">1184</span>
- <span id="L1185" rel="#L1185">1185</span>
- <span id="L1186" rel="#L1186">1186</span>
- <span id="L1187" rel="#L1187">1187</span>
- <span id="L1188" rel="#L1188">1188</span>
- <span id="L1189" rel="#L1189">1189</span>
- <span id="L1190" rel="#L1190">1190</span>
- <span id="L1191" rel="#L1191">1191</span>
- <span id="L1192" rel="#L1192">1192</span>
- <span id="L1193" rel="#L1193">1193</span>
- <span id="L1194" rel="#L1194">1194</span>
- <span id="L1195" rel="#L1195">1195</span>
- <span id="L1196" rel="#L1196">1196</span>
- <span id="L1197" rel="#L1197">1197</span>
- <span id="L1198" rel="#L1198">1198</span>
- <span id="L1199" rel="#L1199">1199</span>
- <span id="L1200" rel="#L1200">1200</span>
- <span id="L1201" rel="#L1201">1201</span>
- <span id="L1202" rel="#L1202">1202</span>
- <span id="L1203" rel="#L1203">1203</span>
- <span id="L1204" rel="#L1204">1204</span>
- <span id="L1205" rel="#L1205">1205</span>
- <span id="L1206" rel="#L1206">1206</span>
- <span id="L1207" rel="#L1207">1207</span>
- <span id="L1208" rel="#L1208">1208</span>
- <span id="L1209" rel="#L1209">1209</span>
- <span id="L1210" rel="#L1210">1210</span>
- <span id="L1211" rel="#L1211">1211</span>
- <span id="L1212" rel="#L1212">1212</span>
- <span id="L1213" rel="#L1213">1213</span>
- <span id="L1214" rel="#L1214">1214</span>
- <span id="L1215" rel="#L1215">1215</span>
- <span id="L1216" rel="#L1216">1216</span>
- <span id="L1217" rel="#L1217">1217</span>
- <span id="L1218" rel="#L1218">1218</span>
- <span id="L1219" rel="#L1219">1219</span>
- <span id="L1220" rel="#L1220">1220</span>
- <span id="L1221" rel="#L1221">1221</span>
- <span id="L1222" rel="#L1222">1222</span>
- <span id="L1223" rel="#L1223">1223</span>
- <span id="L1224" rel="#L1224">1224</span>
- <span id="L1225" rel="#L1225">1225</span>
- <span id="L1226" rel="#L1226">1226</span>
- <span id="L1227" rel="#L1227">1227</span>
- <span id="L1228" rel="#L1228">1228</span>
- <span id="L1229" rel="#L1229">1229</span>
- <span id="L1230" rel="#L1230">1230</span>
- <span id="L1231" rel="#L1231">1231</span>
- <span id="L1232" rel="#L1232">1232</span>
- <span id="L1233" rel="#L1233">1233</span>
- <span id="L1234" rel="#L1234">1234</span>
- <span id="L1235" rel="#L1235">1235</span>
- <span id="L1236" rel="#L1236">1236</span>
- <span id="L1237" rel="#L1237">1237</span>
- <span id="L1238" rel="#L1238">1238</span>
- <span id="L1239" rel="#L1239">1239</span>
- <span id="L1240" rel="#L1240">1240</span>
- <span id="L1241" rel="#L1241">1241</span>
- <span id="L1242" rel="#L1242">1242</span>
- <span id="L1243" rel="#L1243">1243</span>
- <span id="L1244" rel="#L1244">1244</span>
- <span id="L1245" rel="#L1245">1245</span>
- <span id="L1246" rel="#L1246">1246</span>
- <span id="L1247" rel="#L1247">1247</span>
- <span id="L1248" rel="#L1248">1248</span>
- <span id="L1249" rel="#L1249">1249</span>
- <span id="L1250" rel="#L1250">1250</span>
- <span id="L1251" rel="#L1251">1251</span>
- <span id="L1252" rel="#L1252">1252</span>
- <span id="L1253" rel="#L1253">1253</span>
- <span id="L1254" rel="#L1254">1254</span>
- <span id="L1255" rel="#L1255">1255</span>
- <span id="L1256" rel="#L1256">1256</span>
- <span id="L1257" rel="#L1257">1257</span>
- <span id="L1258" rel="#L1258">1258</span>
- <span id="L1259" rel="#L1259">1259</span>
- <span id="L1260" rel="#L1260">1260</span>
- <span id="L1261" rel="#L1261">1261</span>
- <span id="L1262" rel="#L1262">1262</span>
- <span id="L1263" rel="#L1263">1263</span>
- <span id="L1264" rel="#L1264">1264</span>
- <span id="L1265" rel="#L1265">1265</span>
- <span id="L1266" rel="#L1266">1266</span>
- <span id="L1267" rel="#L1267">1267</span>
- <span id="L1268" rel="#L1268">1268</span>
- <span id="L1269" rel="#L1269">1269</span>
- <span id="L1270" rel="#L1270">1270</span>
- <span id="L1271" rel="#L1271">1271</span>
- <span id="L1272" rel="#L1272">1272</span>
- <span id="L1273" rel="#L1273">1273</span>
- <span id="L1274" rel="#L1274">1274</span>
- <span id="L1275" rel="#L1275">1275</span>
- <span id="L1276" rel="#L1276">1276</span>
- <span id="L1277" rel="#L1277">1277</span>
- <span id="L1278" rel="#L1278">1278</span>
- <span id="L1279" rel="#L1279">1279</span>
- <span id="L1280" rel="#L1280">1280</span>
- <span id="L1281" rel="#L1281">1281</span>
- <span id="L1282" rel="#L1282">1282</span>
- <span id="L1283" rel="#L1283">1283</span>
- <span id="L1284" rel="#L1284">1284</span>
- <span id="L1285" rel="#L1285">1285</span>
- <span id="L1286" rel="#L1286">1286</span>
- <span id="L1287" rel="#L1287">1287</span>
- <span id="L1288" rel="#L1288">1288</span>
- <span id="L1289" rel="#L1289">1289</span>
- <span id="L1290" rel="#L1290">1290</span>
- <span id="L1291" rel="#L1291">1291</span>
- <span id="L1292" rel="#L1292">1292</span>
- <span id="L1293" rel="#L1293">1293</span>
- <span id="L1294" rel="#L1294">1294</span>
- <span id="L1295" rel="#L1295">1295</span>
- <span id="L1296" rel="#L1296">1296</span>
- <span id="L1297" rel="#L1297">1297</span>
- <span id="L1298" rel="#L1298">1298</span>
- <span id="L1299" rel="#L1299">1299</span>
- <span id="L1300" rel="#L1300">1300</span>
- <span id="L1301" rel="#L1301">1301</span>
- <span id="L1302" rel="#L1302">1302</span>
- <span id="L1303" rel="#L1303">1303</span>
- <span id="L1304" rel="#L1304">1304</span>
- <span id="L1305" rel="#L1305">1305</span>
- <span id="L1306" rel="#L1306">1306</span>
- <span id="L1307" rel="#L1307">1307</span>
- <span id="L1308" rel="#L1308">1308</span>
- <span id="L1309" rel="#L1309">1309</span>
- <span id="L1310" rel="#L1310">1310</span>
- <span id="L1311" rel="#L1311">1311</span>
- <span id="L1312" rel="#L1312">1312</span>
- <span id="L1313" rel="#L1313">1313</span>
- <span id="L1314" rel="#L1314">1314</span>
- <span id="L1315" rel="#L1315">1315</span>
- <span id="L1316" rel="#L1316">1316</span>
- <span id="L1317" rel="#L1317">1317</span>
- <span id="L1318" rel="#L1318">1318</span>
- <span id="L1319" rel="#L1319">1319</span>
- <span id="L1320" rel="#L1320">1320</span>
- <span id="L1321" rel="#L1321">1321</span>
- <span id="L1322" rel="#L1322">1322</span>
- <span id="L1323" rel="#L1323">1323</span>
- <span id="L1324" rel="#L1324">1324</span>
- <span id="L1325" rel="#L1325">1325</span>
- <span id="L1326" rel="#L1326">1326</span>
- <span id="L1327" rel="#L1327">1327</span>
- <span id="L1328" rel="#L1328">1328</span>
- <span id="L1329" rel="#L1329">1329</span>
- <span id="L1330" rel="#L1330">1330</span>
- <span id="L1331" rel="#L1331">1331</span>
- <span id="L1332" rel="#L1332">1332</span>
- <span id="L1333" rel="#L1333">1333</span>
- <span id="L1334" rel="#L1334">1334</span>
- <span id="L1335" rel="#L1335">1335</span>
- <span id="L1336" rel="#L1336">1336</span>
- <span id="L1337" rel="#L1337">1337</span>
- <span id="L1338" rel="#L1338">1338</span>
- <span id="L1339" rel="#L1339">1339</span>
- <span id="L1340" rel="#L1340">1340</span>
- <span id="L1341" rel="#L1341">1341</span>
- <span id="L1342" rel="#L1342">1342</span>
- <span id="L1343" rel="#L1343">1343</span>
- <span id="L1344" rel="#L1344">1344</span>
- <span id="L1345" rel="#L1345">1345</span>
- <span id="L1346" rel="#L1346">1346</span>
- <span id="L1347" rel="#L1347">1347</span>
- <span id="L1348" rel="#L1348">1348</span>
- <span id="L1349" rel="#L1349">1349</span>
- <span id="L1350" rel="#L1350">1350</span>
- <span id="L1351" rel="#L1351">1351</span>
- <span id="L1352" rel="#L1352">1352</span>
- <span id="L1353" rel="#L1353">1353</span>
- <span id="L1354" rel="#L1354">1354</span>
- <span id="L1355" rel="#L1355">1355</span>
- <span id="L1356" rel="#L1356">1356</span>
- <span id="L1357" rel="#L1357">1357</span>
- <span id="L1358" rel="#L1358">1358</span>
- <span id="L1359" rel="#L1359">1359</span>
- <span id="L1360" rel="#L1360">1360</span>
- <span id="L1361" rel="#L1361">1361</span>
- <span id="L1362" rel="#L1362">1362</span>
- <span id="L1363" rel="#L1363">1363</span>
- <span id="L1364" rel="#L1364">1364</span>
- <span id="L1365" rel="#L1365">1365</span>
- <span id="L1366" rel="#L1366">1366</span>
- <span id="L1367" rel="#L1367">1367</span>
- <span id="L1368" rel="#L1368">1368</span>
- <span id="L1369" rel="#L1369">1369</span>
- <span id="L1370" rel="#L1370">1370</span>
- <span id="L1371" rel="#L1371">1371</span>
- <span id="L1372" rel="#L1372">1372</span>
- <span id="L1373" rel="#L1373">1373</span>
- <span id="L1374" rel="#L1374">1374</span>
- <span id="L1375" rel="#L1375">1375</span>
- <span id="L1376" rel="#L1376">1376</span>
- <span id="L1377" rel="#L1377">1377</span>
- <span id="L1378" rel="#L1378">1378</span>
- <span id="L1379" rel="#L1379">1379</span>
- <span id="L1380" rel="#L1380">1380</span>
- <span id="L1381" rel="#L1381">1381</span>
- <span id="L1382" rel="#L1382">1382</span>
- <span id="L1383" rel="#L1383">1383</span>
- <span id="L1384" rel="#L1384">1384</span>
- <span id="L1385" rel="#L1385">1385</span>
- <span id="L1386" rel="#L1386">1386</span>
- <span id="L1387" rel="#L1387">1387</span>
- <span id="L1388" rel="#L1388">1388</span>
- <span id="L1389" rel="#L1389">1389</span>
- <span id="L1390" rel="#L1390">1390</span>
- <span id="L1391" rel="#L1391">1391</span>
- <span id="L1392" rel="#L1392">1392</span>
- <span id="L1393" rel="#L1393">1393</span>
- <span id="L1394" rel="#L1394">1394</span>
- <span id="L1395" rel="#L1395">1395</span>
- <span id="L1396" rel="#L1396">1396</span>
- <span id="L1397" rel="#L1397">1397</span>
- <span id="L1398" rel="#L1398">1398</span>
- <span id="L1399" rel="#L1399">1399</span>
- <span id="L1400" rel="#L1400">1400</span>
- <span id="L1401" rel="#L1401">1401</span>
- <span id="L1402" rel="#L1402">1402</span>
- <span id="L1403" rel="#L1403">1403</span>
- <span id="L1404" rel="#L1404">1404</span>
- <span id="L1405" rel="#L1405">1405</span>
- <span id="L1406" rel="#L1406">1406</span>
- <span id="L1407" rel="#L1407">1407</span>
- <span id="L1408" rel="#L1408">1408</span>
- <span id="L1409" rel="#L1409">1409</span>
- <span id="L1410" rel="#L1410">1410</span>
- <span id="L1411" rel="#L1411">1411</span>
- <span id="L1412" rel="#L1412">1412</span>
- <span id="L1413" rel="#L1413">1413</span>
- <span id="L1414" rel="#L1414">1414</span>
- <span id="L1415" rel="#L1415">1415</span>
- <span id="L1416" rel="#L1416">1416</span>
- <span id="L1417" rel="#L1417">1417</span>
- <span id="L1418" rel="#L1418">1418</span>
- <span id="L1419" rel="#L1419">1419</span>
- <span id="L1420" rel="#L1420">1420</span>
- <span id="L1421" rel="#L1421">1421</span>
- <span id="L1422" rel="#L1422">1422</span>
- <span id="L1423" rel="#L1423">1423</span>
- <span id="L1424" rel="#L1424">1424</span>
- <span id="L1425" rel="#L1425">1425</span>
- <span id="L1426" rel="#L1426">1426</span>
- <span id="L1427" rel="#L1427">1427</span>
- <span id="L1428" rel="#L1428">1428</span>
- <span id="L1429" rel="#L1429">1429</span>
- <span id="L1430" rel="#L1430">1430</span>
- <span id="L1431" rel="#L1431">1431</span>
- <span id="L1432" rel="#L1432">1432</span>
- <span id="L1433" rel="#L1433">1433</span>
- <span id="L1434" rel="#L1434">1434</span>
- <span id="L1435" rel="#L1435">1435</span>
- <span id="L1436" rel="#L1436">1436</span>
- <span id="L1437" rel="#L1437">1437</span>
- <span id="L1438" rel="#L1438">1438</span>
- <span id="L1439" rel="#L1439">1439</span>
- <span id="L1440" rel="#L1440">1440</span>
- <span id="L1441" rel="#L1441">1441</span>
- <span id="L1442" rel="#L1442">1442</span>
- <span id="L1443" rel="#L1443">1443</span>
- <span id="L1444" rel="#L1444">1444</span>
- <span id="L1445" rel="#L1445">1445</span>
- <span id="L1446" rel="#L1446">1446</span>
- <span id="L1447" rel="#L1447">1447</span>
- <span id="L1448" rel="#L1448">1448</span>
- <span id="L1449" rel="#L1449">1449</span>
- <span id="L1450" rel="#L1450">1450</span>
- <span id="L1451" rel="#L1451">1451</span>
- <span id="L1452" rel="#L1452">1452</span>
- <span id="L1453" rel="#L1453">1453</span>
- <span id="L1454" rel="#L1454">1454</span>
- <span id="L1455" rel="#L1455">1455</span>
- <span id="L1456" rel="#L1456">1456</span>
- <span id="L1457" rel="#L1457">1457</span>
- <span id="L1458" rel="#L1458">1458</span>
- <span id="L1459" rel="#L1459">1459</span>
- <span id="L1460" rel="#L1460">1460</span>
- <span id="L1461" rel="#L1461">1461</span>
- <span id="L1462" rel="#L1462">1462</span>
- <span id="L1463" rel="#L1463">1463</span>
- <span id="L1464" rel="#L1464">1464</span>
- <span id="L1465" rel="#L1465">1465</span>
- <span id="L1466" rel="#L1466">1466</span>
- <span id="L1467" rel="#L1467">1467</span>
- <span id="L1468" rel="#L1468">1468</span>
- <span id="L1469" rel="#L1469">1469</span>
- <span id="L1470" rel="#L1470">1470</span>
- <span id="L1471" rel="#L1471">1471</span>
- <span id="L1472" rel="#L1472">1472</span>
- <span id="L1473" rel="#L1473">1473</span>
- <span id="L1474" rel="#L1474">1474</span>
- <span id="L1475" rel="#L1475">1475</span>
- <span id="L1476" rel="#L1476">1476</span>
- <span id="L1477" rel="#L1477">1477</span>
- <span id="L1478" rel="#L1478">1478</span>
- <span id="L1479" rel="#L1479">1479</span>
- <span id="L1480" rel="#L1480">1480</span>
- <span id="L1481" rel="#L1481">1481</span>
- <span id="L1482" rel="#L1482">1482</span>
- <span id="L1483" rel="#L1483">1483</span>
- <span id="L1484" rel="#L1484">1484</span>
- <span id="L1485" rel="#L1485">1485</span>
- <span id="L1486" rel="#L1486">1486</span>
- <span id="L1487" rel="#L1487">1487</span>
- <span id="L1488" rel="#L1488">1488</span>
- <span id="L1489" rel="#L1489">1489</span>
- <span id="L1490" rel="#L1490">1490</span>
- <span id="L1491" rel="#L1491">1491</span>
- <span id="L1492" rel="#L1492">1492</span>
- <span id="L1493" rel="#L1493">1493</span>
- <span id="L1494" rel="#L1494">1494</span>
- <span id="L1495" rel="#L1495">1495</span>
- <span id="L1496" rel="#L1496">1496</span>
- <span id="L1497" rel="#L1497">1497</span>
- <span id="L1498" rel="#L1498">1498</span>
- <span id="L1499" rel="#L1499">1499</span>
- <span id="L1500" rel="#L1500">1500</span>
- <span id="L1501" rel="#L1501">1501</span>
- <span id="L1502" rel="#L1502">1502</span>
- <span id="L1503" rel="#L1503">1503</span>
- <span id="L1504" rel="#L1504">1504</span>
- <span id="L1505" rel="#L1505">1505</span>
- <span id="L1506" rel="#L1506">1506</span>
- <span id="L1507" rel="#L1507">1507</span>
- <span id="L1508" rel="#L1508">1508</span>
- <span id="L1509" rel="#L1509">1509</span>
- <span id="L1510" rel="#L1510">1510</span>
- <span id="L1511" rel="#L1511">1511</span>
- <span id="L1512" rel="#L1512">1512</span>
- <span id="L1513" rel="#L1513">1513</span>
- <span id="L1514" rel="#L1514">1514</span>
- <span id="L1515" rel="#L1515">1515</span>
- <span id="L1516" rel="#L1516">1516</span>
- <span id="L1517" rel="#L1517">1517</span>
- <span id="L1518" rel="#L1518">1518</span>
- <span id="L1519" rel="#L1519">1519</span>
- <span id="L1520" rel="#L1520">1520</span>
- <span id="L1521" rel="#L1521">1521</span>
- <span id="L1522" rel="#L1522">1522</span>
- <span id="L1523" rel="#L1523">1523</span>
- <span id="L1524" rel="#L1524">1524</span>
- <span id="L1525" rel="#L1525">1525</span>
- <span id="L1526" rel="#L1526">1526</span>
- <span id="L1527" rel="#L1527">1527</span>
- <span id="L1528" rel="#L1528">1528</span>
- <span id="L1529" rel="#L1529">1529</span>
- <span id="L1530" rel="#L1530">1530</span>
- <span id="L1531" rel="#L1531">1531</span>
- <span id="L1532" rel="#L1532">1532</span>
- <span id="L1533" rel="#L1533">1533</span>
- <span id="L1534" rel="#L1534">1534</span>
- <span id="L1535" rel="#L1535">1535</span>
- <span id="L1536" rel="#L1536">1536</span>
- <span id="L1537" rel="#L1537">1537</span>
- <span id="L1538" rel="#L1538">1538</span>
- <span id="L1539" rel="#L1539">1539</span>
- <span id="L1540" rel="#L1540">1540</span>
- <span id="L1541" rel="#L1541">1541</span>
- <span id="L1542" rel="#L1542">1542</span>
- <span id="L1543" rel="#L1543">1543</span>
- <span id="L1544" rel="#L1544">1544</span>
- <span id="L1545" rel="#L1545">1545</span>
- <span id="L1546" rel="#L1546">1546</span>
- <span id="L1547" rel="#L1547">1547</span>
- <span id="L1548" rel="#L1548">1548</span>
- <span id="L1549" rel="#L1549">1549</span>
- <span id="L1550" rel="#L1550">1550</span>
- <span id="L1551" rel="#L1551">1551</span>
- <span id="L1552" rel="#L1552">1552</span>
- <span id="L1553" rel="#L1553">1553</span>
- <span id="L1554" rel="#L1554">1554</span>
- <span id="L1555" rel="#L1555">1555</span>
- <span id="L1556" rel="#L1556">1556</span>
- <span id="L1557" rel="#L1557">1557</span>
- <span id="L1558" rel="#L1558">1558</span>
- <span id="L1559" rel="#L1559">1559</span>
- <span id="L1560" rel="#L1560">1560</span>
- <span id="L1561" rel="#L1561">1561</span>
- <span id="L1562" rel="#L1562">1562</span>
- <span id="L1563" rel="#L1563">1563</span>
- <span id="L1564" rel="#L1564">1564</span>
- <span id="L1565" rel="#L1565">1565</span>
- <span id="L1566" rel="#L1566">1566</span>
- <span id="L1567" rel="#L1567">1567</span>
- <span id="L1568" rel="#L1568">1568</span>
- <span id="L1569" rel="#L1569">1569</span>
- <span id="L1570" rel="#L1570">1570</span>
- <span id="L1571" rel="#L1571">1571</span>
- <span id="L1572" rel="#L1572">1572</span>
- <span id="L1573" rel="#L1573">1573</span>
- <span id="L1574" rel="#L1574">1574</span>
- <span id="L1575" rel="#L1575">1575</span>
- <span id="L1576" rel="#L1576">1576</span>
- <span id="L1577" rel="#L1577">1577</span>
- <span id="L1578" rel="#L1578">1578</span>
- <span id="L1579" rel="#L1579">1579</span>
- <span id="L1580" rel="#L1580">1580</span>
- <span id="L1581" rel="#L1581">1581</span>
- <span id="L1582" rel="#L1582">1582</span>
- <span id="L1583" rel="#L1583">1583</span>
- <span id="L1584" rel="#L1584">1584</span>
- <span id="L1585" rel="#L1585">1585</span>
- <span id="L1586" rel="#L1586">1586</span>
- <span id="L1587" rel="#L1587">1587</span>
- <span id="L1588" rel="#L1588">1588</span>
- <span id="L1589" rel="#L1589">1589</span>
- <span id="L1590" rel="#L1590">1590</span>
- <span id="L1591" rel="#L1591">1591</span>
- <span id="L1592" rel="#L1592">1592</span>
- <span id="L1593" rel="#L1593">1593</span>
- <span id="L1594" rel="#L1594">1594</span>
- <span id="L1595" rel="#L1595">1595</span>
- <span id="L1596" rel="#L1596">1596</span>
- <span id="L1597" rel="#L1597">1597</span>
- <span id="L1598" rel="#L1598">1598</span>
- <span id="L1599" rel="#L1599">1599</span>
- <span id="L1600" rel="#L1600">1600</span>
- <span id="L1601" rel="#L1601">1601</span>
- <span id="L1602" rel="#L1602">1602</span>
- <span id="L1603" rel="#L1603">1603</span>
- <span id="L1604" rel="#L1604">1604</span>
- <span id="L1605" rel="#L1605">1605</span>
- <span id="L1606" rel="#L1606">1606</span>
- <span id="L1607" rel="#L1607">1607</span>
- <span id="L1608" rel="#L1608">1608</span>
- <span id="L1609" rel="#L1609">1609</span>
- <span id="L1610" rel="#L1610">1610</span>
- <span id="L1611" rel="#L1611">1611</span>
- <span id="L1612" rel="#L1612">1612</span>
- <span id="L1613" rel="#L1613">1613</span>
- <span id="L1614" rel="#L1614">1614</span>
- <span id="L1615" rel="#L1615">1615</span>
- <span id="L1616" rel="#L1616">1616</span>
- <span id="L1617" rel="#L1617">1617</span>
- <span id="L1618" rel="#L1618">1618</span>
- <span id="L1619" rel="#L1619">1619</span>
- <span id="L1620" rel="#L1620">1620</span>
- <span id="L1621" rel="#L1621">1621</span>
- <span id="L1622" rel="#L1622">1622</span>
- <span id="L1623" rel="#L1623">1623</span>
- <span id="L1624" rel="#L1624">1624</span>
- <span id="L1625" rel="#L1625">1625</span>
- <span id="L1626" rel="#L1626">1626</span>
- <span id="L1627" rel="#L1627">1627</span>
- <span id="L1628" rel="#L1628">1628</span>
- <span id="L1629" rel="#L1629">1629</span>
- <span id="L1630" rel="#L1630">1630</span>
- <span id="L1631" rel="#L1631">1631</span>
- <span id="L1632" rel="#L1632">1632</span>
- <span id="L1633" rel="#L1633">1633</span>
- <span id="L1634" rel="#L1634">1634</span>
- <span id="L1635" rel="#L1635">1635</span>
- <span id="L1636" rel="#L1636">1636</span>
- <span id="L1637" rel="#L1637">1637</span>
- <span id="L1638" rel="#L1638">1638</span>
- <span id="L1639" rel="#L1639">1639</span>
- <span id="L1640" rel="#L1640">1640</span>
- <span id="L1641" rel="#L1641">1641</span>
- <span id="L1642" rel="#L1642">1642</span>
- <span id="L1643" rel="#L1643">1643</span>
- <span id="L1644" rel="#L1644">1644</span>
- <span id="L1645" rel="#L1645">1645</span>
- <span id="L1646" rel="#L1646">1646</span>
- <span id="L1647" rel="#L1647">1647</span>
- <span id="L1648" rel="#L1648">1648</span>
- <span id="L1649" rel="#L1649">1649</span>
- <span id="L1650" rel="#L1650">1650</span>
- <span id="L1651" rel="#L1651">1651</span>
- <span id="L1652" rel="#L1652">1652</span>
- <span id="L1653" rel="#L1653">1653</span>
- <span id="L1654" rel="#L1654">1654</span>
- <span id="L1655" rel="#L1655">1655</span>
- <span id="L1656" rel="#L1656">1656</span>
- <span id="L1657" rel="#L1657">1657</span>
- <span id="L1658" rel="#L1658">1658</span>
- <span id="L1659" rel="#L1659">1659</span>
- <span id="L1660" rel="#L1660">1660</span>
- <span id="L1661" rel="#L1661">1661</span>
- <span id="L1662" rel="#L1662">1662</span>
- <span id="L1663" rel="#L1663">1663</span>
- <span id="L1664" rel="#L1664">1664</span>
- <span id="L1665" rel="#L1665">1665</span>
- <span id="L1666" rel="#L1666">1666</span>
- <span id="L1667" rel="#L1667">1667</span>
- <span id="L1668" rel="#L1668">1668</span>
- <span id="L1669" rel="#L1669">1669</span>
- <span id="L1670" rel="#L1670">1670</span>
- <span id="L1671" rel="#L1671">1671</span>
- <span id="L1672" rel="#L1672">1672</span>
- <span id="L1673" rel="#L1673">1673</span>
- <span id="L1674" rel="#L1674">1674</span>
- <span id="L1675" rel="#L1675">1675</span>
- <span id="L1676" rel="#L1676">1676</span>
- <span id="L1677" rel="#L1677">1677</span>
- <span id="L1678" rel="#L1678">1678</span>
- <span id="L1679" rel="#L1679">1679</span>
- <span id="L1680" rel="#L1680">1680</span>
- <span id="L1681" rel="#L1681">1681</span>
- <span id="L1682" rel="#L1682">1682</span>
- <span id="L1683" rel="#L1683">1683</span>
- <span id="L1684" rel="#L1684">1684</span>
- <span id="L1685" rel="#L1685">1685</span>
- <span id="L1686" rel="#L1686">1686</span>
- <span id="L1687" rel="#L1687">1687</span>
- <span id="L1688" rel="#L1688">1688</span>
- <span id="L1689" rel="#L1689">1689</span>
- <span id="L1690" rel="#L1690">1690</span>
- <span id="L1691" rel="#L1691">1691</span>
- <span id="L1692" rel="#L1692">1692</span>
- <span id="L1693" rel="#L1693">1693</span>
- <span id="L1694" rel="#L1694">1694</span>
- <span id="L1695" rel="#L1695">1695</span>
- <span id="L1696" rel="#L1696">1696</span>
- <span id="L1697" rel="#L1697">1697</span>
- <span id="L1698" rel="#L1698">1698</span>
- <span id="L1699" rel="#L1699">1699</span>
- <span id="L1700" rel="#L1700">1700</span>
- <span id="L1701" rel="#L1701">1701</span>
- <span id="L1702" rel="#L1702">1702</span>
- <span id="L1703" rel="#L1703">1703</span>
- <span id="L1704" rel="#L1704">1704</span>
- <span id="L1705" rel="#L1705">1705</span>
- <span id="L1706" rel="#L1706">1706</span>
- <span id="L1707" rel="#L1707">1707</span>
- <span id="L1708" rel="#L1708">1708</span>
- <span id="L1709" rel="#L1709">1709</span>
- <span id="L1710" rel="#L1710">1710</span>
- <span id="L1711" rel="#L1711">1711</span>
- <span id="L1712" rel="#L1712">1712</span>
- <span id="L1713" rel="#L1713">1713</span>
- <span id="L1714" rel="#L1714">1714</span>
- <span id="L1715" rel="#L1715">1715</span>
- <span id="L1716" rel="#L1716">1716</span>
- <span id="L1717" rel="#L1717">1717</span>
- <span id="L1718" rel="#L1718">1718</span>
- <span id="L1719" rel="#L1719">1719</span>
- <span id="L1720" rel="#L1720">1720</span>
- <span id="L1721" rel="#L1721">1721</span>
- <span id="L1722" rel="#L1722">1722</span>
- <span id="L1723" rel="#L1723">1723</span>
- <span id="L1724" rel="#L1724">1724</span>
- <span id="L1725" rel="#L1725">1725</span>
- <span id="L1726" rel="#L1726">1726</span>
- <span id="L1727" rel="#L1727">1727</span>
- <span id="L1728" rel="#L1728">1728</span>
- <span id="L1729" rel="#L1729">1729</span>
- <span id="L1730" rel="#L1730">1730</span>
- <span id="L1731" rel="#L1731">1731</span>
- <span id="L1732" rel="#L1732">1732</span>
- <span id="L1733" rel="#L1733">1733</span>
- <span id="L1734" rel="#L1734">1734</span>
- <span id="L1735" rel="#L1735">1735</span>
- <span id="L1736" rel="#L1736">1736</span>
- <span id="L1737" rel="#L1737">1737</span>
- <span id="L1738" rel="#L1738">1738</span>
- <span id="L1739" rel="#L1739">1739</span>
- <span id="L1740" rel="#L1740">1740</span>
- <span id="L1741" rel="#L1741">1741</span>
- <span id="L1742" rel="#L1742">1742</span>
- <span id="L1743" rel="#L1743">1743</span>
- <span id="L1744" rel="#L1744">1744</span>
- <span id="L1745" rel="#L1745">1745</span>
- <span id="L1746" rel="#L1746">1746</span>
- <span id="L1747" rel="#L1747">1747</span>
- <span id="L1748" rel="#L1748">1748</span>
- <span id="L1749" rel="#L1749">1749</span>
- <span id="L1750" rel="#L1750">1750</span>
- <span id="L1751" rel="#L1751">1751</span>
- <span id="L1752" rel="#L1752">1752</span>
- <span id="L1753" rel="#L1753">1753</span>
- <span id="L1754" rel="#L1754">1754</span>
- <span id="L1755" rel="#L1755">1755</span>
- <span id="L1756" rel="#L1756">1756</span>
- <span id="L1757" rel="#L1757">1757</span>
- <span id="L1758" rel="#L1758">1758</span>
- <span id="L1759" rel="#L1759">1759</span>
- <span id="L1760" rel="#L1760">1760</span>
- <span id="L1761" rel="#L1761">1761</span>
- <span id="L1762" rel="#L1762">1762</span>
- <span id="L1763" rel="#L1763">1763</span>
- <span id="L1764" rel="#L1764">1764</span>
- <span id="L1765" rel="#L1765">1765</span>
- <span id="L1766" rel="#L1766">1766</span>
- <span id="L1767" rel="#L1767">1767</span>
- <span id="L1768" rel="#L1768">1768</span>
- <span id="L1769" rel="#L1769">1769</span>
- <span id="L1770" rel="#L1770">1770</span>
- <span id="L1771" rel="#L1771">1771</span>
- <span id="L1772" rel="#L1772">1772</span>
- <span id="L1773" rel="#L1773">1773</span>
- <span id="L1774" rel="#L1774">1774</span>
- <span id="L1775" rel="#L1775">1775</span>
- <span id="L1776" rel="#L1776">1776</span>
- <span id="L1777" rel="#L1777">1777</span>
- <span id="L1778" rel="#L1778">1778</span>
- <span id="L1779" rel="#L1779">1779</span>
- <span id="L1780" rel="#L1780">1780</span>
- <span id="L1781" rel="#L1781">1781</span>
- <span id="L1782" rel="#L1782">1782</span>
- <span id="L1783" rel="#L1783">1783</span>
- <span id="L1784" rel="#L1784">1784</span>
- <span id="L1785" rel="#L1785">1785</span>
- <span id="L1786" rel="#L1786">1786</span>
- <span id="L1787" rel="#L1787">1787</span>
- <span id="L1788" rel="#L1788">1788</span>
- <span id="L1789" rel="#L1789">1789</span>
- <span id="L1790" rel="#L1790">1790</span>
- <span id="L1791" rel="#L1791">1791</span>
- <span id="L1792" rel="#L1792">1792</span>
- <span id="L1793" rel="#L1793">1793</span>
- <span id="L1794" rel="#L1794">1794</span>
- <span id="L1795" rel="#L1795">1795</span>
- <span id="L1796" rel="#L1796">1796</span>
- <span id="L1797" rel="#L1797">1797</span>
- <span id="L1798" rel="#L1798">1798</span>
- <span id="L1799" rel="#L1799">1799</span>
- <span id="L1800" rel="#L1800">1800</span>
- <span id="L1801" rel="#L1801">1801</span>
- <span id="L1802" rel="#L1802">1802</span>
- <span id="L1803" rel="#L1803">1803</span>
- <span id="L1804" rel="#L1804">1804</span>
- <span id="L1805" rel="#L1805">1805</span>
- <span id="L1806" rel="#L1806">1806</span>
- <span id="L1807" rel="#L1807">1807</span>
- <span id="L1808" rel="#L1808">1808</span>
- <span id="L1809" rel="#L1809">1809</span>
- <span id="L1810" rel="#L1810">1810</span>
- <span id="L1811" rel="#L1811">1811</span>
- <span id="L1812" rel="#L1812">1812</span>
- <span id="L1813" rel="#L1813">1813</span>
- <span id="L1814" rel="#L1814">1814</span>
- <span id="L1815" rel="#L1815">1815</span>
- <span id="L1816" rel="#L1816">1816</span>
- <span id="L1817" rel="#L1817">1817</span>
- <span id="L1818" rel="#L1818">1818</span>
- <span id="L1819" rel="#L1819">1819</span>
- <span id="L1820" rel="#L1820">1820</span>
- <span id="L1821" rel="#L1821">1821</span>
- <span id="L1822" rel="#L1822">1822</span>
- <span id="L1823" rel="#L1823">1823</span>
- <span id="L1824" rel="#L1824">1824</span>
- <span id="L1825" rel="#L1825">1825</span>
- <span id="L1826" rel="#L1826">1826</span>
- <span id="L1827" rel="#L1827">1827</span>
- <span id="L1828" rel="#L1828">1828</span>
- <span id="L1829" rel="#L1829">1829</span>
- <span id="L1830" rel="#L1830">1830</span>
- <span id="L1831" rel="#L1831">1831</span>
- <span id="L1832" rel="#L1832">1832</span>
- <span id="L1833" rel="#L1833">1833</span>
- <span id="L1834" rel="#L1834">1834</span>
- <span id="L1835" rel="#L1835">1835</span>
- <span id="L1836" rel="#L1836">1836</span>
- <span id="L1837" rel="#L1837">1837</span>
- <span id="L1838" rel="#L1838">1838</span>
- <span id="L1839" rel="#L1839">1839</span>
- <span id="L1840" rel="#L1840">1840</span>
- <span id="L1841" rel="#L1841">1841</span>
- <span id="L1842" rel="#L1842">1842</span>
- <span id="L1843" rel="#L1843">1843</span>
- <span id="L1844" rel="#L1844">1844</span>
- <span id="L1845" rel="#L1845">1845</span>
- <span id="L1846" rel="#L1846">1846</span>
- <span id="L1847" rel="#L1847">1847</span>
- <span id="L1848" rel="#L1848">1848</span>
- <span id="L1849" rel="#L1849">1849</span>
- <span id="L1850" rel="#L1850">1850</span>
- <span id="L1851" rel="#L1851">1851</span>
- <span id="L1852" rel="#L1852">1852</span>
- <span id="L1853" rel="#L1853">1853</span>
- <span id="L1854" rel="#L1854">1854</span>
- <span id="L1855" rel="#L1855">1855</span>
- <span id="L1856" rel="#L1856">1856</span>
- <span id="L1857" rel="#L1857">1857</span>
- <span id="L1858" rel="#L1858">1858</span>
- <span id="L1859" rel="#L1859">1859</span>
- <span id="L1860" rel="#L1860">1860</span>
- <span id="L1861" rel="#L1861">1861</span>
- <span id="L1862" rel="#L1862">1862</span>
- <span id="L1863" rel="#L1863">1863</span>
- <span id="L1864" rel="#L1864">1864</span>
- <span id="L1865" rel="#L1865">1865</span>
- <span id="L1866" rel="#L1866">1866</span>
- <span id="L1867" rel="#L1867">1867</span>
- <span id="L1868" rel="#L1868">1868</span>
- <span id="L1869" rel="#L1869">1869</span>
- <span id="L1870" rel="#L1870">1870</span>
- <span id="L1871" rel="#L1871">1871</span>
- <span id="L1872" rel="#L1872">1872</span>
- <span id="L1873" rel="#L1873">1873</span>
- <span id="L1874" rel="#L1874">1874</span>
- <span id="L1875" rel="#L1875">1875</span>
- <span id="L1876" rel="#L1876">1876</span>
- <span id="L1877" rel="#L1877">1877</span>
- <span id="L1878" rel="#L1878">1878</span>
- <span id="L1879" rel="#L1879">1879</span>
- <span id="L1880" rel="#L1880">1880</span>
- <span id="L1881" rel="#L1881">1881</span>
- <span id="L1882" rel="#L1882">1882</span>
- <span id="L1883" rel="#L1883">1883</span>
- <span id="L1884" rel="#L1884">1884</span>
- <span id="L1885" rel="#L1885">1885</span>
- <span id="L1886" rel="#L1886">1886</span>
- <span id="L1887" rel="#L1887">1887</span>
- <span id="L1888" rel="#L1888">1888</span>
- <span id="L1889" rel="#L1889">1889</span>
- <span id="L1890" rel="#L1890">1890</span>
- <span id="L1891" rel="#L1891">1891</span>
- <span id="L1892" rel="#L1892">1892</span>
- <span id="L1893" rel="#L1893">1893</span>
- <span id="L1894" rel="#L1894">1894</span>
- <span id="L1895" rel="#L1895">1895</span>
- <span id="L1896" rel="#L1896">1896</span>
- <span id="L1897" rel="#L1897">1897</span>
- <span id="L1898" rel="#L1898">1898</span>
- <span id="L1899" rel="#L1899">1899</span>
- <span id="L1900" rel="#L1900">1900</span>
- <span id="L1901" rel="#L1901">1901</span>
- <span id="L1902" rel="#L1902">1902</span>
- <span id="L1903" rel="#L1903">1903</span>
- <span id="L1904" rel="#L1904">1904</span>
- <span id="L1905" rel="#L1905">1905</span>
- <span id="L1906" rel="#L1906">1906</span>
- <span id="L1907" rel="#L1907">1907</span>
- <span id="L1908" rel="#L1908">1908</span>
- <span id="L1909" rel="#L1909">1909</span>
- <span id="L1910" rel="#L1910">1910</span>
- <span id="L1911" rel="#L1911">1911</span>
- <span id="L1912" rel="#L1912">1912</span>
- <span id="L1913" rel="#L1913">1913</span>
- <span id="L1914" rel="#L1914">1914</span>
- <span id="L1915" rel="#L1915">1915</span>
- <span id="L1916" rel="#L1916">1916</span>
- <span id="L1917" rel="#L1917">1917</span>
- <span id="L1918" rel="#L1918">1918</span>
- <span id="L1919" rel="#L1919">1919</span>
- <span id="L1920" rel="#L1920">1920</span>
- <span id="L1921" rel="#L1921">1921</span>
- <span id="L1922" rel="#L1922">1922</span>
- <span id="L1923" rel="#L1923">1923</span>
- <span id="L1924" rel="#L1924">1924</span>
- <span id="L1925" rel="#L1925">1925</span>
- <span id="L1926" rel="#L1926">1926</span>
- <span id="L1927" rel="#L1927">1927</span>
- <span id="L1928" rel="#L1928">1928</span>
- <span id="L1929" rel="#L1929">1929</span>
- <span id="L1930" rel="#L1930">1930</span>
- <span id="L1931" rel="#L1931">1931</span>
- <span id="L1932" rel="#L1932">1932</span>
- <span id="L1933" rel="#L1933">1933</span>
- <span id="L1934" rel="#L1934">1934</span>
- <span id="L1935" rel="#L1935">1935</span>
- <span id="L1936" rel="#L1936">1936</span>
- <span id="L1937" rel="#L1937">1937</span>
- <span id="L1938" rel="#L1938">1938</span>
- <span id="L1939" rel="#L1939">1939</span>
- <span id="L1940" rel="#L1940">1940</span>
- <span id="L1941" rel="#L1941">1941</span>
- <span id="L1942" rel="#L1942">1942</span>
- <span id="L1943" rel="#L1943">1943</span>
- <span id="L1944" rel="#L1944">1944</span>
- <span id="L1945" rel="#L1945">1945</span>
- <span id="L1946" rel="#L1946">1946</span>
- <span id="L1947" rel="#L1947">1947</span>
- <span id="L1948" rel="#L1948">1948</span>
- <span id="L1949" rel="#L1949">1949</span>
- <span id="L1950" rel="#L1950">1950</span>
- <span id="L1951" rel="#L1951">1951</span>
- <span id="L1952" rel="#L1952">1952</span>
- <span id="L1953" rel="#L1953">1953</span>
- <span id="L1954" rel="#L1954">1954</span>
- <span id="L1955" rel="#L1955">1955</span>
- <span id="L1956" rel="#L1956">1956</span>
- <span id="L1957" rel="#L1957">1957</span>
- <span id="L1958" rel="#L1958">1958</span>
- <span id="L1959" rel="#L1959">1959</span>
- <span id="L1960" rel="#L1960">1960</span>
- <span id="L1961" rel="#L1961">1961</span>
- <span id="L1962" rel="#L1962">1962</span>
- <span id="L1963" rel="#L1963">1963</span>
- <span id="L1964" rel="#L1964">1964</span>
- <span id="L1965" rel="#L1965">1965</span>
- <span id="L1966" rel="#L1966">1966</span>
- <span id="L1967" rel="#L1967">1967</span>
- <span id="L1968" rel="#L1968">1968</span>
- <span id="L1969" rel="#L1969">1969</span>
- <span id="L1970" rel="#L1970">1970</span>
- <span id="L1971" rel="#L1971">1971</span>
- <span id="L1972" rel="#L1972">1972</span>
- <span id="L1973" rel="#L1973">1973</span>
- <span id="L1974" rel="#L1974">1974</span>
- <span id="L1975" rel="#L1975">1975</span>
- <span id="L1976" rel="#L1976">1976</span>
- <span id="L1977" rel="#L1977">1977</span>
- <span id="L1978" rel="#L1978">1978</span>
- <span id="L1979" rel="#L1979">1979</span>
- <span id="L1980" rel="#L1980">1980</span>
- <span id="L1981" rel="#L1981">1981</span>
- <span id="L1982" rel="#L1982">1982</span>
- <span id="L1983" rel="#L1983">1983</span>
- <span id="L1984" rel="#L1984">1984</span>
- <span id="L1985" rel="#L1985">1985</span>
- <span id="L1986" rel="#L1986">1986</span>
- <span id="L1987" rel="#L1987">1987</span>
- <span id="L1988" rel="#L1988">1988</span>
- <span id="L1989" rel="#L1989">1989</span>
- <span id="L1990" rel="#L1990">1990</span>
- <span id="L1991" rel="#L1991">1991</span>
- <span id="L1992" rel="#L1992">1992</span>
- <span id="L1993" rel="#L1993">1993</span>
- <span id="L1994" rel="#L1994">1994</span>
- <span id="L1995" rel="#L1995">1995</span>
- <span id="L1996" rel="#L1996">1996</span>
- <span id="L1997" rel="#L1997">1997</span>
- <span id="L1998" rel="#L1998">1998</span>
- <span id="L1999" rel="#L1999">1999</span>
- <span id="L2000" rel="#L2000">2000</span>
- <span id="L2001" rel="#L2001">2001</span>
- <span id="L2002" rel="#L2002">2002</span>
- <span id="L2003" rel="#L2003">2003</span>
- <span id="L2004" rel="#L2004">2004</span>
- <span id="L2005" rel="#L2005">2005</span>
- <span id="L2006" rel="#L2006">2006</span>
- <span id="L2007" rel="#L2007">2007</span>
- <span id="L2008" rel="#L2008">2008</span>
- <span id="L2009" rel="#L2009">2009</span>
- <span id="L2010" rel="#L2010">2010</span>
- <span id="L2011" rel="#L2011">2011</span>
- <span id="L2012" rel="#L2012">2012</span>
- <span id="L2013" rel="#L2013">2013</span>
- <span id="L2014" rel="#L2014">2014</span>
- <span id="L2015" rel="#L2015">2015</span>
- <span id="L2016" rel="#L2016">2016</span>
- <span id="L2017" rel="#L2017">2017</span>
- <span id="L2018" rel="#L2018">2018</span>
- <span id="L2019" rel="#L2019">2019</span>
- <span id="L2020" rel="#L2020">2020</span>
- <span id="L2021" rel="#L2021">2021</span>
- <span id="L2022" rel="#L2022">2022</span>
- <span id="L2023" rel="#L2023">2023</span>
- <span id="L2024" rel="#L2024">2024</span>
- <span id="L2025" rel="#L2025">2025</span>
- <span id="L2026" rel="#L2026">2026</span>
- <span id="L2027" rel="#L2027">2027</span>
- <span id="L2028" rel="#L2028">2028</span>
- <span id="L2029" rel="#L2029">2029</span>
- <span id="L2030" rel="#L2030">2030</span>
- <span id="L2031" rel="#L2031">2031</span>
- <span id="L2032" rel="#L2032">2032</span>
- <span id="L2033" rel="#L2033">2033</span>
- <span id="L2034" rel="#L2034">2034</span>
- <span id="L2035" rel="#L2035">2035</span>
- <span id="L2036" rel="#L2036">2036</span>
- <span id="L2037" rel="#L2037">2037</span>
- <span id="L2038" rel="#L2038">2038</span>
- <span id="L2039" rel="#L2039">2039</span>
- <span id="L2040" rel="#L2040">2040</span>
- <span id="L2041" rel="#L2041">2041</span>
- <span id="L2042" rel="#L2042">2042</span>
- <span id="L2043" rel="#L2043">2043</span>
- <span id="L2044" rel="#L2044">2044</span>
- <span id="L2045" rel="#L2045">2045</span>
- <span id="L2046" rel="#L2046">2046</span>
- <span id="L2047" rel="#L2047">2047</span>
- <span id="L2048" rel="#L2048">2048</span>
- <span id="L2049" rel="#L2049">2049</span>
- <span id="L2050" rel="#L2050">2050</span>
- <span id="L2051" rel="#L2051">2051</span>
- <span id="L2052" rel="#L2052">2052</span>
- <span id="L2053" rel="#L2053">2053</span>
- <span id="L2054" rel="#L2054">2054</span>
- <span id="L2055" rel="#L2055">2055</span>
- <span id="L2056" rel="#L2056">2056</span>
- <span id="L2057" rel="#L2057">2057</span>
- <span id="L2058" rel="#L2058">2058</span>
- <span id="L2059" rel="#L2059">2059</span>
- <span id="L2060" rel="#L2060">2060</span>
- <span id="L2061" rel="#L2061">2061</span>
- <span id="L2062" rel="#L2062">2062</span>
- <span id="L2063" rel="#L2063">2063</span>
- <span id="L2064" rel="#L2064">2064</span>
- <span id="L2065" rel="#L2065">2065</span>
- <span id="L2066" rel="#L2066">2066</span>
- <span id="L2067" rel="#L2067">2067</span>
- <span id="L2068" rel="#L2068">2068</span>
- <span id="L2069" rel="#L2069">2069</span>
- <span id="L2070" rel="#L2070">2070</span>
- <span id="L2071" rel="#L2071">2071</span>
- <span id="L2072" rel="#L2072">2072</span>
- <span id="L2073" rel="#L2073">2073</span>
- <span id="L2074" rel="#L2074">2074</span>
- <span id="L2075" rel="#L2075">2075</span>
- <span id="L2076" rel="#L2076">2076</span>
- <span id="L2077" rel="#L2077">2077</span>
- <span id="L2078" rel="#L2078">2078</span>
- <span id="L2079" rel="#L2079">2079</span>
- <span id="L2080" rel="#L2080">2080</span>
- <span id="L2081" rel="#L2081">2081</span>
- <span id="L2082" rel="#L2082">2082</span>
- <span id="L2083" rel="#L2083">2083</span>
- <span id="L2084" rel="#L2084">2084</span>
- <span id="L2085" rel="#L2085">2085</span>
- <span id="L2086" rel="#L2086">2086</span>
- <span id="L2087" rel="#L2087">2087</span>
- <span id="L2088" rel="#L2088">2088</span>
- <span id="L2089" rel="#L2089">2089</span>
- <span id="L2090" rel="#L2090">2090</span>
- <span id="L2091" rel="#L2091">2091</span>
- <span id="L2092" rel="#L2092">2092</span>
- <span id="L2093" rel="#L2093">2093</span>
- <span id="L2094" rel="#L2094">2094</span>
- <span id="L2095" rel="#L2095">2095</span>
- <span id="L2096" rel="#L2096">2096</span>
- <span id="L2097" rel="#L2097">2097</span>
- <span id="L2098" rel="#L2098">2098</span>
- <span id="L2099" rel="#L2099">2099</span>
- <span id="L2100" rel="#L2100">2100</span>
- <span id="L2101" rel="#L2101">2101</span>
- <span id="L2102" rel="#L2102">2102</span>
- <span id="L2103" rel="#L2103">2103</span>
- <span id="L2104" rel="#L2104">2104</span>
- <span id="L2105" rel="#L2105">2105</span>
- <span id="L2106" rel="#L2106">2106</span>
- <span id="L2107" rel="#L2107">2107</span>
- <span id="L2108" rel="#L2108">2108</span>
- <span id="L2109" rel="#L2109">2109</span>
- <span id="L2110" rel="#L2110">2110</span>
- <span id="L2111" rel="#L2111">2111</span>
- <span id="L2112" rel="#L2112">2112</span>
- <span id="L2113" rel="#L2113">2113</span>
- <span id="L2114" rel="#L2114">2114</span>
- <span id="L2115" rel="#L2115">2115</span>
- <span id="L2116" rel="#L2116">2116</span>
- <span id="L2117" rel="#L2117">2117</span>
- <span id="L2118" rel="#L2118">2118</span>
- <span id="L2119" rel="#L2119">2119</span>
- <span id="L2120" rel="#L2120">2120</span>
- <span id="L2121" rel="#L2121">2121</span>
- <span id="L2122" rel="#L2122">2122</span>
- <span id="L2123" rel="#L2123">2123</span>
- <span id="L2124" rel="#L2124">2124</span>
- <span id="L2125" rel="#L2125">2125</span>
- <span id="L2126" rel="#L2126">2126</span>
- <span id="L2127" rel="#L2127">2127</span>
- <span id="L2128" rel="#L2128">2128</span>
- <span id="L2129" rel="#L2129">2129</span>
- <span id="L2130" rel="#L2130">2130</span>
- <span id="L2131" rel="#L2131">2131</span>
- <span id="L2132" rel="#L2132">2132</span>
- <span id="L2133" rel="#L2133">2133</span>
- <span id="L2134" rel="#L2134">2134</span>
- <span id="L2135" rel="#L2135">2135</span>
- <span id="L2136" rel="#L2136">2136</span>
- <span id="L2137" rel="#L2137">2137</span>
- <span id="L2138" rel="#L2138">2138</span>
- <span id="L2139" rel="#L2139">2139</span>
- <span id="L2140" rel="#L2140">2140</span>
- <span id="L2141" rel="#L2141">2141</span>
- <span id="L2142" rel="#L2142">2142</span>
- <span id="L2143" rel="#L2143">2143</span>
- <span id="L2144" rel="#L2144">2144</span>
- <span id="L2145" rel="#L2145">2145</span>
- <span id="L2146" rel="#L2146">2146</span>
- <span id="L2147" rel="#L2147">2147</span>
- <span id="L2148" rel="#L2148">2148</span>
- <span id="L2149" rel="#L2149">2149</span>
- <span id="L2150" rel="#L2150">2150</span>
- <span id="L2151" rel="#L2151">2151</span>
- <span id="L2152" rel="#L2152">2152</span>
- <span id="L2153" rel="#L2153">2153</span>
- <span id="L2154" rel="#L2154">2154</span>
- <span id="L2155" rel="#L2155">2155</span>
- <span id="L2156" rel="#L2156">2156</span>
- <span id="L2157" rel="#L2157">2157</span>
- <span id="L2158" rel="#L2158">2158</span>
- <span id="L2159" rel="#L2159">2159</span>
- <span id="L2160" rel="#L2160">2160</span>
- <span id="L2161" rel="#L2161">2161</span>
- <span id="L2162" rel="#L2162">2162</span>
- <span id="L2163" rel="#L2163">2163</span>
- <span id="L2164" rel="#L2164">2164</span>
- <span id="L2165" rel="#L2165">2165</span>
- <span id="L2166" rel="#L2166">2166</span>
- <span id="L2167" rel="#L2167">2167</span>
- <span id="L2168" rel="#L2168">2168</span>
- <span id="L2169" rel="#L2169">2169</span>
- <span id="L2170" rel="#L2170">2170</span>
- <span id="L2171" rel="#L2171">2171</span>
- <span id="L2172" rel="#L2172">2172</span>
- <span id="L2173" rel="#L2173">2173</span>
- <span id="L2174" rel="#L2174">2174</span>
- <span id="L2175" rel="#L2175">2175</span>
- <span id="L2176" rel="#L2176">2176</span>
- <span id="L2177" rel="#L2177">2177</span>
- <span id="L2178" rel="#L2178">2178</span>
- <span id="L2179" rel="#L2179">2179</span>
- <span id="L2180" rel="#L2180">2180</span>
- <span id="L2181" rel="#L2181">2181</span>
- <span id="L2182" rel="#L2182">2182</span>
- <span id="L2183" rel="#L2183">2183</span>
- <span id="L2184" rel="#L2184">2184</span>
- <span id="L2185" rel="#L2185">2185</span>
- <span id="L2186" rel="#L2186">2186</span>
- <span id="L2187" rel="#L2187">2187</span>
- <span id="L2188" rel="#L2188">2188</span>
- <span id="L2189" rel="#L2189">2189</span>
- <span id="L2190" rel="#L2190">2190</span>
- <span id="L2191" rel="#L2191">2191</span>
- <span id="L2192" rel="#L2192">2192</span>
- <span id="L2193" rel="#L2193">2193</span>
- <span id="L2194" rel="#L2194">2194</span>
- <span id="L2195" rel="#L2195">2195</span>
- <span id="L2196" rel="#L2196">2196</span>
- <span id="L2197" rel="#L2197">2197</span>
- <span id="L2198" rel="#L2198">2198</span>
- <span id="L2199" rel="#L2199">2199</span>
- <span id="L2200" rel="#L2200">2200</span>
- <span id="L2201" rel="#L2201">2201</span>
- <span id="L2202" rel="#L2202">2202</span>
- <span id="L2203" rel="#L2203">2203</span>
- <span id="L2204" rel="#L2204">2204</span>
- <span id="L2205" rel="#L2205">2205</span>
- <span id="L2206" rel="#L2206">2206</span>
- <span id="L2207" rel="#L2207">2207</span>
- <span id="L2208" rel="#L2208">2208</span>
- <span id="L2209" rel="#L2209">2209</span>
- <span id="L2210" rel="#L2210">2210</span>
- <span id="L2211" rel="#L2211">2211</span>
- <span id="L2212" rel="#L2212">2212</span>
- <span id="L2213" rel="#L2213">2213</span>
- <span id="L2214" rel="#L2214">2214</span>
- <span id="L2215" rel="#L2215">2215</span>
- <span id="L2216" rel="#L2216">2216</span>
- <span id="L2217" rel="#L2217">2217</span>
- <span id="L2218" rel="#L2218">2218</span>
- <span id="L2219" rel="#L2219">2219</span>
- <span id="L2220" rel="#L2220">2220</span>
- <span id="L2221" rel="#L2221">2221</span>
- <span id="L2222" rel="#L2222">2222</span>
- <span id="L2223" rel="#L2223">2223</span>
- <span id="L2224" rel="#L2224">2224</span>
- <span id="L2225" rel="#L2225">2225</span>
- <span id="L2226" rel="#L2226">2226</span>
- <span id="L2227" rel="#L2227">2227</span>
- <span id="L2228" rel="#L2228">2228</span>
- <span id="L2229" rel="#L2229">2229</span>
- <span id="L2230" rel="#L2230">2230</span>
- <span id="L2231" rel="#L2231">2231</span>
- <span id="L2232" rel="#L2232">2232</span>
- <span id="L2233" rel="#L2233">2233</span>
- <span id="L2234" rel="#L2234">2234</span>
- <span id="L2235" rel="#L2235">2235</span>
- <span id="L2236" rel="#L2236">2236</span>
- <span id="L2237" rel="#L2237">2237</span>
- <span id="L2238" rel="#L2238">2238</span>
- <span id="L2239" rel="#L2239">2239</span>
- <span id="L2240" rel="#L2240">2240</span>
- <span id="L2241" rel="#L2241">2241</span>
- <span id="L2242" rel="#L2242">2242</span>
- <span id="L2243" rel="#L2243">2243</span>
- <span id="L2244" rel="#L2244">2244</span>
- <span id="L2245" rel="#L2245">2245</span>
- <span id="L2246" rel="#L2246">2246</span>
- <span id="L2247" rel="#L2247">2247</span>
- <span id="L2248" rel="#L2248">2248</span>
- <span id="L2249" rel="#L2249">2249</span>
- <span id="L2250" rel="#L2250">2250</span>
- <span id="L2251" rel="#L2251">2251</span>
- <span id="L2252" rel="#L2252">2252</span>
- <span id="L2253" rel="#L2253">2253</span>
- <span id="L2254" rel="#L2254">2254</span>
- <span id="L2255" rel="#L2255">2255</span>
- <span id="L2256" rel="#L2256">2256</span>
- <span id="L2257" rel="#L2257">2257</span>
- <span id="L2258" rel="#L2258">2258</span>
- <span id="L2259" rel="#L2259">2259</span>
- <span id="L2260" rel="#L2260">2260</span>
- <span id="L2261" rel="#L2261">2261</span>
- <span id="L2262" rel="#L2262">2262</span>
- <span id="L2263" rel="#L2263">2263</span>
- <span id="L2264" rel="#L2264">2264</span>
- <span id="L2265" rel="#L2265">2265</span>
- <span id="L2266" rel="#L2266">2266</span>
- <span id="L2267" rel="#L2267">2267</span>
- <span id="L2268" rel="#L2268">2268</span>
- <span id="L2269" rel="#L2269">2269</span>
- <span id="L2270" rel="#L2270">2270</span>
- <span id="L2271" rel="#L2271">2271</span>
- <span id="L2272" rel="#L2272">2272</span>
- <span id="L2273" rel="#L2273">2273</span>
- <span id="L2274" rel="#L2274">2274</span>
- <span id="L2275" rel="#L2275">2275</span>
- <span id="L2276" rel="#L2276">2276</span>
- <span id="L2277" rel="#L2277">2277</span>
- <span id="L2278" rel="#L2278">2278</span>
- <span id="L2279" rel="#L2279">2279</span>
- <span id="L2280" rel="#L2280">2280</span>
- <span id="L2281" rel="#L2281">2281</span>
- <span id="L2282" rel="#L2282">2282</span>
- <span id="L2283" rel="#L2283">2283</span>
- <span id="L2284" rel="#L2284">2284</span>
- <span id="L2285" rel="#L2285">2285</span>
- <span id="L2286" rel="#L2286">2286</span>
- <span id="L2287" rel="#L2287">2287</span>
- <span id="L2288" rel="#L2288">2288</span>
- <span id="L2289" rel="#L2289">2289</span>
- <span id="L2290" rel="#L2290">2290</span>
- <span id="L2291" rel="#L2291">2291</span>
- <span id="L2292" rel="#L2292">2292</span>
- <span id="L2293" rel="#L2293">2293</span>
- <span id="L2294" rel="#L2294">2294</span>
- <span id="L2295" rel="#L2295">2295</span>
- <span id="L2296" rel="#L2296">2296</span>
- <span id="L2297" rel="#L2297">2297</span>
- <span id="L2298" rel="#L2298">2298</span>
- <span id="L2299" rel="#L2299">2299</span>
- <span id="L2300" rel="#L2300">2300</span>
- <span id="L2301" rel="#L2301">2301</span>
- <span id="L2302" rel="#L2302">2302</span>
- <span id="L2303" rel="#L2303">2303</span>
- <span id="L2304" rel="#L2304">2304</span>
- <span id="L2305" rel="#L2305">2305</span>
- <span id="L2306" rel="#L2306">2306</span>
- <span id="L2307" rel="#L2307">2307</span>
- <span id="L2308" rel="#L2308">2308</span>
- <span id="L2309" rel="#L2309">2309</span>
- <span id="L2310" rel="#L2310">2310</span>
- <span id="L2311" rel="#L2311">2311</span>
- <span id="L2312" rel="#L2312">2312</span>
- <span id="L2313" rel="#L2313">2313</span>
- <span id="L2314" rel="#L2314">2314</span>
- <span id="L2315" rel="#L2315">2315</span>
- <span id="L2316" rel="#L2316">2316</span>
- <span id="L2317" rel="#L2317">2317</span>
- <span id="L2318" rel="#L2318">2318</span>
- <span id="L2319" rel="#L2319">2319</span>
- <span id="L2320" rel="#L2320">2320</span>
- <span id="L2321" rel="#L2321">2321</span>
- <span id="L2322" rel="#L2322">2322</span>
- <span id="L2323" rel="#L2323">2323</span>
- <span id="L2324" rel="#L2324">2324</span>
- <span id="L2325" rel="#L2325">2325</span>
- <span id="L2326" rel="#L2326">2326</span>
- <span id="L2327" rel="#L2327">2327</span>
- <span id="L2328" rel="#L2328">2328</span>
- <span id="L2329" rel="#L2329">2329</span>
- <span id="L2330" rel="#L2330">2330</span>
- <span id="L2331" rel="#L2331">2331</span>
- <span id="L2332" rel="#L2332">2332</span>
- <span id="L2333" rel="#L2333">2333</span>
- <span id="L2334" rel="#L2334">2334</span>
- <span id="L2335" rel="#L2335">2335</span>
- <span id="L2336" rel="#L2336">2336</span>
- <span id="L2337" rel="#L2337">2337</span>
- <span id="L2338" rel="#L2338">2338</span>
- <span id="L2339" rel="#L2339">2339</span>
- <span id="L2340" rel="#L2340">2340</span>
- <span id="L2341" rel="#L2341">2341</span>
- <span id="L2342" rel="#L2342">2342</span>
- <span id="L2343" rel="#L2343">2343</span>
- <span id="L2344" rel="#L2344">2344</span>
- <span id="L2345" rel="#L2345">2345</span>
- <span id="L2346" rel="#L2346">2346</span>
- <span id="L2347" rel="#L2347">2347</span>
- <span id="L2348" rel="#L2348">2348</span>
- <span id="L2349" rel="#L2349">2349</span>
- <span id="L2350" rel="#L2350">2350</span>
- <span id="L2351" rel="#L2351">2351</span>
- <span id="L2352" rel="#L2352">2352</span>
- <span id="L2353" rel="#L2353">2353</span>
- <span id="L2354" rel="#L2354">2354</span>
- <span id="L2355" rel="#L2355">2355</span>
- <span id="L2356" rel="#L2356">2356</span>
- <span id="L2357" rel="#L2357">2357</span>
- <span id="L2358" rel="#L2358">2358</span>
- <span id="L2359" rel="#L2359">2359</span>
- <span id="L2360" rel="#L2360">2360</span>
- <span id="L2361" rel="#L2361">2361</span>
- <span id="L2362" rel="#L2362">2362</span>
- <span id="L2363" rel="#L2363">2363</span>
- <span id="L2364" rel="#L2364">2364</span>
- <span id="L2365" rel="#L2365">2365</span>
- <span id="L2366" rel="#L2366">2366</span>
- <span id="L2367" rel="#L2367">2367</span>
- <span id="L2368" rel="#L2368">2368</span>
- <span id="L2369" rel="#L2369">2369</span>
- <span id="L2370" rel="#L2370">2370</span>
- <span id="L2371" rel="#L2371">2371</span>
- <span id="L2372" rel="#L2372">2372</span>
- <span id="L2373" rel="#L2373">2373</span>
- <span id="L2374" rel="#L2374">2374</span>
- <span id="L2375" rel="#L2375">2375</span>
- <span id="L2376" rel="#L2376">2376</span>
- <span id="L2377" rel="#L2377">2377</span>
- <span id="L2378" rel="#L2378">2378</span>
- <span id="L2379" rel="#L2379">2379</span>
- <span id="L2380" rel="#L2380">2380</span>
- <span id="L2381" rel="#L2381">2381</span>
- <span id="L2382" rel="#L2382">2382</span>
- <span id="L2383" rel="#L2383">2383</span>
- <span id="L2384" rel="#L2384">2384</span>
- <span id="L2385" rel="#L2385">2385</span>
- <span id="L2386" rel="#L2386">2386</span>
- <span id="L2387" rel="#L2387">2387</span>
- <span id="L2388" rel="#L2388">2388</span>
- <span id="L2389" rel="#L2389">2389</span>
- <span id="L2390" rel="#L2390">2390</span>
- <span id="L2391" rel="#L2391">2391</span>
- <span id="L2392" rel="#L2392">2392</span>
- <span id="L2393" rel="#L2393">2393</span>
- <span id="L2394" rel="#L2394">2394</span>
- <span id="L2395" rel="#L2395">2395</span>
- <span id="L2396" rel="#L2396">2396</span>
- <span id="L2397" rel="#L2397">2397</span>
- <span id="L2398" rel="#L2398">2398</span>
- <span id="L2399" rel="#L2399">2399</span>
- <span id="L2400" rel="#L2400">2400</span>
- <span id="L2401" rel="#L2401">2401</span>
- <span id="L2402" rel="#L2402">2402</span>
- <span id="L2403" rel="#L2403">2403</span>
- <span id="L2404" rel="#L2404">2404</span>
- <span id="L2405" rel="#L2405">2405</span>
- <span id="L2406" rel="#L2406">2406</span>
- <span id="L2407" rel="#L2407">2407</span>
- <span id="L2408" rel="#L2408">2408</span>
- <span id="L2409" rel="#L2409">2409</span>
- <span id="L2410" rel="#L2410">2410</span>
- <span id="L2411" rel="#L2411">2411</span>
- <span id="L2412" rel="#L2412">2412</span>
- <span id="L2413" rel="#L2413">2413</span>
- <span id="L2414" rel="#L2414">2414</span>
- <span id="L2415" rel="#L2415">2415</span>
- <span id="L2416" rel="#L2416">2416</span>
- <span id="L2417" rel="#L2417">2417</span>
- <span id="L2418" rel="#L2418">2418</span>
- <span id="L2419" rel="#L2419">2419</span>
- <span id="L2420" rel="#L2420">2420</span>
- <span id="L2421" rel="#L2421">2421</span>
- <span id="L2422" rel="#L2422">2422</span>
- <span id="L2423" rel="#L2423">2423</span>
- <span id="L2424" rel="#L2424">2424</span>
- <span id="L2425" rel="#L2425">2425</span>
- <span id="L2426" rel="#L2426">2426</span>
- <span id="L2427" rel="#L2427">2427</span>
- <span id="L2428" rel="#L2428">2428</span>
- <span id="L2429" rel="#L2429">2429</span>
- <span id="L2430" rel="#L2430">2430</span>
- <span id="L2431" rel="#L2431">2431</span>
- <span id="L2432" rel="#L2432">2432</span>
- <span id="L2433" rel="#L2433">2433</span>
- <span id="L2434" rel="#L2434">2434</span>
- <span id="L2435" rel="#L2435">2435</span>
- <span id="L2436" rel="#L2436">2436</span>
- <span id="L2437" rel="#L2437">2437</span>
- <span id="L2438" rel="#L2438">2438</span>
- <span id="L2439" rel="#L2439">2439</span>
- <span id="L2440" rel="#L2440">2440</span>
- <span id="L2441" rel="#L2441">2441</span>
- <span id="L2442" rel="#L2442">2442</span>
- <span id="L2443" rel="#L2443">2443</span>
- <span id="L2444" rel="#L2444">2444</span>
- <span id="L2445" rel="#L2445">2445</span>
- <span id="L2446" rel="#L2446">2446</span>
- <span id="L2447" rel="#L2447">2447</span>
- <span id="L2448" rel="#L2448">2448</span>
- <span id="L2449" rel="#L2449">2449</span>
- <span id="L2450" rel="#L2450">2450</span>
- <span id="L2451" rel="#L2451">2451</span>
- <span id="L2452" rel="#L2452">2452</span>
- <span id="L2453" rel="#L2453">2453</span>
- <span id="L2454" rel="#L2454">2454</span>
- <span id="L2455" rel="#L2455">2455</span>
- <span id="L2456" rel="#L2456">2456</span>
- <span id="L2457" rel="#L2457">2457</span>
- <span id="L2458" rel="#L2458">2458</span>
- <span id="L2459" rel="#L2459">2459</span>
- <span id="L2460" rel="#L2460">2460</span>
- <span id="L2461" rel="#L2461">2461</span>
- <span id="L2462" rel="#L2462">2462</span>
- <span id="L2463" rel="#L2463">2463</span>
- <span id="L2464" rel="#L2464">2464</span>
- <span id="L2465" rel="#L2465">2465</span>
- <span id="L2466" rel="#L2466">2466</span>
- <span id="L2467" rel="#L2467">2467</span>
- <span id="L2468" rel="#L2468">2468</span>
- <span id="L2469" rel="#L2469">2469</span>
- <span id="L2470" rel="#L2470">2470</span>
- <span id="L2471" rel="#L2471">2471</span>
- <span id="L2472" rel="#L2472">2472</span>
- <span id="L2473" rel="#L2473">2473</span>
- <span id="L2474" rel="#L2474">2474</span>
- <span id="L2475" rel="#L2475">2475</span>
- <span id="L2476" rel="#L2476">2476</span>
- <span id="L2477" rel="#L2477">2477</span>
- <span id="L2478" rel="#L2478">2478</span>
- <span id="L2479" rel="#L2479">2479</span>
- <span id="L2480" rel="#L2480">2480</span>
- <span id="L2481" rel="#L2481">2481</span>
- <span id="L2482" rel="#L2482">2482</span>
- <span id="L2483" rel="#L2483">2483</span>
- <span id="L2484" rel="#L2484">2484</span>
- <span id="L2485" rel="#L2485">2485</span>
- <span id="L2486" rel="#L2486">2486</span>
- <span id="L2487" rel="#L2487">2487</span>
- <span id="L2488" rel="#L2488">2488</span>
- <span id="L2489" rel="#L2489">2489</span>
- <span id="L2490" rel="#L2490">2490</span>
- <span id="L2491" rel="#L2491">2491</span>
- <span id="L2492" rel="#L2492">2492</span>
- <span id="L2493" rel="#L2493">2493</span>
- <span id="L2494" rel="#L2494">2494</span>
- <span id="L2495" rel="#L2495">2495</span>
- <span id="L2496" rel="#L2496">2496</span>
- <span id="L2497" rel="#L2497">2497</span>
- <span id="L2498" rel="#L2498">2498</span>
- <span id="L2499" rel="#L2499">2499</span>
- <span id="L2500" rel="#L2500">2500</span>
- <span id="L2501" rel="#L2501">2501</span>
- <span id="L2502" rel="#L2502">2502</span>
- <span id="L2503" rel="#L2503">2503</span>
- <span id="L2504" rel="#L2504">2504</span>
- <span id="L2505" rel="#L2505">2505</span>
- <span id="L2506" rel="#L2506">2506</span>
- <span id="L2507" rel="#L2507">2507</span>
- <span id="L2508" rel="#L2508">2508</span>
- <span id="L2509" rel="#L2509">2509</span>
- <span id="L2510" rel="#L2510">2510</span>
- <span id="L2511" rel="#L2511">2511</span>
- <span id="L2512" rel="#L2512">2512</span>
- <span id="L2513" rel="#L2513">2513</span>
- <span id="L2514" rel="#L2514">2514</span>
- <span id="L2515" rel="#L2515">2515</span>
- <span id="L2516" rel="#L2516">2516</span>
- <span id="L2517" rel="#L2517">2517</span>
- <span id="L2518" rel="#L2518">2518</span>
- <span id="L2519" rel="#L2519">2519</span>
- <span id="L2520" rel="#L2520">2520</span>
- <span id="L2521" rel="#L2521">2521</span>
- <span id="L2522" rel="#L2522">2522</span>
- <span id="L2523" rel="#L2523">2523</span>
- <span id="L2524" rel="#L2524">2524</span>
- <span id="L2525" rel="#L2525">2525</span>
- <span id="L2526" rel="#L2526">2526</span>
- <span id="L2527" rel="#L2527">2527</span>
- <span id="L2528" rel="#L2528">2528</span>
- <span id="L2529" rel="#L2529">2529</span>
- <span id="L2530" rel="#L2530">2530</span>
- <span id="L2531" rel="#L2531">2531</span>
- <span id="L2532" rel="#L2532">2532</span>
- <span id="L2533" rel="#L2533">2533</span>
- <span id="L2534" rel="#L2534">2534</span>
- <span id="L2535" rel="#L2535">2535</span>
- <span id="L2536" rel="#L2536">2536</span>
- <span id="L2537" rel="#L2537">2537</span>
- <span id="L2538" rel="#L2538">2538</span>
- <span id="L2539" rel="#L2539">2539</span>
- <span id="L2540" rel="#L2540">2540</span>
- <span id="L2541" rel="#L2541">2541</span>
- <span id="L2542" rel="#L2542">2542</span>
- <span id="L2543" rel="#L2543">2543</span>
- <span id="L2544" rel="#L2544">2544</span>
- <span id="L2545" rel="#L2545">2545</span>
- <span id="L2546" rel="#L2546">2546</span>
- <span id="L2547" rel="#L2547">2547</span>
- <span id="L2548" rel="#L2548">2548</span>
- <span id="L2549" rel="#L2549">2549</span>
- <span id="L2550" rel="#L2550">2550</span>
- <span id="L2551" rel="#L2551">2551</span>
- <span id="L2552" rel="#L2552">2552</span>
- <span id="L2553" rel="#L2553">2553</span>
- <span id="L2554" rel="#L2554">2554</span>
- <span id="L2555" rel="#L2555">2555</span>
- <span id="L2556" rel="#L2556">2556</span>
- <span id="L2557" rel="#L2557">2557</span>
- <span id="L2558" rel="#L2558">2558</span>
- <span id="L2559" rel="#L2559">2559</span>
- <span id="L2560" rel="#L2560">2560</span>
- <span id="L2561" rel="#L2561">2561</span>
- <span id="L2562" rel="#L2562">2562</span>
- <span id="L2563" rel="#L2563">2563</span>
- <span id="L2564" rel="#L2564">2564</span>
- <span id="L2565" rel="#L2565">2565</span>
- <span id="L2566" rel="#L2566">2566</span>
- <span id="L2567" rel="#L2567">2567</span>
- <span id="L2568" rel="#L2568">2568</span>
- <span id="L2569" rel="#L2569">2569</span>
- <span id="L2570" rel="#L2570">2570</span>
- <span id="L2571" rel="#L2571">2571</span>
- <span id="L2572" rel="#L2572">2572</span>
- <span id="L2573" rel="#L2573">2573</span>
- <span id="L2574" rel="#L2574">2574</span>
- <span id="L2575" rel="#L2575">2575</span>
- <span id="L2576" rel="#L2576">2576</span>
- <span id="L2577" rel="#L2577">2577</span>
- <span id="L2578" rel="#L2578">2578</span>
- <span id="L2579" rel="#L2579">2579</span>
- <span id="L2580" rel="#L2580">2580</span>
- <span id="L2581" rel="#L2581">2581</span>
- <span id="L2582" rel="#L2582">2582</span>
- <span id="L2583" rel="#L2583">2583</span>
- <span id="L2584" rel="#L2584">2584</span>
- <span id="L2585" rel="#L2585">2585</span>
- <span id="L2586" rel="#L2586">2586</span>
- <span id="L2587" rel="#L2587">2587</span>
- <span id="L2588" rel="#L2588">2588</span>
- <span id="L2589" rel="#L2589">2589</span>
- <span id="L2590" rel="#L2590">2590</span>
- <span id="L2591" rel="#L2591">2591</span>
- <span id="L2592" rel="#L2592">2592</span>
- <span id="L2593" rel="#L2593">2593</span>
- <span id="L2594" rel="#L2594">2594</span>
- <span id="L2595" rel="#L2595">2595</span>
- <span id="L2596" rel="#L2596">2596</span>
- <span id="L2597" rel="#L2597">2597</span>
- <span id="L2598" rel="#L2598">2598</span>
- <span id="L2599" rel="#L2599">2599</span>
- <span id="L2600" rel="#L2600">2600</span>
- <span id="L2601" rel="#L2601">2601</span>
- <span id="L2602" rel="#L2602">2602</span>
- <span id="L2603" rel="#L2603">2603</span>
- <span id="L2604" rel="#L2604">2604</span>
- <span id="L2605" rel="#L2605">2605</span>
- <span id="L2606" rel="#L2606">2606</span>
- <span id="L2607" rel="#L2607">2607</span>
- <span id="L2608" rel="#L2608">2608</span>
- <span id="L2609" rel="#L2609">2609</span>
- <span id="L2610" rel="#L2610">2610</span>
- <span id="L2611" rel="#L2611">2611</span>
- <span id="L2612" rel="#L2612">2612</span>
- <span id="L2613" rel="#L2613">2613</span>
- <span id="L2614" rel="#L2614">2614</span>
- <span id="L2615" rel="#L2615">2615</span>
- <span id="L2616" rel="#L2616">2616</span>
- <span id="L2617" rel="#L2617">2617</span>
- <span id="L2618" rel="#L2618">2618</span>
- <span id="L2619" rel="#L2619">2619</span>
- <span id="L2620" rel="#L2620">2620</span>
- <span id="L2621" rel="#L2621">2621</span>
- <span id="L2622" rel="#L2622">2622</span>
- <span id="L2623" rel="#L2623">2623</span>
- <span id="L2624" rel="#L2624">2624</span>
- <span id="L2625" rel="#L2625">2625</span>
- <span id="L2626" rel="#L2626">2626</span>
- <span id="L2627" rel="#L2627">2627</span>
- <span id="L2628" rel="#L2628">2628</span>
- <span id="L2629" rel="#L2629">2629</span>
- <span id="L2630" rel="#L2630">2630</span>
- <span id="L2631" rel="#L2631">2631</span>
- <span id="L2632" rel="#L2632">2632</span>
- <span id="L2633" rel="#L2633">2633</span>
- <span id="L2634" rel="#L2634">2634</span>
- <span id="L2635" rel="#L2635">2635</span>
- <span id="L2636" rel="#L2636">2636</span>
- <span id="L2637" rel="#L2637">2637</span>
- <span id="L2638" rel="#L2638">2638</span>
- <span id="L2639" rel="#L2639">2639</span>
- <span id="L2640" rel="#L2640">2640</span>
- <span id="L2641" rel="#L2641">2641</span>
- <span id="L2642" rel="#L2642">2642</span>
- <span id="L2643" rel="#L2643">2643</span>
- <span id="L2644" rel="#L2644">2644</span>
- <span id="L2645" rel="#L2645">2645</span>
- <span id="L2646" rel="#L2646">2646</span>
- <span id="L2647" rel="#L2647">2647</span>
- <span id="L2648" rel="#L2648">2648</span>
- <span id="L2649" rel="#L2649">2649</span>
- <span id="L2650" rel="#L2650">2650</span>
- <span id="L2651" rel="#L2651">2651</span>
- <span id="L2652" rel="#L2652">2652</span>
- <span id="L2653" rel="#L2653">2653</span>
- <span id="L2654" rel="#L2654">2654</span>
- <span id="L2655" rel="#L2655">2655</span>
- <span id="L2656" rel="#L2656">2656</span>
- <span id="L2657" rel="#L2657">2657</span>
- <span id="L2658" rel="#L2658">2658</span>
- <span id="L2659" rel="#L2659">2659</span>
- <span id="L2660" rel="#L2660">2660</span>
- <span id="L2661" rel="#L2661">2661</span>
- <span id="L2662" rel="#L2662">2662</span>
- <span id="L2663" rel="#L2663">2663</span>
- <span id="L2664" rel="#L2664">2664</span>
- <span id="L2665" rel="#L2665">2665</span>
- <span id="L2666" rel="#L2666">2666</span>
- <span id="L2667" rel="#L2667">2667</span>
- <span id="L2668" rel="#L2668">2668</span>
- <span id="L2669" rel="#L2669">2669</span>
- <span id="L2670" rel="#L2670">2670</span>
- <span id="L2671" rel="#L2671">2671</span>
- <span id="L2672" rel="#L2672">2672</span>
- <span id="L2673" rel="#L2673">2673</span>
- <span id="L2674" rel="#L2674">2674</span>
- <span id="L2675" rel="#L2675">2675</span>
- <span id="L2676" rel="#L2676">2676</span>
- <span id="L2677" rel="#L2677">2677</span>
- <span id="L2678" rel="#L2678">2678</span>
- <span id="L2679" rel="#L2679">2679</span>
- <span id="L2680" rel="#L2680">2680</span>
- <span id="L2681" rel="#L2681">2681</span>
- <span id="L2682" rel="#L2682">2682</span>
- <span id="L2683" rel="#L2683">2683</span>
- <span id="L2684" rel="#L2684">2684</span>
- <span id="L2685" rel="#L2685">2685</span>
- <span id="L2686" rel="#L2686">2686</span>
- <span id="L2687" rel="#L2687">2687</span>
- <span id="L2688" rel="#L2688">2688</span>
- <span id="L2689" rel="#L2689">2689</span>
- <span id="L2690" rel="#L2690">2690</span>
- <span id="L2691" rel="#L2691">2691</span>
- <span id="L2692" rel="#L2692">2692</span>
- <span id="L2693" rel="#L2693">2693</span>
- <span id="L2694" rel="#L2694">2694</span>
- <span id="L2695" rel="#L2695">2695</span>
- <span id="L2696" rel="#L2696">2696</span>
- <span id="L2697" rel="#L2697">2697</span>
- <span id="L2698" rel="#L2698">2698</span>
- <span id="L2699" rel="#L2699">2699</span>
- <span id="L2700" rel="#L2700">2700</span>
- <span id="L2701" rel="#L2701">2701</span>
- <span id="L2702" rel="#L2702">2702</span>
- <span id="L2703" rel="#L2703">2703</span>
- <span id="L2704" rel="#L2704">2704</span>
- <span id="L2705" rel="#L2705">2705</span>
- <span id="L2706" rel="#L2706">2706</span>
- <span id="L2707" rel="#L2707">2707</span>
- <span id="L2708" rel="#L2708">2708</span>
- <span id="L2709" rel="#L2709">2709</span>
- <span id="L2710" rel="#L2710">2710</span>
- <span id="L2711" rel="#L2711">2711</span>
- <span id="L2712" rel="#L2712">2712</span>
- <span id="L2713" rel="#L2713">2713</span>
- <span id="L2714" rel="#L2714">2714</span>
- <span id="L2715" rel="#L2715">2715</span>
- <span id="L2716" rel="#L2716">2716</span>
- <span id="L2717" rel="#L2717">2717</span>
- <span id="L2718" rel="#L2718">2718</span>
- <span id="L2719" rel="#L2719">2719</span>
- <span id="L2720" rel="#L2720">2720</span>
- <span id="L2721" rel="#L2721">2721</span>
- <span id="L2722" rel="#L2722">2722</span>
- <span id="L2723" rel="#L2723">2723</span>
- <span id="L2724" rel="#L2724">2724</span>
- <span id="L2725" rel="#L2725">2725</span>
- <span id="L2726" rel="#L2726">2726</span>
- <span id="L2727" rel="#L2727">2727</span>
- <span id="L2728" rel="#L2728">2728</span>
- <span id="L2729" rel="#L2729">2729</span>
- <span id="L2730" rel="#L2730">2730</span>
- <span id="L2731" rel="#L2731">2731</span>
- <span id="L2732" rel="#L2732">2732</span>
- <span id="L2733" rel="#L2733">2733</span>
- <span id="L2734" rel="#L2734">2734</span>
- <span id="L2735" rel="#L2735">2735</span>
- <span id="L2736" rel="#L2736">2736</span>
- <span id="L2737" rel="#L2737">2737</span>
- <span id="L2738" rel="#L2738">2738</span>
- <span id="L2739" rel="#L2739">2739</span>
- <span id="L2740" rel="#L2740">2740</span>
- <span id="L2741" rel="#L2741">2741</span>
- <span id="L2742" rel="#L2742">2742</span>
- <span id="L2743" rel="#L2743">2743</span>
- <span id="L2744" rel="#L2744">2744</span>
- <span id="L2745" rel="#L2745">2745</span>
- <span id="L2746" rel="#L2746">2746</span>
- <span id="L2747" rel="#L2747">2747</span>
- <span id="L2748" rel="#L2748">2748</span>
- <span id="L2749" rel="#L2749">2749</span>
- <span id="L2750" rel="#L2750">2750</span>
- <span id="L2751" rel="#L2751">2751</span>
- <span id="L2752" rel="#L2752">2752</span>
- <span id="L2753" rel="#L2753">2753</span>
- <span id="L2754" rel="#L2754">2754</span>
- <span id="L2755" rel="#L2755">2755</span>
- <span id="L2756" rel="#L2756">2756</span>
- <span id="L2757" rel="#L2757">2757</span>
- <span id="L2758" rel="#L2758">2758</span>
- <span id="L2759" rel="#L2759">2759</span>
- <span id="L2760" rel="#L2760">2760</span>
- <span id="L2761" rel="#L2761">2761</span>
- <span id="L2762" rel="#L2762">2762</span>
- <span id="L2763" rel="#L2763">2763</span>
- <span id="L2764" rel="#L2764">2764</span>
- <span id="L2765" rel="#L2765">2765</span>
- <span id="L2766" rel="#L2766">2766</span>
- <span id="L2767" rel="#L2767">2767</span>
- <span id="L2768" rel="#L2768">2768</span>
- <span id="L2769" rel="#L2769">2769</span>
- <span id="L2770" rel="#L2770">2770</span>
- <span id="L2771" rel="#L2771">2771</span>
- <span id="L2772" rel="#L2772">2772</span>
- <span id="L2773" rel="#L2773">2773</span>
- <span id="L2774" rel="#L2774">2774</span>
- <span id="L2775" rel="#L2775">2775</span>
- <span id="L2776" rel="#L2776">2776</span>
- <span id="L2777" rel="#L2777">2777</span>
- <span id="L2778" rel="#L2778">2778</span>
- <span id="L2779" rel="#L2779">2779</span>
- <span id="L2780" rel="#L2780">2780</span>
- <span id="L2781" rel="#L2781">2781</span>
- <span id="L2782" rel="#L2782">2782</span>
- <span id="L2783" rel="#L2783">2783</span>
- <span id="L2784" rel="#L2784">2784</span>
- <span id="L2785" rel="#L2785">2785</span>
- <span id="L2786" rel="#L2786">2786</span>
- <span id="L2787" rel="#L2787">2787</span>
- <span id="L2788" rel="#L2788">2788</span>
- <span id="L2789" rel="#L2789">2789</span>
- <span id="L2790" rel="#L2790">2790</span>
- <span id="L2791" rel="#L2791">2791</span>
- <span id="L2792" rel="#L2792">2792</span>
- <span id="L2793" rel="#L2793">2793</span>
- <span id="L2794" rel="#L2794">2794</span>
- <span id="L2795" rel="#L2795">2795</span>
- <span id="L2796" rel="#L2796">2796</span>
- <span id="L2797" rel="#L2797">2797</span>
- <span id="L2798" rel="#L2798">2798</span>
- <span id="L2799" rel="#L2799">2799</span>
- <span id="L2800" rel="#L2800">2800</span>
- <span id="L2801" rel="#L2801">2801</span>
- <span id="L2802" rel="#L2802">2802</span>
- <span id="L2803" rel="#L2803">2803</span>
- <span id="L2804" rel="#L2804">2804</span>
- <span id="L2805" rel="#L2805">2805</span>
- <span id="L2806" rel="#L2806">2806</span>
- <span id="L2807" rel="#L2807">2807</span>
- <span id="L2808" rel="#L2808">2808</span>
- <span id="L2809" rel="#L2809">2809</span>
- <span id="L2810" rel="#L2810">2810</span>
- <span id="L2811" rel="#L2811">2811</span>
- <span id="L2812" rel="#L2812">2812</span>
- <span id="L2813" rel="#L2813">2813</span>
- <span id="L2814" rel="#L2814">2814</span>
- <span id="L2815" rel="#L2815">2815</span>
- <span id="L2816" rel="#L2816">2816</span>
- <span id="L2817" rel="#L2817">2817</span>
- <span id="L2818" rel="#L2818">2818</span>
- <span id="L2819" rel="#L2819">2819</span>
- <span id="L2820" rel="#L2820">2820</span>
- <span id="L2821" rel="#L2821">2821</span>
- <span id="L2822" rel="#L2822">2822</span>
- <span id="L2823" rel="#L2823">2823</span>
- <span id="L2824" rel="#L2824">2824</span>
- <span id="L2825" rel="#L2825">2825</span>
- <span id="L2826" rel="#L2826">2826</span>
- <span id="L2827" rel="#L2827">2827</span>
- <span id="L2828" rel="#L2828">2828</span>
- <span id="L2829" rel="#L2829">2829</span>
- <span id="L2830" rel="#L2830">2830</span>
- <span id="L2831" rel="#L2831">2831</span>
- <span id="L2832" rel="#L2832">2832</span>
- <span id="L2833" rel="#L2833">2833</span>
- <span id="L2834" rel="#L2834">2834</span>
- <span id="L2835" rel="#L2835">2835</span>
- <span id="L2836" rel="#L2836">2836</span>
- <span id="L2837" rel="#L2837">2837</span>
- <span id="L2838" rel="#L2838">2838</span>
- <span id="L2839" rel="#L2839">2839</span>
- <span id="L2840" rel="#L2840">2840</span>
- <span id="L2841" rel="#L2841">2841</span>
- <span id="L2842" rel="#L2842">2842</span>
- <span id="L2843" rel="#L2843">2843</span>
- <span id="L2844" rel="#L2844">2844</span>
- <span id="L2845" rel="#L2845">2845</span>
- <span id="L2846" rel="#L2846">2846</span>
- <span id="L2847" rel="#L2847">2847</span>
- <span id="L2848" rel="#L2848">2848</span>
- <span id="L2849" rel="#L2849">2849</span>
- <span id="L2850" rel="#L2850">2850</span>
- <span id="L2851" rel="#L2851">2851</span>
- <span id="L2852" rel="#L2852">2852</span>
- <span id="L2853" rel="#L2853">2853</span>
- <span id="L2854" rel="#L2854">2854</span>
- <span id="L2855" rel="#L2855">2855</span>
- <span id="L2856" rel="#L2856">2856</span>
- <span id="L2857" rel="#L2857">2857</span>
- <span id="L2858" rel="#L2858">2858</span>
- <span id="L2859" rel="#L2859">2859</span>
- <span id="L2860" rel="#L2860">2860</span>
- <span id="L2861" rel="#L2861">2861</span>
- <span id="L2862" rel="#L2862">2862</span>
- <span id="L2863" rel="#L2863">2863</span>
- <span id="L2864" rel="#L2864">2864</span>
- <span id="L2865" rel="#L2865">2865</span>
- <span id="L2866" rel="#L2866">2866</span>
- <span id="L2867" rel="#L2867">2867</span>
- <span id="L2868" rel="#L2868">2868</span>
- <span id="L2869" rel="#L2869">2869</span>
- <span id="L2870" rel="#L2870">2870</span>
- <span id="L2871" rel="#L2871">2871</span>
- <span id="L2872" rel="#L2872">2872</span>
- <span id="L2873" rel="#L2873">2873</span>
- <span id="L2874" rel="#L2874">2874</span>
- <span id="L2875" rel="#L2875">2875</span>
- <span id="L2876" rel="#L2876">2876</span>
- <span id="L2877" rel="#L2877">2877</span>
- <span id="L2878" rel="#L2878">2878</span>
- <span id="L2879" rel="#L2879">2879</span>
- <span id="L2880" rel="#L2880">2880</span>
- <span id="L2881" rel="#L2881">2881</span>
- <span id="L2882" rel="#L2882">2882</span>
- <span id="L2883" rel="#L2883">2883</span>
- <span id="L2884" rel="#L2884">2884</span>
- <span id="L2885" rel="#L2885">2885</span>
- <span id="L2886" rel="#L2886">2886</span>
- <span id="L2887" rel="#L2887">2887</span>
- <span id="L2888" rel="#L2888">2888</span>
- <span id="L2889" rel="#L2889">2889</span>
- <span id="L2890" rel="#L2890">2890</span>
- <span id="L2891" rel="#L2891">2891</span>
- <span id="L2892" rel="#L2892">2892</span>
- <span id="L2893" rel="#L2893">2893</span>
- <span id="L2894" rel="#L2894">2894</span>
- <span id="L2895" rel="#L2895">2895</span>
- <span id="L2896" rel="#L2896">2896</span>
- <span id="L2897" rel="#L2897">2897</span>
- <span id="L2898" rel="#L2898">2898</span>
- <span id="L2899" rel="#L2899">2899</span>
- <span id="L2900" rel="#L2900">2900</span>
- <span id="L2901" rel="#L2901">2901</span>
- <span id="L2902" rel="#L2902">2902</span>
- <span id="L2903" rel="#L2903">2903</span>
- <span id="L2904" rel="#L2904">2904</span>
- <span id="L2905" rel="#L2905">2905</span>
- <span id="L2906" rel="#L2906">2906</span>
- <span id="L2907" rel="#L2907">2907</span>
- <span id="L2908" rel="#L2908">2908</span>
- <span id="L2909" rel="#L2909">2909</span>
- <span id="L2910" rel="#L2910">2910</span>
- <span id="L2911" rel="#L2911">2911</span>
- <span id="L2912" rel="#L2912">2912</span>
- <span id="L2913" rel="#L2913">2913</span>
- <span id="L2914" rel="#L2914">2914</span>
- <span id="L2915" rel="#L2915">2915</span>
- <span id="L2916" rel="#L2916">2916</span>
- <span id="L2917" rel="#L2917">2917</span>
- <span id="L2918" rel="#L2918">2918</span>
- <span id="L2919" rel="#L2919">2919</span>
- <span id="L2920" rel="#L2920">2920</span>
- <span id="L2921" rel="#L2921">2921</span>
- <span id="L2922" rel="#L2922">2922</span>
- <span id="L2923" rel="#L2923">2923</span>
- <span id="L2924" rel="#L2924">2924</span>
- <span id="L2925" rel="#L2925">2925</span>
- <span id="L2926" rel="#L2926">2926</span>
- <span id="L2927" rel="#L2927">2927</span>
- <span id="L2928" rel="#L2928">2928</span>
- <span id="L2929" rel="#L2929">2929</span>
- <span id="L2930" rel="#L2930">2930</span>
- <span id="L2931" rel="#L2931">2931</span>
- <span id="L2932" rel="#L2932">2932</span>
- <span id="L2933" rel="#L2933">2933</span>
- <span id="L2934" rel="#L2934">2934</span>
- <span id="L2935" rel="#L2935">2935</span>
- <span id="L2936" rel="#L2936">2936</span>
- <span id="L2937" rel="#L2937">2937</span>
- <span id="L2938" rel="#L2938">2938</span>
- <span id="L2939" rel="#L2939">2939</span>
- <span id="L2940" rel="#L2940">2940</span>
- <span id="L2941" rel="#L2941">2941</span>
- <span id="L2942" rel="#L2942">2942</span>
- <span id="L2943" rel="#L2943">2943</span>
- <span id="L2944" rel="#L2944">2944</span>
- <span id="L2945" rel="#L2945">2945</span>
- <span id="L2946" rel="#L2946">2946</span>
- <span id="L2947" rel="#L2947">2947</span>
- <span id="L2948" rel="#L2948">2948</span>
- <span id="L2949" rel="#L2949">2949</span>
- <span id="L2950" rel="#L2950">2950</span>
- <span id="L2951" rel="#L2951">2951</span>
- <span id="L2952" rel="#L2952">2952</span>
- <span id="L2953" rel="#L2953">2953</span>
- <span id="L2954" rel="#L2954">2954</span>
- <span id="L2955" rel="#L2955">2955</span>
- <span id="L2956" rel="#L2956">2956</span>
- <span id="L2957" rel="#L2957">2957</span>
- <span id="L2958" rel="#L2958">2958</span>
- <span id="L2959" rel="#L2959">2959</span>
- <span id="L2960" rel="#L2960">2960</span>
- <span id="L2961" rel="#L2961">2961</span>
- <span id="L2962" rel="#L2962">2962</span>
- <span id="L2963" rel="#L2963">2963</span>
- <span id="L2964" rel="#L2964">2964</span>
- <span id="L2965" rel="#L2965">2965</span>
- <span id="L2966" rel="#L2966">2966</span>
- <span id="L2967" rel="#L2967">2967</span>
- <span id="L2968" rel="#L2968">2968</span>
- <span id="L2969" rel="#L2969">2969</span>
- <span id="L2970" rel="#L2970">2970</span>
- <span id="L2971" rel="#L2971">2971</span>
- <span id="L2972" rel="#L2972">2972</span>
- <span id="L2973" rel="#L2973">2973</span>
- <span id="L2974" rel="#L2974">2974</span>
- <span id="L2975" rel="#L2975">2975</span>
- <span id="L2976" rel="#L2976">2976</span>
- <span id="L2977" rel="#L2977">2977</span>
- <span id="L2978" rel="#L2978">2978</span>
- <span id="L2979" rel="#L2979">2979</span>
- <span id="L2980" rel="#L2980">2980</span>
- <span id="L2981" rel="#L2981">2981</span>
- <span id="L2982" rel="#L2982">2982</span>
- <span id="L2983" rel="#L2983">2983</span>
- <span id="L2984" rel="#L2984">2984</span>
- <span id="L2985" rel="#L2985">2985</span>
- <span id="L2986" rel="#L2986">2986</span>
- <span id="L2987" rel="#L2987">2987</span>
- <span id="L2988" rel="#L2988">2988</span>
- <span id="L2989" rel="#L2989">2989</span>
- <span id="L2990" rel="#L2990">2990</span>
- <span id="L2991" rel="#L2991">2991</span>
- <span id="L2992" rel="#L2992">2992</span>
- <span id="L2993" rel="#L2993">2993</span>
- <span id="L2994" rel="#L2994">2994</span>
- <span id="L2995" rel="#L2995">2995</span>
- <span id="L2996" rel="#L2996">2996</span>
- <span id="L2997" rel="#L2997">2997</span>
- <span id="L2998" rel="#L2998">2998</span>
- <span id="L2999" rel="#L2999">2999</span>
- <span id="L3000" rel="#L3000">3000</span>
- <span id="L3001" rel="#L3001">3001</span>
- <span id="L3002" rel="#L3002">3002</span>
- <span id="L3003" rel="#L3003">3003</span>
- <span id="L3004" rel="#L3004">3004</span>
- <span id="L3005" rel="#L3005">3005</span>
- <span id="L3006" rel="#L3006">3006</span>
- <span id="L3007" rel="#L3007">3007</span>
- <span id="L3008" rel="#L3008">3008</span>
- <span id="L3009" rel="#L3009">3009</span>
- <span id="L3010" rel="#L3010">3010</span>
- <span id="L3011" rel="#L3011">3011</span>
- <span id="L3012" rel="#L3012">3012</span>
- <span id="L3013" rel="#L3013">3013</span>
- <span id="L3014" rel="#L3014">3014</span>
- <span id="L3015" rel="#L3015">3015</span>
- <span id="L3016" rel="#L3016">3016</span>
- <span id="L3017" rel="#L3017">3017</span>
- <span id="L3018" rel="#L3018">3018</span>
- <span id="L3019" rel="#L3019">3019</span>
- <span id="L3020" rel="#L3020">3020</span>
- <span id="L3021" rel="#L3021">3021</span>
- <span id="L3022" rel="#L3022">3022</span>
- <span id="L3023" rel="#L3023">3023</span>
- <span id="L3024" rel="#L3024">3024</span>
- <span id="L3025" rel="#L3025">3025</span>
- <span id="L3026" rel="#L3026">3026</span>
- <span id="L3027" rel="#L3027">3027</span>
- <span id="L3028" rel="#L3028">3028</span>
- <span id="L3029" rel="#L3029">3029</span>
- <span id="L3030" rel="#L3030">3030</span>
- <span id="L3031" rel="#L3031">3031</span>
- <span id="L3032" rel="#L3032">3032</span>
- <span id="L3033" rel="#L3033">3033</span>
- <span id="L3034" rel="#L3034">3034</span>
- <span id="L3035" rel="#L3035">3035</span>
- <span id="L3036" rel="#L3036">3036</span>
- <span id="L3037" rel="#L3037">3037</span>
- <span id="L3038" rel="#L3038">3038</span>
- <span id="L3039" rel="#L3039">3039</span>
- <span id="L3040" rel="#L3040">3040</span>
- <span id="L3041" rel="#L3041">3041</span>
- <span id="L3042" rel="#L3042">3042</span>
- <span id="L3043" rel="#L3043">3043</span>
- <span id="L3044" rel="#L3044">3044</span>
- <span id="L3045" rel="#L3045">3045</span>
- <span id="L3046" rel="#L3046">3046</span>
- <span id="L3047" rel="#L3047">3047</span>
- <span id="L3048" rel="#L3048">3048</span>
- <span id="L3049" rel="#L3049">3049</span>
- <span id="L3050" rel="#L3050">3050</span>
- <span id="L3051" rel="#L3051">3051</span>
- <span id="L3052" rel="#L3052">3052</span>
- <span id="L3053" rel="#L3053">3053</span>
- <span id="L3054" rel="#L3054">3054</span>
- <span id="L3055" rel="#L3055">3055</span>
- <span id="L3056" rel="#L3056">3056</span>
- <span id="L3057" rel="#L3057">3057</span>
- <span id="L3058" rel="#L3058">3058</span>
- <span id="L3059" rel="#L3059">3059</span>
- <span id="L3060" rel="#L3060">3060</span>
- <span id="L3061" rel="#L3061">3061</span>
- <span id="L3062" rel="#L3062">3062</span>
- <span id="L3063" rel="#L3063">3063</span>
- <span id="L3064" rel="#L3064">3064</span>
- <span id="L3065" rel="#L3065">3065</span>
- <span id="L3066" rel="#L3066">3066</span>
- <span id="L3067" rel="#L3067">3067</span>
- <span id="L3068" rel="#L3068">3068</span>
- <span id="L3069" rel="#L3069">3069</span>
- <span id="L3070" rel="#L3070">3070</span>
- <span id="L3071" rel="#L3071">3071</span>
- <span id="L3072" rel="#L3072">3072</span>
- <span id="L3073" rel="#L3073">3073</span>
- <span id="L3074" rel="#L3074">3074</span>
- <span id="L3075" rel="#L3075">3075</span>
- <span id="L3076" rel="#L3076">3076</span>
- <span id="L3077" rel="#L3077">3077</span>
- <span id="L3078" rel="#L3078">3078</span>
- <span id="L3079" rel="#L3079">3079</span>
- <span id="L3080" rel="#L3080">3080</span>
- <span id="L3081" rel="#L3081">3081</span>
- <span id="L3082" rel="#L3082">3082</span>
- <span id="L3083" rel="#L3083">3083</span>
- <span id="L3084" rel="#L3084">3084</span>
- <span id="L3085" rel="#L3085">3085</span>
- <span id="L3086" rel="#L3086">3086</span>
- <span id="L3087" rel="#L3087">3087</span>
- <span id="L3088" rel="#L3088">3088</span>
- <span id="L3089" rel="#L3089">3089</span>
- <span id="L3090" rel="#L3090">3090</span>
- <span id="L3091" rel="#L3091">3091</span>
- <span id="L3092" rel="#L3092">3092</span>
- <span id="L3093" rel="#L3093">3093</span>
- <span id="L3094" rel="#L3094">3094</span>
- <span id="L3095" rel="#L3095">3095</span>
- <span id="L3096" rel="#L3096">3096</span>
- <span id="L3097" rel="#L3097">3097</span>
- <span id="L3098" rel="#L3098">3098</span>
- <span id="L3099" rel="#L3099">3099</span>
- <span id="L3100" rel="#L3100">3100</span>
- <span id="L3101" rel="#L3101">3101</span>
- <span id="L3102" rel="#L3102">3102</span>
- <span id="L3103" rel="#L3103">3103</span>
- <span id="L3104" rel="#L3104">3104</span>
- <span id="L3105" rel="#L3105">3105</span>
- <span id="L3106" rel="#L3106">3106</span>
- <span id="L3107" rel="#L3107">3107</span>
- <span id="L3108" rel="#L3108">3108</span>
- <span id="L3109" rel="#L3109">3109</span>
- <span id="L3110" rel="#L3110">3110</span>
- <span id="L3111" rel="#L3111">3111</span>
- <span id="L3112" rel="#L3112">3112</span>
- <span id="L3113" rel="#L3113">3113</span>
- <span id="L3114" rel="#L3114">3114</span>
- <span id="L3115" rel="#L3115">3115</span>
- <span id="L3116" rel="#L3116">3116</span>
- <span id="L3117" rel="#L3117">3117</span>
- <span id="L3118" rel="#L3118">3118</span>
- <span id="L3119" rel="#L3119">3119</span>
- <span id="L3120" rel="#L3120">3120</span>
- <span id="L3121" rel="#L3121">3121</span>
- <span id="L3122" rel="#L3122">3122</span>
- <span id="L3123" rel="#L3123">3123</span>
- <span id="L3124" rel="#L3124">3124</span>
- <span id="L3125" rel="#L3125">3125</span>
- <span id="L3126" rel="#L3126">3126</span>
- <span id="L3127" rel="#L3127">3127</span>
- <span id="L3128" rel="#L3128">3128</span>
- <span id="L3129" rel="#L3129">3129</span>
- <span id="L3130" rel="#L3130">3130</span>
- <span id="L3131" rel="#L3131">3131</span>
- <span id="L3132" rel="#L3132">3132</span>
- <span id="L3133" rel="#L3133">3133</span>
- <span id="L3134" rel="#L3134">3134</span>
- <span id="L3135" rel="#L3135">3135</span>
- <span id="L3136" rel="#L3136">3136</span>
- <span id="L3137" rel="#L3137">3137</span>
- <span id="L3138" rel="#L3138">3138</span>
- <span id="L3139" rel="#L3139">3139</span>
- <span id="L3140" rel="#L3140">3140</span>
- <span id="L3141" rel="#L3141">3141</span>
- <span id="L3142" rel="#L3142">3142</span>
- <span id="L3143" rel="#L3143">3143</span>
- <span id="L3144" rel="#L3144">3144</span>
- <span id="L3145" rel="#L3145">3145</span>
- <span id="L3146" rel="#L3146">3146</span>
- <span id="L3147" rel="#L3147">3147</span>
- <span id="L3148" rel="#L3148">3148</span>
- <span id="L3149" rel="#L3149">3149</span>
- <span id="L3150" rel="#L3150">3150</span>
- <span id="L3151" rel="#L3151">3151</span>
- <span id="L3152" rel="#L3152">3152</span>
- <span id="L3153" rel="#L3153">3153</span>
- <span id="L3154" rel="#L3154">3154</span>
- <span id="L3155" rel="#L3155">3155</span>
- <span id="L3156" rel="#L3156">3156</span>
- <span id="L3157" rel="#L3157">3157</span>
- <span id="L3158" rel="#L3158">3158</span>
- <span id="L3159" rel="#L3159">3159</span>
- <span id="L3160" rel="#L3160">3160</span>
- <span id="L3161" rel="#L3161">3161</span>
- <span id="L3162" rel="#L3162">3162</span>
- <span id="L3163" rel="#L3163">3163</span>
- <span id="L3164" rel="#L3164">3164</span>
- <span id="L3165" rel="#L3165">3165</span>
- <span id="L3166" rel="#L3166">3166</span>
- <span id="L3167" rel="#L3167">3167</span>
- <span id="L3168" rel="#L3168">3168</span>
- <span id="L3169" rel="#L3169">3169</span>
- <span id="L3170" rel="#L3170">3170</span>
- <span id="L3171" rel="#L3171">3171</span>
- <span id="L3172" rel="#L3172">3172</span>
- <span id="L3173" rel="#L3173">3173</span>
- <span id="L3174" rel="#L3174">3174</span>
- <span id="L3175" rel="#L3175">3175</span>
- <span id="L3176" rel="#L3176">3176</span>
- <span id="L3177" rel="#L3177">3177</span>
- <span id="L3178" rel="#L3178">3178</span>
- <span id="L3179" rel="#L3179">3179</span>
- <span id="L3180" rel="#L3180">3180</span>
- <span id="L3181" rel="#L3181">3181</span>
- <span id="L3182" rel="#L3182">3182</span>
- <span id="L3183" rel="#L3183">3183</span>
- <span id="L3184" rel="#L3184">3184</span>
- <span id="L3185" rel="#L3185">3185</span>
- <span id="L3186" rel="#L3186">3186</span>
- <span id="L3187" rel="#L3187">3187</span>
- <span id="L3188" rel="#L3188">3188</span>
- <span id="L3189" rel="#L3189">3189</span>
- <span id="L3190" rel="#L3190">3190</span>
- <span id="L3191" rel="#L3191">3191</span>
- <span id="L3192" rel="#L3192">3192</span>
- <span id="L3193" rel="#L3193">3193</span>
- <span id="L3194" rel="#L3194">3194</span>
- <span id="L3195" rel="#L3195">3195</span>
- <span id="L3196" rel="#L3196">3196</span>
- <span id="L3197" rel="#L3197">3197</span>
- <span id="L3198" rel="#L3198">3198</span>
- <span id="L3199" rel="#L3199">3199</span>
- <span id="L3200" rel="#L3200">3200</span>
- <span id="L3201" rel="#L3201">3201</span>
- <span id="L3202" rel="#L3202">3202</span>
- <span id="L3203" rel="#L3203">3203</span>
- <span id="L3204" rel="#L3204">3204</span>
- <span id="L3205" rel="#L3205">3205</span>
- <span id="L3206" rel="#L3206">3206</span>
- <span id="L3207" rel="#L3207">3207</span>
- <span id="L3208" rel="#L3208">3208</span>
- <span id="L3209" rel="#L3209">3209</span>
- <span id="L3210" rel="#L3210">3210</span>
- <span id="L3211" rel="#L3211">3211</span>
- <span id="L3212" rel="#L3212">3212</span>
- <span id="L3213" rel="#L3213">3213</span>
- <span id="L3214" rel="#L3214">3214</span>
- <span id="L3215" rel="#L3215">3215</span>
- <span id="L3216" rel="#L3216">3216</span>
- <span id="L3217" rel="#L3217">3217</span>
- <span id="L3218" rel="#L3218">3218</span>
- <span id="L3219" rel="#L3219">3219</span>
- <span id="L3220" rel="#L3220">3220</span>
- <span id="L3221" rel="#L3221">3221</span>
- <span id="L3222" rel="#L3222">3222</span>
- <span id="L3223" rel="#L3223">3223</span>
- <span id="L3224" rel="#L3224">3224</span>
- <span id="L3225" rel="#L3225">3225</span>
- <span id="L3226" rel="#L3226">3226</span>
- <span id="L3227" rel="#L3227">3227</span>
- <span id="L3228" rel="#L3228">3228</span>
- <span id="L3229" rel="#L3229">3229</span>
- <span id="L3230" rel="#L3230">3230</span>
- <span id="L3231" rel="#L3231">3231</span>
- <span id="L3232" rel="#L3232">3232</span>
- <span id="L3233" rel="#L3233">3233</span>
- <span id="L3234" rel="#L3234">3234</span>
- <span id="L3235" rel="#L3235">3235</span>
- <span id="L3236" rel="#L3236">3236</span>
- <span id="L3237" rel="#L3237">3237</span>
- <span id="L3238" rel="#L3238">3238</span>
- <span id="L3239" rel="#L3239">3239</span>
- <span id="L3240" rel="#L3240">3240</span>
- <span id="L3241" rel="#L3241">3241</span>
- <span id="L3242" rel="#L3242">3242</span>
- <span id="L3243" rel="#L3243">3243</span>
- <span id="L3244" rel="#L3244">3244</span>
- <span id="L3245" rel="#L3245">3245</span>
- <span id="L3246" rel="#L3246">3246</span>
- <span id="L3247" rel="#L3247">3247</span>
- <span id="L3248" rel="#L3248">3248</span>
- <span id="L3249" rel="#L3249">3249</span>
- <span id="L3250" rel="#L3250">3250</span>
- <span id="L3251" rel="#L3251">3251</span>
- <span id="L3252" rel="#L3252">3252</span>
- <span id="L3253" rel="#L3253">3253</span>
- <span id="L3254" rel="#L3254">3254</span>
- <span id="L3255" rel="#L3255">3255</span>
- <span id="L3256" rel="#L3256">3256</span>
- <span id="L3257" rel="#L3257">3257</span>
- <span id="L3258" rel="#L3258">3258</span>
- <span id="L3259" rel="#L3259">3259</span>
- <span id="L3260" rel="#L3260">3260</span>
- <span id="L3261" rel="#L3261">3261</span>
- <span id="L3262" rel="#L3262">3262</span>
- <span id="L3263" rel="#L3263">3263</span>
- <span id="L3264" rel="#L3264">3264</span>
- <span id="L3265" rel="#L3265">3265</span>
- <span id="L3266" rel="#L3266">3266</span>
- <span id="L3267" rel="#L3267">3267</span>
- <span id="L3268" rel="#L3268">3268</span>
- <span id="L3269" rel="#L3269">3269</span>
- <span id="L3270" rel="#L3270">3270</span>
- <span id="L3271" rel="#L3271">3271</span>
- <span id="L3272" rel="#L3272">3272</span>
- <span id="L3273" rel="#L3273">3273</span>
- <span id="L3274" rel="#L3274">3274</span>
- <span id="L3275" rel="#L3275">3275</span>
- <span id="L3276" rel="#L3276">3276</span>
- <span id="L3277" rel="#L3277">3277</span>
- <span id="L3278" rel="#L3278">3278</span>
- <span id="L3279" rel="#L3279">3279</span>
- <span id="L3280" rel="#L3280">3280</span>
- <span id="L3281" rel="#L3281">3281</span>
- <span id="L3282" rel="#L3282">3282</span>
- <span id="L3283" rel="#L3283">3283</span>
- <span id="L3284" rel="#L3284">3284</span>
- <span id="L3285" rel="#L3285">3285</span>
- <span id="L3286" rel="#L3286">3286</span>
- <span id="L3287" rel="#L3287">3287</span>
- <span id="L3288" rel="#L3288">3288</span>
- <span id="L3289" rel="#L3289">3289</span>
- <span id="L3290" rel="#L3290">3290</span>
- <span id="L3291" rel="#L3291">3291</span>
- <span id="L3292" rel="#L3292">3292</span>
- <span id="L3293" rel="#L3293">3293</span>
- <span id="L3294" rel="#L3294">3294</span>
- <span id="L3295" rel="#L3295">3295</span>
- <span id="L3296" rel="#L3296">3296</span>
- <span id="L3297" rel="#L3297">3297</span>
- <span id="L3298" rel="#L3298">3298</span>
- <span id="L3299" rel="#L3299">3299</span>
- <span id="L3300" rel="#L3300">3300</span>
- <span id="L3301" rel="#L3301">3301</span>
- <span id="L3302" rel="#L3302">3302</span>
- <span id="L3303" rel="#L3303">3303</span>
- <span id="L3304" rel="#L3304">3304</span>
- <span id="L3305" rel="#L3305">3305</span>
- <span id="L3306" rel="#L3306">3306</span>
- <span id="L3307" rel="#L3307">3307</span>
- <span id="L3308" rel="#L3308">3308</span>
- <span id="L3309" rel="#L3309">3309</span>
- <span id="L3310" rel="#L3310">3310</span>
- <span id="L3311" rel="#L3311">3311</span>
- <span id="L3312" rel="#L3312">3312</span>
- <span id="L3313" rel="#L3313">3313</span>
- <span id="L3314" rel="#L3314">3314</span>
- <span id="L3315" rel="#L3315">3315</span>
- <span id="L3316" rel="#L3316">3316</span>
- <span id="L3317" rel="#L3317">3317</span>
- <span id="L3318" rel="#L3318">3318</span>
- <span id="L3319" rel="#L3319">3319</span>
- <span id="L3320" rel="#L3320">3320</span>
- <span id="L3321" rel="#L3321">3321</span>
- <span id="L3322" rel="#L3322">3322</span>
- <span id="L3323" rel="#L3323">3323</span>
- <span id="L3324" rel="#L3324">3324</span>
- <span id="L3325" rel="#L3325">3325</span>
- <span id="L3326" rel="#L3326">3326</span>
- <span id="L3327" rel="#L3327">3327</span>
- <span id="L3328" rel="#L3328">3328</span>
- <span id="L3329" rel="#L3329">3329</span>
- <span id="L3330" rel="#L3330">3330</span>
- <span id="L3331" rel="#L3331">3331</span>
- <span id="L3332" rel="#L3332">3332</span>
- <span id="L3333" rel="#L3333">3333</span>
- <span id="L3334" rel="#L3334">3334</span>
- <span id="L3335" rel="#L3335">3335</span>
- <span id="L3336" rel="#L3336">3336</span>
- <span id="L3337" rel="#L3337">3337</span>
- <span id="L3338" rel="#L3338">3338</span>
- <span id="L3339" rel="#L3339">3339</span>
- <span id="L3340" rel="#L3340">3340</span>
- <span id="L3341" rel="#L3341">3341</span>
- <span id="L3342" rel="#L3342">3342</span>
- <span id="L3343" rel="#L3343">3343</span>
- <span id="L3344" rel="#L3344">3344</span>
- <span id="L3345" rel="#L3345">3345</span>
- <span id="L3346" rel="#L3346">3346</span>
- <span id="L3347" rel="#L3347">3347</span>
- <span id="L3348" rel="#L3348">3348</span>
- <span id="L3349" rel="#L3349">3349</span>
- <span id="L3350" rel="#L3350">3350</span>
- <span id="L3351" rel="#L3351">3351</span>
- <span id="L3352" rel="#L3352">3352</span>
- <span id="L3353" rel="#L3353">3353</span>
- <span id="L3354" rel="#L3354">3354</span>
- <span id="L3355" rel="#L3355">3355</span>
- <span id="L3356" rel="#L3356">3356</span>
- <span id="L3357" rel="#L3357">3357</span>
- <span id="L3358" rel="#L3358">3358</span>
- <span id="L3359" rel="#L3359">3359</span>
- <span id="L3360" rel="#L3360">3360</span>
- <span id="L3361" rel="#L3361">3361</span>
- <span id="L3362" rel="#L3362">3362</span>
- <span id="L3363" rel="#L3363">3363</span>
- <span id="L3364" rel="#L3364">3364</span>
- <span id="L3365" rel="#L3365">3365</span>
- <span id="L3366" rel="#L3366">3366</span>
- <span id="L3367" rel="#L3367">3367</span>
- <span id="L3368" rel="#L3368">3368</span>
- <span id="L3369" rel="#L3369">3369</span>
- <span id="L3370" rel="#L3370">3370</span>
- <span id="L3371" rel="#L3371">3371</span>
- <span id="L3372" rel="#L3372">3372</span>
- <span id="L3373" rel="#L3373">3373</span>
- <span id="L3374" rel="#L3374">3374</span>
- <span id="L3375" rel="#L3375">3375</span>
- <span id="L3376" rel="#L3376">3376</span>
- <span id="L3377" rel="#L3377">3377</span>
- <span id="L3378" rel="#L3378">3378</span>
- <span id="L3379" rel="#L3379">3379</span>
- <span id="L3380" rel="#L3380">3380</span>
- <span id="L3381" rel="#L3381">3381</span>
- <span id="L3382" rel="#L3382">3382</span>
- <span id="L3383" rel="#L3383">3383</span>
- <span id="L3384" rel="#L3384">3384</span>
- <span id="L3385" rel="#L3385">3385</span>
- <span id="L3386" rel="#L3386">3386</span>
- <span id="L3387" rel="#L3387">3387</span>
- <span id="L3388" rel="#L3388">3388</span>
- <span id="L3389" rel="#L3389">3389</span>
- <span id="L3390" rel="#L3390">3390</span>
- <span id="L3391" rel="#L3391">3391</span>
- <span id="L3392" rel="#L3392">3392</span>
- <span id="L3393" rel="#L3393">3393</span>
- <span id="L3394" rel="#L3394">3394</span>
- <span id="L3395" rel="#L3395">3395</span>
- <span id="L3396" rel="#L3396">3396</span>
- <span id="L3397" rel="#L3397">3397</span>
- <span id="L3398" rel="#L3398">3398</span>
- <span id="L3399" rel="#L3399">3399</span>
- <span id="L3400" rel="#L3400">3400</span>
- <span id="L3401" rel="#L3401">3401</span>
- <span id="L3402" rel="#L3402">3402</span>
- <span id="L3403" rel="#L3403">3403</span>
- <span id="L3404" rel="#L3404">3404</span>
- <span id="L3405" rel="#L3405">3405</span>
- <span id="L3406" rel="#L3406">3406</span>
- <span id="L3407" rel="#L3407">3407</span>
- <span id="L3408" rel="#L3408">3408</span>
- <span id="L3409" rel="#L3409">3409</span>
- <span id="L3410" rel="#L3410">3410</span>
- <span id="L3411" rel="#L3411">3411</span>
- <span id="L3412" rel="#L3412">3412</span>
- <span id="L3413" rel="#L3413">3413</span>
- <span id="L3414" rel="#L3414">3414</span>
- <span id="L3415" rel="#L3415">3415</span>
- <span id="L3416" rel="#L3416">3416</span>
- <span id="L3417" rel="#L3417">3417</span>
- <span id="L3418" rel="#L3418">3418</span>
- <span id="L3419" rel="#L3419">3419</span>
- <span id="L3420" rel="#L3420">3420</span>
- <span id="L3421" rel="#L3421">3421</span>
- <span id="L3422" rel="#L3422">3422</span>
- <span id="L3423" rel="#L3423">3423</span>
- <span id="L3424" rel="#L3424">3424</span>
- <span id="L3425" rel="#L3425">3425</span>
- <span id="L3426" rel="#L3426">3426</span>
- <span id="L3427" rel="#L3427">3427</span>
- <span id="L3428" rel="#L3428">3428</span>
- <span id="L3429" rel="#L3429">3429</span>
- <span id="L3430" rel="#L3430">3430</span>
- <span id="L3431" rel="#L3431">3431</span>
- <span id="L3432" rel="#L3432">3432</span>
- <span id="L3433" rel="#L3433">3433</span>
- <span id="L3434" rel="#L3434">3434</span>
- <span id="L3435" rel="#L3435">3435</span>
- <span id="L3436" rel="#L3436">3436</span>
- <span id="L3437" rel="#L3437">3437</span>
- <span id="L3438" rel="#L3438">3438</span>
- <span id="L3439" rel="#L3439">3439</span>
- <span id="L3440" rel="#L3440">3440</span>
- <span id="L3441" rel="#L3441">3441</span>
- <span id="L3442" rel="#L3442">3442</span>
- <span id="L3443" rel="#L3443">3443</span>
- <span id="L3444" rel="#L3444">3444</span>
- <span id="L3445" rel="#L3445">3445</span>
- <span id="L3446" rel="#L3446">3446</span>
- <span id="L3447" rel="#L3447">3447</span>
- <span id="L3448" rel="#L3448">3448</span>
- <span id="L3449" rel="#L3449">3449</span>
- <span id="L3450" rel="#L3450">3450</span>
- <span id="L3451" rel="#L3451">3451</span>
- <span id="L3452" rel="#L3452">3452</span>
- <span id="L3453" rel="#L3453">3453</span>
- <span id="L3454" rel="#L3454">3454</span>
- <span id="L3455" rel="#L3455">3455</span>
- <span id="L3456" rel="#L3456">3456</span>
- <span id="L3457" rel="#L3457">3457</span>
- <span id="L3458" rel="#L3458">3458</span>
- <span id="L3459" rel="#L3459">3459</span>
- <span id="L3460" rel="#L3460">3460</span>
- <span id="L3461" rel="#L3461">3461</span>
- <span id="L3462" rel="#L3462">3462</span>
- <span id="L3463" rel="#L3463">3463</span>
- <span id="L3464" rel="#L3464">3464</span>
- <span id="L3465" rel="#L3465">3465</span>
- <span id="L3466" rel="#L3466">3466</span>
- <span id="L3467" rel="#L3467">3467</span>
- <span id="L3468" rel="#L3468">3468</span>
- <span id="L3469" rel="#L3469">3469</span>
- <span id="L3470" rel="#L3470">3470</span>
- <span id="L3471" rel="#L3471">3471</span>
- <span id="L3472" rel="#L3472">3472</span>
- <span id="L3473" rel="#L3473">3473</span>
- <span id="L3474" rel="#L3474">3474</span>
- <span id="L3475" rel="#L3475">3475</span>
- <span id="L3476" rel="#L3476">3476</span>
- <span id="L3477" rel="#L3477">3477</span>
- <span id="L3478" rel="#L3478">3478</span>
- <span id="L3479" rel="#L3479">3479</span>
- <span id="L3480" rel="#L3480">3480</span>
- <span id="L3481" rel="#L3481">3481</span>
- <span id="L3482" rel="#L3482">3482</span>
- <span id="L3483" rel="#L3483">3483</span>
- <span id="L3484" rel="#L3484">3484</span>
- <span id="L3485" rel="#L3485">3485</span>
- <span id="L3486" rel="#L3486">3486</span>
- <span id="L3487" rel="#L3487">3487</span>
- <span id="L3488" rel="#L3488">3488</span>
- <span id="L3489" rel="#L3489">3489</span>
- <span id="L3490" rel="#L3490">3490</span>
- <span id="L3491" rel="#L3491">3491</span>
- <span id="L3492" rel="#L3492">3492</span>
- <span id="L3493" rel="#L3493">3493</span>
- <span id="L3494" rel="#L3494">3494</span>
- <span id="L3495" rel="#L3495">3495</span>
- <span id="L3496" rel="#L3496">3496</span>
- <span id="L3497" rel="#L3497">3497</span>
- <span id="L3498" rel="#L3498">3498</span>
- <span id="L3499" rel="#L3499">3499</span>
- <span id="L3500" rel="#L3500">3500</span>
- <span id="L3501" rel="#L3501">3501</span>
- <span id="L3502" rel="#L3502">3502</span>
- <span id="L3503" rel="#L3503">3503</span>
- <span id="L3504" rel="#L3504">3504</span>
- <span id="L3505" rel="#L3505">3505</span>
- <span id="L3506" rel="#L3506">3506</span>
- <span id="L3507" rel="#L3507">3507</span>
- <span id="L3508" rel="#L3508">3508</span>
- <span id="L3509" rel="#L3509">3509</span>
- <span id="L3510" rel="#L3510">3510</span>
- <span id="L3511" rel="#L3511">3511</span>
- <span id="L3512" rel="#L3512">3512</span>
- <span id="L3513" rel="#L3513">3513</span>
- <span id="L3514" rel="#L3514">3514</span>
- <span id="L3515" rel="#L3515">3515</span>
- <span id="L3516" rel="#L3516">3516</span>
- <span id="L3517" rel="#L3517">3517</span>
- <span id="L3518" rel="#L3518">3518</span>
- <span id="L3519" rel="#L3519">3519</span>
- <span id="L3520" rel="#L3520">3520</span>
- <span id="L3521" rel="#L3521">3521</span>
- <span id="L3522" rel="#L3522">3522</span>
- <span id="L3523" rel="#L3523">3523</span>
- <span id="L3524" rel="#L3524">3524</span>
- <span id="L3525" rel="#L3525">3525</span>
- <span id="L3526" rel="#L3526">3526</span>
- <span id="L3527" rel="#L3527">3527</span>
- <span id="L3528" rel="#L3528">3528</span>
- <span id="L3529" rel="#L3529">3529</span>
- <span id="L3530" rel="#L3530">3530</span>
- <span id="L3531" rel="#L3531">3531</span>
- <span id="L3532" rel="#L3532">3532</span>
- <span id="L3533" rel="#L3533">3533</span>
- <span id="L3534" rel="#L3534">3534</span>
- <span id="L3535" rel="#L3535">3535</span>
- <span id="L3536" rel="#L3536">3536</span>
- <span id="L3537" rel="#L3537">3537</span>
- <span id="L3538" rel="#L3538">3538</span>
- <span id="L3539" rel="#L3539">3539</span>
- <span id="L3540" rel="#L3540">3540</span>
- <span id="L3541" rel="#L3541">3541</span>
- <span id="L3542" rel="#L3542">3542</span>
- <span id="L3543" rel="#L3543">3543</span>
- <span id="L3544" rel="#L3544">3544</span>
- <span id="L3545" rel="#L3545">3545</span>
- <span id="L3546" rel="#L3546">3546</span>
- <span id="L3547" rel="#L3547">3547</span>
- <span id="L3548" rel="#L3548">3548</span>
- <span id="L3549" rel="#L3549">3549</span>
- <span id="L3550" rel="#L3550">3550</span>
- <span id="L3551" rel="#L3551">3551</span>
- <span id="L3552" rel="#L3552">3552</span>
- <span id="L3553" rel="#L3553">3553</span>
- <span id="L3554" rel="#L3554">3554</span>
- <span id="L3555" rel="#L3555">3555</span>
- <span id="L3556" rel="#L3556">3556</span>
- <span id="L3557" rel="#L3557">3557</span>
- <span id="L3558" rel="#L3558">3558</span>
- <span id="L3559" rel="#L3559">3559</span>
- <span id="L3560" rel="#L3560">3560</span>
- <span id="L3561" rel="#L3561">3561</span>
- <span id="L3562" rel="#L3562">3562</span>
- <span id="L3563" rel="#L3563">3563</span>
- <span id="L3564" rel="#L3564">3564</span>
- <span id="L3565" rel="#L3565">3565</span>
- <span id="L3566" rel="#L3566">3566</span>
- <span id="L3567" rel="#L3567">3567</span>
- <span id="L3568" rel="#L3568">3568</span>
- <span id="L3569" rel="#L3569">3569</span>
- <span id="L3570" rel="#L3570">3570</span>
- <span id="L3571" rel="#L3571">3571</span>
- <span id="L3572" rel="#L3572">3572</span>
- <span id="L3573" rel="#L3573">3573</span>
- <span id="L3574" rel="#L3574">3574</span>
- <span id="L3575" rel="#L3575">3575</span>
- <span id="L3576" rel="#L3576">3576</span>
- <span id="L3577" rel="#L3577">3577</span>
- <span id="L3578" rel="#L3578">3578</span>
- <span id="L3579" rel="#L3579">3579</span>
- <span id="L3580" rel="#L3580">3580</span>
- <span id="L3581" rel="#L3581">3581</span>
- <span id="L3582" rel="#L3582">3582</span>
- <span id="L3583" rel="#L3583">3583</span>
- <span id="L3584" rel="#L3584">3584</span>
- <span id="L3585" rel="#L3585">3585</span>
- <span id="L3586" rel="#L3586">3586</span>
- <span id="L3587" rel="#L3587">3587</span>
- <span id="L3588" rel="#L3588">3588</span>
- <span id="L3589" rel="#L3589">3589</span>
- <span id="L3590" rel="#L3590">3590</span>
- <span id="L3591" rel="#L3591">3591</span>
- <span id="L3592" rel="#L3592">3592</span>
- <span id="L3593" rel="#L3593">3593</span>
- <span id="L3594" rel="#L3594">3594</span>
- <span id="L3595" rel="#L3595">3595</span>
- <span id="L3596" rel="#L3596">3596</span>
- <span id="L3597" rel="#L3597">3597</span>
- <span id="L3598" rel="#L3598">3598</span>
- <span id="L3599" rel="#L3599">3599</span>
- <span id="L3600" rel="#L3600">3600</span>
- <span id="L3601" rel="#L3601">3601</span>
- <span id="L3602" rel="#L3602">3602</span>
- <span id="L3603" rel="#L3603">3603</span>
- <span id="L3604" rel="#L3604">3604</span>
- <span id="L3605" rel="#L3605">3605</span>
- <span id="L3606" rel="#L3606">3606</span>
- <span id="L3607" rel="#L3607">3607</span>
- <span id="L3608" rel="#L3608">3608</span>
- <span id="L3609" rel="#L3609">3609</span>
- <span id="L3610" rel="#L3610">3610</span>
- <span id="L3611" rel="#L3611">3611</span>
- <span id="L3612" rel="#L3612">3612</span>
- <span id="L3613" rel="#L3613">3613</span>
- <span id="L3614" rel="#L3614">3614</span>
- <span id="L3615" rel="#L3615">3615</span>
- <span id="L3616" rel="#L3616">3616</span>
- <span id="L3617" rel="#L3617">3617</span>
- <span id="L3618" rel="#L3618">3618</span>
- <span id="L3619" rel="#L3619">3619</span>
- <span id="L3620" rel="#L3620">3620</span>
- <span id="L3621" rel="#L3621">3621</span>
- <span id="L3622" rel="#L3622">3622</span>
- <span id="L3623" rel="#L3623">3623</span>
- <span id="L3624" rel="#L3624">3624</span>
- <span id="L3625" rel="#L3625">3625</span>
- <span id="L3626" rel="#L3626">3626</span>
- <span id="L3627" rel="#L3627">3627</span>
- <span id="L3628" rel="#L3628">3628</span>
- <span id="L3629" rel="#L3629">3629</span>
- <span id="L3630" rel="#L3630">3630</span>
- <span id="L3631" rel="#L3631">3631</span>
- <span id="L3632" rel="#L3632">3632</span>
- <span id="L3633" rel="#L3633">3633</span>
- <span id="L3634" rel="#L3634">3634</span>
- <span id="L3635" rel="#L3635">3635</span>
- <span id="L3636" rel="#L3636">3636</span>
- <span id="L3637" rel="#L3637">3637</span>
- <span id="L3638" rel="#L3638">3638</span>
- <span id="L3639" rel="#L3639">3639</span>
- <span id="L3640" rel="#L3640">3640</span>
- <span id="L3641" rel="#L3641">3641</span>
- <span id="L3642" rel="#L3642">3642</span>
- <span id="L3643" rel="#L3643">3643</span>
- <span id="L3644" rel="#L3644">3644</span>
- <span id="L3645" rel="#L3645">3645</span>
- <span id="L3646" rel="#L3646">3646</span>
- <span id="L3647" rel="#L3647">3647</span>
- <span id="L3648" rel="#L3648">3648</span>
- <span id="L3649" rel="#L3649">3649</span>
- <span id="L3650" rel="#L3650">3650</span>
- <span id="L3651" rel="#L3651">3651</span>
- <span id="L3652" rel="#L3652">3652</span>
- <span id="L3653" rel="#L3653">3653</span>
- <span id="L3654" rel="#L3654">3654</span>
- <span id="L3655" rel="#L3655">3655</span>
- <span id="L3656" rel="#L3656">3656</span>
- <span id="L3657" rel="#L3657">3657</span>
- <span id="L3658" rel="#L3658">3658</span>
- <span id="L3659" rel="#L3659">3659</span>
- <span id="L3660" rel="#L3660">3660</span>
- <span id="L3661" rel="#L3661">3661</span>
- <span id="L3662" rel="#L3662">3662</span>
- <span id="L3663" rel="#L3663">3663</span>
- <span id="L3664" rel="#L3664">3664</span>
- <span id="L3665" rel="#L3665">3665</span>
- <span id="L3666" rel="#L3666">3666</span>
- <span id="L3667" rel="#L3667">3667</span>
- <span id="L3668" rel="#L3668">3668</span>
- <span id="L3669" rel="#L3669">3669</span>
- <span id="L3670" rel="#L3670">3670</span>
- <span id="L3671" rel="#L3671">3671</span>
- <span id="L3672" rel="#L3672">3672</span>
- <span id="L3673" rel="#L3673">3673</span>
- <span id="L3674" rel="#L3674">3674</span>
- <span id="L3675" rel="#L3675">3675</span>
- <span id="L3676" rel="#L3676">3676</span>
- <span id="L3677" rel="#L3677">3677</span>
- <span id="L3678" rel="#L3678">3678</span>
- <span id="L3679" rel="#L3679">3679</span>
- <span id="L3680" rel="#L3680">3680</span>
- <span id="L3681" rel="#L3681">3681</span>
- <span id="L3682" rel="#L3682">3682</span>
- <span id="L3683" rel="#L3683">3683</span>
- <span id="L3684" rel="#L3684">3684</span>
- <span id="L3685" rel="#L3685">3685</span>
- <span id="L3686" rel="#L3686">3686</span>
- <span id="L3687" rel="#L3687">3687</span>
- <span id="L3688" rel="#L3688">3688</span>
- <span id="L3689" rel="#L3689">3689</span>
- <span id="L3690" rel="#L3690">3690</span>
- <span id="L3691" rel="#L3691">3691</span>
- <span id="L3692" rel="#L3692">3692</span>
- <span id="L3693" rel="#L3693">3693</span>
- <span id="L3694" rel="#L3694">3694</span>
- <span id="L3695" rel="#L3695">3695</span>
- <span id="L3696" rel="#L3696">3696</span>
- <span id="L3697" rel="#L3697">3697</span>
- <span id="L3698" rel="#L3698">3698</span>
- <span id="L3699" rel="#L3699">3699</span>
- <span id="L3700" rel="#L3700">3700</span>
- <span id="L3701" rel="#L3701">3701</span>
- <span id="L3702" rel="#L3702">3702</span>
- <span id="L3703" rel="#L3703">3703</span>
- <span id="L3704" rel="#L3704">3704</span>
- <span id="L3705" rel="#L3705">3705</span>
- <span id="L3706" rel="#L3706">3706</span>
- <span id="L3707" rel="#L3707">3707</span>
- <span id="L3708" rel="#L3708">3708</span>
- <span id="L3709" rel="#L3709">3709</span>
- <span id="L3710" rel="#L3710">3710</span>
- <span id="L3711" rel="#L3711">3711</span>
- <span id="L3712" rel="#L3712">3712</span>
- <span id="L3713" rel="#L3713">3713</span>
- <span id="L3714" rel="#L3714">3714</span>
- <span id="L3715" rel="#L3715">3715</span>
- <span id="L3716" rel="#L3716">3716</span>
- <span id="L3717" rel="#L3717">3717</span>
- <span id="L3718" rel="#L3718">3718</span>
- <span id="L3719" rel="#L3719">3719</span>
- <span id="L3720" rel="#L3720">3720</span>
- <span id="L3721" rel="#L3721">3721</span>
- <span id="L3722" rel="#L3722">3722</span>
- <span id="L3723" rel="#L3723">3723</span>
- <span id="L3724" rel="#L3724">3724</span>
- <span id="L3725" rel="#L3725">3725</span>
- <span id="L3726" rel="#L3726">3726</span>
- <span id="L3727" rel="#L3727">3727</span>
- <span id="L3728" rel="#L3728">3728</span>
- <span id="L3729" rel="#L3729">3729</span>
- <span id="L3730" rel="#L3730">3730</span>
- <span id="L3731" rel="#L3731">3731</span>
- <span id="L3732" rel="#L3732">3732</span>
- <span id="L3733" rel="#L3733">3733</span>
- <span id="L3734" rel="#L3734">3734</span>
- <span id="L3735" rel="#L3735">3735</span>
- <span id="L3736" rel="#L3736">3736</span>
- <span id="L3737" rel="#L3737">3737</span>
- <span id="L3738" rel="#L3738">3738</span>
- <span id="L3739" rel="#L3739">3739</span>
- <span id="L3740" rel="#L3740">3740</span>
- <span id="L3741" rel="#L3741">3741</span>
- <span id="L3742" rel="#L3742">3742</span>
- <span id="L3743" rel="#L3743">3743</span>
- <span id="L3744" rel="#L3744">3744</span>
- <span id="L3745" rel="#L3745">3745</span>
- <span id="L3746" rel="#L3746">3746</span>
- <span id="L3747" rel="#L3747">3747</span>
- <span id="L3748" rel="#L3748">3748</span>
- <span id="L3749" rel="#L3749">3749</span>
- <span id="L3750" rel="#L3750">3750</span>
- <span id="L3751" rel="#L3751">3751</span>
- <span id="L3752" rel="#L3752">3752</span>
- <span id="L3753" rel="#L3753">3753</span>
- <span id="L3754" rel="#L3754">3754</span>
- <span id="L3755" rel="#L3755">3755</span>
- <span id="L3756" rel="#L3756">3756</span>
- <span id="L3757" rel="#L3757">3757</span>
- <span id="L3758" rel="#L3758">3758</span>
- <span id="L3759" rel="#L3759">3759</span>
- <span id="L3760" rel="#L3760">3760</span>
- <span id="L3761" rel="#L3761">3761</span>
- <span id="L3762" rel="#L3762">3762</span>
- <span id="L3763" rel="#L3763">3763</span>
- <span id="L3764" rel="#L3764">3764</span>
- <span id="L3765" rel="#L3765">3765</span>
- <span id="L3766" rel="#L3766">3766</span>
- <span id="L3767" rel="#L3767">3767</span>
- <span id="L3768" rel="#L3768">3768</span>
- <span id="L3769" rel="#L3769">3769</span>
- <span id="L3770" rel="#L3770">3770</span>
- <span id="L3771" rel="#L3771">3771</span>
- <span id="L3772" rel="#L3772">3772</span>
- <span id="L3773" rel="#L3773">3773</span>
- <span id="L3774" rel="#L3774">3774</span>
- <span id="L3775" rel="#L3775">3775</span>
- <span id="L3776" rel="#L3776">3776</span>
- <span id="L3777" rel="#L3777">3777</span>
- <span id="L3778" rel="#L3778">3778</span>
- <span id="L3779" rel="#L3779">3779</span>
- <span id="L3780" rel="#L3780">3780</span>
- <span id="L3781" rel="#L3781">3781</span>
- <span id="L3782" rel="#L3782">3782</span>
- <span id="L3783" rel="#L3783">3783</span>
- <span id="L3784" rel="#L3784">3784</span>
- <span id="L3785" rel="#L3785">3785</span>
- <span id="L3786" rel="#L3786">3786</span>
- <span id="L3787" rel="#L3787">3787</span>
- <span id="L3788" rel="#L3788">3788</span>
- <span id="L3789" rel="#L3789">3789</span>
- <span id="L3790" rel="#L3790">3790</span>
- <span id="L3791" rel="#L3791">3791</span>
- <span id="L3792" rel="#L3792">3792</span>
- <span id="L3793" rel="#L3793">3793</span>
- <span id="L3794" rel="#L3794">3794</span>
- <span id="L3795" rel="#L3795">3795</span>
- <span id="L3796" rel="#L3796">3796</span>
- <span id="L3797" rel="#L3797">3797</span>
- <span id="L3798" rel="#L3798">3798</span>
- <span id="L3799" rel="#L3799">3799</span>
- <span id="L3800" rel="#L3800">3800</span>
- <span id="L3801" rel="#L3801">3801</span>
- <span id="L3802" rel="#L3802">3802</span>
- <span id="L3803" rel="#L3803">3803</span>
- <span id="L3804" rel="#L3804">3804</span>
- <span id="L3805" rel="#L3805">3805</span>
- <span id="L3806" rel="#L3806">3806</span>
- <span id="L3807" rel="#L3807">3807</span>
- <span id="L3808" rel="#L3808">3808</span>
- <span id="L3809" rel="#L3809">3809</span>
- <span id="L3810" rel="#L3810">3810</span>
- <span id="L3811" rel="#L3811">3811</span>
- <span id="L3812" rel="#L3812">3812</span>
- <span id="L3813" rel="#L3813">3813</span>
- <span id="L3814" rel="#L3814">3814</span>
- <span id="L3815" rel="#L3815">3815</span>
- <span id="L3816" rel="#L3816">3816</span>
- <span id="L3817" rel="#L3817">3817</span>
- <span id="L3818" rel="#L3818">3818</span>
- <span id="L3819" rel="#L3819">3819</span>
- <span id="L3820" rel="#L3820">3820</span>
- <span id="L3821" rel="#L3821">3821</span>
- <span id="L3822" rel="#L3822">3822</span>
- <span id="L3823" rel="#L3823">3823</span>
- <span id="L3824" rel="#L3824">3824</span>
- <span id="L3825" rel="#L3825">3825</span>
- <span id="L3826" rel="#L3826">3826</span>
- <span id="L3827" rel="#L3827">3827</span>
- <span id="L3828" rel="#L3828">3828</span>
- <span id="L3829" rel="#L3829">3829</span>
- <span id="L3830" rel="#L3830">3830</span>
- <span id="L3831" rel="#L3831">3831</span>
- <span id="L3832" rel="#L3832">3832</span>
- <span id="L3833" rel="#L3833">3833</span>
- <span id="L3834" rel="#L3834">3834</span>
- <span id="L3835" rel="#L3835">3835</span>
- <span id="L3836" rel="#L3836">3836</span>
- <span id="L3837" rel="#L3837">3837</span>
- <span id="L3838" rel="#L3838">3838</span>
- <span id="L3839" rel="#L3839">3839</span>
- <span id="L3840" rel="#L3840">3840</span>
- <span id="L3841" rel="#L3841">3841</span>
- <span id="L3842" rel="#L3842">3842</span>
- <span id="L3843" rel="#L3843">3843</span>
- <span id="L3844" rel="#L3844">3844</span>
- <span id="L3845" rel="#L3845">3845</span>
- <span id="L3846" rel="#L3846">3846</span>
- <span id="L3847" rel="#L3847">3847</span>
- <span id="L3848" rel="#L3848">3848</span>
- <span id="L3849" rel="#L3849">3849</span>
- <span id="L3850" rel="#L3850">3850</span>
- <span id="L3851" rel="#L3851">3851</span>
- <span id="L3852" rel="#L3852">3852</span>
- <span id="L3853" rel="#L3853">3853</span>
- <span id="L3854" rel="#L3854">3854</span>
- <span id="L3855" rel="#L3855">3855</span>
- <span id="L3856" rel="#L3856">3856</span>
- <span id="L3857" rel="#L3857">3857</span>
- <span id="L3858" rel="#L3858">3858</span>
- <span id="L3859" rel="#L3859">3859</span>
- <span id="L3860" rel="#L3860">3860</span>
- <span id="L3861" rel="#L3861">3861</span>
- <span id="L3862" rel="#L3862">3862</span>
- <span id="L3863" rel="#L3863">3863</span>
- <span id="L3864" rel="#L3864">3864</span>
- <span id="L3865" rel="#L3865">3865</span>
- <span id="L3866" rel="#L3866">3866</span>
- <span id="L3867" rel="#L3867">3867</span>
- <span id="L3868" rel="#L3868">3868</span>
- <span id="L3869" rel="#L3869">3869</span>
- <span id="L3870" rel="#L3870">3870</span>
- <span id="L3871" rel="#L3871">3871</span>
- <span id="L3872" rel="#L3872">3872</span>
- <span id="L3873" rel="#L3873">3873</span>
- <span id="L3874" rel="#L3874">3874</span>
- <span id="L3875" rel="#L3875">3875</span>
- <span id="L3876" rel="#L3876">3876</span>
- <span id="L3877" rel="#L3877">3877</span>
- <span id="L3878" rel="#L3878">3878</span>
- <span id="L3879" rel="#L3879">3879</span>
- <span id="L3880" rel="#L3880">3880</span>
- <span id="L3881" rel="#L3881">3881</span>
- <span id="L3882" rel="#L3882">3882</span>
- <span id="L3883" rel="#L3883">3883</span>
- <span id="L3884" rel="#L3884">3884</span>
- <span id="L3885" rel="#L3885">3885</span>
- <span id="L3886" rel="#L3886">3886</span>
- <span id="L3887" rel="#L3887">3887</span>
- <span id="L3888" rel="#L3888">3888</span>
- <span id="L3889" rel="#L3889">3889</span>
- <span id="L3890" rel="#L3890">3890</span>
- <span id="L3891" rel="#L3891">3891</span>
- <span id="L3892" rel="#L3892">3892</span>
- <span id="L3893" rel="#L3893">3893</span>
- <span id="L3894" rel="#L3894">3894</span>
- <span id="L3895" rel="#L3895">3895</span>
- <span id="L3896" rel="#L3896">3896</span>
- <span id="L3897" rel="#L3897">3897</span>
- <span id="L3898" rel="#L3898">3898</span>
- <span id="L3899" rel="#L3899">3899</span>
- <span id="L3900" rel="#L3900">3900</span>
- <span id="L3901" rel="#L3901">3901</span>
- <span id="L3902" rel="#L3902">3902</span>
- <span id="L3903" rel="#L3903">3903</span>
- <span id="L3904" rel="#L3904">3904</span>
- <span id="L3905" rel="#L3905">3905</span>
- <span id="L3906" rel="#L3906">3906</span>
- <span id="L3907" rel="#L3907">3907</span>
- <span id="L3908" rel="#L3908">3908</span>
- <span id="L3909" rel="#L3909">3909</span>
- <span id="L3910" rel="#L3910">3910</span>
- <span id="L3911" rel="#L3911">3911</span>
- <span id="L3912" rel="#L3912">3912</span>
- <span id="L3913" rel="#L3913">3913</span>
- <span id="L3914" rel="#L3914">3914</span>
- <span id="L3915" rel="#L3915">3915</span>
- <span id="L3916" rel="#L3916">3916</span>
- <span id="L3917" rel="#L3917">3917</span>
- <span id="L3918" rel="#L3918">3918</span>
- <span id="L3919" rel="#L3919">3919</span>
- <span id="L3920" rel="#L3920">3920</span>
- <span id="L3921" rel="#L3921">3921</span>
- <span id="L3922" rel="#L3922">3922</span>
- <span id="L3923" rel="#L3923">3923</span>
- <span id="L3924" rel="#L3924">3924</span>
- <span id="L3925" rel="#L3925">3925</span>
- <span id="L3926" rel="#L3926">3926</span>
- <span id="L3927" rel="#L3927">3927</span>
- <span id="L3928" rel="#L3928">3928</span>
- <span id="L3929" rel="#L3929">3929</span>
- <span id="L3930" rel="#L3930">3930</span>
- <span id="L3931" rel="#L3931">3931</span>
- <span id="L3932" rel="#L3932">3932</span>
- <span id="L3933" rel="#L3933">3933</span>
- <span id="L3934" rel="#L3934">3934</span>
- <span id="L3935" rel="#L3935">3935</span>
- <span id="L3936" rel="#L3936">3936</span>
- <span id="L3937" rel="#L3937">3937</span>
- <span id="L3938" rel="#L3938">3938</span>
- <span id="L3939" rel="#L3939">3939</span>
- <span id="L3940" rel="#L3940">3940</span>
- <span id="L3941" rel="#L3941">3941</span>
- <span id="L3942" rel="#L3942">3942</span>
- <span id="L3943" rel="#L3943">3943</span>
- <span id="L3944" rel="#L3944">3944</span>
- <span id="L3945" rel="#L3945">3945</span>
- <span id="L3946" rel="#L3946">3946</span>
- <span id="L3947" rel="#L3947">3947</span>
- <span id="L3948" rel="#L3948">3948</span>
- <span id="L3949" rel="#L3949">3949</span>
- <span id="L3950" rel="#L3950">3950</span>
- <span id="L3951" rel="#L3951">3951</span>
- <span id="L3952" rel="#L3952">3952</span>
- <span id="L3953" rel="#L3953">3953</span>
- <span id="L3954" rel="#L3954">3954</span>
- <span id="L3955" rel="#L3955">3955</span>
- <span id="L3956" rel="#L3956">3956</span>
- <span id="L3957" rel="#L3957">3957</span>
- <span id="L3958" rel="#L3958">3958</span>
- <span id="L3959" rel="#L3959">3959</span>
- <span id="L3960" rel="#L3960">3960</span>
- <span id="L3961" rel="#L3961">3961</span>
- <span id="L3962" rel="#L3962">3962</span>
- <span id="L3963" rel="#L3963">3963</span>
- <span id="L3964" rel="#L3964">3964</span>
- <span id="L3965" rel="#L3965">3965</span>
- <span id="L3966" rel="#L3966">3966</span>
- <span id="L3967" rel="#L3967">3967</span>
- <span id="L3968" rel="#L3968">3968</span>
- <span id="L3969" rel="#L3969">3969</span>
- <span id="L3970" rel="#L3970">3970</span>
- <span id="L3971" rel="#L3971">3971</span>
- <span id="L3972" rel="#L3972">3972</span>
- <span id="L3973" rel="#L3973">3973</span>
- <span id="L3974" rel="#L3974">3974</span>
- <span id="L3975" rel="#L3975">3975</span>
- <span id="L3976" rel="#L3976">3976</span>
- <span id="L3977" rel="#L3977">3977</span>
- <span id="L3978" rel="#L3978">3978</span>
- <span id="L3979" rel="#L3979">3979</span>
- <span id="L3980" rel="#L3980">3980</span>
- <span id="L3981" rel="#L3981">3981</span>
- <span id="L3982" rel="#L3982">3982</span>
- <span id="L3983" rel="#L3983">3983</span>
- <span id="L3984" rel="#L3984">3984</span>
- <span id="L3985" rel="#L3985">3985</span>
- <span id="L3986" rel="#L3986">3986</span>
- <span id="L3987" rel="#L3987">3987</span>
- <span id="L3988" rel="#L3988">3988</span>
- <span id="L3989" rel="#L3989">3989</span>
- <span id="L3990" rel="#L3990">3990</span>
- <span id="L3991" rel="#L3991">3991</span>
- <span id="L3992" rel="#L3992">3992</span>
- <span id="L3993" rel="#L3993">3993</span>
- <span id="L3994" rel="#L3994">3994</span>
- <span id="L3995" rel="#L3995">3995</span>
- <span id="L3996" rel="#L3996">3996</span>
- <span id="L3997" rel="#L3997">3997</span>
- <span id="L3998" rel="#L3998">3998</span>
- <span id="L3999" rel="#L3999">3999</span>
- <span id="L4000" rel="#L4000">4000</span>
- <span id="L4001" rel="#L4001">4001</span>
- <span id="L4002" rel="#L4002">4002</span>
- <span id="L4003" rel="#L4003">4003</span>
- <span id="L4004" rel="#L4004">4004</span>
- <span id="L4005" rel="#L4005">4005</span>
- <span id="L4006" rel="#L4006">4006</span>
- <span id="L4007" rel="#L4007">4007</span>
- <span id="L4008" rel="#L4008">4008</span>
- <span id="L4009" rel="#L4009">4009</span>
- <span id="L4010" rel="#L4010">4010</span>
- <span id="L4011" rel="#L4011">4011</span>
- <span id="L4012" rel="#L4012">4012</span>
- <span id="L4013" rel="#L4013">4013</span>
- <span id="L4014" rel="#L4014">4014</span>
- <span id="L4015" rel="#L4015">4015</span>
- <span id="L4016" rel="#L4016">4016</span>
- <span id="L4017" rel="#L4017">4017</span>
- <span id="L4018" rel="#L4018">4018</span>
- <span id="L4019" rel="#L4019">4019</span>
- <span id="L4020" rel="#L4020">4020</span>
- <span id="L4021" rel="#L4021">4021</span>
- <span id="L4022" rel="#L4022">4022</span>
- <span id="L4023" rel="#L4023">4023</span>
- <span id="L4024" rel="#L4024">4024</span>
- <span id="L4025" rel="#L4025">4025</span>
- <span id="L4026" rel="#L4026">4026</span>
- <span id="L4027" rel="#L4027">4027</span>
- <span id="L4028" rel="#L4028">4028</span>
- <span id="L4029" rel="#L4029">4029</span>
- <span id="L4030" rel="#L4030">4030</span>
- <span id="L4031" rel="#L4031">4031</span>
- <span id="L4032" rel="#L4032">4032</span>
- <span id="L4033" rel="#L4033">4033</span>
- <span id="L4034" rel="#L4034">4034</span>
- <span id="L4035" rel="#L4035">4035</span>
- <span id="L4036" rel="#L4036">4036</span>
- <span id="L4037" rel="#L4037">4037</span>
- <span id="L4038" rel="#L4038">4038</span>
- <span id="L4039" rel="#L4039">4039</span>
- <span id="L4040" rel="#L4040">4040</span>
- <span id="L4041" rel="#L4041">4041</span>
- <span id="L4042" rel="#L4042">4042</span>
- <span id="L4043" rel="#L4043">4043</span>
- <span id="L4044" rel="#L4044">4044</span>
- <span id="L4045" rel="#L4045">4045</span>
- <span id="L4046" rel="#L4046">4046</span>
- <span id="L4047" rel="#L4047">4047</span>
- <span id="L4048" rel="#L4048">4048</span>
- <span id="L4049" rel="#L4049">4049</span>
- <span id="L4050" rel="#L4050">4050</span>
- <span id="L4051" rel="#L4051">4051</span>
- <span id="L4052" rel="#L4052">4052</span>
- <span id="L4053" rel="#L4053">4053</span>
- <span id="L4054" rel="#L4054">4054</span>
- <span id="L4055" rel="#L4055">4055</span>
- <span id="L4056" rel="#L4056">4056</span>
- <span id="L4057" rel="#L4057">4057</span>
- <span id="L4058" rel="#L4058">4058</span>
- <span id="L4059" rel="#L4059">4059</span>
- <span id="L4060" rel="#L4060">4060</span>
- <span id="L4061" rel="#L4061">4061</span>
- <span id="L4062" rel="#L4062">4062</span>
- <span id="L4063" rel="#L4063">4063</span>
- <span id="L4064" rel="#L4064">4064</span>
- <span id="L4065" rel="#L4065">4065</span>
- <span id="L4066" rel="#L4066">4066</span>
- <span id="L4067" rel="#L4067">4067</span>
- <span id="L4068" rel="#L4068">4068</span>
- <span id="L4069" rel="#L4069">4069</span>
- <span id="L4070" rel="#L4070">4070</span>
- <span id="L4071" rel="#L4071">4071</span>
- <span id="L4072" rel="#L4072">4072</span>
- <span id="L4073" rel="#L4073">4073</span>
- <span id="L4074" rel="#L4074">4074</span>
- <span id="L4075" rel="#L4075">4075</span>
- <span id="L4076" rel="#L4076">4076</span>
- <span id="L4077" rel="#L4077">4077</span>
- <span id="L4078" rel="#L4078">4078</span>
- <span id="L4079" rel="#L4079">4079</span>
- <span id="L4080" rel="#L4080">4080</span>
- <span id="L4081" rel="#L4081">4081</span>
- <span id="L4082" rel="#L4082">4082</span>
- <span id="L4083" rel="#L4083">4083</span>
- <span id="L4084" rel="#L4084">4084</span>
- <span id="L4085" rel="#L4085">4085</span>
- <span id="L4086" rel="#L4086">4086</span>
- <span id="L4087" rel="#L4087">4087</span>
- <span id="L4088" rel="#L4088">4088</span>
- <span id="L4089" rel="#L4089">4089</span>
- <span id="L4090" rel="#L4090">4090</span>
- <span id="L4091" rel="#L4091">4091</span>
- <span id="L4092" rel="#L4092">4092</span>
- <span id="L4093" rel="#L4093">4093</span>
- <span id="L4094" rel="#L4094">4094</span>
- <span id="L4095" rel="#L4095">4095</span>
- <span id="L4096" rel="#L4096">4096</span>
- <span id="L4097" rel="#L4097">4097</span>
- <span id="L4098" rel="#L4098">4098</span>
- <span id="L4099" rel="#L4099">4099</span>
- <span id="L4100" rel="#L4100">4100</span>
- <span id="L4101" rel="#L4101">4101</span>
- <span id="L4102" rel="#L4102">4102</span>
- <span id="L4103" rel="#L4103">4103</span>
- <span id="L4104" rel="#L4104">4104</span>
- <span id="L4105" rel="#L4105">4105</span>
- <span id="L4106" rel="#L4106">4106</span>
- <span id="L4107" rel="#L4107">4107</span>
- <span id="L4108" rel="#L4108">4108</span>
- <span id="L4109" rel="#L4109">4109</span>
- <span id="L4110" rel="#L4110">4110</span>
- <span id="L4111" rel="#L4111">4111</span>
- <span id="L4112" rel="#L4112">4112</span>
- <span id="L4113" rel="#L4113">4113</span>
- <span id="L4114" rel="#L4114">4114</span>
- <span id="L4115" rel="#L4115">4115</span>
- <span id="L4116" rel="#L4116">4116</span>
- <span id="L4117" rel="#L4117">4117</span>
- <span id="L4118" rel="#L4118">4118</span>
- <span id="L4119" rel="#L4119">4119</span>
- <span id="L4120" rel="#L4120">4120</span>
- <span id="L4121" rel="#L4121">4121</span>
- <span id="L4122" rel="#L4122">4122</span>
- <span id="L4123" rel="#L4123">4123</span>
- <span id="L4124" rel="#L4124">4124</span>
- <span id="L4125" rel="#L4125">4125</span>
- <span id="L4126" rel="#L4126">4126</span>
- <span id="L4127" rel="#L4127">4127</span>
- <span id="L4128" rel="#L4128">4128</span>
- <span id="L4129" rel="#L4129">4129</span>
- <span id="L4130" rel="#L4130">4130</span>
- <span id="L4131" rel="#L4131">4131</span>
- <span id="L4132" rel="#L4132">4132</span>
- <span id="L4133" rel="#L4133">4133</span>
- <span id="L4134" rel="#L4134">4134</span>
- <span id="L4135" rel="#L4135">4135</span>
- <span id="L4136" rel="#L4136">4136</span>
- <span id="L4137" rel="#L4137">4137</span>
- <span id="L4138" rel="#L4138">4138</span>
- <span id="L4139" rel="#L4139">4139</span>
- <span id="L4140" rel="#L4140">4140</span>
- <span id="L4141" rel="#L4141">4141</span>
- <span id="L4142" rel="#L4142">4142</span>
- <span id="L4143" rel="#L4143">4143</span>
- <span id="L4144" rel="#L4144">4144</span>
- <span id="L4145" rel="#L4145">4145</span>
- <span id="L4146" rel="#L4146">4146</span>
- <span id="L4147" rel="#L4147">4147</span>
- <span id="L4148" rel="#L4148">4148</span>
- <span id="L4149" rel="#L4149">4149</span>
- <span id="L4150" rel="#L4150">4150</span>
- <span id="L4151" rel="#L4151">4151</span>
- <span id="L4152" rel="#L4152">4152</span>
- <span id="L4153" rel="#L4153">4153</span>
- <span id="L4154" rel="#L4154">4154</span>
- <span id="L4155" rel="#L4155">4155</span>
- <span id="L4156" rel="#L4156">4156</span>
- <span id="L4157" rel="#L4157">4157</span>
- <span id="L4158" rel="#L4158">4158</span>
- <span id="L4159" rel="#L4159">4159</span>
- <span id="L4160" rel="#L4160">4160</span>
- <span id="L4161" rel="#L4161">4161</span>
- <span id="L4162" rel="#L4162">4162</span>
- <span id="L4163" rel="#L4163">4163</span>
- <span id="L4164" rel="#L4164">4164</span>
- <span id="L4165" rel="#L4165">4165</span>
- <span id="L4166" rel="#L4166">4166</span>
- <span id="L4167" rel="#L4167">4167</span>
- <span id="L4168" rel="#L4168">4168</span>
- <span id="L4169" rel="#L4169">4169</span>
- <span id="L4170" rel="#L4170">4170</span>
- <span id="L4171" rel="#L4171">4171</span>
- <span id="L4172" rel="#L4172">4172</span>
- <span id="L4173" rel="#L4173">4173</span>
- <span id="L4174" rel="#L4174">4174</span>
- <span id="L4175" rel="#L4175">4175</span>
- <span id="L4176" rel="#L4176">4176</span>
- <span id="L4177" rel="#L4177">4177</span>
- <span id="L4178" rel="#L4178">4178</span>
- <span id="L4179" rel="#L4179">4179</span>
- <span id="L4180" rel="#L4180">4180</span>
- <span id="L4181" rel="#L4181">4181</span>
- <span id="L4182" rel="#L4182">4182</span>
- <span id="L4183" rel="#L4183">4183</span>
- <span id="L4184" rel="#L4184">4184</span>
- <span id="L4185" rel="#L4185">4185</span>
- <span id="L4186" rel="#L4186">4186</span>
- <span id="L4187" rel="#L4187">4187</span>
- <span id="L4188" rel="#L4188">4188</span>
- <span id="L4189" rel="#L4189">4189</span>
- <span id="L4190" rel="#L4190">4190</span>
- <span id="L4191" rel="#L4191">4191</span>
- <span id="L4192" rel="#L4192">4192</span>
- <span id="L4193" rel="#L4193">4193</span>
- <span id="L4194" rel="#L4194">4194</span>
- <span id="L4195" rel="#L4195">4195</span>
- <span id="L4196" rel="#L4196">4196</span>
- <span id="L4197" rel="#L4197">4197</span>
- <span id="L4198" rel="#L4198">4198</span>
- <span id="L4199" rel="#L4199">4199</span>
- <span id="L4200" rel="#L4200">4200</span>
- <span id="L4201" rel="#L4201">4201</span>
- <span id="L4202" rel="#L4202">4202</span>
- <span id="L4203" rel="#L4203">4203</span>
- <span id="L4204" rel="#L4204">4204</span>
- <span id="L4205" rel="#L4205">4205</span>
- <span id="L4206" rel="#L4206">4206</span>
- <span id="L4207" rel="#L4207">4207</span>
- <span id="L4208" rel="#L4208">4208</span>
- <span id="L4209" rel="#L4209">4209</span>
- <span id="L4210" rel="#L4210">4210</span>
- <span id="L4211" rel="#L4211">4211</span>
- <span id="L4212" rel="#L4212">4212</span>
- <span id="L4213" rel="#L4213">4213</span>
- <span id="L4214" rel="#L4214">4214</span>
- <span id="L4215" rel="#L4215">4215</span>
- <span id="L4216" rel="#L4216">4216</span>
- <span id="L4217" rel="#L4217">4217</span>
- <span id="L4218" rel="#L4218">4218</span>
- <span id="L4219" rel="#L4219">4219</span>
- <span id="L4220" rel="#L4220">4220</span>
- <span id="L4221" rel="#L4221">4221</span>
- <span id="L4222" rel="#L4222">4222</span>
- <span id="L4223" rel="#L4223">4223</span>
- <span id="L4224" rel="#L4224">4224</span>
- <span id="L4225" rel="#L4225">4225</span>
- <span id="L4226" rel="#L4226">4226</span>
- <span id="L4227" rel="#L4227">4227</span>
- <span id="L4228" rel="#L4228">4228</span>
- <span id="L4229" rel="#L4229">4229</span>
- <span id="L4230" rel="#L4230">4230</span>
- <span id="L4231" rel="#L4231">4231</span>
- <span id="L4232" rel="#L4232">4232</span>
- <span id="L4233" rel="#L4233">4233</span>
- <span id="L4234" rel="#L4234">4234</span>
- <span id="L4235" rel="#L4235">4235</span>
- <span id="L4236" rel="#L4236">4236</span>
- <span id="L4237" rel="#L4237">4237</span>
- <span id="L4238" rel="#L4238">4238</span>
- <span id="L4239" rel="#L4239">4239</span>
- <span id="L4240" rel="#L4240">4240</span>
- <span id="L4241" rel="#L4241">4241</span>
- <span id="L4242" rel="#L4242">4242</span>
- <span id="L4243" rel="#L4243">4243</span>
- <span id="L4244" rel="#L4244">4244</span>
- <span id="L4245" rel="#L4245">4245</span>
- <span id="L4246" rel="#L4246">4246</span>
- <span id="L4247" rel="#L4247">4247</span>
- <span id="L4248" rel="#L4248">4248</span>
- <span id="L4249" rel="#L4249">4249</span>
- <span id="L4250" rel="#L4250">4250</span>
- <span id="L4251" rel="#L4251">4251</span>
- <span id="L4252" rel="#L4252">4252</span>
- <span id="L4253" rel="#L4253">4253</span>
- <span id="L4254" rel="#L4254">4254</span>
- <span id="L4255" rel="#L4255">4255</span>
- <span id="L4256" rel="#L4256">4256</span>
- <span id="L4257" rel="#L4257">4257</span>
- <span id="L4258" rel="#L4258">4258</span>
- <span id="L4259" rel="#L4259">4259</span>
- <span id="L4260" rel="#L4260">4260</span>
- <span id="L4261" rel="#L4261">4261</span>
- <span id="L4262" rel="#L4262">4262</span>
- <span id="L4263" rel="#L4263">4263</span>
- <span id="L4264" rel="#L4264">4264</span>
- <span id="L4265" rel="#L4265">4265</span>
- <span id="L4266" rel="#L4266">4266</span>
- <span id="L4267" rel="#L4267">4267</span>
- <span id="L4268" rel="#L4268">4268</span>
- <span id="L4269" rel="#L4269">4269</span>
- <span id="L4270" rel="#L4270">4270</span>
- <span id="L4271" rel="#L4271">4271</span>
- <span id="L4272" rel="#L4272">4272</span>
- <span id="L4273" rel="#L4273">4273</span>
- <span id="L4274" rel="#L4274">4274</span>
- <span id="L4275" rel="#L4275">4275</span>
- <span id="L4276" rel="#L4276">4276</span>
- <span id="L4277" rel="#L4277">4277</span>
- <span id="L4278" rel="#L4278">4278</span>
- <span id="L4279" rel="#L4279">4279</span>
- <span id="L4280" rel="#L4280">4280</span>
- <span id="L4281" rel="#L4281">4281</span>
- <span id="L4282" rel="#L4282">4282</span>
- <span id="L4283" rel="#L4283">4283</span>
- <span id="L4284" rel="#L4284">4284</span>
- <span id="L4285" rel="#L4285">4285</span>
- <span id="L4286" rel="#L4286">4286</span>
- <span id="L4287" rel="#L4287">4287</span>
- <span id="L4288" rel="#L4288">4288</span>
- <span id="L4289" rel="#L4289">4289</span>
- <span id="L4290" rel="#L4290">4290</span>
- <span id="L4291" rel="#L4291">4291</span>
- <span id="L4292" rel="#L4292">4292</span>
- <span id="L4293" rel="#L4293">4293</span>
- <span id="L4294" rel="#L4294">4294</span>
- <span id="L4295" rel="#L4295">4295</span>
- <span id="L4296" rel="#L4296">4296</span>
- <span id="L4297" rel="#L4297">4297</span>
- <span id="L4298" rel="#L4298">4298</span>
- <span id="L4299" rel="#L4299">4299</span>
- <span id="L4300" rel="#L4300">4300</span>
- <span id="L4301" rel="#L4301">4301</span>
- <span id="L4302" rel="#L4302">4302</span>
- <span id="L4303" rel="#L4303">4303</span>
- <span id="L4304" rel="#L4304">4304</span>
- <span id="L4305" rel="#L4305">4305</span>
- <span id="L4306" rel="#L4306">4306</span>
- <span id="L4307" rel="#L4307">4307</span>
- <span id="L4308" rel="#L4308">4308</span>
- <span id="L4309" rel="#L4309">4309</span>
- <span id="L4310" rel="#L4310">4310</span>
- <span id="L4311" rel="#L4311">4311</span>
- <span id="L4312" rel="#L4312">4312</span>
- <span id="L4313" rel="#L4313">4313</span>
- <span id="L4314" rel="#L4314">4314</span>
- <span id="L4315" rel="#L4315">4315</span>
- <span id="L4316" rel="#L4316">4316</span>
- <span id="L4317" rel="#L4317">4317</span>
- <span id="L4318" rel="#L4318">4318</span>
- <span id="L4319" rel="#L4319">4319</span>
- <span id="L4320" rel="#L4320">4320</span>
- <span id="L4321" rel="#L4321">4321</span>
- <span id="L4322" rel="#L4322">4322</span>
- <span id="L4323" rel="#L4323">4323</span>
- <span id="L4324" rel="#L4324">4324</span>
- <span id="L4325" rel="#L4325">4325</span>
- <span id="L4326" rel="#L4326">4326</span>
- <span id="L4327" rel="#L4327">4327</span>
- <span id="L4328" rel="#L4328">4328</span>
- <span id="L4329" rel="#L4329">4329</span>
- <span id="L4330" rel="#L4330">4330</span>
- <span id="L4331" rel="#L4331">4331</span>
- <span id="L4332" rel="#L4332">4332</span>
- <span id="L4333" rel="#L4333">4333</span>
- <span id="L4334" rel="#L4334">4334</span>
- <span id="L4335" rel="#L4335">4335</span>
- <span id="L4336" rel="#L4336">4336</span>
- <span id="L4337" rel="#L4337">4337</span>
- <span id="L4338" rel="#L4338">4338</span>
- <span id="L4339" rel="#L4339">4339</span>
- <span id="L4340" rel="#L4340">4340</span>
- <span id="L4341" rel="#L4341">4341</span>
- <span id="L4342" rel="#L4342">4342</span>
- <span id="L4343" rel="#L4343">4343</span>
- <span id="L4344" rel="#L4344">4344</span>
- <span id="L4345" rel="#L4345">4345</span>
- <span id="L4346" rel="#L4346">4346</span>
- <span id="L4347" rel="#L4347">4347</span>
- <span id="L4348" rel="#L4348">4348</span>
- <span id="L4349" rel="#L4349">4349</span>
- <span id="L4350" rel="#L4350">4350</span>
- <span id="L4351" rel="#L4351">4351</span>
- <span id="L4352" rel="#L4352">4352</span>
- <span id="L4353" rel="#L4353">4353</span>
- <span id="L4354" rel="#L4354">4354</span>
- <span id="L4355" rel="#L4355">4355</span>
- <span id="L4356" rel="#L4356">4356</span>
- <span id="L4357" rel="#L4357">4357</span>
- <span id="L4358" rel="#L4358">4358</span>
- <span id="L4359" rel="#L4359">4359</span>
- <span id="L4360" rel="#L4360">4360</span>
- <span id="L4361" rel="#L4361">4361</span>
- <span id="L4362" rel="#L4362">4362</span>
- <span id="L4363" rel="#L4363">4363</span>
- <span id="L4364" rel="#L4364">4364</span>
- <span id="L4365" rel="#L4365">4365</span>
- <span id="L4366" rel="#L4366">4366</span>
- <span id="L4367" rel="#L4367">4367</span>
- <span id="L4368" rel="#L4368">4368</span>
- <span id="L4369" rel="#L4369">4369</span>
- <span id="L4370" rel="#L4370">4370</span>
- <span id="L4371" rel="#L4371">4371</span>
- <span id="L4372" rel="#L4372">4372</span>
- <span id="L4373" rel="#L4373">4373</span>
- <span id="L4374" rel="#L4374">4374</span>
- <span id="L4375" rel="#L4375">4375</span>
- <span id="L4376" rel="#L4376">4376</span>
- <span id="L4377" rel="#L4377">4377</span>
- <span id="L4378" rel="#L4378">4378</span>
- <span id="L4379" rel="#L4379">4379</span>
- <span id="L4380" rel="#L4380">4380</span>
- <span id="L4381" rel="#L4381">4381</span>
- <span id="L4382" rel="#L4382">4382</span>
- <span id="L4383" rel="#L4383">4383</span>
- <span id="L4384" rel="#L4384">4384</span>
- <span id="L4385" rel="#L4385">4385</span>
- <span id="L4386" rel="#L4386">4386</span>
- <span id="L4387" rel="#L4387">4387</span>
- <span id="L4388" rel="#L4388">4388</span>
- <span id="L4389" rel="#L4389">4389</span>
- <span id="L4390" rel="#L4390">4390</span>
- <span id="L4391" rel="#L4391">4391</span>
- <span id="L4392" rel="#L4392">4392</span>
- <span id="L4393" rel="#L4393">4393</span>
- <span id="L4394" rel="#L4394">4394</span>
- <span id="L4395" rel="#L4395">4395</span>
- <span id="L4396" rel="#L4396">4396</span>
- <span id="L4397" rel="#L4397">4397</span>
- <span id="L4398" rel="#L4398">4398</span>
- <span id="L4399" rel="#L4399">4399</span>
- <span id="L4400" rel="#L4400">4400</span>
- <span id="L4401" rel="#L4401">4401</span>
- <span id="L4402" rel="#L4402">4402</span>
- <span id="L4403" rel="#L4403">4403</span>
- <span id="L4404" rel="#L4404">4404</span>
- <span id="L4405" rel="#L4405">4405</span>
- <span id="L4406" rel="#L4406">4406</span>
- <span id="L4407" rel="#L4407">4407</span>
- <span id="L4408" rel="#L4408">4408</span>
- <span id="L4409" rel="#L4409">4409</span>
- <span id="L4410" rel="#L4410">4410</span>
- <span id="L4411" rel="#L4411">4411</span>
- <span id="L4412" rel="#L4412">4412</span>
- <span id="L4413" rel="#L4413">4413</span>
- <span id="L4414" rel="#L4414">4414</span>
- <span id="L4415" rel="#L4415">4415</span>
- <span id="L4416" rel="#L4416">4416</span>
- <span id="L4417" rel="#L4417">4417</span>
- <span id="L4418" rel="#L4418">4418</span>
- <span id="L4419" rel="#L4419">4419</span>
- <span id="L4420" rel="#L4420">4420</span>
- <span id="L4421" rel="#L4421">4421</span>
- <span id="L4422" rel="#L4422">4422</span>
- <span id="L4423" rel="#L4423">4423</span>
- <span id="L4424" rel="#L4424">4424</span>
- <span id="L4425" rel="#L4425">4425</span>
- <span id="L4426" rel="#L4426">4426</span>
- <span id="L4427" rel="#L4427">4427</span>
- <span id="L4428" rel="#L4428">4428</span>
- <span id="L4429" rel="#L4429">4429</span>
- <span id="L4430" rel="#L4430">4430</span>
- <span id="L4431" rel="#L4431">4431</span>
- <span id="L4432" rel="#L4432">4432</span>
- <span id="L4433" rel="#L4433">4433</span>
- <span id="L4434" rel="#L4434">4434</span>
- <span id="L4435" rel="#L4435">4435</span>
- <span id="L4436" rel="#L4436">4436</span>
- <span id="L4437" rel="#L4437">4437</span>
- <span id="L4438" rel="#L4438">4438</span>
- <span id="L4439" rel="#L4439">4439</span>
- <span id="L4440" rel="#L4440">4440</span>
- <span id="L4441" rel="#L4441">4441</span>
- <span id="L4442" rel="#L4442">4442</span>
- <span id="L4443" rel="#L4443">4443</span>
- <span id="L4444" rel="#L4444">4444</span>
- <span id="L4445" rel="#L4445">4445</span>
- <span id="L4446" rel="#L4446">4446</span>
- <span id="L4447" rel="#L4447">4447</span>
- <span id="L4448" rel="#L4448">4448</span>
- <span id="L4449" rel="#L4449">4449</span>
- <span id="L4450" rel="#L4450">4450</span>
- <span id="L4451" rel="#L4451">4451</span>
- <span id="L4452" rel="#L4452">4452</span>
- <span id="L4453" rel="#L4453">4453</span>
- <span id="L4454" rel="#L4454">4454</span>
- <span id="L4455" rel="#L4455">4455</span>
- <span id="L4456" rel="#L4456">4456</span>
- <span id="L4457" rel="#L4457">4457</span>
- <span id="L4458" rel="#L4458">4458</span>
- <span id="L4459" rel="#L4459">4459</span>
- <span id="L4460" rel="#L4460">4460</span>
- <span id="L4461" rel="#L4461">4461</span>
- <span id="L4462" rel="#L4462">4462</span>
- <span id="L4463" rel="#L4463">4463</span>
- <span id="L4464" rel="#L4464">4464</span>
- <span id="L4465" rel="#L4465">4465</span>
- <span id="L4466" rel="#L4466">4466</span>
- <span id="L4467" rel="#L4467">4467</span>
- <span id="L4468" rel="#L4468">4468</span>
- <span id="L4469" rel="#L4469">4469</span>
- <span id="L4470" rel="#L4470">4470</span>
- <span id="L4471" rel="#L4471">4471</span>
- <span id="L4472" rel="#L4472">4472</span>
- <span id="L4473" rel="#L4473">4473</span>
- <span id="L4474" rel="#L4474">4474</span>
- <span id="L4475" rel="#L4475">4475</span>
- <span id="L4476" rel="#L4476">4476</span>
- <span id="L4477" rel="#L4477">4477</span>
- <span id="L4478" rel="#L4478">4478</span>
- <span id="L4479" rel="#L4479">4479</span>
- <span id="L4480" rel="#L4480">4480</span>
- <span id="L4481" rel="#L4481">4481</span>
- <span id="L4482" rel="#L4482">4482</span>
- <span id="L4483" rel="#L4483">4483</span>
- <span id="L4484" rel="#L4484">4484</span>
- <span id="L4485" rel="#L4485">4485</span>
- <span id="L4486" rel="#L4486">4486</span>
- <span id="L4487" rel="#L4487">4487</span>
- <span id="L4488" rel="#L4488">4488</span>
- <span id="L4489" rel="#L4489">4489</span>
- <span id="L4490" rel="#L4490">4490</span>
- <span id="L4491" rel="#L4491">4491</span>
- <span id="L4492" rel="#L4492">4492</span>
- <span id="L4493" rel="#L4493">4493</span>
- <span id="L4494" rel="#L4494">4494</span>
- <span id="L4495" rel="#L4495">4495</span>
- <span id="L4496" rel="#L4496">4496</span>
- <span id="L4497" rel="#L4497">4497</span>
- <span id="L4498" rel="#L4498">4498</span>
- <span id="L4499" rel="#L4499">4499</span>
- <span id="L4500" rel="#L4500">4500</span>
- <span id="L4501" rel="#L4501">4501</span>
- <span id="L4502" rel="#L4502">4502</span>
- <span id="L4503" rel="#L4503">4503</span>
- <span id="L4504" rel="#L4504">4504</span>
- <span id="L4505" rel="#L4505">4505</span>
- <span id="L4506" rel="#L4506">4506</span>
- <span id="L4507" rel="#L4507">4507</span>
- <span id="L4508" rel="#L4508">4508</span>
- <span id="L4509" rel="#L4509">4509</span>
- <span id="L4510" rel="#L4510">4510</span>
- <span id="L4511" rel="#L4511">4511</span>
- <span id="L4512" rel="#L4512">4512</span>
- <span id="L4513" rel="#L4513">4513</span>
- <span id="L4514" rel="#L4514">4514</span>
- <span id="L4515" rel="#L4515">4515</span>
- <span id="L4516" rel="#L4516">4516</span>
- <span id="L4517" rel="#L4517">4517</span>
- <span id="L4518" rel="#L4518">4518</span>
- <span id="L4519" rel="#L4519">4519</span>
- <span id="L4520" rel="#L4520">4520</span>
- <span id="L4521" rel="#L4521">4521</span>
- <span id="L4522" rel="#L4522">4522</span>
- <span id="L4523" rel="#L4523">4523</span>
- <span id="L4524" rel="#L4524">4524</span>
- <span id="L4525" rel="#L4525">4525</span>
- <span id="L4526" rel="#L4526">4526</span>
- <span id="L4527" rel="#L4527">4527</span>
- <span id="L4528" rel="#L4528">4528</span>
- <span id="L4529" rel="#L4529">4529</span>
- <span id="L4530" rel="#L4530">4530</span>
- <span id="L4531" rel="#L4531">4531</span>
- <span id="L4532" rel="#L4532">4532</span>
- <span id="L4533" rel="#L4533">4533</span>
- <span id="L4534" rel="#L4534">4534</span>
- <span id="L4535" rel="#L4535">4535</span>
- <span id="L4536" rel="#L4536">4536</span>
- <span id="L4537" rel="#L4537">4537</span>
- <span id="L4538" rel="#L4538">4538</span>
- <span id="L4539" rel="#L4539">4539</span>
- <span id="L4540" rel="#L4540">4540</span>
- <span id="L4541" rel="#L4541">4541</span>
- <span id="L4542" rel="#L4542">4542</span>
- <span id="L4543" rel="#L4543">4543</span>
- <span id="L4544" rel="#L4544">4544</span>
- <span id="L4545" rel="#L4545">4545</span>
- <span id="L4546" rel="#L4546">4546</span>
- <span id="L4547" rel="#L4547">4547</span>
- <span id="L4548" rel="#L4548">4548</span>
- <span id="L4549" rel="#L4549">4549</span>
- <span id="L4550" rel="#L4550">4550</span>
- <span id="L4551" rel="#L4551">4551</span>
- <span id="L4552" rel="#L4552">4552</span>
- <span id="L4553" rel="#L4553">4553</span>
- <span id="L4554" rel="#L4554">4554</span>
- <span id="L4555" rel="#L4555">4555</span>
- <span id="L4556" rel="#L4556">4556</span>
- <span id="L4557" rel="#L4557">4557</span>
- <span id="L4558" rel="#L4558">4558</span>
- <span id="L4559" rel="#L4559">4559</span>
- <span id="L4560" rel="#L4560">4560</span>
- <span id="L4561" rel="#L4561">4561</span>
- <span id="L4562" rel="#L4562">4562</span>
- <span id="L4563" rel="#L4563">4563</span>
- <span id="L4564" rel="#L4564">4564</span>
- <span id="L4565" rel="#L4565">4565</span>
- <span id="L4566" rel="#L4566">4566</span>
- <span id="L4567" rel="#L4567">4567</span>
- <span id="L4568" rel="#L4568">4568</span>
- <span id="L4569" rel="#L4569">4569</span>
- <span id="L4570" rel="#L4570">4570</span>
- <span id="L4571" rel="#L4571">4571</span>
- <span id="L4572" rel="#L4572">4572</span>
- <span id="L4573" rel="#L4573">4573</span>
- <span id="L4574" rel="#L4574">4574</span>
- <span id="L4575" rel="#L4575">4575</span>
- <span id="L4576" rel="#L4576">4576</span>
- <span id="L4577" rel="#L4577">4577</span>
- <span id="L4578" rel="#L4578">4578</span>
- <span id="L4579" rel="#L4579">4579</span>
- <span id="L4580" rel="#L4580">4580</span>
- <span id="L4581" rel="#L4581">4581</span>
- <span id="L4582" rel="#L4582">4582</span>
- <span id="L4583" rel="#L4583">4583</span>
- <span id="L4584" rel="#L4584">4584</span>
- <span id="L4585" rel="#L4585">4585</span>
- <span id="L4586" rel="#L4586">4586</span>
- <span id="L4587" rel="#L4587">4587</span>
- <span id="L4588" rel="#L4588">4588</span>
- <span id="L4589" rel="#L4589">4589</span>
- <span id="L4590" rel="#L4590">4590</span>
- <span id="L4591" rel="#L4591">4591</span>
- <span id="L4592" rel="#L4592">4592</span>
- <span id="L4593" rel="#L4593">4593</span>
- <span id="L4594" rel="#L4594">4594</span>
- <span id="L4595" rel="#L4595">4595</span>
- <span id="L4596" rel="#L4596">4596</span>
- <span id="L4597" rel="#L4597">4597</span>
- <span id="L4598" rel="#L4598">4598</span>
- <span id="L4599" rel="#L4599">4599</span>
- <span id="L4600" rel="#L4600">4600</span>
- <span id="L4601" rel="#L4601">4601</span>
- <span id="L4602" rel="#L4602">4602</span>
- <span id="L4603" rel="#L4603">4603</span>
- <span id="L4604" rel="#L4604">4604</span>
- <span id="L4605" rel="#L4605">4605</span>
- <span id="L4606" rel="#L4606">4606</span>
- <span id="L4607" rel="#L4607">4607</span>
- <span id="L4608" rel="#L4608">4608</span>
- <span id="L4609" rel="#L4609">4609</span>
- <span id="L4610" rel="#L4610">4610</span>
- <span id="L4611" rel="#L4611">4611</span>
- <span id="L4612" rel="#L4612">4612</span>
- <span id="L4613" rel="#L4613">4613</span>
- <span id="L4614" rel="#L4614">4614</span>
- <span id="L4615" rel="#L4615">4615</span>
- <span id="L4616" rel="#L4616">4616</span>
- <span id="L4617" rel="#L4617">4617</span>
- <span id="L4618" rel="#L4618">4618</span>
- <span id="L4619" rel="#L4619">4619</span>
- <span id="L4620" rel="#L4620">4620</span>
- <span id="L4621" rel="#L4621">4621</span>
- <span id="L4622" rel="#L4622">4622</span>
- <span id="L4623" rel="#L4623">4623</span>
- <span id="L4624" rel="#L4624">4624</span>
- <span id="L4625" rel="#L4625">4625</span>
- <span id="L4626" rel="#L4626">4626</span>
- <span id="L4627" rel="#L4627">4627</span>
- <span id="L4628" rel="#L4628">4628</span>
- <span id="L4629" rel="#L4629">4629</span>
- <span id="L4630" rel="#L4630">4630</span>
- <span id="L4631" rel="#L4631">4631</span>
- <span id="L4632" rel="#L4632">4632</span>
- <span id="L4633" rel="#L4633">4633</span>
- <span id="L4634" rel="#L4634">4634</span>
- <span id="L4635" rel="#L4635">4635</span>
- <span id="L4636" rel="#L4636">4636</span>
- <span id="L4637" rel="#L4637">4637</span>
- <span id="L4638" rel="#L4638">4638</span>
- <span id="L4639" rel="#L4639">4639</span>
- <span id="L4640" rel="#L4640">4640</span>
- <span id="L4641" rel="#L4641">4641</span>
- <span id="L4642" rel="#L4642">4642</span>
- <span id="L4643" rel="#L4643">4643</span>
- <span id="L4644" rel="#L4644">4644</span>
- <span id="L4645" rel="#L4645">4645</span>
- <span id="L4646" rel="#L4646">4646</span>
- <span id="L4647" rel="#L4647">4647</span>
- <span id="L4648" rel="#L4648">4648</span>
- <span id="L4649" rel="#L4649">4649</span>
- <span id="L4650" rel="#L4650">4650</span>
- <span id="L4651" rel="#L4651">4651</span>
- <span id="L4652" rel="#L4652">4652</span>
- <span id="L4653" rel="#L4653">4653</span>
- <span id="L4654" rel="#L4654">4654</span>
- <span id="L4655" rel="#L4655">4655</span>
- <span id="L4656" rel="#L4656">4656</span>
- <span id="L4657" rel="#L4657">4657</span>
- <span id="L4658" rel="#L4658">4658</span>
- <span id="L4659" rel="#L4659">4659</span>
- <span id="L4660" rel="#L4660">4660</span>
- <span id="L4661" rel="#L4661">4661</span>
- <span id="L4662" rel="#L4662">4662</span>
- <span id="L4663" rel="#L4663">4663</span>
- <span id="L4664" rel="#L4664">4664</span>
- <span id="L4665" rel="#L4665">4665</span>
- <span id="L4666" rel="#L4666">4666</span>
- <span id="L4667" rel="#L4667">4667</span>
- <span id="L4668" rel="#L4668">4668</span>
- <span id="L4669" rel="#L4669">4669</span>
- <span id="L4670" rel="#L4670">4670</span>
- <span id="L4671" rel="#L4671">4671</span>
- <span id="L4672" rel="#L4672">4672</span>
- <span id="L4673" rel="#L4673">4673</span>
- <span id="L4674" rel="#L4674">4674</span>
- <span id="L4675" rel="#L4675">4675</span>
- <span id="L4676" rel="#L4676">4676</span>
- <span id="L4677" rel="#L4677">4677</span>
- <span id="L4678" rel="#L4678">4678</span>
- <span id="L4679" rel="#L4679">4679</span>
- <span id="L4680" rel="#L4680">4680</span>
- <span id="L4681" rel="#L4681">4681</span>
- <span id="L4682" rel="#L4682">4682</span>
- <span id="L4683" rel="#L4683">4683</span>
- <span id="L4684" rel="#L4684">4684</span>
- <span id="L4685" rel="#L4685">4685</span>
- <span id="L4686" rel="#L4686">4686</span>
- <span id="L4687" rel="#L4687">4687</span>
- <span id="L4688" rel="#L4688">4688</span>
- <span id="L4689" rel="#L4689">4689</span>
- <span id="L4690" rel="#L4690">4690</span>
- <span id="L4691" rel="#L4691">4691</span>
- <span id="L4692" rel="#L4692">4692</span>
- <span id="L4693" rel="#L4693">4693</span>
- <span id="L4694" rel="#L4694">4694</span>
- <span id="L4695" rel="#L4695">4695</span>
- <span id="L4696" rel="#L4696">4696</span>
- <span id="L4697" rel="#L4697">4697</span>
- <span id="L4698" rel="#L4698">4698</span>
- <span id="L4699" rel="#L4699">4699</span>
- <span id="L4700" rel="#L4700">4700</span>
- <span id="L4701" rel="#L4701">4701</span>
- <span id="L4702" rel="#L4702">4702</span>
- <span id="L4703" rel="#L4703">4703</span>
- <span id="L4704" rel="#L4704">4704</span>
- <span id="L4705" rel="#L4705">4705</span>
- <span id="L4706" rel="#L4706">4706</span>
- <span id="L4707" rel="#L4707">4707</span>
- <span id="L4708" rel="#L4708">4708</span>
- <span id="L4709" rel="#L4709">4709</span>
- <span id="L4710" rel="#L4710">4710</span>
- <span id="L4711" rel="#L4711">4711</span>
- <span id="L4712" rel="#L4712">4712</span>
- <span id="L4713" rel="#L4713">4713</span>
- <span id="L4714" rel="#L4714">4714</span>
- <span id="L4715" rel="#L4715">4715</span>
- <span id="L4716" rel="#L4716">4716</span>
- <span id="L4717" rel="#L4717">4717</span>
- <span id="L4718" rel="#L4718">4718</span>
- <span id="L4719" rel="#L4719">4719</span>
- <span id="L4720" rel="#L4720">4720</span>
- <span id="L4721" rel="#L4721">4721</span>
- <span id="L4722" rel="#L4722">4722</span>
- <span id="L4723" rel="#L4723">4723</span>
- <span id="L4724" rel="#L4724">4724</span>
- <span id="L4725" rel="#L4725">4725</span>
- <span id="L4726" rel="#L4726">4726</span>
- <span id="L4727" rel="#L4727">4727</span>
- <span id="L4728" rel="#L4728">4728</span>
- <span id="L4729" rel="#L4729">4729</span>
- <span id="L4730" rel="#L4730">4730</span>
- <span id="L4731" rel="#L4731">4731</span>
- <span id="L4732" rel="#L4732">4732</span>
- <span id="L4733" rel="#L4733">4733</span>
- <span id="L4734" rel="#L4734">4734</span>
- <span id="L4735" rel="#L4735">4735</span>
- <span id="L4736" rel="#L4736">4736</span>
- <span id="L4737" rel="#L4737">4737</span>
- <span id="L4738" rel="#L4738">4738</span>
- <span id="L4739" rel="#L4739">4739</span>
- <span id="L4740" rel="#L4740">4740</span>
- <span id="L4741" rel="#L4741">4741</span>
- <span id="L4742" rel="#L4742">4742</span>
- <span id="L4743" rel="#L4743">4743</span>
- <span id="L4744" rel="#L4744">4744</span>
- <span id="L4745" rel="#L4745">4745</span>
- <span id="L4746" rel="#L4746">4746</span>
- <span id="L4747" rel="#L4747">4747</span>
- <span id="L4748" rel="#L4748">4748</span>
- <span id="L4749" rel="#L4749">4749</span>
- <span id="L4750" rel="#L4750">4750</span>
- <span id="L4751" rel="#L4751">4751</span>
- <span id="L4752" rel="#L4752">4752</span>
- <span id="L4753" rel="#L4753">4753</span>
- <span id="L4754" rel="#L4754">4754</span>
- <span id="L4755" rel="#L4755">4755</span>
- <span id="L4756" rel="#L4756">4756</span>
- <span id="L4757" rel="#L4757">4757</span>
- <span id="L4758" rel="#L4758">4758</span>
- <span id="L4759" rel="#L4759">4759</span>
- <span id="L4760" rel="#L4760">4760</span>
- <span id="L4761" rel="#L4761">4761</span>
- <span id="L4762" rel="#L4762">4762</span>
- <span id="L4763" rel="#L4763">4763</span>
- <span id="L4764" rel="#L4764">4764</span>
- <span id="L4765" rel="#L4765">4765</span>
- <span id="L4766" rel="#L4766">4766</span>
- <span id="L4767" rel="#L4767">4767</span>
- <span id="L4768" rel="#L4768">4768</span>
- <span id="L4769" rel="#L4769">4769</span>
- <span id="L4770" rel="#L4770">4770</span>
- <span id="L4771" rel="#L4771">4771</span>
- <span id="L4772" rel="#L4772">4772</span>
- <span id="L4773" rel="#L4773">4773</span>
- <span id="L4774" rel="#L4774">4774</span>
- <span id="L4775" rel="#L4775">4775</span>
- <span id="L4776" rel="#L4776">4776</span>
- <span id="L4777" rel="#L4777">4777</span>
- <span id="L4778" rel="#L4778">4778</span>
- <span id="L4779" rel="#L4779">4779</span>
- <span id="L4780" rel="#L4780">4780</span>
- <span id="L4781" rel="#L4781">4781</span>
- <span id="L4782" rel="#L4782">4782</span>
- <span id="L4783" rel="#L4783">4783</span>
- <span id="L4784" rel="#L4784">4784</span>
- <span id="L4785" rel="#L4785">4785</span>
- <span id="L4786" rel="#L4786">4786</span>
- <span id="L4787" rel="#L4787">4787</span>
- <span id="L4788" rel="#L4788">4788</span>
- <span id="L4789" rel="#L4789">4789</span>
- <span id="L4790" rel="#L4790">4790</span>
- <span id="L4791" rel="#L4791">4791</span>
- <span id="L4792" rel="#L4792">4792</span>
- <span id="L4793" rel="#L4793">4793</span>
- <span id="L4794" rel="#L4794">4794</span>
- <span id="L4795" rel="#L4795">4795</span>
- <span id="L4796" rel="#L4796">4796</span>
- <span id="L4797" rel="#L4797">4797</span>
- <span id="L4798" rel="#L4798">4798</span>
- <span id="L4799" rel="#L4799">4799</span>
- <span id="L4800" rel="#L4800">4800</span>
- <span id="L4801" rel="#L4801">4801</span>
- <span id="L4802" rel="#L4802">4802</span>
- <span id="L4803" rel="#L4803">4803</span>
- <span id="L4804" rel="#L4804">4804</span>
- <span id="L4805" rel="#L4805">4805</span>
- <span id="L4806" rel="#L4806">4806</span>
- <span id="L4807" rel="#L4807">4807</span>
- <span id="L4808" rel="#L4808">4808</span>
- <span id="L4809" rel="#L4809">4809</span>
- <span id="L4810" rel="#L4810">4810</span>
- <span id="L4811" rel="#L4811">4811</span>
- <span id="L4812" rel="#L4812">4812</span>
- <span id="L4813" rel="#L4813">4813</span>
- <span id="L4814" rel="#L4814">4814</span>
- <span id="L4815" rel="#L4815">4815</span>
- <span id="L4816" rel="#L4816">4816</span>
- <span id="L4817" rel="#L4817">4817</span>
- <span id="L4818" rel="#L4818">4818</span>
- <span id="L4819" rel="#L4819">4819</span>
- <span id="L4820" rel="#L4820">4820</span>
- <span id="L4821" rel="#L4821">4821</span>
- <span id="L4822" rel="#L4822">4822</span>
- <span id="L4823" rel="#L4823">4823</span>
- <span id="L4824" rel="#L4824">4824</span>
- <span id="L4825" rel="#L4825">4825</span>
- <span id="L4826" rel="#L4826">4826</span>
- <span id="L4827" rel="#L4827">4827</span>
- <span id="L4828" rel="#L4828">4828</span>
- <span id="L4829" rel="#L4829">4829</span>
- <span id="L4830" rel="#L4830">4830</span>
- <span id="L4831" rel="#L4831">4831</span>
- <span id="L4832" rel="#L4832">4832</span>
- <span id="L4833" rel="#L4833">4833</span>
- <span id="L4834" rel="#L4834">4834</span>
- <span id="L4835" rel="#L4835">4835</span>
- <span id="L4836" rel="#L4836">4836</span>
- <span id="L4837" rel="#L4837">4837</span>
- <span id="L4838" rel="#L4838">4838</span>
- <span id="L4839" rel="#L4839">4839</span>
- <span id="L4840" rel="#L4840">4840</span>
- <span id="L4841" rel="#L4841">4841</span>
- <span id="L4842" rel="#L4842">4842</span>
- <span id="L4843" rel="#L4843">4843</span>
- <span id="L4844" rel="#L4844">4844</span>
- <span id="L4845" rel="#L4845">4845</span>
- <span id="L4846" rel="#L4846">4846</span>
- <span id="L4847" rel="#L4847">4847</span>
- <span id="L4848" rel="#L4848">4848</span>
- <span id="L4849" rel="#L4849">4849</span>
- <span id="L4850" rel="#L4850">4850</span>
- <span id="L4851" rel="#L4851">4851</span>
- <span id="L4852" rel="#L4852">4852</span>
- <span id="L4853" rel="#L4853">4853</span>
- <span id="L4854" rel="#L4854">4854</span>
- <span id="L4855" rel="#L4855">4855</span>
- <span id="L4856" rel="#L4856">4856</span>
- <span id="L4857" rel="#L4857">4857</span>
- <span id="L4858" rel="#L4858">4858</span>
- <span id="L4859" rel="#L4859">4859</span>
- <span id="L4860" rel="#L4860">4860</span>
- <span id="L4861" rel="#L4861">4861</span>
- <span id="L4862" rel="#L4862">4862</span>
- <span id="L4863" rel="#L4863">4863</span>
- <span id="L4864" rel="#L4864">4864</span>
- <span id="L4865" rel="#L4865">4865</span>
- <span id="L4866" rel="#L4866">4866</span>
- <span id="L4867" rel="#L4867">4867</span>
- <span id="L4868" rel="#L4868">4868</span>
- <span id="L4869" rel="#L4869">4869</span>
- <span id="L4870" rel="#L4870">4870</span>
- <span id="L4871" rel="#L4871">4871</span>
- <span id="L4872" rel="#L4872">4872</span>
- <span id="L4873" rel="#L4873">4873</span>
- <span id="L4874" rel="#L4874">4874</span>
- <span id="L4875" rel="#L4875">4875</span>
- <span id="L4876" rel="#L4876">4876</span>
- <span id="L4877" rel="#L4877">4877</span>
- <span id="L4878" rel="#L4878">4878</span>
- <span id="L4879" rel="#L4879">4879</span>
- <span id="L4880" rel="#L4880">4880</span>
- <span id="L4881" rel="#L4881">4881</span>
- <span id="L4882" rel="#L4882">4882</span>
- <span id="L4883" rel="#L4883">4883</span>
- <span id="L4884" rel="#L4884">4884</span>
- <span id="L4885" rel="#L4885">4885</span>
- <span id="L4886" rel="#L4886">4886</span>
- <span id="L4887" rel="#L4887">4887</span>
- <span id="L4888" rel="#L4888">4888</span>
- <span id="L4889" rel="#L4889">4889</span>
- <span id="L4890" rel="#L4890">4890</span>
- <span id="L4891" rel="#L4891">4891</span>
- <span id="L4892" rel="#L4892">4892</span>
- <span id="L4893" rel="#L4893">4893</span>
- <span id="L4894" rel="#L4894">4894</span>
- <span id="L4895" rel="#L4895">4895</span>
- <span id="L4896" rel="#L4896">4896</span>
- <span id="L4897" rel="#L4897">4897</span>
- <span id="L4898" rel="#L4898">4898</span>
- <span id="L4899" rel="#L4899">4899</span>
- <span id="L4900" rel="#L4900">4900</span>
- <span id="L4901" rel="#L4901">4901</span>
- <span id="L4902" rel="#L4902">4902</span>
- <span id="L4903" rel="#L4903">4903</span>
- <span id="L4904" rel="#L4904">4904</span>
- <span id="L4905" rel="#L4905">4905</span>
- <span id="L4906" rel="#L4906">4906</span>
- <span id="L4907" rel="#L4907">4907</span>
- <span id="L4908" rel="#L4908">4908</span>
- <span id="L4909" rel="#L4909">4909</span>
- <span id="L4910" rel="#L4910">4910</span>
- <span id="L4911" rel="#L4911">4911</span>
- <span id="L4912" rel="#L4912">4912</span>
- <span id="L4913" rel="#L4913">4913</span>
- <span id="L4914" rel="#L4914">4914</span>
- <span id="L4915" rel="#L4915">4915</span>
- <span id="L4916" rel="#L4916">4916</span>
- <span id="L4917" rel="#L4917">4917</span>
- <span id="L4918" rel="#L4918">4918</span>
- <span id="L4919" rel="#L4919">4919</span>
- <span id="L4920" rel="#L4920">4920</span>
- <span id="L4921" rel="#L4921">4921</span>
- <span id="L4922" rel="#L4922">4922</span>
- <span id="L4923" rel="#L4923">4923</span>
- <span id="L4924" rel="#L4924">4924</span>
- <span id="L4925" rel="#L4925">4925</span>
- <span id="L4926" rel="#L4926">4926</span>
- <span id="L4927" rel="#L4927">4927</span>
- <span id="L4928" rel="#L4928">4928</span>
- <span id="L4929" rel="#L4929">4929</span>
- <span id="L4930" rel="#L4930">4930</span>
- <span id="L4931" rel="#L4931">4931</span>
- <span id="L4932" rel="#L4932">4932</span>
- <span id="L4933" rel="#L4933">4933</span>
- <span id="L4934" rel="#L4934">4934</span>
- <span id="L4935" rel="#L4935">4935</span>
- <span id="L4936" rel="#L4936">4936</span>
- <span id="L4937" rel="#L4937">4937</span>
- <span id="L4938" rel="#L4938">4938</span>
- <span id="L4939" rel="#L4939">4939</span>
- <span id="L4940" rel="#L4940">4940</span>
- <span id="L4941" rel="#L4941">4941</span>
- <span id="L4942" rel="#L4942">4942</span>
- <span id="L4943" rel="#L4943">4943</span>
- <span id="L4944" rel="#L4944">4944</span>
- <span id="L4945" rel="#L4945">4945</span>
- <span id="L4946" rel="#L4946">4946</span>
- <span id="L4947" rel="#L4947">4947</span>
- <span id="L4948" rel="#L4948">4948</span>
- <span id="L4949" rel="#L4949">4949</span>
- <span id="L4950" rel="#L4950">4950</span>
- <span id="L4951" rel="#L4951">4951</span>
- <span id="L4952" rel="#L4952">4952</span>
- <span id="L4953" rel="#L4953">4953</span>
- <span id="L4954" rel="#L4954">4954</span>
- <span id="L4955" rel="#L4955">4955</span>
- <span id="L4956" rel="#L4956">4956</span>
- <span id="L4957" rel="#L4957">4957</span>
- <span id="L4958" rel="#L4958">4958</span>
- <span id="L4959" rel="#L4959">4959</span>
- <span id="L4960" rel="#L4960">4960</span>
- <span id="L4961" rel="#L4961">4961</span>
- <span id="L4962" rel="#L4962">4962</span>
- <span id="L4963" rel="#L4963">4963</span>
- <span id="L4964" rel="#L4964">4964</span>
- <span id="L4965" rel="#L4965">4965</span>
- <span id="L4966" rel="#L4966">4966</span>
- <span id="L4967" rel="#L4967">4967</span>
- <span id="L4968" rel="#L4968">4968</span>
- <span id="L4969" rel="#L4969">4969</span>
- <span id="L4970" rel="#L4970">4970</span>
- <span id="L4971" rel="#L4971">4971</span>
- <span id="L4972" rel="#L4972">4972</span>
- <span id="L4973" rel="#L4973">4973</span>
- <span id="L4974" rel="#L4974">4974</span>
- <span id="L4975" rel="#L4975">4975</span>
- <span id="L4976" rel="#L4976">4976</span>
- <span id="L4977" rel="#L4977">4977</span>
- <span id="L4978" rel="#L4978">4978</span>
- <span id="L4979" rel="#L4979">4979</span>
- <span id="L4980" rel="#L4980">4980</span>
- <span id="L4981" rel="#L4981">4981</span>
- <span id="L4982" rel="#L4982">4982</span>
- <span id="L4983" rel="#L4983">4983</span>
- <span id="L4984" rel="#L4984">4984</span>
- <span id="L4985" rel="#L4985">4985</span>
- <span id="L4986" rel="#L4986">4986</span>
- <span id="L4987" rel="#L4987">4987</span>
- <span id="L4988" rel="#L4988">4988</span>
- <span id="L4989" rel="#L4989">4989</span>
- <span id="L4990" rel="#L4990">4990</span>
- <span id="L4991" rel="#L4991">4991</span>
- <span id="L4992" rel="#L4992">4992</span>
- <span id="L4993" rel="#L4993">4993</span>
- <span id="L4994" rel="#L4994">4994</span>
- <span id="L4995" rel="#L4995">4995</span>
- <span id="L4996" rel="#L4996">4996</span>
- <span id="L4997" rel="#L4997">4997</span>
- <span id="L4998" rel="#L4998">4998</span>
- <span id="L4999" rel="#L4999">4999</span>
- <span id="L5000" rel="#L5000">5000</span>
- <span id="L5001" rel="#L5001">5001</span>
- <span id="L5002" rel="#L5002">5002</span>
- <span id="L5003" rel="#L5003">5003</span>
- <span id="L5004" rel="#L5004">5004</span>
- <span id="L5005" rel="#L5005">5005</span>
- <span id="L5006" rel="#L5006">5006</span>
- <span id="L5007" rel="#L5007">5007</span>
- <span id="L5008" rel="#L5008">5008</span>
- <span id="L5009" rel="#L5009">5009</span>
- <span id="L5010" rel="#L5010">5010</span>
- <span id="L5011" rel="#L5011">5011</span>
- <span id="L5012" rel="#L5012">5012</span>
- <span id="L5013" rel="#L5013">5013</span>
- <span id="L5014" rel="#L5014">5014</span>
- <span id="L5015" rel="#L5015">5015</span>
- <span id="L5016" rel="#L5016">5016</span>
- <span id="L5017" rel="#L5017">5017</span>
- <span id="L5018" rel="#L5018">5018</span>
- <span id="L5019" rel="#L5019">5019</span>
- <span id="L5020" rel="#L5020">5020</span>
- <span id="L5021" rel="#L5021">5021</span>
- <span id="L5022" rel="#L5022">5022</span>
- <span id="L5023" rel="#L5023">5023</span>
- <span id="L5024" rel="#L5024">5024</span>
- <span id="L5025" rel="#L5025">5025</span>
- <span id="L5026" rel="#L5026">5026</span>
- <span id="L5027" rel="#L5027">5027</span>
- <span id="L5028" rel="#L5028">5028</span>
- <span id="L5029" rel="#L5029">5029</span>
- <span id="L5030" rel="#L5030">5030</span>
- <span id="L5031" rel="#L5031">5031</span>
- <span id="L5032" rel="#L5032">5032</span>
- <span id="L5033" rel="#L5033">5033</span>
- <span id="L5034" rel="#L5034">5034</span>
- <span id="L5035" rel="#L5035">5035</span>
- <span id="L5036" rel="#L5036">5036</span>
- <span id="L5037" rel="#L5037">5037</span>
- <span id="L5038" rel="#L5038">5038</span>
- <span id="L5039" rel="#L5039">5039</span>
- <span id="L5040" rel="#L5040">5040</span>
- <span id="L5041" rel="#L5041">5041</span>
- <span id="L5042" rel="#L5042">5042</span>
- <span id="L5043" rel="#L5043">5043</span>
- <span id="L5044" rel="#L5044">5044</span>
- <span id="L5045" rel="#L5045">5045</span>
- <span id="L5046" rel="#L5046">5046</span>
- <span id="L5047" rel="#L5047">5047</span>
- <span id="L5048" rel="#L5048">5048</span>
- <span id="L5049" rel="#L5049">5049</span>
- <span id="L5050" rel="#L5050">5050</span>
- <span id="L5051" rel="#L5051">5051</span>
- <span id="L5052" rel="#L5052">5052</span>
- <span id="L5053" rel="#L5053">5053</span>
- <span id="L5054" rel="#L5054">5054</span>
- <span id="L5055" rel="#L5055">5055</span>
- <span id="L5056" rel="#L5056">5056</span>
- <span id="L5057" rel="#L5057">5057</span>
- <span id="L5058" rel="#L5058">5058</span>
- <span id="L5059" rel="#L5059">5059</span>
- <span id="L5060" rel="#L5060">5060</span>
- <span id="L5061" rel="#L5061">5061</span>
- <span id="L5062" rel="#L5062">5062</span>
- <span id="L5063" rel="#L5063">5063</span>
- <span id="L5064" rel="#L5064">5064</span>
- <span id="L5065" rel="#L5065">5065</span>
- <span id="L5066" rel="#L5066">5066</span>
- <span id="L5067" rel="#L5067">5067</span>
- <span id="L5068" rel="#L5068">5068</span>
- <span id="L5069" rel="#L5069">5069</span>
- <span id="L5070" rel="#L5070">5070</span>
- <span id="L5071" rel="#L5071">5071</span>
- <span id="L5072" rel="#L5072">5072</span>
- <span id="L5073" rel="#L5073">5073</span>
- <span id="L5074" rel="#L5074">5074</span>
- <span id="L5075" rel="#L5075">5075</span>
- <span id="L5076" rel="#L5076">5076</span>
- <span id="L5077" rel="#L5077">5077</span>
- <span id="L5078" rel="#L5078">5078</span>
- <span id="L5079" rel="#L5079">5079</span>
- <span id="L5080" rel="#L5080">5080</span>
- <span id="L5081" rel="#L5081">5081</span>
- <span id="L5082" rel="#L5082">5082</span>
- <span id="L5083" rel="#L5083">5083</span>
- <span id="L5084" rel="#L5084">5084</span>
- <span id="L5085" rel="#L5085">5085</span>
- <span id="L5086" rel="#L5086">5086</span>
- <span id="L5087" rel="#L5087">5087</span>
- <span id="L5088" rel="#L5088">5088</span>
- <span id="L5089" rel="#L5089">5089</span>
- <span id="L5090" rel="#L5090">5090</span>
- <span id="L5091" rel="#L5091">5091</span>
- <span id="L5092" rel="#L5092">5092</span>
- <span id="L5093" rel="#L5093">5093</span>
- <span id="L5094" rel="#L5094">5094</span>
- <span id="L5095" rel="#L5095">5095</span>
- <span id="L5096" rel="#L5096">5096</span>
- <span id="L5097" rel="#L5097">5097</span>
- <span id="L5098" rel="#L5098">5098</span>
- <span id="L5099" rel="#L5099">5099</span>
- <span id="L5100" rel="#L5100">5100</span>
- <span id="L5101" rel="#L5101">5101</span>
- <span id="L5102" rel="#L5102">5102</span>
- <span id="L5103" rel="#L5103">5103</span>
- <span id="L5104" rel="#L5104">5104</span>
- <span id="L5105" rel="#L5105">5105</span>
- <span id="L5106" rel="#L5106">5106</span>
- <span id="L5107" rel="#L5107">5107</span>
- <span id="L5108" rel="#L5108">5108</span>
- <span id="L5109" rel="#L5109">5109</span>
- <span id="L5110" rel="#L5110">5110</span>
- <span id="L5111" rel="#L5111">5111</span>
- <span id="L5112" rel="#L5112">5112</span>
- <span id="L5113" rel="#L5113">5113</span>
- <span id="L5114" rel="#L5114">5114</span>
- <span id="L5115" rel="#L5115">5115</span>
- <span id="L5116" rel="#L5116">5116</span>
- <span id="L5117" rel="#L5117">5117</span>
- <span id="L5118" rel="#L5118">5118</span>
- <span id="L5119" rel="#L5119">5119</span>
- <span id="L5120" rel="#L5120">5120</span>
- <span id="L5121" rel="#L5121">5121</span>
- <span id="L5122" rel="#L5122">5122</span>
- <span id="L5123" rel="#L5123">5123</span>
- <span id="L5124" rel="#L5124">5124</span>
- <span id="L5125" rel="#L5125">5125</span>
- <span id="L5126" rel="#L5126">5126</span>
- <span id="L5127" rel="#L5127">5127</span>
- <span id="L5128" rel="#L5128">5128</span>
- <span id="L5129" rel="#L5129">5129</span>
- <span id="L5130" rel="#L5130">5130</span>
- <span id="L5131" rel="#L5131">5131</span>
- <span id="L5132" rel="#L5132">5132</span>
- <span id="L5133" rel="#L5133">5133</span>
- <span id="L5134" rel="#L5134">5134</span>
- <span id="L5135" rel="#L5135">5135</span>
- <span id="L5136" rel="#L5136">5136</span>
- <span id="L5137" rel="#L5137">5137</span>
- <span id="L5138" rel="#L5138">5138</span>
- <span id="L5139" rel="#L5139">5139</span>
- <span id="L5140" rel="#L5140">5140</span>
- <span id="L5141" rel="#L5141">5141</span>
- <span id="L5142" rel="#L5142">5142</span>
- <span id="L5143" rel="#L5143">5143</span>
- <span id="L5144" rel="#L5144">5144</span>
- <span id="L5145" rel="#L5145">5145</span>
- <span id="L5146" rel="#L5146">5146</span>
- <span id="L5147" rel="#L5147">5147</span>
- <span id="L5148" rel="#L5148">5148</span>
- <span id="L5149" rel="#L5149">5149</span>
- <span id="L5150" rel="#L5150">5150</span>
- <span id="L5151" rel="#L5151">5151</span>
- <span id="L5152" rel="#L5152">5152</span>
- <span id="L5153" rel="#L5153">5153</span>
- <span id="L5154" rel="#L5154">5154</span>
- <span id="L5155" rel="#L5155">5155</span>
- <span id="L5156" rel="#L5156">5156</span>
- <span id="L5157" rel="#L5157">5157</span>
- <span id="L5158" rel="#L5158">5158</span>
- <span id="L5159" rel="#L5159">5159</span>
- <span id="L5160" rel="#L5160">5160</span>
- <span id="L5161" rel="#L5161">5161</span>
- <span id="L5162" rel="#L5162">5162</span>
- <span id="L5163" rel="#L5163">5163</span>
- <span id="L5164" rel="#L5164">5164</span>
- <span id="L5165" rel="#L5165">5165</span>
- <span id="L5166" rel="#L5166">5166</span>
- <span id="L5167" rel="#L5167">5167</span>
- <span id="L5168" rel="#L5168">5168</span>
- <span id="L5169" rel="#L5169">5169</span>
- <span id="L5170" rel="#L5170">5170</span>
- <span id="L5171" rel="#L5171">5171</span>
- <span id="L5172" rel="#L5172">5172</span>
- <span id="L5173" rel="#L5173">5173</span>
- <span id="L5174" rel="#L5174">5174</span>
- <span id="L5175" rel="#L5175">5175</span>
- <span id="L5176" rel="#L5176">5176</span>
- <span id="L5177" rel="#L5177">5177</span>
- <span id="L5178" rel="#L5178">5178</span>
- <span id="L5179" rel="#L5179">5179</span>
- <span id="L5180" rel="#L5180">5180</span>
- <span id="L5181" rel="#L5181">5181</span>
- <span id="L5182" rel="#L5182">5182</span>
- <span id="L5183" rel="#L5183">5183</span>
- <span id="L5184" rel="#L5184">5184</span>
- <span id="L5185" rel="#L5185">5185</span>
- <span id="L5186" rel="#L5186">5186</span>
- <span id="L5187" rel="#L5187">5187</span>
- <span id="L5188" rel="#L5188">5188</span>
- <span id="L5189" rel="#L5189">5189</span>
- <span id="L5190" rel="#L5190">5190</span>
- <span id="L5191" rel="#L5191">5191</span>
- <span id="L5192" rel="#L5192">5192</span>
- <span id="L5193" rel="#L5193">5193</span>
- <span id="L5194" rel="#L5194">5194</span>
- <span id="L5195" rel="#L5195">5195</span>
- <span id="L5196" rel="#L5196">5196</span>
- <span id="L5197" rel="#L5197">5197</span>
- <span id="L5198" rel="#L5198">5198</span>
- <span id="L5199" rel="#L5199">5199</span>
- <span id="L5200" rel="#L5200">5200</span>
- <span id="L5201" rel="#L5201">5201</span>
- <span id="L5202" rel="#L5202">5202</span>
- <span id="L5203" rel="#L5203">5203</span>
- <span id="L5204" rel="#L5204">5204</span>
- <span id="L5205" rel="#L5205">5205</span>
- <span id="L5206" rel="#L5206">5206</span>
- <span id="L5207" rel="#L5207">5207</span>
- <span id="L5208" rel="#L5208">5208</span>
- <span id="L5209" rel="#L5209">5209</span>
- <span id="L5210" rel="#L5210">5210</span>
- <span id="L5211" rel="#L5211">5211</span>
- <span id="L5212" rel="#L5212">5212</span>
- <span id="L5213" rel="#L5213">5213</span>
- <span id="L5214" rel="#L5214">5214</span>
- <span id="L5215" rel="#L5215">5215</span>
- <span id="L5216" rel="#L5216">5216</span>
- <span id="L5217" rel="#L5217">5217</span>
- <span id="L5218" rel="#L5218">5218</span>
- <span id="L5219" rel="#L5219">5219</span>
- <span id="L5220" rel="#L5220">5220</span>
- <span id="L5221" rel="#L5221">5221</span>
- <span id="L5222" rel="#L5222">5222</span>
- <span id="L5223" rel="#L5223">5223</span>
- <span id="L5224" rel="#L5224">5224</span>
- <span id="L5225" rel="#L5225">5225</span>
- <span id="L5226" rel="#L5226">5226</span>
- <span id="L5227" rel="#L5227">5227</span>
- <span id="L5228" rel="#L5228">5228</span>
- <span id="L5229" rel="#L5229">5229</span>
- <span id="L5230" rel="#L5230">5230</span>
- <span id="L5231" rel="#L5231">5231</span>
- <span id="L5232" rel="#L5232">5232</span>
- <span id="L5233" rel="#L5233">5233</span>
- <span id="L5234" rel="#L5234">5234</span>
- <span id="L5235" rel="#L5235">5235</span>
- <span id="L5236" rel="#L5236">5236</span>
- <span id="L5237" rel="#L5237">5237</span>
- <span id="L5238" rel="#L5238">5238</span>
- <span id="L5239" rel="#L5239">5239</span>
- <span id="L5240" rel="#L5240">5240</span>
- <span id="L5241" rel="#L5241">5241</span>
- <span id="L5242" rel="#L5242">5242</span>
- <span id="L5243" rel="#L5243">5243</span>
- <span id="L5244" rel="#L5244">5244</span>
- <span id="L5245" rel="#L5245">5245</span>
- <span id="L5246" rel="#L5246">5246</span>
- <span id="L5247" rel="#L5247">5247</span>
- <span id="L5248" rel="#L5248">5248</span>
- <span id="L5249" rel="#L5249">5249</span>
- <span id="L5250" rel="#L5250">5250</span>
- <span id="L5251" rel="#L5251">5251</span>
- <span id="L5252" rel="#L5252">5252</span>
- <span id="L5253" rel="#L5253">5253</span>
- <span id="L5254" rel="#L5254">5254</span>
- <span id="L5255" rel="#L5255">5255</span>
- <span id="L5256" rel="#L5256">5256</span>
- <span id="L5257" rel="#L5257">5257</span>
- <span id="L5258" rel="#L5258">5258</span>
- <span id="L5259" rel="#L5259">5259</span>
- <span id="L5260" rel="#L5260">5260</span>
- <span id="L5261" rel="#L5261">5261</span>
- <span id="L5262" rel="#L5262">5262</span>
- <span id="L5263" rel="#L5263">5263</span>
- <span id="L5264" rel="#L5264">5264</span>
- <span id="L5265" rel="#L5265">5265</span>
- <span id="L5266" rel="#L5266">5266</span>
- <span id="L5267" rel="#L5267">5267</span>
- <span id="L5268" rel="#L5268">5268</span>
- <span id="L5269" rel="#L5269">5269</span>
- <span id="L5270" rel="#L5270">5270</span>
- <span id="L5271" rel="#L5271">5271</span>
- <span id="L5272" rel="#L5272">5272</span>
- <span id="L5273" rel="#L5273">5273</span>
- <span id="L5274" rel="#L5274">5274</span>
- <span id="L5275" rel="#L5275">5275</span>
- <span id="L5276" rel="#L5276">5276</span>
- <span id="L5277" rel="#L5277">5277</span>
- <span id="L5278" rel="#L5278">5278</span>
- <span id="L5279" rel="#L5279">5279</span>
- <span id="L5280" rel="#L5280">5280</span>
- <span id="L5281" rel="#L5281">5281</span>
- <span id="L5282" rel="#L5282">5282</span>
- <span id="L5283" rel="#L5283">5283</span>
- <span id="L5284" rel="#L5284">5284</span>
- <span id="L5285" rel="#L5285">5285</span>
- <span id="L5286" rel="#L5286">5286</span>
- <span id="L5287" rel="#L5287">5287</span>
- <span id="L5288" rel="#L5288">5288</span>
- <span id="L5289" rel="#L5289">5289</span>
- <span id="L5290" rel="#L5290">5290</span>
- <span id="L5291" rel="#L5291">5291</span>
- <span id="L5292" rel="#L5292">5292</span>
- <span id="L5293" rel="#L5293">5293</span>
- <span id="L5294" rel="#L5294">5294</span>
- <span id="L5295" rel="#L5295">5295</span>
- <span id="L5296" rel="#L5296">5296</span>
- <span id="L5297" rel="#L5297">5297</span>
- <span id="L5298" rel="#L5298">5298</span>
- <span id="L5299" rel="#L5299">5299</span>
- <span id="L5300" rel="#L5300">5300</span>
- <span id="L5301" rel="#L5301">5301</span>
- <span id="L5302" rel="#L5302">5302</span>
- <span id="L5303" rel="#L5303">5303</span>
- <span id="L5304" rel="#L5304">5304</span>
- <span id="L5305" rel="#L5305">5305</span>
- <span id="L5306" rel="#L5306">5306</span>
- <span id="L5307" rel="#L5307">5307</span>
- <span id="L5308" rel="#L5308">5308</span>
- <span id="L5309" rel="#L5309">5309</span>
- <span id="L5310" rel="#L5310">5310</span>
- <span id="L5311" rel="#L5311">5311</span>
- <span id="L5312" rel="#L5312">5312</span>
- <span id="L5313" rel="#L5313">5313</span>
- <span id="L5314" rel="#L5314">5314</span>
- <span id="L5315" rel="#L5315">5315</span>
- <span id="L5316" rel="#L5316">5316</span>
- <span id="L5317" rel="#L5317">5317</span>
- <span id="L5318" rel="#L5318">5318</span>
- <span id="L5319" rel="#L5319">5319</span>
- <span id="L5320" rel="#L5320">5320</span>
- <span id="L5321" rel="#L5321">5321</span>
- <span id="L5322" rel="#L5322">5322</span>
- <span id="L5323" rel="#L5323">5323</span>
- <span id="L5324" rel="#L5324">5324</span>
- <span id="L5325" rel="#L5325">5325</span>
- <span id="L5326" rel="#L5326">5326</span>
- <span id="L5327" rel="#L5327">5327</span>
- <span id="L5328" rel="#L5328">5328</span>
- <span id="L5329" rel="#L5329">5329</span>
- <span id="L5330" rel="#L5330">5330</span>
- <span id="L5331" rel="#L5331">5331</span>
- <span id="L5332" rel="#L5332">5332</span>
- <span id="L5333" rel="#L5333">5333</span>
- <span id="L5334" rel="#L5334">5334</span>
- <span id="L5335" rel="#L5335">5335</span>
- <span id="L5336" rel="#L5336">5336</span>
- <span id="L5337" rel="#L5337">5337</span>
- <span id="L5338" rel="#L5338">5338</span>
- <span id="L5339" rel="#L5339">5339</span>
- <span id="L5340" rel="#L5340">5340</span>
- <span id="L5341" rel="#L5341">5341</span>
- <span id="L5342" rel="#L5342">5342</span>
- <span id="L5343" rel="#L5343">5343</span>
- <span id="L5344" rel="#L5344">5344</span>
- <span id="L5345" rel="#L5345">5345</span>
- <span id="L5346" rel="#L5346">5346</span>
- <span id="L5347" rel="#L5347">5347</span>
- <span id="L5348" rel="#L5348">5348</span>
- <span id="L5349" rel="#L5349">5349</span>
- <span id="L5350" rel="#L5350">5350</span>
- <span id="L5351" rel="#L5351">5351</span>
- <span id="L5352" rel="#L5352">5352</span>
- <span id="L5353" rel="#L5353">5353</span>
- <span id="L5354" rel="#L5354">5354</span>
- <span id="L5355" rel="#L5355">5355</span>
- <span id="L5356" rel="#L5356">5356</span>
- <span id="L5357" rel="#L5357">5357</span>
- <span id="L5358" rel="#L5358">5358</span>
- <span id="L5359" rel="#L5359">5359</span>
- <span id="L5360" rel="#L5360">5360</span>
- <span id="L5361" rel="#L5361">5361</span>
- <span id="L5362" rel="#L5362">5362</span>
- <span id="L5363" rel="#L5363">5363</span>
- <span id="L5364" rel="#L5364">5364</span>
- <span id="L5365" rel="#L5365">5365</span>
- <span id="L5366" rel="#L5366">5366</span>
- <span id="L5367" rel="#L5367">5367</span>
- <span id="L5368" rel="#L5368">5368</span>
- <span id="L5369" rel="#L5369">5369</span>
- <span id="L5370" rel="#L5370">5370</span>
- <span id="L5371" rel="#L5371">5371</span>
- <span id="L5372" rel="#L5372">5372</span>
- <span id="L5373" rel="#L5373">5373</span>
- <span id="L5374" rel="#L5374">5374</span>
- <span id="L5375" rel="#L5375">5375</span>
- <span id="L5376" rel="#L5376">5376</span>
- <span id="L5377" rel="#L5377">5377</span>
- <span id="L5378" rel="#L5378">5378</span>
- <span id="L5379" rel="#L5379">5379</span>
- <span id="L5380" rel="#L5380">5380</span>
- <span id="L5381" rel="#L5381">5381</span>
- <span id="L5382" rel="#L5382">5382</span>
- <span id="L5383" rel="#L5383">5383</span>
- <span id="L5384" rel="#L5384">5384</span>
- <span id="L5385" rel="#L5385">5385</span>
- <span id="L5386" rel="#L5386">5386</span>
- <span id="L5387" rel="#L5387">5387</span>
- <span id="L5388" rel="#L5388">5388</span>
- <span id="L5389" rel="#L5389">5389</span>
- <span id="L5390" rel="#L5390">5390</span>
- <span id="L5391" rel="#L5391">5391</span>
- <span id="L5392" rel="#L5392">5392</span>
- <span id="L5393" rel="#L5393">5393</span>
- <span id="L5394" rel="#L5394">5394</span>
- <span id="L5395" rel="#L5395">5395</span>
- <span id="L5396" rel="#L5396">5396</span>
- <span id="L5397" rel="#L5397">5397</span>
- <span id="L5398" rel="#L5398">5398</span>
- <span id="L5399" rel="#L5399">5399</span>
- <span id="L5400" rel="#L5400">5400</span>
- <span id="L5401" rel="#L5401">5401</span>
- <span id="L5402" rel="#L5402">5402</span>
- <span id="L5403" rel="#L5403">5403</span>
- <span id="L5404" rel="#L5404">5404</span>
- <span id="L5405" rel="#L5405">5405</span>
- <span id="L5406" rel="#L5406">5406</span>
- <span id="L5407" rel="#L5407">5407</span>
- <span id="L5408" rel="#L5408">5408</span>
- <span id="L5409" rel="#L5409">5409</span>
- <span id="L5410" rel="#L5410">5410</span>
- <span id="L5411" rel="#L5411">5411</span>
- <span id="L5412" rel="#L5412">5412</span>
- <span id="L5413" rel="#L5413">5413</span>
- <span id="L5414" rel="#L5414">5414</span>
- <span id="L5415" rel="#L5415">5415</span>
- <span id="L5416" rel="#L5416">5416</span>
- <span id="L5417" rel="#L5417">5417</span>
- <span id="L5418" rel="#L5418">5418</span>
- <span id="L5419" rel="#L5419">5419</span>
- <span id="L5420" rel="#L5420">5420</span>
- <span id="L5421" rel="#L5421">5421</span>
- <span id="L5422" rel="#L5422">5422</span>
- <span id="L5423" rel="#L5423">5423</span>
- <span id="L5424" rel="#L5424">5424</span>
- <span id="L5425" rel="#L5425">5425</span>
- <span id="L5426" rel="#L5426">5426</span>
- <span id="L5427" rel="#L5427">5427</span>
- <span id="L5428" rel="#L5428">5428</span>
- <span id="L5429" rel="#L5429">5429</span>
- <span id="L5430" rel="#L5430">5430</span>
- <span id="L5431" rel="#L5431">5431</span>
- <span id="L5432" rel="#L5432">5432</span>
- <span id="L5433" rel="#L5433">5433</span>
- <span id="L5434" rel="#L5434">5434</span>
- <span id="L5435" rel="#L5435">5435</span>
- <span id="L5436" rel="#L5436">5436</span>
- <span id="L5437" rel="#L5437">5437</span>
- <span id="L5438" rel="#L5438">5438</span>
- <span id="L5439" rel="#L5439">5439</span>
- <span id="L5440" rel="#L5440">5440</span>
- <span id="L5441" rel="#L5441">5441</span>
- <span id="L5442" rel="#L5442">5442</span>
- <span id="L5443" rel="#L5443">5443</span>
- <span id="L5444" rel="#L5444">5444</span>
- <span id="L5445" rel="#L5445">5445</span>
- <span id="L5446" rel="#L5446">5446</span>
- <span id="L5447" rel="#L5447">5447</span>
- <span id="L5448" rel="#L5448">5448</span>
- <span id="L5449" rel="#L5449">5449</span>
- <span id="L5450" rel="#L5450">5450</span>
- <span id="L5451" rel="#L5451">5451</span>
- <span id="L5452" rel="#L5452">5452</span>
- <span id="L5453" rel="#L5453">5453</span>
- <span id="L5454" rel="#L5454">5454</span>
- <span id="L5455" rel="#L5455">5455</span>
- <span id="L5456" rel="#L5456">5456</span>
- <span id="L5457" rel="#L5457">5457</span>
- <span id="L5458" rel="#L5458">5458</span>
- <span id="L5459" rel="#L5459">5459</span>
- <span id="L5460" rel="#L5460">5460</span>
- <span id="L5461" rel="#L5461">5461</span>
- <span id="L5462" rel="#L5462">5462</span>
- <span id="L5463" rel="#L5463">5463</span>
- <span id="L5464" rel="#L5464">5464</span>
- <span id="L5465" rel="#L5465">5465</span>
- <span id="L5466" rel="#L5466">5466</span>
- <span id="L5467" rel="#L5467">5467</span>
- <span id="L5468" rel="#L5468">5468</span>
- <span id="L5469" rel="#L5469">5469</span>
- <span id="L5470" rel="#L5470">5470</span>
- <span id="L5471" rel="#L5471">5471</span>
- <span id="L5472" rel="#L5472">5472</span>
- <span id="L5473" rel="#L5473">5473</span>
- <span id="L5474" rel="#L5474">5474</span>
- <span id="L5475" rel="#L5475">5475</span>
- <span id="L5476" rel="#L5476">5476</span>
- <span id="L5477" rel="#L5477">5477</span>
- <span id="L5478" rel="#L5478">5478</span>
- <span id="L5479" rel="#L5479">5479</span>
- <span id="L5480" rel="#L5480">5480</span>
- <span id="L5481" rel="#L5481">5481</span>
- <span id="L5482" rel="#L5482">5482</span>
- <span id="L5483" rel="#L5483">5483</span>
- <span id="L5484" rel="#L5484">5484</span>
- <span id="L5485" rel="#L5485">5485</span>
- <span id="L5486" rel="#L5486">5486</span>
- <span id="L5487" rel="#L5487">5487</span>
- <span id="L5488" rel="#L5488">5488</span>
- <span id="L5489" rel="#L5489">5489</span>
- <span id="L5490" rel="#L5490">5490</span>
- <span id="L5491" rel="#L5491">5491</span>
- <span id="L5492" rel="#L5492">5492</span>
- <span id="L5493" rel="#L5493">5493</span>
- <span id="L5494" rel="#L5494">5494</span>
- <span id="L5495" rel="#L5495">5495</span>
- <span id="L5496" rel="#L5496">5496</span>
- <span id="L5497" rel="#L5497">5497</span>
- <span id="L5498" rel="#L5498">5498</span>
- <span id="L5499" rel="#L5499">5499</span>
- <span id="L5500" rel="#L5500">5500</span>
- <span id="L5501" rel="#L5501">5501</span>
- <span id="L5502" rel="#L5502">5502</span>
- <span id="L5503" rel="#L5503">5503</span>
- <span id="L5504" rel="#L5504">5504</span>
- <span id="L5505" rel="#L5505">5505</span>
- <span id="L5506" rel="#L5506">5506</span>
- <span id="L5507" rel="#L5507">5507</span>
- <span id="L5508" rel="#L5508">5508</span>
- <span id="L5509" rel="#L5509">5509</span>
- <span id="L5510" rel="#L5510">5510</span>
- <span id="L5511" rel="#L5511">5511</span>
- <span id="L5512" rel="#L5512">5512</span>
- <span id="L5513" rel="#L5513">5513</span>
- <span id="L5514" rel="#L5514">5514</span>
- <span id="L5515" rel="#L5515">5515</span>
- <span id="L5516" rel="#L5516">5516</span>
- <span id="L5517" rel="#L5517">5517</span>
- <span id="L5518" rel="#L5518">5518</span>
- <span id="L5519" rel="#L5519">5519</span>
- <span id="L5520" rel="#L5520">5520</span>
- <span id="L5521" rel="#L5521">5521</span>
- <span id="L5522" rel="#L5522">5522</span>
- <span id="L5523" rel="#L5523">5523</span>
- <span id="L5524" rel="#L5524">5524</span>
- <span id="L5525" rel="#L5525">5525</span>
- <span id="L5526" rel="#L5526">5526</span>
- <span id="L5527" rel="#L5527">5527</span>
- <span id="L5528" rel="#L5528">5528</span>
- <span id="L5529" rel="#L5529">5529</span>
- <span id="L5530" rel="#L5530">5530</span>
- <span id="L5531" rel="#L5531">5531</span>
- <span id="L5532" rel="#L5532">5532</span>
- <span id="L5533" rel="#L5533">5533</span>
- <span id="L5534" rel="#L5534">5534</span>
- <span id="L5535" rel="#L5535">5535</span>
- <span id="L5536" rel="#L5536">5536</span>
- <span id="L5537" rel="#L5537">5537</span>
- <span id="L5538" rel="#L5538">5538</span>
- <span id="L5539" rel="#L5539">5539</span>
- <span id="L5540" rel="#L5540">5540</span>
- <span id="L5541" rel="#L5541">5541</span>
- <span id="L5542" rel="#L5542">5542</span>
- <span id="L5543" rel="#L5543">5543</span>
- <span id="L5544" rel="#L5544">5544</span>
- <span id="L5545" rel="#L5545">5545</span>
- <span id="L5546" rel="#L5546">5546</span>
- <span id="L5547" rel="#L5547">5547</span>
- <span id="L5548" rel="#L5548">5548</span>
- <span id="L5549" rel="#L5549">5549</span>
- <span id="L5550" rel="#L5550">5550</span>
- <span id="L5551" rel="#L5551">5551</span>
- <span id="L5552" rel="#L5552">5552</span>
- <span id="L5553" rel="#L5553">5553</span>
- <span id="L5554" rel="#L5554">5554</span>
- <span id="L5555" rel="#L5555">5555</span>
- <span id="L5556" rel="#L5556">5556</span>
- <span id="L5557" rel="#L5557">5557</span>
- <span id="L5558" rel="#L5558">5558</span>
- <span id="L5559" rel="#L5559">5559</span>
- <span id="L5560" rel="#L5560">5560</span>
- <span id="L5561" rel="#L5561">5561</span>
- <span id="L5562" rel="#L5562">5562</span>
- <span id="L5563" rel="#L5563">5563</span>
- <span id="L5564" rel="#L5564">5564</span>
- <span id="L5565" rel="#L5565">5565</span>
- <span id="L5566" rel="#L5566">5566</span>
- <span id="L5567" rel="#L5567">5567</span>
- <span id="L5568" rel="#L5568">5568</span>
- <span id="L5569" rel="#L5569">5569</span>
- <span id="L5570" rel="#L5570">5570</span>
- <span id="L5571" rel="#L5571">5571</span>
- <span id="L5572" rel="#L5572">5572</span>
- <span id="L5573" rel="#L5573">5573</span>
- <span id="L5574" rel="#L5574">5574</span>
- <span id="L5575" rel="#L5575">5575</span>
- <span id="L5576" rel="#L5576">5576</span>
- <span id="L5577" rel="#L5577">5577</span>
- <span id="L5578" rel="#L5578">5578</span>
- <span id="L5579" rel="#L5579">5579</span>
- <span id="L5580" rel="#L5580">5580</span>
- <span id="L5581" rel="#L5581">5581</span>
- <span id="L5582" rel="#L5582">5582</span>
- <span id="L5583" rel="#L5583">5583</span>
- <span id="L5584" rel="#L5584">5584</span>
- <span id="L5585" rel="#L5585">5585</span>
- <span id="L5586" rel="#L5586">5586</span>
- <span id="L5587" rel="#L5587">5587</span>
- <span id="L5588" rel="#L5588">5588</span>
- <span id="L5589" rel="#L5589">5589</span>
- <span id="L5590" rel="#L5590">5590</span>
- <span id="L5591" rel="#L5591">5591</span>
- <span id="L5592" rel="#L5592">5592</span>
- <span id="L5593" rel="#L5593">5593</span>
- <span id="L5594" rel="#L5594">5594</span>
- <span id="L5595" rel="#L5595">5595</span>
- <span id="L5596" rel="#L5596">5596</span>
- <span id="L5597" rel="#L5597">5597</span>
- <span id="L5598" rel="#L5598">5598</span>
- <span id="L5599" rel="#L5599">5599</span>
- <span id="L5600" rel="#L5600">5600</span>
- <span id="L5601" rel="#L5601">5601</span>
- <span id="L5602" rel="#L5602">5602</span>
- <span id="L5603" rel="#L5603">5603</span>
- <span id="L5604" rel="#L5604">5604</span>
- <span id="L5605" rel="#L5605">5605</span>
- <span id="L5606" rel="#L5606">5606</span>
- <span id="L5607" rel="#L5607">5607</span>
- <span id="L5608" rel="#L5608">5608</span>
- <span id="L5609" rel="#L5609">5609</span>
- <span id="L5610" rel="#L5610">5610</span>
- <span id="L5611" rel="#L5611">5611</span>
- <span id="L5612" rel="#L5612">5612</span>
- <span id="L5613" rel="#L5613">5613</span>
- <span id="L5614" rel="#L5614">5614</span>
- <span id="L5615" rel="#L5615">5615</span>
- <span id="L5616" rel="#L5616">5616</span>
- <span id="L5617" rel="#L5617">5617</span>
- <span id="L5618" rel="#L5618">5618</span>
- <span id="L5619" rel="#L5619">5619</span>
- <span id="L5620" rel="#L5620">5620</span>
- <span id="L5621" rel="#L5621">5621</span>
- <span id="L5622" rel="#L5622">5622</span>
- <span id="L5623" rel="#L5623">5623</span>
- <span id="L5624" rel="#L5624">5624</span>
- <span id="L5625" rel="#L5625">5625</span>
- <span id="L5626" rel="#L5626">5626</span>
- <span id="L5627" rel="#L5627">5627</span>
- <span id="L5628" rel="#L5628">5628</span>
- <span id="L5629" rel="#L5629">5629</span>
- <span id="L5630" rel="#L5630">5630</span>
- <span id="L5631" rel="#L5631">5631</span>
- <span id="L5632" rel="#L5632">5632</span>
- <span id="L5633" rel="#L5633">5633</span>
- <span id="L5634" rel="#L5634">5634</span>
- <span id="L5635" rel="#L5635">5635</span>
- <span id="L5636" rel="#L5636">5636</span>
- <span id="L5637" rel="#L5637">5637</span>
- <span id="L5638" rel="#L5638">5638</span>
- <span id="L5639" rel="#L5639">5639</span>
- <span id="L5640" rel="#L5640">5640</span>
- <span id="L5641" rel="#L5641">5641</span>
- <span id="L5642" rel="#L5642">5642</span>
- <span id="L5643" rel="#L5643">5643</span>
- <span id="L5644" rel="#L5644">5644</span>
- <span id="L5645" rel="#L5645">5645</span>
- <span id="L5646" rel="#L5646">5646</span>
- <span id="L5647" rel="#L5647">5647</span>
- <span id="L5648" rel="#L5648">5648</span>
- <span id="L5649" rel="#L5649">5649</span>
- <span id="L5650" rel="#L5650">5650</span>
- <span id="L5651" rel="#L5651">5651</span>
- <span id="L5652" rel="#L5652">5652</span>
- <span id="L5653" rel="#L5653">5653</span>
- <span id="L5654" rel="#L5654">5654</span>
- <span id="L5655" rel="#L5655">5655</span>
- <span id="L5656" rel="#L5656">5656</span>
- <span id="L5657" rel="#L5657">5657</span>
- <span id="L5658" rel="#L5658">5658</span>
- <span id="L5659" rel="#L5659">5659</span>
- <span id="L5660" rel="#L5660">5660</span>
- <span id="L5661" rel="#L5661">5661</span>
- <span id="L5662" rel="#L5662">5662</span>
- <span id="L5663" rel="#L5663">5663</span>
- <span id="L5664" rel="#L5664">5664</span>
- <span id="L5665" rel="#L5665">5665</span>
- <span id="L5666" rel="#L5666">5666</span>
- <span id="L5667" rel="#L5667">5667</span>
- <span id="L5668" rel="#L5668">5668</span>
- <span id="L5669" rel="#L5669">5669</span>
- <span id="L5670" rel="#L5670">5670</span>
- <span id="L5671" rel="#L5671">5671</span>
- <span id="L5672" rel="#L5672">5672</span>
- <span id="L5673" rel="#L5673">5673</span>
- <span id="L5674" rel="#L5674">5674</span>
- <span id="L5675" rel="#L5675">5675</span>
- <span id="L5676" rel="#L5676">5676</span>
- <span id="L5677" rel="#L5677">5677</span>
- <span id="L5678" rel="#L5678">5678</span>
- <span id="L5679" rel="#L5679">5679</span>
- <span id="L5680" rel="#L5680">5680</span>
- <span id="L5681" rel="#L5681">5681</span>
- <span id="L5682" rel="#L5682">5682</span>
- <span id="L5683" rel="#L5683">5683</span>
- <span id="L5684" rel="#L5684">5684</span>
- <span id="L5685" rel="#L5685">5685</span>
- <span id="L5686" rel="#L5686">5686</span>
- <span id="L5687" rel="#L5687">5687</span>
- <span id="L5688" rel="#L5688">5688</span>
- <span id="L5689" rel="#L5689">5689</span>
- <span id="L5690" rel="#L5690">5690</span>
- <span id="L5691" rel="#L5691">5691</span>
- <span id="L5692" rel="#L5692">5692</span>
- <span id="L5693" rel="#L5693">5693</span>
- <span id="L5694" rel="#L5694">5694</span>
- <span id="L5695" rel="#L5695">5695</span>
- <span id="L5696" rel="#L5696">5696</span>
- <span id="L5697" rel="#L5697">5697</span>
- <span id="L5698" rel="#L5698">5698</span>
- <span id="L5699" rel="#L5699">5699</span>
- <span id="L5700" rel="#L5700">5700</span>
- <span id="L5701" rel="#L5701">5701</span>
- <span id="L5702" rel="#L5702">5702</span>
- <span id="L5703" rel="#L5703">5703</span>
- <span id="L5704" rel="#L5704">5704</span>
- <span id="L5705" rel="#L5705">5705</span>
- <span id="L5706" rel="#L5706">5706</span>
- <span id="L5707" rel="#L5707">5707</span>
- <span id="L5708" rel="#L5708">5708</span>
- <span id="L5709" rel="#L5709">5709</span>
- <span id="L5710" rel="#L5710">5710</span>
- <span id="L5711" rel="#L5711">5711</span>
- <span id="L5712" rel="#L5712">5712</span>
- <span id="L5713" rel="#L5713">5713</span>
- <span id="L5714" rel="#L5714">5714</span>
- <span id="L5715" rel="#L5715">5715</span>
- <span id="L5716" rel="#L5716">5716</span>
- <span id="L5717" rel="#L5717">5717</span>
- <span id="L5718" rel="#L5718">5718</span>
- <span id="L5719" rel="#L5719">5719</span>
- <span id="L5720" rel="#L5720">5720</span>
- <span id="L5721" rel="#L5721">5721</span>
- <span id="L5722" rel="#L5722">5722</span>
- <span id="L5723" rel="#L5723">5723</span>
- <span id="L5724" rel="#L5724">5724</span>
- <span id="L5725" rel="#L5725">5725</span>
- <span id="L5726" rel="#L5726">5726</span>
- <span id="L5727" rel="#L5727">5727</span>
- <span id="L5728" rel="#L5728">5728</span>
- <span id="L5729" rel="#L5729">5729</span>
- <span id="L5730" rel="#L5730">5730</span>
- <span id="L5731" rel="#L5731">5731</span>
- <span id="L5732" rel="#L5732">5732</span>
- <span id="L5733" rel="#L5733">5733</span>
- <span id="L5734" rel="#L5734">5734</span>
- <span id="L5735" rel="#L5735">5735</span>
- <span id="L5736" rel="#L5736">5736</span>
- <span id="L5737" rel="#L5737">5737</span>
- <span id="L5738" rel="#L5738">5738</span>
- <span id="L5739" rel="#L5739">5739</span>
- <span id="L5740" rel="#L5740">5740</span>
- <span id="L5741" rel="#L5741">5741</span>
- <span id="L5742" rel="#L5742">5742</span>
- <span id="L5743" rel="#L5743">5743</span>
- <span id="L5744" rel="#L5744">5744</span>
- <span id="L5745" rel="#L5745">5745</span>
- <span id="L5746" rel="#L5746">5746</span>
- <span id="L5747" rel="#L5747">5747</span>
- <span id="L5748" rel="#L5748">5748</span>
- <span id="L5749" rel="#L5749">5749</span>
- <span id="L5750" rel="#L5750">5750</span>
- <span id="L5751" rel="#L5751">5751</span>
- <span id="L5752" rel="#L5752">5752</span>
- <span id="L5753" rel="#L5753">5753</span>
- <span id="L5754" rel="#L5754">5754</span>
- <span id="L5755" rel="#L5755">5755</span>
- <span id="L5756" rel="#L5756">5756</span>
- <span id="L5757" rel="#L5757">5757</span>
- <span id="L5758" rel="#L5758">5758</span>
- <span id="L5759" rel="#L5759">5759</span>
- <span id="L5760" rel="#L5760">5760</span>
- <span id="L5761" rel="#L5761">5761</span>
- <span id="L5762" rel="#L5762">5762</span>
- <span id="L5763" rel="#L5763">5763</span>
- <span id="L5764" rel="#L5764">5764</span>
- <span id="L5765" rel="#L5765">5765</span>
- <span id="L5766" rel="#L5766">5766</span>
- <span id="L5767" rel="#L5767">5767</span>
- <span id="L5768" rel="#L5768">5768</span>
- <span id="L5769" rel="#L5769">5769</span>
- <span id="L5770" rel="#L5770">5770</span>
- <span id="L5771" rel="#L5771">5771</span>
- <span id="L5772" rel="#L5772">5772</span>
- <span id="L5773" rel="#L5773">5773</span>
- <span id="L5774" rel="#L5774">5774</span>
- <span id="L5775" rel="#L5775">5775</span>
- <span id="L5776" rel="#L5776">5776</span>
- <span id="L5777" rel="#L5777">5777</span>
- <span id="L5778" rel="#L5778">5778</span>
- <span id="L5779" rel="#L5779">5779</span>
- <span id="L5780" rel="#L5780">5780</span>
- <span id="L5781" rel="#L5781">5781</span>
- <span id="L5782" rel="#L5782">5782</span>
- <span id="L5783" rel="#L5783">5783</span>
- <span id="L5784" rel="#L5784">5784</span>
- <span id="L5785" rel="#L5785">5785</span>
- <span id="L5786" rel="#L5786">5786</span>
- <span id="L5787" rel="#L5787">5787</span>
- <span id="L5788" rel="#L5788">5788</span>
- <span id="L5789" rel="#L5789">5789</span>
- <span id="L5790" rel="#L5790">5790</span>
- <span id="L5791" rel="#L5791">5791</span>
- <span id="L5792" rel="#L5792">5792</span>
- <span id="L5793" rel="#L5793">5793</span>
- <span id="L5794" rel="#L5794">5794</span>
- <span id="L5795" rel="#L5795">5795</span>
- <span id="L5796" rel="#L5796">5796</span>
- <span id="L5797" rel="#L5797">5797</span>
- <span id="L5798" rel="#L5798">5798</span>
- <span id="L5799" rel="#L5799">5799</span>
- <span id="L5800" rel="#L5800">5800</span>
- <span id="L5801" rel="#L5801">5801</span>
- <span id="L5802" rel="#L5802">5802</span>
- <span id="L5803" rel="#L5803">5803</span>
- <span id="L5804" rel="#L5804">5804</span>
- <span id="L5805" rel="#L5805">5805</span>
- <span id="L5806" rel="#L5806">5806</span>
- <span id="L5807" rel="#L5807">5807</span>
- <span id="L5808" rel="#L5808">5808</span>
- <span id="L5809" rel="#L5809">5809</span>
- <span id="L5810" rel="#L5810">5810</span>
- <span id="L5811" rel="#L5811">5811</span>
- <span id="L5812" rel="#L5812">5812</span>
- <span id="L5813" rel="#L5813">5813</span>
- <span id="L5814" rel="#L5814">5814</span>
- <span id="L5815" rel="#L5815">5815</span>
- <span id="L5816" rel="#L5816">5816</span>
- <span id="L5817" rel="#L5817">5817</span>
- <span id="L5818" rel="#L5818">5818</span>
- <span id="L5819" rel="#L5819">5819</span>
- <span id="L5820" rel="#L5820">5820</span>
- <span id="L5821" rel="#L5821">5821</span>
- <span id="L5822" rel="#L5822">5822</span>
- <span id="L5823" rel="#L5823">5823</span>
- <span id="L5824" rel="#L5824">5824</span>
- <span id="L5825" rel="#L5825">5825</span>
- <span id="L5826" rel="#L5826">5826</span>
- <span id="L5827" rel="#L5827">5827</span>
- <span id="L5828" rel="#L5828">5828</span>
- <span id="L5829" rel="#L5829">5829</span>
- <span id="L5830" rel="#L5830">5830</span>
- <span id="L5831" rel="#L5831">5831</span>
- <span id="L5832" rel="#L5832">5832</span>
- <span id="L5833" rel="#L5833">5833</span>
- <span id="L5834" rel="#L5834">5834</span>
- <span id="L5835" rel="#L5835">5835</span>
- <span id="L5836" rel="#L5836">5836</span>
- <span id="L5837" rel="#L5837">5837</span>
- <span id="L5838" rel="#L5838">5838</span>
- <span id="L5839" rel="#L5839">5839</span>
- <span id="L5840" rel="#L5840">5840</span>
- <span id="L5841" rel="#L5841">5841</span>
- <span id="L5842" rel="#L5842">5842</span>
- <span id="L5843" rel="#L5843">5843</span>
- <span id="L5844" rel="#L5844">5844</span>
- <span id="L5845" rel="#L5845">5845</span>
- <span id="L5846" rel="#L5846">5846</span>
- <span id="L5847" rel="#L5847">5847</span>
- <span id="L5848" rel="#L5848">5848</span>
- <span id="L5849" rel="#L5849">5849</span>
- <span id="L5850" rel="#L5850">5850</span>
- <span id="L5851" rel="#L5851">5851</span>
- <span id="L5852" rel="#L5852">5852</span>
- <span id="L5853" rel="#L5853">5853</span>
- <span id="L5854" rel="#L5854">5854</span>
- <span id="L5855" rel="#L5855">5855</span>
- <span id="L5856" rel="#L5856">5856</span>
- <span id="L5857" rel="#L5857">5857</span>
- <span id="L5858" rel="#L5858">5858</span>
- <span id="L5859" rel="#L5859">5859</span>
- <span id="L5860" rel="#L5860">5860</span>
- <span id="L5861" rel="#L5861">5861</span>
- <span id="L5862" rel="#L5862">5862</span>
- <span id="L5863" rel="#L5863">5863</span>
- <span id="L5864" rel="#L5864">5864</span>
- <span id="L5865" rel="#L5865">5865</span>
- <span id="L5866" rel="#L5866">5866</span>
- <span id="L5867" rel="#L5867">5867</span>
- <span id="L5868" rel="#L5868">5868</span>
- <span id="L5869" rel="#L5869">5869</span>
- <span id="L5870" rel="#L5870">5870</span>
- <span id="L5871" rel="#L5871">5871</span>
- <span id="L5872" rel="#L5872">5872</span>
- <span id="L5873" rel="#L5873">5873</span>
- <span id="L5874" rel="#L5874">5874</span>
- <span id="L5875" rel="#L5875">5875</span>
- <span id="L5876" rel="#L5876">5876</span>
- <span id="L5877" rel="#L5877">5877</span>
- <span id="L5878" rel="#L5878">5878</span>
- <span id="L5879" rel="#L5879">5879</span>
- <span id="L5880" rel="#L5880">5880</span>
- <span id="L5881" rel="#L5881">5881</span>
- <span id="L5882" rel="#L5882">5882</span>
- <span id="L5883" rel="#L5883">5883</span>
- <span id="L5884" rel="#L5884">5884</span>
- <span id="L5885" rel="#L5885">5885</span>
- <span id="L5886" rel="#L5886">5886</span>
- <span id="L5887" rel="#L5887">5887</span>
- <span id="L5888" rel="#L5888">5888</span>
- <span id="L5889" rel="#L5889">5889</span>
- <span id="L5890" rel="#L5890">5890</span>
- <span id="L5891" rel="#L5891">5891</span>
- <span id="L5892" rel="#L5892">5892</span>
- <span id="L5893" rel="#L5893">5893</span>
- <span id="L5894" rel="#L5894">5894</span>
- <span id="L5895" rel="#L5895">5895</span>
- <span id="L5896" rel="#L5896">5896</span>
- <span id="L5897" rel="#L5897">5897</span>
- <span id="L5898" rel="#L5898">5898</span>
- <span id="L5899" rel="#L5899">5899</span>
- <span id="L5900" rel="#L5900">5900</span>
- <span id="L5901" rel="#L5901">5901</span>
- <span id="L5902" rel="#L5902">5902</span>
- <span id="L5903" rel="#L5903">5903</span>
- <span id="L5904" rel="#L5904">5904</span>
- <span id="L5905" rel="#L5905">5905</span>
- <span id="L5906" rel="#L5906">5906</span>
- <span id="L5907" rel="#L5907">5907</span>
- <span id="L5908" rel="#L5908">5908</span>
- <span id="L5909" rel="#L5909">5909</span>
- <span id="L5910" rel="#L5910">5910</span>
- <span id="L5911" rel="#L5911">5911</span>
- <span id="L5912" rel="#L5912">5912</span>
- <span id="L5913" rel="#L5913">5913</span>
- <span id="L5914" rel="#L5914">5914</span>
- <span id="L5915" rel="#L5915">5915</span>
- <span id="L5916" rel="#L5916">5916</span>
- <span id="L5917" rel="#L5917">5917</span>
- <span id="L5918" rel="#L5918">5918</span>
- <span id="L5919" rel="#L5919">5919</span>
- <span id="L5920" rel="#L5920">5920</span>
- <span id="L5921" rel="#L5921">5921</span>
- <span id="L5922" rel="#L5922">5922</span>
- <span id="L5923" rel="#L5923">5923</span>
- <span id="L5924" rel="#L5924">5924</span>
- <span id="L5925" rel="#L5925">5925</span>
- <span id="L5926" rel="#L5926">5926</span>
- <span id="L5927" rel="#L5927">5927</span>
- <span id="L5928" rel="#L5928">5928</span>
- <span id="L5929" rel="#L5929">5929</span>
- <span id="L5930" rel="#L5930">5930</span>
- <span id="L5931" rel="#L5931">5931</span>
- <span id="L5932" rel="#L5932">5932</span>
- <span id="L5933" rel="#L5933">5933</span>
- <span id="L5934" rel="#L5934">5934</span>
- <span id="L5935" rel="#L5935">5935</span>
- <span id="L5936" rel="#L5936">5936</span>
- <span id="L5937" rel="#L5937">5937</span>
- <span id="L5938" rel="#L5938">5938</span>
- <span id="L5939" rel="#L5939">5939</span>
- <span id="L5940" rel="#L5940">5940</span>
- <span id="L5941" rel="#L5941">5941</span>
- <span id="L5942" rel="#L5942">5942</span>
- <span id="L5943" rel="#L5943">5943</span>
- <span id="L5944" rel="#L5944">5944</span>
- <span id="L5945" rel="#L5945">5945</span>
- <span id="L5946" rel="#L5946">5946</span>
- <span id="L5947" rel="#L5947">5947</span>
- <span id="L5948" rel="#L5948">5948</span>
- <span id="L5949" rel="#L5949">5949</span>
- <span id="L5950" rel="#L5950">5950</span>
- <span id="L5951" rel="#L5951">5951</span>
- <span id="L5952" rel="#L5952">5952</span>
- <span id="L5953" rel="#L5953">5953</span>
- <span id="L5954" rel="#L5954">5954</span>
- <span id="L5955" rel="#L5955">5955</span>
- <span id="L5956" rel="#L5956">5956</span>
- <span id="L5957" rel="#L5957">5957</span>
- <span id="L5958" rel="#L5958">5958</span>
- <span id="L5959" rel="#L5959">5959</span>
- <span id="L5960" rel="#L5960">5960</span>
- <span id="L5961" rel="#L5961">5961</span>
- <span id="L5962" rel="#L5962">5962</span>
- <span id="L5963" rel="#L5963">5963</span>
- <span id="L5964" rel="#L5964">5964</span>
- <span id="L5965" rel="#L5965">5965</span>
- <span id="L5966" rel="#L5966">5966</span>
- <span id="L5967" rel="#L5967">5967</span>
- <span id="L5968" rel="#L5968">5968</span>
- <span id="L5969" rel="#L5969">5969</span>
- <span id="L5970" rel="#L5970">5970</span>
- <span id="L5971" rel="#L5971">5971</span>
- <span id="L5972" rel="#L5972">5972</span>
- <span id="L5973" rel="#L5973">5973</span>
- <span id="L5974" rel="#L5974">5974</span>
- <span id="L5975" rel="#L5975">5975</span>
- <span id="L5976" rel="#L5976">5976</span>
- <span id="L5977" rel="#L5977">5977</span>
- <span id="L5978" rel="#L5978">5978</span>
- <span id="L5979" rel="#L5979">5979</span>
- <span id="L5980" rel="#L5980">5980</span>
- <span id="L5981" rel="#L5981">5981</span>
- <span id="L5982" rel="#L5982">5982</span>
- <span id="L5983" rel="#L5983">5983</span>
- <span id="L5984" rel="#L5984">5984</span>
- <span id="L5985" rel="#L5985">5985</span>
- <span id="L5986" rel="#L5986">5986</span>
- <span id="L5987" rel="#L5987">5987</span>
- <span id="L5988" rel="#L5988">5988</span>
- <span id="L5989" rel="#L5989">5989</span>
- <span id="L5990" rel="#L5990">5990</span>
- <span id="L5991" rel="#L5991">5991</span>
- <span id="L5992" rel="#L5992">5992</span>
- <span id="L5993" rel="#L5993">5993</span>
- <span id="L5994" rel="#L5994">5994</span>
- <span id="L5995" rel="#L5995">5995</span>
- <span id="L5996" rel="#L5996">5996</span>
- <span id="L5997" rel="#L5997">5997</span>
- <span id="L5998" rel="#L5998">5998</span>
- <span id="L5999" rel="#L5999">5999</span>
- <span id="L6000" rel="#L6000">6000</span>
- <span id="L6001" rel="#L6001">6001</span>
- <span id="L6002" rel="#L6002">6002</span>
- <span id="L6003" rel="#L6003">6003</span>
- <span id="L6004" rel="#L6004">6004</span>
- <span id="L6005" rel="#L6005">6005</span>
- <span id="L6006" rel="#L6006">6006</span>
- <span id="L6007" rel="#L6007">6007</span>
- <span id="L6008" rel="#L6008">6008</span>
- <span id="L6009" rel="#L6009">6009</span>
- <span id="L6010" rel="#L6010">6010</span>
- <span id="L6011" rel="#L6011">6011</span>
- <span id="L6012" rel="#L6012">6012</span>
- <span id="L6013" rel="#L6013">6013</span>
- <span id="L6014" rel="#L6014">6014</span>
- <span id="L6015" rel="#L6015">6015</span>
- <span id="L6016" rel="#L6016">6016</span>
- <span id="L6017" rel="#L6017">6017</span>
- <span id="L6018" rel="#L6018">6018</span>
- <span id="L6019" rel="#L6019">6019</span>
- <span id="L6020" rel="#L6020">6020</span>
- <span id="L6021" rel="#L6021">6021</span>
- <span id="L6022" rel="#L6022">6022</span>
- <span id="L6023" rel="#L6023">6023</span>
- <span id="L6024" rel="#L6024">6024</span>
- <span id="L6025" rel="#L6025">6025</span>
- <span id="L6026" rel="#L6026">6026</span>
- <span id="L6027" rel="#L6027">6027</span>
- <span id="L6028" rel="#L6028">6028</span>
- <span id="L6029" rel="#L6029">6029</span>
- <span id="L6030" rel="#L6030">6030</span>
- <span id="L6031" rel="#L6031">6031</span>
- <span id="L6032" rel="#L6032">6032</span>
- <span id="L6033" rel="#L6033">6033</span>
- <span id="L6034" rel="#L6034">6034</span>
- <span id="L6035" rel="#L6035">6035</span>
- <span id="L6036" rel="#L6036">6036</span>
- <span id="L6037" rel="#L6037">6037</span>
- <span id="L6038" rel="#L6038">6038</span>
- <span id="L6039" rel="#L6039">6039</span>
- <span id="L6040" rel="#L6040">6040</span>
- <span id="L6041" rel="#L6041">6041</span>
- <span id="L6042" rel="#L6042">6042</span>
- <span id="L6043" rel="#L6043">6043</span>
- <span id="L6044" rel="#L6044">6044</span>
- <span id="L6045" rel="#L6045">6045</span>
- <span id="L6046" rel="#L6046">6046</span>
- <span id="L6047" rel="#L6047">6047</span>
- <span id="L6048" rel="#L6048">6048</span>
- <span id="L6049" rel="#L6049">6049</span>
- <span id="L6050" rel="#L6050">6050</span>
- <span id="L6051" rel="#L6051">6051</span>
- <span id="L6052" rel="#L6052">6052</span>
- <span id="L6053" rel="#L6053">6053</span>
- <span id="L6054" rel="#L6054">6054</span>
- <span id="L6055" rel="#L6055">6055</span>
- <span id="L6056" rel="#L6056">6056</span>
- <span id="L6057" rel="#L6057">6057</span>
- <span id="L6058" rel="#L6058">6058</span>
- <span id="L6059" rel="#L6059">6059</span>
- <span id="L6060" rel="#L6060">6060</span>
- <span id="L6061" rel="#L6061">6061</span>
- <span id="L6062" rel="#L6062">6062</span>
- <span id="L6063" rel="#L6063">6063</span>
- <span id="L6064" rel="#L6064">6064</span>
- <span id="L6065" rel="#L6065">6065</span>
- <span id="L6066" rel="#L6066">6066</span>
- <span id="L6067" rel="#L6067">6067</span>
- <span id="L6068" rel="#L6068">6068</span>
- <span id="L6069" rel="#L6069">6069</span>
- <span id="L6070" rel="#L6070">6070</span>
- <span id="L6071" rel="#L6071">6071</span>
- <span id="L6072" rel="#L6072">6072</span>
- <span id="L6073" rel="#L6073">6073</span>
- <span id="L6074" rel="#L6074">6074</span>
- <span id="L6075" rel="#L6075">6075</span>
- <span id="L6076" rel="#L6076">6076</span>
- <span id="L6077" rel="#L6077">6077</span>
- <span id="L6078" rel="#L6078">6078</span>
- <span id="L6079" rel="#L6079">6079</span>
- <span id="L6080" rel="#L6080">6080</span>
- <span id="L6081" rel="#L6081">6081</span>
- <span id="L6082" rel="#L6082">6082</span>
- <span id="L6083" rel="#L6083">6083</span>
- <span id="L6084" rel="#L6084">6084</span>
- <span id="L6085" rel="#L6085">6085</span>
- <span id="L6086" rel="#L6086">6086</span>
- <span id="L6087" rel="#L6087">6087</span>
- <span id="L6088" rel="#L6088">6088</span>
- <span id="L6089" rel="#L6089">6089</span>
- <span id="L6090" rel="#L6090">6090</span>
- <span id="L6091" rel="#L6091">6091</span>
- <span id="L6092" rel="#L6092">6092</span>
- <span id="L6093" rel="#L6093">6093</span>
- <span id="L6094" rel="#L6094">6094</span>
- <span id="L6095" rel="#L6095">6095</span>
- <span id="L6096" rel="#L6096">6096</span>
- <span id="L6097" rel="#L6097">6097</span>
- <span id="L6098" rel="#L6098">6098</span>
- <span id="L6099" rel="#L6099">6099</span>
- <span id="L6100" rel="#L6100">6100</span>
- <span id="L6101" rel="#L6101">6101</span>
- <span id="L6102" rel="#L6102">6102</span>
- <span id="L6103" rel="#L6103">6103</span>
- <span id="L6104" rel="#L6104">6104</span>
- <span id="L6105" rel="#L6105">6105</span>
- <span id="L6106" rel="#L6106">6106</span>
- <span id="L6107" rel="#L6107">6107</span>
- <span id="L6108" rel="#L6108">6108</span>
- <span id="L6109" rel="#L6109">6109</span>
- <span id="L6110" rel="#L6110">6110</span>
- <span id="L6111" rel="#L6111">6111</span>
- <span id="L6112" rel="#L6112">6112</span>
- <span id="L6113" rel="#L6113">6113</span>
- <span id="L6114" rel="#L6114">6114</span>
- <span id="L6115" rel="#L6115">6115</span>
- <span id="L6116" rel="#L6116">6116</span>
- <span id="L6117" rel="#L6117">6117</span>
- <span id="L6118" rel="#L6118">6118</span>
- <span id="L6119" rel="#L6119">6119</span>
- <span id="L6120" rel="#L6120">6120</span>
- <span id="L6121" rel="#L6121">6121</span>
- <span id="L6122" rel="#L6122">6122</span>
- <span id="L6123" rel="#L6123">6123</span>
- <span id="L6124" rel="#L6124">6124</span>
- <span id="L6125" rel="#L6125">6125</span>
- <span id="L6126" rel="#L6126">6126</span>
- <span id="L6127" rel="#L6127">6127</span>
- <span id="L6128" rel="#L6128">6128</span>
- <span id="L6129" rel="#L6129">6129</span>
- <span id="L6130" rel="#L6130">6130</span>
- <span id="L6131" rel="#L6131">6131</span>
- <span id="L6132" rel="#L6132">6132</span>
- <span id="L6133" rel="#L6133">6133</span>
- <span id="L6134" rel="#L6134">6134</span>
- <span id="L6135" rel="#L6135">6135</span>
- <span id="L6136" rel="#L6136">6136</span>
- <span id="L6137" rel="#L6137">6137</span>
- <span id="L6138" rel="#L6138">6138</span>
- <span id="L6139" rel="#L6139">6139</span>
- <span id="L6140" rel="#L6140">6140</span>
- <span id="L6141" rel="#L6141">6141</span>
- <span id="L6142" rel="#L6142">6142</span>
- <span id="L6143" rel="#L6143">6143</span>
- <span id="L6144" rel="#L6144">6144</span>
- <span id="L6145" rel="#L6145">6145</span>
- <span id="L6146" rel="#L6146">6146</span>
- <span id="L6147" rel="#L6147">6147</span>
- <span id="L6148" rel="#L6148">6148</span>
- <span id="L6149" rel="#L6149">6149</span>
- <span id="L6150" rel="#L6150">6150</span>
- <span id="L6151" rel="#L6151">6151</span>
- <span id="L6152" rel="#L6152">6152</span>
- <span id="L6153" rel="#L6153">6153</span>
- <span id="L6154" rel="#L6154">6154</span>
- <span id="L6155" rel="#L6155">6155</span>
- <span id="L6156" rel="#L6156">6156</span>
- <span id="L6157" rel="#L6157">6157</span>
- <span id="L6158" rel="#L6158">6158</span>
- <span id="L6159" rel="#L6159">6159</span>
- <span id="L6160" rel="#L6160">6160</span>
- <span id="L6161" rel="#L6161">6161</span>
- <span id="L6162" rel="#L6162">6162</span>
- <span id="L6163" rel="#L6163">6163</span>
- <span id="L6164" rel="#L6164">6164</span>
- <span id="L6165" rel="#L6165">6165</span>
- <span id="L6166" rel="#L6166">6166</span>
- <span id="L6167" rel="#L6167">6167</span>
- <span id="L6168" rel="#L6168">6168</span>
- <span id="L6169" rel="#L6169">6169</span>
- <span id="L6170" rel="#L6170">6170</span>
- <span id="L6171" rel="#L6171">6171</span>
- <span id="L6172" rel="#L6172">6172</span>
- </td>
- <td class="blob-line-code"><div class="code-body highlight"><pre><div class='line' id='LC1'><span class="o">!</span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span><span class="s2">"object"</span><span class="o">==</span><span class="k">typeof</span> <span class="nx">exports</span><span class="o">?</span><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="o">=</span><span class="nx">e</span><span class="p">()</span><span class="o">:</span><span class="s2">"function"</span><span class="o">==</span><span class="k">typeof</span> <span class="nx">define</span><span class="o">&&</span><span class="nx">define</span><span class="p">.</span><span class="nx">amd</span><span class="o">?</span><span class="nx">define</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="o">:</span><span class="s2">"undefined"</span><span class="o">!=</span><span class="k">typeof</span> <span class="nb">window</span><span class="o">?</span><span class="nb">window</span><span class="p">.</span><span class="nx">io</span><span class="o">=</span><span class="nx">e</span><span class="p">()</span><span class="o">:</span><span class="s2">"undefined"</span><span class="o">!=</span><span class="k">typeof</span> <span class="nx">global</span><span class="o">?</span><span class="nx">global</span><span class="p">.</span><span class="nx">io</span><span class="o">=</span><span class="nx">e</span><span class="p">()</span><span class="o">:</span><span class="s2">"undefined"</span><span class="o">!=</span><span class="k">typeof</span> <span class="nx">self</span><span class="o">&&</span><span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">io</span><span class="o">=</span><span class="nx">e</span><span class="p">())}(</span><span class="kd">function</span><span class="p">(){</span><span class="kd">var</span> <span class="nx">define</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">;</span></div><div class='line' id='LC2'><span class="k">return</span> <span class="p">(</span><span class="kd">function</span> <span class="nx">e</span><span class="p">(</span><span class="nx">t</span><span class="p">,</span><span class="nx">n</span><span class="p">,</span><span class="nx">r</span><span class="p">){</span><span class="kd">function</span> <span class="nx">s</span><span class="p">(</span><span class="nx">o</span><span class="p">,</span><span class="nx">u</span><span class="p">){</span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">n</span><span class="p">[</span><span class="nx">o</span><span class="p">]){</span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">t</span><span class="p">[</span><span class="nx">o</span><span class="p">]){</span><span class="kd">var</span> <span class="nx">a</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">require</span><span class="o">==</span><span class="s2">"function"</span><span class="o">&&</span><span class="nx">require</span><span class="p">;</span><span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">u</span><span class="o">&&</span><span class="nx">a</span><span class="p">)</span><span class="k">return</span> <span class="nx">a</span><span class="p">(</span><span class="nx">o</span><span class="p">,</span><span class="o">!</span><span class="mi">0</span><span class="p">);</span><span class="k">if</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span><span class="k">return</span> <span class="nx">i</span><span class="p">(</span><span class="nx">o</span><span class="p">,</span><span class="o">!</span><span class="mi">0</span><span class="p">);</span><span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s2">"Cannot find module '"</span><span class="o">+</span><span class="nx">o</span><span class="o">+</span><span class="s2">"'"</span><span class="p">)}</span><span class="kd">var</span> <span class="nx">f</span><span class="o">=</span><span class="nx">n</span><span class="p">[</span><span class="nx">o</span><span class="p">]</span><span class="o">=</span><span class="p">{</span><span class="nx">exports</span><span class="o">:</span><span class="p">{}};</span><span class="nx">t</span><span class="p">[</span><span class="nx">o</span><span class="p">][</span><span class="mi">0</span><span class="p">].</span><span class="nx">call</span><span class="p">(</span><span class="nx">f</span><span class="p">.</span><span class="nx">exports</span><span class="p">,</span><span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span><span class="kd">var</span> <span class="nx">n</span><span class="o">=</span><span class="nx">t</span><span class="p">[</span><span class="nx">o</span><span class="p">][</span><span class="mi">1</span><span class="p">][</span><span class="nx">e</span><span class="p">];</span><span class="k">return</span> <span class="nx">s</span><span class="p">(</span><span class="nx">n</span><span class="o">?</span><span class="nx">n</span><span class="o">:</span><span class="nx">e</span><span class="p">)},</span><span class="nx">f</span><span class="p">,</span><span class="nx">f</span><span class="p">.</span><span class="nx">exports</span><span class="p">,</span><span class="nx">e</span><span class="p">,</span><span class="nx">t</span><span class="p">,</span><span class="nx">n</span><span class="p">,</span><span class="nx">r</span><span class="p">)}</span><span class="k">return</span> <span class="nx">n</span><span class="p">[</span><span class="nx">o</span><span class="p">].</span><span class="nx">exports</span><span class="p">}</span><span class="kd">var</span> <span class="nx">i</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">require</span><span class="o">==</span><span class="s2">"function"</span><span class="o">&&</span><span class="nx">require</span><span class="p">;</span><span class="k">for</span><span class="p">(</span><span class="kd">var</span> <span class="nx">o</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="nx">o</span><span class="o"><</span><span class="nx">r</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="nx">o</span><span class="o">++</span><span class="p">)</span><span class="nx">s</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="nx">o</span><span class="p">]);</span><span class="k">return</span> <span class="nx">s</span><span class="p">})({</span><span class="mi">1</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./lib/'</span><span class="p">);</span></div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="p">},{</span><span class="s2">"./lib/"</span><span class="o">:</span><span class="mi">2</span><span class="p">}],</span><span class="mi">2</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC7'><br/></div><div class='line' id='LC8'><span class="cm">/**</span></div><div class='line' id='LC9'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC10'><span class="cm"> */</span></div><div class='line' id='LC11'><br/></div><div class='line' id='LC12'><span class="kd">var</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./url'</span><span class="p">);</span></div><div class='line' id='LC13'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'socket.io-parser'</span><span class="p">);</span></div><div class='line' id='LC14'><span class="kd">var</span> <span class="nx">Manager</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./manager'</span><span class="p">);</span></div><div class='line' id='LC15'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'socket.io-client'</span><span class="p">);</span></div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'><span class="cm">/**</span></div><div class='line' id='LC18'><span class="cm"> * Module exports.</span></div><div class='line' id='LC19'><span class="cm"> */</span></div><div class='line' id='LC20'><br/></div><div class='line' id='LC21'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">exports</span> <span class="o">=</span> <span class="nx">lookup</span><span class="p">;</span></div><div class='line' id='LC22'><br/></div><div class='line' id='LC23'><span class="cm">/**</span></div><div class='line' id='LC24'><span class="cm"> * Managers cache.</span></div><div class='line' id='LC25'><span class="cm"> */</span></div><div class='line' id='LC26'><br/></div><div class='line' id='LC27'><span class="kd">var</span> <span class="nx">cache</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">managers</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="cm">/**</span></div><div class='line' id='LC30'><span class="cm"> * Looks up an existing `Manager` for multiplexing.</span></div><div class='line' id='LC31'><span class="cm"> * If the user summons:</span></div><div class='line' id='LC32'><span class="cm"> *</span></div><div class='line' id='LC33'><span class="cm"> * `io('http://localhost/a');`</span></div><div class='line' id='LC34'><span class="cm"> * `io('http://localhost/b');`</span></div><div class='line' id='LC35'><span class="cm"> *</span></div><div class='line' id='LC36'><span class="cm"> * We reuse the existing instance based on same scheme/port/host,</span></div><div class='line' id='LC37'><span class="cm"> * and we initialize sockets for each namespace.</span></div><div class='line' id='LC38'><span class="cm"> *</span></div><div class='line' id='LC39'><span class="cm"> * @api public</span></div><div class='line' id='LC40'><span class="cm"> */</span></div><div class='line' id='LC41'><br/></div><div class='line' id='LC42'><span class="kd">function</span> <span class="nx">lookup</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">opts</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC43'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">uri</span> <span class="o">==</span> <span class="s1">'object'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC44'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC45'> <span class="nx">uri</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span></div><div class='line' id='LC46'> <span class="p">}</span></div><div class='line' id='LC47'><br/></div><div class='line' id='LC48'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">opts</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC49'><br/></div><div class='line' id='LC50'> <span class="kd">var</span> <span class="nx">parsed</span> <span class="o">=</span> <span class="nx">url</span><span class="p">(</span><span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC51'> <span class="kd">var</span> <span class="nx">source</span> <span class="o">=</span> <span class="nx">parsed</span><span class="p">.</span><span class="nx">source</span><span class="p">;</span></div><div class='line' id='LC52'> <span class="kd">var</span> <span class="nx">id</span> <span class="o">=</span> <span class="nx">parsed</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span></div><div class='line' id='LC53'> <span class="kd">var</span> <span class="nx">io</span><span class="p">;</span></div><div class='line' id='LC54'><br/></div><div class='line' id='LC55'> <span class="k">if</span> <span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">forceNew</span> <span class="o">||</span> <span class="nx">opts</span><span class="p">[</span><span class="s1">'force new connection'</span><span class="p">]</span> <span class="o">||</span> <span class="kc">false</span> <span class="o">===</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">multiplex</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC56'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'ignoring socket cache for %s'</span><span class="p">,</span> <span class="nx">source</span><span class="p">);</span></div><div class='line' id='LC57'> <span class="nx">io</span> <span class="o">=</span> <span class="nx">Manager</span><span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC58'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC59'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">cache</span><span class="p">[</span><span class="nx">id</span><span class="p">])</span> <span class="p">{</span></div><div class='line' id='LC60'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'new io instance for %s'</span><span class="p">,</span> <span class="nx">source</span><span class="p">);</span></div><div class='line' id='LC61'> <span class="nx">cache</span><span class="p">[</span><span class="nx">id</span><span class="p">]</span> <span class="o">=</span> <span class="nx">Manager</span><span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC62'> <span class="p">}</span></div><div class='line' id='LC63'> <span class="nx">io</span> <span class="o">=</span> <span class="nx">cache</span><span class="p">[</span><span class="nx">id</span><span class="p">];</span></div><div class='line' id='LC64'> <span class="p">}</span></div><div class='line' id='LC65'><br/></div><div class='line' id='LC66'> <span class="k">return</span> <span class="nx">io</span><span class="p">.</span><span class="nx">socket</span><span class="p">(</span><span class="nx">parsed</span><span class="p">.</span><span class="nx">path</span><span class="p">);</span></div><div class='line' id='LC67'><span class="p">}</span></div><div class='line' id='LC68'><br/></div><div class='line' id='LC69'><span class="cm">/**</span></div><div class='line' id='LC70'><span class="cm"> * Protocol version.</span></div><div class='line' id='LC71'><span class="cm"> *</span></div><div class='line' id='LC72'><span class="cm"> * @api public</span></div><div class='line' id='LC73'><span class="cm"> */</span></div><div class='line' id='LC74'><br/></div><div class='line' id='LC75'><span class="nx">exports</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">=</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">protocol</span><span class="p">;</span></div><div class='line' id='LC76'><br/></div><div class='line' id='LC77'><span class="cm">/**</span></div><div class='line' id='LC78'><span class="cm"> * `connect`.</span></div><div class='line' id='LC79'><span class="cm"> *</span></div><div class='line' id='LC80'><span class="cm"> * @param {String} uri</span></div><div class='line' id='LC81'><span class="cm"> * @api public</span></div><div class='line' id='LC82'><span class="cm"> */</span></div><div class='line' id='LC83'><br/></div><div class='line' id='LC84'><span class="nx">exports</span><span class="p">.</span><span class="nx">connect</span> <span class="o">=</span> <span class="nx">lookup</span><span class="p">;</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="cm">/**</span></div><div class='line' id='LC87'><span class="cm"> * Expose constructors for standalone build.</span></div><div class='line' id='LC88'><span class="cm"> *</span></div><div class='line' id='LC89'><span class="cm"> * @api public</span></div><div class='line' id='LC90'><span class="cm"> */</span></div><div class='line' id='LC91'><br/></div><div class='line' id='LC92'><span class="nx">exports</span><span class="p">.</span><span class="nx">Manager</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./manager'</span><span class="p">);</span></div><div class='line' id='LC93'><span class="nx">exports</span><span class="p">.</span><span class="nx">Socket</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./socket'</span><span class="p">);</span></div><div class='line' id='LC94'><br/></div><div class='line' id='LC95'><span class="p">},{</span><span class="s2">"./manager"</span><span class="o">:</span><span class="mi">3</span><span class="p">,</span><span class="s2">"./socket"</span><span class="o">:</span><span class="mi">5</span><span class="p">,</span><span class="s2">"./url"</span><span class="o">:</span><span class="mi">6</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"socket.io-parser"</span><span class="o">:</span><span class="mi">40</span><span class="p">}],</span><span class="mi">3</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'><span class="cm">/**</span></div><div class='line' id='LC98'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC99'><span class="cm"> */</span></div><div class='line' id='LC100'><br/></div><div class='line' id='LC101'><span class="kd">var</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./url'</span><span class="p">);</span></div><div class='line' id='LC102'><span class="kd">var</span> <span class="nx">eio</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-client'</span><span class="p">);</span></div><div class='line' id='LC103'><span class="kd">var</span> <span class="nx">Socket</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./socket'</span><span class="p">);</span></div><div class='line' id='LC104'><span class="kd">var</span> <span class="nx">Emitter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-emitter'</span><span class="p">);</span></div><div class='line' id='LC105'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'socket.io-parser'</span><span class="p">);</span></div><div class='line' id='LC106'><span class="kd">var</span> <span class="nx">on</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./on'</span><span class="p">);</span></div><div class='line' id='LC107'><span class="kd">var</span> <span class="nx">bind</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-bind'</span><span class="p">);</span></div><div class='line' id='LC108'><span class="kd">var</span> <span class="nx">object</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'object-component'</span><span class="p">);</span></div><div class='line' id='LC109'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'socket.io-client:manager'</span><span class="p">);</span></div><div class='line' id='LC110'><br/></div><div class='line' id='LC111'><span class="cm">/**</span></div><div class='line' id='LC112'><span class="cm"> * Module exports</span></div><div class='line' id='LC113'><span class="cm"> */</span></div><div class='line' id='LC114'><br/></div><div class='line' id='LC115'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">Manager</span><span class="p">;</span></div><div class='line' id='LC116'><br/></div><div class='line' id='LC117'><span class="cm">/**</span></div><div class='line' id='LC118'><span class="cm"> * `Manager` constructor.</span></div><div class='line' id='LC119'><span class="cm"> *</span></div><div class='line' id='LC120'><span class="cm"> * @param {String} engine instance or engine uri/opts</span></div><div class='line' id='LC121'><span class="cm"> * @param {Object} options</span></div><div class='line' id='LC122'><span class="cm"> * @api public</span></div><div class='line' id='LC123'><span class="cm"> */</span></div><div class='line' id='LC124'><br/></div><div class='line' id='LC125'><span class="kd">function</span> <span class="nx">Manager</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC126'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="k">this</span> <span class="k">instanceof</span> <span class="nx">Manager</span><span class="p">))</span> <span class="k">return</span> <span class="k">new</span> <span class="nx">Manager</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC127'> <span class="k">if</span> <span class="p">(</span><span class="nx">uri</span> <span class="o">&&</span> <span class="p">(</span><span class="s1">'object'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">uri</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC128'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC129'> <span class="nx">uri</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span></div><div class='line' id='LC130'> <span class="p">}</span></div><div class='line' id='LC131'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">opts</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC132'><br/></div><div class='line' id='LC133'> <span class="nx">opts</span><span class="p">.</span><span class="nx">path</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">path</span> <span class="o">||</span> <span class="s1">'/socket.io'</span><span class="p">;</span></div><div class='line' id='LC134'> <span class="k">this</span><span class="p">.</span><span class="nx">nsps</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC135'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC136'> <span class="k">this</span><span class="p">.</span><span class="nx">opts</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">;</span></div><div class='line' id='LC137'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnection</span><span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">reconnection</span> <span class="o">!==</span> <span class="kc">false</span><span class="p">);</span></div><div class='line' id='LC138'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnectionAttempts</span><span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">reconnectionAttempts</span> <span class="o">||</span> <span class="kc">Infinity</span><span class="p">);</span></div><div class='line' id='LC139'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnectionDelay</span><span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">reconnectionDelay</span> <span class="o">||</span> <span class="mi">1000</span><span class="p">);</span></div><div class='line' id='LC140'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnectionDelayMax</span><span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">reconnectionDelayMax</span> <span class="o">||</span> <span class="mi">5000</span><span class="p">);</span></div><div class='line' id='LC141'> <span class="k">this</span><span class="p">.</span><span class="nx">timeout</span><span class="p">(</span><span class="kc">null</span> <span class="o">==</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">timeout</span> <span class="o">?</span> <span class="mi">20000</span> <span class="o">:</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">timeout</span><span class="p">);</span></div><div class='line' id='LC142'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'closed'</span><span class="p">;</span></div><div class='line' id='LC143'> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC144'> <span class="k">this</span><span class="p">.</span><span class="nx">connected</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC145'> <span class="k">this</span><span class="p">.</span><span class="nx">attempts</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC146'> <span class="k">this</span><span class="p">.</span><span class="nx">encoding</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC147'> <span class="k">this</span><span class="p">.</span><span class="nx">packetBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC148'> <span class="k">this</span><span class="p">.</span><span class="nx">encoder</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">Encoder</span><span class="p">();</span></div><div class='line' id='LC149'> <span class="k">this</span><span class="p">.</span><span class="nx">decoder</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">Decoder</span><span class="p">();</span></div><div class='line' id='LC150'> <span class="k">this</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span></div><div class='line' id='LC151'><span class="p">}</span></div><div class='line' id='LC152'><br/></div><div class='line' id='LC153'><span class="cm">/**</span></div><div class='line' id='LC154'><span class="cm"> * Propagate given event to sockets and emit on `this`</span></div><div class='line' id='LC155'><span class="cm"> *</span></div><div class='line' id='LC156'><span class="cm"> * @api private</span></div><div class='line' id='LC157'><span class="cm"> */</span></div><div class='line' id='LC158'><br/></div><div class='line' id='LC159'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">emitAll</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC160'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC161'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">nsp</span> <span class="k">in</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsps</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC162'> <span class="k">this</span><span class="p">.</span><span class="nx">nsps</span><span class="p">[</span><span class="nx">nsp</span><span class="p">].</span><span class="nx">emit</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">nsps</span><span class="p">[</span><span class="nx">nsp</span><span class="p">],</span> <span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC163'> <span class="p">}</span></div><div class='line' id='LC164'><span class="p">};</span></div><div class='line' id='LC165'><br/></div><div class='line' id='LC166'><span class="cm">/**</span></div><div class='line' id='LC167'><span class="cm"> * Mix in `Emitter`.</span></div><div class='line' id='LC168'><span class="cm"> */</span></div><div class='line' id='LC169'><br/></div><div class='line' id='LC170'><span class="nx">Emitter</span><span class="p">(</span><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span></div><div class='line' id='LC171'><br/></div><div class='line' id='LC172'><span class="cm">/**</span></div><div class='line' id='LC173'><span class="cm"> * Sets the `reconnection` config.</span></div><div class='line' id='LC174'><span class="cm"> *</span></div><div class='line' id='LC175'><span class="cm"> * @param {Boolean} true/false if it should automatically reconnect</span></div><div class='line' id='LC176'><span class="cm"> * @return {Manager} self or value</span></div><div class='line' id='LC177'><span class="cm"> * @api public</span></div><div class='line' id='LC178'><span class="cm"> */</span></div><div class='line' id='LC179'><br/></div><div class='line' id='LC180'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">reconnection</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">v</span><span class="p">){</span></div><div class='line' id='LC181'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnection</span><span class="p">;</span></div><div class='line' id='LC182'> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnection</span> <span class="o">=</span> <span class="o">!!</span><span class="nx">v</span><span class="p">;</span></div><div class='line' id='LC183'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC184'><span class="p">};</span></div><div class='line' id='LC185'><br/></div><div class='line' id='LC186'><span class="cm">/**</span></div><div class='line' id='LC187'><span class="cm"> * Sets the reconnection attempts config.</span></div><div class='line' id='LC188'><span class="cm"> *</span></div><div class='line' id='LC189'><span class="cm"> * @param {Number} max reconnection attempts before giving up</span></div><div class='line' id='LC190'><span class="cm"> * @return {Manager} self or value</span></div><div class='line' id='LC191'><span class="cm"> * @api public</span></div><div class='line' id='LC192'><span class="cm"> */</span></div><div class='line' id='LC193'><br/></div><div class='line' id='LC194'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">reconnectionAttempts</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">v</span><span class="p">){</span></div><div class='line' id='LC195'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionAttempts</span><span class="p">;</span></div><div class='line' id='LC196'> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionAttempts</span> <span class="o">=</span> <span class="nx">v</span><span class="p">;</span></div><div class='line' id='LC197'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC198'><span class="p">};</span></div><div class='line' id='LC199'><br/></div><div class='line' id='LC200'><span class="cm">/**</span></div><div class='line' id='LC201'><span class="cm"> * Sets the delay between reconnections.</span></div><div class='line' id='LC202'><span class="cm"> *</span></div><div class='line' id='LC203'><span class="cm"> * @param {Number} delay</span></div><div class='line' id='LC204'><span class="cm"> * @return {Manager} self or value</span></div><div class='line' id='LC205'><span class="cm"> * @api public</span></div><div class='line' id='LC206'><span class="cm"> */</span></div><div class='line' id='LC207'><br/></div><div class='line' id='LC208'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">reconnectionDelay</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">v</span><span class="p">){</span></div><div class='line' id='LC209'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionDelay</span><span class="p">;</span></div><div class='line' id='LC210'> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionDelay</span> <span class="o">=</span> <span class="nx">v</span><span class="p">;</span></div><div class='line' id='LC211'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC212'><span class="p">};</span></div><div class='line' id='LC213'><br/></div><div class='line' id='LC214'><span class="cm">/**</span></div><div class='line' id='LC215'><span class="cm"> * Sets the maximum delay between reconnections.</span></div><div class='line' id='LC216'><span class="cm"> *</span></div><div class='line' id='LC217'><span class="cm"> * @param {Number} delay</span></div><div class='line' id='LC218'><span class="cm"> * @return {Manager} self or value</span></div><div class='line' id='LC219'><span class="cm"> * @api public</span></div><div class='line' id='LC220'><span class="cm"> */</span></div><div class='line' id='LC221'><br/></div><div class='line' id='LC222'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">reconnectionDelayMax</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">v</span><span class="p">){</span></div><div class='line' id='LC223'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionDelayMax</span><span class="p">;</span></div><div class='line' id='LC224'> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionDelayMax</span> <span class="o">=</span> <span class="nx">v</span><span class="p">;</span></div><div class='line' id='LC225'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC226'><span class="p">};</span></div><div class='line' id='LC227'><br/></div><div class='line' id='LC228'><span class="cm">/**</span></div><div class='line' id='LC229'><span class="cm"> * Sets the connection timeout. `false` to disable</span></div><div class='line' id='LC230'><span class="cm"> *</span></div><div class='line' id='LC231'><span class="cm"> * @return {Manager} self or value</span></div><div class='line' id='LC232'><span class="cm"> * @api public</span></div><div class='line' id='LC233'><span class="cm"> */</span></div><div class='line' id='LC234'><br/></div><div class='line' id='LC235'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">timeout</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">v</span><span class="p">){</span></div><div class='line' id='LC236'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_timeout</span><span class="p">;</span></div><div class='line' id='LC237'> <span class="k">this</span><span class="p">.</span><span class="nx">_timeout</span> <span class="o">=</span> <span class="nx">v</span><span class="p">;</span></div><div class='line' id='LC238'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC239'><span class="p">};</span></div><div class='line' id='LC240'><br/></div><div class='line' id='LC241'><span class="cm">/**</span></div><div class='line' id='LC242'><span class="cm"> * Starts trying to reconnect if reconnection is enabled and we have not</span></div><div class='line' id='LC243'><span class="cm"> * started reconnecting yet</span></div><div class='line' id='LC244'><span class="cm"> *</span></div><div class='line' id='LC245'><span class="cm"> * @api private</span></div><div class='line' id='LC246'><span class="cm"> */</span></div><div class='line' id='LC247'><br/></div><div class='line' id='LC248'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">maybeReconnectOnOpen</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC249'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">openReconnect</span> <span class="o">&&</span> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">reconnecting</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnection</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC250'> <span class="c1">// keeps reconnection from firing twice for the same reconnection loop</span></div><div class='line' id='LC251'> <span class="k">this</span><span class="p">.</span><span class="nx">openReconnect</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC252'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnect</span><span class="p">();</span></div><div class='line' id='LC253'> <span class="p">}</span></div><div class='line' id='LC254'><span class="p">};</span></div><div class='line' id='LC255'><br/></div><div class='line' id='LC256'><br/></div><div class='line' id='LC257'><span class="cm">/**</span></div><div class='line' id='LC258'><span class="cm"> * Sets the current transport `socket`.</span></div><div class='line' id='LC259'><span class="cm"> *</span></div><div class='line' id='LC260'><span class="cm"> * @param {Function} optional, callback</span></div><div class='line' id='LC261'><span class="cm"> * @return {Manager} self</span></div><div class='line' id='LC262'><span class="cm"> * @api public</span></div><div class='line' id='LC263'><span class="cm"> */</span></div><div class='line' id='LC264'><br/></div><div class='line' id='LC265'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">open</span> <span class="o">=</span></div><div class='line' id='LC266'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">connect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC267'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'readyState %s'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">);</span></div><div class='line' id='LC268'> <span class="k">if</span> <span class="p">(</span><span class="o">~</span><span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">'open'</span><span class="p">))</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC269'><br/></div><div class='line' id='LC270'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'opening %s'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC271'> <span class="k">this</span><span class="p">.</span><span class="nx">engine</span> <span class="o">=</span> <span class="nx">eio</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC272'> <span class="kd">var</span> <span class="nx">socket</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">engine</span><span class="p">;</span></div><div class='line' id='LC273'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC274'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'opening'</span><span class="p">;</span></div><div class='line' id='LC275'><br/></div><div class='line' id='LC276'> <span class="c1">// emit `open`</span></div><div class='line' id='LC277'> <span class="kd">var</span> <span class="nx">openSub</span> <span class="o">=</span> <span class="nx">on</span><span class="p">(</span><span class="nx">socket</span><span class="p">,</span> <span class="s1">'open'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC278'> <span class="nx">self</span><span class="p">.</span><span class="nx">onopen</span><span class="p">();</span></div><div class='line' id='LC279'> <span class="nx">fn</span> <span class="o">&&</span> <span class="nx">fn</span><span class="p">();</span></div><div class='line' id='LC280'> <span class="p">});</span></div><div class='line' id='LC281'><br/></div><div class='line' id='LC282'> <span class="c1">// emit `connect_error`</span></div><div class='line' id='LC283'> <span class="kd">var</span> <span class="nx">errorSub</span> <span class="o">=</span> <span class="nx">on</span><span class="p">(</span><span class="nx">socket</span><span class="p">,</span> <span class="s1">'error'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC284'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'connect_error'</span><span class="p">);</span></div><div class='line' id='LC285'> <span class="nx">self</span><span class="p">.</span><span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC286'> <span class="nx">self</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'closed'</span><span class="p">;</span></div><div class='line' id='LC287'> <span class="nx">self</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'connect_error'</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC288'> <span class="k">if</span> <span class="p">(</span><span class="nx">fn</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC289'> <span class="kd">var</span> <span class="nx">err</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Connection error'</span><span class="p">);</span></div><div class='line' id='LC290'> <span class="nx">err</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC291'> <span class="nx">fn</span><span class="p">(</span><span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC292'> <span class="p">}</span></div><div class='line' id='LC293'><br/></div><div class='line' id='LC294'> <span class="nx">self</span><span class="p">.</span><span class="nx">maybeReconnectOnOpen</span><span class="p">();</span></div><div class='line' id='LC295'> <span class="p">});</span></div><div class='line' id='LC296'><br/></div><div class='line' id='LC297'> <span class="c1">// emit `connect_timeout`</span></div><div class='line' id='LC298'> <span class="k">if</span> <span class="p">(</span><span class="kc">false</span> <span class="o">!==</span> <span class="k">this</span><span class="p">.</span><span class="nx">_timeout</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC299'> <span class="kd">var</span> <span class="nx">timeout</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_timeout</span><span class="p">;</span></div><div class='line' id='LC300'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'connect attempt will timeout after %d'</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">);</span></div><div class='line' id='LC301'><br/></div><div class='line' id='LC302'> <span class="c1">// set timer</span></div><div class='line' id='LC303'> <span class="kd">var</span> <span class="nx">timer</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC304'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'connect attempt timed out after %d'</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">);</span></div><div class='line' id='LC305'> <span class="nx">openSub</span><span class="p">.</span><span class="nx">destroy</span><span class="p">();</span></div><div class='line' id='LC306'> <span class="nx">socket</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC307'> <span class="nx">socket</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="s1">'timeout'</span><span class="p">);</span></div><div class='line' id='LC308'> <span class="nx">self</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'connect_timeout'</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">);</span></div><div class='line' id='LC309'> <span class="p">},</span> <span class="nx">timeout</span><span class="p">);</span></div><div class='line' id='LC310'><br/></div><div class='line' id='LC311'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span></div><div class='line' id='LC312'> <span class="nx">destroy</span><span class="o">:</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC313'> <span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">timer</span><span class="p">);</span></div><div class='line' id='LC314'> <span class="p">}</span></div><div class='line' id='LC315'> <span class="p">});</span></div><div class='line' id='LC316'> <span class="p">}</span></div><div class='line' id='LC317'><br/></div><div class='line' id='LC318'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">openSub</span><span class="p">);</span></div><div class='line' id='LC319'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">errorSub</span><span class="p">);</span></div><div class='line' id='LC320'><br/></div><div class='line' id='LC321'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC322'><span class="p">};</span></div><div class='line' id='LC323'><br/></div><div class='line' id='LC324'><span class="cm">/**</span></div><div class='line' id='LC325'><span class="cm"> * Called upon transport open.</span></div><div class='line' id='LC326'><span class="cm"> *</span></div><div class='line' id='LC327'><span class="cm"> * @api private</span></div><div class='line' id='LC328'><span class="cm"> */</span></div><div class='line' id='LC329'><br/></div><div class='line' id='LC330'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onopen</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC331'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'open'</span><span class="p">);</span></div><div class='line' id='LC332'><br/></div><div class='line' id='LC333'> <span class="c1">// clear old subs</span></div><div class='line' id='LC334'> <span class="k">this</span><span class="p">.</span><span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC335'><br/></div><div class='line' id='LC336'> <span class="c1">// mark as open</span></div><div class='line' id='LC337'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'open'</span><span class="p">;</span></div><div class='line' id='LC338'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'open'</span><span class="p">);</span></div><div class='line' id='LC339'><br/></div><div class='line' id='LC340'> <span class="c1">// add new subs</span></div><div class='line' id='LC341'> <span class="kd">var</span> <span class="nx">socket</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">engine</span><span class="p">;</span></div><div class='line' id='LC342'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">on</span><span class="p">(</span><span class="nx">socket</span><span class="p">,</span> <span class="s1">'data'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'ondata'</span><span class="p">)));</span></div><div class='line' id='LC343'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">on</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">decoder</span><span class="p">,</span> <span class="s1">'decoded'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'ondecoded'</span><span class="p">)));</span></div><div class='line' id='LC344'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">on</span><span class="p">(</span><span class="nx">socket</span><span class="p">,</span> <span class="s1">'error'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'onerror'</span><span class="p">)));</span></div><div class='line' id='LC345'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">on</span><span class="p">(</span><span class="nx">socket</span><span class="p">,</span> <span class="s1">'close'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'onclose'</span><span class="p">)));</span></div><div class='line' id='LC346'><span class="p">};</span></div><div class='line' id='LC347'><br/></div><div class='line' id='LC348'><span class="cm">/**</span></div><div class='line' id='LC349'><span class="cm"> * Called with data.</span></div><div class='line' id='LC350'><span class="cm"> *</span></div><div class='line' id='LC351'><span class="cm"> * @api private</span></div><div class='line' id='LC352'><span class="cm"> */</span></div><div class='line' id='LC353'><br/></div><div class='line' id='LC354'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">ondata</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC355'> <span class="k">this</span><span class="p">.</span><span class="nx">decoder</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC356'><span class="p">};</span></div><div class='line' id='LC357'><br/></div><div class='line' id='LC358'><span class="cm">/**</span></div><div class='line' id='LC359'><span class="cm"> * Called when parser fully decodes a packet.</span></div><div class='line' id='LC360'><span class="cm"> *</span></div><div class='line' id='LC361'><span class="cm"> * @api private</span></div><div class='line' id='LC362'><span class="cm"> */</span></div><div class='line' id='LC363'><br/></div><div class='line' id='LC364'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">ondecoded</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC365'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'packet'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC366'><span class="p">};</span></div><div class='line' id='LC367'><br/></div><div class='line' id='LC368'><span class="cm">/**</span></div><div class='line' id='LC369'><span class="cm"> * Called upon socket error.</span></div><div class='line' id='LC370'><span class="cm"> *</span></div><div class='line' id='LC371'><span class="cm"> * @api private</span></div><div class='line' id='LC372'><span class="cm"> */</span></div><div class='line' id='LC373'><br/></div><div class='line' id='LC374'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onerror</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">){</span></div><div class='line' id='LC375'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC376'> <span class="k">this</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC377'><span class="p">};</span></div><div class='line' id='LC378'><br/></div><div class='line' id='LC379'><span class="cm">/**</span></div><div class='line' id='LC380'><span class="cm"> * Creates a new socket for the given `nsp`.</span></div><div class='line' id='LC381'><span class="cm"> *</span></div><div class='line' id='LC382'><span class="cm"> * @return {Socket}</span></div><div class='line' id='LC383'><span class="cm"> * @api public</span></div><div class='line' id='LC384'><span class="cm"> */</span></div><div class='line' id='LC385'><br/></div><div class='line' id='LC386'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">socket</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">nsp</span><span class="p">){</span></div><div class='line' id='LC387'> <span class="kd">var</span> <span class="nx">socket</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsps</span><span class="p">[</span><span class="nx">nsp</span><span class="p">];</span></div><div class='line' id='LC388'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">socket</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC389'> <span class="nx">socket</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Socket</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">nsp</span><span class="p">);</span></div><div class='line' id='LC390'> <span class="k">this</span><span class="p">.</span><span class="nx">nsps</span><span class="p">[</span><span class="nx">nsp</span><span class="p">]</span> <span class="o">=</span> <span class="nx">socket</span><span class="p">;</span></div><div class='line' id='LC391'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC392'> <span class="nx">socket</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'connect'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC393'> <span class="nx">self</span><span class="p">.</span><span class="nx">connected</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC394'> <span class="p">});</span></div><div class='line' id='LC395'> <span class="p">}</span></div><div class='line' id='LC396'> <span class="k">return</span> <span class="nx">socket</span><span class="p">;</span></div><div class='line' id='LC397'><span class="p">};</span></div><div class='line' id='LC398'><br/></div><div class='line' id='LC399'><span class="cm">/**</span></div><div class='line' id='LC400'><span class="cm"> * Called upon a socket close.</span></div><div class='line' id='LC401'><span class="cm"> *</span></div><div class='line' id='LC402'><span class="cm"> * @param {Socket} socket</span></div><div class='line' id='LC403'><span class="cm"> */</span></div><div class='line' id='LC404'><br/></div><div class='line' id='LC405'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">destroy</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">socket</span><span class="p">){</span></div><div class='line' id='LC406'> <span class="o">--</span><span class="k">this</span><span class="p">.</span><span class="nx">connected</span> <span class="o">||</span> <span class="k">this</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC407'><span class="p">};</span></div><div class='line' id='LC408'><br/></div><div class='line' id='LC409'><span class="cm">/**</span></div><div class='line' id='LC410'><span class="cm"> * Writes a packet.</span></div><div class='line' id='LC411'><span class="cm"> *</span></div><div class='line' id='LC412'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC413'><span class="cm"> * @api private</span></div><div class='line' id='LC414'><span class="cm"> */</span></div><div class='line' id='LC415'><br/></div><div class='line' id='LC416'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">packet</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">){</span></div><div class='line' id='LC417'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'writing packet %j'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC418'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC419'><br/></div><div class='line' id='LC420'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">self</span><span class="p">.</span><span class="nx">encoding</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC421'> <span class="c1">// encode, then write to engine with result</span></div><div class='line' id='LC422'> <span class="nx">self</span><span class="p">.</span><span class="nx">encoding</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC423'> <span class="k">this</span><span class="p">.</span><span class="nx">encoder</span><span class="p">.</span><span class="nx">encode</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">encodedPackets</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC424'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">encodedPackets</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC425'> <span class="nx">self</span><span class="p">.</span><span class="nx">engine</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">encodedPackets</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC426'> <span class="p">}</span></div><div class='line' id='LC427'> <span class="nx">self</span><span class="p">.</span><span class="nx">encoding</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC428'> <span class="nx">self</span><span class="p">.</span><span class="nx">processPacketQueue</span><span class="p">();</span></div><div class='line' id='LC429'> <span class="p">});</span></div><div class='line' id='LC430'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// add packet to the queue</span></div><div class='line' id='LC431'> <span class="nx">self</span><span class="p">.</span><span class="nx">packetBuffer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC432'> <span class="p">}</span></div><div class='line' id='LC433'><span class="p">};</span></div><div class='line' id='LC434'><br/></div><div class='line' id='LC435'><span class="cm">/**</span></div><div class='line' id='LC436'><span class="cm"> * If packet buffer is non-empty, begins encoding the</span></div><div class='line' id='LC437'><span class="cm"> * next packet in line.</span></div><div class='line' id='LC438'><span class="cm"> *</span></div><div class='line' id='LC439'><span class="cm"> * @api private</span></div><div class='line' id='LC440'><span class="cm"> */</span></div><div class='line' id='LC441'><br/></div><div class='line' id='LC442'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">processPacketQueue</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC443'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">packetBuffer</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span> <span class="o">&&</span> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">encoding</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC444'> <span class="kd">var</span> <span class="nx">pack</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">packetBuffer</span><span class="p">.</span><span class="nx">shift</span><span class="p">();</span></div><div class='line' id='LC445'> <span class="k">this</span><span class="p">.</span><span class="nx">packet</span><span class="p">(</span><span class="nx">pack</span><span class="p">);</span></div><div class='line' id='LC446'> <span class="p">}</span></div><div class='line' id='LC447'><span class="p">};</span></div><div class='line' id='LC448'><br/></div><div class='line' id='LC449'><span class="cm">/**</span></div><div class='line' id='LC450'><span class="cm"> * Clean up transport subscriptions and packet buffer.</span></div><div class='line' id='LC451'><span class="cm"> *</span></div><div class='line' id='LC452'><span class="cm"> * @api private</span></div><div class='line' id='LC453'><span class="cm"> */</span></div><div class='line' id='LC454'><br/></div><div class='line' id='LC455'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">cleanup</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC456'> <span class="kd">var</span> <span class="nx">sub</span><span class="p">;</span></div><div class='line' id='LC457'> <span class="k">while</span> <span class="p">(</span><span class="nx">sub</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">shift</span><span class="p">())</span> <span class="nx">sub</span><span class="p">.</span><span class="nx">destroy</span><span class="p">();</span></div><div class='line' id='LC458'><br/></div><div class='line' id='LC459'> <span class="k">this</span><span class="p">.</span><span class="nx">packetBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC460'> <span class="k">this</span><span class="p">.</span><span class="nx">encoding</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC461'><br/></div><div class='line' id='LC462'> <span class="k">this</span><span class="p">.</span><span class="nx">decoder</span><span class="p">.</span><span class="nx">destroy</span><span class="p">();</span></div><div class='line' id='LC463'><span class="p">};</span></div><div class='line' id='LC464'><br/></div><div class='line' id='LC465'><span class="cm">/**</span></div><div class='line' id='LC466'><span class="cm"> * Close the current socket.</span></div><div class='line' id='LC467'><span class="cm"> *</span></div><div class='line' id='LC468'><span class="cm"> * @api private</span></div><div class='line' id='LC469'><span class="cm"> */</span></div><div class='line' id='LC470'><br/></div><div class='line' id='LC471'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">close</span> <span class="o">=</span></div><div class='line' id='LC472'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">disconnect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC473'> <span class="k">this</span><span class="p">.</span><span class="nx">skipReconnect</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC474'> <span class="k">this</span><span class="p">.</span><span class="nx">engine</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC475'><span class="p">};</span></div><div class='line' id='LC476'><br/></div><div class='line' id='LC477'><span class="cm">/**</span></div><div class='line' id='LC478'><span class="cm"> * Called upon engine close.</span></div><div class='line' id='LC479'><span class="cm"> *</span></div><div class='line' id='LC480'><span class="cm"> * @api private</span></div><div class='line' id='LC481'><span class="cm"> */</span></div><div class='line' id='LC482'><br/></div><div class='line' id='LC483'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onclose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">reason</span><span class="p">){</span></div><div class='line' id='LC484'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'close'</span><span class="p">);</span></div><div class='line' id='LC485'> <span class="k">this</span><span class="p">.</span><span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC486'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'closed'</span><span class="p">;</span></div><div class='line' id='LC487'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="nx">reason</span><span class="p">);</span></div><div class='line' id='LC488'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_reconnection</span> <span class="o">&&</span> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">skipReconnect</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC489'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnect</span><span class="p">();</span></div><div class='line' id='LC490'> <span class="p">}</span></div><div class='line' id='LC491'><span class="p">};</span></div><div class='line' id='LC492'><br/></div><div class='line' id='LC493'><span class="cm">/**</span></div><div class='line' id='LC494'><span class="cm"> * Attempt a reconnection.</span></div><div class='line' id='LC495'><span class="cm"> *</span></div><div class='line' id='LC496'><span class="cm"> * @api private</span></div><div class='line' id='LC497'><span class="cm"> */</span></div><div class='line' id='LC498'><br/></div><div class='line' id='LC499'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">reconnect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC500'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">reconnecting</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC501'><br/></div><div class='line' id='LC502'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC503'> <span class="k">this</span><span class="p">.</span><span class="nx">attempts</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC504'><br/></div><div class='line' id='LC505'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">attempts</span> <span class="o">></span> <span class="k">this</span><span class="p">.</span><span class="nx">_reconnectionAttempts</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC506'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'reconnect failed'</span><span class="p">);</span></div><div class='line' id='LC507'> <span class="k">this</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'reconnect_failed'</span><span class="p">);</span></div><div class='line' id='LC508'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnecting</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC509'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC510'> <span class="kd">var</span> <span class="nx">delay</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">attempts</span> <span class="o">*</span> <span class="k">this</span><span class="p">.</span><span class="nx">reconnectionDelay</span><span class="p">();</span></div><div class='line' id='LC511'> <span class="nx">delay</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">min</span><span class="p">(</span><span class="nx">delay</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">reconnectionDelayMax</span><span class="p">());</span></div><div class='line' id='LC512'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'will wait %dms before reconnect attempt'</span><span class="p">,</span> <span class="nx">delay</span><span class="p">);</span></div><div class='line' id='LC513'><br/></div><div class='line' id='LC514'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnecting</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC515'> <span class="kd">var</span> <span class="nx">timer</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC516'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'attempting reconnect'</span><span class="p">);</span></div><div class='line' id='LC517'> <span class="nx">self</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'reconnect_attempt'</span><span class="p">,</span> <span class="nx">self</span><span class="p">.</span><span class="nx">attempts</span><span class="p">);</span></div><div class='line' id='LC518'> <span class="nx">self</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'reconnecting'</span><span class="p">,</span> <span class="nx">self</span><span class="p">.</span><span class="nx">attempts</span><span class="p">);</span></div><div class='line' id='LC519'> <span class="nx">self</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">){</span></div><div class='line' id='LC520'> <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC521'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'reconnect attempt error'</span><span class="p">);</span></div><div class='line' id='LC522'> <span class="nx">self</span><span class="p">.</span><span class="nx">reconnecting</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC523'> <span class="nx">self</span><span class="p">.</span><span class="nx">reconnect</span><span class="p">();</span></div><div class='line' id='LC524'> <span class="nx">self</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'reconnect_error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC525'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC526'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'reconnect success'</span><span class="p">);</span></div><div class='line' id='LC527'> <span class="nx">self</span><span class="p">.</span><span class="nx">onreconnect</span><span class="p">();</span></div><div class='line' id='LC528'> <span class="p">}</span></div><div class='line' id='LC529'> <span class="p">});</span></div><div class='line' id='LC530'> <span class="p">},</span> <span class="nx">delay</span><span class="p">);</span></div><div class='line' id='LC531'><br/></div><div class='line' id='LC532'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">push</span><span class="p">({</span></div><div class='line' id='LC533'> <span class="nx">destroy</span><span class="o">:</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC534'> <span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">timer</span><span class="p">);</span></div><div class='line' id='LC535'> <span class="p">}</span></div><div class='line' id='LC536'> <span class="p">});</span></div><div class='line' id='LC537'> <span class="p">}</span></div><div class='line' id='LC538'><span class="p">};</span></div><div class='line' id='LC539'><br/></div><div class='line' id='LC540'><span class="cm">/**</span></div><div class='line' id='LC541'><span class="cm"> * Called upon successful reconnect.</span></div><div class='line' id='LC542'><span class="cm"> *</span></div><div class='line' id='LC543'><span class="cm"> * @api private</span></div><div class='line' id='LC544'><span class="cm"> */</span></div><div class='line' id='LC545'><br/></div><div class='line' id='LC546'><span class="nx">Manager</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onreconnect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC547'> <span class="kd">var</span> <span class="nx">attempt</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">attempts</span><span class="p">;</span></div><div class='line' id='LC548'> <span class="k">this</span><span class="p">.</span><span class="nx">attempts</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC549'> <span class="k">this</span><span class="p">.</span><span class="nx">reconnecting</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC550'> <span class="k">this</span><span class="p">.</span><span class="nx">emitAll</span><span class="p">(</span><span class="s1">'reconnect'</span><span class="p">,</span> <span class="nx">attempt</span><span class="p">);</span></div><div class='line' id='LC551'><span class="p">};</span></div><div class='line' id='LC552'><br/></div><div class='line' id='LC553'><span class="p">},{</span><span class="s2">"./on"</span><span class="o">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">"./socket"</span><span class="o">:</span><span class="mi">5</span><span class="p">,</span><span class="s2">"./url"</span><span class="o">:</span><span class="mi">6</span><span class="p">,</span><span class="s2">"component-bind"</span><span class="o">:</span><span class="mi">7</span><span class="p">,</span><span class="s2">"component-emitter"</span><span class="o">:</span><span class="mi">8</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"engine.io-client"</span><span class="o">:</span><span class="mi">11</span><span class="p">,</span><span class="s2">"object-component"</span><span class="o">:</span><span class="mi">37</span><span class="p">,</span><span class="s2">"socket.io-parser"</span><span class="o">:</span><span class="mi">40</span><span class="p">}],</span><span class="mi">4</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC554'><br/></div><div class='line' id='LC555'><span class="cm">/**</span></div><div class='line' id='LC556'><span class="cm"> * Module exports.</span></div><div class='line' id='LC557'><span class="cm"> */</span></div><div class='line' id='LC558'><br/></div><div class='line' id='LC559'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">on</span><span class="p">;</span></div><div class='line' id='LC560'><br/></div><div class='line' id='LC561'><span class="cm">/**</span></div><div class='line' id='LC562'><span class="cm"> * Helper for subscriptions.</span></div><div class='line' id='LC563'><span class="cm"> *</span></div><div class='line' id='LC564'><span class="cm"> * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`</span></div><div class='line' id='LC565'><span class="cm"> * @param {String} event name</span></div><div class='line' id='LC566'><span class="cm"> * @param {Function} callback</span></div><div class='line' id='LC567'><span class="cm"> * @api public</span></div><div class='line' id='LC568'><span class="cm"> */</span></div><div class='line' id='LC569'><br/></div><div class='line' id='LC570'><span class="kd">function</span> <span class="nx">on</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">ev</span><span class="p">,</span> <span class="nx">fn</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC571'> <span class="nx">obj</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC572'> <span class="k">return</span> <span class="p">{</span></div><div class='line' id='LC573'> <span class="nx">destroy</span><span class="o">:</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC574'> <span class="nx">obj</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="nx">ev</span><span class="p">,</span> <span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC575'> <span class="p">}</span></div><div class='line' id='LC576'> <span class="p">};</span></div><div class='line' id='LC577'><span class="p">}</span></div><div class='line' id='LC578'><br/></div><div class='line' id='LC579'><span class="p">},{}],</span><span class="mi">5</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC580'><br/></div><div class='line' id='LC581'><span class="cm">/**</span></div><div class='line' id='LC582'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC583'><span class="cm"> */</span></div><div class='line' id='LC584'><br/></div><div class='line' id='LC585'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'socket.io-parser'</span><span class="p">);</span></div><div class='line' id='LC586'><span class="kd">var</span> <span class="nx">Emitter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-emitter'</span><span class="p">);</span></div><div class='line' id='LC587'><span class="kd">var</span> <span class="nx">toArray</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'to-array'</span><span class="p">);</span></div><div class='line' id='LC588'><span class="kd">var</span> <span class="nx">on</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./on'</span><span class="p">);</span></div><div class='line' id='LC589'><span class="kd">var</span> <span class="nx">bind</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-bind'</span><span class="p">);</span></div><div class='line' id='LC590'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'socket.io-client:socket'</span><span class="p">);</span></div><div class='line' id='LC591'><span class="kd">var</span> <span class="nx">hasBin</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'has-binary-data'</span><span class="p">);</span></div><div class='line' id='LC592'><span class="kd">var</span> <span class="nx">indexOf</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'indexof'</span><span class="p">);</span></div><div class='line' id='LC593'><br/></div><div class='line' id='LC594'><span class="cm">/**</span></div><div class='line' id='LC595'><span class="cm"> * Module exports.</span></div><div class='line' id='LC596'><span class="cm"> */</span></div><div class='line' id='LC597'><br/></div><div class='line' id='LC598'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">exports</span> <span class="o">=</span> <span class="nx">Socket</span><span class="p">;</span></div><div class='line' id='LC599'><br/></div><div class='line' id='LC600'><span class="cm">/**</span></div><div class='line' id='LC601'><span class="cm"> * Internal events (blacklisted).</span></div><div class='line' id='LC602'><span class="cm"> * These events can't be emitted by the user.</span></div><div class='line' id='LC603'><span class="cm"> *</span></div><div class='line' id='LC604'><span class="cm"> * @api private</span></div><div class='line' id='LC605'><span class="cm"> */</span></div><div class='line' id='LC606'><br/></div><div class='line' id='LC607'><span class="kd">var</span> <span class="nx">events</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC608'> <span class="nx">connect</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC609'> <span class="nx">connect_error</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC610'> <span class="nx">connect_timeout</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC611'> <span class="nx">disconnect</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC612'> <span class="nx">error</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC613'> <span class="nx">reconnect</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC614'> <span class="nx">reconnect_attempt</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC615'> <span class="nx">reconnect_failed</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC616'> <span class="nx">reconnect_error</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC617'> <span class="nx">reconnecting</span><span class="o">:</span> <span class="mi">1</span></div><div class='line' id='LC618'><span class="p">};</span></div><div class='line' id='LC619'><br/></div><div class='line' id='LC620'><span class="cm">/**</span></div><div class='line' id='LC621'><span class="cm"> * Shortcut to `Emitter#emit`.</span></div><div class='line' id='LC622'><span class="cm"> */</span></div><div class='line' id='LC623'><br/></div><div class='line' id='LC624'><span class="kd">var</span> <span class="nx">emit</span> <span class="o">=</span> <span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">emit</span><span class="p">;</span></div><div class='line' id='LC625'><br/></div><div class='line' id='LC626'><span class="cm">/**</span></div><div class='line' id='LC627'><span class="cm"> * `Socket` constructor.</span></div><div class='line' id='LC628'><span class="cm"> *</span></div><div class='line' id='LC629'><span class="cm"> * @api public</span></div><div class='line' id='LC630'><span class="cm"> */</span></div><div class='line' id='LC631'><br/></div><div class='line' id='LC632'><span class="kd">function</span> <span class="nx">Socket</span><span class="p">(</span><span class="nx">io</span><span class="p">,</span> <span class="nx">nsp</span><span class="p">){</span></div><div class='line' id='LC633'> <span class="k">this</span><span class="p">.</span><span class="nx">io</span> <span class="o">=</span> <span class="nx">io</span><span class="p">;</span></div><div class='line' id='LC634'> <span class="k">this</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">=</span> <span class="nx">nsp</span><span class="p">;</span></div><div class='line' id='LC635'> <span class="k">this</span><span class="p">.</span><span class="nx">json</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span> <span class="c1">// compat</span></div><div class='line' id='LC636'> <span class="k">this</span><span class="p">.</span><span class="nx">ids</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC637'> <span class="k">this</span><span class="p">.</span><span class="nx">acks</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC638'> <span class="k">this</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span></div><div class='line' id='LC639'> <span class="k">this</span><span class="p">.</span><span class="nx">receiveBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC640'> <span class="k">this</span><span class="p">.</span><span class="nx">sendBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC641'> <span class="k">this</span><span class="p">.</span><span class="nx">connected</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC642'> <span class="k">this</span><span class="p">.</span><span class="nx">disconnected</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC643'> <span class="k">this</span><span class="p">.</span><span class="nx">subEvents</span><span class="p">();</span></div><div class='line' id='LC644'><span class="p">}</span></div><div class='line' id='LC645'><br/></div><div class='line' id='LC646'><span class="cm">/**</span></div><div class='line' id='LC647'><span class="cm"> * Mix in `Emitter`.</span></div><div class='line' id='LC648'><span class="cm"> */</span></div><div class='line' id='LC649'><br/></div><div class='line' id='LC650'><span class="nx">Emitter</span><span class="p">(</span><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span></div><div class='line' id='LC651'><br/></div><div class='line' id='LC652'><span class="cm">/**</span></div><div class='line' id='LC653'><span class="cm"> * Subscribe to open, close and packet events</span></div><div class='line' id='LC654'><span class="cm"> *</span></div><div class='line' id='LC655'><span class="cm"> * @api private</span></div><div class='line' id='LC656'><span class="cm"> */</span></div><div class='line' id='LC657'><br/></div><div class='line' id='LC658'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">subEvents</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC659'> <span class="kd">var</span> <span class="nx">io</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">io</span><span class="p">;</span></div><div class='line' id='LC660'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span> <span class="o">=</span> <span class="p">[</span></div><div class='line' id='LC661'> <span class="nx">on</span><span class="p">(</span><span class="nx">io</span><span class="p">,</span> <span class="s1">'open'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'onopen'</span><span class="p">)),</span></div><div class='line' id='LC662'> <span class="nx">on</span><span class="p">(</span><span class="nx">io</span><span class="p">,</span> <span class="s1">'packet'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'onpacket'</span><span class="p">)),</span></div><div class='line' id='LC663'> <span class="nx">on</span><span class="p">(</span><span class="nx">io</span><span class="p">,</span> <span class="s1">'close'</span><span class="p">,</span> <span class="nx">bind</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="s1">'onclose'</span><span class="p">))</span></div><div class='line' id='LC664'> <span class="p">];</span></div><div class='line' id='LC665'><span class="p">};</span></div><div class='line' id='LC666'><br/></div><div class='line' id='LC667'><span class="cm">/**</span></div><div class='line' id='LC668'><span class="cm"> * Called upon engine `open`.</span></div><div class='line' id='LC669'><span class="cm"> *</span></div><div class='line' id='LC670'><span class="cm"> * @api private</span></div><div class='line' id='LC671'><span class="cm"> */</span></div><div class='line' id='LC672'><br/></div><div class='line' id='LC673'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">open</span> <span class="o">=</span></div><div class='line' id='LC674'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">connect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC675'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">connected</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC676'><br/></div><div class='line' id='LC677'> <span class="k">this</span><span class="p">.</span><span class="nx">io</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span> <span class="c1">// ensure open</span></div><div class='line' id='LC678'> <span class="k">if</span> <span class="p">(</span><span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">io</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">onopen</span><span class="p">();</span></div><div class='line' id='LC679'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC680'><span class="p">};</span></div><div class='line' id='LC681'><br/></div><div class='line' id='LC682'><span class="cm">/**</span></div><div class='line' id='LC683'><span class="cm"> * Sends a `message` event.</span></div><div class='line' id='LC684'><span class="cm"> *</span></div><div class='line' id='LC685'><span class="cm"> * @return {Socket} self</span></div><div class='line' id='LC686'><span class="cm"> * @api public</span></div><div class='line' id='LC687'><span class="cm"> */</span></div><div class='line' id='LC688'><br/></div><div class='line' id='LC689'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">send</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC690'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nx">toArray</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC691'> <span class="nx">args</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="s1">'message'</span><span class="p">);</span></div><div class='line' id='LC692'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC693'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC694'><span class="p">};</span></div><div class='line' id='LC695'><br/></div><div class='line' id='LC696'><span class="cm">/**</span></div><div class='line' id='LC697'><span class="cm"> * Override `emit`.</span></div><div class='line' id='LC698'><span class="cm"> * If the event is in `events`, it's emitted normally.</span></div><div class='line' id='LC699'><span class="cm"> *</span></div><div class='line' id='LC700'><span class="cm"> * @param {String} event name</span></div><div class='line' id='LC701'><span class="cm"> * @return {Socket} self</span></div><div class='line' id='LC702'><span class="cm"> * @api public</span></div><div class='line' id='LC703'><span class="cm"> */</span></div><div class='line' id='LC704'><br/></div><div class='line' id='LC705'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">emit</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">ev</span><span class="p">){</span></div><div class='line' id='LC706'> <span class="k">if</span> <span class="p">(</span><span class="nx">events</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">ev</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC707'> <span class="nx">emit</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC708'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC709'> <span class="p">}</span></div><div class='line' id='LC710'><br/></div><div class='line' id='LC711'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nx">toArray</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC712'> <span class="kd">var</span> <span class="nx">parserType</span> <span class="o">=</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">EVENT</span><span class="p">;</span> <span class="c1">// default</span></div><div class='line' id='LC713'> <span class="k">if</span> <span class="p">(</span><span class="nx">hasBin</span><span class="p">(</span><span class="nx">args</span><span class="p">))</span> <span class="p">{</span> <span class="nx">parserType</span> <span class="o">=</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">BINARY_EVENT</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// binary</span></div><div class='line' id='LC714'> <span class="kd">var</span> <span class="nx">packet</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">parserType</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">args</span> <span class="p">};</span></div><div class='line' id='LC715'><br/></div><div class='line' id='LC716'> <span class="c1">// event ack callback</span></div><div class='line' id='LC717'> <span class="k">if</span> <span class="p">(</span><span class="s1">'function'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">args</span><span class="p">[</span><span class="nx">args</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">])</span> <span class="p">{</span></div><div class='line' id='LC718'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'emitting packet with ack id %d'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">ids</span><span class="p">);</span></div><div class='line' id='LC719'> <span class="k">this</span><span class="p">.</span><span class="nx">acks</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">ids</span><span class="p">]</span> <span class="o">=</span> <span class="nx">args</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span></div><div class='line' id='LC720'> <span class="nx">packet</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">ids</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC721'> <span class="p">}</span></div><div class='line' id='LC722'><br/></div><div class='line' id='LC723'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">connected</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC724'> <span class="k">this</span><span class="p">.</span><span class="nx">packet</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC725'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC726'> <span class="k">this</span><span class="p">.</span><span class="nx">sendBuffer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC727'> <span class="p">}</span></div><div class='line' id='LC728'><br/></div><div class='line' id='LC729'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC730'><span class="p">};</span></div><div class='line' id='LC731'><br/></div><div class='line' id='LC732'><span class="cm">/**</span></div><div class='line' id='LC733'><span class="cm"> * Sends a packet.</span></div><div class='line' id='LC734'><span class="cm"> *</span></div><div class='line' id='LC735'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC736'><span class="cm"> * @api private</span></div><div class='line' id='LC737'><span class="cm"> */</span></div><div class='line' id='LC738'><br/></div><div class='line' id='LC739'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">packet</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">){</span></div><div class='line' id='LC740'> <span class="nx">packet</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsp</span><span class="p">;</span></div><div class='line' id='LC741'> <span class="k">this</span><span class="p">.</span><span class="nx">io</span><span class="p">.</span><span class="nx">packet</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC742'><span class="p">};</span></div><div class='line' id='LC743'><br/></div><div class='line' id='LC744'><span class="cm">/**</span></div><div class='line' id='LC745'><span class="cm"> * "Opens" the socket.</span></div><div class='line' id='LC746'><span class="cm"> *</span></div><div class='line' id='LC747'><span class="cm"> * @api private</span></div><div class='line' id='LC748'><span class="cm"> */</span></div><div class='line' id='LC749'><br/></div><div class='line' id='LC750'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onopen</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC751'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'transport is open - connecting'</span><span class="p">);</span></div><div class='line' id='LC752'><br/></div><div class='line' id='LC753'> <span class="c1">// write connect packet if necessary</span></div><div class='line' id='LC754'> <span class="k">if</span> <span class="p">(</span><span class="s1">'/'</span> <span class="o">!=</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsp</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC755'> <span class="k">this</span><span class="p">.</span><span class="nx">packet</span><span class="p">({</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">CONNECT</span> <span class="p">});</span></div><div class='line' id='LC756'> <span class="p">}</span></div><div class='line' id='LC757'><span class="p">};</span></div><div class='line' id='LC758'><br/></div><div class='line' id='LC759'><span class="cm">/**</span></div><div class='line' id='LC760'><span class="cm"> * Called upon engine `close`.</span></div><div class='line' id='LC761'><span class="cm"> *</span></div><div class='line' id='LC762'><span class="cm"> * @param {String} reason</span></div><div class='line' id='LC763'><span class="cm"> * @api private</span></div><div class='line' id='LC764'><span class="cm"> */</span></div><div class='line' id='LC765'><br/></div><div class='line' id='LC766'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onclose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">reason</span><span class="p">){</span></div><div class='line' id='LC767'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'close (%s)'</span><span class="p">,</span> <span class="nx">reason</span><span class="p">);</span></div><div class='line' id='LC768'> <span class="k">this</span><span class="p">.</span><span class="nx">connected</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC769'> <span class="k">this</span><span class="p">.</span><span class="nx">disconnected</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC770'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'disconnect'</span><span class="p">,</span> <span class="nx">reason</span><span class="p">);</span></div><div class='line' id='LC771'><span class="p">};</span></div><div class='line' id='LC772'><br/></div><div class='line' id='LC773'><span class="cm">/**</span></div><div class='line' id='LC774'><span class="cm"> * Called with socket packet.</span></div><div class='line' id='LC775'><span class="cm"> *</span></div><div class='line' id='LC776'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC777'><span class="cm"> * @api private</span></div><div class='line' id='LC778'><span class="cm"> */</span></div><div class='line' id='LC779'><br/></div><div class='line' id='LC780'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onpacket</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">){</span></div><div class='line' id='LC781'> <span class="k">if</span> <span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">!=</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsp</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC782'><br/></div><div class='line' id='LC783'> <span class="k">switch</span> <span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC784'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">CONNECT</span><span class="o">:</span></div><div class='line' id='LC785'> <span class="k">this</span><span class="p">.</span><span class="nx">onconnect</span><span class="p">();</span></div><div class='line' id='LC786'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC787'><br/></div><div class='line' id='LC788'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">EVENT</span><span class="o">:</span></div><div class='line' id='LC789'> <span class="k">this</span><span class="p">.</span><span class="nx">onevent</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC790'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC791'><br/></div><div class='line' id='LC792'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">BINARY_EVENT</span><span class="o">:</span></div><div class='line' id='LC793'> <span class="k">this</span><span class="p">.</span><span class="nx">onevent</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC794'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC795'><br/></div><div class='line' id='LC796'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">ACK</span><span class="o">:</span></div><div class='line' id='LC797'> <span class="k">this</span><span class="p">.</span><span class="nx">onack</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC798'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC799'><br/></div><div class='line' id='LC800'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">BINARY_ACK</span><span class="o">:</span></div><div class='line' id='LC801'> <span class="k">this</span><span class="p">.</span><span class="nx">onack</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC802'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC803'><br/></div><div class='line' id='LC804'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">DISCONNECT</span><span class="o">:</span></div><div class='line' id='LC805'> <span class="k">this</span><span class="p">.</span><span class="nx">ondisconnect</span><span class="p">();</span></div><div class='line' id='LC806'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC807'><br/></div><div class='line' id='LC808'> <span class="k">case</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">ERROR</span><span class="o">:</span></div><div class='line' id='LC809'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC810'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC811'> <span class="p">}</span></div><div class='line' id='LC812'><span class="p">};</span></div><div class='line' id='LC813'><br/></div><div class='line' id='LC814'><span class="cm">/**</span></div><div class='line' id='LC815'><span class="cm"> * Called upon a server event.</span></div><div class='line' id='LC816'><span class="cm"> *</span></div><div class='line' id='LC817'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC818'><span class="cm"> * @api private</span></div><div class='line' id='LC819'><span class="cm"> */</span></div><div class='line' id='LC820'><br/></div><div class='line' id='LC821'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onevent</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">){</span></div><div class='line' id='LC822'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span> <span class="o">||</span> <span class="p">[];</span></div><div class='line' id='LC823'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'emitting event %j'</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC824'><br/></div><div class='line' id='LC825'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">!=</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC826'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'attaching ack callback to event'</span><span class="p">);</span></div><div class='line' id='LC827'> <span class="nx">args</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">ack</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">id</span><span class="p">));</span></div><div class='line' id='LC828'> <span class="p">}</span></div><div class='line' id='LC829'><br/></div><div class='line' id='LC830'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">connected</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC831'> <span class="nx">emit</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC832'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC833'> <span class="k">this</span><span class="p">.</span><span class="nx">receiveBuffer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC834'> <span class="p">}</span></div><div class='line' id='LC835'><span class="p">};</span></div><div class='line' id='LC836'><br/></div><div class='line' id='LC837'><span class="cm">/**</span></div><div class='line' id='LC838'><span class="cm"> * Produces an ack callback to emit with an event.</span></div><div class='line' id='LC839'><span class="cm"> *</span></div><div class='line' id='LC840'><span class="cm"> * @api private</span></div><div class='line' id='LC841'><span class="cm"> */</span></div><div class='line' id='LC842'><br/></div><div class='line' id='LC843'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">ack</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">id</span><span class="p">){</span></div><div class='line' id='LC844'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC845'> <span class="kd">var</span> <span class="nx">sent</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC846'> <span class="k">return</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC847'> <span class="c1">// prevent double callbacks</span></div><div class='line' id='LC848'> <span class="k">if</span> <span class="p">(</span><span class="nx">sent</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC849'> <span class="nx">sent</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC850'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nx">toArray</span><span class="p">(</span><span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC851'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'sending ack %j'</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC852'><br/></div><div class='line' id='LC853'> <span class="kd">var</span> <span class="nx">type</span> <span class="o">=</span> <span class="nx">hasBin</span><span class="p">(</span><span class="nx">args</span><span class="p">)</span> <span class="o">?</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">BINARY_ACK</span> <span class="o">:</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">ACK</span><span class="p">;</span></div><div class='line' id='LC854'> <span class="nx">self</span><span class="p">.</span><span class="nx">packet</span><span class="p">({</span></div><div class='line' id='LC855'> <span class="nx">type</span><span class="o">:</span> <span class="nx">type</span><span class="p">,</span></div><div class='line' id='LC856'> <span class="nx">id</span><span class="o">:</span> <span class="nx">id</span><span class="p">,</span></div><div class='line' id='LC857'> <span class="nx">data</span><span class="o">:</span> <span class="nx">args</span></div><div class='line' id='LC858'> <span class="p">});</span></div><div class='line' id='LC859'> <span class="p">};</span></div><div class='line' id='LC860'><span class="p">};</span></div><div class='line' id='LC861'><br/></div><div class='line' id='LC862'><span class="cm">/**</span></div><div class='line' id='LC863'><span class="cm"> * Called upon a server acknowlegement.</span></div><div class='line' id='LC864'><span class="cm"> *</span></div><div class='line' id='LC865'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC866'><span class="cm"> * @api private</span></div><div class='line' id='LC867'><span class="cm"> */</span></div><div class='line' id='LC868'><br/></div><div class='line' id='LC869'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onack</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">){</span></div><div class='line' id='LC870'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'calling ack %s with %j'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">id</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC871'> <span class="kd">var</span> <span class="nx">fn</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">acks</span><span class="p">[</span><span class="nx">packet</span><span class="p">.</span><span class="nx">id</span><span class="p">];</span></div><div class='line' id='LC872'> <span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC873'> <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">acks</span><span class="p">[</span><span class="nx">packet</span><span class="p">.</span><span class="nx">id</span><span class="p">];</span></div><div class='line' id='LC874'><span class="p">};</span></div><div class='line' id='LC875'><br/></div><div class='line' id='LC876'><span class="cm">/**</span></div><div class='line' id='LC877'><span class="cm"> * Called upon server connect.</span></div><div class='line' id='LC878'><span class="cm"> *</span></div><div class='line' id='LC879'><span class="cm"> * @api private</span></div><div class='line' id='LC880'><span class="cm"> */</span></div><div class='line' id='LC881'><br/></div><div class='line' id='LC882'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onconnect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC883'> <span class="k">this</span><span class="p">.</span><span class="nx">connected</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC884'> <span class="k">this</span><span class="p">.</span><span class="nx">disconnected</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC885'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'connect'</span><span class="p">);</span></div><div class='line' id='LC886'> <span class="k">this</span><span class="p">.</span><span class="nx">emitBuffered</span><span class="p">();</span></div><div class='line' id='LC887'><span class="p">};</span></div><div class='line' id='LC888'><br/></div><div class='line' id='LC889'><span class="cm">/**</span></div><div class='line' id='LC890'><span class="cm"> * Emit buffered events (received and emitted).</span></div><div class='line' id='LC891'><span class="cm"> *</span></div><div class='line' id='LC892'><span class="cm"> * @api private</span></div><div class='line' id='LC893'><span class="cm"> */</span></div><div class='line' id='LC894'><br/></div><div class='line' id='LC895'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">emitBuffered</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC896'> <span class="kd">var</span> <span class="nx">i</span><span class="p">;</span></div><div class='line' id='LC897'> <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="k">this</span><span class="p">.</span><span class="nx">receiveBuffer</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC898'> <span class="nx">emit</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">receiveBuffer</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC899'> <span class="p">}</span></div><div class='line' id='LC900'> <span class="k">this</span><span class="p">.</span><span class="nx">receiveBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC901'><br/></div><div class='line' id='LC902'> <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="k">this</span><span class="p">.</span><span class="nx">sendBuffer</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC903'> <span class="k">this</span><span class="p">.</span><span class="nx">packet</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">sendBuffer</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC904'> <span class="p">}</span></div><div class='line' id='LC905'> <span class="k">this</span><span class="p">.</span><span class="nx">sendBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC906'><span class="p">};</span></div><div class='line' id='LC907'><br/></div><div class='line' id='LC908'><span class="cm">/**</span></div><div class='line' id='LC909'><span class="cm"> * Called upon server disconnect.</span></div><div class='line' id='LC910'><span class="cm"> *</span></div><div class='line' id='LC911'><span class="cm"> * @api private</span></div><div class='line' id='LC912'><span class="cm"> */</span></div><div class='line' id='LC913'><br/></div><div class='line' id='LC914'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">ondisconnect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC915'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'server disconnect (%s)'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsp</span><span class="p">);</span></div><div class='line' id='LC916'> <span class="k">this</span><span class="p">.</span><span class="nx">destroy</span><span class="p">();</span></div><div class='line' id='LC917'> <span class="k">this</span><span class="p">.</span><span class="nx">onclose</span><span class="p">(</span><span class="s1">'io server disconnect'</span><span class="p">);</span></div><div class='line' id='LC918'><span class="p">};</span></div><div class='line' id='LC919'><br/></div><div class='line' id='LC920'><span class="cm">/**</span></div><div class='line' id='LC921'><span class="cm"> * Called upon forced client/server side disconnections,</span></div><div class='line' id='LC922'><span class="cm"> * this method ensures the manager stops tracking us and</span></div><div class='line' id='LC923'><span class="cm"> * that reconnections don't get triggered for this.</span></div><div class='line' id='LC924'><span class="cm"> *</span></div><div class='line' id='LC925'><span class="cm"> * @api private.</span></div><div class='line' id='LC926'><span class="cm"> */</span></div><div class='line' id='LC927'><br/></div><div class='line' id='LC928'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">destroy</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC929'> <span class="c1">// clean subscriptions to avoid reconnections</span></div><div class='line' id='LC930'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC931'> <span class="k">this</span><span class="p">.</span><span class="nx">subs</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">destroy</span><span class="p">();</span></div><div class='line' id='LC932'> <span class="p">}</span></div><div class='line' id='LC933'><br/></div><div class='line' id='LC934'> <span class="k">this</span><span class="p">.</span><span class="nx">io</span><span class="p">.</span><span class="nx">destroy</span><span class="p">(</span><span class="k">this</span><span class="p">);</span></div><div class='line' id='LC935'><span class="p">};</span></div><div class='line' id='LC936'><br/></div><div class='line' id='LC937'><span class="cm">/**</span></div><div class='line' id='LC938'><span class="cm"> * Disconnects the socket manually.</span></div><div class='line' id='LC939'><span class="cm"> *</span></div><div class='line' id='LC940'><span class="cm"> * @return {Socket} self</span></div><div class='line' id='LC941'><span class="cm"> * @api public</span></div><div class='line' id='LC942'><span class="cm"> */</span></div><div class='line' id='LC943'><br/></div><div class='line' id='LC944'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">close</span> <span class="o">=</span></div><div class='line' id='LC945'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">disconnect</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC946'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">connected</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC947'><br/></div><div class='line' id='LC948'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'performing disconnect (%s)'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">nsp</span><span class="p">);</span></div><div class='line' id='LC949'> <span class="k">this</span><span class="p">.</span><span class="nx">packet</span><span class="p">({</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">DISCONNECT</span> <span class="p">});</span></div><div class='line' id='LC950'><br/></div><div class='line' id='LC951'> <span class="c1">// remove socket from pool</span></div><div class='line' id='LC952'> <span class="k">this</span><span class="p">.</span><span class="nx">destroy</span><span class="p">();</span></div><div class='line' id='LC953'><br/></div><div class='line' id='LC954'> <span class="c1">// fire events</span></div><div class='line' id='LC955'> <span class="k">this</span><span class="p">.</span><span class="nx">onclose</span><span class="p">(</span><span class="s1">'io client disconnect'</span><span class="p">);</span></div><div class='line' id='LC956'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC957'><span class="p">};</span></div><div class='line' id='LC958'><br/></div><div class='line' id='LC959'><span class="p">},{</span><span class="s2">"./on"</span><span class="o">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">"component-bind"</span><span class="o">:</span><span class="mi">7</span><span class="p">,</span><span class="s2">"component-emitter"</span><span class="o">:</span><span class="mi">8</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"has-binary-data"</span><span class="o">:</span><span class="mi">32</span><span class="p">,</span><span class="s2">"indexof"</span><span class="o">:</span><span class="mi">36</span><span class="p">,</span><span class="s2">"socket.io-parser"</span><span class="o">:</span><span class="mi">40</span><span class="p">,</span><span class="s2">"to-array"</span><span class="o">:</span><span class="mi">43</span><span class="p">}],</span><span class="mi">6</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC960'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span></div><div class='line' id='LC961'><span class="cm">/**</span></div><div class='line' id='LC962'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC963'><span class="cm"> */</span></div><div class='line' id='LC964'><br/></div><div class='line' id='LC965'><span class="kd">var</span> <span class="nx">parseuri</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'parseuri'</span><span class="p">);</span></div><div class='line' id='LC966'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'socket.io-client:url'</span><span class="p">);</span></div><div class='line' id='LC967'><br/></div><div class='line' id='LC968'><span class="cm">/**</span></div><div class='line' id='LC969'><span class="cm"> * Module exports.</span></div><div class='line' id='LC970'><span class="cm"> */</span></div><div class='line' id='LC971'><br/></div><div class='line' id='LC972'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">url</span><span class="p">;</span></div><div class='line' id='LC973'><br/></div><div class='line' id='LC974'><span class="cm">/**</span></div><div class='line' id='LC975'><span class="cm"> * URL parser.</span></div><div class='line' id='LC976'><span class="cm"> *</span></div><div class='line' id='LC977'><span class="cm"> * @param {String} url</span></div><div class='line' id='LC978'><span class="cm"> * @param {Object} An object meant to mimic window.location.</span></div><div class='line' id='LC979'><span class="cm"> * Defaults to window.location.</span></div><div class='line' id='LC980'><span class="cm"> * @api public</span></div><div class='line' id='LC981'><span class="cm"> */</span></div><div class='line' id='LC982'><br/></div><div class='line' id='LC983'><span class="kd">function</span> <span class="nx">url</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">loc</span><span class="p">){</span></div><div class='line' id='LC984'> <span class="kd">var</span> <span class="nx">obj</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC985'><br/></div><div class='line' id='LC986'> <span class="c1">// default to window.location</span></div><div class='line' id='LC987'> <span class="kd">var</span> <span class="nx">loc</span> <span class="o">=</span> <span class="nx">loc</span> <span class="o">||</span> <span class="nx">global</span><span class="p">.</span><span class="nx">location</span><span class="p">;</span></div><div class='line' id='LC988'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">==</span> <span class="nx">uri</span><span class="p">)</span> <span class="nx">uri</span> <span class="o">=</span> <span class="nx">loc</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">+</span> <span class="s1">'//'</span> <span class="o">+</span> <span class="nx">loc</span><span class="p">.</span><span class="nx">hostname</span><span class="p">;</span></div><div class='line' id='LC989'><br/></div><div class='line' id='LC990'> <span class="c1">// relative path support</span></div><div class='line' id='LC991'> <span class="k">if</span> <span class="p">(</span><span class="s1">'string'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">uri</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC992'> <span class="k">if</span> <span class="p">(</span><span class="s1">'/'</span> <span class="o">==</span> <span class="nx">uri</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC993'> <span class="k">if</span> <span class="p">(</span><span class="s1">'undefined'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">loc</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC994'> <span class="nx">uri</span> <span class="o">=</span> <span class="nx">loc</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">+</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC995'> <span class="p">}</span></div><div class='line' id='LC996'> <span class="p">}</span></div><div class='line' id='LC997'><br/></div><div class='line' id='LC998'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="sr">/^(https?|wss?):\/\//</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">uri</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC999'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'protocol-less url %s'</span><span class="p">,</span> <span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC1000'> <span class="k">if</span> <span class="p">(</span><span class="s1">'undefined'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">loc</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1001'> <span class="nx">uri</span> <span class="o">=</span> <span class="nx">loc</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">+</span> <span class="s1">'//'</span> <span class="o">+</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC1002'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC1003'> <span class="nx">uri</span> <span class="o">=</span> <span class="s1">'https://'</span> <span class="o">+</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC1004'> <span class="p">}</span></div><div class='line' id='LC1005'> <span class="p">}</span></div><div class='line' id='LC1006'><br/></div><div class='line' id='LC1007'> <span class="c1">// parse</span></div><div class='line' id='LC1008'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'parse %s'</span><span class="p">,</span> <span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC1009'> <span class="nx">obj</span> <span class="o">=</span> <span class="nx">parseuri</span><span class="p">(</span><span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC1010'> <span class="p">}</span></div><div class='line' id='LC1011'><br/></div><div class='line' id='LC1012'> <span class="c1">// make sure we treat `localhost:80` and `localhost` equally</span></div><div class='line' id='LC1013'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">obj</span><span class="p">.</span><span class="nx">port</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1014'> <span class="k">if</span> <span class="p">(</span><span class="sr">/^(http|ws)$/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">protocol</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC1015'> <span class="nx">obj</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="s1">'80'</span><span class="p">;</span></div><div class='line' id='LC1016'> <span class="p">}</span></div><div class='line' id='LC1017'> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="sr">/^(http|ws)s$/</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">protocol</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC1018'> <span class="nx">obj</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="s1">'443'</span><span class="p">;</span></div><div class='line' id='LC1019'> <span class="p">}</span></div><div class='line' id='LC1020'> <span class="p">}</span></div><div class='line' id='LC1021'><br/></div><div class='line' id='LC1022'> <span class="nx">obj</span><span class="p">.</span><span class="nx">path</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">path</span> <span class="o">||</span> <span class="s1">'/'</span><span class="p">;</span></div><div class='line' id='LC1023'><br/></div><div class='line' id='LC1024'> <span class="c1">// define unique id</span></div><div class='line' id='LC1025'> <span class="nx">obj</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">+</span> <span class="s1">'://'</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">host</span> <span class="o">+</span> <span class="s1">':'</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC1026'> <span class="c1">// define href</span></div><div class='line' id='LC1027'> <span class="nx">obj</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">+</span> <span class="s1">'://'</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">host</span> <span class="o">+</span> <span class="p">(</span><span class="nx">loc</span> <span class="o">&&</span> <span class="nx">loc</span><span class="p">.</span><span class="nx">port</span> <span class="o">==</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">port</span> <span class="o">?</span> <span class="s1">''</span> <span class="o">:</span> <span class="p">(</span><span class="s1">':'</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">port</span><span class="p">));</span></div><div class='line' id='LC1028'><br/></div><div class='line' id='LC1029'> <span class="k">return</span> <span class="nx">obj</span><span class="p">;</span></div><div class='line' id='LC1030'><span class="p">}</span></div><div class='line' id='LC1031'><br/></div><div class='line' id='LC1032'><span class="p">},{</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"parseuri"</span><span class="o">:</span><span class="mi">38</span><span class="p">}],</span><span class="mi">7</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1033'><span class="cm">/**</span></div><div class='line' id='LC1034'><span class="cm"> * Slice reference.</span></div><div class='line' id='LC1035'><span class="cm"> */</span></div><div class='line' id='LC1036'><br/></div><div class='line' id='LC1037'><span class="kd">var</span> <span class="nx">slice</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">slice</span><span class="p">;</span></div><div class='line' id='LC1038'><br/></div><div class='line' id='LC1039'><span class="cm">/**</span></div><div class='line' id='LC1040'><span class="cm"> * Bind `obj` to `fn`.</span></div><div class='line' id='LC1041'><span class="cm"> *</span></div><div class='line' id='LC1042'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC1043'><span class="cm"> * @param {Function|String} fn or string</span></div><div class='line' id='LC1044'><span class="cm"> * @return {Function}</span></div><div class='line' id='LC1045'><span class="cm"> * @api public</span></div><div class='line' id='LC1046'><span class="cm"> */</span></div><div class='line' id='LC1047'><br/></div><div class='line' id='LC1048'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1049'> <span class="k">if</span> <span class="p">(</span><span class="s1">'string'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">fn</span><span class="p">)</span> <span class="nx">fn</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">[</span><span class="nx">fn</span><span class="p">];</span></div><div class='line' id='LC1050'> <span class="k">if</span> <span class="p">(</span><span class="s1">'function'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">fn</span><span class="p">)</span> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'bind() requires a function'</span><span class="p">);</span></div><div class='line' id='LC1051'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">2</span><span class="p">);</span></div><div class='line' id='LC1052'> <span class="k">return</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC1053'> <span class="k">return</span> <span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">args</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">)));</span></div><div class='line' id='LC1054'> <span class="p">}</span></div><div class='line' id='LC1055'><span class="p">};</span></div><div class='line' id='LC1056'><br/></div><div class='line' id='LC1057'><span class="p">},{}],</span><span class="mi">8</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1058'><br/></div><div class='line' id='LC1059'><span class="cm">/**</span></div><div class='line' id='LC1060'><span class="cm"> * Expose `Emitter`.</span></div><div class='line' id='LC1061'><span class="cm"> */</span></div><div class='line' id='LC1062'><br/></div><div class='line' id='LC1063'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">Emitter</span><span class="p">;</span></div><div class='line' id='LC1064'><br/></div><div class='line' id='LC1065'><span class="cm">/**</span></div><div class='line' id='LC1066'><span class="cm"> * Initialize a new `Emitter`.</span></div><div class='line' id='LC1067'><span class="cm"> *</span></div><div class='line' id='LC1068'><span class="cm"> * @api public</span></div><div class='line' id='LC1069'><span class="cm"> */</span></div><div class='line' id='LC1070'><br/></div><div class='line' id='LC1071'><span class="kd">function</span> <span class="nx">Emitter</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1072'> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="k">return</span> <span class="nx">mixin</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC1073'><span class="p">};</span></div><div class='line' id='LC1074'><br/></div><div class='line' id='LC1075'><span class="cm">/**</span></div><div class='line' id='LC1076'><span class="cm"> * Mixin the emitter properties.</span></div><div class='line' id='LC1077'><span class="cm"> *</span></div><div class='line' id='LC1078'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC1079'><span class="cm"> * @return {Object}</span></div><div class='line' id='LC1080'><span class="cm"> * @api private</span></div><div class='line' id='LC1081'><span class="cm"> */</span></div><div class='line' id='LC1082'><br/></div><div class='line' id='LC1083'><span class="kd">function</span> <span class="nx">mixin</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1084'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1085'> <span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span></div><div class='line' id='LC1086'> <span class="p">}</span></div><div class='line' id='LC1087'> <span class="k">return</span> <span class="nx">obj</span><span class="p">;</span></div><div class='line' id='LC1088'><span class="p">}</span></div><div class='line' id='LC1089'><br/></div><div class='line' id='LC1090'><span class="cm">/**</span></div><div class='line' id='LC1091'><span class="cm"> * Listen on the given `event` with `fn`.</span></div><div class='line' id='LC1092'><span class="cm"> *</span></div><div class='line' id='LC1093'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1094'><span class="cm"> * @param {Function} fn</span></div><div class='line' id='LC1095'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1096'><span class="cm"> * @api public</span></div><div class='line' id='LC1097'><span class="cm"> */</span></div><div class='line' id='LC1098'><br/></div><div class='line' id='LC1099'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span></div><div class='line' id='LC1100'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addEventListener</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1101'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1102'> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">]</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">]</span> <span class="o">||</span> <span class="p">[])</span></div><div class='line' id='LC1103'> <span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC1104'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1105'><span class="p">};</span></div><div class='line' id='LC1106'><br/></div><div class='line' id='LC1107'><span class="cm">/**</span></div><div class='line' id='LC1108'><span class="cm"> * Adds an `event` listener that will be invoked a single</span></div><div class='line' id='LC1109'><span class="cm"> * time then automatically removed.</span></div><div class='line' id='LC1110'><span class="cm"> *</span></div><div class='line' id='LC1111'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1112'><span class="cm"> * @param {Function} fn</span></div><div class='line' id='LC1113'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1114'><span class="cm"> * @api public</span></div><div class='line' id='LC1115'><span class="cm"> */</span></div><div class='line' id='LC1116'><br/></div><div class='line' id='LC1117'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">once</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1118'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1119'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1120'><br/></div><div class='line' id='LC1121'> <span class="kd">function</span> <span class="nx">on</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1122'> <span class="nx">self</span><span class="p">.</span><span class="nx">off</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">on</span><span class="p">);</span></div><div class='line' id='LC1123'> <span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC1124'> <span class="p">}</span></div><div class='line' id='LC1125'><br/></div><div class='line' id='LC1126'> <span class="nx">on</span><span class="p">.</span><span class="nx">fn</span> <span class="o">=</span> <span class="nx">fn</span><span class="p">;</span></div><div class='line' id='LC1127'> <span class="k">this</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">on</span><span class="p">);</span></div><div class='line' id='LC1128'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1129'><span class="p">};</span></div><div class='line' id='LC1130'><br/></div><div class='line' id='LC1131'><span class="cm">/**</span></div><div class='line' id='LC1132'><span class="cm"> * Remove the given callback for `event` or all</span></div><div class='line' id='LC1133'><span class="cm"> * registered callbacks.</span></div><div class='line' id='LC1134'><span class="cm"> *</span></div><div class='line' id='LC1135'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1136'><span class="cm"> * @param {Function} fn</span></div><div class='line' id='LC1137'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1138'><span class="cm"> * @api public</span></div><div class='line' id='LC1139'><span class="cm"> */</span></div><div class='line' id='LC1140'><br/></div><div class='line' id='LC1141'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">off</span> <span class="o">=</span></div><div class='line' id='LC1142'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">removeListener</span> <span class="o">=</span></div><div class='line' id='LC1143'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">removeAllListeners</span> <span class="o">=</span></div><div class='line' id='LC1144'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">removeEventListener</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1145'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1146'><br/></div><div class='line' id='LC1147'> <span class="c1">// all</span></div><div class='line' id='LC1148'> <span class="k">if</span> <span class="p">(</span><span class="mi">0</span> <span class="o">==</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1149'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC1150'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1151'> <span class="p">}</span></div><div class='line' id='LC1152'><br/></div><div class='line' id='LC1153'> <span class="c1">// specific event</span></div><div class='line' id='LC1154'> <span class="kd">var</span> <span class="nx">callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">];</span></div><div class='line' id='LC1155'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">callbacks</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1156'><br/></div><div class='line' id='LC1157'> <span class="c1">// remove all handlers</span></div><div class='line' id='LC1158'> <span class="k">if</span> <span class="p">(</span><span class="mi">1</span> <span class="o">==</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1159'> <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">];</span></div><div class='line' id='LC1160'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1161'> <span class="p">}</span></div><div class='line' id='LC1162'><br/></div><div class='line' id='LC1163'> <span class="c1">// remove specific handler</span></div><div class='line' id='LC1164'> <span class="kd">var</span> <span class="nx">cb</span><span class="p">;</span></div><div class='line' id='LC1165'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1166'> <span class="nx">cb</span> <span class="o">=</span> <span class="nx">callbacks</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC1167'> <span class="k">if</span> <span class="p">(</span><span class="nx">cb</span> <span class="o">===</span> <span class="nx">fn</span> <span class="o">||</span> <span class="nx">cb</span><span class="p">.</span><span class="nx">fn</span> <span class="o">===</span> <span class="nx">fn</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1168'> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC1169'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC1170'> <span class="p">}</span></div><div class='line' id='LC1171'> <span class="p">}</span></div><div class='line' id='LC1172'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1173'><span class="p">};</span></div><div class='line' id='LC1174'><br/></div><div class='line' id='LC1175'><span class="cm">/**</span></div><div class='line' id='LC1176'><span class="cm"> * Emit `event` with the given args.</span></div><div class='line' id='LC1177'><span class="cm"> *</span></div><div class='line' id='LC1178'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1179'><span class="cm"> * @param {Mixed} ...</span></div><div class='line' id='LC1180'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1181'><span class="cm"> */</span></div><div class='line' id='LC1182'><br/></div><div class='line' id='LC1183'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">emit</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span></div><div class='line' id='LC1184'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1185'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div><div class='line' id='LC1186'> <span class="p">,</span> <span class="nx">callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">];</span></div><div class='line' id='LC1187'><br/></div><div class='line' id='LC1188'> <span class="k">if</span> <span class="p">(</span><span class="nx">callbacks</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1189'> <span class="nx">callbacks</span> <span class="o">=</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC1190'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="o">++</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1191'> <span class="nx">callbacks</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC1192'> <span class="p">}</span></div><div class='line' id='LC1193'> <span class="p">}</span></div><div class='line' id='LC1194'><br/></div><div class='line' id='LC1195'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1196'><span class="p">};</span></div><div class='line' id='LC1197'><br/></div><div class='line' id='LC1198'><span class="cm">/**</span></div><div class='line' id='LC1199'><span class="cm"> * Return array of callbacks for `event`.</span></div><div class='line' id='LC1200'><span class="cm"> *</span></div><div class='line' id='LC1201'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1202'><span class="cm"> * @return {Array}</span></div><div class='line' id='LC1203'><span class="cm"> * @api public</span></div><div class='line' id='LC1204'><span class="cm"> */</span></div><div class='line' id='LC1205'><br/></div><div class='line' id='LC1206'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">listeners</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span></div><div class='line' id='LC1207'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1208'> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">]</span> <span class="o">||</span> <span class="p">[];</span></div><div class='line' id='LC1209'><span class="p">};</span></div><div class='line' id='LC1210'><br/></div><div class='line' id='LC1211'><span class="cm">/**</span></div><div class='line' id='LC1212'><span class="cm"> * Check if this emitter has `event` handlers.</span></div><div class='line' id='LC1213'><span class="cm"> *</span></div><div class='line' id='LC1214'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1215'><span class="cm"> * @return {Boolean}</span></div><div class='line' id='LC1216'><span class="cm"> * @api public</span></div><div class='line' id='LC1217'><span class="cm"> */</span></div><div class='line' id='LC1218'><br/></div><div class='line' id='LC1219'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">hasListeners</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span></div><div class='line' id='LC1220'> <span class="k">return</span> <span class="o">!!</span> <span class="k">this</span><span class="p">.</span><span class="nx">listeners</span><span class="p">(</span><span class="nx">event</span><span class="p">).</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC1221'><span class="p">};</span></div><div class='line' id='LC1222'><br/></div><div class='line' id='LC1223'><span class="p">},{}],</span><span class="mi">9</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1224'><br/></div><div class='line' id='LC1225'><span class="cm">/**</span></div><div class='line' id='LC1226'><span class="cm"> * Expose `debug()` as the module.</span></div><div class='line' id='LC1227'><span class="cm"> */</span></div><div class='line' id='LC1228'><br/></div><div class='line' id='LC1229'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">debug</span><span class="p">;</span></div><div class='line' id='LC1230'><br/></div><div class='line' id='LC1231'><span class="cm">/**</span></div><div class='line' id='LC1232'><span class="cm"> * Create a debugger with the given `name`.</span></div><div class='line' id='LC1233'><span class="cm"> *</span></div><div class='line' id='LC1234'><span class="cm"> * @param {String} name</span></div><div class='line' id='LC1235'><span class="cm"> * @return {Type}</span></div><div class='line' id='LC1236'><span class="cm"> * @api public</span></div><div class='line' id='LC1237'><span class="cm"> */</span></div><div class='line' id='LC1238'><br/></div><div class='line' id='LC1239'><span class="kd">function</span> <span class="nx">debug</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1240'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">debug</span><span class="p">.</span><span class="nx">enabled</span><span class="p">(</span><span class="nx">name</span><span class="p">))</span> <span class="k">return</span> <span class="kd">function</span><span class="p">(){};</span></div><div class='line' id='LC1241'><br/></div><div class='line' id='LC1242'> <span class="k">return</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fmt</span><span class="p">){</span></div><div class='line' id='LC1243'> <span class="nx">fmt</span> <span class="o">=</span> <span class="nx">coerce</span><span class="p">(</span><span class="nx">fmt</span><span class="p">);</span></div><div class='line' id='LC1244'><br/></div><div class='line' id='LC1245'> <span class="kd">var</span> <span class="nx">curr</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">;</span></div><div class='line' id='LC1246'> <span class="kd">var</span> <span class="nx">ms</span> <span class="o">=</span> <span class="nx">curr</span> <span class="o">-</span> <span class="p">(</span><span class="nx">debug</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">||</span> <span class="nx">curr</span><span class="p">);</span></div><div class='line' id='LC1247'> <span class="nx">debug</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="nx">curr</span><span class="p">;</span></div><div class='line' id='LC1248'><br/></div><div class='line' id='LC1249'> <span class="nx">fmt</span> <span class="o">=</span> <span class="nx">name</span></div><div class='line' id='LC1250'> <span class="o">+</span> <span class="s1">' '</span></div><div class='line' id='LC1251'> <span class="o">+</span> <span class="nx">fmt</span></div><div class='line' id='LC1252'> <span class="o">+</span> <span class="s1">' +'</span> <span class="o">+</span> <span class="nx">debug</span><span class="p">.</span><span class="nx">humanize</span><span class="p">(</span><span class="nx">ms</span><span class="p">);</span></div><div class='line' id='LC1253'><br/></div><div class='line' id='LC1254'> <span class="c1">// This hackery is required for IE8</span></div><div class='line' id='LC1255'> <span class="c1">// where `console.log` doesn't have 'apply'</span></div><div class='line' id='LC1256'> <span class="nb">window</span><span class="p">.</span><span class="nx">console</span></div><div class='line' id='LC1257'> <span class="o">&&</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span></div><div class='line' id='LC1258'> <span class="o">&&</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">apply</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">,</span> <span class="nx">console</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC1259'> <span class="p">}</span></div><div class='line' id='LC1260'><span class="p">}</span></div><div class='line' id='LC1261'><br/></div><div class='line' id='LC1262'><span class="cm">/**</span></div><div class='line' id='LC1263'><span class="cm"> * The currently active debug mode names.</span></div><div class='line' id='LC1264'><span class="cm"> */</span></div><div class='line' id='LC1265'><br/></div><div class='line' id='LC1266'><span class="nx">debug</span><span class="p">.</span><span class="nx">names</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC1267'><span class="nx">debug</span><span class="p">.</span><span class="nx">skips</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC1268'><br/></div><div class='line' id='LC1269'><span class="cm">/**</span></div><div class='line' id='LC1270'><span class="cm"> * Enables a debug mode by name. This can include modes</span></div><div class='line' id='LC1271'><span class="cm"> * separated by a colon and wildcards.</span></div><div class='line' id='LC1272'><span class="cm"> *</span></div><div class='line' id='LC1273'><span class="cm"> * @param {String} name</span></div><div class='line' id='LC1274'><span class="cm"> * @api public</span></div><div class='line' id='LC1275'><span class="cm"> */</span></div><div class='line' id='LC1276'><br/></div><div class='line' id='LC1277'><span class="nx">debug</span><span class="p">.</span><span class="nx">enable</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1278'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC1279'> <span class="nx">localStorage</span><span class="p">.</span><span class="nx">debug</span> <span class="o">=</span> <span class="nx">name</span><span class="p">;</span></div><div class='line' id='LC1280'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">){}</span></div><div class='line' id='LC1281'><br/></div><div class='line' id='LC1282'> <span class="kd">var</span> <span class="nx">split</span> <span class="o">=</span> <span class="p">(</span><span class="nx">name</span> <span class="o">||</span> <span class="s1">''</span><span class="p">).</span><span class="nx">split</span><span class="p">(</span><span class="sr">/[\s,]+/</span><span class="p">)</span></div><div class='line' id='LC1283'> <span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">split</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC1284'><br/></div><div class='line' id='LC1285'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1286'> <span class="nx">name</span> <span class="o">=</span> <span class="nx">split</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">replace</span><span class="p">(</span><span class="s1">'*'</span><span class="p">,</span> <span class="s1">'.*?'</span><span class="p">);</span></div><div class='line' id='LC1287'> <span class="k">if</span> <span class="p">(</span><span class="nx">name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">===</span> <span class="s1">'-'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1288'> <span class="nx">debug</span><span class="p">.</span><span class="nx">skips</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">new</span> <span class="nb">RegExp</span><span class="p">(</span><span class="s1">'^'</span> <span class="o">+</span> <span class="nx">name</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'$'</span><span class="p">));</span></div><div class='line' id='LC1289'> <span class="p">}</span></div><div class='line' id='LC1290'> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC1291'> <span class="nx">debug</span><span class="p">.</span><span class="nx">names</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">new</span> <span class="nb">RegExp</span><span class="p">(</span><span class="s1">'^'</span> <span class="o">+</span> <span class="nx">name</span> <span class="o">+</span> <span class="s1">'$'</span><span class="p">));</span></div><div class='line' id='LC1292'> <span class="p">}</span></div><div class='line' id='LC1293'> <span class="p">}</span></div><div class='line' id='LC1294'><span class="p">};</span></div><div class='line' id='LC1295'><br/></div><div class='line' id='LC1296'><span class="cm">/**</span></div><div class='line' id='LC1297'><span class="cm"> * Disable debug output.</span></div><div class='line' id='LC1298'><span class="cm"> *</span></div><div class='line' id='LC1299'><span class="cm"> * @api public</span></div><div class='line' id='LC1300'><span class="cm"> */</span></div><div class='line' id='LC1301'><br/></div><div class='line' id='LC1302'><span class="nx">debug</span><span class="p">.</span><span class="nx">disable</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC1303'> <span class="nx">debug</span><span class="p">.</span><span class="nx">enable</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span></div><div class='line' id='LC1304'><span class="p">};</span></div><div class='line' id='LC1305'><br/></div><div class='line' id='LC1306'><span class="cm">/**</span></div><div class='line' id='LC1307'><span class="cm"> * Humanize the given `ms`.</span></div><div class='line' id='LC1308'><span class="cm"> *</span></div><div class='line' id='LC1309'><span class="cm"> * @param {Number} m</span></div><div class='line' id='LC1310'><span class="cm"> * @return {String}</span></div><div class='line' id='LC1311'><span class="cm"> * @api private</span></div><div class='line' id='LC1312'><span class="cm"> */</span></div><div class='line' id='LC1313'><br/></div><div class='line' id='LC1314'><span class="nx">debug</span><span class="p">.</span><span class="nx">humanize</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">ms</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1315'> <span class="kd">var</span> <span class="nx">sec</span> <span class="o">=</span> <span class="mi">1000</span></div><div class='line' id='LC1316'> <span class="p">,</span> <span class="nx">min</span> <span class="o">=</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">1000</span></div><div class='line' id='LC1317'> <span class="p">,</span> <span class="nx">hour</span> <span class="o">=</span> <span class="mi">60</span> <span class="o">*</span> <span class="nx">min</span><span class="p">;</span></div><div class='line' id='LC1318'><br/></div><div class='line' id='LC1319'> <span class="k">if</span> <span class="p">(</span><span class="nx">ms</span> <span class="o">>=</span> <span class="nx">hour</span><span class="p">)</span> <span class="k">return</span> <span class="p">(</span><span class="nx">ms</span> <span class="o">/</span> <span class="nx">hour</span><span class="p">).</span><span class="nx">toFixed</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'h'</span><span class="p">;</span></div><div class='line' id='LC1320'> <span class="k">if</span> <span class="p">(</span><span class="nx">ms</span> <span class="o">>=</span> <span class="nx">min</span><span class="p">)</span> <span class="k">return</span> <span class="p">(</span><span class="nx">ms</span> <span class="o">/</span> <span class="nx">min</span><span class="p">).</span><span class="nx">toFixed</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'m'</span><span class="p">;</span></div><div class='line' id='LC1321'> <span class="k">if</span> <span class="p">(</span><span class="nx">ms</span> <span class="o">>=</span> <span class="nx">sec</span><span class="p">)</span> <span class="k">return</span> <span class="p">(</span><span class="nx">ms</span> <span class="o">/</span> <span class="nx">sec</span> <span class="o">|</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'s'</span><span class="p">;</span></div><div class='line' id='LC1322'> <span class="k">return</span> <span class="nx">ms</span> <span class="o">+</span> <span class="s1">'ms'</span><span class="p">;</span></div><div class='line' id='LC1323'><span class="p">};</span></div><div class='line' id='LC1324'><br/></div><div class='line' id='LC1325'><span class="cm">/**</span></div><div class='line' id='LC1326'><span class="cm"> * Returns true if the given mode name is enabled, false otherwise.</span></div><div class='line' id='LC1327'><span class="cm"> *</span></div><div class='line' id='LC1328'><span class="cm"> * @param {String} name</span></div><div class='line' id='LC1329'><span class="cm"> * @return {Boolean}</span></div><div class='line' id='LC1330'><span class="cm"> * @api public</span></div><div class='line' id='LC1331'><span class="cm"> */</span></div><div class='line' id='LC1332'><br/></div><div class='line' id='LC1333'><span class="nx">debug</span><span class="p">.</span><span class="nx">enabled</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1334'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">debug</span><span class="p">.</span><span class="nx">skips</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1335'> <span class="k">if</span> <span class="p">(</span><span class="nx">debug</span><span class="p">.</span><span class="nx">skips</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">test</span><span class="p">(</span><span class="nx">name</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC1336'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1337'> <span class="p">}</span></div><div class='line' id='LC1338'> <span class="p">}</span></div><div class='line' id='LC1339'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">debug</span><span class="p">.</span><span class="nx">names</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1340'> <span class="k">if</span> <span class="p">(</span><span class="nx">debug</span><span class="p">.</span><span class="nx">names</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">test</span><span class="p">(</span><span class="nx">name</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC1341'> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC1342'> <span class="p">}</span></div><div class='line' id='LC1343'> <span class="p">}</span></div><div class='line' id='LC1344'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1345'><span class="p">};</span></div><div class='line' id='LC1346'><br/></div><div class='line' id='LC1347'><span class="cm">/**</span></div><div class='line' id='LC1348'><span class="cm"> * Coerce `val`.</span></div><div class='line' id='LC1349'><span class="cm"> */</span></div><div class='line' id='LC1350'><br/></div><div class='line' id='LC1351'><span class="kd">function</span> <span class="nx">coerce</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1352'> <span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="k">instanceof</span> <span class="nb">Error</span><span class="p">)</span> <span class="k">return</span> <span class="nx">val</span><span class="p">.</span><span class="nx">stack</span> <span class="o">||</span> <span class="nx">val</span><span class="p">.</span><span class="nx">message</span><span class="p">;</span></div><div class='line' id='LC1353'> <span class="k">return</span> <span class="nx">val</span><span class="p">;</span></div><div class='line' id='LC1354'><span class="p">}</span></div><div class='line' id='LC1355'><br/></div><div class='line' id='LC1356'><span class="c1">// persist</span></div><div class='line' id='LC1357'><br/></div><div class='line' id='LC1358'><span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC1359'> <span class="k">if</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">localStorage</span><span class="p">)</span> <span class="nx">debug</span><span class="p">.</span><span class="nx">enable</span><span class="p">(</span><span class="nx">localStorage</span><span class="p">.</span><span class="nx">debug</span><span class="p">);</span></div><div class='line' id='LC1360'><span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">){}</span></div><div class='line' id='LC1361'><br/></div><div class='line' id='LC1362'><span class="p">},{}],</span><span class="mi">10</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1363'><br/></div><div class='line' id='LC1364'><span class="cm">/**</span></div><div class='line' id='LC1365'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC1366'><span class="cm"> */</span></div><div class='line' id='LC1367'><br/></div><div class='line' id='LC1368'><span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'indexof'</span><span class="p">);</span></div><div class='line' id='LC1369'><br/></div><div class='line' id='LC1370'><span class="cm">/**</span></div><div class='line' id='LC1371'><span class="cm"> * Expose `Emitter`.</span></div><div class='line' id='LC1372'><span class="cm"> */</span></div><div class='line' id='LC1373'><br/></div><div class='line' id='LC1374'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">Emitter</span><span class="p">;</span></div><div class='line' id='LC1375'><br/></div><div class='line' id='LC1376'><span class="cm">/**</span></div><div class='line' id='LC1377'><span class="cm"> * Initialize a new `Emitter`.</span></div><div class='line' id='LC1378'><span class="cm"> *</span></div><div class='line' id='LC1379'><span class="cm"> * @api public</span></div><div class='line' id='LC1380'><span class="cm"> */</span></div><div class='line' id='LC1381'><br/></div><div class='line' id='LC1382'><span class="kd">function</span> <span class="nx">Emitter</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1383'> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="k">return</span> <span class="nx">mixin</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC1384'><span class="p">};</span></div><div class='line' id='LC1385'><br/></div><div class='line' id='LC1386'><span class="cm">/**</span></div><div class='line' id='LC1387'><span class="cm"> * Mixin the emitter properties.</span></div><div class='line' id='LC1388'><span class="cm"> *</span></div><div class='line' id='LC1389'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC1390'><span class="cm"> * @return {Object}</span></div><div class='line' id='LC1391'><span class="cm"> * @api private</span></div><div class='line' id='LC1392'><span class="cm"> */</span></div><div class='line' id='LC1393'><br/></div><div class='line' id='LC1394'><span class="kd">function</span> <span class="nx">mixin</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1395'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1396'> <span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span></div><div class='line' id='LC1397'> <span class="p">}</span></div><div class='line' id='LC1398'> <span class="k">return</span> <span class="nx">obj</span><span class="p">;</span></div><div class='line' id='LC1399'><span class="p">}</span></div><div class='line' id='LC1400'><br/></div><div class='line' id='LC1401'><span class="cm">/**</span></div><div class='line' id='LC1402'><span class="cm"> * Listen on the given `event` with `fn`.</span></div><div class='line' id='LC1403'><span class="cm"> *</span></div><div class='line' id='LC1404'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1405'><span class="cm"> * @param {Function} fn</span></div><div class='line' id='LC1406'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1407'><span class="cm"> * @api public</span></div><div class='line' id='LC1408'><span class="cm"> */</span></div><div class='line' id='LC1409'><br/></div><div class='line' id='LC1410'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">on</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1411'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1412'> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">]</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">]</span> <span class="o">||</span> <span class="p">[])</span></div><div class='line' id='LC1413'> <span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC1414'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1415'><span class="p">};</span></div><div class='line' id='LC1416'><br/></div><div class='line' id='LC1417'><span class="cm">/**</span></div><div class='line' id='LC1418'><span class="cm"> * Adds an `event` listener that will be invoked a single</span></div><div class='line' id='LC1419'><span class="cm"> * time then automatically removed.</span></div><div class='line' id='LC1420'><span class="cm"> *</span></div><div class='line' id='LC1421'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1422'><span class="cm"> * @param {Function} fn</span></div><div class='line' id='LC1423'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1424'><span class="cm"> * @api public</span></div><div class='line' id='LC1425'><span class="cm"> */</span></div><div class='line' id='LC1426'><br/></div><div class='line' id='LC1427'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">once</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1428'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1429'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1430'><br/></div><div class='line' id='LC1431'> <span class="kd">function</span> <span class="nx">on</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1432'> <span class="nx">self</span><span class="p">.</span><span class="nx">off</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">on</span><span class="p">);</span></div><div class='line' id='LC1433'> <span class="nx">fn</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">arguments</span><span class="p">);</span></div><div class='line' id='LC1434'> <span class="p">}</span></div><div class='line' id='LC1435'><br/></div><div class='line' id='LC1436'> <span class="nx">fn</span><span class="p">.</span><span class="nx">_off</span> <span class="o">=</span> <span class="nx">on</span><span class="p">;</span></div><div class='line' id='LC1437'> <span class="k">this</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">on</span><span class="p">);</span></div><div class='line' id='LC1438'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1439'><span class="p">};</span></div><div class='line' id='LC1440'><br/></div><div class='line' id='LC1441'><span class="cm">/**</span></div><div class='line' id='LC1442'><span class="cm"> * Remove the given callback for `event` or all</span></div><div class='line' id='LC1443'><span class="cm"> * registered callbacks.</span></div><div class='line' id='LC1444'><span class="cm"> *</span></div><div class='line' id='LC1445'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1446'><span class="cm"> * @param {Function} fn</span></div><div class='line' id='LC1447'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1448'><span class="cm"> * @api public</span></div><div class='line' id='LC1449'><span class="cm"> */</span></div><div class='line' id='LC1450'><br/></div><div class='line' id='LC1451'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">off</span> <span class="o">=</span></div><div class='line' id='LC1452'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">removeListener</span> <span class="o">=</span></div><div class='line' id='LC1453'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">removeAllListeners</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC1454'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1455'><br/></div><div class='line' id='LC1456'> <span class="c1">// all</span></div><div class='line' id='LC1457'> <span class="k">if</span> <span class="p">(</span><span class="mi">0</span> <span class="o">==</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1458'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC1459'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1460'> <span class="p">}</span></div><div class='line' id='LC1461'><br/></div><div class='line' id='LC1462'> <span class="c1">// specific event</span></div><div class='line' id='LC1463'> <span class="kd">var</span> <span class="nx">callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">];</span></div><div class='line' id='LC1464'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">callbacks</span><span class="p">)</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1465'><br/></div><div class='line' id='LC1466'> <span class="c1">// remove all handlers</span></div><div class='line' id='LC1467'> <span class="k">if</span> <span class="p">(</span><span class="mi">1</span> <span class="o">==</span> <span class="nx">arguments</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1468'> <span class="k">delete</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">];</span></div><div class='line' id='LC1469'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1470'> <span class="p">}</span></div><div class='line' id='LC1471'><br/></div><div class='line' id='LC1472'> <span class="c1">// remove specific handler</span></div><div class='line' id='LC1473'> <span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">index</span><span class="p">(</span><span class="nx">callbacks</span><span class="p">,</span> <span class="nx">fn</span><span class="p">.</span><span class="nx">_off</span> <span class="o">||</span> <span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC1474'> <span class="k">if</span> <span class="p">(</span><span class="o">~</span><span class="nx">i</span><span class="p">)</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC1475'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1476'><span class="p">};</span></div><div class='line' id='LC1477'><br/></div><div class='line' id='LC1478'><span class="cm">/**</span></div><div class='line' id='LC1479'><span class="cm"> * Emit `event` with the given args.</span></div><div class='line' id='LC1480'><span class="cm"> *</span></div><div class='line' id='LC1481'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1482'><span class="cm"> * @param {Mixed} ...</span></div><div class='line' id='LC1483'><span class="cm"> * @return {Emitter}</span></div><div class='line' id='LC1484'><span class="cm"> */</span></div><div class='line' id='LC1485'><br/></div><div class='line' id='LC1486'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">emit</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span></div><div class='line' id='LC1487'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1488'> <span class="kd">var</span> <span class="nx">args</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">slice</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arguments</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span></div><div class='line' id='LC1489'> <span class="p">,</span> <span class="nx">callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">];</span></div><div class='line' id='LC1490'><br/></div><div class='line' id='LC1491'> <span class="k">if</span> <span class="p">(</span><span class="nx">callbacks</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1492'> <span class="nx">callbacks</span> <span class="o">=</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC1493'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="o">++</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1494'> <span class="nx">callbacks</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">apply</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span></div><div class='line' id='LC1495'> <span class="p">}</span></div><div class='line' id='LC1496'> <span class="p">}</span></div><div class='line' id='LC1497'><br/></div><div class='line' id='LC1498'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1499'><span class="p">};</span></div><div class='line' id='LC1500'><br/></div><div class='line' id='LC1501'><span class="cm">/**</span></div><div class='line' id='LC1502'><span class="cm"> * Return array of callbacks for `event`.</span></div><div class='line' id='LC1503'><span class="cm"> *</span></div><div class='line' id='LC1504'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1505'><span class="cm"> * @return {Array}</span></div><div class='line' id='LC1506'><span class="cm"> * @api public</span></div><div class='line' id='LC1507'><span class="cm"> */</span></div><div class='line' id='LC1508'><br/></div><div class='line' id='LC1509'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">listeners</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span></div><div class='line' id='LC1510'> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1511'> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_callbacks</span><span class="p">[</span><span class="nx">event</span><span class="p">]</span> <span class="o">||</span> <span class="p">[];</span></div><div class='line' id='LC1512'><span class="p">};</span></div><div class='line' id='LC1513'><br/></div><div class='line' id='LC1514'><span class="cm">/**</span></div><div class='line' id='LC1515'><span class="cm"> * Check if this emitter has `event` handlers.</span></div><div class='line' id='LC1516'><span class="cm"> *</span></div><div class='line' id='LC1517'><span class="cm"> * @param {String} event</span></div><div class='line' id='LC1518'><span class="cm"> * @return {Boolean}</span></div><div class='line' id='LC1519'><span class="cm"> * @api public</span></div><div class='line' id='LC1520'><span class="cm"> */</span></div><div class='line' id='LC1521'><br/></div><div class='line' id='LC1522'><span class="nx">Emitter</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">hasListeners</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">){</span></div><div class='line' id='LC1523'> <span class="k">return</span> <span class="o">!!</span> <span class="k">this</span><span class="p">.</span><span class="nx">listeners</span><span class="p">(</span><span class="nx">event</span><span class="p">).</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC1524'><span class="p">};</span></div><div class='line' id='LC1525'><br/></div><div class='line' id='LC1526'><span class="p">},{</span><span class="s2">"indexof"</span><span class="o">:</span><span class="mi">36</span><span class="p">}],</span><span class="mi">11</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1527'><br/></div><div class='line' id='LC1528'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./lib/'</span><span class="p">);</span></div><div class='line' id='LC1529'><br/></div><div class='line' id='LC1530'><span class="p">},{</span><span class="s2">"./lib/"</span><span class="o">:</span><span class="mi">12</span><span class="p">}],</span><span class="mi">12</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1531'><br/></div><div class='line' id='LC1532'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./socket'</span><span class="p">);</span></div><div class='line' id='LC1533'><br/></div><div class='line' id='LC1534'><span class="cm">/**</span></div><div class='line' id='LC1535'><span class="cm"> * Exports parser</span></div><div class='line' id='LC1536'><span class="cm"> *</span></div><div class='line' id='LC1537'><span class="cm"> * @api public</span></div><div class='line' id='LC1538'><span class="cm"> *</span></div><div class='line' id='LC1539'><span class="cm"> */</span></div><div class='line' id='LC1540'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="p">.</span><span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-parser'</span><span class="p">);</span></div><div class='line' id='LC1541'><br/></div><div class='line' id='LC1542'><span class="p">},{</span><span class="s2">"./socket"</span><span class="o">:</span><span class="mi">13</span><span class="p">,</span><span class="s2">"engine.io-parser"</span><span class="o">:</span><span class="mi">22</span><span class="p">}],</span><span class="mi">13</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC1543'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC1544'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC1545'><span class="cm"> */</span></div><div class='line' id='LC1546'><br/></div><div class='line' id='LC1547'><span class="kd">var</span> <span class="nx">transports</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./transports'</span><span class="p">);</span></div><div class='line' id='LC1548'><span class="kd">var</span> <span class="nx">Emitter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-emitter'</span><span class="p">);</span></div><div class='line' id='LC1549'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'engine.io-client:socket'</span><span class="p">);</span></div><div class='line' id='LC1550'><span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'indexof'</span><span class="p">);</span></div><div class='line' id='LC1551'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-parser'</span><span class="p">);</span></div><div class='line' id='LC1552'><span class="kd">var</span> <span class="nx">parseuri</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'parseuri'</span><span class="p">);</span></div><div class='line' id='LC1553'><span class="kd">var</span> <span class="nx">parsejson</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'parsejson'</span><span class="p">);</span></div><div class='line' id='LC1554'><span class="kd">var</span> <span class="nx">parseqs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'parseqs'</span><span class="p">);</span></div><div class='line' id='LC1555'><br/></div><div class='line' id='LC1556'><span class="cm">/**</span></div><div class='line' id='LC1557'><span class="cm"> * Module exports.</span></div><div class='line' id='LC1558'><span class="cm"> */</span></div><div class='line' id='LC1559'><br/></div><div class='line' id='LC1560'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">Socket</span><span class="p">;</span></div><div class='line' id='LC1561'><br/></div><div class='line' id='LC1562'><span class="cm">/**</span></div><div class='line' id='LC1563'><span class="cm"> * Noop function.</span></div><div class='line' id='LC1564'><span class="cm"> *</span></div><div class='line' id='LC1565'><span class="cm"> * @api private</span></div><div class='line' id='LC1566'><span class="cm"> */</span></div><div class='line' id='LC1567'><br/></div><div class='line' id='LC1568'><span class="kd">function</span> <span class="nx">noop</span><span class="p">(){}</span></div><div class='line' id='LC1569'><br/></div><div class='line' id='LC1570'><span class="cm">/**</span></div><div class='line' id='LC1571'><span class="cm"> * Socket constructor.</span></div><div class='line' id='LC1572'><span class="cm"> *</span></div><div class='line' id='LC1573'><span class="cm"> * @param {String|Object} uri or options</span></div><div class='line' id='LC1574'><span class="cm"> * @param {Object} options</span></div><div class='line' id='LC1575'><span class="cm"> * @api public</span></div><div class='line' id='LC1576'><span class="cm"> */</span></div><div class='line' id='LC1577'><br/></div><div class='line' id='LC1578'><span class="kd">function</span> <span class="nx">Socket</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC1579'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="k">this</span> <span class="k">instanceof</span> <span class="nx">Socket</span><span class="p">))</span> <span class="k">return</span> <span class="k">new</span> <span class="nx">Socket</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC1580'><br/></div><div class='line' id='LC1581'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">opts</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1582'><br/></div><div class='line' id='LC1583'> <span class="k">if</span> <span class="p">(</span><span class="nx">uri</span> <span class="o">&&</span> <span class="s1">'object'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">uri</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1584'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC1585'> <span class="nx">uri</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC1586'> <span class="p">}</span></div><div class='line' id='LC1587'><br/></div><div class='line' id='LC1588'> <span class="k">if</span> <span class="p">(</span><span class="nx">uri</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1589'> <span class="nx">uri</span> <span class="o">=</span> <span class="nx">parseuri</span><span class="p">(</span><span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC1590'> <span class="nx">opts</span><span class="p">.</span><span class="nx">host</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">.</span><span class="nx">host</span><span class="p">;</span></div><div class='line' id='LC1591'> <span class="nx">opts</span><span class="p">.</span><span class="nx">secure</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">==</span> <span class="s1">'https'</span> <span class="o">||</span> <span class="nx">uri</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">==</span> <span class="s1">'wss'</span><span class="p">;</span></div><div class='line' id='LC1592'> <span class="nx">opts</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC1593'> <span class="k">if</span> <span class="p">(</span><span class="nx">uri</span><span class="p">.</span><span class="nx">query</span><span class="p">)</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">uri</span><span class="p">.</span><span class="nx">query</span><span class="p">;</span></div><div class='line' id='LC1594'> <span class="p">}</span></div><div class='line' id='LC1595'><br/></div><div class='line' id='LC1596'> <span class="k">this</span><span class="p">.</span><span class="nx">secure</span> <span class="o">=</span> <span class="kc">null</span> <span class="o">!=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">secure</span> <span class="o">?</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">secure</span> <span class="o">:</span></div><div class='line' id='LC1597'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">location</span> <span class="o">&&</span> <span class="s1">'https:'</span> <span class="o">==</span> <span class="nx">location</span><span class="p">.</span><span class="nx">protocol</span><span class="p">);</span></div><div class='line' id='LC1598'><br/></div><div class='line' id='LC1599'> <span class="k">if</span> <span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">host</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1600'> <span class="kd">var</span> <span class="nx">pieces</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">host</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">':'</span><span class="p">);</span></div><div class='line' id='LC1601'> <span class="nx">opts</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">=</span> <span class="nx">pieces</span><span class="p">.</span><span class="nx">shift</span><span class="p">();</span></div><div class='line' id='LC1602'> <span class="k">if</span> <span class="p">(</span><span class="nx">pieces</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="nx">pieces</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span></div><div class='line' id='LC1603'> <span class="p">}</span></div><div class='line' id='LC1604'><br/></div><div class='line' id='LC1605'> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">agent</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1606'> <span class="k">this</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">||</span></div><div class='line' id='LC1607'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">location</span> <span class="o">?</span> <span class="nx">location</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">:</span> <span class="s1">'localhost'</span><span class="p">);</span></div><div class='line' id='LC1608'> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">port</span> <span class="o">||</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">location</span> <span class="o">&&</span> <span class="nx">location</span><span class="p">.</span><span class="nx">port</span> <span class="o">?</span></div><div class='line' id='LC1609'> <span class="nx">location</span><span class="p">.</span><span class="nx">port</span> <span class="o">:</span></div><div class='line' id='LC1610'> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">secure</span> <span class="o">?</span> <span class="mi">443</span> <span class="o">:</span> <span class="mi">80</span><span class="p">));</span></div><div class='line' id='LC1611'> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">query</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC1612'> <span class="k">if</span> <span class="p">(</span><span class="s1">'string'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span><span class="p">)</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">parseqs</span><span class="p">.</span><span class="nx">decode</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">query</span><span class="p">);</span></div><div class='line' id='LC1613'> <span class="k">this</span><span class="p">.</span><span class="nx">upgrade</span> <span class="o">=</span> <span class="kc">false</span> <span class="o">!==</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">upgrade</span><span class="p">;</span></div><div class='line' id='LC1614'> <span class="k">this</span><span class="p">.</span><span class="nx">path</span> <span class="o">=</span> <span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">path</span> <span class="o">||</span> <span class="s1">'/engine.io'</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\/$/</span><span class="p">,</span> <span class="s1">''</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'/'</span><span class="p">;</span></div><div class='line' id='LC1615'> <span class="k">this</span><span class="p">.</span><span class="nx">forceJSONP</span> <span class="o">=</span> <span class="o">!!</span><span class="nx">opts</span><span class="p">.</span><span class="nx">forceJSONP</span><span class="p">;</span></div><div class='line' id='LC1616'> <span class="k">this</span><span class="p">.</span><span class="nx">forceBase64</span> <span class="o">=</span> <span class="o">!!</span><span class="nx">opts</span><span class="p">.</span><span class="nx">forceBase64</span><span class="p">;</span></div><div class='line' id='LC1617'> <span class="k">this</span><span class="p">.</span><span class="nx">timestampParam</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">timestampParam</span> <span class="o">||</span> <span class="s1">'t'</span><span class="p">;</span></div><div class='line' id='LC1618'> <span class="k">this</span><span class="p">.</span><span class="nx">timestampRequests</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">timestampRequests</span><span class="p">;</span></div><div class='line' id='LC1619'> <span class="k">this</span><span class="p">.</span><span class="nx">transports</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">transports</span> <span class="o">||</span> <span class="p">[</span><span class="s1">'polling'</span><span class="p">,</span> <span class="s1">'websocket'</span><span class="p">];</span></div><div class='line' id='LC1620'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC1621'> <span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC1622'> <span class="k">this</span><span class="p">.</span><span class="nx">callbackBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC1623'> <span class="k">this</span><span class="p">.</span><span class="nx">policyPort</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">policyPort</span> <span class="o">||</span> <span class="mi">843</span><span class="p">;</span></div><div class='line' id='LC1624'> <span class="k">this</span><span class="p">.</span><span class="nx">rememberUpgrade</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">rememberUpgrade</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1625'> <span class="k">this</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span></div><div class='line' id='LC1626'> <span class="k">this</span><span class="p">.</span><span class="nx">binaryType</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC1627'> <span class="k">this</span><span class="p">.</span><span class="nx">onlyBinaryUpgrades</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">onlyBinaryUpgrades</span><span class="p">;</span></div><div class='line' id='LC1628'><span class="p">}</span></div><div class='line' id='LC1629'><br/></div><div class='line' id='LC1630'><span class="nx">Socket</span><span class="p">.</span><span class="nx">priorWebsocketSuccess</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1631'><br/></div><div class='line' id='LC1632'><span class="cm">/**</span></div><div class='line' id='LC1633'><span class="cm"> * Mix in `Emitter`.</span></div><div class='line' id='LC1634'><span class="cm"> */</span></div><div class='line' id='LC1635'><br/></div><div class='line' id='LC1636'><span class="nx">Emitter</span><span class="p">(</span><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span></div><div class='line' id='LC1637'><br/></div><div class='line' id='LC1638'><span class="cm">/**</span></div><div class='line' id='LC1639'><span class="cm"> * Protocol version.</span></div><div class='line' id='LC1640'><span class="cm"> *</span></div><div class='line' id='LC1641'><span class="cm"> * @api public</span></div><div class='line' id='LC1642'><span class="cm"> */</span></div><div class='line' id='LC1643'><br/></div><div class='line' id='LC1644'><span class="nx">Socket</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">=</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">protocol</span><span class="p">;</span> <span class="c1">// this is an int</span></div><div class='line' id='LC1645'><br/></div><div class='line' id='LC1646'><span class="cm">/**</span></div><div class='line' id='LC1647'><span class="cm"> * Expose deps for legacy compatibility</span></div><div class='line' id='LC1648'><span class="cm"> * and standalone browser access.</span></div><div class='line' id='LC1649'><span class="cm"> */</span></div><div class='line' id='LC1650'><br/></div><div class='line' id='LC1651'><span class="nx">Socket</span><span class="p">.</span><span class="nx">Socket</span> <span class="o">=</span> <span class="nx">Socket</span><span class="p">;</span></div><div class='line' id='LC1652'><span class="nx">Socket</span><span class="p">.</span><span class="nx">Transport</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./transport'</span><span class="p">);</span></div><div class='line' id='LC1653'><span class="nx">Socket</span><span class="p">.</span><span class="nx">transports</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./transports'</span><span class="p">);</span></div><div class='line' id='LC1654'><span class="nx">Socket</span><span class="p">.</span><span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-parser'</span><span class="p">);</span></div><div class='line' id='LC1655'><br/></div><div class='line' id='LC1656'><span class="cm">/**</span></div><div class='line' id='LC1657'><span class="cm"> * Creates transport of the given type.</span></div><div class='line' id='LC1658'><span class="cm"> *</span></div><div class='line' id='LC1659'><span class="cm"> * @param {String} transport name</span></div><div class='line' id='LC1660'><span class="cm"> * @return {Transport}</span></div><div class='line' id='LC1661'><span class="cm"> * @api private</span></div><div class='line' id='LC1662'><span class="cm"> */</span></div><div class='line' id='LC1663'><br/></div><div class='line' id='LC1664'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">createTransport</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1665'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'creating transport "%s"'</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1666'> <span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="nx">clone</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">query</span><span class="p">);</span></div><div class='line' id='LC1667'><br/></div><div class='line' id='LC1668'> <span class="c1">// append engine.io protocol identifier</span></div><div class='line' id='LC1669'> <span class="nx">query</span><span class="p">.</span><span class="nx">EIO</span> <span class="o">=</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">protocol</span><span class="p">;</span></div><div class='line' id='LC1670'><br/></div><div class='line' id='LC1671'> <span class="c1">// transport name</span></div><div class='line' id='LC1672'> <span class="nx">query</span><span class="p">.</span><span class="nx">transport</span> <span class="o">=</span> <span class="nx">name</span><span class="p">;</span></div><div class='line' id='LC1673'><br/></div><div class='line' id='LC1674'> <span class="c1">// session id if we already have one</span></div><div class='line' id='LC1675'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="nx">query</span><span class="p">.</span><span class="nx">sid</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span></div><div class='line' id='LC1676'><br/></div><div class='line' id='LC1677'> <span class="kd">var</span> <span class="nx">transport</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">transports</span><span class="p">[</span><span class="nx">name</span><span class="p">]({</span></div><div class='line' id='LC1678'> <span class="nx">agent</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span><span class="p">,</span></div><div class='line' id='LC1679'> <span class="nx">hostname</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">hostname</span><span class="p">,</span></div><div class='line' id='LC1680'> <span class="nx">port</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span><span class="p">,</span></div><div class='line' id='LC1681'> <span class="nx">secure</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">secure</span><span class="p">,</span></div><div class='line' id='LC1682'> <span class="nx">path</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">path</span><span class="p">,</span></div><div class='line' id='LC1683'> <span class="nx">query</span><span class="o">:</span> <span class="nx">query</span><span class="p">,</span></div><div class='line' id='LC1684'> <span class="nx">forceJSONP</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">forceJSONP</span><span class="p">,</span></div><div class='line' id='LC1685'> <span class="nx">forceBase64</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">forceBase64</span><span class="p">,</span></div><div class='line' id='LC1686'> <span class="nx">timestampRequests</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">timestampRequests</span><span class="p">,</span></div><div class='line' id='LC1687'> <span class="nx">timestampParam</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">timestampParam</span><span class="p">,</span></div><div class='line' id='LC1688'> <span class="nx">policyPort</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">policyPort</span><span class="p">,</span></div><div class='line' id='LC1689'> <span class="nx">socket</span><span class="o">:</span> <span class="k">this</span></div><div class='line' id='LC1690'> <span class="p">});</span></div><div class='line' id='LC1691'><br/></div><div class='line' id='LC1692'> <span class="k">return</span> <span class="nx">transport</span><span class="p">;</span></div><div class='line' id='LC1693'><span class="p">};</span></div><div class='line' id='LC1694'><br/></div><div class='line' id='LC1695'><span class="kd">function</span> <span class="nx">clone</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1696'> <span class="kd">var</span> <span class="nx">o</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC1697'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1698'> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC1699'> <span class="nx">o</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC1700'> <span class="p">}</span></div><div class='line' id='LC1701'> <span class="p">}</span></div><div class='line' id='LC1702'> <span class="k">return</span> <span class="nx">o</span><span class="p">;</span></div><div class='line' id='LC1703'><span class="p">}</span></div><div class='line' id='LC1704'><br/></div><div class='line' id='LC1705'><span class="cm">/**</span></div><div class='line' id='LC1706'><span class="cm"> * Initializes transport to use and starts probe.</span></div><div class='line' id='LC1707'><span class="cm"> *</span></div><div class='line' id='LC1708'><span class="cm"> * @api private</span></div><div class='line' id='LC1709'><span class="cm"> */</span></div><div class='line' id='LC1710'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">open</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1711'> <span class="kd">var</span> <span class="nx">transport</span><span class="p">;</span></div><div class='line' id='LC1712'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">rememberUpgrade</span> <span class="o">&&</span> <span class="nx">Socket</span><span class="p">.</span><span class="nx">priorWebsocketSuccess</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">transports</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">'websocket'</span><span class="p">)</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1713'> <span class="nx">transport</span> <span class="o">=</span> <span class="s1">'websocket'</span><span class="p">;</span></div><div class='line' id='LC1714'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC1715'> <span class="nx">transport</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">transports</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span></div><div class='line' id='LC1716'> <span class="p">}</span></div><div class='line' id='LC1717'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'opening'</span><span class="p">;</span></div><div class='line' id='LC1718'> <span class="kd">var</span> <span class="nx">transport</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">createTransport</span><span class="p">(</span><span class="nx">transport</span><span class="p">);</span></div><div class='line' id='LC1719'> <span class="nx">transport</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span></div><div class='line' id='LC1720'> <span class="k">this</span><span class="p">.</span><span class="nx">setTransport</span><span class="p">(</span><span class="nx">transport</span><span class="p">);</span></div><div class='line' id='LC1721'><span class="p">};</span></div><div class='line' id='LC1722'><br/></div><div class='line' id='LC1723'><span class="cm">/**</span></div><div class='line' id='LC1724'><span class="cm"> * Sets the current transport. Disables the existing one (if any).</span></div><div class='line' id='LC1725'><span class="cm"> *</span></div><div class='line' id='LC1726'><span class="cm"> * @api private</span></div><div class='line' id='LC1727'><span class="cm"> */</span></div><div class='line' id='LC1728'><br/></div><div class='line' id='LC1729'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">setTransport</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">transport</span><span class="p">){</span></div><div class='line' id='LC1730'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'setting transport %s'</span><span class="p">,</span> <span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1731'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1732'><br/></div><div class='line' id='LC1733'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1734'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'clearing existing transport %s'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1735'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">removeAllListeners</span><span class="p">();</span></div><div class='line' id='LC1736'> <span class="p">}</span></div><div class='line' id='LC1737'><br/></div><div class='line' id='LC1738'> <span class="c1">// set up transport</span></div><div class='line' id='LC1739'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span> <span class="o">=</span> <span class="nx">transport</span><span class="p">;</span></div><div class='line' id='LC1740'><br/></div><div class='line' id='LC1741'> <span class="c1">// set up transport listeners</span></div><div class='line' id='LC1742'> <span class="nx">transport</span></div><div class='line' id='LC1743'> <span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'drain'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC1744'> <span class="nx">self</span><span class="p">.</span><span class="nx">onDrain</span><span class="p">();</span></div><div class='line' id='LC1745'> <span class="p">})</span></div><div class='line' id='LC1746'> <span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'packet'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">){</span></div><div class='line' id='LC1747'> <span class="nx">self</span><span class="p">.</span><span class="nx">onPacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC1748'> <span class="p">})</span></div><div class='line' id='LC1749'> <span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span></div><div class='line' id='LC1750'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC1751'> <span class="p">})</span></div><div class='line' id='LC1752'> <span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC1753'> <span class="nx">self</span><span class="p">.</span><span class="nx">onClose</span><span class="p">(</span><span class="s1">'transport close'</span><span class="p">);</span></div><div class='line' id='LC1754'> <span class="p">});</span></div><div class='line' id='LC1755'><span class="p">};</span></div><div class='line' id='LC1756'><br/></div><div class='line' id='LC1757'><span class="cm">/**</span></div><div class='line' id='LC1758'><span class="cm"> * Probes a transport.</span></div><div class='line' id='LC1759'><span class="cm"> *</span></div><div class='line' id='LC1760'><span class="cm"> * @param {String} transport name</span></div><div class='line' id='LC1761'><span class="cm"> * @api private</span></div><div class='line' id='LC1762'><span class="cm"> */</span></div><div class='line' id='LC1763'><br/></div><div class='line' id='LC1764'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">probe</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1765'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'probing transport "%s"'</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1766'> <span class="kd">var</span> <span class="nx">transport</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">createTransport</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="p">{</span> <span class="nx">probe</span><span class="o">:</span> <span class="mi">1</span> <span class="p">})</span></div><div class='line' id='LC1767'> <span class="p">,</span> <span class="nx">failed</span> <span class="o">=</span> <span class="kc">false</span></div><div class='line' id='LC1768'> <span class="p">,</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1769'><br/></div><div class='line' id='LC1770'> <span class="nx">Socket</span><span class="p">.</span><span class="nx">priorWebsocketSuccess</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1771'><br/></div><div class='line' id='LC1772'> <span class="kd">function</span> <span class="nx">onTransportOpen</span><span class="p">(){</span></div><div class='line' id='LC1773'> <span class="k">if</span> <span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">onlyBinaryUpgrades</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1774'> <span class="kd">var</span> <span class="nx">upgradeLosesBinary</span> <span class="o">=</span> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">&&</span> <span class="nx">self</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">supportsBinary</span><span class="p">;</span></div><div class='line' id='LC1775'> <span class="nx">failed</span> <span class="o">=</span> <span class="nx">failed</span> <span class="o">||</span> <span class="nx">upgradeLosesBinary</span><span class="p">;</span></div><div class='line' id='LC1776'> <span class="p">}</span></div><div class='line' id='LC1777'> <span class="k">if</span> <span class="p">(</span><span class="nx">failed</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1778'><br/></div><div class='line' id='LC1779'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'probe transport "%s" opened'</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1780'> <span class="nx">transport</span><span class="p">.</span><span class="nx">send</span><span class="p">([{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">'ping'</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="s1">'probe'</span> <span class="p">}]);</span></div><div class='line' id='LC1781'> <span class="nx">transport</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'packet'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">msg</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1782'> <span class="k">if</span> <span class="p">(</span><span class="nx">failed</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1783'> <span class="k">if</span> <span class="p">(</span><span class="s1">'pong'</span> <span class="o">==</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">type</span> <span class="o">&&</span> <span class="s1">'probe'</span> <span class="o">==</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1784'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'probe transport "%s" pong'</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1785'> <span class="nx">self</span><span class="p">.</span><span class="nx">upgrading</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC1786'> <span class="nx">self</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'upgrading'</span><span class="p">,</span> <span class="nx">transport</span><span class="p">);</span></div><div class='line' id='LC1787'> <span class="nx">Socket</span><span class="p">.</span><span class="nx">priorWebsocketSuccess</span> <span class="o">=</span> <span class="s1">'websocket'</span> <span class="o">==</span> <span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span></div><div class='line' id='LC1788'><br/></div><div class='line' id='LC1789'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'pausing current transport "%s"'</span><span class="p">,</span> <span class="nx">self</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1790'> <span class="nx">self</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">pause</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1791'> <span class="k">if</span> <span class="p">(</span><span class="nx">failed</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1792'> <span class="k">if</span> <span class="p">(</span><span class="s1">'closed'</span> <span class="o">==</span> <span class="nx">self</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">||</span> <span class="s1">'closing'</span> <span class="o">==</span> <span class="nx">self</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1793'> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1794'> <span class="p">}</span></div><div class='line' id='LC1795'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'changing transport and sending upgrade packet'</span><span class="p">);</span></div><div class='line' id='LC1796'><br/></div><div class='line' id='LC1797'> <span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC1798'><br/></div><div class='line' id='LC1799'> <span class="nx">self</span><span class="p">.</span><span class="nx">setTransport</span><span class="p">(</span><span class="nx">transport</span><span class="p">);</span></div><div class='line' id='LC1800'> <span class="nx">transport</span><span class="p">.</span><span class="nx">send</span><span class="p">([{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">'upgrade'</span> <span class="p">}]);</span></div><div class='line' id='LC1801'> <span class="nx">self</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'upgrade'</span><span class="p">,</span> <span class="nx">transport</span><span class="p">);</span></div><div class='line' id='LC1802'> <span class="nx">transport</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC1803'> <span class="nx">self</span><span class="p">.</span><span class="nx">upgrading</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC1804'> <span class="nx">self</span><span class="p">.</span><span class="nx">flush</span><span class="p">();</span></div><div class='line' id='LC1805'> <span class="p">});</span></div><div class='line' id='LC1806'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC1807'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'probe transport "%s" failed'</span><span class="p">,</span> <span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1808'> <span class="kd">var</span> <span class="nx">err</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'probe error'</span><span class="p">);</span></div><div class='line' id='LC1809'> <span class="nx">err</span><span class="p">.</span><span class="nx">transport</span> <span class="o">=</span> <span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span></div><div class='line' id='LC1810'> <span class="nx">self</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'upgradeError'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC1811'> <span class="p">}</span></div><div class='line' id='LC1812'> <span class="p">});</span></div><div class='line' id='LC1813'> <span class="p">}</span></div><div class='line' id='LC1814'><br/></div><div class='line' id='LC1815'> <span class="kd">function</span> <span class="nx">freezeTransport</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1816'> <span class="k">if</span> <span class="p">(</span><span class="nx">failed</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1817'><br/></div><div class='line' id='LC1818'> <span class="c1">// Any callback called by transport should be ignored since now</span></div><div class='line' id='LC1819'> <span class="nx">failed</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC1820'><br/></div><div class='line' id='LC1821'> <span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC1822'><br/></div><div class='line' id='LC1823'> <span class="nx">transport</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC1824'> <span class="nx">transport</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC1825'> <span class="p">}</span></div><div class='line' id='LC1826'><br/></div><div class='line' id='LC1827'> <span class="c1">//Handle any error that happens while probing</span></div><div class='line' id='LC1828'> <span class="kd">function</span> <span class="nx">onerror</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1829'> <span class="kd">var</span> <span class="nx">error</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'probe error: '</span> <span class="o">+</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC1830'> <span class="nx">error</span><span class="p">.</span><span class="nx">transport</span> <span class="o">=</span> <span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span></div><div class='line' id='LC1831'><br/></div><div class='line' id='LC1832'> <span class="nx">freezeTransport</span><span class="p">();</span></div><div class='line' id='LC1833'><br/></div><div class='line' id='LC1834'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'probe transport "%s" failed because of error: %s'</span><span class="p">,</span> <span class="nx">name</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC1835'><br/></div><div class='line' id='LC1836'> <span class="nx">self</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'upgradeError'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span></div><div class='line' id='LC1837'> <span class="p">}</span></div><div class='line' id='LC1838'><br/></div><div class='line' id='LC1839'> <span class="kd">function</span> <span class="nx">onTransportClose</span><span class="p">(){</span></div><div class='line' id='LC1840'> <span class="nx">onerror</span><span class="p">(</span><span class="s2">"transport closed"</span><span class="p">);</span></div><div class='line' id='LC1841'> <span class="p">}</span></div><div class='line' id='LC1842'><br/></div><div class='line' id='LC1843'> <span class="c1">//When the socket is closed while we're probing</span></div><div class='line' id='LC1844'> <span class="kd">function</span> <span class="nx">onclose</span><span class="p">(){</span></div><div class='line' id='LC1845'> <span class="nx">onerror</span><span class="p">(</span><span class="s2">"socket closed"</span><span class="p">);</span></div><div class='line' id='LC1846'> <span class="p">}</span></div><div class='line' id='LC1847'><br/></div><div class='line' id='LC1848'> <span class="c1">//When the socket is upgraded while we're probing</span></div><div class='line' id='LC1849'> <span class="kd">function</span> <span class="nx">onupgrade</span><span class="p">(</span><span class="nx">to</span><span class="p">){</span></div><div class='line' id='LC1850'> <span class="k">if</span> <span class="p">(</span><span class="nx">transport</span> <span class="o">&&</span> <span class="nx">to</span><span class="p">.</span><span class="nx">name</span> <span class="o">!=</span> <span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1851'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'"%s" works - aborting "%s"'</span><span class="p">,</span> <span class="nx">to</span><span class="p">.</span><span class="nx">name</span><span class="p">,</span> <span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC1852'> <span class="nx">freezeTransport</span><span class="p">();</span></div><div class='line' id='LC1853'> <span class="p">}</span></div><div class='line' id='LC1854'> <span class="p">}</span></div><div class='line' id='LC1855'><br/></div><div class='line' id='LC1856'> <span class="c1">//Remove all listeners on the transport and on self</span></div><div class='line' id='LC1857'> <span class="kd">function</span> <span class="nx">cleanup</span><span class="p">(){</span></div><div class='line' id='LC1858'> <span class="nx">transport</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">'open'</span><span class="p">,</span> <span class="nx">onTransportOpen</span><span class="p">);</span></div><div class='line' id='LC1859'> <span class="nx">transport</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">onerror</span><span class="p">);</span></div><div class='line' id='LC1860'> <span class="nx">transport</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="nx">onTransportClose</span><span class="p">);</span></div><div class='line' id='LC1861'> <span class="nx">self</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="nx">onclose</span><span class="p">);</span></div><div class='line' id='LC1862'> <span class="nx">self</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">'upgrading'</span><span class="p">,</span> <span class="nx">onupgrade</span><span class="p">);</span></div><div class='line' id='LC1863'> <span class="p">}</span></div><div class='line' id='LC1864'><br/></div><div class='line' id='LC1865'> <span class="nx">transport</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'open'</span><span class="p">,</span> <span class="nx">onTransportOpen</span><span class="p">);</span></div><div class='line' id='LC1866'> <span class="nx">transport</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">onerror</span><span class="p">);</span></div><div class='line' id='LC1867'> <span class="nx">transport</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="nx">onTransportClose</span><span class="p">);</span></div><div class='line' id='LC1868'><br/></div><div class='line' id='LC1869'> <span class="k">this</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="nx">onclose</span><span class="p">);</span></div><div class='line' id='LC1870'> <span class="k">this</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'upgrading'</span><span class="p">,</span> <span class="nx">onupgrade</span><span class="p">);</span></div><div class='line' id='LC1871'><br/></div><div class='line' id='LC1872'> <span class="nx">transport</span><span class="p">.</span><span class="nx">open</span><span class="p">();</span></div><div class='line' id='LC1873'><br/></div><div class='line' id='LC1874'><span class="p">};</span></div><div class='line' id='LC1875'><br/></div><div class='line' id='LC1876'><span class="cm">/**</span></div><div class='line' id='LC1877'><span class="cm"> * Called when connection is deemed open.</span></div><div class='line' id='LC1878'><span class="cm"> *</span></div><div class='line' id='LC1879'><span class="cm"> * @api public</span></div><div class='line' id='LC1880'><span class="cm"> */</span></div><div class='line' id='LC1881'><br/></div><div class='line' id='LC1882'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onOpen</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1883'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'socket open'</span><span class="p">);</span></div><div class='line' id='LC1884'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'open'</span><span class="p">;</span></div><div class='line' id='LC1885'> <span class="nx">Socket</span><span class="p">.</span><span class="nx">priorWebsocketSuccess</span> <span class="o">=</span> <span class="s1">'websocket'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span></div><div class='line' id='LC1886'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'open'</span><span class="p">);</span></div><div class='line' id='LC1887'> <span class="k">this</span><span class="p">.</span><span class="nx">flush</span><span class="p">();</span></div><div class='line' id='LC1888'><br/></div><div class='line' id='LC1889'> <span class="c1">// we check for `readyState` in case an `open`</span></div><div class='line' id='LC1890'> <span class="c1">// listener already closed the socket</span></div><div class='line' id='LC1891'> <span class="k">if</span> <span class="p">(</span><span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">upgrade</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">pause</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1892'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'starting upgrade probes'</span><span class="p">);</span></div><div class='line' id='LC1893'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">upgrades</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1894'> <span class="k">this</span><span class="p">.</span><span class="nx">probe</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">upgrades</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC1895'> <span class="p">}</span></div><div class='line' id='LC1896'> <span class="p">}</span></div><div class='line' id='LC1897'><span class="p">};</span></div><div class='line' id='LC1898'><br/></div><div class='line' id='LC1899'><span class="cm">/**</span></div><div class='line' id='LC1900'><span class="cm"> * Handles a packet.</span></div><div class='line' id='LC1901'><span class="cm"> *</span></div><div class='line' id='LC1902'><span class="cm"> * @api private</span></div><div class='line' id='LC1903'><span class="cm"> */</span></div><div class='line' id='LC1904'><br/></div><div class='line' id='LC1905'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onPacket</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">packet</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1906'> <span class="k">if</span> <span class="p">(</span><span class="s1">'opening'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">||</span> <span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1907'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'socket receive: type "%s", data "%s"'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC1908'><br/></div><div class='line' id='LC1909'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'packet'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC1910'><br/></div><div class='line' id='LC1911'> <span class="c1">// Socket is live - any packet counts</span></div><div class='line' id='LC1912'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'heartbeat'</span><span class="p">);</span></div><div class='line' id='LC1913'><br/></div><div class='line' id='LC1914'> <span class="k">switch</span> <span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1915'> <span class="k">case</span> <span class="s1">'open'</span><span class="o">:</span></div><div class='line' id='LC1916'> <span class="k">this</span><span class="p">.</span><span class="nx">onHandshake</span><span class="p">(</span><span class="nx">parsejson</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">));</span></div><div class='line' id='LC1917'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC1918'><br/></div><div class='line' id='LC1919'> <span class="k">case</span> <span class="s1">'pong'</span><span class="o">:</span></div><div class='line' id='LC1920'> <span class="k">this</span><span class="p">.</span><span class="nx">setPing</span><span class="p">();</span></div><div class='line' id='LC1921'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC1922'><br/></div><div class='line' id='LC1923'> <span class="k">case</span> <span class="s1">'error'</span><span class="o">:</span></div><div class='line' id='LC1924'> <span class="kd">var</span> <span class="nx">err</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'server error'</span><span class="p">);</span></div><div class='line' id='LC1925'> <span class="nx">err</span><span class="p">.</span><span class="nx">code</span> <span class="o">=</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC1926'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC1927'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC1928'><br/></div><div class='line' id='LC1929'> <span class="k">case</span> <span class="s1">'message'</span><span class="o">:</span></div><div class='line' id='LC1930'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'data'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC1931'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'message'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC1932'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC1933'> <span class="p">}</span></div><div class='line' id='LC1934'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC1935'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'packet received with socket readyState "%s"'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">);</span></div><div class='line' id='LC1936'> <span class="p">}</span></div><div class='line' id='LC1937'><span class="p">};</span></div><div class='line' id='LC1938'><br/></div><div class='line' id='LC1939'><span class="cm">/**</span></div><div class='line' id='LC1940'><span class="cm"> * Called upon handshake completion.</span></div><div class='line' id='LC1941'><span class="cm"> *</span></div><div class='line' id='LC1942'><span class="cm"> * @param {Object} handshake obj</span></div><div class='line' id='LC1943'><span class="cm"> * @api private</span></div><div class='line' id='LC1944'><span class="cm"> */</span></div><div class='line' id='LC1945'><br/></div><div class='line' id='LC1946'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onHandshake</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1947'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'handshake'</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC1948'> <span class="k">this</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">sid</span><span class="p">;</span></div><div class='line' id='LC1949'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">query</span><span class="p">.</span><span class="nx">sid</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">sid</span><span class="p">;</span></div><div class='line' id='LC1950'> <span class="k">this</span><span class="p">.</span><span class="nx">upgrades</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">filterUpgrades</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">upgrades</span><span class="p">);</span></div><div class='line' id='LC1951'> <span class="k">this</span><span class="p">.</span><span class="nx">pingInterval</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">pingInterval</span><span class="p">;</span></div><div class='line' id='LC1952'> <span class="k">this</span><span class="p">.</span><span class="nx">pingTimeout</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">pingTimeout</span><span class="p">;</span></div><div class='line' id='LC1953'> <span class="k">this</span><span class="p">.</span><span class="nx">onOpen</span><span class="p">();</span></div><div class='line' id='LC1954'> <span class="c1">// In case open handler closes socket</span></div><div class='line' id='LC1955'> <span class="k">if</span> <span class="p">(</span><span class="s1">'closed'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1956'> <span class="k">this</span><span class="p">.</span><span class="nx">setPing</span><span class="p">();</span></div><div class='line' id='LC1957'><br/></div><div class='line' id='LC1958'> <span class="c1">// Prolong liveness of socket on heartbeat</span></div><div class='line' id='LC1959'> <span class="k">this</span><span class="p">.</span><span class="nx">removeListener</span><span class="p">(</span><span class="s1">'heartbeat'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">onHeartbeat</span><span class="p">);</span></div><div class='line' id='LC1960'> <span class="k">this</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'heartbeat'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">onHeartbeat</span><span class="p">);</span></div><div class='line' id='LC1961'><span class="p">};</span></div><div class='line' id='LC1962'><br/></div><div class='line' id='LC1963'><span class="cm">/**</span></div><div class='line' id='LC1964'><span class="cm"> * Resets ping timeout.</span></div><div class='line' id='LC1965'><span class="cm"> *</span></div><div class='line' id='LC1966'><span class="cm"> * @api private</span></div><div class='line' id='LC1967'><span class="cm"> */</span></div><div class='line' id='LC1968'><br/></div><div class='line' id='LC1969'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onHeartbeat</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">timeout</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC1970'> <span class="nx">clearTimeout</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">pingTimeoutTimer</span><span class="p">);</span></div><div class='line' id='LC1971'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1972'> <span class="nx">self</span><span class="p">.</span><span class="nx">pingTimeoutTimer</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1973'> <span class="k">if</span> <span class="p">(</span><span class="s1">'closed'</span> <span class="o">==</span> <span class="nx">self</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC1974'> <span class="nx">self</span><span class="p">.</span><span class="nx">onClose</span><span class="p">(</span><span class="s1">'ping timeout'</span><span class="p">);</span></div><div class='line' id='LC1975'> <span class="p">},</span> <span class="nx">timeout</span> <span class="o">||</span> <span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">pingInterval</span> <span class="o">+</span> <span class="nx">self</span><span class="p">.</span><span class="nx">pingTimeout</span><span class="p">));</span></div><div class='line' id='LC1976'><span class="p">};</span></div><div class='line' id='LC1977'><br/></div><div class='line' id='LC1978'><span class="cm">/**</span></div><div class='line' id='LC1979'><span class="cm"> * Pings server every `this.pingInterval` and expects response</span></div><div class='line' id='LC1980'><span class="cm"> * within `this.pingTimeout` or closes connection.</span></div><div class='line' id='LC1981'><span class="cm"> *</span></div><div class='line' id='LC1982'><span class="cm"> * @api private</span></div><div class='line' id='LC1983'><span class="cm"> */</span></div><div class='line' id='LC1984'><br/></div><div class='line' id='LC1985'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">setPing</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1986'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC1987'> <span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">pingIntervalTimer</span><span class="p">);</span></div><div class='line' id='LC1988'> <span class="nx">self</span><span class="p">.</span><span class="nx">pingIntervalTimer</span> <span class="o">=</span> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC1989'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'writing ping packet - expecting pong within %sms'</span><span class="p">,</span> <span class="nx">self</span><span class="p">.</span><span class="nx">pingTimeout</span><span class="p">);</span></div><div class='line' id='LC1990'> <span class="nx">self</span><span class="p">.</span><span class="nx">ping</span><span class="p">();</span></div><div class='line' id='LC1991'> <span class="nx">self</span><span class="p">.</span><span class="nx">onHeartbeat</span><span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">pingTimeout</span><span class="p">);</span></div><div class='line' id='LC1992'> <span class="p">},</span> <span class="nx">self</span><span class="p">.</span><span class="nx">pingInterval</span><span class="p">);</span></div><div class='line' id='LC1993'><span class="p">};</span></div><div class='line' id='LC1994'><br/></div><div class='line' id='LC1995'><span class="cm">/**</span></div><div class='line' id='LC1996'><span class="cm">* Sends a ping packet.</span></div><div class='line' id='LC1997'><span class="cm">*</span></div><div class='line' id='LC1998'><span class="cm">* @api public</span></div><div class='line' id='LC1999'><span class="cm">*/</span></div><div class='line' id='LC2000'><br/></div><div class='line' id='LC2001'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">ping</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2002'> <span class="k">this</span><span class="p">.</span><span class="nx">sendPacket</span><span class="p">(</span><span class="s1">'ping'</span><span class="p">);</span></div><div class='line' id='LC2003'><span class="p">};</span></div><div class='line' id='LC2004'><br/></div><div class='line' id='LC2005'><span class="cm">/**</span></div><div class='line' id='LC2006'><span class="cm"> * Called on `drain` event</span></div><div class='line' id='LC2007'><span class="cm"> *</span></div><div class='line' id='LC2008'><span class="cm"> * @api private</span></div><div class='line' id='LC2009'><span class="cm"> */</span></div><div class='line' id='LC2010'><br/></div><div class='line' id='LC2011'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onDrain</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2012'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="k">this</span><span class="p">.</span><span class="nx">prevBufferLen</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2013'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">callbackBuffer</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span></div><div class='line' id='LC2014'> <span class="k">this</span><span class="p">.</span><span class="nx">callbackBuffer</span><span class="p">[</span><span class="nx">i</span><span class="p">]();</span></div><div class='line' id='LC2015'> <span class="p">}</span></div><div class='line' id='LC2016'> <span class="p">}</span></div><div class='line' id='LC2017'><br/></div><div class='line' id='LC2018'> <span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">prevBufferLen</span><span class="p">);</span></div><div class='line' id='LC2019'> <span class="k">this</span><span class="p">.</span><span class="nx">callbackBuffer</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">prevBufferLen</span><span class="p">);</span></div><div class='line' id='LC2020'><br/></div><div class='line' id='LC2021'> <span class="c1">// setting prevBufferLen = 0 is very important</span></div><div class='line' id='LC2022'> <span class="c1">// for example, when upgrading, upgrade packet is sent over,</span></div><div class='line' id='LC2023'> <span class="c1">// and a nonzero prevBufferLen could cause problems on `drain`</span></div><div class='line' id='LC2024'> <span class="k">this</span><span class="p">.</span><span class="nx">prevBufferLen</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC2025'><br/></div><div class='line' id='LC2026'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2027'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'drain'</span><span class="p">);</span></div><div class='line' id='LC2028'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2029'> <span class="k">this</span><span class="p">.</span><span class="nx">flush</span><span class="p">();</span></div><div class='line' id='LC2030'> <span class="p">}</span></div><div class='line' id='LC2031'><span class="p">};</span></div><div class='line' id='LC2032'><br/></div><div class='line' id='LC2033'><span class="cm">/**</span></div><div class='line' id='LC2034'><span class="cm"> * Flush write buffers.</span></div><div class='line' id='LC2035'><span class="cm"> *</span></div><div class='line' id='LC2036'><span class="cm"> * @api private</span></div><div class='line' id='LC2037'><span class="cm"> */</span></div><div class='line' id='LC2038'><br/></div><div class='line' id='LC2039'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">flush</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2040'> <span class="k">if</span> <span class="p">(</span><span class="s1">'closed'</span> <span class="o">!=</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">writable</span> <span class="o">&&</span></div><div class='line' id='LC2041'> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">upgrading</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2042'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'flushing %d packets in socket'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC2043'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">);</span></div><div class='line' id='LC2044'> <span class="c1">// keep track of current length of writeBuffer</span></div><div class='line' id='LC2045'> <span class="c1">// splice writeBuffer and callbackBuffer on `drain`</span></div><div class='line' id='LC2046'> <span class="k">this</span><span class="p">.</span><span class="nx">prevBufferLen</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC2047'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'flush'</span><span class="p">);</span></div><div class='line' id='LC2048'> <span class="p">}</span></div><div class='line' id='LC2049'><span class="p">};</span></div><div class='line' id='LC2050'><br/></div><div class='line' id='LC2051'><span class="cm">/**</span></div><div class='line' id='LC2052'><span class="cm"> * Sends a message.</span></div><div class='line' id='LC2053'><span class="cm"> *</span></div><div class='line' id='LC2054'><span class="cm"> * @param {String} message.</span></div><div class='line' id='LC2055'><span class="cm"> * @param {Function} callback function.</span></div><div class='line' id='LC2056'><span class="cm"> * @return {Socket} for chaining.</span></div><div class='line' id='LC2057'><span class="cm"> * @api public</span></div><div class='line' id='LC2058'><span class="cm"> */</span></div><div class='line' id='LC2059'><br/></div><div class='line' id='LC2060'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">write</span> <span class="o">=</span></div><div class='line' id='LC2061'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">send</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="nx">fn</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2062'> <span class="k">this</span><span class="p">.</span><span class="nx">sendPacket</span><span class="p">(</span><span class="s1">'message'</span><span class="p">,</span> <span class="nx">msg</span><span class="p">,</span> <span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC2063'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2064'><span class="p">};</span></div><div class='line' id='LC2065'><br/></div><div class='line' id='LC2066'><span class="cm">/**</span></div><div class='line' id='LC2067'><span class="cm"> * Sends a packet.</span></div><div class='line' id='LC2068'><span class="cm"> *</span></div><div class='line' id='LC2069'><span class="cm"> * @param {String} packet type.</span></div><div class='line' id='LC2070'><span class="cm"> * @param {String} data.</span></div><div class='line' id='LC2071'><span class="cm"> * @param {Function} callback function.</span></div><div class='line' id='LC2072'><span class="cm"> * @api private</span></div><div class='line' id='LC2073'><span class="cm"> */</span></div><div class='line' id='LC2074'><br/></div><div class='line' id='LC2075'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">sendPacket</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">data</span><span class="p">,</span> <span class="nx">fn</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2076'> <span class="kd">var</span> <span class="nx">packet</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">data</span> <span class="p">};</span></div><div class='line' id='LC2077'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'packetCreate'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC2078'> <span class="k">this</span><span class="p">.</span><span class="nx">writeBuffer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC2079'> <span class="k">this</span><span class="p">.</span><span class="nx">callbackBuffer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC2080'> <span class="k">this</span><span class="p">.</span><span class="nx">flush</span><span class="p">();</span></div><div class='line' id='LC2081'><span class="p">};</span></div><div class='line' id='LC2082'><br/></div><div class='line' id='LC2083'><span class="cm">/**</span></div><div class='line' id='LC2084'><span class="cm"> * Closes the connection.</span></div><div class='line' id='LC2085'><span class="cm"> *</span></div><div class='line' id='LC2086'><span class="cm"> * @api private</span></div><div class='line' id='LC2087'><span class="cm"> */</span></div><div class='line' id='LC2088'><br/></div><div class='line' id='LC2089'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">close</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2090'> <span class="k">if</span> <span class="p">(</span><span class="s1">'opening'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">||</span> <span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2091'> <span class="k">this</span><span class="p">.</span><span class="nx">onClose</span><span class="p">(</span><span class="s1">'forced close'</span><span class="p">);</span></div><div class='line' id='LC2092'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'socket closing - telling transport to close'</span><span class="p">);</span></div><div class='line' id='LC2093'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC2094'> <span class="p">}</span></div><div class='line' id='LC2095'><br/></div><div class='line' id='LC2096'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2097'><span class="p">};</span></div><div class='line' id='LC2098'><br/></div><div class='line' id='LC2099'><span class="cm">/**</span></div><div class='line' id='LC2100'><span class="cm"> * Called upon transport error</span></div><div class='line' id='LC2101'><span class="cm"> *</span></div><div class='line' id='LC2102'><span class="cm"> * @api private</span></div><div class='line' id='LC2103'><span class="cm"> */</span></div><div class='line' id='LC2104'><br/></div><div class='line' id='LC2105'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onError</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2106'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'socket error %j'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2107'> <span class="nx">Socket</span><span class="p">.</span><span class="nx">priorWebsocketSuccess</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC2108'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2109'> <span class="k">this</span><span class="p">.</span><span class="nx">onClose</span><span class="p">(</span><span class="s1">'transport error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2110'><span class="p">};</span></div><div class='line' id='LC2111'><br/></div><div class='line' id='LC2112'><span class="cm">/**</span></div><div class='line' id='LC2113'><span class="cm"> * Called upon transport close.</span></div><div class='line' id='LC2114'><span class="cm"> *</span></div><div class='line' id='LC2115'><span class="cm"> * @api private</span></div><div class='line' id='LC2116'><span class="cm"> */</span></div><div class='line' id='LC2117'><br/></div><div class='line' id='LC2118'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onClose</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">reason</span><span class="p">,</span> <span class="nx">desc</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2119'> <span class="k">if</span> <span class="p">(</span><span class="s1">'opening'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">||</span> <span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2120'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'socket close with reason: "%s"'</span><span class="p">,</span> <span class="nx">reason</span><span class="p">);</span></div><div class='line' id='LC2121'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2122'><br/></div><div class='line' id='LC2123'> <span class="c1">// clear timers</span></div><div class='line' id='LC2124'> <span class="nx">clearTimeout</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">pingIntervalTimer</span><span class="p">);</span></div><div class='line' id='LC2125'> <span class="nx">clearTimeout</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">pingTimeoutTimer</span><span class="p">);</span></div><div class='line' id='LC2126'><br/></div><div class='line' id='LC2127'> <span class="c1">// clean buffers in next tick, so developers can still</span></div><div class='line' id='LC2128'> <span class="c1">// grab the buffers on `close` event</span></div><div class='line' id='LC2129'> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2130'> <span class="nx">self</span><span class="p">.</span><span class="nx">writeBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC2131'> <span class="nx">self</span><span class="p">.</span><span class="nx">callbackBuffer</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC2132'> <span class="nx">self</span><span class="p">.</span><span class="nx">prevBufferLen</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC2133'> <span class="p">},</span> <span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC2134'><br/></div><div class='line' id='LC2135'> <span class="c1">// stop event from firing again for transport</span></div><div class='line' id='LC2136'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">removeAllListeners</span><span class="p">(</span><span class="s1">'close'</span><span class="p">);</span></div><div class='line' id='LC2137'><br/></div><div class='line' id='LC2138'> <span class="c1">// ensure transport won't stay open</span></div><div class='line' id='LC2139'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC2140'><br/></div><div class='line' id='LC2141'> <span class="c1">// ignore further transport communication</span></div><div class='line' id='LC2142'> <span class="k">this</span><span class="p">.</span><span class="nx">transport</span><span class="p">.</span><span class="nx">removeAllListeners</span><span class="p">();</span></div><div class='line' id='LC2143'><br/></div><div class='line' id='LC2144'> <span class="c1">// set ready state</span></div><div class='line' id='LC2145'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'closed'</span><span class="p">;</span></div><div class='line' id='LC2146'><br/></div><div class='line' id='LC2147'> <span class="c1">// clear session id</span></div><div class='line' id='LC2148'> <span class="k">this</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC2149'><br/></div><div class='line' id='LC2150'> <span class="c1">// emit close event</span></div><div class='line' id='LC2151'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'close'</span><span class="p">,</span> <span class="nx">reason</span><span class="p">,</span> <span class="nx">desc</span><span class="p">);</span></div><div class='line' id='LC2152'> <span class="p">}</span></div><div class='line' id='LC2153'><span class="p">};</span></div><div class='line' id='LC2154'><br/></div><div class='line' id='LC2155'><span class="cm">/**</span></div><div class='line' id='LC2156'><span class="cm"> * Filters upgrades, returning only those matching client transports.</span></div><div class='line' id='LC2157'><span class="cm"> *</span></div><div class='line' id='LC2158'><span class="cm"> * @param {Array} server upgrades</span></div><div class='line' id='LC2159'><span class="cm"> * @api private</span></div><div class='line' id='LC2160'><span class="cm"> *</span></div><div class='line' id='LC2161'><span class="cm"> */</span></div><div class='line' id='LC2162'><br/></div><div class='line' id='LC2163'><span class="nx">Socket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">filterUpgrades</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">upgrades</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2164'> <span class="kd">var</span> <span class="nx">filteredUpgrades</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC2165'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="nx">upgrades</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o"><</span><span class="nx">j</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2166'> <span class="k">if</span> <span class="p">(</span><span class="o">~</span><span class="nx">index</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">transports</span><span class="p">,</span> <span class="nx">upgrades</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="nx">filteredUpgrades</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">upgrades</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC2167'> <span class="p">}</span></div><div class='line' id='LC2168'> <span class="k">return</span> <span class="nx">filteredUpgrades</span><span class="p">;</span></div><div class='line' id='LC2169'><span class="p">};</span></div><div class='line' id='LC2170'><br/></div><div class='line' id='LC2171'><span class="p">},{</span><span class="s2">"./transport"</span><span class="o">:</span><span class="mi">14</span><span class="p">,</span><span class="s2">"./transports"</span><span class="o">:</span><span class="mi">15</span><span class="p">,</span><span class="s2">"component-emitter"</span><span class="o">:</span><span class="mi">8</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"engine.io-parser"</span><span class="o">:</span><span class="mi">22</span><span class="p">,</span><span class="s2">"indexof"</span><span class="o">:</span><span class="mi">36</span><span class="p">,</span><span class="s2">"parsejson"</span><span class="o">:</span><span class="mi">29</span><span class="p">,</span><span class="s2">"parseqs"</span><span class="o">:</span><span class="mi">30</span><span class="p">,</span><span class="s2">"parseuri"</span><span class="o">:</span><span class="mi">38</span><span class="p">}],</span><span class="mi">14</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC2172'><span class="cm">/**</span></div><div class='line' id='LC2173'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC2174'><span class="cm"> */</span></div><div class='line' id='LC2175'><br/></div><div class='line' id='LC2176'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-parser'</span><span class="p">);</span></div><div class='line' id='LC2177'><span class="kd">var</span> <span class="nx">Emitter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-emitter'</span><span class="p">);</span></div><div class='line' id='LC2178'><br/></div><div class='line' id='LC2179'><span class="cm">/**</span></div><div class='line' id='LC2180'><span class="cm"> * Module exports.</span></div><div class='line' id='LC2181'><span class="cm"> */</span></div><div class='line' id='LC2182'><br/></div><div class='line' id='LC2183'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">Transport</span><span class="p">;</span></div><div class='line' id='LC2184'><br/></div><div class='line' id='LC2185'><span class="cm">/**</span></div><div class='line' id='LC2186'><span class="cm"> * Transport abstract constructor.</span></div><div class='line' id='LC2187'><span class="cm"> *</span></div><div class='line' id='LC2188'><span class="cm"> * @param {Object} options.</span></div><div class='line' id='LC2189'><span class="cm"> * @api private</span></div><div class='line' id='LC2190'><span class="cm"> */</span></div><div class='line' id='LC2191'><br/></div><div class='line' id='LC2192'><span class="kd">function</span> <span class="nx">Transport</span> <span class="p">(</span><span class="nx">opts</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2193'> <span class="k">this</span><span class="p">.</span><span class="nx">path</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">path</span><span class="p">;</span></div><div class='line' id='LC2194'> <span class="k">this</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">hostname</span><span class="p">;</span></div><div class='line' id='LC2195'> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC2196'> <span class="k">this</span><span class="p">.</span><span class="nx">secure</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">secure</span><span class="p">;</span></div><div class='line' id='LC2197'> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">query</span><span class="p">;</span></div><div class='line' id='LC2198'> <span class="k">this</span><span class="p">.</span><span class="nx">timestampParam</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">timestampParam</span><span class="p">;</span></div><div class='line' id='LC2199'> <span class="k">this</span><span class="p">.</span><span class="nx">timestampRequests</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">timestampRequests</span><span class="p">;</span></div><div class='line' id='LC2200'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC2201'> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">agent</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC2202'> <span class="k">this</span><span class="p">.</span><span class="nx">socket</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">socket</span><span class="p">;</span></div><div class='line' id='LC2203'><span class="p">}</span></div><div class='line' id='LC2204'><br/></div><div class='line' id='LC2205'><span class="cm">/**</span></div><div class='line' id='LC2206'><span class="cm"> * Mix in `Emitter`.</span></div><div class='line' id='LC2207'><span class="cm"> */</span></div><div class='line' id='LC2208'><br/></div><div class='line' id='LC2209'><span class="nx">Emitter</span><span class="p">(</span><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span></div><div class='line' id='LC2210'><br/></div><div class='line' id='LC2211'><span class="cm">/**</span></div><div class='line' id='LC2212'><span class="cm"> * A counter used to prevent collisions in the timestamps used</span></div><div class='line' id='LC2213'><span class="cm"> * for cache busting.</span></div><div class='line' id='LC2214'><span class="cm"> */</span></div><div class='line' id='LC2215'><br/></div><div class='line' id='LC2216'><span class="nx">Transport</span><span class="p">.</span><span class="nx">timestamps</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC2217'><br/></div><div class='line' id='LC2218'><span class="cm">/**</span></div><div class='line' id='LC2219'><span class="cm"> * Emits an error.</span></div><div class='line' id='LC2220'><span class="cm"> *</span></div><div class='line' id='LC2221'><span class="cm"> * @param {String} str</span></div><div class='line' id='LC2222'><span class="cm"> * @return {Transport} for chaining</span></div><div class='line' id='LC2223'><span class="cm"> * @api public</span></div><div class='line' id='LC2224'><span class="cm"> */</span></div><div class='line' id='LC2225'><br/></div><div class='line' id='LC2226'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onError</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="nx">desc</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2227'> <span class="kd">var</span> <span class="nx">err</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span></div><div class='line' id='LC2228'> <span class="nx">err</span><span class="p">.</span><span class="nx">type</span> <span class="o">=</span> <span class="s1">'TransportError'</span><span class="p">;</span></div><div class='line' id='LC2229'> <span class="nx">err</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="nx">desc</span><span class="p">;</span></div><div class='line' id='LC2230'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2231'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2232'><span class="p">};</span></div><div class='line' id='LC2233'><br/></div><div class='line' id='LC2234'><span class="cm">/**</span></div><div class='line' id='LC2235'><span class="cm"> * Opens the transport.</span></div><div class='line' id='LC2236'><span class="cm"> *</span></div><div class='line' id='LC2237'><span class="cm"> * @api public</span></div><div class='line' id='LC2238'><span class="cm"> */</span></div><div class='line' id='LC2239'><br/></div><div class='line' id='LC2240'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">open</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2241'> <span class="k">if</span> <span class="p">(</span><span class="s1">'closed'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">||</span> <span class="s1">''</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2242'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'opening'</span><span class="p">;</span></div><div class='line' id='LC2243'> <span class="k">this</span><span class="p">.</span><span class="nx">doOpen</span><span class="p">();</span></div><div class='line' id='LC2244'> <span class="p">}</span></div><div class='line' id='LC2245'><br/></div><div class='line' id='LC2246'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2247'><span class="p">};</span></div><div class='line' id='LC2248'><br/></div><div class='line' id='LC2249'><span class="cm">/**</span></div><div class='line' id='LC2250'><span class="cm"> * Closes the transport.</span></div><div class='line' id='LC2251'><span class="cm"> *</span></div><div class='line' id='LC2252'><span class="cm"> * @api private</span></div><div class='line' id='LC2253'><span class="cm"> */</span></div><div class='line' id='LC2254'><br/></div><div class='line' id='LC2255'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">close</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2256'> <span class="k">if</span> <span class="p">(</span><span class="s1">'opening'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">||</span> <span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2257'> <span class="k">this</span><span class="p">.</span><span class="nx">doClose</span><span class="p">();</span></div><div class='line' id='LC2258'> <span class="k">this</span><span class="p">.</span><span class="nx">onClose</span><span class="p">();</span></div><div class='line' id='LC2259'> <span class="p">}</span></div><div class='line' id='LC2260'><br/></div><div class='line' id='LC2261'> <span class="k">return</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2262'><span class="p">};</span></div><div class='line' id='LC2263'><br/></div><div class='line' id='LC2264'><span class="cm">/**</span></div><div class='line' id='LC2265'><span class="cm"> * Sends multiple packets.</span></div><div class='line' id='LC2266'><span class="cm"> *</span></div><div class='line' id='LC2267'><span class="cm"> * @param {Array} packets</span></div><div class='line' id='LC2268'><span class="cm"> * @api private</span></div><div class='line' id='LC2269'><span class="cm"> */</span></div><div class='line' id='LC2270'><br/></div><div class='line' id='LC2271'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">send</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packets</span><span class="p">){</span></div><div class='line' id='LC2272'> <span class="k">if</span> <span class="p">(</span><span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2273'> <span class="k">this</span><span class="p">.</span><span class="nx">write</span><span class="p">(</span><span class="nx">packets</span><span class="p">);</span></div><div class='line' id='LC2274'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2275'> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Transport not open'</span><span class="p">);</span></div><div class='line' id='LC2276'> <span class="p">}</span></div><div class='line' id='LC2277'><span class="p">};</span></div><div class='line' id='LC2278'><br/></div><div class='line' id='LC2279'><span class="cm">/**</span></div><div class='line' id='LC2280'><span class="cm"> * Called upon open</span></div><div class='line' id='LC2281'><span class="cm"> *</span></div><div class='line' id='LC2282'><span class="cm"> * @api private</span></div><div class='line' id='LC2283'><span class="cm"> */</span></div><div class='line' id='LC2284'><br/></div><div class='line' id='LC2285'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onOpen</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2286'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'open'</span><span class="p">;</span></div><div class='line' id='LC2287'> <span class="k">this</span><span class="p">.</span><span class="nx">writable</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC2288'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'open'</span><span class="p">);</span></div><div class='line' id='LC2289'><span class="p">};</span></div><div class='line' id='LC2290'><br/></div><div class='line' id='LC2291'><span class="cm">/**</span></div><div class='line' id='LC2292'><span class="cm"> * Called with data.</span></div><div class='line' id='LC2293'><span class="cm"> *</span></div><div class='line' id='LC2294'><span class="cm"> * @param {String} data</span></div><div class='line' id='LC2295'><span class="cm"> * @api private</span></div><div class='line' id='LC2296'><span class="cm"> */</span></div><div class='line' id='LC2297'><br/></div><div class='line' id='LC2298'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onData</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC2299'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2300'> <span class="kd">var</span> <span class="nx">packet</span> <span class="o">=</span> <span class="nx">parser</span><span class="p">.</span><span class="nx">decodePacket</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">socket</span><span class="p">.</span><span class="nx">binaryType</span><span class="p">);</span></div><div class='line' id='LC2301'> <span class="k">this</span><span class="p">.</span><span class="nx">onPacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC2302'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span></div><div class='line' id='LC2303'> <span class="nx">e</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC2304'> <span class="k">this</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="s1">'parser decode error'</span><span class="p">,</span> <span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC2305'> <span class="p">}</span></div><div class='line' id='LC2306'><span class="p">};</span></div><div class='line' id='LC2307'><br/></div><div class='line' id='LC2308'><span class="cm">/**</span></div><div class='line' id='LC2309'><span class="cm"> * Called with a decoded packet.</span></div><div class='line' id='LC2310'><span class="cm"> */</span></div><div class='line' id='LC2311'><br/></div><div class='line' id='LC2312'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onPacket</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">packet</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2313'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'packet'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC2314'><span class="p">};</span></div><div class='line' id='LC2315'><br/></div><div class='line' id='LC2316'><span class="cm">/**</span></div><div class='line' id='LC2317'><span class="cm"> * Called upon close.</span></div><div class='line' id='LC2318'><span class="cm"> *</span></div><div class='line' id='LC2319'><span class="cm"> * @api private</span></div><div class='line' id='LC2320'><span class="cm"> */</span></div><div class='line' id='LC2321'><br/></div><div class='line' id='LC2322'><span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onClose</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2323'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'closed'</span><span class="p">;</span></div><div class='line' id='LC2324'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'close'</span><span class="p">);</span></div><div class='line' id='LC2325'><span class="p">};</span></div><div class='line' id='LC2326'><br/></div><div class='line' id='LC2327'><span class="p">},{</span><span class="s2">"component-emitter"</span><span class="o">:</span><span class="mi">8</span><span class="p">,</span><span class="s2">"engine.io-parser"</span><span class="o">:</span><span class="mi">22</span><span class="p">}],</span><span class="mi">15</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC2328'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC2329'><span class="cm"> * Module dependencies</span></div><div class='line' id='LC2330'><span class="cm"> */</span></div><div class='line' id='LC2331'><br/></div><div class='line' id='LC2332'><span class="kd">var</span> <span class="nx">XMLHttpRequest</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'xmlhttprequest'</span><span class="p">);</span></div><div class='line' id='LC2333'><span class="kd">var</span> <span class="nx">XHR</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./polling-xhr'</span><span class="p">);</span></div><div class='line' id='LC2334'><span class="kd">var</span> <span class="nx">JSONP</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./polling-jsonp'</span><span class="p">);</span></div><div class='line' id='LC2335'><span class="kd">var</span> <span class="nx">websocket</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./websocket'</span><span class="p">);</span></div><div class='line' id='LC2336'><br/></div><div class='line' id='LC2337'><span class="cm">/**</span></div><div class='line' id='LC2338'><span class="cm"> * Export transports.</span></div><div class='line' id='LC2339'><span class="cm"> */</span></div><div class='line' id='LC2340'><br/></div><div class='line' id='LC2341'><span class="nx">exports</span><span class="p">.</span><span class="nx">polling</span> <span class="o">=</span> <span class="nx">polling</span><span class="p">;</span></div><div class='line' id='LC2342'><span class="nx">exports</span><span class="p">.</span><span class="nx">websocket</span> <span class="o">=</span> <span class="nx">websocket</span><span class="p">;</span></div><div class='line' id='LC2343'><br/></div><div class='line' id='LC2344'><span class="cm">/**</span></div><div class='line' id='LC2345'><span class="cm"> * Polling transport polymorphic constructor.</span></div><div class='line' id='LC2346'><span class="cm"> * Decides on xhr vs jsonp based on feature detection.</span></div><div class='line' id='LC2347'><span class="cm"> *</span></div><div class='line' id='LC2348'><span class="cm"> * @api private</span></div><div class='line' id='LC2349'><span class="cm"> */</span></div><div class='line' id='LC2350'><br/></div><div class='line' id='LC2351'><span class="kd">function</span> <span class="nx">polling</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC2352'> <span class="kd">var</span> <span class="nx">xhr</span><span class="p">;</span></div><div class='line' id='LC2353'> <span class="kd">var</span> <span class="nx">xd</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC2354'><br/></div><div class='line' id='LC2355'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">location</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2356'> <span class="kd">var</span> <span class="nx">isSSL</span> <span class="o">=</span> <span class="s1">'https:'</span> <span class="o">==</span> <span class="nx">location</span><span class="p">.</span><span class="nx">protocol</span><span class="p">;</span></div><div class='line' id='LC2357'> <span class="kd">var</span> <span class="nx">port</span> <span class="o">=</span> <span class="nx">location</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC2358'><br/></div><div class='line' id='LC2359'> <span class="c1">// some user agents have empty `location.port`</span></div><div class='line' id='LC2360'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">port</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2361'> <span class="nx">port</span> <span class="o">=</span> <span class="nx">isSSL</span> <span class="o">?</span> <span class="mi">443</span> <span class="o">:</span> <span class="mi">80</span><span class="p">;</span></div><div class='line' id='LC2362'> <span class="p">}</span></div><div class='line' id='LC2363'><br/></div><div class='line' id='LC2364'> <span class="nx">xd</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">!=</span> <span class="nx">location</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">||</span> <span class="nx">port</span> <span class="o">!=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC2365'> <span class="p">}</span></div><div class='line' id='LC2366'><br/></div><div class='line' id='LC2367'> <span class="nx">opts</span><span class="p">.</span><span class="nx">xdomain</span> <span class="o">=</span> <span class="nx">xd</span><span class="p">;</span></div><div class='line' id='LC2368'> <span class="nx">xhr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="p">(</span><span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2369'><br/></div><div class='line' id='LC2370'> <span class="k">if</span> <span class="p">(</span><span class="s1">'open'</span> <span class="k">in</span> <span class="nx">xhr</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">opts</span><span class="p">.</span><span class="nx">forceJSONP</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2371'> <span class="k">return</span> <span class="k">new</span> <span class="nx">XHR</span><span class="p">(</span><span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2372'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2373'> <span class="k">return</span> <span class="k">new</span> <span class="nx">JSONP</span><span class="p">(</span><span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2374'> <span class="p">}</span></div><div class='line' id='LC2375'><span class="p">}</span></div><div class='line' id='LC2376'><br/></div><div class='line' id='LC2377'><span class="p">},{</span><span class="s2">"./polling-jsonp"</span><span class="o">:</span><span class="mi">16</span><span class="p">,</span><span class="s2">"./polling-xhr"</span><span class="o">:</span><span class="mi">17</span><span class="p">,</span><span class="s2">"./websocket"</span><span class="o">:</span><span class="mi">19</span><span class="p">,</span><span class="s2">"xmlhttprequest"</span><span class="o">:</span><span class="mi">20</span><span class="p">}],</span><span class="mi">16</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC2378'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span></div><div class='line' id='LC2379'><span class="cm">/**</span></div><div class='line' id='LC2380'><span class="cm"> * Module requirements.</span></div><div class='line' id='LC2381'><span class="cm"> */</span></div><div class='line' id='LC2382'><br/></div><div class='line' id='LC2383'><span class="kd">var</span> <span class="nx">Polling</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./polling'</span><span class="p">);</span></div><div class='line' id='LC2384'><span class="kd">var</span> <span class="nx">inherit</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-inherit'</span><span class="p">);</span></div><div class='line' id='LC2385'><br/></div><div class='line' id='LC2386'><span class="cm">/**</span></div><div class='line' id='LC2387'><span class="cm"> * Module exports.</span></div><div class='line' id='LC2388'><span class="cm"> */</span></div><div class='line' id='LC2389'><br/></div><div class='line' id='LC2390'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">JSONPPolling</span><span class="p">;</span></div><div class='line' id='LC2391'><br/></div><div class='line' id='LC2392'><span class="cm">/**</span></div><div class='line' id='LC2393'><span class="cm"> * Cached regular expressions.</span></div><div class='line' id='LC2394'><span class="cm"> */</span></div><div class='line' id='LC2395'><br/></div><div class='line' id='LC2396'><span class="kd">var</span> <span class="nx">rNewline</span> <span class="o">=</span> <span class="sr">/\n/g</span><span class="p">;</span></div><div class='line' id='LC2397'><span class="kd">var</span> <span class="nx">rEscapedNewline</span> <span class="o">=</span> <span class="sr">/\\n/g</span><span class="p">;</span></div><div class='line' id='LC2398'><br/></div><div class='line' id='LC2399'><span class="cm">/**</span></div><div class='line' id='LC2400'><span class="cm"> * Global JSONP callbacks.</span></div><div class='line' id='LC2401'><span class="cm"> */</span></div><div class='line' id='LC2402'><br/></div><div class='line' id='LC2403'><span class="kd">var</span> <span class="nx">callbacks</span><span class="p">;</span></div><div class='line' id='LC2404'><br/></div><div class='line' id='LC2405'><span class="cm">/**</span></div><div class='line' id='LC2406'><span class="cm"> * Callbacks count.</span></div><div class='line' id='LC2407'><span class="cm"> */</span></div><div class='line' id='LC2408'><br/></div><div class='line' id='LC2409'><span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC2410'><br/></div><div class='line' id='LC2411'><span class="cm">/**</span></div><div class='line' id='LC2412'><span class="cm"> * Noop.</span></div><div class='line' id='LC2413'><span class="cm"> */</span></div><div class='line' id='LC2414'><br/></div><div class='line' id='LC2415'><span class="kd">function</span> <span class="nx">empty</span> <span class="p">()</span> <span class="p">{</span> <span class="p">}</span></div><div class='line' id='LC2416'><br/></div><div class='line' id='LC2417'><span class="cm">/**</span></div><div class='line' id='LC2418'><span class="cm"> * JSONP Polling constructor.</span></div><div class='line' id='LC2419'><span class="cm"> *</span></div><div class='line' id='LC2420'><span class="cm"> * @param {Object} opts.</span></div><div class='line' id='LC2421'><span class="cm"> * @api public</span></div><div class='line' id='LC2422'><span class="cm"> */</span></div><div class='line' id='LC2423'><br/></div><div class='line' id='LC2424'><span class="kd">function</span> <span class="nx">JSONPPolling</span> <span class="p">(</span><span class="nx">opts</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2425'> <span class="nx">Polling</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2426'><br/></div><div class='line' id='LC2427'> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC2428'><br/></div><div class='line' id='LC2429'> <span class="c1">// define global callbacks array if not present</span></div><div class='line' id='LC2430'> <span class="c1">// we do this here (lazily) to avoid unneeded global pollution</span></div><div class='line' id='LC2431'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">callbacks</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2432'> <span class="c1">// we need to consider multiple engines in the same page</span></div><div class='line' id='LC2433'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">global</span><span class="p">.</span><span class="nx">___eio</span><span class="p">)</span> <span class="nx">global</span><span class="p">.</span><span class="nx">___eio</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC2434'> <span class="nx">callbacks</span> <span class="o">=</span> <span class="nx">global</span><span class="p">.</span><span class="nx">___eio</span><span class="p">;</span></div><div class='line' id='LC2435'> <span class="p">}</span></div><div class='line' id='LC2436'><br/></div><div class='line' id='LC2437'> <span class="c1">// callback identifier</span></div><div class='line' id='LC2438'> <span class="k">this</span><span class="p">.</span><span class="nx">index</span> <span class="o">=</span> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC2439'><br/></div><div class='line' id='LC2440'> <span class="c1">// add callback to jsonp global</span></div><div class='line' id='LC2441'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2442'> <span class="nx">callbacks</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">msg</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2443'> <span class="nx">self</span><span class="p">.</span><span class="nx">onData</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span></div><div class='line' id='LC2444'> <span class="p">});</span></div><div class='line' id='LC2445'><br/></div><div class='line' id='LC2446'> <span class="c1">// append to query string</span></div><div class='line' id='LC2447'> <span class="k">this</span><span class="p">.</span><span class="nx">query</span><span class="p">.</span><span class="nx">j</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">index</span><span class="p">;</span></div><div class='line' id='LC2448'><br/></div><div class='line' id='LC2449'> <span class="c1">// prevent spurious errors from being emitted when the window is unloaded</span></div><div class='line' id='LC2450'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nb">document</span> <span class="o">&&</span> <span class="nx">global</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2451'> <span class="nx">global</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">'beforeunload'</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2452'> <span class="k">if</span> <span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">script</span><span class="p">)</span> <span class="nx">self</span><span class="p">.</span><span class="nx">script</span><span class="p">.</span><span class="nx">onerror</span> <span class="o">=</span> <span class="nx">empty</span><span class="p">;</span></div><div class='line' id='LC2453'> <span class="p">});</span></div><div class='line' id='LC2454'> <span class="p">}</span></div><div class='line' id='LC2455'><span class="p">}</span></div><div class='line' id='LC2456'><br/></div><div class='line' id='LC2457'><span class="cm">/**</span></div><div class='line' id='LC2458'><span class="cm"> * Inherits from Polling.</span></div><div class='line' id='LC2459'><span class="cm"> */</span></div><div class='line' id='LC2460'><br/></div><div class='line' id='LC2461'><span class="nx">inherit</span><span class="p">(</span><span class="nx">JSONPPolling</span><span class="p">,</span> <span class="nx">Polling</span><span class="p">);</span></div><div class='line' id='LC2462'><br/></div><div class='line' id='LC2463'><span class="cm">/*</span></div><div class='line' id='LC2464'><span class="cm"> * JSONP only supports binary as base64 encoded strings</span></div><div class='line' id='LC2465'><span class="cm"> */</span></div><div class='line' id='LC2466'><br/></div><div class='line' id='LC2467'><span class="nx">JSONPPolling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC2468'><br/></div><div class='line' id='LC2469'><span class="cm">/**</span></div><div class='line' id='LC2470'><span class="cm"> * Closes the socket.</span></div><div class='line' id='LC2471'><span class="cm"> *</span></div><div class='line' id='LC2472'><span class="cm"> * @api private</span></div><div class='line' id='LC2473'><span class="cm"> */</span></div><div class='line' id='LC2474'><br/></div><div class='line' id='LC2475'><span class="nx">JSONPPolling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doClose</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2476'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">script</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2477'> <span class="k">this</span><span class="p">.</span><span class="nx">script</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">script</span><span class="p">);</span></div><div class='line' id='LC2478'> <span class="k">this</span><span class="p">.</span><span class="nx">script</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC2479'> <span class="p">}</span></div><div class='line' id='LC2480'><br/></div><div class='line' id='LC2481'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">form</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2482'> <span class="k">this</span><span class="p">.</span><span class="nx">form</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">form</span><span class="p">);</span></div><div class='line' id='LC2483'> <span class="k">this</span><span class="p">.</span><span class="nx">form</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC2484'> <span class="p">}</span></div><div class='line' id='LC2485'><br/></div><div class='line' id='LC2486'> <span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doClose</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">);</span></div><div class='line' id='LC2487'><span class="p">};</span></div><div class='line' id='LC2488'><br/></div><div class='line' id='LC2489'><span class="cm">/**</span></div><div class='line' id='LC2490'><span class="cm"> * Starts a poll cycle.</span></div><div class='line' id='LC2491'><span class="cm"> *</span></div><div class='line' id='LC2492'><span class="cm"> * @api private</span></div><div class='line' id='LC2493'><span class="cm"> */</span></div><div class='line' id='LC2494'><br/></div><div class='line' id='LC2495'><span class="nx">JSONPPolling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doPoll</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2496'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2497'> <span class="kd">var</span> <span class="nx">script</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'script'</span><span class="p">);</span></div><div class='line' id='LC2498'><br/></div><div class='line' id='LC2499'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">script</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2500'> <span class="k">this</span><span class="p">.</span><span class="nx">script</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">script</span><span class="p">);</span></div><div class='line' id='LC2501'> <span class="k">this</span><span class="p">.</span><span class="nx">script</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC2502'> <span class="p">}</span></div><div class='line' id='LC2503'><br/></div><div class='line' id='LC2504'> <span class="nx">script</span><span class="p">.</span><span class="nx">async</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC2505'> <span class="nx">script</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">();</span></div><div class='line' id='LC2506'> <span class="nx">script</span><span class="p">.</span><span class="nx">onerror</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span></div><div class='line' id='LC2507'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="s1">'jsonp poll error'</span><span class="p">,</span><span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC2508'> <span class="p">};</span></div><div class='line' id='LC2509'><br/></div><div class='line' id='LC2510'> <span class="kd">var</span> <span class="nx">insertAt</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s1">'script'</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span></div><div class='line' id='LC2511'> <span class="nx">insertAt</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">insertBefore</span><span class="p">(</span><span class="nx">script</span><span class="p">,</span> <span class="nx">insertAt</span><span class="p">);</span></div><div class='line' id='LC2512'> <span class="k">this</span><span class="p">.</span><span class="nx">script</span> <span class="o">=</span> <span class="nx">script</span><span class="p">;</span></div><div class='line' id='LC2513'><br/></div><div class='line' id='LC2514'> <span class="kd">var</span> <span class="nx">isUAgecko</span> <span class="o">=</span> <span class="s1">'undefined'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">navigator</span> <span class="o">&&</span> <span class="sr">/gecko/i</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">userAgent</span><span class="p">);</span></div><div class='line' id='LC2515'> </div><div class='line' id='LC2516'> <span class="k">if</span> <span class="p">(</span><span class="nx">isUAgecko</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2517'> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2518'> <span class="kd">var</span> <span class="nx">iframe</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'iframe'</span><span class="p">);</span></div><div class='line' id='LC2519'> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">iframe</span><span class="p">);</span></div><div class='line' id='LC2520'> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">iframe</span><span class="p">);</span></div><div class='line' id='LC2521'> <span class="p">},</span> <span class="mi">100</span><span class="p">);</span></div><div class='line' id='LC2522'> <span class="p">}</span></div><div class='line' id='LC2523'><span class="p">};</span></div><div class='line' id='LC2524'><br/></div><div class='line' id='LC2525'><span class="cm">/**</span></div><div class='line' id='LC2526'><span class="cm"> * Writes with a hidden iframe.</span></div><div class='line' id='LC2527'><span class="cm"> *</span></div><div class='line' id='LC2528'><span class="cm"> * @param {String} data to send</span></div><div class='line' id='LC2529'><span class="cm"> * @param {Function} called upon flush.</span></div><div class='line' id='LC2530'><span class="cm"> * @api private</span></div><div class='line' id='LC2531'><span class="cm"> */</span></div><div class='line' id='LC2532'><br/></div><div class='line' id='LC2533'><span class="nx">JSONPPolling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doWrite</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">fn</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2534'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2535'><br/></div><div class='line' id='LC2536'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">form</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2537'> <span class="kd">var</span> <span class="nx">form</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'form'</span><span class="p">);</span></div><div class='line' id='LC2538'> <span class="kd">var</span> <span class="nx">area</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'textarea'</span><span class="p">);</span></div><div class='line' id='LC2539'> <span class="kd">var</span> <span class="nx">id</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">iframeId</span> <span class="o">=</span> <span class="s1">'eio_iframe_'</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">index</span><span class="p">;</span></div><div class='line' id='LC2540'> <span class="kd">var</span> <span class="nx">iframe</span><span class="p">;</span></div><div class='line' id='LC2541'><br/></div><div class='line' id='LC2542'> <span class="nx">form</span><span class="p">.</span><span class="nx">className</span> <span class="o">=</span> <span class="s1">'socketio'</span><span class="p">;</span></div><div class='line' id='LC2543'> <span class="nx">form</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">position</span> <span class="o">=</span> <span class="s1">'absolute'</span><span class="p">;</span></div><div class='line' id='LC2544'> <span class="nx">form</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">top</span> <span class="o">=</span> <span class="s1">'-1000px'</span><span class="p">;</span></div><div class='line' id='LC2545'> <span class="nx">form</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">left</span> <span class="o">=</span> <span class="s1">'-1000px'</span><span class="p">;</span></div><div class='line' id='LC2546'> <span class="nx">form</span><span class="p">.</span><span class="nx">target</span> <span class="o">=</span> <span class="nx">id</span><span class="p">;</span></div><div class='line' id='LC2547'> <span class="nx">form</span><span class="p">.</span><span class="nx">method</span> <span class="o">=</span> <span class="s1">'POST'</span><span class="p">;</span></div><div class='line' id='LC2548'> <span class="nx">form</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s1">'accept-charset'</span><span class="p">,</span> <span class="s1">'utf-8'</span><span class="p">);</span></div><div class='line' id='LC2549'> <span class="nx">area</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="s1">'d'</span><span class="p">;</span></div><div class='line' id='LC2550'> <span class="nx">form</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">area</span><span class="p">);</span></div><div class='line' id='LC2551'> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">form</span><span class="p">);</span></div><div class='line' id='LC2552'><br/></div><div class='line' id='LC2553'> <span class="k">this</span><span class="p">.</span><span class="nx">form</span> <span class="o">=</span> <span class="nx">form</span><span class="p">;</span></div><div class='line' id='LC2554'> <span class="k">this</span><span class="p">.</span><span class="nx">area</span> <span class="o">=</span> <span class="nx">area</span><span class="p">;</span></div><div class='line' id='LC2555'> <span class="p">}</span></div><div class='line' id='LC2556'><br/></div><div class='line' id='LC2557'> <span class="k">this</span><span class="p">.</span><span class="nx">form</span><span class="p">.</span><span class="nx">action</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">();</span></div><div class='line' id='LC2558'><br/></div><div class='line' id='LC2559'> <span class="kd">function</span> <span class="nx">complete</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2560'> <span class="nx">initIframe</span><span class="p">();</span></div><div class='line' id='LC2561'> <span class="nx">fn</span><span class="p">();</span></div><div class='line' id='LC2562'> <span class="p">}</span></div><div class='line' id='LC2563'><br/></div><div class='line' id='LC2564'> <span class="kd">function</span> <span class="nx">initIframe</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2565'> <span class="k">if</span> <span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">iframe</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2566'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2567'> <span class="nx">self</span><span class="p">.</span><span class="nx">form</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">iframe</span><span class="p">);</span></div><div class='line' id='LC2568'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2569'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="s1">'jsonp polling iframe removal error'</span><span class="p">,</span> <span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC2570'> <span class="p">}</span></div><div class='line' id='LC2571'> <span class="p">}</span></div><div class='line' id='LC2572'><br/></div><div class='line' id='LC2573'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2574'> <span class="c1">// ie6 dynamic iframes with target="" support (thanks Chris Lambacher)</span></div><div class='line' id='LC2575'> <span class="kd">var</span> <span class="nx">html</span> <span class="o">=</span> <span class="s1">'<iframe src="javascript:0" name="'</span><span class="o">+</span> <span class="nx">self</span><span class="p">.</span><span class="nx">iframeId</span> <span class="o">+</span><span class="s1">'">'</span><span class="p">;</span></div><div class='line' id='LC2576'> <span class="nx">iframe</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="nx">html</span><span class="p">);</span></div><div class='line' id='LC2577'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2578'> <span class="nx">iframe</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'iframe'</span><span class="p">);</span></div><div class='line' id='LC2579'> <span class="nx">iframe</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">iframeId</span><span class="p">;</span></div><div class='line' id='LC2580'> <span class="nx">iframe</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="s1">'javascript:0'</span><span class="p">;</span></div><div class='line' id='LC2581'> <span class="p">}</span></div><div class='line' id='LC2582'><br/></div><div class='line' id='LC2583'> <span class="nx">iframe</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nx">self</span><span class="p">.</span><span class="nx">iframeId</span><span class="p">;</span></div><div class='line' id='LC2584'><br/></div><div class='line' id='LC2585'> <span class="nx">self</span><span class="p">.</span><span class="nx">form</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">iframe</span><span class="p">);</span></div><div class='line' id='LC2586'> <span class="nx">self</span><span class="p">.</span><span class="nx">iframe</span> <span class="o">=</span> <span class="nx">iframe</span><span class="p">;</span></div><div class='line' id='LC2587'> <span class="p">}</span></div><div class='line' id='LC2588'><br/></div><div class='line' id='LC2589'> <span class="nx">initIframe</span><span class="p">();</span></div><div class='line' id='LC2590'><br/></div><div class='line' id='LC2591'> <span class="c1">// escape \n to prevent it from being converted into \r\n by some UAs</span></div><div class='line' id='LC2592'> <span class="c1">// double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side</span></div><div class='line' id='LC2593'> <span class="nx">data</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rEscapedNewline</span><span class="p">,</span> <span class="s1">'\\\n'</span><span class="p">);</span></div><div class='line' id='LC2594'> <span class="k">this</span><span class="p">.</span><span class="nx">area</span><span class="p">.</span><span class="nx">value</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rNewline</span><span class="p">,</span> <span class="s1">'\\n'</span><span class="p">);</span></div><div class='line' id='LC2595'><br/></div><div class='line' id='LC2596'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2597'> <span class="k">this</span><span class="p">.</span><span class="nx">form</span><span class="p">.</span><span class="nx">submit</span><span class="p">();</span></div><div class='line' id='LC2598'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC2599'><br/></div><div class='line' id='LC2600'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">iframe</span><span class="p">.</span><span class="nx">attachEvent</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2601'> <span class="k">this</span><span class="p">.</span><span class="nx">iframe</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2602'> <span class="k">if</span> <span class="p">(</span><span class="nx">self</span><span class="p">.</span><span class="nx">iframe</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">==</span> <span class="s1">'complete'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2603'> <span class="nx">complete</span><span class="p">();</span></div><div class='line' id='LC2604'> <span class="p">}</span></div><div class='line' id='LC2605'> <span class="p">};</span></div><div class='line' id='LC2606'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2607'> <span class="k">this</span><span class="p">.</span><span class="nx">iframe</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="nx">complete</span><span class="p">;</span></div><div class='line' id='LC2608'> <span class="p">}</span></div><div class='line' id='LC2609'><span class="p">};</span></div><div class='line' id='LC2610'><br/></div><div class='line' id='LC2611'><span class="p">},{</span><span class="s2">"./polling"</span><span class="o">:</span><span class="mi">18</span><span class="p">,</span><span class="s2">"component-inherit"</span><span class="o">:</span><span class="mi">21</span><span class="p">}],</span><span class="mi">17</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC2612'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC2613'><span class="cm"> * Module requirements.</span></div><div class='line' id='LC2614'><span class="cm"> */</span></div><div class='line' id='LC2615'><br/></div><div class='line' id='LC2616'><span class="kd">var</span> <span class="nx">XMLHttpRequest</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'xmlhttprequest'</span><span class="p">);</span></div><div class='line' id='LC2617'><span class="kd">var</span> <span class="nx">Polling</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./polling'</span><span class="p">);</span></div><div class='line' id='LC2618'><span class="kd">var</span> <span class="nx">Emitter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-emitter'</span><span class="p">);</span></div><div class='line' id='LC2619'><span class="kd">var</span> <span class="nx">inherit</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-inherit'</span><span class="p">);</span></div><div class='line' id='LC2620'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'engine.io-client:polling-xhr'</span><span class="p">);</span></div><div class='line' id='LC2621'><br/></div><div class='line' id='LC2622'><span class="cm">/**</span></div><div class='line' id='LC2623'><span class="cm"> * Module exports.</span></div><div class='line' id='LC2624'><span class="cm"> */</span></div><div class='line' id='LC2625'><br/></div><div class='line' id='LC2626'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">XHR</span><span class="p">;</span></div><div class='line' id='LC2627'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="p">.</span><span class="nx">Request</span> <span class="o">=</span> <span class="nx">Request</span><span class="p">;</span></div><div class='line' id='LC2628'><br/></div><div class='line' id='LC2629'><span class="cm">/**</span></div><div class='line' id='LC2630'><span class="cm"> * Empty function</span></div><div class='line' id='LC2631'><span class="cm"> */</span></div><div class='line' id='LC2632'><br/></div><div class='line' id='LC2633'><span class="kd">function</span> <span class="nx">empty</span><span class="p">(){}</span></div><div class='line' id='LC2634'><br/></div><div class='line' id='LC2635'><span class="cm">/**</span></div><div class='line' id='LC2636'><span class="cm"> * XHR Polling constructor.</span></div><div class='line' id='LC2637'><span class="cm"> *</span></div><div class='line' id='LC2638'><span class="cm"> * @param {Object} opts</span></div><div class='line' id='LC2639'><span class="cm"> * @api public</span></div><div class='line' id='LC2640'><span class="cm"> */</span></div><div class='line' id='LC2641'><br/></div><div class='line' id='LC2642'><span class="kd">function</span> <span class="nx">XHR</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC2643'> <span class="nx">Polling</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2644'><br/></div><div class='line' id='LC2645'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">location</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2646'> <span class="kd">var</span> <span class="nx">isSSL</span> <span class="o">=</span> <span class="s1">'https:'</span> <span class="o">==</span> <span class="nx">location</span><span class="p">.</span><span class="nx">protocol</span><span class="p">;</span></div><div class='line' id='LC2647'> <span class="kd">var</span> <span class="nx">port</span> <span class="o">=</span> <span class="nx">location</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC2648'><br/></div><div class='line' id='LC2649'> <span class="c1">// some user agents have empty `location.port`</span></div><div class='line' id='LC2650'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">port</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2651'> <span class="nx">port</span> <span class="o">=</span> <span class="nx">isSSL</span> <span class="o">?</span> <span class="mi">443</span> <span class="o">:</span> <span class="mi">80</span><span class="p">;</span></div><div class='line' id='LC2652'> <span class="p">}</span></div><div class='line' id='LC2653'><br/></div><div class='line' id='LC2654'> <span class="k">this</span><span class="p">.</span><span class="nx">xd</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">!=</span> <span class="nx">global</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">||</span></div><div class='line' id='LC2655'> <span class="nx">port</span> <span class="o">!=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC2656'> <span class="p">}</span></div><div class='line' id='LC2657'><span class="p">}</span></div><div class='line' id='LC2658'><br/></div><div class='line' id='LC2659'><span class="cm">/**</span></div><div class='line' id='LC2660'><span class="cm"> * Inherits from Polling.</span></div><div class='line' id='LC2661'><span class="cm"> */</span></div><div class='line' id='LC2662'><br/></div><div class='line' id='LC2663'><span class="nx">inherit</span><span class="p">(</span><span class="nx">XHR</span><span class="p">,</span> <span class="nx">Polling</span><span class="p">);</span></div><div class='line' id='LC2664'><br/></div><div class='line' id='LC2665'><span class="cm">/**</span></div><div class='line' id='LC2666'><span class="cm"> * XHR supports binary</span></div><div class='line' id='LC2667'><span class="cm"> */</span></div><div class='line' id='LC2668'><br/></div><div class='line' id='LC2669'><span class="nx">XHR</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC2670'><br/></div><div class='line' id='LC2671'><span class="cm">/**</span></div><div class='line' id='LC2672'><span class="cm"> * Creates a request.</span></div><div class='line' id='LC2673'><span class="cm"> *</span></div><div class='line' id='LC2674'><span class="cm"> * @param {String} method</span></div><div class='line' id='LC2675'><span class="cm"> * @api private</span></div><div class='line' id='LC2676'><span class="cm"> */</span></div><div class='line' id='LC2677'><br/></div><div class='line' id='LC2678'><span class="nx">XHR</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">request</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC2679'> <span class="nx">opts</span> <span class="o">=</span> <span class="nx">opts</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC2680'> <span class="nx">opts</span><span class="p">.</span><span class="nx">uri</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">();</span></div><div class='line' id='LC2681'> <span class="nx">opts</span><span class="p">.</span><span class="nx">xd</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">xd</span><span class="p">;</span></div><div class='line' id='LC2682'> <span class="nx">opts</span><span class="p">.</span><span class="nx">agent</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span> <span class="o">||</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC2683'> <span class="nx">opts</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span><span class="p">;</span></div><div class='line' id='LC2684'> <span class="k">return</span> <span class="k">new</span> <span class="nx">Request</span><span class="p">(</span><span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2685'><span class="p">};</span></div><div class='line' id='LC2686'><br/></div><div class='line' id='LC2687'><span class="cm">/**</span></div><div class='line' id='LC2688'><span class="cm"> * Sends data.</span></div><div class='line' id='LC2689'><span class="cm"> *</span></div><div class='line' id='LC2690'><span class="cm"> * @param {String} data to send.</span></div><div class='line' id='LC2691'><span class="cm"> * @param {Function} called upon flush.</span></div><div class='line' id='LC2692'><span class="cm"> * @api private</span></div><div class='line' id='LC2693'><span class="cm"> */</span></div><div class='line' id='LC2694'><br/></div><div class='line' id='LC2695'><span class="nx">XHR</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doWrite</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">fn</span><span class="p">){</span></div><div class='line' id='LC2696'> <span class="kd">var</span> <span class="nx">isBinary</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">data</span> <span class="o">!==</span> <span class="s1">'string'</span> <span class="o">&&</span> <span class="nx">data</span> <span class="o">!==</span> <span class="kc">undefined</span><span class="p">;</span></div><div class='line' id='LC2697'> <span class="kd">var</span> <span class="nx">req</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">request</span><span class="p">({</span> <span class="nx">method</span><span class="o">:</span> <span class="s1">'POST'</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">data</span><span class="p">,</span> <span class="nx">isBinary</span><span class="o">:</span> <span class="nx">isBinary</span> <span class="p">});</span></div><div class='line' id='LC2698'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2699'> <span class="nx">req</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'success'</span><span class="p">,</span> <span class="nx">fn</span><span class="p">);</span></div><div class='line' id='LC2700'> <span class="nx">req</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">){</span></div><div class='line' id='LC2701'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="s1">'xhr post error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2702'> <span class="p">});</span></div><div class='line' id='LC2703'> <span class="k">this</span><span class="p">.</span><span class="nx">sendXhr</span> <span class="o">=</span> <span class="nx">req</span><span class="p">;</span></div><div class='line' id='LC2704'><span class="p">};</span></div><div class='line' id='LC2705'><br/></div><div class='line' id='LC2706'><span class="cm">/**</span></div><div class='line' id='LC2707'><span class="cm"> * Starts a poll cycle.</span></div><div class='line' id='LC2708'><span class="cm"> *</span></div><div class='line' id='LC2709'><span class="cm"> * @api private</span></div><div class='line' id='LC2710'><span class="cm"> */</span></div><div class='line' id='LC2711'><br/></div><div class='line' id='LC2712'><span class="nx">XHR</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doPoll</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2713'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'xhr poll'</span><span class="p">);</span></div><div class='line' id='LC2714'> <span class="kd">var</span> <span class="nx">req</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">request</span><span class="p">();</span></div><div class='line' id='LC2715'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2716'> <span class="nx">req</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'data'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC2717'> <span class="nx">self</span><span class="p">.</span><span class="nx">onData</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC2718'> <span class="p">});</span></div><div class='line' id='LC2719'> <span class="nx">req</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">){</span></div><div class='line' id='LC2720'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="s1">'xhr poll error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2721'> <span class="p">});</span></div><div class='line' id='LC2722'> <span class="k">this</span><span class="p">.</span><span class="nx">pollXhr</span> <span class="o">=</span> <span class="nx">req</span><span class="p">;</span></div><div class='line' id='LC2723'><span class="p">};</span></div><div class='line' id='LC2724'><br/></div><div class='line' id='LC2725'><span class="cm">/**</span></div><div class='line' id='LC2726'><span class="cm"> * Request constructor</span></div><div class='line' id='LC2727'><span class="cm"> *</span></div><div class='line' id='LC2728'><span class="cm"> * @param {Object} options</span></div><div class='line' id='LC2729'><span class="cm"> * @api public</span></div><div class='line' id='LC2730'><span class="cm"> */</span></div><div class='line' id='LC2731'><br/></div><div class='line' id='LC2732'><span class="kd">function</span> <span class="nx">Request</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC2733'> <span class="k">this</span><span class="p">.</span><span class="nx">method</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">method</span> <span class="o">||</span> <span class="s1">'GET'</span><span class="p">;</span></div><div class='line' id='LC2734'> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC2735'> <span class="k">this</span><span class="p">.</span><span class="nx">xd</span> <span class="o">=</span> <span class="o">!!</span><span class="nx">opts</span><span class="p">.</span><span class="nx">xd</span><span class="p">;</span></div><div class='line' id='LC2736'> <span class="k">this</span><span class="p">.</span><span class="nx">async</span> <span class="o">=</span> <span class="kc">false</span> <span class="o">!==</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">async</span><span class="p">;</span></div><div class='line' id='LC2737'> <span class="k">this</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="kc">undefined</span> <span class="o">!=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">data</span> <span class="o">?</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">data</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC2738'> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">agent</span><span class="p">;</span></div><div class='line' id='LC2739'> <span class="k">this</span><span class="p">.</span><span class="nx">create</span><span class="p">(</span><span class="nx">opts</span><span class="p">.</span><span class="nx">isBinary</span><span class="p">,</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">supportsBinary</span><span class="p">);</span></div><div class='line' id='LC2740'><span class="p">}</span></div><div class='line' id='LC2741'><br/></div><div class='line' id='LC2742'><span class="cm">/**</span></div><div class='line' id='LC2743'><span class="cm"> * Mix in `Emitter`.</span></div><div class='line' id='LC2744'><span class="cm"> */</span></div><div class='line' id='LC2745'><br/></div><div class='line' id='LC2746'><span class="nx">Emitter</span><span class="p">(</span><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span></div><div class='line' id='LC2747'><br/></div><div class='line' id='LC2748'><span class="cm">/**</span></div><div class='line' id='LC2749'><span class="cm"> * Creates the XHR object and sends the request.</span></div><div class='line' id='LC2750'><span class="cm"> *</span></div><div class='line' id='LC2751'><span class="cm"> * @api private</span></div><div class='line' id='LC2752'><span class="cm"> */</span></div><div class='line' id='LC2753'><br/></div><div class='line' id='LC2754'><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">create</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">isBinary</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">){</span></div><div class='line' id='LC2755'> <span class="kd">var</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">xhr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="p">({</span> <span class="nx">agent</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span><span class="p">,</span> <span class="nx">xdomain</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">xd</span> <span class="p">});</span></div><div class='line' id='LC2756'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2757'><br/></div><div class='line' id='LC2758'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2759'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'xhr open %s: %s'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">method</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC2760'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">method</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">async</span><span class="p">);</span></div><div class='line' id='LC2761'> <span class="k">if</span> <span class="p">(</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2762'> <span class="c1">// This has to be done after open because Firefox is stupid</span></div><div class='line' id='LC2763'> <span class="c1">// http://stackoverflow.com/questions/13216903/get-binary-data-with-xmlhttprequest-in-a-firefox-extension</span></div><div class='line' id='LC2764'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">responseType</span> <span class="o">=</span> <span class="s1">'arraybuffer'</span><span class="p">;</span></div><div class='line' id='LC2765'> <span class="p">}</span></div><div class='line' id='LC2766'><br/></div><div class='line' id='LC2767'> <span class="k">if</span> <span class="p">(</span><span class="s1">'POST'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">method</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2768'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2769'> <span class="k">if</span> <span class="p">(</span><span class="nx">isBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2770'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">setRequestHeader</span><span class="p">(</span><span class="s1">'Content-type'</span><span class="p">,</span> <span class="s1">'application/octet-stream'</span><span class="p">);</span></div><div class='line' id='LC2771'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2772'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">setRequestHeader</span><span class="p">(</span><span class="s1">'Content-type'</span><span class="p">,</span> <span class="s1">'text/plain;charset=UTF-8'</span><span class="p">);</span></div><div class='line' id='LC2773'> <span class="p">}</span></div><div class='line' id='LC2774'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC2775'> <span class="p">}</span></div><div class='line' id='LC2776'><br/></div><div class='line' id='LC2777'> <span class="c1">// ie6 check</span></div><div class='line' id='LC2778'> <span class="k">if</span> <span class="p">(</span><span class="s1">'withCredentials'</span> <span class="k">in</span> <span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2779'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">withCredentials</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC2780'> <span class="p">}</span></div><div class='line' id='LC2781'><br/></div><div class='line' id='LC2782'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2783'> <span class="kd">var</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC2784'><br/></div><div class='line' id='LC2785'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2786'> <span class="k">if</span> <span class="p">(</span><span class="mi">4</span> <span class="o">!=</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC2787'> <span class="k">if</span> <span class="p">(</span><span class="mi">200</span> <span class="o">==</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">||</span> <span class="mi">1223</span> <span class="o">==</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2788'> <span class="kd">var</span> <span class="nx">contentType</span> <span class="o">=</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">getResponseHeader</span><span class="p">(</span><span class="s1">'Content-Type'</span><span class="p">);</span></div><div class='line' id='LC2789'> <span class="k">if</span> <span class="p">(</span><span class="nx">contentType</span> <span class="o">===</span> <span class="s1">'application/octet-stream'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2790'> <span class="nx">data</span> <span class="o">=</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">response</span><span class="p">;</span></div><div class='line' id='LC2791'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2792'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2793'> <span class="nx">data</span> <span class="o">=</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">;</span></div><div class='line' id='LC2794'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2795'> <span class="nx">data</span> <span class="o">=</span> <span class="s1">'ok'</span><span class="p">;</span></div><div class='line' id='LC2796'> <span class="p">}</span></div><div class='line' id='LC2797'> <span class="p">}</span></div><div class='line' id='LC2798'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC2799'> <span class="c1">// make sure the `error` event handler that's user-set</span></div><div class='line' id='LC2800'> <span class="c1">// does not throw in the same tick and gets caught here</span></div><div class='line' id='LC2801'> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2802'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span><span class="p">);</span></div><div class='line' id='LC2803'> <span class="p">},</span> <span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC2804'> <span class="p">}</span></div><div class='line' id='LC2805'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2806'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC2807'> <span class="p">}</span></div><div class='line' id='LC2808'><br/></div><div class='line' id='LC2809'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">!=</span> <span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2810'> <span class="nx">self</span><span class="p">.</span><span class="nx">onData</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC2811'> <span class="p">}</span></div><div class='line' id='LC2812'> <span class="p">};</span></div><div class='line' id='LC2813'><br/></div><div class='line' id='LC2814'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'xhr data %s'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC2815'> <span class="nx">xhr</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC2816'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2817'> <span class="c1">// Need to defer since .create() is called directly fhrom the constructor</span></div><div class='line' id='LC2818'> <span class="c1">// and thus the 'error' event can only be only bound *after* this exception</span></div><div class='line' id='LC2819'> <span class="c1">// occurs. Therefore, also, we cannot throw here at all.</span></div><div class='line' id='LC2820'> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2821'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC2822'> <span class="p">},</span> <span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC2823'> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC2824'> <span class="p">}</span></div><div class='line' id='LC2825'><br/></div><div class='line' id='LC2826'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nb">document</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2827'> <span class="k">this</span><span class="p">.</span><span class="nx">index</span> <span class="o">=</span> <span class="nx">Request</span><span class="p">.</span><span class="nx">requestsCount</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC2828'> <span class="nx">Request</span><span class="p">.</span><span class="nx">requests</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2829'> <span class="p">}</span></div><div class='line' id='LC2830'><span class="p">};</span></div><div class='line' id='LC2831'><br/></div><div class='line' id='LC2832'><span class="cm">/**</span></div><div class='line' id='LC2833'><span class="cm"> * Called upon successful response.</span></div><div class='line' id='LC2834'><span class="cm"> *</span></div><div class='line' id='LC2835'><span class="cm"> * @api private</span></div><div class='line' id='LC2836'><span class="cm"> */</span></div><div class='line' id='LC2837'><br/></div><div class='line' id='LC2838'><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onSuccess</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2839'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'success'</span><span class="p">);</span></div><div class='line' id='LC2840'> <span class="k">this</span><span class="p">.</span><span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC2841'><span class="p">};</span></div><div class='line' id='LC2842'><br/></div><div class='line' id='LC2843'><span class="cm">/**</span></div><div class='line' id='LC2844'><span class="cm"> * Called if we have data.</span></div><div class='line' id='LC2845'><span class="cm"> *</span></div><div class='line' id='LC2846'><span class="cm"> * @api private</span></div><div class='line' id='LC2847'><span class="cm"> */</span></div><div class='line' id='LC2848'><br/></div><div class='line' id='LC2849'><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onData</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC2850'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'data'</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC2851'> <span class="k">this</span><span class="p">.</span><span class="nx">onSuccess</span><span class="p">();</span></div><div class='line' id='LC2852'><span class="p">};</span></div><div class='line' id='LC2853'><br/></div><div class='line' id='LC2854'><span class="cm">/**</span></div><div class='line' id='LC2855'><span class="cm"> * Called upon error.</span></div><div class='line' id='LC2856'><span class="cm"> *</span></div><div class='line' id='LC2857'><span class="cm"> * @api private</span></div><div class='line' id='LC2858'><span class="cm"> */</span></div><div class='line' id='LC2859'><br/></div><div class='line' id='LC2860'><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onError</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">){</span></div><div class='line' id='LC2861'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'error'</span><span class="p">,</span> <span class="nx">err</span><span class="p">);</span></div><div class='line' id='LC2862'> <span class="k">this</span><span class="p">.</span><span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC2863'><span class="p">};</span></div><div class='line' id='LC2864'><br/></div><div class='line' id='LC2865'><span class="cm">/**</span></div><div class='line' id='LC2866'><span class="cm"> * Cleans up house.</span></div><div class='line' id='LC2867'><span class="cm"> *</span></div><div class='line' id='LC2868'><span class="cm"> * @api private</span></div><div class='line' id='LC2869'><span class="cm"> */</span></div><div class='line' id='LC2870'><br/></div><div class='line' id='LC2871'><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">cleanup</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2872'> <span class="k">if</span> <span class="p">(</span><span class="s1">'undefined'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="k">this</span><span class="p">.</span><span class="nx">xhr</span> <span class="o">||</span> <span class="kc">null</span> <span class="o">===</span> <span class="k">this</span><span class="p">.</span><span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2873'> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC2874'> <span class="p">}</span></div><div class='line' id='LC2875'> <span class="c1">// xmlhttprequest</span></div><div class='line' id='LC2876'> <span class="k">this</span><span class="p">.</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="nx">empty</span><span class="p">;</span></div><div class='line' id='LC2877'><br/></div><div class='line' id='LC2878'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC2879'> <span class="k">this</span><span class="p">.</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC2880'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC2881'><br/></div><div class='line' id='LC2882'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nb">document</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2883'> <span class="k">delete</span> <span class="nx">Request</span><span class="p">.</span><span class="nx">requests</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">index</span><span class="p">];</span></div><div class='line' id='LC2884'> <span class="p">}</span></div><div class='line' id='LC2885'><br/></div><div class='line' id='LC2886'> <span class="k">this</span><span class="p">.</span><span class="nx">xhr</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC2887'><span class="p">};</span></div><div class='line' id='LC2888'><br/></div><div class='line' id='LC2889'><span class="cm">/**</span></div><div class='line' id='LC2890'><span class="cm"> * Aborts the request.</span></div><div class='line' id='LC2891'><span class="cm"> *</span></div><div class='line' id='LC2892'><span class="cm"> * @api public</span></div><div class='line' id='LC2893'><span class="cm"> */</span></div><div class='line' id='LC2894'><br/></div><div class='line' id='LC2895'><span class="nx">Request</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">abort</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2896'> <span class="k">this</span><span class="p">.</span><span class="nx">cleanup</span><span class="p">();</span></div><div class='line' id='LC2897'><span class="p">};</span></div><div class='line' id='LC2898'><br/></div><div class='line' id='LC2899'><span class="cm">/**</span></div><div class='line' id='LC2900'><span class="cm"> * Aborts pending requests when unloading the window. This is needed to prevent</span></div><div class='line' id='LC2901'><span class="cm"> * memory leaks (e.g. when using IE) and to ensure that no spurious error is</span></div><div class='line' id='LC2902'><span class="cm"> * emitted.</span></div><div class='line' id='LC2903'><span class="cm"> */</span></div><div class='line' id='LC2904'><br/></div><div class='line' id='LC2905'><span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nb">document</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2906'> <span class="nx">Request</span><span class="p">.</span><span class="nx">requestsCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC2907'> <span class="nx">Request</span><span class="p">.</span><span class="nx">requests</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC2908'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">attachEvent</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2909'> <span class="nx">global</span><span class="p">.</span><span class="nx">attachEvent</span><span class="p">(</span><span class="s1">'onunload'</span><span class="p">,</span> <span class="nx">unloadHandler</span><span class="p">);</span></div><div class='line' id='LC2910'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2911'> <span class="nx">global</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">'beforeunload'</span><span class="p">,</span> <span class="nx">unloadHandler</span><span class="p">);</span></div><div class='line' id='LC2912'> <span class="p">}</span></div><div class='line' id='LC2913'><span class="p">}</span></div><div class='line' id='LC2914'><br/></div><div class='line' id='LC2915'><span class="kd">function</span> <span class="nx">unloadHandler</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2916'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">Request</span><span class="p">.</span><span class="nx">requests</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2917'> <span class="k">if</span> <span class="p">(</span><span class="nx">Request</span><span class="p">.</span><span class="nx">requests</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC2918'> <span class="nx">Request</span><span class="p">.</span><span class="nx">requests</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC2919'> <span class="p">}</span></div><div class='line' id='LC2920'> <span class="p">}</span></div><div class='line' id='LC2921'><span class="p">}</span></div><div class='line' id='LC2922'><br/></div><div class='line' id='LC2923'><span class="p">},{</span><span class="s2">"./polling"</span><span class="o">:</span><span class="mi">18</span><span class="p">,</span><span class="s2">"component-emitter"</span><span class="o">:</span><span class="mi">8</span><span class="p">,</span><span class="s2">"component-inherit"</span><span class="o">:</span><span class="mi">21</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"xmlhttprequest"</span><span class="o">:</span><span class="mi">20</span><span class="p">}],</span><span class="mi">18</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC2924'><span class="cm">/**</span></div><div class='line' id='LC2925'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC2926'><span class="cm"> */</span></div><div class='line' id='LC2927'><br/></div><div class='line' id='LC2928'><span class="kd">var</span> <span class="nx">Transport</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'../transport'</span><span class="p">);</span></div><div class='line' id='LC2929'><span class="kd">var</span> <span class="nx">parseqs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'parseqs'</span><span class="p">);</span></div><div class='line' id='LC2930'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-parser'</span><span class="p">);</span></div><div class='line' id='LC2931'><span class="kd">var</span> <span class="nx">inherit</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-inherit'</span><span class="p">);</span></div><div class='line' id='LC2932'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'engine.io-client:polling'</span><span class="p">);</span></div><div class='line' id='LC2933'><br/></div><div class='line' id='LC2934'><span class="cm">/**</span></div><div class='line' id='LC2935'><span class="cm"> * Module exports.</span></div><div class='line' id='LC2936'><span class="cm"> */</span></div><div class='line' id='LC2937'><br/></div><div class='line' id='LC2938'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">Polling</span><span class="p">;</span></div><div class='line' id='LC2939'><br/></div><div class='line' id='LC2940'><span class="cm">/**</span></div><div class='line' id='LC2941'><span class="cm"> * Is XHR2 supported?</span></div><div class='line' id='LC2942'><span class="cm"> */</span></div><div class='line' id='LC2943'><br/></div><div class='line' id='LC2944'><span class="kd">var</span> <span class="nx">hasXHR2</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC2945'> <span class="kd">var</span> <span class="nx">XMLHttpRequest</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'xmlhttprequest'</span><span class="p">);</span></div><div class='line' id='LC2946'> <span class="kd">var</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="p">({</span> <span class="nx">agent</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span><span class="p">,</span> <span class="nx">xdomain</span><span class="o">:</span> <span class="kc">false</span> <span class="p">});</span></div><div class='line' id='LC2947'> <span class="k">return</span> <span class="kc">null</span> <span class="o">!=</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">responseType</span><span class="p">;</span></div><div class='line' id='LC2948'><span class="p">})();</span></div><div class='line' id='LC2949'><br/></div><div class='line' id='LC2950'><span class="cm">/**</span></div><div class='line' id='LC2951'><span class="cm"> * Polling interface.</span></div><div class='line' id='LC2952'><span class="cm"> *</span></div><div class='line' id='LC2953'><span class="cm"> * @param {Object} opts</span></div><div class='line' id='LC2954'><span class="cm"> * @api private</span></div><div class='line' id='LC2955'><span class="cm"> */</span></div><div class='line' id='LC2956'><br/></div><div class='line' id='LC2957'><span class="kd">function</span> <span class="nx">Polling</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC2958'> <span class="kd">var</span> <span class="nx">forceBase64</span> <span class="o">=</span> <span class="p">(</span><span class="nx">opts</span> <span class="o">&&</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">forceBase64</span><span class="p">);</span></div><div class='line' id='LC2959'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">hasXHR2</span> <span class="o">||</span> <span class="nx">forceBase64</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC2960'> <span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC2961'> <span class="p">}</span></div><div class='line' id='LC2962'> <span class="nx">Transport</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC2963'><span class="p">}</span></div><div class='line' id='LC2964'><br/></div><div class='line' id='LC2965'><span class="cm">/**</span></div><div class='line' id='LC2966'><span class="cm"> * Inherits from Transport.</span></div><div class='line' id='LC2967'><span class="cm"> */</span></div><div class='line' id='LC2968'><br/></div><div class='line' id='LC2969'><span class="nx">inherit</span><span class="p">(</span><span class="nx">Polling</span><span class="p">,</span> <span class="nx">Transport</span><span class="p">);</span></div><div class='line' id='LC2970'><br/></div><div class='line' id='LC2971'><span class="cm">/**</span></div><div class='line' id='LC2972'><span class="cm"> * Transport name.</span></div><div class='line' id='LC2973'><span class="cm"> */</span></div><div class='line' id='LC2974'><br/></div><div class='line' id='LC2975'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="s1">'polling'</span><span class="p">;</span></div><div class='line' id='LC2976'><br/></div><div class='line' id='LC2977'><span class="cm">/**</span></div><div class='line' id='LC2978'><span class="cm"> * Opens the socket (triggers polling). We write a PING message to determine</span></div><div class='line' id='LC2979'><span class="cm"> * when the transport is open.</span></div><div class='line' id='LC2980'><span class="cm"> *</span></div><div class='line' id='LC2981'><span class="cm"> * @api private</span></div><div class='line' id='LC2982'><span class="cm"> */</span></div><div class='line' id='LC2983'><br/></div><div class='line' id='LC2984'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doOpen</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC2985'> <span class="k">this</span><span class="p">.</span><span class="nx">poll</span><span class="p">();</span></div><div class='line' id='LC2986'><span class="p">};</span></div><div class='line' id='LC2987'><br/></div><div class='line' id='LC2988'><span class="cm">/**</span></div><div class='line' id='LC2989'><span class="cm"> * Pauses polling.</span></div><div class='line' id='LC2990'><span class="cm"> *</span></div><div class='line' id='LC2991'><span class="cm"> * @param {Function} callback upon buffers are flushed and transport is paused</span></div><div class='line' id='LC2992'><span class="cm"> * @api private</span></div><div class='line' id='LC2993'><span class="cm"> */</span></div><div class='line' id='LC2994'><br/></div><div class='line' id='LC2995'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">pause</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">onPause</span><span class="p">){</span></div><div class='line' id='LC2996'> <span class="kd">var</span> <span class="nx">pending</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC2997'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC2998'><br/></div><div class='line' id='LC2999'> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'pausing'</span><span class="p">;</span></div><div class='line' id='LC3000'><br/></div><div class='line' id='LC3001'> <span class="kd">function</span> <span class="nx">pause</span><span class="p">(){</span></div><div class='line' id='LC3002'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'paused'</span><span class="p">);</span></div><div class='line' id='LC3003'> <span class="nx">self</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">=</span> <span class="s1">'paused'</span><span class="p">;</span></div><div class='line' id='LC3004'> <span class="nx">onPause</span><span class="p">();</span></div><div class='line' id='LC3005'> <span class="p">}</span></div><div class='line' id='LC3006'><br/></div><div class='line' id='LC3007'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">polling</span> <span class="o">||</span> <span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">writable</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3008'> <span class="kd">var</span> <span class="nx">total</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC3009'><br/></div><div class='line' id='LC3010'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">polling</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3011'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'we are currently polling - waiting to pause'</span><span class="p">);</span></div><div class='line' id='LC3012'> <span class="nx">total</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC3013'> <span class="k">this</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'pollComplete'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3014'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'pre-pause polling complete'</span><span class="p">);</span></div><div class='line' id='LC3015'> <span class="o">--</span><span class="nx">total</span> <span class="o">||</span> <span class="nx">pause</span><span class="p">();</span></div><div class='line' id='LC3016'> <span class="p">});</span></div><div class='line' id='LC3017'> <span class="p">}</span></div><div class='line' id='LC3018'><br/></div><div class='line' id='LC3019'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">writable</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3020'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'we are currently writing - waiting to pause'</span><span class="p">);</span></div><div class='line' id='LC3021'> <span class="nx">total</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC3022'> <span class="k">this</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'drain'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3023'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'pre-pause writing complete'</span><span class="p">);</span></div><div class='line' id='LC3024'> <span class="o">--</span><span class="nx">total</span> <span class="o">||</span> <span class="nx">pause</span><span class="p">();</span></div><div class='line' id='LC3025'> <span class="p">});</span></div><div class='line' id='LC3026'> <span class="p">}</span></div><div class='line' id='LC3027'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC3028'> <span class="nx">pause</span><span class="p">();</span></div><div class='line' id='LC3029'> <span class="p">}</span></div><div class='line' id='LC3030'><span class="p">};</span></div><div class='line' id='LC3031'><br/></div><div class='line' id='LC3032'><span class="cm">/**</span></div><div class='line' id='LC3033'><span class="cm"> * Starts polling cycle.</span></div><div class='line' id='LC3034'><span class="cm"> *</span></div><div class='line' id='LC3035'><span class="cm"> * @api public</span></div><div class='line' id='LC3036'><span class="cm"> */</span></div><div class='line' id='LC3037'><br/></div><div class='line' id='LC3038'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">poll</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3039'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'polling'</span><span class="p">);</span></div><div class='line' id='LC3040'> <span class="k">this</span><span class="p">.</span><span class="nx">polling</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC3041'> <span class="k">this</span><span class="p">.</span><span class="nx">doPoll</span><span class="p">();</span></div><div class='line' id='LC3042'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'poll'</span><span class="p">);</span></div><div class='line' id='LC3043'><span class="p">};</span></div><div class='line' id='LC3044'><br/></div><div class='line' id='LC3045'><span class="cm">/**</span></div><div class='line' id='LC3046'><span class="cm"> * Overloads onData to detect payloads.</span></div><div class='line' id='LC3047'><span class="cm"> *</span></div><div class='line' id='LC3048'><span class="cm"> * @api private</span></div><div class='line' id='LC3049'><span class="cm"> */</span></div><div class='line' id='LC3050'><br/></div><div class='line' id='LC3051'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onData</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC3052'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3053'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'polling got data %s'</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3054'> <span class="kd">var</span> <span class="nx">callback</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">index</span><span class="p">,</span> <span class="nx">total</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3055'> <span class="c1">// if its the first message we consider the transport open</span></div><div class='line' id='LC3056'> <span class="k">if</span> <span class="p">(</span><span class="s1">'opening'</span> <span class="o">==</span> <span class="nx">self</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3057'> <span class="nx">self</span><span class="p">.</span><span class="nx">onOpen</span><span class="p">();</span></div><div class='line' id='LC3058'> <span class="p">}</span></div><div class='line' id='LC3059'><br/></div><div class='line' id='LC3060'> <span class="c1">// if its a close packet, we close the ongoing requests</span></div><div class='line' id='LC3061'> <span class="k">if</span> <span class="p">(</span><span class="s1">'close'</span> <span class="o">==</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3062'> <span class="nx">self</span><span class="p">.</span><span class="nx">onClose</span><span class="p">();</span></div><div class='line' id='LC3063'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3064'> <span class="p">}</span></div><div class='line' id='LC3065'><br/></div><div class='line' id='LC3066'> <span class="c1">// otherwise bypass onData and handle the message</span></div><div class='line' id='LC3067'> <span class="nx">self</span><span class="p">.</span><span class="nx">onPacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC3068'> <span class="p">};</span></div><div class='line' id='LC3069'><br/></div><div class='line' id='LC3070'> <span class="c1">// decode payload</span></div><div class='line' id='LC3071'> <span class="nx">parser</span><span class="p">.</span><span class="nx">decodePayload</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">socket</span><span class="p">.</span><span class="nx">binaryType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3072'><br/></div><div class='line' id='LC3073'> <span class="c1">// if an event did not trigger closing</span></div><div class='line' id='LC3074'> <span class="k">if</span> <span class="p">(</span><span class="s1">'closed'</span> <span class="o">!=</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3075'> <span class="c1">// if we got data we're not polling</span></div><div class='line' id='LC3076'> <span class="k">this</span><span class="p">.</span><span class="nx">polling</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3077'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'pollComplete'</span><span class="p">);</span></div><div class='line' id='LC3078'><br/></div><div class='line' id='LC3079'> <span class="k">if</span> <span class="p">(</span><span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3080'> <span class="k">this</span><span class="p">.</span><span class="nx">poll</span><span class="p">();</span></div><div class='line' id='LC3081'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC3082'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'ignoring poll - transport state "%s"'</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">);</span></div><div class='line' id='LC3083'> <span class="p">}</span></div><div class='line' id='LC3084'> <span class="p">}</span></div><div class='line' id='LC3085'><span class="p">};</span></div><div class='line' id='LC3086'><br/></div><div class='line' id='LC3087'><span class="cm">/**</span></div><div class='line' id='LC3088'><span class="cm"> * For polling, send a close packet.</span></div><div class='line' id='LC3089'><span class="cm"> *</span></div><div class='line' id='LC3090'><span class="cm"> * @api private</span></div><div class='line' id='LC3091'><span class="cm"> */</span></div><div class='line' id='LC3092'><br/></div><div class='line' id='LC3093'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doClose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3094'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3095'><br/></div><div class='line' id='LC3096'> <span class="kd">function</span> <span class="nx">close</span><span class="p">(){</span></div><div class='line' id='LC3097'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'writing close packet'</span><span class="p">);</span></div><div class='line' id='LC3098'> <span class="nx">self</span><span class="p">.</span><span class="nx">write</span><span class="p">([{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">'close'</span> <span class="p">}]);</span></div><div class='line' id='LC3099'> <span class="p">}</span></div><div class='line' id='LC3100'><br/></div><div class='line' id='LC3101'> <span class="k">if</span> <span class="p">(</span><span class="s1">'open'</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3102'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'transport open - closing'</span><span class="p">);</span></div><div class='line' id='LC3103'> <span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC3104'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC3105'> <span class="c1">// in case we're trying to close while</span></div><div class='line' id='LC3106'> <span class="c1">// handshaking is in progress (GH-164)</span></div><div class='line' id='LC3107'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'transport not open - deferring close'</span><span class="p">);</span></div><div class='line' id='LC3108'> <span class="k">this</span><span class="p">.</span><span class="nx">once</span><span class="p">(</span><span class="s1">'open'</span><span class="p">,</span> <span class="nx">close</span><span class="p">);</span></div><div class='line' id='LC3109'> <span class="p">}</span></div><div class='line' id='LC3110'><span class="p">};</span></div><div class='line' id='LC3111'><br/></div><div class='line' id='LC3112'><span class="cm">/**</span></div><div class='line' id='LC3113'><span class="cm"> * Writes a packets payload.</span></div><div class='line' id='LC3114'><span class="cm"> *</span></div><div class='line' id='LC3115'><span class="cm"> * @param {Array} data packets</span></div><div class='line' id='LC3116'><span class="cm"> * @param {Function} drain callback</span></div><div class='line' id='LC3117'><span class="cm"> * @api private</span></div><div class='line' id='LC3118'><span class="cm"> */</span></div><div class='line' id='LC3119'><br/></div><div class='line' id='LC3120'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">write</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packets</span><span class="p">){</span></div><div class='line' id='LC3121'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3122'> <span class="k">this</span><span class="p">.</span><span class="nx">writable</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3123'> <span class="kd">var</span> <span class="nx">callbackfn</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC3124'> <span class="nx">self</span><span class="p">.</span><span class="nx">writable</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC3125'> <span class="nx">self</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'drain'</span><span class="p">);</span></div><div class='line' id='LC3126'> <span class="p">};</span></div><div class='line' id='LC3127'><br/></div><div class='line' id='LC3128'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3129'> <span class="nx">parser</span><span class="p">.</span><span class="nx">encodePayload</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3130'> <span class="nx">self</span><span class="p">.</span><span class="nx">doWrite</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">callbackfn</span><span class="p">);</span></div><div class='line' id='LC3131'> <span class="p">});</span></div><div class='line' id='LC3132'><span class="p">};</span></div><div class='line' id='LC3133'><br/></div><div class='line' id='LC3134'><span class="cm">/**</span></div><div class='line' id='LC3135'><span class="cm"> * Generates uri for connection.</span></div><div class='line' id='LC3136'><span class="cm"> *</span></div><div class='line' id='LC3137'><span class="cm"> * @api private</span></div><div class='line' id='LC3138'><span class="cm"> */</span></div><div class='line' id='LC3139'><br/></div><div class='line' id='LC3140'><span class="nx">Polling</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">uri</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3141'> <span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC3142'> <span class="kd">var</span> <span class="nx">schema</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">secure</span> <span class="o">?</span> <span class="s1">'https'</span> <span class="o">:</span> <span class="s1">'http'</span><span class="p">;</span></div><div class='line' id='LC3143'> <span class="kd">var</span> <span class="nx">port</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC3144'><br/></div><div class='line' id='LC3145'> <span class="c1">// cache busting is forced</span></div><div class='line' id='LC3146'> <span class="k">if</span> <span class="p">(</span><span class="kc">false</span> <span class="o">!==</span> <span class="k">this</span><span class="p">.</span><span class="nx">timestampRequests</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3147'> <span class="nx">query</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">timestampParam</span><span class="p">]</span> <span class="o">=</span> <span class="o">+</span><span class="k">new</span> <span class="nb">Date</span> <span class="o">+</span> <span class="s1">'-'</span> <span class="o">+</span> <span class="nx">Transport</span><span class="p">.</span><span class="nx">timestamps</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC3148'> <span class="p">}</span></div><div class='line' id='LC3149'><br/></div><div class='line' id='LC3150'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">query</span><span class="p">.</span><span class="nx">sid</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3151'> <span class="nx">query</span><span class="p">.</span><span class="nx">b64</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC3152'> <span class="p">}</span></div><div class='line' id='LC3153'><br/></div><div class='line' id='LC3154'> <span class="nx">query</span> <span class="o">=</span> <span class="nx">parseqs</span><span class="p">.</span><span class="nx">encode</span><span class="p">(</span><span class="nx">query</span><span class="p">);</span></div><div class='line' id='LC3155'><br/></div><div class='line' id='LC3156'> <span class="c1">// avoid port if default for schema</span></div><div class='line' id='LC3157'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">&&</span> <span class="p">((</span><span class="s1">'https'</span> <span class="o">==</span> <span class="nx">schema</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">!=</span> <span class="mi">443</span><span class="p">)</span> <span class="o">||</span></div><div class='line' id='LC3158'> <span class="p">(</span><span class="s1">'http'</span> <span class="o">==</span> <span class="nx">schema</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">!=</span> <span class="mi">80</span><span class="p">)))</span> <span class="p">{</span></div><div class='line' id='LC3159'> <span class="nx">port</span> <span class="o">=</span> <span class="s1">':'</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC3160'> <span class="p">}</span></div><div class='line' id='LC3161'><br/></div><div class='line' id='LC3162'> <span class="c1">// prepend ? to query</span></div><div class='line' id='LC3163'> <span class="k">if</span> <span class="p">(</span><span class="nx">query</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3164'> <span class="nx">query</span> <span class="o">=</span> <span class="s1">'?'</span> <span class="o">+</span> <span class="nx">query</span><span class="p">;</span></div><div class='line' id='LC3165'> <span class="p">}</span></div><div class='line' id='LC3166'><br/></div><div class='line' id='LC3167'> <span class="k">return</span> <span class="nx">schema</span> <span class="o">+</span> <span class="s1">'://'</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">+</span> <span class="nx">port</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">path</span> <span class="o">+</span> <span class="nx">query</span><span class="p">;</span></div><div class='line' id='LC3168'><span class="p">};</span></div><div class='line' id='LC3169'><br/></div><div class='line' id='LC3170'><span class="p">},{</span><span class="s2">"../transport"</span><span class="o">:</span><span class="mi">14</span><span class="p">,</span><span class="s2">"component-inherit"</span><span class="o">:</span><span class="mi">21</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"engine.io-parser"</span><span class="o">:</span><span class="mi">22</span><span class="p">,</span><span class="s2">"parseqs"</span><span class="o">:</span><span class="mi">30</span><span class="p">,</span><span class="s2">"xmlhttprequest"</span><span class="o">:</span><span class="mi">20</span><span class="p">}],</span><span class="mi">19</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3171'><span class="cm">/**</span></div><div class='line' id='LC3172'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC3173'><span class="cm"> */</span></div><div class='line' id='LC3174'><br/></div><div class='line' id='LC3175'><span class="kd">var</span> <span class="nx">Transport</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'../transport'</span><span class="p">);</span></div><div class='line' id='LC3176'><span class="kd">var</span> <span class="nx">parser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'engine.io-parser'</span><span class="p">);</span></div><div class='line' id='LC3177'><span class="kd">var</span> <span class="nx">parseqs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'parseqs'</span><span class="p">);</span></div><div class='line' id='LC3178'><span class="kd">var</span> <span class="nx">inherit</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'component-inherit'</span><span class="p">);</span></div><div class='line' id='LC3179'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'engine.io-client:websocket'</span><span class="p">);</span></div><div class='line' id='LC3180'><br/></div><div class='line' id='LC3181'><span class="cm">/**</span></div><div class='line' id='LC3182'><span class="cm"> * `ws` exposes a WebSocket-compatible interface in</span></div><div class='line' id='LC3183'><span class="cm"> * Node, or the `WebSocket` or `MozWebSocket` globals</span></div><div class='line' id='LC3184'><span class="cm"> * in the browser.</span></div><div class='line' id='LC3185'><span class="cm"> */</span></div><div class='line' id='LC3186'><br/></div><div class='line' id='LC3187'><span class="kd">var</span> <span class="nx">WebSocket</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'ws'</span><span class="p">);</span></div><div class='line' id='LC3188'><br/></div><div class='line' id='LC3189'><span class="cm">/**</span></div><div class='line' id='LC3190'><span class="cm"> * Module exports.</span></div><div class='line' id='LC3191'><span class="cm"> */</span></div><div class='line' id='LC3192'><br/></div><div class='line' id='LC3193'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">WS</span><span class="p">;</span></div><div class='line' id='LC3194'><br/></div><div class='line' id='LC3195'><span class="cm">/**</span></div><div class='line' id='LC3196'><span class="cm"> * WebSocket transport constructor.</span></div><div class='line' id='LC3197'><span class="cm"> *</span></div><div class='line' id='LC3198'><span class="cm"> * @api {Object} connection options</span></div><div class='line' id='LC3199'><span class="cm"> * @api public</span></div><div class='line' id='LC3200'><span class="cm"> */</span></div><div class='line' id='LC3201'><br/></div><div class='line' id='LC3202'><span class="kd">function</span> <span class="nx">WS</span><span class="p">(</span><span class="nx">opts</span><span class="p">){</span></div><div class='line' id='LC3203'> <span class="kd">var</span> <span class="nx">forceBase64</span> <span class="o">=</span> <span class="p">(</span><span class="nx">opts</span> <span class="o">&&</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">forceBase64</span><span class="p">);</span></div><div class='line' id='LC3204'> <span class="k">if</span> <span class="p">(</span><span class="nx">forceBase64</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3205'> <span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3206'> <span class="p">}</span></div><div class='line' id='LC3207'> <span class="nx">Transport</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC3208'><span class="p">}</span></div><div class='line' id='LC3209'><br/></div><div class='line' id='LC3210'><span class="cm">/**</span></div><div class='line' id='LC3211'><span class="cm"> * Inherits from Transport.</span></div><div class='line' id='LC3212'><span class="cm"> */</span></div><div class='line' id='LC3213'><br/></div><div class='line' id='LC3214'><span class="nx">inherit</span><span class="p">(</span><span class="nx">WS</span><span class="p">,</span> <span class="nx">Transport</span><span class="p">);</span></div><div class='line' id='LC3215'><br/></div><div class='line' id='LC3216'><span class="cm">/**</span></div><div class='line' id='LC3217'><span class="cm"> * Transport name.</span></div><div class='line' id='LC3218'><span class="cm"> *</span></div><div class='line' id='LC3219'><span class="cm"> * @api public</span></div><div class='line' id='LC3220'><span class="cm"> */</span></div><div class='line' id='LC3221'><br/></div><div class='line' id='LC3222'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">name</span> <span class="o">=</span> <span class="s1">'websocket'</span><span class="p">;</span></div><div class='line' id='LC3223'><br/></div><div class='line' id='LC3224'><span class="cm">/*</span></div><div class='line' id='LC3225'><span class="cm"> * WebSockets support binary</span></div><div class='line' id='LC3226'><span class="cm"> */</span></div><div class='line' id='LC3227'><br/></div><div class='line' id='LC3228'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC3229'><br/></div><div class='line' id='LC3230'><span class="cm">/**</span></div><div class='line' id='LC3231'><span class="cm"> * Opens socket.</span></div><div class='line' id='LC3232'><span class="cm"> *</span></div><div class='line' id='LC3233'><span class="cm"> * @api private</span></div><div class='line' id='LC3234'><span class="cm"> */</span></div><div class='line' id='LC3235'><br/></div><div class='line' id='LC3236'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doOpen</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3237'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">check</span><span class="p">())</span> <span class="p">{</span></div><div class='line' id='LC3238'> <span class="c1">// let probe timeout</span></div><div class='line' id='LC3239'> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC3240'> <span class="p">}</span></div><div class='line' id='LC3241'><br/></div><div class='line' id='LC3242'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3243'> <span class="kd">var</span> <span class="nx">uri</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">uri</span><span class="p">();</span></div><div class='line' id='LC3244'> <span class="kd">var</span> <span class="nx">protocols</span> <span class="o">=</span> <span class="k">void</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC3245'> <span class="kd">var</span> <span class="nx">opts</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">agent</span><span class="o">:</span> <span class="k">this</span><span class="p">.</span><span class="nx">agent</span> <span class="p">};</span></div><div class='line' id='LC3246'><br/></div><div class='line' id='LC3247'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">WebSocket</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">protocols</span><span class="p">,</span> <span class="nx">opts</span><span class="p">);</span></div><div class='line' id='LC3248'><br/></div><div class='line' id='LC3249'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">binaryType</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3250'> <span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3251'> <span class="p">}</span></div><div class='line' id='LC3252'><br/></div><div class='line' id='LC3253'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">binaryType</span> <span class="o">=</span> <span class="s1">'arraybuffer'</span><span class="p">;</span></div><div class='line' id='LC3254'> <span class="k">this</span><span class="p">.</span><span class="nx">addEventListeners</span><span class="p">();</span></div><div class='line' id='LC3255'><span class="p">};</span></div><div class='line' id='LC3256'><br/></div><div class='line' id='LC3257'><span class="cm">/**</span></div><div class='line' id='LC3258'><span class="cm"> * Adds event listeners to the socket</span></div><div class='line' id='LC3259'><span class="cm"> *</span></div><div class='line' id='LC3260'><span class="cm"> * @api private</span></div><div class='line' id='LC3261'><span class="cm"> */</span></div><div class='line' id='LC3262'><br/></div><div class='line' id='LC3263'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">addEventListeners</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3264'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3265'><br/></div><div class='line' id='LC3266'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">onopen</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3267'> <span class="nx">self</span><span class="p">.</span><span class="nx">onOpen</span><span class="p">();</span></div><div class='line' id='LC3268'> <span class="p">};</span></div><div class='line' id='LC3269'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">onclose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3270'> <span class="nx">self</span><span class="p">.</span><span class="nx">onClose</span><span class="p">();</span></div><div class='line' id='LC3271'> <span class="p">};</span></div><div class='line' id='LC3272'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">onmessage</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">ev</span><span class="p">){</span></div><div class='line' id='LC3273'> <span class="nx">self</span><span class="p">.</span><span class="nx">onData</span><span class="p">(</span><span class="nx">ev</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3274'> <span class="p">};</span></div><div class='line' id='LC3275'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">onerror</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span></div><div class='line' id='LC3276'> <span class="nx">self</span><span class="p">.</span><span class="nx">onError</span><span class="p">(</span><span class="s1">'websocket error'</span><span class="p">,</span> <span class="nx">e</span><span class="p">);</span></div><div class='line' id='LC3277'> <span class="p">};</span></div><div class='line' id='LC3278'><span class="p">};</span></div><div class='line' id='LC3279'><br/></div><div class='line' id='LC3280'><span class="cm">/**</span></div><div class='line' id='LC3281'><span class="cm"> * Override `onData` to use a timer on iOS.</span></div><div class='line' id='LC3282'><span class="cm"> * See: https://gist.github.com/mloughran/2052006</span></div><div class='line' id='LC3283'><span class="cm"> *</span></div><div class='line' id='LC3284'><span class="cm"> * @api private</span></div><div class='line' id='LC3285'><span class="cm"> */</span></div><div class='line' id='LC3286'><br/></div><div class='line' id='LC3287'><span class="k">if</span> <span class="p">(</span><span class="s1">'undefined'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">navigator</span></div><div class='line' id='LC3288'> <span class="o">&&</span> <span class="sr">/iPad|iPhone|iPod/i</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">userAgent</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC3289'> <span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onData</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC3290'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3291'> <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3292'> <span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onData</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">self</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3293'> <span class="p">},</span> <span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC3294'> <span class="p">};</span></div><div class='line' id='LC3295'><span class="p">}</span></div><div class='line' id='LC3296'><br/></div><div class='line' id='LC3297'><span class="cm">/**</span></div><div class='line' id='LC3298'><span class="cm"> * Writes data to socket.</span></div><div class='line' id='LC3299'><span class="cm"> *</span></div><div class='line' id='LC3300'><span class="cm"> * @param {Array} array of packets.</span></div><div class='line' id='LC3301'><span class="cm"> * @api private</span></div><div class='line' id='LC3302'><span class="cm"> */</span></div><div class='line' id='LC3303'><br/></div><div class='line' id='LC3304'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">write</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packets</span><span class="p">){</span></div><div class='line' id='LC3305'> <span class="kd">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span></div><div class='line' id='LC3306'> <span class="k">this</span><span class="p">.</span><span class="nx">writable</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3307'> <span class="c1">// encodePacket efficient as it uses WS framing</span></div><div class='line' id='LC3308'> <span class="c1">// no need for encodePayload</span></div><div class='line' id='LC3309'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">packets</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3310'> <span class="nx">parser</span><span class="p">.</span><span class="nx">encodePacket</span><span class="p">(</span><span class="nx">packets</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3311'> <span class="c1">//Sometimes the websocket has already been closed but the browser didn't</span></div><div class='line' id='LC3312'> <span class="c1">//have a chance of informing us about it yet, in that case send will</span></div><div class='line' id='LC3313'> <span class="c1">//throw an error</span></div><div class='line' id='LC3314'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC3315'> <span class="nx">self</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3316'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">){</span></div><div class='line' id='LC3317'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'websocket closed before onclose event'</span><span class="p">);</span></div><div class='line' id='LC3318'> <span class="p">}</span></div><div class='line' id='LC3319'> <span class="p">});</span></div><div class='line' id='LC3320'> <span class="p">}</span></div><div class='line' id='LC3321'><br/></div><div class='line' id='LC3322'> <span class="kd">function</span> <span class="nx">ondrain</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC3323'> <span class="nx">self</span><span class="p">.</span><span class="nx">writable</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC3324'> <span class="nx">self</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'drain'</span><span class="p">);</span></div><div class='line' id='LC3325'> <span class="p">}</span></div><div class='line' id='LC3326'> <span class="c1">// fake drain</span></div><div class='line' id='LC3327'> <span class="c1">// defer to next tick to allow Socket to clear writeBuffer</span></div><div class='line' id='LC3328'> <span class="nx">setTimeout</span><span class="p">(</span><span class="nx">ondrain</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC3329'><span class="p">};</span></div><div class='line' id='LC3330'><br/></div><div class='line' id='LC3331'><span class="cm">/**</span></div><div class='line' id='LC3332'><span class="cm"> * Called upon close</span></div><div class='line' id='LC3333'><span class="cm"> *</span></div><div class='line' id='LC3334'><span class="cm"> * @api private</span></div><div class='line' id='LC3335'><span class="cm"> */</span></div><div class='line' id='LC3336'><br/></div><div class='line' id='LC3337'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onClose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3338'> <span class="nx">Transport</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">onClose</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">);</span></div><div class='line' id='LC3339'><span class="p">};</span></div><div class='line' id='LC3340'><br/></div><div class='line' id='LC3341'><span class="cm">/**</span></div><div class='line' id='LC3342'><span class="cm"> * Closes socket.</span></div><div class='line' id='LC3343'><span class="cm"> *</span></div><div class='line' id='LC3344'><span class="cm"> * @api private</span></div><div class='line' id='LC3345'><span class="cm"> */</span></div><div class='line' id='LC3346'><br/></div><div class='line' id='LC3347'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">doClose</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3348'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span> <span class="o">!==</span> <span class="s1">'undefined'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3349'> <span class="k">this</span><span class="p">.</span><span class="nx">ws</span><span class="p">.</span><span class="nx">close</span><span class="p">();</span></div><div class='line' id='LC3350'> <span class="p">}</span></div><div class='line' id='LC3351'><span class="p">};</span></div><div class='line' id='LC3352'><br/></div><div class='line' id='LC3353'><span class="cm">/**</span></div><div class='line' id='LC3354'><span class="cm"> * Generates uri for connection.</span></div><div class='line' id='LC3355'><span class="cm"> *</span></div><div class='line' id='LC3356'><span class="cm"> * @api private</span></div><div class='line' id='LC3357'><span class="cm"> */</span></div><div class='line' id='LC3358'><br/></div><div class='line' id='LC3359'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">uri</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3360'> <span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">query</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC3361'> <span class="kd">var</span> <span class="nx">schema</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">secure</span> <span class="o">?</span> <span class="s1">'wss'</span> <span class="o">:</span> <span class="s1">'ws'</span><span class="p">;</span></div><div class='line' id='LC3362'> <span class="kd">var</span> <span class="nx">port</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC3363'><br/></div><div class='line' id='LC3364'> <span class="c1">// avoid port if default for schema</span></div><div class='line' id='LC3365'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">&&</span> <span class="p">((</span><span class="s1">'wss'</span> <span class="o">==</span> <span class="nx">schema</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">!=</span> <span class="mi">443</span><span class="p">)</span></div><div class='line' id='LC3366'> <span class="o">||</span> <span class="p">(</span><span class="s1">'ws'</span> <span class="o">==</span> <span class="nx">schema</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span> <span class="o">!=</span> <span class="mi">80</span><span class="p">)))</span> <span class="p">{</span></div><div class='line' id='LC3367'> <span class="nx">port</span> <span class="o">=</span> <span class="s1">':'</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">port</span><span class="p">;</span></div><div class='line' id='LC3368'> <span class="p">}</span></div><div class='line' id='LC3369'><br/></div><div class='line' id='LC3370'> <span class="c1">// append timestamp to URI</span></div><div class='line' id='LC3371'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">timestampRequests</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3372'> <span class="nx">query</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">timestampParam</span><span class="p">]</span> <span class="o">=</span> <span class="o">+</span><span class="k">new</span> <span class="nb">Date</span><span class="p">;</span></div><div class='line' id='LC3373'> <span class="p">}</span></div><div class='line' id='LC3374'><br/></div><div class='line' id='LC3375'> <span class="c1">// communicate binary support capabilities</span></div><div class='line' id='LC3376'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3377'> <span class="nx">query</span><span class="p">.</span><span class="nx">b64</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC3378'> <span class="p">}</span></div><div class='line' id='LC3379'><br/></div><div class='line' id='LC3380'> <span class="nx">query</span> <span class="o">=</span> <span class="nx">parseqs</span><span class="p">.</span><span class="nx">encode</span><span class="p">(</span><span class="nx">query</span><span class="p">);</span></div><div class='line' id='LC3381'><br/></div><div class='line' id='LC3382'> <span class="c1">// prepend ? to query</span></div><div class='line' id='LC3383'> <span class="k">if</span> <span class="p">(</span><span class="nx">query</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3384'> <span class="nx">query</span> <span class="o">=</span> <span class="s1">'?'</span> <span class="o">+</span> <span class="nx">query</span><span class="p">;</span></div><div class='line' id='LC3385'> <span class="p">}</span></div><div class='line' id='LC3386'><br/></div><div class='line' id='LC3387'> <span class="k">return</span> <span class="nx">schema</span> <span class="o">+</span> <span class="s1">'://'</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">hostname</span> <span class="o">+</span> <span class="nx">port</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">path</span> <span class="o">+</span> <span class="nx">query</span><span class="p">;</span></div><div class='line' id='LC3388'><span class="p">};</span></div><div class='line' id='LC3389'><br/></div><div class='line' id='LC3390'><span class="cm">/**</span></div><div class='line' id='LC3391'><span class="cm"> * Feature detection for WebSocket.</span></div><div class='line' id='LC3392'><span class="cm"> *</span></div><div class='line' id='LC3393'><span class="cm"> * @return {Boolean} whether this transport is available.</span></div><div class='line' id='LC3394'><span class="cm"> * @api public</span></div><div class='line' id='LC3395'><span class="cm"> */</span></div><div class='line' id='LC3396'><br/></div><div class='line' id='LC3397'><span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">check</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){</span></div><div class='line' id='LC3398'> <span class="k">return</span> <span class="o">!!</span><span class="nx">WebSocket</span> <span class="o">&&</span> <span class="o">!</span><span class="p">(</span><span class="s1">'__initialize'</span> <span class="k">in</span> <span class="nx">WebSocket</span> <span class="o">&&</span> <span class="k">this</span><span class="p">.</span><span class="nx">name</span> <span class="o">===</span> <span class="nx">WS</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">name</span><span class="p">);</span></div><div class='line' id='LC3399'><span class="p">};</span></div><div class='line' id='LC3400'><br/></div><div class='line' id='LC3401'><span class="p">},{</span><span class="s2">"../transport"</span><span class="o">:</span><span class="mi">14</span><span class="p">,</span><span class="s2">"component-inherit"</span><span class="o">:</span><span class="mi">21</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"engine.io-parser"</span><span class="o">:</span><span class="mi">22</span><span class="p">,</span><span class="s2">"parseqs"</span><span class="o">:</span><span class="mi">30</span><span class="p">,</span><span class="s2">"ws"</span><span class="o">:</span><span class="mi">31</span><span class="p">}],</span><span class="mi">20</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3402'><span class="c1">// browser shim for xmlhttprequest module</span></div><div class='line' id='LC3403'><span class="kd">var</span> <span class="nx">hasCORS</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'has-cors'</span><span class="p">);</span></div><div class='line' id='LC3404'><br/></div><div class='line' id='LC3405'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">opts</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3406'> <span class="kd">var</span> <span class="nx">xdomain</span> <span class="o">=</span> <span class="nx">opts</span><span class="p">.</span><span class="nx">xdomain</span><span class="p">;</span></div><div class='line' id='LC3407'><br/></div><div class='line' id='LC3408'> <span class="c1">// XMLHttpRequest can be disabled on IE</span></div><div class='line' id='LC3409'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC3410'> <span class="k">if</span> <span class="p">(</span><span class="s1">'undefined'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">XMLHttpRequest</span> <span class="o">&&</span> <span class="p">(</span><span class="o">!</span><span class="nx">xdomain</span> <span class="o">||</span> <span class="nx">hasCORS</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC3411'> <span class="k">return</span> <span class="k">new</span> <span class="nx">XMLHttpRequest</span><span class="p">();</span></div><div class='line' id='LC3412'> <span class="p">}</span></div><div class='line' id='LC3413'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span></div><div class='line' id='LC3414'><br/></div><div class='line' id='LC3415'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">xdomain</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3416'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC3417'> <span class="k">return</span> <span class="k">new</span> <span class="nx">ActiveXObject</span><span class="p">(</span><span class="s1">'Microsoft.XMLHTTP'</span><span class="p">);</span></div><div class='line' id='LC3418'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span> <span class="p">}</span></div><div class='line' id='LC3419'> <span class="p">}</span></div><div class='line' id='LC3420'><span class="p">}</span></div><div class='line' id='LC3421'><br/></div><div class='line' id='LC3422'><span class="p">},{</span><span class="s2">"has-cors"</span><span class="o">:</span><span class="mi">34</span><span class="p">}],</span><span class="mi">21</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3423'><br/></div><div class='line' id='LC3424'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">){</span></div><div class='line' id='LC3425'> <span class="kd">var</span> <span class="nx">fn</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(){};</span></div><div class='line' id='LC3426'> <span class="nx">fn</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="nx">b</span><span class="p">.</span><span class="nx">prototype</span><span class="p">;</span></div><div class='line' id='LC3427'> <span class="nx">a</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">fn</span><span class="p">;</span></div><div class='line' id='LC3428'> <span class="nx">a</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">=</span> <span class="nx">a</span><span class="p">;</span></div><div class='line' id='LC3429'><span class="p">};</span></div><div class='line' id='LC3430'><span class="p">},{}],</span><span class="mi">22</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3431'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC3432'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC3433'><span class="cm"> */</span></div><div class='line' id='LC3434'><br/></div><div class='line' id='LC3435'><span class="kd">var</span> <span class="nx">keys</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./keys'</span><span class="p">);</span></div><div class='line' id='LC3436'><span class="kd">var</span> <span class="nx">sliceBuffer</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'arraybuffer.slice'</span><span class="p">);</span></div><div class='line' id='LC3437'><span class="kd">var</span> <span class="nx">base64encoder</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'base64-arraybuffer'</span><span class="p">);</span></div><div class='line' id='LC3438'><span class="kd">var</span> <span class="nx">after</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'after'</span><span class="p">);</span></div><div class='line' id='LC3439'><span class="kd">var</span> <span class="nx">utf8</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'utf8'</span><span class="p">);</span></div><div class='line' id='LC3440'><br/></div><div class='line' id='LC3441'><span class="cm">/**</span></div><div class='line' id='LC3442'><span class="cm"> * Check if we are running an android browser. That requires us to use</span></div><div class='line' id='LC3443'><span class="cm"> * ArrayBuffer with polling transports...</span></div><div class='line' id='LC3444'><span class="cm"> *</span></div><div class='line' id='LC3445'><span class="cm"> * http://ghinda.net/jpeg-blob-ajax-android/</span></div><div class='line' id='LC3446'><span class="cm"> */</span></div><div class='line' id='LC3447'><br/></div><div class='line' id='LC3448'><span class="kd">var</span> <span class="nx">isAndroid</span> <span class="o">=</span> <span class="nx">navigator</span><span class="p">.</span><span class="nx">userAgent</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="sr">/Android/i</span><span class="p">);</span></div><div class='line' id='LC3449'><br/></div><div class='line' id='LC3450'><span class="cm">/**</span></div><div class='line' id='LC3451'><span class="cm"> * Current protocol version.</span></div><div class='line' id='LC3452'><span class="cm"> */</span></div><div class='line' id='LC3453'><br/></div><div class='line' id='LC3454'><span class="nx">exports</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span></div><div class='line' id='LC3455'><br/></div><div class='line' id='LC3456'><span class="cm">/**</span></div><div class='line' id='LC3457'><span class="cm"> * Packet types.</span></div><div class='line' id='LC3458'><span class="cm"> */</span></div><div class='line' id='LC3459'><br/></div><div class='line' id='LC3460'><span class="kd">var</span> <span class="nx">packets</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">packets</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC3461'> <span class="nx">open</span><span class="o">:</span> <span class="mi">0</span> <span class="c1">// non-ws</span></div><div class='line' id='LC3462'> <span class="p">,</span> <span class="nx">close</span><span class="o">:</span> <span class="mi">1</span> <span class="c1">// non-ws</span></div><div class='line' id='LC3463'> <span class="p">,</span> <span class="nx">ping</span><span class="o">:</span> <span class="mi">2</span></div><div class='line' id='LC3464'> <span class="p">,</span> <span class="nx">pong</span><span class="o">:</span> <span class="mi">3</span></div><div class='line' id='LC3465'> <span class="p">,</span> <span class="nx">message</span><span class="o">:</span> <span class="mi">4</span></div><div class='line' id='LC3466'> <span class="p">,</span> <span class="nx">upgrade</span><span class="o">:</span> <span class="mi">5</span></div><div class='line' id='LC3467'> <span class="p">,</span> <span class="nx">noop</span><span class="o">:</span> <span class="mi">6</span></div><div class='line' id='LC3468'><span class="p">};</span></div><div class='line' id='LC3469'><br/></div><div class='line' id='LC3470'><span class="kd">var</span> <span class="nx">packetslist</span> <span class="o">=</span> <span class="nx">keys</span><span class="p">(</span><span class="nx">packets</span><span class="p">);</span></div><div class='line' id='LC3471'><br/></div><div class='line' id='LC3472'><span class="cm">/**</span></div><div class='line' id='LC3473'><span class="cm"> * Premade error packet.</span></div><div class='line' id='LC3474'><span class="cm"> */</span></div><div class='line' id='LC3475'><br/></div><div class='line' id='LC3476'><span class="kd">var</span> <span class="nx">err</span> <span class="o">=</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">'error'</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="s1">'parser error'</span> <span class="p">};</span></div><div class='line' id='LC3477'><br/></div><div class='line' id='LC3478'><span class="cm">/**</span></div><div class='line' id='LC3479'><span class="cm"> * Create a blob api even for blob builder when vendor prefixes exist</span></div><div class='line' id='LC3480'><span class="cm"> */</span></div><div class='line' id='LC3481'><br/></div><div class='line' id='LC3482'><span class="kd">var</span> <span class="nx">Blob</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'blob'</span><span class="p">);</span></div><div class='line' id='LC3483'><br/></div><div class='line' id='LC3484'><span class="cm">/**</span></div><div class='line' id='LC3485'><span class="cm"> * Encodes a packet.</span></div><div class='line' id='LC3486'><span class="cm"> *</span></div><div class='line' id='LC3487'><span class="cm"> * <packet type id> [ <data> ]</span></div><div class='line' id='LC3488'><span class="cm"> *</span></div><div class='line' id='LC3489'><span class="cm"> * Example:</span></div><div class='line' id='LC3490'><span class="cm"> *</span></div><div class='line' id='LC3491'><span class="cm"> * 5hello world</span></div><div class='line' id='LC3492'><span class="cm"> * 3</span></div><div class='line' id='LC3493'><span class="cm"> * 4</span></div><div class='line' id='LC3494'><span class="cm"> *</span></div><div class='line' id='LC3495'><span class="cm"> * Binary is encoded in an identical principle</span></div><div class='line' id='LC3496'><span class="cm"> *</span></div><div class='line' id='LC3497'><span class="cm"> * @api private</span></div><div class='line' id='LC3498'><span class="cm"> */</span></div><div class='line' id='LC3499'><br/></div><div class='line' id='LC3500'><span class="nx">exports</span><span class="p">.</span><span class="nx">encodePacket</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3501'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">supportsBinary</span> <span class="o">==</span> <span class="s1">'function'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3502'> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">supportsBinary</span><span class="p">;</span></div><div class='line' id='LC3503'> <span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC3504'> <span class="p">}</span></div><div class='line' id='LC3505'><br/></div><div class='line' id='LC3506'> <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span></div><div class='line' id='LC3507'> <span class="o">?</span> <span class="kc">undefined</span></div><div class='line' id='LC3508'> <span class="o">:</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">.</span><span class="nx">buffer</span> <span class="o">||</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC3509'><br/></div><div class='line' id='LC3510'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">ArrayBuffer</span> <span class="o">&&</span> <span class="nx">data</span> <span class="k">instanceof</span> <span class="nx">ArrayBuffer</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3511'> <span class="k">return</span> <span class="nx">encodeArrayBuffer</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3512'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">Blob</span> <span class="o">&&</span> <span class="nx">data</span> <span class="k">instanceof</span> <span class="nx">global</span><span class="p">.</span><span class="nx">Blob</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3513'> <span class="k">return</span> <span class="nx">encodeBlob</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3514'> <span class="p">}</span></div><div class='line' id='LC3515'><br/></div><div class='line' id='LC3516'> <span class="c1">// Sending data as a utf-8 string</span></div><div class='line' id='LC3517'> <span class="kd">var</span> <span class="nx">encoded</span> <span class="o">=</span> <span class="nx">packets</span><span class="p">[</span><span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">];</span></div><div class='line' id='LC3518'><br/></div><div class='line' id='LC3519'> <span class="c1">// data fragment is optional</span></div><div class='line' id='LC3520'> <span class="k">if</span> <span class="p">(</span><span class="kc">undefined</span> <span class="o">!==</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3521'> <span class="nx">encoded</span> <span class="o">+=</span> <span class="nx">utf8</span><span class="p">.</span><span class="nx">encode</span><span class="p">(</span><span class="nb">String</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">));</span></div><div class='line' id='LC3522'> <span class="p">}</span></div><div class='line' id='LC3523'><br/></div><div class='line' id='LC3524'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="s1">''</span> <span class="o">+</span> <span class="nx">encoded</span><span class="p">);</span></div><div class='line' id='LC3525'><br/></div><div class='line' id='LC3526'><span class="p">};</span></div><div class='line' id='LC3527'><br/></div><div class='line' id='LC3528'><span class="cm">/**</span></div><div class='line' id='LC3529'><span class="cm"> * Encode packet helpers for binary types</span></div><div class='line' id='LC3530'><span class="cm"> */</span></div><div class='line' id='LC3531'><br/></div><div class='line' id='LC3532'><span class="kd">function</span> <span class="nx">encodeArrayBuffer</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3533'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3534'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodeBase64Packet</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3535'> <span class="p">}</span></div><div class='line' id='LC3536'><br/></div><div class='line' id='LC3537'> <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC3538'> <span class="kd">var</span> <span class="nx">contentArray</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3539'> <span class="kd">var</span> <span class="nx">resultBuffer</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="nx">data</span><span class="p">.</span><span class="nx">byteLength</span><span class="p">);</span></div><div class='line' id='LC3540'><br/></div><div class='line' id='LC3541'> <span class="nx">resultBuffer</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nx">packets</span><span class="p">[</span><span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">];</span></div><div class='line' id='LC3542'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">contentArray</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3543'> <span class="nx">resultBuffer</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="nx">contentArray</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC3544'> <span class="p">}</span></div><div class='line' id='LC3545'><br/></div><div class='line' id='LC3546'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">resultBuffer</span><span class="p">.</span><span class="nx">buffer</span><span class="p">);</span></div><div class='line' id='LC3547'><span class="p">}</span></div><div class='line' id='LC3548'><br/></div><div class='line' id='LC3549'><span class="kd">function</span> <span class="nx">encodeBlobAsArrayBuffer</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3550'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3551'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodeBase64Packet</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3552'> <span class="p">}</span></div><div class='line' id='LC3553'><br/></div><div class='line' id='LC3554'> <span class="kd">var</span> <span class="nx">fr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">FileReader</span><span class="p">();</span></div><div class='line' id='LC3555'> <span class="nx">fr</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC3556'> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">fr</span><span class="p">.</span><span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC3557'> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodePacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3558'> <span class="p">};</span></div><div class='line' id='LC3559'> <span class="k">return</span> <span class="nx">fr</span><span class="p">.</span><span class="nx">readAsArrayBuffer</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3560'><span class="p">}</span></div><div class='line' id='LC3561'><br/></div><div class='line' id='LC3562'><span class="kd">function</span> <span class="nx">encodeBlob</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3563'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3564'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodeBase64Packet</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3565'> <span class="p">}</span></div><div class='line' id='LC3566'><br/></div><div class='line' id='LC3567'> <span class="k">if</span> <span class="p">(</span><span class="nx">isAndroid</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3568'> <span class="k">return</span> <span class="nx">encodeBlobAsArrayBuffer</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3569'> <span class="p">}</span></div><div class='line' id='LC3570'><br/></div><div class='line' id='LC3571'> <span class="kd">var</span> <span class="nx">length</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3572'> <span class="nx">length</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="nx">packets</span><span class="p">[</span><span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">];</span></div><div class='line' id='LC3573'> <span class="kd">var</span> <span class="nx">blob</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Blob</span><span class="p">([</span><span class="nx">length</span><span class="p">.</span><span class="nx">buffer</span><span class="p">,</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">]);</span></div><div class='line' id='LC3574'><br/></div><div class='line' id='LC3575'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">blob</span><span class="p">);</span></div><div class='line' id='LC3576'><span class="p">}</span></div><div class='line' id='LC3577'><br/></div><div class='line' id='LC3578'><span class="cm">/**</span></div><div class='line' id='LC3579'><span class="cm"> * Encodes a packet with binary data in a base64 string</span></div><div class='line' id='LC3580'><span class="cm"> *</span></div><div class='line' id='LC3581'><span class="cm"> * @param {Object} packet, has `type` and `data`</span></div><div class='line' id='LC3582'><span class="cm"> * @return {String} base64 encoded message</span></div><div class='line' id='LC3583'><span class="cm"> */</span></div><div class='line' id='LC3584'><br/></div><div class='line' id='LC3585'><span class="nx">exports</span><span class="p">.</span><span class="nx">encodeBase64Packet</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3586'> <span class="kd">var</span> <span class="nx">message</span> <span class="o">=</span> <span class="s1">'b'</span> <span class="o">+</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">packets</span><span class="p">[</span><span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">];</span></div><div class='line' id='LC3587'> <span class="k">if</span> <span class="p">(</span><span class="nx">Blob</span> <span class="o">&&</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span> <span class="k">instanceof</span> <span class="nx">Blob</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3588'> <span class="kd">var</span> <span class="nx">fr</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">FileReader</span><span class="p">();</span></div><div class='line' id='LC3589'> <span class="nx">fr</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC3590'> <span class="kd">var</span> <span class="nx">b64</span> <span class="o">=</span> <span class="nx">fr</span><span class="p">.</span><span class="nx">result</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">','</span><span class="p">)[</span><span class="mi">1</span><span class="p">];</span></div><div class='line' id='LC3591'> <span class="nx">callback</span><span class="p">(</span><span class="nx">message</span> <span class="o">+</span> <span class="nx">b64</span><span class="p">);</span></div><div class='line' id='LC3592'> <span class="p">};</span></div><div class='line' id='LC3593'> <span class="k">return</span> <span class="nx">fr</span><span class="p">.</span><span class="nx">readAsDataURL</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3594'> <span class="p">}</span></div><div class='line' id='LC3595'><br/></div><div class='line' id='LC3596'> <span class="kd">var</span> <span class="nx">b64data</span><span class="p">;</span></div><div class='line' id='LC3597'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC3598'> <span class="nx">b64data</span> <span class="o">=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">));</span></div><div class='line' id='LC3599'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3600'> <span class="c1">// iPhone Safari doesn't let you apply with typed arrays</span></div><div class='line' id='LC3601'> <span class="kd">var</span> <span class="nx">typed</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3602'> <span class="kd">var</span> <span class="nx">basic</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">typed</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC3603'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">typed</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3604'> <span class="nx">basic</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">typed</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC3605'> <span class="p">}</span></div><div class='line' id='LC3606'> <span class="nx">b64data</span> <span class="o">=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">basic</span><span class="p">);</span></div><div class='line' id='LC3607'> <span class="p">}</span></div><div class='line' id='LC3608'> <span class="nx">message</span> <span class="o">+=</span> <span class="nx">global</span><span class="p">.</span><span class="nx">btoa</span><span class="p">(</span><span class="nx">b64data</span><span class="p">);</span></div><div class='line' id='LC3609'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">message</span><span class="p">);</span></div><div class='line' id='LC3610'><span class="p">};</span></div><div class='line' id='LC3611'><br/></div><div class='line' id='LC3612'><span class="cm">/**</span></div><div class='line' id='LC3613'><span class="cm"> * Decodes a packet. Changes format to Blob if requested.</span></div><div class='line' id='LC3614'><span class="cm"> *</span></div><div class='line' id='LC3615'><span class="cm"> * @return {Object} with `type` and `data` (if any)</span></div><div class='line' id='LC3616'><span class="cm"> * @api private</span></div><div class='line' id='LC3617'><span class="cm"> */</span></div><div class='line' id='LC3618'><br/></div><div class='line' id='LC3619'><span class="nx">exports</span><span class="p">.</span><span class="nx">decodePacket</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3620'> <span class="c1">// String data</span></div><div class='line' id='LC3621'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">data</span> <span class="o">==</span> <span class="s1">'string'</span> <span class="o">||</span> <span class="nx">data</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3622'> <span class="k">if</span> <span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'b'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3623'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">decodeBase64Packet</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="nx">binaryType</span><span class="p">);</span></div><div class='line' id='LC3624'> <span class="p">}</span></div><div class='line' id='LC3625'><br/></div><div class='line' id='LC3626'> <span class="nx">data</span> <span class="o">=</span> <span class="nx">utf8</span><span class="p">.</span><span class="nx">decode</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3627'> <span class="kd">var</span> <span class="nx">type</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC3628'><br/></div><div class='line' id='LC3629'> <span class="k">if</span> <span class="p">(</span><span class="nb">Number</span><span class="p">(</span><span class="nx">type</span><span class="p">)</span> <span class="o">!=</span> <span class="nx">type</span> <span class="o">||</span> <span class="o">!</span><span class="nx">packetslist</span><span class="p">[</span><span class="nx">type</span><span class="p">])</span> <span class="p">{</span></div><div class='line' id='LC3630'> <span class="k">return</span> <span class="nx">err</span><span class="p">;</span></div><div class='line' id='LC3631'> <span class="p">}</span></div><div class='line' id='LC3632'><br/></div><div class='line' id='LC3633'> <span class="k">if</span> <span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3634'> <span class="k">return</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">packetslist</span><span class="p">[</span><span class="nx">type</span><span class="p">],</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">data</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">};</span></div><div class='line' id='LC3635'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC3636'> <span class="k">return</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">packetslist</span><span class="p">[</span><span class="nx">type</span><span class="p">]</span> <span class="p">};</span></div><div class='line' id='LC3637'> <span class="p">}</span></div><div class='line' id='LC3638'> <span class="p">}</span></div><div class='line' id='LC3639'><br/></div><div class='line' id='LC3640'> <span class="kd">var</span> <span class="nx">asArray</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3641'> <span class="kd">var</span> <span class="nx">type</span> <span class="o">=</span> <span class="nx">asArray</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span></div><div class='line' id='LC3642'> <span class="kd">var</span> <span class="nx">rest</span> <span class="o">=</span> <span class="nx">sliceBuffer</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3643'> <span class="k">if</span> <span class="p">(</span><span class="nx">Blob</span> <span class="o">&&</span> <span class="nx">binaryType</span> <span class="o">===</span> <span class="s1">'blob'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3644'> <span class="nx">rest</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Blob</span><span class="p">([</span><span class="nx">rest</span><span class="p">]);</span></div><div class='line' id='LC3645'> <span class="p">}</span></div><div class='line' id='LC3646'> <span class="k">return</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">packetslist</span><span class="p">[</span><span class="nx">type</span><span class="p">],</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">rest</span> <span class="p">};</span></div><div class='line' id='LC3647'><span class="p">};</span></div><div class='line' id='LC3648'><br/></div><div class='line' id='LC3649'><span class="cm">/**</span></div><div class='line' id='LC3650'><span class="cm"> * Decodes a packet encoded in a base64 string</span></div><div class='line' id='LC3651'><span class="cm"> *</span></div><div class='line' id='LC3652'><span class="cm"> * @param {String} base64 encoded message</span></div><div class='line' id='LC3653'><span class="cm"> * @return {Object} with `type` and `data` (if any)</span></div><div class='line' id='LC3654'><span class="cm"> */</span></div><div class='line' id='LC3655'><br/></div><div class='line' id='LC3656'><span class="nx">exports</span><span class="p">.</span><span class="nx">decodeBase64Packet</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3657'> <span class="kd">var</span> <span class="nx">type</span> <span class="o">=</span> <span class="nx">packetslist</span><span class="p">[</span><span class="nx">msg</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)];</span></div><div class='line' id='LC3658'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">global</span><span class="p">.</span><span class="nx">ArrayBuffer</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3659'> <span class="k">return</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="p">{</span> <span class="nx">base64</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">}</span> <span class="p">};</span></div><div class='line' id='LC3660'> <span class="p">}</span></div><div class='line' id='LC3661'><br/></div><div class='line' id='LC3662'> <span class="kd">var</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">base64encoder</span><span class="p">.</span><span class="nx">decode</span><span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">1</span><span class="p">));</span></div><div class='line' id='LC3663'><br/></div><div class='line' id='LC3664'> <span class="k">if</span> <span class="p">(</span><span class="nx">binaryType</span> <span class="o">===</span> <span class="s1">'blob'</span> <span class="o">&&</span> <span class="nx">Blob</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3665'> <span class="nx">data</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Blob</span><span class="p">([</span><span class="nx">data</span><span class="p">]);</span></div><div class='line' id='LC3666'> <span class="p">}</span></div><div class='line' id='LC3667'><br/></div><div class='line' id='LC3668'> <span class="k">return</span> <span class="p">{</span> <span class="nx">type</span><span class="o">:</span> <span class="nx">type</span><span class="p">,</span> <span class="nx">data</span><span class="o">:</span> <span class="nx">data</span> <span class="p">};</span></div><div class='line' id='LC3669'><span class="p">};</span></div><div class='line' id='LC3670'><br/></div><div class='line' id='LC3671'><span class="cm">/**</span></div><div class='line' id='LC3672'><span class="cm"> * Encodes multiple messages (payload).</span></div><div class='line' id='LC3673'><span class="cm"> *</span></div><div class='line' id='LC3674'><span class="cm"> * <length>:data</span></div><div class='line' id='LC3675'><span class="cm"> *</span></div><div class='line' id='LC3676'><span class="cm"> * Example:</span></div><div class='line' id='LC3677'><span class="cm"> *</span></div><div class='line' id='LC3678'><span class="cm"> * 11:hello world2:hi</span></div><div class='line' id='LC3679'><span class="cm"> *</span></div><div class='line' id='LC3680'><span class="cm"> * If any contents are binary, they will be encoded as base64 strings. Base64</span></div><div class='line' id='LC3681'><span class="cm"> * encoded strings are marked with a b before the length specifier</span></div><div class='line' id='LC3682'><span class="cm"> *</span></div><div class='line' id='LC3683'><span class="cm"> * @param {Array} packets</span></div><div class='line' id='LC3684'><span class="cm"> * @api private</span></div><div class='line' id='LC3685'><span class="cm"> */</span></div><div class='line' id='LC3686'><br/></div><div class='line' id='LC3687'><span class="nx">exports</span><span class="p">.</span><span class="nx">encodePayload</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3688'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">supportsBinary</span> <span class="o">==</span> <span class="s1">'function'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3689'> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">supportsBinary</span><span class="p">;</span></div><div class='line' id='LC3690'> <span class="nx">supportsBinary</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC3691'> <span class="p">}</span></div><div class='line' id='LC3692'><br/></div><div class='line' id='LC3693'> <span class="k">if</span> <span class="p">(</span><span class="nx">supportsBinary</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3694'> <span class="k">if</span> <span class="p">(</span><span class="nx">Blob</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">isAndroid</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3695'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodePayloadAsBlob</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3696'> <span class="p">}</span></div><div class='line' id='LC3697'><br/></div><div class='line' id='LC3698'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodePayloadAsArrayBuffer</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3699'> <span class="p">}</span></div><div class='line' id='LC3700'><br/></div><div class='line' id='LC3701'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">packets</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3702'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="s1">'0:'</span><span class="p">);</span></div><div class='line' id='LC3703'> <span class="p">}</span></div><div class='line' id='LC3704'><br/></div><div class='line' id='LC3705'> <span class="kd">function</span> <span class="nx">setLengthHeader</span><span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3706'> <span class="k">return</span> <span class="nx">message</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="s1">':'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">;</span></div><div class='line' id='LC3707'> <span class="p">}</span></div><div class='line' id='LC3708'><br/></div><div class='line' id='LC3709'> <span class="kd">function</span> <span class="nx">encodeOne</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">doneCallback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3710'> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodePacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">supportsBinary</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3711'> <span class="nx">doneCallback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">setLengthHeader</span><span class="p">(</span><span class="nx">message</span><span class="p">));</span></div><div class='line' id='LC3712'> <span class="p">});</span></div><div class='line' id='LC3713'> <span class="p">}</span></div><div class='line' id='LC3714'><br/></div><div class='line' id='LC3715'> <span class="nx">map</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">encodeOne</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">results</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3716'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">results</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">''</span><span class="p">));</span></div><div class='line' id='LC3717'> <span class="p">});</span></div><div class='line' id='LC3718'><span class="p">};</span></div><div class='line' id='LC3719'><br/></div><div class='line' id='LC3720'><span class="cm">/**</span></div><div class='line' id='LC3721'><span class="cm"> * Async array map using after</span></div><div class='line' id='LC3722'><span class="cm"> */</span></div><div class='line' id='LC3723'><br/></div><div class='line' id='LC3724'><span class="kd">function</span> <span class="nx">map</span><span class="p">(</span><span class="nx">ary</span><span class="p">,</span> <span class="nx">each</span><span class="p">,</span> <span class="nx">done</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3725'> <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">ary</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC3726'> <span class="kd">var</span> <span class="nx">next</span> <span class="o">=</span> <span class="nx">after</span><span class="p">(</span><span class="nx">ary</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">done</span><span class="p">);</span></div><div class='line' id='LC3727'><br/></div><div class='line' id='LC3728'> <span class="kd">var</span> <span class="nx">eachWithIndex</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">el</span><span class="p">,</span> <span class="nx">cb</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3729'> <span class="nx">each</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">msg</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3730'> <span class="nx">result</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">msg</span><span class="p">;</span></div><div class='line' id='LC3731'> <span class="nx">cb</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">result</span><span class="p">);</span></div><div class='line' id='LC3732'> <span class="p">});</span></div><div class='line' id='LC3733'> <span class="p">};</span></div><div class='line' id='LC3734'><br/></div><div class='line' id='LC3735'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">ary</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3736'> <span class="nx">eachWithIndex</span><span class="p">(</span><span class="nx">i</span><span class="p">,</span> <span class="nx">ary</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">next</span><span class="p">);</span></div><div class='line' id='LC3737'> <span class="p">}</span></div><div class='line' id='LC3738'><span class="p">}</span></div><div class='line' id='LC3739'><br/></div><div class='line' id='LC3740'><span class="cm">/*</span></div><div class='line' id='LC3741'><span class="cm"> * Decodes data when a payload is maybe expected. Possible binary contents are</span></div><div class='line' id='LC3742'><span class="cm"> * decoded from their base64 representation</span></div><div class='line' id='LC3743'><span class="cm"> *</span></div><div class='line' id='LC3744'><span class="cm"> * @param {String} data, callback method</span></div><div class='line' id='LC3745'><span class="cm"> * @api public</span></div><div class='line' id='LC3746'><span class="cm"> */</span></div><div class='line' id='LC3747'><br/></div><div class='line' id='LC3748'><span class="nx">exports</span><span class="p">.</span><span class="nx">decodePayload</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3749'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">data</span> <span class="o">!=</span> <span class="s1">'string'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3750'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">decodePayloadAsBinary</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC3751'> <span class="p">}</span></div><div class='line' id='LC3752'><br/></div><div class='line' id='LC3753'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">binaryType</span> <span class="o">===</span> <span class="s1">'function'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3754'> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">binaryType</span><span class="p">;</span></div><div class='line' id='LC3755'> <span class="nx">binaryType</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC3756'> <span class="p">}</span></div><div class='line' id='LC3757'><br/></div><div class='line' id='LC3758'> <span class="kd">var</span> <span class="nx">packet</span><span class="p">;</span></div><div class='line' id='LC3759'> <span class="k">if</span> <span class="p">(</span><span class="nx">data</span> <span class="o">==</span> <span class="s1">''</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3760'> <span class="c1">// parser error - ignoring payload</span></div><div class='line' id='LC3761'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3762'> <span class="p">}</span></div><div class='line' id='LC3763'><br/></div><div class='line' id='LC3764'> <span class="kd">var</span> <span class="nx">length</span> <span class="o">=</span> <span class="s1">''</span></div><div class='line' id='LC3765'> <span class="p">,</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">msg</span><span class="p">;</span></div><div class='line' id='LC3766'><br/></div><div class='line' id='LC3767'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3768'> <span class="kd">var</span> <span class="nx">chr</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC3769'><br/></div><div class='line' id='LC3770'> <span class="k">if</span> <span class="p">(</span><span class="s1">':'</span> <span class="o">!=</span> <span class="nx">chr</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3771'> <span class="nx">length</span> <span class="o">+=</span> <span class="nx">chr</span><span class="p">;</span></div><div class='line' id='LC3772'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC3773'> <span class="k">if</span> <span class="p">(</span><span class="s1">''</span> <span class="o">==</span> <span class="nx">length</span> <span class="o">||</span> <span class="p">(</span><span class="nx">length</span> <span class="o">!=</span> <span class="p">(</span><span class="nx">n</span> <span class="o">=</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">length</span><span class="p">))))</span> <span class="p">{</span></div><div class='line' id='LC3774'> <span class="c1">// parser error - ignoring payload</span></div><div class='line' id='LC3775'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3776'> <span class="p">}</span></div><div class='line' id='LC3777'><br/></div><div class='line' id='LC3778'> <span class="nx">msg</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="nx">n</span><span class="p">);</span></div><div class='line' id='LC3779'><br/></div><div class='line' id='LC3780'> <span class="k">if</span> <span class="p">(</span><span class="nx">length</span> <span class="o">!=</span> <span class="nx">msg</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3781'> <span class="c1">// parser error - ignoring payload</span></div><div class='line' id='LC3782'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3783'> <span class="p">}</span></div><div class='line' id='LC3784'><br/></div><div class='line' id='LC3785'> <span class="k">if</span> <span class="p">(</span><span class="nx">msg</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3786'> <span class="nx">packet</span> <span class="o">=</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">decodePacket</span><span class="p">(</span><span class="nx">msg</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">);</span></div><div class='line' id='LC3787'><br/></div><div class='line' id='LC3788'> <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">.</span><span class="nx">type</span> <span class="o">==</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">type</span> <span class="o">&&</span> <span class="nx">err</span><span class="p">.</span><span class="nx">data</span> <span class="o">==</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3789'> <span class="c1">// parser error in individual packet - ignoring payload</span></div><div class='line' id='LC3790'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3791'> <span class="p">}</span></div><div class='line' id='LC3792'><br/></div><div class='line' id='LC3793'> <span class="kd">var</span> <span class="nx">ret</span> <span class="o">=</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">n</span><span class="p">,</span> <span class="nx">l</span><span class="p">);</span></div><div class='line' id='LC3794'> <span class="k">if</span> <span class="p">(</span><span class="kc">false</span> <span class="o">===</span> <span class="nx">ret</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span></div><div class='line' id='LC3795'> <span class="p">}</span></div><div class='line' id='LC3796'><br/></div><div class='line' id='LC3797'> <span class="c1">// advance cursor</span></div><div class='line' id='LC3798'> <span class="nx">i</span> <span class="o">+=</span> <span class="nx">n</span><span class="p">;</span></div><div class='line' id='LC3799'> <span class="nx">length</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC3800'> <span class="p">}</span></div><div class='line' id='LC3801'> <span class="p">}</span></div><div class='line' id='LC3802'><br/></div><div class='line' id='LC3803'> <span class="k">if</span> <span class="p">(</span><span class="nx">length</span> <span class="o">!=</span> <span class="s1">''</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3804'> <span class="c1">// parser error - ignoring payload</span></div><div class='line' id='LC3805'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3806'> <span class="p">}</span></div><div class='line' id='LC3807'><br/></div><div class='line' id='LC3808'><span class="p">};</span></div><div class='line' id='LC3809'><br/></div><div class='line' id='LC3810'><span class="cm">/**</span></div><div class='line' id='LC3811'><span class="cm"> * Encodes multiple messages (payload) as binary.</span></div><div class='line' id='LC3812'><span class="cm"> *</span></div><div class='line' id='LC3813'><span class="cm"> * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number</span></div><div class='line' id='LC3814'><span class="cm"> * 255><data></span></div><div class='line' id='LC3815'><span class="cm"> *</span></div><div class='line' id='LC3816'><span class="cm"> * Example:</span></div><div class='line' id='LC3817'><span class="cm"> * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers</span></div><div class='line' id='LC3818'><span class="cm"> *</span></div><div class='line' id='LC3819'><span class="cm"> * @param {Array} packets</span></div><div class='line' id='LC3820'><span class="cm"> * @return {ArrayBuffer} encoded payload</span></div><div class='line' id='LC3821'><span class="cm"> * @api private</span></div><div class='line' id='LC3822'><span class="cm"> */</span></div><div class='line' id='LC3823'><br/></div><div class='line' id='LC3824'><span class="nx">exports</span><span class="p">.</span><span class="nx">encodePayloadAsArrayBuffer</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3825'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">packets</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3826'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="k">new</span> <span class="nx">ArrayBuffer</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span></div><div class='line' id='LC3827'> <span class="p">}</span></div><div class='line' id='LC3828'><br/></div><div class='line' id='LC3829'> <span class="kd">function</span> <span class="nx">encodeOne</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">doneCallback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3830'> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodePacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3831'> <span class="k">return</span> <span class="nx">doneCallback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC3832'> <span class="p">});</span></div><div class='line' id='LC3833'> <span class="p">}</span></div><div class='line' id='LC3834'><br/></div><div class='line' id='LC3835'> <span class="nx">map</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">encodeOne</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">encodedPackets</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3836'> <span class="kd">var</span> <span class="nx">totalLength</span> <span class="o">=</span> <span class="nx">encodedPackets</span><span class="p">.</span><span class="nx">reduce</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">acc</span><span class="p">,</span> <span class="nx">p</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3837'> <span class="kd">var</span> <span class="nx">len</span><span class="p">;</span></div><div class='line' id='LC3838'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">p</span> <span class="o">===</span> <span class="s1">'string'</span><span class="p">){</span></div><div class='line' id='LC3839'> <span class="nx">len</span> <span class="o">=</span> <span class="nx">p</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC3840'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC3841'> <span class="nx">len</span> <span class="o">=</span> <span class="nx">p</span><span class="p">.</span><span class="nx">byteLength</span><span class="p">;</span></div><div class='line' id='LC3842'> <span class="p">}</span></div><div class='line' id='LC3843'> <span class="k">return</span> <span class="nx">acc</span> <span class="o">+</span> <span class="nx">len</span><span class="p">.</span><span class="nx">toString</span><span class="p">().</span><span class="nx">length</span> <span class="o">+</span> <span class="nx">len</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span> <span class="c1">// string/binary identifier + separator = 2</span></div><div class='line' id='LC3844'> <span class="p">},</span> <span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC3845'><br/></div><div class='line' id='LC3846'> <span class="kd">var</span> <span class="nx">resultArray</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">totalLength</span><span class="p">);</span></div><div class='line' id='LC3847'><br/></div><div class='line' id='LC3848'> <span class="kd">var</span> <span class="nx">bufferIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC3849'> <span class="nx">encodedPackets</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">p</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3850'> <span class="kd">var</span> <span class="nx">isString</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">p</span> <span class="o">===</span> <span class="s1">'string'</span><span class="p">;</span></div><div class='line' id='LC3851'> <span class="kd">var</span> <span class="nx">ab</span> <span class="o">=</span> <span class="nx">p</span><span class="p">;</span></div><div class='line' id='LC3852'> <span class="k">if</span> <span class="p">(</span><span class="nx">isString</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3853'> <span class="kd">var</span> <span class="nx">view</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">p</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC3854'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">p</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3855'> <span class="nx">view</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">p</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC3856'> <span class="p">}</span></div><div class='line' id='LC3857'> <span class="nx">ab</span> <span class="o">=</span> <span class="nx">view</span><span class="p">.</span><span class="nx">buffer</span><span class="p">;</span></div><div class='line' id='LC3858'> <span class="p">}</span></div><div class='line' id='LC3859'><br/></div><div class='line' id='LC3860'> <span class="k">if</span> <span class="p">(</span><span class="nx">isString</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// not true binary</span></div><div class='line' id='LC3861'> <span class="nx">resultArray</span><span class="p">[</span><span class="nx">bufferIndex</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC3862'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// true binary</span></div><div class='line' id='LC3863'> <span class="nx">resultArray</span><span class="p">[</span><span class="nx">bufferIndex</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC3864'> <span class="p">}</span></div><div class='line' id='LC3865'><br/></div><div class='line' id='LC3866'> <span class="kd">var</span> <span class="nx">lenStr</span> <span class="o">=</span> <span class="nx">ab</span><span class="p">.</span><span class="nx">byteLength</span><span class="p">.</span><span class="nx">toString</span><span class="p">();</span></div><div class='line' id='LC3867'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">lenStr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3868'> <span class="nx">resultArray</span><span class="p">[</span><span class="nx">bufferIndex</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">lenStr</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC3869'> <span class="p">}</span></div><div class='line' id='LC3870'> <span class="nx">resultArray</span><span class="p">[</span><span class="nx">bufferIndex</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="mi">255</span><span class="p">;</span></div><div class='line' id='LC3871'><br/></div><div class='line' id='LC3872'> <span class="kd">var</span> <span class="nx">view</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">ab</span><span class="p">);</span></div><div class='line' id='LC3873'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">view</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3874'> <span class="nx">resultArray</span><span class="p">[</span><span class="nx">bufferIndex</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="nx">view</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC3875'> <span class="p">}</span></div><div class='line' id='LC3876'> <span class="p">});</span></div><div class='line' id='LC3877'><br/></div><div class='line' id='LC3878'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">resultArray</span><span class="p">.</span><span class="nx">buffer</span><span class="p">);</span></div><div class='line' id='LC3879'> <span class="p">});</span></div><div class='line' id='LC3880'><span class="p">};</span></div><div class='line' id='LC3881'><br/></div><div class='line' id='LC3882'><span class="cm">/**</span></div><div class='line' id='LC3883'><span class="cm"> * Encode as Blob</span></div><div class='line' id='LC3884'><span class="cm"> */</span></div><div class='line' id='LC3885'><br/></div><div class='line' id='LC3886'><span class="nx">exports</span><span class="p">.</span><span class="nx">encodePayloadAsBlob</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3887'> <span class="kd">function</span> <span class="nx">encodeOne</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">doneCallback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3888'> <span class="nx">exports</span><span class="p">.</span><span class="nx">encodePacket</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">encoded</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3889'> <span class="kd">var</span> <span class="nx">binaryIdentifier</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3890'> <span class="nx">binaryIdentifier</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC3891'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">encoded</span> <span class="o">===</span> <span class="s1">'string'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3892'> <span class="kd">var</span> <span class="nx">view</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">encoded</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC3893'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">encoded</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3894'> <span class="nx">view</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">encoded</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC3895'> <span class="p">}</span></div><div class='line' id='LC3896'> <span class="nx">encoded</span> <span class="o">=</span> <span class="nx">view</span><span class="p">.</span><span class="nx">buffer</span><span class="p">;</span></div><div class='line' id='LC3897'> <span class="nx">binaryIdentifier</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC3898'> <span class="p">}</span></div><div class='line' id='LC3899'><br/></div><div class='line' id='LC3900'> <span class="kd">var</span> <span class="nx">len</span> <span class="o">=</span> <span class="p">(</span><span class="nx">encoded</span> <span class="k">instanceof</span> <span class="nx">ArrayBuffer</span><span class="p">)</span></div><div class='line' id='LC3901'> <span class="o">?</span> <span class="nx">encoded</span><span class="p">.</span><span class="nx">byteLength</span></div><div class='line' id='LC3902'> <span class="o">:</span> <span class="nx">encoded</span><span class="p">.</span><span class="nx">size</span><span class="p">;</span></div><div class='line' id='LC3903'><br/></div><div class='line' id='LC3904'> <span class="kd">var</span> <span class="nx">lenStr</span> <span class="o">=</span> <span class="nx">len</span><span class="p">.</span><span class="nx">toString</span><span class="p">();</span></div><div class='line' id='LC3905'> <span class="kd">var</span> <span class="nx">lengthAry</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">lenStr</span><span class="p">.</span><span class="nx">length</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC3906'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">lenStr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3907'> <span class="nx">lengthAry</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">lenStr</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC3908'> <span class="p">}</span></div><div class='line' id='LC3909'> <span class="nx">lengthAry</span><span class="p">[</span><span class="nx">lenStr</span><span class="p">.</span><span class="nx">length</span><span class="p">]</span> <span class="o">=</span> <span class="mi">255</span><span class="p">;</span></div><div class='line' id='LC3910'><br/></div><div class='line' id='LC3911'> <span class="k">if</span> <span class="p">(</span><span class="nx">Blob</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3912'> <span class="kd">var</span> <span class="nx">blob</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Blob</span><span class="p">([</span><span class="nx">binaryIdentifier</span><span class="p">.</span><span class="nx">buffer</span><span class="p">,</span> <span class="nx">lengthAry</span><span class="p">.</span><span class="nx">buffer</span><span class="p">,</span> <span class="nx">encoded</span><span class="p">]);</span></div><div class='line' id='LC3913'> <span class="nx">doneCallback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">blob</span><span class="p">);</span></div><div class='line' id='LC3914'> <span class="p">}</span></div><div class='line' id='LC3915'> <span class="p">});</span></div><div class='line' id='LC3916'> <span class="p">}</span></div><div class='line' id='LC3917'><br/></div><div class='line' id='LC3918'> <span class="nx">map</span><span class="p">(</span><span class="nx">packets</span><span class="p">,</span> <span class="nx">encodeOne</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">results</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3919'> <span class="k">return</span> <span class="nx">callback</span><span class="p">(</span><span class="k">new</span> <span class="nx">Blob</span><span class="p">(</span><span class="nx">results</span><span class="p">));</span></div><div class='line' id='LC3920'> <span class="p">});</span></div><div class='line' id='LC3921'><span class="p">};</span></div><div class='line' id='LC3922'><br/></div><div class='line' id='LC3923'><span class="cm">/*</span></div><div class='line' id='LC3924'><span class="cm"> * Decodes data when a payload is maybe expected. Strings are decoded by</span></div><div class='line' id='LC3925'><span class="cm"> * interpreting each byte as a key code for entries marked to start with 0. See</span></div><div class='line' id='LC3926'><span class="cm"> * description of encodePayloadAsBinary</span></div><div class='line' id='LC3927'><span class="cm"> *</span></div><div class='line' id='LC3928'><span class="cm"> * @param {ArrayBuffer} data, callback method</span></div><div class='line' id='LC3929'><span class="cm"> * @api public</span></div><div class='line' id='LC3930'><span class="cm"> */</span></div><div class='line' id='LC3931'><br/></div><div class='line' id='LC3932'><span class="nx">exports</span><span class="p">.</span><span class="nx">decodePayloadAsBinary</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3933'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">binaryType</span> <span class="o">===</span> <span class="s1">'function'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3934'> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">binaryType</span><span class="p">;</span></div><div class='line' id='LC3935'> <span class="nx">binaryType</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC3936'> <span class="p">}</span></div><div class='line' id='LC3937'><br/></div><div class='line' id='LC3938'> <span class="kd">var</span> <span class="nx">bufferTail</span> <span class="o">=</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC3939'> <span class="kd">var</span> <span class="nx">buffers</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC3940'><br/></div><div class='line' id='LC3941'> <span class="k">while</span> <span class="p">(</span><span class="nx">bufferTail</span><span class="p">.</span><span class="nx">byteLength</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3942'> <span class="kd">var</span> <span class="nx">tailArray</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">bufferTail</span><span class="p">);</span></div><div class='line' id='LC3943'> <span class="kd">var</span> <span class="nx">isString</span> <span class="o">=</span> <span class="nx">tailArray</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">===</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC3944'> <span class="kd">var</span> <span class="nx">msgLength</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC3945'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3946'> <span class="k">if</span> <span class="p">(</span><span class="nx">tailArray</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">==</span> <span class="mi">255</span><span class="p">)</span> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC3947'> <span class="nx">msgLength</span> <span class="o">+=</span> <span class="nx">tailArray</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC3948'> <span class="p">}</span></div><div class='line' id='LC3949'> <span class="nx">bufferTail</span> <span class="o">=</span> <span class="nx">sliceBuffer</span><span class="p">(</span><span class="nx">bufferTail</span><span class="p">,</span> <span class="mi">2</span> <span class="o">+</span> <span class="nx">msgLength</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC3950'> <span class="nx">msgLength</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">msgLength</span><span class="p">);</span></div><div class='line' id='LC3951'><br/></div><div class='line' id='LC3952'> <span class="kd">var</span> <span class="nx">msg</span> <span class="o">=</span> <span class="nx">sliceBuffer</span><span class="p">(</span><span class="nx">bufferTail</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">msgLength</span><span class="p">);</span></div><div class='line' id='LC3953'> <span class="k">if</span> <span class="p">(</span><span class="nx">isString</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3954'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC3955'> <span class="nx">msg</span> <span class="o">=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">.</span><span class="nx">apply</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">msg</span><span class="p">));</span></div><div class='line' id='LC3956'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3957'> <span class="c1">// iPhone Safari doesn't let you apply to typed arrays</span></div><div class='line' id='LC3958'> <span class="kd">var</span> <span class="nx">typed</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span></div><div class='line' id='LC3959'> <span class="nx">msg</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC3960'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">typed</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3961'> <span class="nx">msg</span> <span class="o">+=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">(</span><span class="nx">typed</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC3962'> <span class="p">}</span></div><div class='line' id='LC3963'> <span class="p">}</span></div><div class='line' id='LC3964'> <span class="p">}</span></div><div class='line' id='LC3965'> <span class="nx">buffers</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">msg</span><span class="p">);</span></div><div class='line' id='LC3966'> <span class="nx">bufferTail</span> <span class="o">=</span> <span class="nx">sliceBuffer</span><span class="p">(</span><span class="nx">bufferTail</span><span class="p">,</span> <span class="nx">msgLength</span><span class="p">);</span></div><div class='line' id='LC3967'> <span class="p">}</span></div><div class='line' id='LC3968'><br/></div><div class='line' id='LC3969'> <span class="kd">var</span> <span class="nx">total</span> <span class="o">=</span> <span class="nx">buffers</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC3970'> <span class="nx">buffers</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">buffer</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3971'> <span class="nx">callback</span><span class="p">(</span><span class="nx">exports</span><span class="p">.</span><span class="nx">decodePacket</span><span class="p">(</span><span class="nx">buffer</span><span class="p">,</span> <span class="nx">binaryType</span><span class="p">),</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">total</span><span class="p">);</span></div><div class='line' id='LC3972'> <span class="p">});</span></div><div class='line' id='LC3973'><span class="p">};</span></div><div class='line' id='LC3974'><br/></div><div class='line' id='LC3975'><span class="p">},{</span><span class="s2">"./keys"</span><span class="o">:</span><span class="mi">23</span><span class="p">,</span><span class="s2">"after"</span><span class="o">:</span><span class="mi">24</span><span class="p">,</span><span class="s2">"arraybuffer.slice"</span><span class="o">:</span><span class="mi">25</span><span class="p">,</span><span class="s2">"base64-arraybuffer"</span><span class="o">:</span><span class="mi">26</span><span class="p">,</span><span class="s2">"blob"</span><span class="o">:</span><span class="mi">27</span><span class="p">,</span><span class="s2">"utf8"</span><span class="o">:</span><span class="mi">28</span><span class="p">}],</span><span class="mi">23</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3976'><br/></div><div class='line' id='LC3977'><span class="cm">/**</span></div><div class='line' id='LC3978'><span class="cm"> * Gets the keys for an object.</span></div><div class='line' id='LC3979'><span class="cm"> *</span></div><div class='line' id='LC3980'><span class="cm"> * @return {Array} keys</span></div><div class='line' id='LC3981'><span class="cm"> * @api private</span></div><div class='line' id='LC3982'><span class="cm"> */</span></div><div class='line' id='LC3983'><br/></div><div class='line' id='LC3984'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span> <span class="o">||</span> <span class="kd">function</span> <span class="nx">keys</span> <span class="p">(</span><span class="nx">obj</span><span class="p">){</span></div><div class='line' id='LC3985'> <span class="kd">var</span> <span class="nx">arr</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC3986'> <span class="kd">var</span> <span class="nx">has</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">;</span></div><div class='line' id='LC3987'><br/></div><div class='line' id='LC3988'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC3989'> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">i</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC3990'> <span class="nx">arr</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC3991'> <span class="p">}</span></div><div class='line' id='LC3992'> <span class="p">}</span></div><div class='line' id='LC3993'> <span class="k">return</span> <span class="nx">arr</span><span class="p">;</span></div><div class='line' id='LC3994'><span class="p">};</span></div><div class='line' id='LC3995'><br/></div><div class='line' id='LC3996'><span class="p">},{}],</span><span class="mi">24</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC3997'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">after</span></div><div class='line' id='LC3998'><br/></div><div class='line' id='LC3999'><span class="kd">function</span> <span class="nx">after</span><span class="p">(</span><span class="nx">count</span><span class="p">,</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">err_cb</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4000'> <span class="kd">var</span> <span class="nx">bail</span> <span class="o">=</span> <span class="kc">false</span></div><div class='line' id='LC4001'> <span class="nx">err_cb</span> <span class="o">=</span> <span class="nx">err_cb</span> <span class="o">||</span> <span class="nx">noop</span></div><div class='line' id='LC4002'> <span class="nx">proxy</span><span class="p">.</span><span class="nx">count</span> <span class="o">=</span> <span class="nx">count</span></div><div class='line' id='LC4003'><br/></div><div class='line' id='LC4004'> <span class="k">return</span> <span class="p">(</span><span class="nx">count</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="o">?</span> <span class="nx">callback</span><span class="p">()</span> <span class="o">:</span> <span class="nx">proxy</span></div><div class='line' id='LC4005'><br/></div><div class='line' id='LC4006'> <span class="kd">function</span> <span class="nx">proxy</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">result</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4007'> <span class="k">if</span> <span class="p">(</span><span class="nx">proxy</span><span class="p">.</span><span class="nx">count</span> <span class="o"><=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4008'> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'after called too many times'</span><span class="p">)</span></div><div class='line' id='LC4009'> <span class="p">}</span></div><div class='line' id='LC4010'> <span class="o">--</span><span class="nx">proxy</span><span class="p">.</span><span class="nx">count</span></div><div class='line' id='LC4011'><br/></div><div class='line' id='LC4012'> <span class="c1">// after first error, rest are passed to err_cb</span></div><div class='line' id='LC4013'> <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4014'> <span class="nx">bail</span> <span class="o">=</span> <span class="kc">true</span></div><div class='line' id='LC4015'> <span class="nx">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span></div><div class='line' id='LC4016'> <span class="c1">// future error callbacks will go to error handler</span></div><div class='line' id='LC4017'> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">err_cb</span></div><div class='line' id='LC4018'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">proxy</span><span class="p">.</span><span class="nx">count</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">bail</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4019'> <span class="nx">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">result</span><span class="p">)</span></div><div class='line' id='LC4020'> <span class="p">}</span></div><div class='line' id='LC4021'> <span class="p">}</span></div><div class='line' id='LC4022'><span class="p">}</span></div><div class='line' id='LC4023'><br/></div><div class='line' id='LC4024'><span class="kd">function</span> <span class="nx">noop</span><span class="p">()</span> <span class="p">{}</span></div><div class='line' id='LC4025'><br/></div><div class='line' id='LC4026'><span class="p">},{}],</span><span class="mi">25</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4027'><span class="cm">/**</span></div><div class='line' id='LC4028'><span class="cm"> * An abstraction for slicing an arraybuffer even when</span></div><div class='line' id='LC4029'><span class="cm"> * ArrayBuffer.prototype.slice is not supported</span></div><div class='line' id='LC4030'><span class="cm"> *</span></div><div class='line' id='LC4031'><span class="cm"> * @api public</span></div><div class='line' id='LC4032'><span class="cm"> */</span></div><div class='line' id='LC4033'><br/></div><div class='line' id='LC4034'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">arraybuffer</span><span class="p">,</span> <span class="nx">start</span><span class="p">,</span> <span class="nx">end</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4035'> <span class="kd">var</span> <span class="nx">bytes</span> <span class="o">=</span> <span class="nx">arraybuffer</span><span class="p">.</span><span class="nx">byteLength</span><span class="p">;</span></div><div class='line' id='LC4036'> <span class="nx">start</span> <span class="o">=</span> <span class="nx">start</span> <span class="o">||</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC4037'> <span class="nx">end</span> <span class="o">=</span> <span class="nx">end</span> <span class="o">||</span> <span class="nx">bytes</span><span class="p">;</span></div><div class='line' id='LC4038'><br/></div><div class='line' id='LC4039'> <span class="k">if</span> <span class="p">(</span><span class="nx">arraybuffer</span><span class="p">.</span><span class="nx">slice</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">arraybuffer</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">start</span><span class="p">,</span> <span class="nx">end</span><span class="p">);</span> <span class="p">}</span></div><div class='line' id='LC4040'><br/></div><div class='line' id='LC4041'> <span class="k">if</span> <span class="p">(</span><span class="nx">start</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">start</span> <span class="o">+=</span> <span class="nx">bytes</span><span class="p">;</span> <span class="p">}</span></div><div class='line' id='LC4042'> <span class="k">if</span> <span class="p">(</span><span class="nx">end</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="nx">end</span> <span class="o">+=</span> <span class="nx">bytes</span><span class="p">;</span> <span class="p">}</span></div><div class='line' id='LC4043'> <span class="k">if</span> <span class="p">(</span><span class="nx">end</span> <span class="o">></span> <span class="nx">bytes</span><span class="p">)</span> <span class="p">{</span> <span class="nx">end</span> <span class="o">=</span> <span class="nx">bytes</span><span class="p">;</span> <span class="p">}</span></div><div class='line' id='LC4044'><br/></div><div class='line' id='LC4045'> <span class="k">if</span> <span class="p">(</span><span class="nx">start</span> <span class="o">>=</span> <span class="nx">bytes</span> <span class="o">||</span> <span class="nx">start</span> <span class="o">>=</span> <span class="nx">end</span> <span class="o">||</span> <span class="nx">bytes</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4046'> <span class="k">return</span> <span class="k">new</span> <span class="nx">ArrayBuffer</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span></div><div class='line' id='LC4047'> <span class="p">}</span></div><div class='line' id='LC4048'><br/></div><div class='line' id='LC4049'> <span class="kd">var</span> <span class="nx">abv</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">arraybuffer</span><span class="p">);</span></div><div class='line' id='LC4050'> <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">end</span> <span class="o">-</span> <span class="nx">start</span><span class="p">);</span></div><div class='line' id='LC4051'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">start</span><span class="p">,</span> <span class="nx">ii</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">end</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">,</span> <span class="nx">ii</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4052'> <span class="nx">result</span><span class="p">[</span><span class="nx">ii</span><span class="p">]</span> <span class="o">=</span> <span class="nx">abv</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span></div><div class='line' id='LC4053'> <span class="p">}</span></div><div class='line' id='LC4054'> <span class="k">return</span> <span class="nx">result</span><span class="p">.</span><span class="nx">buffer</span><span class="p">;</span></div><div class='line' id='LC4055'><span class="p">};</span></div><div class='line' id='LC4056'><br/></div><div class='line' id='LC4057'><span class="p">},{}],</span><span class="mi">26</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4058'><span class="cm">/*</span></div><div class='line' id='LC4059'><span class="cm"> * base64-arraybuffer</span></div><div class='line' id='LC4060'><span class="cm"> * https://github.com/niklasvh/base64-arraybuffer</span></div><div class='line' id='LC4061'><span class="cm"> *</span></div><div class='line' id='LC4062'><span class="cm"> * Copyright (c) 2012 Niklas von Hertzen</span></div><div class='line' id='LC4063'><span class="cm"> * Licensed under the MIT license.</span></div><div class='line' id='LC4064'><span class="cm"> */</span></div><div class='line' id='LC4065'><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">chars</span><span class="p">){</span></div><div class='line' id='LC4066'> <span class="s2">"use strict"</span><span class="p">;</span></div><div class='line' id='LC4067'><br/></div><div class='line' id='LC4068'> <span class="nx">exports</span><span class="p">.</span><span class="nx">encode</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">arraybuffer</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4069'> <span class="kd">var</span> <span class="nx">bytes</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">arraybuffer</span><span class="p">),</span></div><div class='line' id='LC4070'> <span class="nx">i</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">bytes</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">base64</span> <span class="o">=</span> <span class="s2">""</span><span class="p">;</span></div><div class='line' id='LC4071'><br/></div><div class='line' id='LC4072'> <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">+=</span><span class="mi">3</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4073'> <span class="nx">base64</span> <span class="o">+=</span> <span class="nx">chars</span><span class="p">[</span><span class="nx">bytes</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">>></span> <span class="mi">2</span><span class="p">];</span></div><div class='line' id='LC4074'> <span class="nx">base64</span> <span class="o">+=</span> <span class="nx">chars</span><span class="p">[((</span><span class="nx">bytes</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">&</span> <span class="mi">3</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">4</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">bytes</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">>></span> <span class="mi">4</span><span class="p">)];</span></div><div class='line' id='LC4075'> <span class="nx">base64</span> <span class="o">+=</span> <span class="nx">chars</span><span class="p">[((</span><span class="nx">bytes</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">&</span> <span class="mi">15</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">2</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">bytes</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span> <span class="o">>></span> <span class="mi">6</span><span class="p">)];</span></div><div class='line' id='LC4076'> <span class="nx">base64</span> <span class="o">+=</span> <span class="nx">chars</span><span class="p">[</span><span class="nx">bytes</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]</span> <span class="o">&</span> <span class="mi">63</span><span class="p">];</span></div><div class='line' id='LC4077'> <span class="p">}</span></div><div class='line' id='LC4078'><br/></div><div class='line' id='LC4079'> <span class="k">if</span> <span class="p">((</span><span class="nx">len</span> <span class="o">%</span> <span class="mi">3</span><span class="p">)</span> <span class="o">===</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4080'> <span class="nx">base64</span> <span class="o">=</span> <span class="nx">base64</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">base64</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"="</span><span class="p">;</span></div><div class='line' id='LC4081'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">len</span> <span class="o">%</span> <span class="mi">3</span> <span class="o">===</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4082'> <span class="nx">base64</span> <span class="o">=</span> <span class="nx">base64</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nx">base64</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"=="</span><span class="p">;</span></div><div class='line' id='LC4083'> <span class="p">}</span></div><div class='line' id='LC4084'><br/></div><div class='line' id='LC4085'> <span class="k">return</span> <span class="nx">base64</span><span class="p">;</span></div><div class='line' id='LC4086'> <span class="p">};</span></div><div class='line' id='LC4087'><br/></div><div class='line' id='LC4088'> <span class="nx">exports</span><span class="p">.</span><span class="nx">decode</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">base64</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4089'> <span class="kd">var</span> <span class="nx">bufferLength</span> <span class="o">=</span> <span class="nx">base64</span><span class="p">.</span><span class="nx">length</span> <span class="o">*</span> <span class="mf">0.75</span><span class="p">,</span></div><div class='line' id='LC4090'> <span class="nx">len</span> <span class="o">=</span> <span class="nx">base64</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span></div><div class='line' id='LC4091'> <span class="nx">encoded1</span><span class="p">,</span> <span class="nx">encoded2</span><span class="p">,</span> <span class="nx">encoded3</span><span class="p">,</span> <span class="nx">encoded4</span><span class="p">;</span></div><div class='line' id='LC4092'><br/></div><div class='line' id='LC4093'> <span class="k">if</span> <span class="p">(</span><span class="nx">base64</span><span class="p">[</span><span class="nx">base64</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">===</span> <span class="s2">"="</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4094'> <span class="nx">bufferLength</span><span class="o">--</span><span class="p">;</span></div><div class='line' id='LC4095'> <span class="k">if</span> <span class="p">(</span><span class="nx">base64</span><span class="p">[</span><span class="nx">base64</span><span class="p">.</span><span class="nx">length</span> <span class="o">-</span> <span class="mi">2</span><span class="p">]</span> <span class="o">===</span> <span class="s2">"="</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4096'> <span class="nx">bufferLength</span><span class="o">--</span><span class="p">;</span></div><div class='line' id='LC4097'> <span class="p">}</span></div><div class='line' id='LC4098'> <span class="p">}</span></div><div class='line' id='LC4099'><br/></div><div class='line' id='LC4100'> <span class="kd">var</span> <span class="nx">arraybuffer</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ArrayBuffer</span><span class="p">(</span><span class="nx">bufferLength</span><span class="p">),</span></div><div class='line' id='LC4101'> <span class="nx">bytes</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Uint8Array</span><span class="p">(</span><span class="nx">arraybuffer</span><span class="p">);</span></div><div class='line' id='LC4102'><br/></div><div class='line' id='LC4103'> <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">+=</span><span class="mi">4</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4104'> <span class="nx">encoded1</span> <span class="o">=</span> <span class="nx">chars</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">base64</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC4105'> <span class="nx">encoded2</span> <span class="o">=</span> <span class="nx">chars</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">base64</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]);</span></div><div class='line' id='LC4106'> <span class="nx">encoded3</span> <span class="o">=</span> <span class="nx">chars</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">base64</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mi">2</span><span class="p">]);</span></div><div class='line' id='LC4107'> <span class="nx">encoded4</span> <span class="o">=</span> <span class="nx">chars</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">base64</span><span class="p">[</span><span class="nx">i</span><span class="o">+</span><span class="mi">3</span><span class="p">]);</span></div><div class='line' id='LC4108'><br/></div><div class='line' id='LC4109'> <span class="nx">bytes</span><span class="p">[</span><span class="nx">p</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="nx">encoded1</span> <span class="o"><<</span> <span class="mi">2</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">encoded2</span> <span class="o">>></span> <span class="mi">4</span><span class="p">);</span></div><div class='line' id='LC4110'> <span class="nx">bytes</span><span class="p">[</span><span class="nx">p</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="nx">encoded2</span> <span class="o">&</span> <span class="mi">15</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">4</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">encoded3</span> <span class="o">>></span> <span class="mi">2</span><span class="p">);</span></div><div class='line' id='LC4111'> <span class="nx">bytes</span><span class="p">[</span><span class="nx">p</span><span class="o">++</span><span class="p">]</span> <span class="o">=</span> <span class="p">((</span><span class="nx">encoded3</span> <span class="o">&</span> <span class="mi">3</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">6</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">encoded4</span> <span class="o">&</span> <span class="mi">63</span><span class="p">);</span></div><div class='line' id='LC4112'> <span class="p">}</span></div><div class='line' id='LC4113'><br/></div><div class='line' id='LC4114'> <span class="k">return</span> <span class="nx">arraybuffer</span><span class="p">;</span></div><div class='line' id='LC4115'> <span class="p">};</span></div><div class='line' id='LC4116'><span class="p">})(</span><span class="s2">"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"</span><span class="p">);</span></div><div class='line' id='LC4117'><br/></div><div class='line' id='LC4118'><span class="p">},{}],</span><span class="mi">27</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4119'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC4120'><span class="cm"> * Create a blob builder even when vendor prefixes exist</span></div><div class='line' id='LC4121'><span class="cm"> */</span></div><div class='line' id='LC4122'><br/></div><div class='line' id='LC4123'><span class="kd">var</span> <span class="nx">BlobBuilder</span> <span class="o">=</span> <span class="nx">global</span><span class="p">.</span><span class="nx">BlobBuilder</span></div><div class='line' id='LC4124'> <span class="o">||</span> <span class="nx">global</span><span class="p">.</span><span class="nx">WebKitBlobBuilder</span></div><div class='line' id='LC4125'> <span class="o">||</span> <span class="nx">global</span><span class="p">.</span><span class="nx">MSBlobBuilder</span></div><div class='line' id='LC4126'> <span class="o">||</span> <span class="nx">global</span><span class="p">.</span><span class="nx">MozBlobBuilder</span><span class="p">;</span></div><div class='line' id='LC4127'><br/></div><div class='line' id='LC4128'><span class="cm">/**</span></div><div class='line' id='LC4129'><span class="cm"> * Check if Blob constructor is supported</span></div><div class='line' id='LC4130'><span class="cm"> */</span></div><div class='line' id='LC4131'><br/></div><div class='line' id='LC4132'><span class="kd">var</span> <span class="nx">blobSupported</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC4133'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC4134'> <span class="kd">var</span> <span class="nx">b</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Blob</span><span class="p">([</span><span class="s1">'hi'</span><span class="p">]);</span></div><div class='line' id='LC4135'> <span class="k">return</span> <span class="nx">b</span><span class="p">.</span><span class="nx">size</span> <span class="o">==</span> <span class="mi">2</span><span class="p">;</span></div><div class='line' id='LC4136'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4137'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC4138'> <span class="p">}</span></div><div class='line' id='LC4139'><span class="p">})();</span></div><div class='line' id='LC4140'><br/></div><div class='line' id='LC4141'><span class="cm">/**</span></div><div class='line' id='LC4142'><span class="cm"> * Check if BlobBuilder is supported</span></div><div class='line' id='LC4143'><span class="cm"> */</span></div><div class='line' id='LC4144'><br/></div><div class='line' id='LC4145'><span class="kd">var</span> <span class="nx">blobBuilderSupported</span> <span class="o">=</span> <span class="nx">BlobBuilder</span></div><div class='line' id='LC4146'> <span class="o">&&</span> <span class="nx">BlobBuilder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">append</span></div><div class='line' id='LC4147'> <span class="o">&&</span> <span class="nx">BlobBuilder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">getBlob</span><span class="p">;</span></div><div class='line' id='LC4148'><br/></div><div class='line' id='LC4149'><span class="kd">function</span> <span class="nx">BlobBuilderConstructor</span><span class="p">(</span><span class="nx">ary</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4150'> <span class="nx">options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC4151'><br/></div><div class='line' id='LC4152'> <span class="kd">var</span> <span class="nx">bb</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">BlobBuilder</span><span class="p">();</span></div><div class='line' id='LC4153'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">ary</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4154'> <span class="nx">bb</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">ary</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC4155'> <span class="p">}</span></div><div class='line' id='LC4156'> <span class="k">return</span> <span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="o">?</span> <span class="nx">bb</span><span class="p">.</span><span class="nx">getBlob</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="o">:</span> <span class="nx">bb</span><span class="p">.</span><span class="nx">getBlob</span><span class="p">();</span></div><div class='line' id='LC4157'><span class="p">};</span></div><div class='line' id='LC4158'><br/></div><div class='line' id='LC4159'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC4160'> <span class="k">if</span> <span class="p">(</span><span class="nx">blobSupported</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4161'> <span class="k">return</span> <span class="nx">global</span><span class="p">.</span><span class="nx">Blob</span><span class="p">;</span></div><div class='line' id='LC4162'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">blobBuilderSupported</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4163'> <span class="k">return</span> <span class="nx">BlobBuilderConstructor</span><span class="p">;</span></div><div class='line' id='LC4164'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4165'> <span class="k">return</span> <span class="kc">undefined</span><span class="p">;</span></div><div class='line' id='LC4166'> <span class="p">}</span></div><div class='line' id='LC4167'><span class="p">})();</span></div><div class='line' id='LC4168'><br/></div><div class='line' id='LC4169'><span class="p">},{}],</span><span class="mi">28</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4170'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/*! http://mths.be/utf8js v2.0.0 by @mathias */</span></div><div class='line' id='LC4171'><span class="p">;(</span><span class="kd">function</span><span class="p">(</span><span class="nx">root</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4172'><br/></div><div class='line' id='LC4173'> <span class="c1">// Detect free variables `exports`</span></div><div class='line' id='LC4174'> <span class="kd">var</span> <span class="nx">freeExports</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">exports</span> <span class="o">==</span> <span class="s1">'object'</span> <span class="o">&&</span> <span class="nx">exports</span><span class="p">;</span></div><div class='line' id='LC4175'><br/></div><div class='line' id='LC4176'> <span class="c1">// Detect free variable `module`</span></div><div class='line' id='LC4177'> <span class="kd">var</span> <span class="nx">freeModule</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">module</span> <span class="o">==</span> <span class="s1">'object'</span> <span class="o">&&</span> <span class="nx">module</span> <span class="o">&&</span></div><div class='line' id='LC4178'> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">==</span> <span class="nx">freeExports</span> <span class="o">&&</span> <span class="nx">module</span><span class="p">;</span></div><div class='line' id='LC4179'><br/></div><div class='line' id='LC4180'> <span class="c1">// Detect free variable `global`, from Node.js or Browserified code,</span></div><div class='line' id='LC4181'> <span class="c1">// and use it as `root`</span></div><div class='line' id='LC4182'> <span class="kd">var</span> <span class="nx">freeGlobal</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">global</span> <span class="o">==</span> <span class="s1">'object'</span> <span class="o">&&</span> <span class="nx">global</span><span class="p">;</span></div><div class='line' id='LC4183'> <span class="k">if</span> <span class="p">(</span><span class="nx">freeGlobal</span><span class="p">.</span><span class="nx">global</span> <span class="o">===</span> <span class="nx">freeGlobal</span> <span class="o">||</span> <span class="nx">freeGlobal</span><span class="p">.</span><span class="nb">window</span> <span class="o">===</span> <span class="nx">freeGlobal</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4184'> <span class="nx">root</span> <span class="o">=</span> <span class="nx">freeGlobal</span><span class="p">;</span></div><div class='line' id='LC4185'> <span class="p">}</span></div><div class='line' id='LC4186'><br/></div><div class='line' id='LC4187'> <span class="cm">/*--------------------------------------------------------------------------*/</span></div><div class='line' id='LC4188'><br/></div><div class='line' id='LC4189'> <span class="kd">var</span> <span class="nx">stringFromCharCode</span> <span class="o">=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">;</span></div><div class='line' id='LC4190'><br/></div><div class='line' id='LC4191'> <span class="c1">// Taken from http://mths.be/punycode</span></div><div class='line' id='LC4192'> <span class="kd">function</span> <span class="nx">ucs2decode</span><span class="p">(</span><span class="nx">string</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4193'> <span class="kd">var</span> <span class="nx">output</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC4194'> <span class="kd">var</span> <span class="nx">counter</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC4195'> <span class="kd">var</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">string</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC4196'> <span class="kd">var</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC4197'> <span class="kd">var</span> <span class="nx">extra</span><span class="p">;</span></div><div class='line' id='LC4198'> <span class="k">while</span> <span class="p">(</span><span class="nx">counter</span> <span class="o"><</span> <span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4199'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">string</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">counter</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC4200'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">>=</span> <span class="mh">0xD800</span> <span class="o">&&</span> <span class="nx">value</span> <span class="o"><=</span> <span class="mh">0xDBFF</span> <span class="o">&&</span> <span class="nx">counter</span> <span class="o"><</span> <span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4201'> <span class="c1">// high surrogate, and there is a next character</span></div><div class='line' id='LC4202'> <span class="nx">extra</span> <span class="o">=</span> <span class="nx">string</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">counter</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC4203'> <span class="k">if</span> <span class="p">((</span><span class="nx">extra</span> <span class="o">&</span> <span class="mh">0xFC00</span><span class="p">)</span> <span class="o">==</span> <span class="mh">0xDC00</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// low surrogate</span></div><div class='line' id='LC4204'> <span class="nx">output</span><span class="p">.</span><span class="nx">push</span><span class="p">(((</span><span class="nx">value</span> <span class="o">&</span> <span class="mh">0x3FF</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">10</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="nx">extra</span> <span class="o">&</span> <span class="mh">0x3FF</span><span class="p">)</span> <span class="o">+</span> <span class="mh">0x10000</span><span class="p">);</span></div><div class='line' id='LC4205'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4206'> <span class="c1">// unmatched surrogate; only append this code unit, in case the next</span></div><div class='line' id='LC4207'> <span class="c1">// code unit is the high surrogate of a surrogate pair</span></div><div class='line' id='LC4208'> <span class="nx">output</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC4209'> <span class="nx">counter</span><span class="o">--</span><span class="p">;</span></div><div class='line' id='LC4210'> <span class="p">}</span></div><div class='line' id='LC4211'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4212'> <span class="nx">output</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC4213'> <span class="p">}</span></div><div class='line' id='LC4214'> <span class="p">}</span></div><div class='line' id='LC4215'> <span class="k">return</span> <span class="nx">output</span><span class="p">;</span></div><div class='line' id='LC4216'> <span class="p">}</span></div><div class='line' id='LC4217'><br/></div><div class='line' id='LC4218'> <span class="c1">// Taken from http://mths.be/punycode</span></div><div class='line' id='LC4219'> <span class="kd">function</span> <span class="nx">ucs2encode</span><span class="p">(</span><span class="nx">array</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4220'> <span class="kd">var</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">array</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC4221'> <span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC4222'> <span class="kd">var</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC4223'> <span class="kd">var</span> <span class="nx">output</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC4224'> <span class="k">while</span> <span class="p">(</span><span class="o">++</span><span class="nx">index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4225'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">array</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span></div><div class='line' id='LC4226'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">></span> <span class="mh">0xFFFF</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4227'> <span class="nx">value</span> <span class="o">-=</span> <span class="mh">0x10000</span><span class="p">;</span></div><div class='line' id='LC4228'> <span class="nx">output</span> <span class="o">+=</span> <span class="nx">stringFromCharCode</span><span class="p">(</span><span class="nx">value</span> <span class="o">>>></span> <span class="mi">10</span> <span class="o">&</span> <span class="mh">0x3FF</span> <span class="o">|</span> <span class="mh">0xD800</span><span class="p">);</span></div><div class='line' id='LC4229'> <span class="nx">value</span> <span class="o">=</span> <span class="mh">0xDC00</span> <span class="o">|</span> <span class="nx">value</span> <span class="o">&</span> <span class="mh">0x3FF</span><span class="p">;</span></div><div class='line' id='LC4230'> <span class="p">}</span></div><div class='line' id='LC4231'> <span class="nx">output</span> <span class="o">+=</span> <span class="nx">stringFromCharCode</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC4232'> <span class="p">}</span></div><div class='line' id='LC4233'> <span class="k">return</span> <span class="nx">output</span><span class="p">;</span></div><div class='line' id='LC4234'> <span class="p">}</span></div><div class='line' id='LC4235'><br/></div><div class='line' id='LC4236'> <span class="cm">/*--------------------------------------------------------------------------*/</span></div><div class='line' id='LC4237'><br/></div><div class='line' id='LC4238'> <span class="kd">function</span> <span class="nx">createByte</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">,</span> <span class="nx">shift</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4239'> <span class="k">return</span> <span class="nx">stringFromCharCode</span><span class="p">(((</span><span class="nx">codePoint</span> <span class="o">>></span> <span class="nx">shift</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0x3F</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0x80</span><span class="p">);</span></div><div class='line' id='LC4240'> <span class="p">}</span></div><div class='line' id='LC4241'><br/></div><div class='line' id='LC4242'> <span class="kd">function</span> <span class="nx">encodeCodePoint</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4243'> <span class="k">if</span> <span class="p">((</span><span class="nx">codePoint</span> <span class="o">&</span> <span class="mh">0xFFFFFF80</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// 1-byte sequence</span></div><div class='line' id='LC4244'> <span class="k">return</span> <span class="nx">stringFromCharCode</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">);</span></div><div class='line' id='LC4245'> <span class="p">}</span></div><div class='line' id='LC4246'> <span class="kd">var</span> <span class="nx">symbol</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC4247'> <span class="k">if</span> <span class="p">((</span><span class="nx">codePoint</span> <span class="o">&</span> <span class="mh">0xFFFFF800</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// 2-byte sequence</span></div><div class='line' id='LC4248'> <span class="nx">symbol</span> <span class="o">=</span> <span class="nx">stringFromCharCode</span><span class="p">(((</span><span class="nx">codePoint</span> <span class="o">>></span> <span class="mi">6</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0x1F</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0xC0</span><span class="p">);</span></div><div class='line' id='LC4249'> <span class="p">}</span></div><div class='line' id='LC4250'> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="nx">codePoint</span> <span class="o">&</span> <span class="mh">0xFFFF0000</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// 3-byte sequence</span></div><div class='line' id='LC4251'> <span class="nx">symbol</span> <span class="o">=</span> <span class="nx">stringFromCharCode</span><span class="p">(((</span><span class="nx">codePoint</span> <span class="o">>></span> <span class="mi">12</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0x0F</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0xE0</span><span class="p">);</span></div><div class='line' id='LC4252'> <span class="nx">symbol</span> <span class="o">+=</span> <span class="nx">createByte</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">,</span> <span class="mi">6</span><span class="p">);</span></div><div class='line' id='LC4253'> <span class="p">}</span></div><div class='line' id='LC4254'> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="nx">codePoint</span> <span class="o">&</span> <span class="mh">0xFFE00000</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// 4-byte sequence</span></div><div class='line' id='LC4255'> <span class="nx">symbol</span> <span class="o">=</span> <span class="nx">stringFromCharCode</span><span class="p">(((</span><span class="nx">codePoint</span> <span class="o">>></span> <span class="mi">18</span><span class="p">)</span> <span class="o">&</span> <span class="mh">0x07</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0xF0</span><span class="p">);</span></div><div class='line' id='LC4256'> <span class="nx">symbol</span> <span class="o">+=</span> <span class="nx">createByte</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">,</span> <span class="mi">12</span><span class="p">);</span></div><div class='line' id='LC4257'> <span class="nx">symbol</span> <span class="o">+=</span> <span class="nx">createByte</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">,</span> <span class="mi">6</span><span class="p">);</span></div><div class='line' id='LC4258'> <span class="p">}</span></div><div class='line' id='LC4259'> <span class="nx">symbol</span> <span class="o">+=</span> <span class="nx">stringFromCharCode</span><span class="p">((</span><span class="nx">codePoint</span> <span class="o">&</span> <span class="mh">0x3F</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0x80</span><span class="p">);</span></div><div class='line' id='LC4260'> <span class="k">return</span> <span class="nx">symbol</span><span class="p">;</span></div><div class='line' id='LC4261'> <span class="p">}</span></div><div class='line' id='LC4262'><br/></div><div class='line' id='LC4263'> <span class="kd">function</span> <span class="nx">utf8encode</span><span class="p">(</span><span class="nx">string</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4264'> <span class="kd">var</span> <span class="nx">codePoints</span> <span class="o">=</span> <span class="nx">ucs2decode</span><span class="p">(</span><span class="nx">string</span><span class="p">);</span></div><div class='line' id='LC4265'><br/></div><div class='line' id='LC4266'> <span class="c1">// console.log(JSON.stringify(codePoints.map(function(x) {</span></div><div class='line' id='LC4267'> <span class="c1">// return 'U+' + x.toString(16).toUpperCase();</span></div><div class='line' id='LC4268'> <span class="c1">// })));</span></div><div class='line' id='LC4269'><br/></div><div class='line' id='LC4270'> <span class="kd">var</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">codePoints</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC4271'> <span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC4272'> <span class="kd">var</span> <span class="nx">codePoint</span><span class="p">;</span></div><div class='line' id='LC4273'> <span class="kd">var</span> <span class="nx">byteString</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC4274'> <span class="k">while</span> <span class="p">(</span><span class="o">++</span><span class="nx">index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4275'> <span class="nx">codePoint</span> <span class="o">=</span> <span class="nx">codePoints</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span></div><div class='line' id='LC4276'> <span class="nx">byteString</span> <span class="o">+=</span> <span class="nx">encodeCodePoint</span><span class="p">(</span><span class="nx">codePoint</span><span class="p">);</span></div><div class='line' id='LC4277'> <span class="p">}</span></div><div class='line' id='LC4278'> <span class="k">return</span> <span class="nx">byteString</span><span class="p">;</span></div><div class='line' id='LC4279'> <span class="p">}</span></div><div class='line' id='LC4280'><br/></div><div class='line' id='LC4281'> <span class="cm">/*--------------------------------------------------------------------------*/</span></div><div class='line' id='LC4282'><br/></div><div class='line' id='LC4283'> <span class="kd">function</span> <span class="nx">readContinuationByte</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC4284'> <span class="k">if</span> <span class="p">(</span><span class="nx">byteIndex</span> <span class="o">>=</span> <span class="nx">byteCount</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4285'> <span class="k">throw</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Invalid byte index'</span><span class="p">);</span></div><div class='line' id='LC4286'> <span class="p">}</span></div><div class='line' id='LC4287'><br/></div><div class='line' id='LC4288'> <span class="kd">var</span> <span class="nx">continuationByte</span> <span class="o">=</span> <span class="nx">byteArray</span><span class="p">[</span><span class="nx">byteIndex</span><span class="p">]</span> <span class="o">&</span> <span class="mh">0xFF</span><span class="p">;</span></div><div class='line' id='LC4289'> <span class="nx">byteIndex</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC4290'><br/></div><div class='line' id='LC4291'> <span class="k">if</span> <span class="p">((</span><span class="nx">continuationByte</span> <span class="o">&</span> <span class="mh">0xC0</span><span class="p">)</span> <span class="o">==</span> <span class="mh">0x80</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4292'> <span class="k">return</span> <span class="nx">continuationByte</span> <span class="o">&</span> <span class="mh">0x3F</span><span class="p">;</span></div><div class='line' id='LC4293'> <span class="p">}</span></div><div class='line' id='LC4294'><br/></div><div class='line' id='LC4295'> <span class="c1">// If we end up here, it’s not a continuation byte</span></div><div class='line' id='LC4296'> <span class="k">throw</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Invalid continuation byte'</span><span class="p">);</span></div><div class='line' id='LC4297'> <span class="p">}</span></div><div class='line' id='LC4298'><br/></div><div class='line' id='LC4299'> <span class="kd">function</span> <span class="nx">decodeSymbol</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC4300'> <span class="kd">var</span> <span class="nx">byte1</span><span class="p">;</span></div><div class='line' id='LC4301'> <span class="kd">var</span> <span class="nx">byte2</span><span class="p">;</span></div><div class='line' id='LC4302'> <span class="kd">var</span> <span class="nx">byte3</span><span class="p">;</span></div><div class='line' id='LC4303'> <span class="kd">var</span> <span class="nx">byte4</span><span class="p">;</span></div><div class='line' id='LC4304'> <span class="kd">var</span> <span class="nx">codePoint</span><span class="p">;</span></div><div class='line' id='LC4305'><br/></div><div class='line' id='LC4306'> <span class="k">if</span> <span class="p">(</span><span class="nx">byteIndex</span> <span class="o">></span> <span class="nx">byteCount</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4307'> <span class="k">throw</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Invalid byte index'</span><span class="p">);</span></div><div class='line' id='LC4308'> <span class="p">}</span></div><div class='line' id='LC4309'><br/></div><div class='line' id='LC4310'> <span class="k">if</span> <span class="p">(</span><span class="nx">byteIndex</span> <span class="o">==</span> <span class="nx">byteCount</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4311'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC4312'> <span class="p">}</span></div><div class='line' id='LC4313'><br/></div><div class='line' id='LC4314'> <span class="c1">// Read first byte</span></div><div class='line' id='LC4315'> <span class="nx">byte1</span> <span class="o">=</span> <span class="nx">byteArray</span><span class="p">[</span><span class="nx">byteIndex</span><span class="p">]</span> <span class="o">&</span> <span class="mh">0xFF</span><span class="p">;</span></div><div class='line' id='LC4316'> <span class="nx">byteIndex</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC4317'><br/></div><div class='line' id='LC4318'> <span class="c1">// 1-byte sequence (no continuation bytes)</span></div><div class='line' id='LC4319'> <span class="k">if</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0x80</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4320'> <span class="k">return</span> <span class="nx">byte1</span><span class="p">;</span></div><div class='line' id='LC4321'> <span class="p">}</span></div><div class='line' id='LC4322'><br/></div><div class='line' id='LC4323'> <span class="c1">// 2-byte sequence</span></div><div class='line' id='LC4324'> <span class="k">if</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0xE0</span><span class="p">)</span> <span class="o">==</span> <span class="mh">0xC0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4325'> <span class="kd">var</span> <span class="nx">byte2</span> <span class="o">=</span> <span class="nx">readContinuationByte</span><span class="p">();</span></div><div class='line' id='LC4326'> <span class="nx">codePoint</span> <span class="o">=</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0x1F</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">6</span><span class="p">)</span> <span class="o">|</span> <span class="nx">byte2</span><span class="p">;</span></div><div class='line' id='LC4327'> <span class="k">if</span> <span class="p">(</span><span class="nx">codePoint</span> <span class="o">>=</span> <span class="mh">0x80</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4328'> <span class="k">return</span> <span class="nx">codePoint</span><span class="p">;</span></div><div class='line' id='LC4329'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4330'> <span class="k">throw</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Invalid continuation byte'</span><span class="p">);</span></div><div class='line' id='LC4331'> <span class="p">}</span></div><div class='line' id='LC4332'> <span class="p">}</span></div><div class='line' id='LC4333'><br/></div><div class='line' id='LC4334'> <span class="c1">// 3-byte sequence (may include unpaired surrogates)</span></div><div class='line' id='LC4335'> <span class="k">if</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0xF0</span><span class="p">)</span> <span class="o">==</span> <span class="mh">0xE0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4336'> <span class="nx">byte2</span> <span class="o">=</span> <span class="nx">readContinuationByte</span><span class="p">();</span></div><div class='line' id='LC4337'> <span class="nx">byte3</span> <span class="o">=</span> <span class="nx">readContinuationByte</span><span class="p">();</span></div><div class='line' id='LC4338'> <span class="nx">codePoint</span> <span class="o">=</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0x0F</span><span class="p">)</span> <span class="o"><<</span> <span class="mi">12</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">byte2</span> <span class="o"><<</span> <span class="mi">6</span><span class="p">)</span> <span class="o">|</span> <span class="nx">byte3</span><span class="p">;</span></div><div class='line' id='LC4339'> <span class="k">if</span> <span class="p">(</span><span class="nx">codePoint</span> <span class="o">>=</span> <span class="mh">0x0800</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4340'> <span class="k">return</span> <span class="nx">codePoint</span><span class="p">;</span></div><div class='line' id='LC4341'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4342'> <span class="k">throw</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Invalid continuation byte'</span><span class="p">);</span></div><div class='line' id='LC4343'> <span class="p">}</span></div><div class='line' id='LC4344'> <span class="p">}</span></div><div class='line' id='LC4345'><br/></div><div class='line' id='LC4346'> <span class="c1">// 4-byte sequence</span></div><div class='line' id='LC4347'> <span class="k">if</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0xF8</span><span class="p">)</span> <span class="o">==</span> <span class="mh">0xF0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4348'> <span class="nx">byte2</span> <span class="o">=</span> <span class="nx">readContinuationByte</span><span class="p">();</span></div><div class='line' id='LC4349'> <span class="nx">byte3</span> <span class="o">=</span> <span class="nx">readContinuationByte</span><span class="p">();</span></div><div class='line' id='LC4350'> <span class="nx">byte4</span> <span class="o">=</span> <span class="nx">readContinuationByte</span><span class="p">();</span></div><div class='line' id='LC4351'> <span class="nx">codePoint</span> <span class="o">=</span> <span class="p">((</span><span class="nx">byte1</span> <span class="o">&</span> <span class="mh">0x0F</span><span class="p">)</span> <span class="o"><<</span> <span class="mh">0x12</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="nx">byte2</span> <span class="o"><<</span> <span class="mh">0x0C</span><span class="p">)</span> <span class="o">|</span></div><div class='line' id='LC4352'> <span class="p">(</span><span class="nx">byte3</span> <span class="o"><<</span> <span class="mh">0x06</span><span class="p">)</span> <span class="o">|</span> <span class="nx">byte4</span><span class="p">;</span></div><div class='line' id='LC4353'> <span class="k">if</span> <span class="p">(</span><span class="nx">codePoint</span> <span class="o">>=</span> <span class="mh">0x010000</span> <span class="o">&&</span> <span class="nx">codePoint</span> <span class="o"><=</span> <span class="mh">0x10FFFF</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4354'> <span class="k">return</span> <span class="nx">codePoint</span><span class="p">;</span></div><div class='line' id='LC4355'> <span class="p">}</span></div><div class='line' id='LC4356'> <span class="p">}</span></div><div class='line' id='LC4357'><br/></div><div class='line' id='LC4358'> <span class="k">throw</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Invalid UTF-8 detected'</span><span class="p">);</span></div><div class='line' id='LC4359'> <span class="p">}</span></div><div class='line' id='LC4360'><br/></div><div class='line' id='LC4361'> <span class="kd">var</span> <span class="nx">byteArray</span><span class="p">;</span></div><div class='line' id='LC4362'> <span class="kd">var</span> <span class="nx">byteCount</span><span class="p">;</span></div><div class='line' id='LC4363'> <span class="kd">var</span> <span class="nx">byteIndex</span><span class="p">;</span></div><div class='line' id='LC4364'> <span class="kd">function</span> <span class="nx">utf8decode</span><span class="p">(</span><span class="nx">byteString</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4365'> <span class="nx">byteArray</span> <span class="o">=</span> <span class="nx">ucs2decode</span><span class="p">(</span><span class="nx">byteString</span><span class="p">);</span></div><div class='line' id='LC4366'> <span class="nx">byteCount</span> <span class="o">=</span> <span class="nx">byteArray</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC4367'> <span class="nx">byteIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC4368'> <span class="kd">var</span> <span class="nx">codePoints</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC4369'> <span class="kd">var</span> <span class="nx">tmp</span><span class="p">;</span></div><div class='line' id='LC4370'> <span class="k">while</span> <span class="p">((</span><span class="nx">tmp</span> <span class="o">=</span> <span class="nx">decodeSymbol</span><span class="p">())</span> <span class="o">!==</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4371'> <span class="nx">codePoints</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">tmp</span><span class="p">);</span></div><div class='line' id='LC4372'> <span class="p">}</span></div><div class='line' id='LC4373'> <span class="k">return</span> <span class="nx">ucs2encode</span><span class="p">(</span><span class="nx">codePoints</span><span class="p">);</span></div><div class='line' id='LC4374'> <span class="p">}</span></div><div class='line' id='LC4375'><br/></div><div class='line' id='LC4376'> <span class="cm">/*--------------------------------------------------------------------------*/</span></div><div class='line' id='LC4377'><br/></div><div class='line' id='LC4378'> <span class="kd">var</span> <span class="nx">utf8</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC4379'> <span class="s1">'version'</span><span class="o">:</span> <span class="s1">'2.0.0'</span><span class="p">,</span></div><div class='line' id='LC4380'> <span class="s1">'encode'</span><span class="o">:</span> <span class="nx">utf8encode</span><span class="p">,</span></div><div class='line' id='LC4381'> <span class="s1">'decode'</span><span class="o">:</span> <span class="nx">utf8decode</span></div><div class='line' id='LC4382'> <span class="p">};</span></div><div class='line' id='LC4383'><br/></div><div class='line' id='LC4384'> <span class="c1">// Some AMD build optimizers, like r.js, check for specific condition patterns</span></div><div class='line' id='LC4385'> <span class="c1">// like the following:</span></div><div class='line' id='LC4386'> <span class="k">if</span> <span class="p">(</span></div><div class='line' id='LC4387'> <span class="k">typeof</span> <span class="nx">define</span> <span class="o">==</span> <span class="s1">'function'</span> <span class="o">&&</span></div><div class='line' id='LC4388'> <span class="k">typeof</span> <span class="nx">define</span><span class="p">.</span><span class="nx">amd</span> <span class="o">==</span> <span class="s1">'object'</span> <span class="o">&&</span></div><div class='line' id='LC4389'> <span class="nx">define</span><span class="p">.</span><span class="nx">amd</span></div><div class='line' id='LC4390'> <span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4391'> <span class="nx">define</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC4392'> <span class="k">return</span> <span class="nx">utf8</span><span class="p">;</span></div><div class='line' id='LC4393'> <span class="p">});</span></div><div class='line' id='LC4394'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">freeExports</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">freeExports</span><span class="p">.</span><span class="nx">nodeType</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4395'> <span class="k">if</span> <span class="p">(</span><span class="nx">freeModule</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// in Node.js or RingoJS v0.8.0+</span></div><div class='line' id='LC4396'> <span class="nx">freeModule</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">utf8</span><span class="p">;</span></div><div class='line' id='LC4397'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// in Narwhal or RingoJS v0.7.0-</span></div><div class='line' id='LC4398'> <span class="kd">var</span> <span class="nx">object</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC4399'> <span class="kd">var</span> <span class="nx">hasOwnProperty</span> <span class="o">=</span> <span class="nx">object</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">;</span></div><div class='line' id='LC4400'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">utf8</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4401'> <span class="nx">hasOwnProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">utf8</span><span class="p">,</span> <span class="nx">key</span><span class="p">)</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">freeExports</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">utf8</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span></div><div class='line' id='LC4402'> <span class="p">}</span></div><div class='line' id='LC4403'> <span class="p">}</span></div><div class='line' id='LC4404'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// in Rhino or a web browser</span></div><div class='line' id='LC4405'> <span class="nx">root</span><span class="p">.</span><span class="nx">utf8</span> <span class="o">=</span> <span class="nx">utf8</span><span class="p">;</span></div><div class='line' id='LC4406'> <span class="p">}</span></div><div class='line' id='LC4407'><br/></div><div class='line' id='LC4408'><span class="p">}(</span><span class="k">this</span><span class="p">));</span></div><div class='line' id='LC4409'><br/></div><div class='line' id='LC4410'><span class="p">},{}],</span><span class="mi">29</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4411'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC4412'><span class="cm"> * JSON parse.</span></div><div class='line' id='LC4413'><span class="cm"> *</span></div><div class='line' id='LC4414'><span class="cm"> * @see Based on jQuery#parseJSON (MIT) and JSON2</span></div><div class='line' id='LC4415'><span class="cm"> * @api private</span></div><div class='line' id='LC4416'><span class="cm"> */</span></div><div class='line' id='LC4417'><br/></div><div class='line' id='LC4418'><span class="kd">var</span> <span class="nx">rvalidchars</span> <span class="o">=</span> <span class="sr">/^[\],:{}\s]*$/</span><span class="p">;</span></div><div class='line' id='LC4419'><span class="kd">var</span> <span class="nx">rvalidescape</span> <span class="o">=</span> <span class="sr">/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g</span><span class="p">;</span></div><div class='line' id='LC4420'><span class="kd">var</span> <span class="nx">rvalidtokens</span> <span class="o">=</span> <span class="sr">/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g</span><span class="p">;</span></div><div class='line' id='LC4421'><span class="kd">var</span> <span class="nx">rvalidbraces</span> <span class="o">=</span> <span class="sr">/(?:^|:|,)(?:\s*\[)+/g</span><span class="p">;</span></div><div class='line' id='LC4422'><span class="kd">var</span> <span class="nx">rtrimLeft</span> <span class="o">=</span> <span class="sr">/^\s+/</span><span class="p">;</span></div><div class='line' id='LC4423'><span class="kd">var</span> <span class="nx">rtrimRight</span> <span class="o">=</span> <span class="sr">/\s+$/</span><span class="p">;</span></div><div class='line' id='LC4424'><br/></div><div class='line' id='LC4425'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span> <span class="nx">parsejson</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4426'> <span class="k">if</span> <span class="p">(</span><span class="s1">'string'</span> <span class="o">!=</span> <span class="k">typeof</span> <span class="nx">data</span> <span class="o">||</span> <span class="o">!</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4427'> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC4428'> <span class="p">}</span></div><div class='line' id='LC4429'><br/></div><div class='line' id='LC4430'> <span class="nx">data</span> <span class="o">=</span> <span class="nx">data</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rtrimLeft</span><span class="p">,</span> <span class="s1">''</span><span class="p">).</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rtrimRight</span><span class="p">,</span> <span class="s1">''</span><span class="p">);</span></div><div class='line' id='LC4431'><br/></div><div class='line' id='LC4432'> <span class="c1">// Attempt to parse using the native JSON parser first</span></div><div class='line' id='LC4433'> <span class="k">if</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">JSON</span> <span class="o">&&</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4434'> <span class="k">return</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC4435'> <span class="p">}</span></div><div class='line' id='LC4436'><br/></div><div class='line' id='LC4437'> <span class="k">if</span> <span class="p">(</span><span class="nx">rvalidchars</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rvalidescape</span><span class="p">,</span> <span class="s1">'@'</span><span class="p">)</span></div><div class='line' id='LC4438'> <span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rvalidtokens</span><span class="p">,</span> <span class="s1">']'</span><span class="p">)</span></div><div class='line' id='LC4439'> <span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="nx">rvalidbraces</span><span class="p">,</span> <span class="s1">''</span><span class="p">)))</span> <span class="p">{</span></div><div class='line' id='LC4440'> <span class="k">return</span> <span class="p">(</span><span class="k">new</span> <span class="nb">Function</span><span class="p">(</span><span class="s1">'return '</span> <span class="o">+</span> <span class="nx">data</span><span class="p">))();</span></div><div class='line' id='LC4441'> <span class="p">}</span></div><div class='line' id='LC4442'><span class="p">};</span></div><div class='line' id='LC4443'><span class="p">},{}],</span><span class="mi">30</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4444'><span class="cm">/**</span></div><div class='line' id='LC4445'><span class="cm"> * Compiles a querystring</span></div><div class='line' id='LC4446'><span class="cm"> * Returns string representation of the object</span></div><div class='line' id='LC4447'><span class="cm"> *</span></div><div class='line' id='LC4448'><span class="cm"> * @param {Object}</span></div><div class='line' id='LC4449'><span class="cm"> * @api private</span></div><div class='line' id='LC4450'><span class="cm"> */</span></div><div class='line' id='LC4451'><br/></div><div class='line' id='LC4452'><span class="nx">exports</span><span class="p">.</span><span class="nx">encode</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4453'> <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC4454'><br/></div><div class='line' id='LC4455'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4456'> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">(</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4457'> <span class="k">if</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="nx">str</span> <span class="o">+=</span> <span class="s1">'&'</span><span class="p">;</span></div><div class='line' id='LC4458'> <span class="nx">str</span> <span class="o">+=</span> <span class="nb">encodeURIComponent</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="o">+</span> <span class="s1">'='</span> <span class="o">+</span> <span class="nb">encodeURIComponent</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC4459'> <span class="p">}</span></div><div class='line' id='LC4460'> <span class="p">}</span></div><div class='line' id='LC4461'><br/></div><div class='line' id='LC4462'> <span class="k">return</span> <span class="nx">str</span><span class="p">;</span></div><div class='line' id='LC4463'><span class="p">};</span></div><div class='line' id='LC4464'><br/></div><div class='line' id='LC4465'><span class="cm">/**</span></div><div class='line' id='LC4466'><span class="cm"> * Parses a simple querystring into an object</span></div><div class='line' id='LC4467'><span class="cm"> *</span></div><div class='line' id='LC4468'><span class="cm"> * @param {String} qs</span></div><div class='line' id='LC4469'><span class="cm"> * @api private</span></div><div class='line' id='LC4470'><span class="cm"> */</span></div><div class='line' id='LC4471'><br/></div><div class='line' id='LC4472'><span class="nx">exports</span><span class="p">.</span><span class="nx">decode</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">qs</span><span class="p">){</span></div><div class='line' id='LC4473'> <span class="kd">var</span> <span class="nx">qry</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC4474'> <span class="kd">var</span> <span class="nx">pairs</span> <span class="o">=</span> <span class="nx">qs</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s1">'&'</span><span class="p">);</span></div><div class='line' id='LC4475'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">l</span> <span class="o">=</span> <span class="nx">pairs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">l</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4476'> <span class="kd">var</span> <span class="nx">pair</span> <span class="o">=</span> <span class="nx">pairs</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">split</span><span class="p">(</span><span class="s1">'='</span><span class="p">);</span></div><div class='line' id='LC4477'> <span class="nx">qry</span><span class="p">[</span><span class="nb">decodeURIComponent</span><span class="p">(</span><span class="nx">pair</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span> <span class="o">=</span> <span class="nb">decodeURIComponent</span><span class="p">(</span><span class="nx">pair</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span></div><div class='line' id='LC4478'> <span class="p">}</span></div><div class='line' id='LC4479'> <span class="k">return</span> <span class="nx">qry</span><span class="p">;</span></div><div class='line' id='LC4480'><span class="p">};</span></div><div class='line' id='LC4481'><br/></div><div class='line' id='LC4482'><span class="p">},{}],</span><span class="mi">31</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4483'><br/></div><div class='line' id='LC4484'><span class="cm">/**</span></div><div class='line' id='LC4485'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC4486'><span class="cm"> */</span></div><div class='line' id='LC4487'><br/></div><div class='line' id='LC4488'><span class="kd">var</span> <span class="nx">global</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span> <span class="p">})();</span></div><div class='line' id='LC4489'><br/></div><div class='line' id='LC4490'><span class="cm">/**</span></div><div class='line' id='LC4491'><span class="cm"> * WebSocket constructor.</span></div><div class='line' id='LC4492'><span class="cm"> */</span></div><div class='line' id='LC4493'><br/></div><div class='line' id='LC4494'><span class="kd">var</span> <span class="nx">WebSocket</span> <span class="o">=</span> <span class="nx">global</span><span class="p">.</span><span class="nx">WebSocket</span> <span class="o">||</span> <span class="nx">global</span><span class="p">.</span><span class="nx">MozWebSocket</span><span class="p">;</span></div><div class='line' id='LC4495'><br/></div><div class='line' id='LC4496'><span class="cm">/**</span></div><div class='line' id='LC4497'><span class="cm"> * Module exports.</span></div><div class='line' id='LC4498'><span class="cm"> */</span></div><div class='line' id='LC4499'><br/></div><div class='line' id='LC4500'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">WebSocket</span> <span class="o">?</span> <span class="nx">ws</span> <span class="o">:</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC4501'><br/></div><div class='line' id='LC4502'><span class="cm">/**</span></div><div class='line' id='LC4503'><span class="cm"> * WebSocket constructor.</span></div><div class='line' id='LC4504'><span class="cm"> *</span></div><div class='line' id='LC4505'><span class="cm"> * The third `opts` options object gets ignored in web browsers, since it's</span></div><div class='line' id='LC4506'><span class="cm"> * non-standard, and throws a TypeError if passed to the constructor.</span></div><div class='line' id='LC4507'><span class="cm"> * See: https://github.com/einaros/ws/issues/227</span></div><div class='line' id='LC4508'><span class="cm"> *</span></div><div class='line' id='LC4509'><span class="cm"> * @param {String} uri</span></div><div class='line' id='LC4510'><span class="cm"> * @param {Array} protocols (optional)</span></div><div class='line' id='LC4511'><span class="cm"> * @param {Object) opts (optional)</span></div><div class='line' id='LC4512'><span class="cm"> * @api public</span></div><div class='line' id='LC4513'><span class="cm"> */</span></div><div class='line' id='LC4514'><br/></div><div class='line' id='LC4515'><span class="kd">function</span> <span class="nx">ws</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">protocols</span><span class="p">,</span> <span class="nx">opts</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4516'> <span class="kd">var</span> <span class="nx">instance</span><span class="p">;</span></div><div class='line' id='LC4517'> <span class="k">if</span> <span class="p">(</span><span class="nx">protocols</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4518'> <span class="nx">instance</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">WebSocket</span><span class="p">(</span><span class="nx">uri</span><span class="p">,</span> <span class="nx">protocols</span><span class="p">);</span></div><div class='line' id='LC4519'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4520'> <span class="nx">instance</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">WebSocket</span><span class="p">(</span><span class="nx">uri</span><span class="p">);</span></div><div class='line' id='LC4521'> <span class="p">}</span></div><div class='line' id='LC4522'> <span class="k">return</span> <span class="nx">instance</span><span class="p">;</span></div><div class='line' id='LC4523'><span class="p">}</span></div><div class='line' id='LC4524'><br/></div><div class='line' id='LC4525'><span class="k">if</span> <span class="p">(</span><span class="nx">WebSocket</span><span class="p">)</span> <span class="nx">ws</span><span class="p">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="nx">WebSocket</span><span class="p">.</span><span class="nx">prototype</span><span class="p">;</span></div><div class='line' id='LC4526'><br/></div><div class='line' id='LC4527'><span class="p">},{}],</span><span class="mi">32</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4528'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/*</span></div><div class='line' id='LC4529'><span class="cm"> * Module requirements.</span></div><div class='line' id='LC4530'><span class="cm"> */</span></div><div class='line' id='LC4531'><br/></div><div class='line' id='LC4532'><span class="kd">var</span> <span class="nx">isArray</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'isarray'</span><span class="p">);</span></div><div class='line' id='LC4533'><br/></div><div class='line' id='LC4534'><span class="cm">/**</span></div><div class='line' id='LC4535'><span class="cm"> * Module exports.</span></div><div class='line' id='LC4536'><span class="cm"> */</span></div><div class='line' id='LC4537'><br/></div><div class='line' id='LC4538'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">hasBinary</span><span class="p">;</span></div><div class='line' id='LC4539'><br/></div><div class='line' id='LC4540'><span class="cm">/**</span></div><div class='line' id='LC4541'><span class="cm"> * Checks for binary data.</span></div><div class='line' id='LC4542'><span class="cm"> *</span></div><div class='line' id='LC4543'><span class="cm"> * Right now only Buffer and ArrayBuffer are supported..</span></div><div class='line' id='LC4544'><span class="cm"> *</span></div><div class='line' id='LC4545'><span class="cm"> * @param {Object} anything</span></div><div class='line' id='LC4546'><span class="cm"> * @api public</span></div><div class='line' id='LC4547'><span class="cm"> */</span></div><div class='line' id='LC4548'><br/></div><div class='line' id='LC4549'><span class="kd">function</span> <span class="nx">hasBinary</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4550'><br/></div><div class='line' id='LC4551'> <span class="kd">function</span> <span class="nx">recursiveCheckForBinary</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span> </div><div class='line' id='LC4552'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">obj</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC4553'><br/></div><div class='line' id='LC4554'> <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">Buffer</span> <span class="o">&&</span> <span class="nx">Buffer</span><span class="p">.</span><span class="nx">isBuffer</span><span class="p">(</span><span class="nx">obj</span><span class="p">))</span> <span class="o">||</span></div><div class='line' id='LC4555'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">ArrayBuffer</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">ArrayBuffer</span><span class="p">)</span> <span class="o">||</span></div><div class='line' id='LC4556'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">Blob</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">Blob</span><span class="p">)</span> <span class="o">||</span></div><div class='line' id='LC4557'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">File</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">File</span><span class="p">)</span></div><div class='line' id='LC4558'> <span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4559'> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC4560'> <span class="p">}</span></div><div class='line' id='LC4561'><br/></div><div class='line' id='LC4562'> <span class="k">if</span> <span class="p">(</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">obj</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4563'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4564'> <span class="k">if</span> <span class="p">(</span><span class="nx">recursiveCheckForBinary</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span></div><div class='line' id='LC4565'> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC4566'> <span class="p">}</span></div><div class='line' id='LC4567'> <span class="p">}</span></div><div class='line' id='LC4568'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span> <span class="o">&&</span> <span class="s1">'object'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4569'> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">toJSON</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4570'> <span class="nx">obj</span> <span class="o">=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">toJSON</span><span class="p">();</span></div><div class='line' id='LC4571'> <span class="p">}</span></div><div class='line' id='LC4572'><br/></div><div class='line' id='LC4573'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4574'> <span class="k">if</span> <span class="p">(</span><span class="nx">recursiveCheckForBinary</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">]))</span> <span class="p">{</span></div><div class='line' id='LC4575'> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC4576'> <span class="p">}</span></div><div class='line' id='LC4577'> <span class="p">}</span></div><div class='line' id='LC4578'> <span class="p">}</span></div><div class='line' id='LC4579'><br/></div><div class='line' id='LC4580'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC4581'> <span class="p">}</span></div><div class='line' id='LC4582'><br/></div><div class='line' id='LC4583'> <span class="k">return</span> <span class="nx">recursiveCheckForBinary</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC4584'><span class="p">}</span></div><div class='line' id='LC4585'><br/></div><div class='line' id='LC4586'><span class="p">},{</span><span class="s2">"isarray"</span><span class="o">:</span><span class="mi">33</span><span class="p">}],</span><span class="mi">33</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4587'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nb">Array</span><span class="p">.</span><span class="nx">isArray</span> <span class="o">||</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4588'> <span class="k">return</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span> <span class="o">==</span> <span class="s1">'[object Array]'</span><span class="p">;</span></div><div class='line' id='LC4589'><span class="p">};</span></div><div class='line' id='LC4590'><br/></div><div class='line' id='LC4591'><span class="p">},{}],</span><span class="mi">34</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4592'><br/></div><div class='line' id='LC4593'><span class="cm">/**</span></div><div class='line' id='LC4594'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC4595'><span class="cm"> */</span></div><div class='line' id='LC4596'><br/></div><div class='line' id='LC4597'><span class="kd">var</span> <span class="nx">global</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'global'</span><span class="p">);</span></div><div class='line' id='LC4598'><br/></div><div class='line' id='LC4599'><span class="cm">/**</span></div><div class='line' id='LC4600'><span class="cm"> * Module exports.</span></div><div class='line' id='LC4601'><span class="cm"> *</span></div><div class='line' id='LC4602'><span class="cm"> * Logic borrowed from Modernizr:</span></div><div class='line' id='LC4603'><span class="cm"> *</span></div><div class='line' id='LC4604'><span class="cm"> * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js</span></div><div class='line' id='LC4605'><span class="cm"> */</span></div><div class='line' id='LC4606'><br/></div><div class='line' id='LC4607'><span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC4608'> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="s1">'XMLHttpRequest'</span> <span class="k">in</span> <span class="nx">global</span> <span class="o">&&</span></div><div class='line' id='LC4609'> <span class="s1">'withCredentials'</span> <span class="k">in</span> <span class="k">new</span> <span class="nx">global</span><span class="p">.</span><span class="nx">XMLHttpRequest</span><span class="p">();</span></div><div class='line' id='LC4610'><span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4611'> <span class="c1">// if XMLHttp support is disabled in IE then it will throw</span></div><div class='line' id='LC4612'> <span class="c1">// when trying to create</span></div><div class='line' id='LC4613'> <span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC4614'><span class="p">}</span></div><div class='line' id='LC4615'><br/></div><div class='line' id='LC4616'><span class="p">},{</span><span class="s2">"global"</span><span class="o">:</span><span class="mi">35</span><span class="p">}],</span><span class="mi">35</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4617'><br/></div><div class='line' id='LC4618'><span class="cm">/**</span></div><div class='line' id='LC4619'><span class="cm"> * Returns `this`. Execute this without a "context" (i.e. without it being</span></div><div class='line' id='LC4620'><span class="cm"> * attached to an object of the left-hand side), and `this` points to the</span></div><div class='line' id='LC4621'><span class="cm"> * "global" scope of the current JS execution.</span></div><div class='line' id='LC4622'><span class="cm"> */</span></div><div class='line' id='LC4623'><br/></div><div class='line' id='LC4624'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span><span class="p">;</span> <span class="p">})();</span></div><div class='line' id='LC4625'><br/></div><div class='line' id='LC4626'><span class="p">},{}],</span><span class="mi">36</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4627'><br/></div><div class='line' id='LC4628'><span class="kd">var</span> <span class="nx">indexOf</span> <span class="o">=</span> <span class="p">[].</span><span class="nx">indexOf</span><span class="p">;</span></div><div class='line' id='LC4629'><br/></div><div class='line' id='LC4630'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">arr</span><span class="p">,</span> <span class="nx">obj</span><span class="p">){</span></div><div class='line' id='LC4631'> <span class="k">if</span> <span class="p">(</span><span class="nx">indexOf</span><span class="p">)</span> <span class="k">return</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC4632'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">arr</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="o">++</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4633'> <span class="k">if</span> <span class="p">(</span><span class="nx">arr</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="nx">obj</span><span class="p">)</span> <span class="k">return</span> <span class="nx">i</span><span class="p">;</span></div><div class='line' id='LC4634'> <span class="p">}</span></div><div class='line' id='LC4635'> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC4636'><span class="p">};</span></div><div class='line' id='LC4637'><span class="p">},{}],</span><span class="mi">37</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4638'><br/></div><div class='line' id='LC4639'><span class="cm">/**</span></div><div class='line' id='LC4640'><span class="cm"> * HOP ref.</span></div><div class='line' id='LC4641'><span class="cm"> */</span></div><div class='line' id='LC4642'><br/></div><div class='line' id='LC4643'><span class="kd">var</span> <span class="nx">has</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">hasOwnProperty</span><span class="p">;</span></div><div class='line' id='LC4644'><br/></div><div class='line' id='LC4645'><span class="cm">/**</span></div><div class='line' id='LC4646'><span class="cm"> * Return own keys in `obj`.</span></div><div class='line' id='LC4647'><span class="cm"> *</span></div><div class='line' id='LC4648'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC4649'><span class="cm"> * @return {Array}</span></div><div class='line' id='LC4650'><span class="cm"> * @api public</span></div><div class='line' id='LC4651'><span class="cm"> */</span></div><div class='line' id='LC4652'><br/></div><div class='line' id='LC4653'><span class="nx">exports</span><span class="p">.</span><span class="nx">keys</span> <span class="o">=</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">keys</span> <span class="o">||</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">){</span></div><div class='line' id='LC4654'> <span class="kd">var</span> <span class="nx">keys</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC4655'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4656'> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4657'> <span class="nx">keys</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span></div><div class='line' id='LC4658'> <span class="p">}</span></div><div class='line' id='LC4659'> <span class="p">}</span></div><div class='line' id='LC4660'> <span class="k">return</span> <span class="nx">keys</span><span class="p">;</span></div><div class='line' id='LC4661'><span class="p">};</span></div><div class='line' id='LC4662'><br/></div><div class='line' id='LC4663'><span class="cm">/**</span></div><div class='line' id='LC4664'><span class="cm"> * Return own values in `obj`.</span></div><div class='line' id='LC4665'><span class="cm"> *</span></div><div class='line' id='LC4666'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC4667'><span class="cm"> * @return {Array}</span></div><div class='line' id='LC4668'><span class="cm"> * @api public</span></div><div class='line' id='LC4669'><span class="cm"> */</span></div><div class='line' id='LC4670'><br/></div><div class='line' id='LC4671'><span class="nx">exports</span><span class="p">.</span><span class="nx">values</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">){</span></div><div class='line' id='LC4672'> <span class="kd">var</span> <span class="nx">vals</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC4673'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4674'> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4675'> <span class="nx">vals</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span></div><div class='line' id='LC4676'> <span class="p">}</span></div><div class='line' id='LC4677'> <span class="p">}</span></div><div class='line' id='LC4678'> <span class="k">return</span> <span class="nx">vals</span><span class="p">;</span></div><div class='line' id='LC4679'><span class="p">};</span></div><div class='line' id='LC4680'><br/></div><div class='line' id='LC4681'><span class="cm">/**</span></div><div class='line' id='LC4682'><span class="cm"> * Merge `b` into `a`.</span></div><div class='line' id='LC4683'><span class="cm"> *</span></div><div class='line' id='LC4684'><span class="cm"> * @param {Object} a</span></div><div class='line' id='LC4685'><span class="cm"> * @param {Object} b</span></div><div class='line' id='LC4686'><span class="cm"> * @return {Object} a</span></div><div class='line' id='LC4687'><span class="cm"> * @api public</span></div><div class='line' id='LC4688'><span class="cm"> */</span></div><div class='line' id='LC4689'><br/></div><div class='line' id='LC4690'><span class="nx">exports</span><span class="p">.</span><span class="nx">merge</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">a</span><span class="p">,</span> <span class="nx">b</span><span class="p">){</span></div><div class='line' id='LC4691'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">b</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4692'> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">b</span><span class="p">,</span> <span class="nx">key</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4693'> <span class="nx">a</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">b</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span></div><div class='line' id='LC4694'> <span class="p">}</span></div><div class='line' id='LC4695'> <span class="p">}</span></div><div class='line' id='LC4696'> <span class="k">return</span> <span class="nx">a</span><span class="p">;</span></div><div class='line' id='LC4697'><span class="p">};</span></div><div class='line' id='LC4698'><br/></div><div class='line' id='LC4699'><span class="cm">/**</span></div><div class='line' id='LC4700'><span class="cm"> * Return length of `obj`.</span></div><div class='line' id='LC4701'><span class="cm"> *</span></div><div class='line' id='LC4702'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC4703'><span class="cm"> * @return {Number}</span></div><div class='line' id='LC4704'><span class="cm"> * @api public</span></div><div class='line' id='LC4705'><span class="cm"> */</span></div><div class='line' id='LC4706'><br/></div><div class='line' id='LC4707'><span class="nx">exports</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">){</span></div><div class='line' id='LC4708'> <span class="k">return</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">keys</span><span class="p">(</span><span class="nx">obj</span><span class="p">).</span><span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC4709'><span class="p">};</span></div><div class='line' id='LC4710'><br/></div><div class='line' id='LC4711'><span class="cm">/**</span></div><div class='line' id='LC4712'><span class="cm"> * Check if `obj` is empty.</span></div><div class='line' id='LC4713'><span class="cm"> *</span></div><div class='line' id='LC4714'><span class="cm"> * @param {Object} obj</span></div><div class='line' id='LC4715'><span class="cm"> * @return {Boolean}</span></div><div class='line' id='LC4716'><span class="cm"> * @api public</span></div><div class='line' id='LC4717'><span class="cm"> */</span></div><div class='line' id='LC4718'><br/></div><div class='line' id='LC4719'><span class="nx">exports</span><span class="p">.</span><span class="nx">isEmpty</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">){</span></div><div class='line' id='LC4720'> <span class="k">return</span> <span class="mi">0</span> <span class="o">==</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">length</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC4721'><span class="p">};</span></div><div class='line' id='LC4722'><span class="p">},{}],</span><span class="mi">38</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4723'><span class="cm">/**</span></div><div class='line' id='LC4724'><span class="cm"> * Parses an URI</span></div><div class='line' id='LC4725'><span class="cm"> *</span></div><div class='line' id='LC4726'><span class="cm"> * @author Steven Levithan <stevenlevithan.com> (MIT license)</span></div><div class='line' id='LC4727'><span class="cm"> * @api private</span></div><div class='line' id='LC4728'><span class="cm"> */</span></div><div class='line' id='LC4729'><br/></div><div class='line' id='LC4730'><span class="kd">var</span> <span class="nx">re</span> <span class="o">=</span> <span class="sr">/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/</span><span class="p">;</span></div><div class='line' id='LC4731'><br/></div><div class='line' id='LC4732'><span class="kd">var</span> <span class="nx">parts</span> <span class="o">=</span> <span class="p">[</span></div><div class='line' id='LC4733'> <span class="s1">'source'</span><span class="p">,</span> <span class="s1">'protocol'</span><span class="p">,</span> <span class="s1">'authority'</span><span class="p">,</span> <span class="s1">'userInfo'</span><span class="p">,</span> <span class="s1">'user'</span><span class="p">,</span> <span class="s1">'password'</span><span class="p">,</span> <span class="s1">'host'</span></div><div class='line' id='LC4734'> <span class="p">,</span> <span class="s1">'port'</span><span class="p">,</span> <span class="s1">'relative'</span><span class="p">,</span> <span class="s1">'path'</span><span class="p">,</span> <span class="s1">'directory'</span><span class="p">,</span> <span class="s1">'file'</span><span class="p">,</span> <span class="s1">'query'</span><span class="p">,</span> <span class="s1">'anchor'</span></div><div class='line' id='LC4735'><span class="p">];</span></div><div class='line' id='LC4736'><br/></div><div class='line' id='LC4737'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="kd">function</span> <span class="nx">parseuri</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4738'> <span class="kd">var</span> <span class="nx">m</span> <span class="o">=</span> <span class="nx">re</span><span class="p">.</span><span class="nx">exec</span><span class="p">(</span><span class="nx">str</span> <span class="o">||</span> <span class="s1">''</span><span class="p">)</span></div><div class='line' id='LC4739'> <span class="p">,</span> <span class="nx">uri</span> <span class="o">=</span> <span class="p">{}</span></div><div class='line' id='LC4740'> <span class="p">,</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">14</span><span class="p">;</span></div><div class='line' id='LC4741'><br/></div><div class='line' id='LC4742'> <span class="k">while</span> <span class="p">(</span><span class="nx">i</span><span class="o">--</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4743'> <span class="nx">uri</span><span class="p">[</span><span class="nx">parts</span><span class="p">[</span><span class="nx">i</span><span class="p">]]</span> <span class="o">=</span> <span class="nx">m</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">||</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC4744'> <span class="p">}</span></div><div class='line' id='LC4745'><br/></div><div class='line' id='LC4746'> <span class="k">return</span> <span class="nx">uri</span><span class="p">;</span></div><div class='line' id='LC4747'><span class="p">};</span></div><div class='line' id='LC4748'><br/></div><div class='line' id='LC4749'><span class="p">},{}],</span><span class="mi">39</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4750'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span><span class="cm">/**</span></div><div class='line' id='LC4751'><span class="cm"> * Modle requirements</span></div><div class='line' id='LC4752'><span class="cm"> */</span></div><div class='line' id='LC4753'><br/></div><div class='line' id='LC4754'><span class="kd">var</span> <span class="nx">isArray</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'isarray'</span><span class="p">);</span></div><div class='line' id='LC4755'><br/></div><div class='line' id='LC4756'><span class="cm">/**</span></div><div class='line' id='LC4757'><span class="cm"> * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.</span></div><div class='line' id='LC4758'><span class="cm"> * Anything with blobs or files should be fed through removeBlobs before coming</span></div><div class='line' id='LC4759'><span class="cm"> * here.</span></div><div class='line' id='LC4760'><span class="cm"> *</span></div><div class='line' id='LC4761'><span class="cm"> * @param {Object} packet - socket.io event packet</span></div><div class='line' id='LC4762'><span class="cm"> * @return {Object} with deconstructed packet and list of buffers</span></div><div class='line' id='LC4763'><span class="cm"> * @api public</span></div><div class='line' id='LC4764'><span class="cm"> */</span></div><div class='line' id='LC4765'><br/></div><div class='line' id='LC4766'><span class="nx">exports</span><span class="p">.</span><span class="nx">deconstructPacket</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4767'> <span class="kd">var</span> <span class="nx">buffers</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC4768'> <span class="kd">var</span> <span class="nx">packetData</span> <span class="o">=</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4769'><br/></div><div class='line' id='LC4770'> <span class="kd">function</span> <span class="nx">deconstructBinPackRecursive</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4771'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">data</span><span class="p">)</span> <span class="k">return</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4772'><br/></div><div class='line' id='LC4773'> <span class="k">if</span> <span class="p">((</span><span class="nx">global</span><span class="p">.</span><span class="nx">Buffer</span> <span class="o">&&</span> <span class="nx">Buffer</span><span class="p">.</span><span class="nx">isBuffer</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="o">||</span></div><div class='line' id='LC4774'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">ArrayBuffer</span> <span class="o">&&</span> <span class="nx">data</span> <span class="k">instanceof</span> <span class="nx">ArrayBuffer</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// replace binary</span></div><div class='line' id='LC4775'> <span class="kd">var</span> <span class="nx">placeholder</span> <span class="o">=</span> <span class="p">{</span><span class="nx">_placeholder</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">num</span><span class="o">:</span> <span class="nx">buffers</span><span class="p">.</span><span class="nx">length</span><span class="p">};</span></div><div class='line' id='LC4776'> <span class="nx">buffers</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC4777'> <span class="k">return</span> <span class="nx">placeholder</span><span class="p">;</span></div><div class='line' id='LC4778'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4779'> <span class="kd">var</span> <span class="nx">newData</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">);</span></div><div class='line' id='LC4780'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4781'> <span class="nx">newData</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">deconstructBinPackRecursive</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC4782'> <span class="p">}</span></div><div class='line' id='LC4783'> <span class="k">return</span> <span class="nx">newData</span><span class="p">;</span></div><div class='line' id='LC4784'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="s1">'object'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">data</span> <span class="o">&&</span> <span class="o">!</span><span class="p">(</span><span class="nx">data</span> <span class="k">instanceof</span> <span class="nb">Date</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4785'> <span class="kd">var</span> <span class="nx">newData</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC4786'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4787'> <span class="nx">newData</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">deconstructBinPackRecursive</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span></div><div class='line' id='LC4788'> <span class="p">}</span></div><div class='line' id='LC4789'> <span class="k">return</span> <span class="nx">newData</span><span class="p">;</span></div><div class='line' id='LC4790'> <span class="p">}</span></div><div class='line' id='LC4791'> <span class="k">return</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4792'> <span class="p">}</span></div><div class='line' id='LC4793'><br/></div><div class='line' id='LC4794'> <span class="kd">var</span> <span class="nx">pack</span> <span class="o">=</span> <span class="nx">packet</span><span class="p">;</span></div><div class='line' id='LC4795'> <span class="nx">pack</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">deconstructBinPackRecursive</span><span class="p">(</span><span class="nx">packetData</span><span class="p">);</span></div><div class='line' id='LC4796'> <span class="nx">pack</span><span class="p">.</span><span class="nx">attachments</span> <span class="o">=</span> <span class="nx">buffers</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="c1">// number of binary 'attachments'</span></div><div class='line' id='LC4797'> <span class="k">return</span> <span class="p">{</span><span class="nx">packet</span><span class="o">:</span> <span class="nx">pack</span><span class="p">,</span> <span class="nx">buffers</span><span class="o">:</span> <span class="nx">buffers</span><span class="p">};</span></div><div class='line' id='LC4798'><span class="p">}</span></div><div class='line' id='LC4799'><br/></div><div class='line' id='LC4800'><span class="cm">/**</span></div><div class='line' id='LC4801'><span class="cm"> * Reconstructs a binary packet from its placeholder packet and buffers</span></div><div class='line' id='LC4802'><span class="cm"> *</span></div><div class='line' id='LC4803'><span class="cm"> * @param {Object} packet - event packet with placeholders</span></div><div class='line' id='LC4804'><span class="cm"> * @param {Array} buffers - binary buffers to put in placeholder positions</span></div><div class='line' id='LC4805'><span class="cm"> * @return {Object} reconstructed packet</span></div><div class='line' id='LC4806'><span class="cm"> * @api public</span></div><div class='line' id='LC4807'><span class="cm"> */</span></div><div class='line' id='LC4808'><br/></div><div class='line' id='LC4809'> <span class="nx">exports</span><span class="p">.</span><span class="nx">reconstructPacket</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">packet</span><span class="p">,</span> <span class="nx">buffers</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4810'> <span class="kd">var</span> <span class="nx">curPlaceHolder</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC4811'><br/></div><div class='line' id='LC4812'> <span class="kd">function</span> <span class="nx">reconstructBinPackRecursive</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4813'> <span class="k">if</span> <span class="p">(</span><span class="nx">data</span> <span class="o">&&</span> <span class="nx">data</span><span class="p">.</span><span class="nx">_placeholder</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4814'> <span class="kd">var</span> <span class="nx">buf</span> <span class="o">=</span> <span class="nx">buffers</span><span class="p">[</span><span class="nx">data</span><span class="p">.</span><span class="nx">num</span><span class="p">];</span> <span class="c1">// appropriate buffer (should be natural order anyway)</span></div><div class='line' id='LC4815'> <span class="k">return</span> <span class="nx">buf</span><span class="p">;</span></div><div class='line' id='LC4816'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4817'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4818'> <span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">reconstructBinPackRecursive</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span></div><div class='line' id='LC4819'> <span class="p">}</span></div><div class='line' id='LC4820'> <span class="k">return</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4821'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">data</span> <span class="o">&&</span> <span class="s1">'object'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4822'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4823'> <span class="nx">data</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">reconstructBinPackRecursive</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span></div><div class='line' id='LC4824'> <span class="p">}</span></div><div class='line' id='LC4825'> <span class="k">return</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4826'> <span class="p">}</span></div><div class='line' id='LC4827'> <span class="k">return</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4828'> <span class="p">}</span></div><div class='line' id='LC4829'><br/></div><div class='line' id='LC4830'> <span class="nx">packet</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">reconstructBinPackRecursive</span><span class="p">(</span><span class="nx">packet</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC4831'> <span class="nx">packet</span><span class="p">.</span><span class="nx">attachments</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">;</span> <span class="c1">// no longer useful</span></div><div class='line' id='LC4832'> <span class="k">return</span> <span class="nx">packet</span><span class="p">;</span></div><div class='line' id='LC4833'> <span class="p">}</span></div><div class='line' id='LC4834'><br/></div><div class='line' id='LC4835'><span class="cm">/**</span></div><div class='line' id='LC4836'><span class="cm"> * Asynchronously removes Blobs or Files from data via</span></div><div class='line' id='LC4837'><span class="cm"> * FileReader's readAsArrayBuffer method. Used before encoding</span></div><div class='line' id='LC4838'><span class="cm"> * data as msgpack. Calls callback with the blobless data.</span></div><div class='line' id='LC4839'><span class="cm"> *</span></div><div class='line' id='LC4840'><span class="cm"> * @param {Object} data</span></div><div class='line' id='LC4841'><span class="cm"> * @param {Function} callback</span></div><div class='line' id='LC4842'><span class="cm"> * @api private</span></div><div class='line' id='LC4843'><span class="cm"> */</span></div><div class='line' id='LC4844'><br/></div><div class='line' id='LC4845'><span class="nx">exports</span><span class="p">.</span><span class="nx">removeBlobs</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4846'><br/></div><div class='line' id='LC4847'> <span class="kd">function</span> <span class="nx">removeBlobsRecursive</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">curKey</span><span class="p">,</span> <span class="nx">containingObject</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4848'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">obj</span><span class="p">)</span> <span class="k">return</span> <span class="nx">obj</span><span class="p">;</span></div><div class='line' id='LC4849'><br/></div><div class='line' id='LC4850'> <span class="c1">// convert any blob</span></div><div class='line' id='LC4851'> <span class="k">if</span> <span class="p">((</span><span class="nx">global</span><span class="p">.</span><span class="nx">Blob</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">Blob</span><span class="p">)</span> <span class="o">||</span></div><div class='line' id='LC4852'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">File</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">File</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4853'> <span class="nx">pendingBlobs</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC4854'><br/></div><div class='line' id='LC4855'> <span class="c1">// async filereader</span></div><div class='line' id='LC4856'> <span class="kd">var</span> <span class="nx">fileReader</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">FileReader</span><span class="p">();</span></div><div class='line' id='LC4857'> <span class="nx">fileReader</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// this.result == arraybuffer</span></div><div class='line' id='LC4858'> <span class="k">if</span> <span class="p">(</span><span class="nx">containingObject</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4859'> <span class="nx">containingObject</span><span class="p">[</span><span class="nx">curKey</span><span class="p">]</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC4860'> <span class="p">}</span></div><div class='line' id='LC4861'> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC4862'> <span class="nx">bloblessData</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC4863'> <span class="p">}</span></div><div class='line' id='LC4864'><br/></div><div class='line' id='LC4865'> <span class="c1">// if nothing pending its callback time</span></div><div class='line' id='LC4866'> <span class="k">if</span><span class="p">(</span><span class="o">!</span> <span class="o">--</span><span class="nx">pendingBlobs</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4867'> <span class="nx">callback</span><span class="p">(</span><span class="nx">bloblessData</span><span class="p">);</span></div><div class='line' id='LC4868'> <span class="p">}</span></div><div class='line' id='LC4869'> <span class="p">};</span></div><div class='line' id='LC4870'><br/></div><div class='line' id='LC4871'> <span class="nx">fileReader</span><span class="p">.</span><span class="nx">readAsArrayBuffer</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span> <span class="c1">// blob -> arraybuffer</span></div><div class='line' id='LC4872'> <span class="p">}</span></div><div class='line' id='LC4873'><br/></div><div class='line' id='LC4874'> <span class="k">if</span> <span class="p">(</span><span class="nx">isArray</span><span class="p">(</span><span class="nx">obj</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// handle array</span></div><div class='line' id='LC4875'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4876'> <span class="nx">removeBlobsRecursive</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC4877'> <span class="p">}</span></div><div class='line' id='LC4878'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span> <span class="o">&&</span> <span class="s1">'object'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">obj</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">isBuf</span><span class="p">(</span><span class="nx">obj</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// and object</span></div><div class='line' id='LC4879'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4880'> <span class="nx">removeBlobsRecursive</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">key</span><span class="p">,</span> <span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC4881'> <span class="p">}</span></div><div class='line' id='LC4882'> <span class="p">}</span></div><div class='line' id='LC4883'> <span class="p">}</span></div><div class='line' id='LC4884'><br/></div><div class='line' id='LC4885'> <span class="kd">var</span> <span class="nx">pendingBlobs</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC4886'> <span class="kd">var</span> <span class="nx">bloblessData</span> <span class="o">=</span> <span class="nx">data</span><span class="p">;</span></div><div class='line' id='LC4887'> <span class="nx">removeBlobsRecursive</span><span class="p">(</span><span class="nx">bloblessData</span><span class="p">);</span></div><div class='line' id='LC4888'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">pendingBlobs</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4889'> <span class="nx">callback</span><span class="p">(</span><span class="nx">bloblessData</span><span class="p">);</span></div><div class='line' id='LC4890'> <span class="p">}</span></div><div class='line' id='LC4891'><span class="p">}</span></div><div class='line' id='LC4892'><br/></div><div class='line' id='LC4893'><span class="cm">/**</span></div><div class='line' id='LC4894'><span class="cm"> * Returns true if obj is a buffer or an arraybuffer.</span></div><div class='line' id='LC4895'><span class="cm"> *</span></div><div class='line' id='LC4896'><span class="cm"> * @api private</span></div><div class='line' id='LC4897'><span class="cm"> */</span></div><div class='line' id='LC4898'><span class="kd">function</span> <span class="nx">isBuf</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC4899'> <span class="k">return</span> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">Buffer</span> <span class="o">&&</span> <span class="nx">Buffer</span><span class="p">.</span><span class="nx">isBuffer</span><span class="p">(</span><span class="nx">obj</span><span class="p">))</span> <span class="o">||</span></div><div class='line' id='LC4900'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">ArrayBuffer</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">ArrayBuffer</span><span class="p">);</span></div><div class='line' id='LC4901'><span class="p">}</span></div><div class='line' id='LC4902'><br/></div><div class='line' id='LC4903'><span class="p">},{</span><span class="s2">"isarray"</span><span class="o">:</span><span class="mi">41</span><span class="p">}],</span><span class="mi">40</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC4904'><span class="kd">var</span> <span class="nx">global</span><span class="o">=</span><span class="k">typeof</span> <span class="nx">self</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nx">self</span> <span class="o">:</span> <span class="k">typeof</span> <span class="nb">window</span> <span class="o">!==</span> <span class="s2">"undefined"</span> <span class="o">?</span> <span class="nb">window</span> <span class="o">:</span> <span class="p">{};</span></div><div class='line' id='LC4905'><span class="cm">/**</span></div><div class='line' id='LC4906'><span class="cm"> * Module dependencies.</span></div><div class='line' id='LC4907'><span class="cm"> */</span></div><div class='line' id='LC4908'><br/></div><div class='line' id='LC4909'><span class="kd">var</span> <span class="nx">debug</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'debug'</span><span class="p">)(</span><span class="s1">'socket.io-parser'</span><span class="p">);</span></div><div class='line' id='LC4910'><span class="kd">var</span> <span class="nx">json</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'json3'</span><span class="p">);</span></div><div class='line' id='LC4911'><span class="kd">var</span> <span class="nx">isArray</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'isarray'</span><span class="p">);</span></div><div class='line' id='LC4912'><span class="kd">var</span> <span class="nx">Emitter</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'emitter'</span><span class="p">);</span></div><div class='line' id='LC4913'><span class="kd">var</span> <span class="nx">binary</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./binary'</span><span class="p">);</span></div><div class='line' id='LC4914'><br/></div><div class='line' id='LC4915'><span class="cm">/**</span></div><div class='line' id='LC4916'><span class="cm"> * Protocol version.</span></div><div class='line' id='LC4917'><span class="cm"> *</span></div><div class='line' id='LC4918'><span class="cm"> * @api public</span></div><div class='line' id='LC4919'><span class="cm"> */</span></div><div class='line' id='LC4920'><br/></div><div class='line' id='LC4921'><span class="nx">exports</span><span class="p">.</span><span class="nx">protocol</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span></div><div class='line' id='LC4922'><br/></div><div class='line' id='LC4923'><span class="cm">/**</span></div><div class='line' id='LC4924'><span class="cm"> * Packet types.</span></div><div class='line' id='LC4925'><span class="cm"> *</span></div><div class='line' id='LC4926'><span class="cm"> * @api public</span></div><div class='line' id='LC4927'><span class="cm"> */</span></div><div class='line' id='LC4928'><br/></div><div class='line' id='LC4929'><span class="nx">exports</span><span class="p">.</span><span class="nx">types</span> <span class="o">=</span> <span class="p">[</span></div><div class='line' id='LC4930'> <span class="s1">'CONNECT'</span><span class="p">,</span></div><div class='line' id='LC4931'> <span class="s1">'DISCONNECT'</span><span class="p">,</span></div><div class='line' id='LC4932'> <span class="s1">'EVENT'</span><span class="p">,</span></div><div class='line' id='LC4933'> <span class="s1">'BINARY_EVENT'</span><span class="p">,</span></div><div class='line' id='LC4934'> <span class="s1">'ACK'</span><span class="p">,</span></div><div class='line' id='LC4935'> <span class="s1">'BINARY_ACK'</span><span class="p">,</span></div><div class='line' id='LC4936'> <span class="s1">'ERROR'</span></div><div class='line' id='LC4937'><span class="p">];</span></div><div class='line' id='LC4938'><br/></div><div class='line' id='LC4939'><span class="cm">/**</span></div><div class='line' id='LC4940'><span class="cm"> * Packet type `connect`.</span></div><div class='line' id='LC4941'><span class="cm"> *</span></div><div class='line' id='LC4942'><span class="cm"> * @api public</span></div><div class='line' id='LC4943'><span class="cm"> */</span></div><div class='line' id='LC4944'><br/></div><div class='line' id='LC4945'><span class="nx">exports</span><span class="p">.</span><span class="nx">CONNECT</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC4946'><br/></div><div class='line' id='LC4947'><span class="cm">/**</span></div><div class='line' id='LC4948'><span class="cm"> * Packet type `disconnect`.</span></div><div class='line' id='LC4949'><span class="cm"> *</span></div><div class='line' id='LC4950'><span class="cm"> * @api public</span></div><div class='line' id='LC4951'><span class="cm"> */</span></div><div class='line' id='LC4952'><br/></div><div class='line' id='LC4953'><span class="nx">exports</span><span class="p">.</span><span class="nx">DISCONNECT</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC4954'><br/></div><div class='line' id='LC4955'><span class="cm">/**</span></div><div class='line' id='LC4956'><span class="cm"> * Packet type `event`.</span></div><div class='line' id='LC4957'><span class="cm"> *</span></div><div class='line' id='LC4958'><span class="cm"> * @api public</span></div><div class='line' id='LC4959'><span class="cm"> */</span></div><div class='line' id='LC4960'><br/></div><div class='line' id='LC4961'><span class="nx">exports</span><span class="p">.</span><span class="nx">EVENT</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span></div><div class='line' id='LC4962'><br/></div><div class='line' id='LC4963'><span class="cm">/**</span></div><div class='line' id='LC4964'><span class="cm"> * Packet type `ack`.</span></div><div class='line' id='LC4965'><span class="cm"> *</span></div><div class='line' id='LC4966'><span class="cm"> * @api public</span></div><div class='line' id='LC4967'><span class="cm"> */</span></div><div class='line' id='LC4968'><br/></div><div class='line' id='LC4969'><span class="nx">exports</span><span class="p">.</span><span class="nx">ACK</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span></div><div class='line' id='LC4970'><br/></div><div class='line' id='LC4971'><span class="cm">/**</span></div><div class='line' id='LC4972'><span class="cm"> * Packet type `error`.</span></div><div class='line' id='LC4973'><span class="cm"> *</span></div><div class='line' id='LC4974'><span class="cm"> * @api public</span></div><div class='line' id='LC4975'><span class="cm"> */</span></div><div class='line' id='LC4976'><br/></div><div class='line' id='LC4977'><span class="nx">exports</span><span class="p">.</span><span class="nx">ERROR</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span></div><div class='line' id='LC4978'><br/></div><div class='line' id='LC4979'><span class="cm">/**</span></div><div class='line' id='LC4980'><span class="cm"> * Packet type 'binary event'</span></div><div class='line' id='LC4981'><span class="cm"> *</span></div><div class='line' id='LC4982'><span class="cm"> * @api public</span></div><div class='line' id='LC4983'><span class="cm"> */</span></div><div class='line' id='LC4984'><br/></div><div class='line' id='LC4985'><span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_EVENT</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span></div><div class='line' id='LC4986'><br/></div><div class='line' id='LC4987'><span class="cm">/**</span></div><div class='line' id='LC4988'><span class="cm"> * Packet type `binary ack`. For acks with binary arguments.</span></div><div class='line' id='LC4989'><span class="cm"> *</span></div><div class='line' id='LC4990'><span class="cm"> * @api public</span></div><div class='line' id='LC4991'><span class="cm"> */</span></div><div class='line' id='LC4992'><br/></div><div class='line' id='LC4993'><span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_ACK</span> <span class="o">=</span> <span class="mi">6</span><span class="p">;</span></div><div class='line' id='LC4994'><br/></div><div class='line' id='LC4995'><span class="nx">exports</span><span class="p">.</span><span class="nx">Encoder</span> <span class="o">=</span> <span class="nx">Encoder</span></div><div class='line' id='LC4996'><br/></div><div class='line' id='LC4997'><span class="cm">/**</span></div><div class='line' id='LC4998'><span class="cm"> * A socket.io Encoder instance</span></div><div class='line' id='LC4999'><span class="cm"> *</span></div><div class='line' id='LC5000'><span class="cm"> * @api public</span></div><div class='line' id='LC5001'><span class="cm"> */</span></div><div class='line' id='LC5002'><span class="kd">function</span> <span class="nx">Encoder</span><span class="p">()</span> <span class="p">{};</span></div><div class='line' id='LC5003'><br/></div><div class='line' id='LC5004'><span class="cm">/**</span></div><div class='line' id='LC5005'><span class="cm"> * Encode a packet as a single string if non-binary, or as a</span></div><div class='line' id='LC5006'><span class="cm"> * buffer sequence, depending on packet type.</span></div><div class='line' id='LC5007'><span class="cm"> *</span></div><div class='line' id='LC5008'><span class="cm"> * @param {Object} obj - packet object</span></div><div class='line' id='LC5009'><span class="cm"> * @param {Function} callback - function to handle encodings (likely engine.write)</span></div><div class='line' id='LC5010'><span class="cm"> * @return Calls callback with Array of encodings</span></div><div class='line' id='LC5011'><span class="cm"> * @api public</span></div><div class='line' id='LC5012'><span class="cm"> */</span></div><div class='line' id='LC5013'><br/></div><div class='line' id='LC5014'><span class="nx">Encoder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">encode</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">callback</span><span class="p">){</span></div><div class='line' id='LC5015'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'encoding packet %j'</span><span class="p">,</span> <span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC5016'><br/></div><div class='line' id='LC5017'> <span class="k">if</span> <span class="p">(</span><span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_EVENT</span> <span class="o">==</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">type</span> <span class="o">||</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_ACK</span> <span class="o">==</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5018'> <span class="nx">encodeAsBinary</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC5019'> <span class="p">}</span></div><div class='line' id='LC5020'> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5021'> <span class="kd">var</span> <span class="nx">encoding</span> <span class="o">=</span> <span class="nx">encodeAsString</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC5022'> <span class="nx">callback</span><span class="p">([</span><span class="nx">encoding</span><span class="p">]);</span></div><div class='line' id='LC5023'> <span class="p">}</span></div><div class='line' id='LC5024'><span class="p">};</span></div><div class='line' id='LC5025'><br/></div><div class='line' id='LC5026'><span class="cm">/**</span></div><div class='line' id='LC5027'><span class="cm"> * Encode packet as string.</span></div><div class='line' id='LC5028'><span class="cm"> *</span></div><div class='line' id='LC5029'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC5030'><span class="cm"> * @return {String} encoded</span></div><div class='line' id='LC5031'><span class="cm"> * @api private</span></div><div class='line' id='LC5032'><span class="cm"> */</span></div><div class='line' id='LC5033'><br/></div><div class='line' id='LC5034'><span class="kd">function</span> <span class="nx">encodeAsString</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5035'> <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC5036'> <span class="kd">var</span> <span class="nx">nsp</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC5037'><br/></div><div class='line' id='LC5038'> <span class="c1">// first is type</span></div><div class='line' id='LC5039'> <span class="nx">str</span> <span class="o">+=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">type</span><span class="p">;</span></div><div class='line' id='LC5040'><br/></div><div class='line' id='LC5041'> <span class="c1">// attachments if we have them</span></div><div class='line' id='LC5042'> <span class="k">if</span> <span class="p">(</span><span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_EVENT</span> <span class="o">==</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">type</span> <span class="o">||</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_ACK</span> <span class="o">==</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5043'> <span class="nx">str</span> <span class="o">+=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">attachments</span><span class="p">;</span></div><div class='line' id='LC5044'> <span class="nx">str</span> <span class="o">+=</span> <span class="s1">'-'</span><span class="p">;</span></div><div class='line' id='LC5045'> <span class="p">}</span></div><div class='line' id='LC5046'><br/></div><div class='line' id='LC5047'> <span class="c1">// if we have a namespace other than `/`</span></div><div class='line' id='LC5048'> <span class="c1">// we append it followed by a comma `,`</span></div><div class='line' id='LC5049'> <span class="k">if</span> <span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">&&</span> <span class="s1">'/'</span> <span class="o">!=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">nsp</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5050'> <span class="nx">nsp</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC5051'> <span class="nx">str</span> <span class="o">+=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">nsp</span><span class="p">;</span></div><div class='line' id='LC5052'> <span class="p">}</span></div><div class='line' id='LC5053'><br/></div><div class='line' id='LC5054'> <span class="c1">// immediately followed by the id</span></div><div class='line' id='LC5055'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">!=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5056'> <span class="k">if</span> <span class="p">(</span><span class="nx">nsp</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5057'> <span class="nx">str</span> <span class="o">+=</span> <span class="s1">','</span><span class="p">;</span></div><div class='line' id='LC5058'> <span class="nx">nsp</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC5059'> <span class="p">}</span></div><div class='line' id='LC5060'> <span class="nx">str</span> <span class="o">+=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span></div><div class='line' id='LC5061'> <span class="p">}</span></div><div class='line' id='LC5062'><br/></div><div class='line' id='LC5063'> <span class="c1">// json data</span></div><div class='line' id='LC5064'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">!=</span> <span class="nx">obj</span><span class="p">.</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5065'> <span class="k">if</span> <span class="p">(</span><span class="nx">nsp</span><span class="p">)</span> <span class="nx">str</span> <span class="o">+=</span> <span class="s1">','</span><span class="p">;</span></div><div class='line' id='LC5066'> <span class="nx">str</span> <span class="o">+=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">stringify</span><span class="p">(</span><span class="nx">obj</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span></div><div class='line' id='LC5067'> <span class="p">}</span></div><div class='line' id='LC5068'><br/></div><div class='line' id='LC5069'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'encoded %j as %s'</span><span class="p">,</span> <span class="nx">obj</span><span class="p">,</span> <span class="nx">str</span><span class="p">);</span></div><div class='line' id='LC5070'> <span class="k">return</span> <span class="nx">str</span><span class="p">;</span></div><div class='line' id='LC5071'><span class="p">}</span></div><div class='line' id='LC5072'><br/></div><div class='line' id='LC5073'><span class="cm">/**</span></div><div class='line' id='LC5074'><span class="cm"> * Encode packet as 'buffer sequence' by removing blobs, and</span></div><div class='line' id='LC5075'><span class="cm"> * deconstructing packet into object with placeholders and</span></div><div class='line' id='LC5076'><span class="cm"> * a list of buffers.</span></div><div class='line' id='LC5077'><span class="cm"> *</span></div><div class='line' id='LC5078'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC5079'><span class="cm"> * @return {Buffer} encoded</span></div><div class='line' id='LC5080'><span class="cm"> * @api private</span></div><div class='line' id='LC5081'><span class="cm"> */</span></div><div class='line' id='LC5082'><br/></div><div class='line' id='LC5083'><span class="kd">function</span> <span class="nx">encodeAsBinary</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5084'><br/></div><div class='line' id='LC5085'> <span class="kd">function</span> <span class="nx">writeEncoding</span><span class="p">(</span><span class="nx">bloblessData</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5086'> <span class="kd">var</span> <span class="nx">deconstruction</span> <span class="o">=</span> <span class="nx">binary</span><span class="p">.</span><span class="nx">deconstructPacket</span><span class="p">(</span><span class="nx">bloblessData</span><span class="p">);</span></div><div class='line' id='LC5087'> <span class="kd">var</span> <span class="nx">pack</span> <span class="o">=</span> <span class="nx">encodeAsString</span><span class="p">(</span><span class="nx">deconstruction</span><span class="p">.</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC5088'> <span class="kd">var</span> <span class="nx">buffers</span> <span class="o">=</span> <span class="nx">deconstruction</span><span class="p">.</span><span class="nx">buffers</span><span class="p">;</span></div><div class='line' id='LC5089'><br/></div><div class='line' id='LC5090'> <span class="nx">buffers</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="nx">pack</span><span class="p">);</span> <span class="c1">// add packet info to beginning of data list</span></div><div class='line' id='LC5091'> <span class="nx">callback</span><span class="p">(</span><span class="nx">buffers</span><span class="p">);</span> <span class="c1">// write all the buffers</span></div><div class='line' id='LC5092'> <span class="p">}</span></div><div class='line' id='LC5093'><br/></div><div class='line' id='LC5094'> <span class="nx">binary</span><span class="p">.</span><span class="nx">removeBlobs</span><span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">writeEncoding</span><span class="p">);</span></div><div class='line' id='LC5095'><span class="p">}</span></div><div class='line' id='LC5096'><br/></div><div class='line' id='LC5097'><span class="nx">exports</span><span class="p">.</span><span class="nx">Decoder</span> <span class="o">=</span> <span class="nx">Decoder</span></div><div class='line' id='LC5098'><br/></div><div class='line' id='LC5099'><span class="cm">/**</span></div><div class='line' id='LC5100'><span class="cm"> * A socket.io Decoder instance</span></div><div class='line' id='LC5101'><span class="cm"> *</span></div><div class='line' id='LC5102'><span class="cm"> * @return {Object} decoder</span></div><div class='line' id='LC5103'><span class="cm"> * @api public</span></div><div class='line' id='LC5104'><span class="cm"> */</span></div><div class='line' id='LC5105'><br/></div><div class='line' id='LC5106'><span class="kd">function</span> <span class="nx">Decoder</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5107'> <span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5108'><span class="p">}</span></div><div class='line' id='LC5109'><br/></div><div class='line' id='LC5110'><span class="cm">/**</span></div><div class='line' id='LC5111'><span class="cm"> * Mix in `Emitter` with Decoder.</span></div><div class='line' id='LC5112'><span class="cm"> */</span></div><div class='line' id='LC5113'><br/></div><div class='line' id='LC5114'><span class="nx">Emitter</span><span class="p">(</span><span class="nx">Decoder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">);</span></div><div class='line' id='LC5115'><br/></div><div class='line' id='LC5116'><span class="cm">/**</span></div><div class='line' id='LC5117'><span class="cm"> * Decodes an ecoded packet string into packet JSON.</span></div><div class='line' id='LC5118'><span class="cm"> *</span></div><div class='line' id='LC5119'><span class="cm"> * @param {String} obj - encoded packet</span></div><div class='line' id='LC5120'><span class="cm"> * @return {Object} packet</span></div><div class='line' id='LC5121'><span class="cm"> * @api public</span></div><div class='line' id='LC5122'><span class="cm"> */</span></div><div class='line' id='LC5123'><br/></div><div class='line' id='LC5124'><span class="nx">Decoder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5125'> <span class="kd">var</span> <span class="nx">packet</span><span class="p">;</span></div><div class='line' id='LC5126'> <span class="k">if</span> <span class="p">(</span><span class="s1">'string'</span> <span class="o">==</span> <span class="k">typeof</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5127'> <span class="nx">packet</span> <span class="o">=</span> <span class="nx">decodeString</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC5128'> <span class="k">if</span> <span class="p">(</span><span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_EVENT</span> <span class="o">==</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">type</span> <span class="o">||</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_ACK</span> <span class="o">==</span> <span class="nx">packet</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// binary packet's json</span></div><div class='line' id='LC5129'> <span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">BinaryReconstructor</span><span class="p">(</span><span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC5130'><br/></div><div class='line' id='LC5131'> <span class="c1">// no attachments, labeled binary but no binary data to follow</span></div><div class='line' id='LC5132'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span><span class="p">.</span><span class="nx">reconPack</span><span class="p">.</span><span class="nx">attachments</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5133'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'decoded'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC5134'> <span class="p">}</span></div><div class='line' id='LC5135'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// non-binary full packet</span></div><div class='line' id='LC5136'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'decoded'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC5137'> <span class="p">}</span></div><div class='line' id='LC5138'> <span class="p">}</span></div><div class='line' id='LC5139'> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="nx">global</span><span class="p">.</span><span class="nx">Buffer</span> <span class="o">&&</span> <span class="nx">Buffer</span><span class="p">.</span><span class="nx">isBuffer</span><span class="p">(</span><span class="nx">obj</span><span class="p">))</span> <span class="o">||</span></div><div class='line' id='LC5140'> <span class="p">(</span><span class="nx">global</span><span class="p">.</span><span class="nx">ArrayBuffer</span> <span class="o">&&</span> <span class="nx">obj</span> <span class="k">instanceof</span> <span class="nx">ArrayBuffer</span><span class="p">)</span> <span class="o">||</span></div><div class='line' id='LC5141'> <span class="nx">obj</span><span class="p">.</span><span class="nx">base64</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// raw binary data</span></div><div class='line' id='LC5142'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5143'> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'got binary data when not reconstructing a packet'</span><span class="p">);</span></div><div class='line' id='LC5144'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5145'> <span class="nx">packet</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span><span class="p">.</span><span class="nx">takeBinaryData</span><span class="p">(</span><span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC5146'> <span class="k">if</span> <span class="p">(</span><span class="nx">packet</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// received final buffer</span></div><div class='line' id='LC5147'> <span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5148'> <span class="k">this</span><span class="p">.</span><span class="nx">emit</span><span class="p">(</span><span class="s1">'decoded'</span><span class="p">,</span> <span class="nx">packet</span><span class="p">);</span></div><div class='line' id='LC5149'> <span class="p">}</span></div><div class='line' id='LC5150'> <span class="p">}</span></div><div class='line' id='LC5151'> <span class="p">}</span></div><div class='line' id='LC5152'> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5153'> <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">'Unknown type: '</span> <span class="o">+</span> <span class="nx">obj</span><span class="p">);</span></div><div class='line' id='LC5154'> <span class="p">}</span></div><div class='line' id='LC5155'><span class="p">}</span></div><div class='line' id='LC5156'><br/></div><div class='line' id='LC5157'><span class="cm">/**</span></div><div class='line' id='LC5158'><span class="cm"> * Decode a packet String (JSON data)</span></div><div class='line' id='LC5159'><span class="cm"> *</span></div><div class='line' id='LC5160'><span class="cm"> * @param {String} str</span></div><div class='line' id='LC5161'><span class="cm"> * @return {Object} packet</span></div><div class='line' id='LC5162'><span class="cm"> * @api private</span></div><div class='line' id='LC5163'><span class="cm"> */</span></div><div class='line' id='LC5164'><br/></div><div class='line' id='LC5165'><span class="kd">function</span> <span class="nx">decodeString</span><span class="p">(</span><span class="nx">str</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5166'> <span class="kd">var</span> <span class="nx">p</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC5167'> <span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC5168'><br/></div><div class='line' id='LC5169'> <span class="c1">// look up type</span></div><div class='line' id='LC5170'> <span class="nx">p</span><span class="p">.</span><span class="nx">type</span> <span class="o">=</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">));</span></div><div class='line' id='LC5171'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">==</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">types</span><span class="p">[</span><span class="nx">p</span><span class="p">.</span><span class="nx">type</span><span class="p">])</span> <span class="k">return</span> <span class="nx">error</span><span class="p">();</span></div><div class='line' id='LC5172'><br/></div><div class='line' id='LC5173'> <span class="c1">// look up attachments if type binary</span></div><div class='line' id='LC5174'> <span class="k">if</span> <span class="p">(</span><span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_EVENT</span> <span class="o">==</span> <span class="nx">p</span><span class="p">.</span><span class="nx">type</span> <span class="o">||</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">BINARY_ACK</span> <span class="o">==</span> <span class="nx">p</span><span class="p">.</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5175'> <span class="nx">p</span><span class="p">.</span><span class="nx">attachments</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC5176'> <span class="k">while</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="o">++</span><span class="nx">i</span><span class="p">)</span> <span class="o">!=</span> <span class="s1">'-'</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5177'> <span class="nx">p</span><span class="p">.</span><span class="nx">attachments</span> <span class="o">+=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC5178'> <span class="p">}</span></div><div class='line' id='LC5179'> <span class="nx">p</span><span class="p">.</span><span class="nx">attachments</span> <span class="o">=</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">p</span><span class="p">.</span><span class="nx">attachments</span><span class="p">);</span></div><div class='line' id='LC5180'> <span class="p">}</span></div><div class='line' id='LC5181'><br/></div><div class='line' id='LC5182'> <span class="c1">// look up namespace (if any)</span></div><div class='line' id='LC5183'> <span class="k">if</span> <span class="p">(</span><span class="s1">'/'</span> <span class="o">==</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5184'> <span class="nx">p</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC5185'> <span class="k">while</span> <span class="p">(</span><span class="o">++</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5186'> <span class="kd">var</span> <span class="nx">c</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC5187'> <span class="k">if</span> <span class="p">(</span><span class="s1">','</span> <span class="o">==</span> <span class="nx">c</span><span class="p">)</span> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5188'> <span class="nx">p</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">+=</span> <span class="nx">c</span><span class="p">;</span></div><div class='line' id='LC5189'> <span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="nx">str</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5190'> <span class="p">}</span></div><div class='line' id='LC5191'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5192'> <span class="nx">p</span><span class="p">.</span><span class="nx">nsp</span> <span class="o">=</span> <span class="s1">'/'</span><span class="p">;</span></div><div class='line' id='LC5193'> <span class="p">}</span></div><div class='line' id='LC5194'><br/></div><div class='line' id='LC5195'> <span class="c1">// look up id</span></div><div class='line' id='LC5196'> <span class="kd">var</span> <span class="nx">next</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC5197'> <span class="k">if</span> <span class="p">(</span><span class="s1">''</span> <span class="o">!=</span> <span class="nx">next</span> <span class="o">&&</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">next</span><span class="p">)</span> <span class="o">==</span> <span class="nx">next</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5198'> <span class="nx">p</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span></div><div class='line' id='LC5199'> <span class="k">while</span> <span class="p">(</span><span class="o">++</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5200'> <span class="kd">var</span> <span class="nx">c</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC5201'> <span class="k">if</span> <span class="p">(</span><span class="kc">null</span> <span class="o">==</span> <span class="nx">c</span> <span class="o">||</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">c</span><span class="p">)</span> <span class="o">!=</span> <span class="nx">c</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5202'> <span class="o">--</span><span class="nx">i</span><span class="p">;</span></div><div class='line' id='LC5203'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5204'> <span class="p">}</span></div><div class='line' id='LC5205'> <span class="nx">p</span><span class="p">.</span><span class="nx">id</span> <span class="o">+=</span> <span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span></div><div class='line' id='LC5206'> <span class="k">if</span> <span class="p">(</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">==</span> <span class="nx">str</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5207'> <span class="p">}</span></div><div class='line' id='LC5208'> <span class="nx">p</span><span class="p">.</span><span class="nx">id</span> <span class="o">=</span> <span class="nb">Number</span><span class="p">(</span><span class="nx">p</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span></div><div class='line' id='LC5209'> <span class="p">}</span></div><div class='line' id='LC5210'><br/></div><div class='line' id='LC5211'> <span class="c1">// look up json data</span></div><div class='line' id='LC5212'> <span class="k">if</span> <span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="o">++</span><span class="nx">i</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5213'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5214'> <span class="nx">p</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="nx">json</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="nx">i</span><span class="p">));</span></div><div class='line' id='LC5215'> <span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">){</span></div><div class='line' id='LC5216'> <span class="k">return</span> <span class="nx">error</span><span class="p">();</span></div><div class='line' id='LC5217'> <span class="p">}</span></div><div class='line' id='LC5218'> <span class="p">}</span></div><div class='line' id='LC5219'><br/></div><div class='line' id='LC5220'> <span class="nx">debug</span><span class="p">(</span><span class="s1">'decoded %s as %j'</span><span class="p">,</span> <span class="nx">str</span><span class="p">,</span> <span class="nx">p</span><span class="p">);</span></div><div class='line' id='LC5221'> <span class="k">return</span> <span class="nx">p</span><span class="p">;</span></div><div class='line' id='LC5222'><span class="p">};</span></div><div class='line' id='LC5223'><br/></div><div class='line' id='LC5224'><span class="cm">/**</span></div><div class='line' id='LC5225'><span class="cm"> * Deallocates a parser's resources</span></div><div class='line' id='LC5226'><span class="cm"> *</span></div><div class='line' id='LC5227'><span class="cm"> * @api public</span></div><div class='line' id='LC5228'><span class="cm"> */</span></div><div class='line' id='LC5229'><br/></div><div class='line' id='LC5230'><span class="nx">Decoder</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">destroy</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5231'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5232'> <span class="k">this</span><span class="p">.</span><span class="nx">reconstructor</span><span class="p">.</span><span class="nx">finishedReconstruction</span><span class="p">();</span></div><div class='line' id='LC5233'> <span class="p">}</span></div><div class='line' id='LC5234'><span class="p">}</span></div><div class='line' id='LC5235'><br/></div><div class='line' id='LC5236'><span class="cm">/**</span></div><div class='line' id='LC5237'><span class="cm"> * A manager of a binary event's 'buffer sequence'. Should</span></div><div class='line' id='LC5238'><span class="cm"> * be constructed whenever a packet of type BINARY_EVENT is</span></div><div class='line' id='LC5239'><span class="cm"> * decoded.</span></div><div class='line' id='LC5240'><span class="cm"> *</span></div><div class='line' id='LC5241'><span class="cm"> * @param {Object} packet</span></div><div class='line' id='LC5242'><span class="cm"> * @return {BinaryReconstructor} initialized reconstructor</span></div><div class='line' id='LC5243'><span class="cm"> * @api private</span></div><div class='line' id='LC5244'><span class="cm"> */</span></div><div class='line' id='LC5245'><br/></div><div class='line' id='LC5246'><span class="kd">function</span> <span class="nx">BinaryReconstructor</span><span class="p">(</span><span class="nx">packet</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5247'> <span class="k">this</span><span class="p">.</span><span class="nx">reconPack</span> <span class="o">=</span> <span class="nx">packet</span><span class="p">;</span></div><div class='line' id='LC5248'> <span class="k">this</span><span class="p">.</span><span class="nx">buffers</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC5249'><span class="p">}</span></div><div class='line' id='LC5250'><br/></div><div class='line' id='LC5251'><span class="cm">/**</span></div><div class='line' id='LC5252'><span class="cm"> * Method to be called when binary data received from connection</span></div><div class='line' id='LC5253'><span class="cm"> * after a BINARY_EVENT packet.</span></div><div class='line' id='LC5254'><span class="cm"> *</span></div><div class='line' id='LC5255'><span class="cm"> * @param {Buffer | ArrayBuffer} binData - the raw binary data received</span></div><div class='line' id='LC5256'><span class="cm"> * @return {null | Object} returns null if more binary data is expected or</span></div><div class='line' id='LC5257'><span class="cm"> * a reconstructed packet object if all buffers have been received.</span></div><div class='line' id='LC5258'><span class="cm"> * @api private</span></div><div class='line' id='LC5259'><span class="cm"> */</span></div><div class='line' id='LC5260'><br/></div><div class='line' id='LC5261'><span class="nx">BinaryReconstructor</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">takeBinaryData</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">binData</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5262'> <span class="k">this</span><span class="p">.</span><span class="nx">buffers</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">binData</span><span class="p">);</span></div><div class='line' id='LC5263'> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">buffers</span><span class="p">.</span><span class="nx">length</span> <span class="o">==</span> <span class="k">this</span><span class="p">.</span><span class="nx">reconPack</span><span class="p">.</span><span class="nx">attachments</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// done with buffer list</span></div><div class='line' id='LC5264'> <span class="kd">var</span> <span class="nx">packet</span> <span class="o">=</span> <span class="nx">binary</span><span class="p">.</span><span class="nx">reconstructPacket</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">reconPack</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">buffers</span><span class="p">);</span></div><div class='line' id='LC5265'> <span class="k">this</span><span class="p">.</span><span class="nx">finishedReconstruction</span><span class="p">();</span></div><div class='line' id='LC5266'> <span class="k">return</span> <span class="nx">packet</span><span class="p">;</span></div><div class='line' id='LC5267'> <span class="p">}</span></div><div class='line' id='LC5268'> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5269'><span class="p">}</span></div><div class='line' id='LC5270'><br/></div><div class='line' id='LC5271'><span class="cm">/**</span></div><div class='line' id='LC5272'><span class="cm"> * Cleans up binary packet reconstruction variables.</span></div><div class='line' id='LC5273'><span class="cm"> *</span></div><div class='line' id='LC5274'><span class="cm"> * @api private</span></div><div class='line' id='LC5275'><span class="cm"> */</span></div><div class='line' id='LC5276'><br/></div><div class='line' id='LC5277'><span class="nx">BinaryReconstructor</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">finishedReconstruction</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5278'> <span class="k">this</span><span class="p">.</span><span class="nx">reconPack</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5279'> <span class="k">this</span><span class="p">.</span><span class="nx">buffers</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC5280'><span class="p">}</span></div><div class='line' id='LC5281'><br/></div><div class='line' id='LC5282'><span class="kd">function</span> <span class="nx">error</span><span class="p">(</span><span class="nx">data</span><span class="p">){</span></div><div class='line' id='LC5283'> <span class="k">return</span> <span class="p">{</span></div><div class='line' id='LC5284'> <span class="nx">type</span><span class="o">:</span> <span class="nx">exports</span><span class="p">.</span><span class="nx">ERROR</span><span class="p">,</span></div><div class='line' id='LC5285'> <span class="nx">data</span><span class="o">:</span> <span class="s1">'parser error'</span></div><div class='line' id='LC5286'> <span class="p">};</span></div><div class='line' id='LC5287'><span class="p">}</span></div><div class='line' id='LC5288'><br/></div><div class='line' id='LC5289'><span class="p">},{</span><span class="s2">"./binary"</span><span class="o">:</span><span class="mi">39</span><span class="p">,</span><span class="s2">"debug"</span><span class="o">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">"emitter"</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span><span class="s2">"isarray"</span><span class="o">:</span><span class="mi">41</span><span class="p">,</span><span class="s2">"json3"</span><span class="o">:</span><span class="mi">42</span><span class="p">}],</span><span class="mi">41</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC5290'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span><span class="o">=</span><span class="nx">require</span><span class="p">(</span><span class="mi">33</span><span class="p">)</span></div><div class='line' id='LC5291'><span class="p">},{}],</span><span class="mi">42</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC5292'><span class="cm">/*! JSON v3.2.6 | http://bestiejs.github.io/json3 | Copyright 2012-2013, Kit Cambridge | http://kit.mit-license.org */</span></div><div class='line' id='LC5293'><span class="p">;(</span><span class="kd">function</span> <span class="p">(</span><span class="nb">window</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5294'> <span class="c1">// Convenience aliases.</span></div><div class='line' id='LC5295'> <span class="kd">var</span> <span class="nx">getClass</span> <span class="o">=</span> <span class="p">{}.</span><span class="nx">toString</span><span class="p">,</span> <span class="nx">isProperty</span><span class="p">,</span> <span class="nx">forEach</span><span class="p">,</span> <span class="nx">undef</span><span class="p">;</span></div><div class='line' id='LC5296'><br/></div><div class='line' id='LC5297'> <span class="c1">// Detect the `define` function exposed by asynchronous module loaders. The</span></div><div class='line' id='LC5298'> <span class="c1">// strict `define` check is necessary for compatibility with `r.js`.</span></div><div class='line' id='LC5299'> <span class="kd">var</span> <span class="nx">isLoader</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">define</span> <span class="o">===</span> <span class="s2">"function"</span> <span class="o">&&</span> <span class="nx">define</span><span class="p">.</span><span class="nx">amd</span><span class="p">;</span></div><div class='line' id='LC5300'><br/></div><div class='line' id='LC5301'> <span class="c1">// Detect native implementations.</span></div><div class='line' id='LC5302'> <span class="kd">var</span> <span class="nx">nativeJSON</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">JSON</span> <span class="o">==</span> <span class="s2">"object"</span> <span class="o">&&</span> <span class="nx">JSON</span><span class="p">;</span></div><div class='line' id='LC5303'><br/></div><div class='line' id='LC5304'> <span class="c1">// Set up the JSON 3 namespace, preferring the CommonJS `exports` object if</span></div><div class='line' id='LC5305'> <span class="c1">// available.</span></div><div class='line' id='LC5306'> <span class="kd">var</span> <span class="nx">JSON3</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">exports</span> <span class="o">==</span> <span class="s2">"object"</span> <span class="o">&&</span> <span class="nx">exports</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">exports</span><span class="p">.</span><span class="nx">nodeType</span> <span class="o">&&</span> <span class="nx">exports</span><span class="p">;</span></div><div class='line' id='LC5307'><br/></div><div class='line' id='LC5308'> <span class="k">if</span> <span class="p">(</span><span class="nx">JSON3</span> <span class="o">&&</span> <span class="nx">nativeJSON</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5309'> <span class="c1">// Explicitly delegate to the native `stringify` and `parse`</span></div><div class='line' id='LC5310'> <span class="c1">// implementations in CommonJS environments.</span></div><div class='line' id='LC5311'> <span class="nx">JSON3</span><span class="p">.</span><span class="nx">stringify</span> <span class="o">=</span> <span class="nx">nativeJSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">;</span></div><div class='line' id='LC5312'> <span class="nx">JSON3</span><span class="p">.</span><span class="nx">parse</span> <span class="o">=</span> <span class="nx">nativeJSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">;</span></div><div class='line' id='LC5313'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5314'> <span class="c1">// Export for web browsers, JavaScript engines, and asynchronous module</span></div><div class='line' id='LC5315'> <span class="c1">// loaders, using the global `JSON` object if available.</span></div><div class='line' id='LC5316'> <span class="nx">JSON3</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">JSON</span> <span class="o">=</span> <span class="nx">nativeJSON</span> <span class="o">||</span> <span class="p">{};</span></div><div class='line' id='LC5317'> <span class="p">}</span></div><div class='line' id='LC5318'><br/></div><div class='line' id='LC5319'> <span class="c1">// Test the `Date#getUTC*` methods. Based on work by @Yaffle.</span></div><div class='line' id='LC5320'> <span class="kd">var</span> <span class="nx">isExtended</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="o">-</span><span class="mi">3509827334573292</span><span class="p">);</span></div><div class='line' id='LC5321'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5322'> <span class="c1">// The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical</span></div><div class='line' id='LC5323'> <span class="c1">// results for certain dates in Opera >= 10.53.</span></div><div class='line' id='LC5324'> <span class="nx">isExtended</span> <span class="o">=</span> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCFullYear</span><span class="p">()</span> <span class="o">==</span> <span class="o">-</span><span class="mi">109252</span> <span class="o">&&</span> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCMonth</span><span class="p">()</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&&</span> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCDate</span><span class="p">()</span> <span class="o">===</span> <span class="mi">1</span> <span class="o">&&</span></div><div class='line' id='LC5325'> <span class="c1">// Safari < 2.0.2 stores the internal millisecond time value correctly,</span></div><div class='line' id='LC5326'> <span class="c1">// but clips the values returned by the date methods to the range of</span></div><div class='line' id='LC5327'> <span class="c1">// signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).</span></div><div class='line' id='LC5328'> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCHours</span><span class="p">()</span> <span class="o">==</span> <span class="mi">10</span> <span class="o">&&</span> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCMinutes</span><span class="p">()</span> <span class="o">==</span> <span class="mi">37</span> <span class="o">&&</span> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCSeconds</span><span class="p">()</span> <span class="o">==</span> <span class="mi">6</span> <span class="o">&&</span> <span class="nx">isExtended</span><span class="p">.</span><span class="nx">getUTCMilliseconds</span><span class="p">()</span> <span class="o">==</span> <span class="mi">708</span><span class="p">;</span></div><div class='line' id='LC5329'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC5330'><br/></div><div class='line' id='LC5331'> <span class="c1">// Internal: Determines whether the native `JSON.stringify` and `parse`</span></div><div class='line' id='LC5332'> <span class="c1">// implementations are spec-compliant. Based on work by Ken Snyder.</span></div><div class='line' id='LC5333'> <span class="kd">function</span> <span class="nx">has</span><span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5334'> <span class="k">if</span> <span class="p">(</span><span class="nx">has</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">!==</span> <span class="nx">undef</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5335'> <span class="c1">// Return cached feature test result.</span></div><div class='line' id='LC5336'> <span class="k">return</span> <span class="nx">has</span><span class="p">[</span><span class="nx">name</span><span class="p">];</span></div><div class='line' id='LC5337'> <span class="p">}</span></div><div class='line' id='LC5338'><br/></div><div class='line' id='LC5339'> <span class="kd">var</span> <span class="nx">isSupported</span><span class="p">;</span></div><div class='line' id='LC5340'> <span class="k">if</span> <span class="p">(</span><span class="nx">name</span> <span class="o">==</span> <span class="s2">"bug-string-char-index"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5341'> <span class="c1">// IE <= 7 doesn't support accessing string characters using square</span></div><div class='line' id='LC5342'> <span class="c1">// bracket notation. IE 8 only supports this for primitives.</span></div><div class='line' id='LC5343'> <span class="nx">isSupported</span> <span class="o">=</span> <span class="s2">"a"</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"a"</span><span class="p">;</span></div><div class='line' id='LC5344'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">name</span> <span class="o">==</span> <span class="s2">"json"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5345'> <span class="c1">// Indicates whether both `JSON.stringify` and `JSON.parse` are</span></div><div class='line' id='LC5346'> <span class="c1">// supported.</span></div><div class='line' id='LC5347'> <span class="nx">isSupported</span> <span class="o">=</span> <span class="nx">has</span><span class="p">(</span><span class="s2">"json-stringify"</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">has</span><span class="p">(</span><span class="s2">"json-parse"</span><span class="p">);</span></div><div class='line' id='LC5348'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5349'> <span class="kd">var</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">serialized</span> <span class="o">=</span> <span class="s1">'{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'</span><span class="p">;</span></div><div class='line' id='LC5350'> <span class="c1">// Test `JSON.stringify`.</span></div><div class='line' id='LC5351'> <span class="k">if</span> <span class="p">(</span><span class="nx">name</span> <span class="o">==</span> <span class="s2">"json-stringify"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5352'> <span class="kd">var</span> <span class="nx">stringify</span> <span class="o">=</span> <span class="nx">JSON3</span><span class="p">.</span><span class="nx">stringify</span><span class="p">,</span> <span class="nx">stringifySupported</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">stringify</span> <span class="o">==</span> <span class="s2">"function"</span> <span class="o">&&</span> <span class="nx">isExtended</span><span class="p">;</span></div><div class='line' id='LC5353'> <span class="k">if</span> <span class="p">(</span><span class="nx">stringifySupported</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5354'> <span class="c1">// A test function object with a custom `toJSON` method.</span></div><div class='line' id='LC5355'> <span class="p">(</span><span class="nx">value</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5356'> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC5357'> <span class="p">}).</span><span class="nx">toJSON</span> <span class="o">=</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC5358'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5359'> <span class="nx">stringifySupported</span> <span class="o">=</span></div><div class='line' id='LC5360'> <span class="c1">// Firefox 3.1b1 and b2 serialize string, number, and boolean</span></div><div class='line' id='LC5361'> <span class="c1">// primitives as object literals.</span></div><div class='line' id='LC5362'> <span class="nx">stringify</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">===</span> <span class="s2">"0"</span> <span class="o">&&</span></div><div class='line' id='LC5363'> <span class="c1">// FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object</span></div><div class='line' id='LC5364'> <span class="c1">// literals.</span></div><div class='line' id='LC5365'> <span class="nx">stringify</span><span class="p">(</span><span class="k">new</span> <span class="nb">Number</span><span class="p">())</span> <span class="o">===</span> <span class="s2">"0"</span> <span class="o">&&</span></div><div class='line' id='LC5366'> <span class="nx">stringify</span><span class="p">(</span><span class="k">new</span> <span class="nb">String</span><span class="p">())</span> <span class="o">==</span> <span class="s1">'""'</span> <span class="o">&&</span></div><div class='line' id='LC5367'> <span class="c1">// FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or</span></div><div class='line' id='LC5368'> <span class="c1">// does not define a canonical JSON representation (this applies to</span></div><div class='line' id='LC5369'> <span class="c1">// objects with `toJSON` properties as well, *unless* they are nested</span></div><div class='line' id='LC5370'> <span class="c1">// within an object or array).</span></div><div class='line' id='LC5371'> <span class="nx">stringify</span><span class="p">(</span><span class="nx">getClass</span><span class="p">)</span> <span class="o">===</span> <span class="nx">undef</span> <span class="o">&&</span></div><div class='line' id='LC5372'> <span class="c1">// IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and</span></div><div class='line' id='LC5373'> <span class="c1">// FF 3.1b3 pass this test.</span></div><div class='line' id='LC5374'> <span class="nx">stringify</span><span class="p">(</span><span class="nx">undef</span><span class="p">)</span> <span class="o">===</span> <span class="nx">undef</span> <span class="o">&&</span></div><div class='line' id='LC5375'> <span class="c1">// Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,</span></div><div class='line' id='LC5376'> <span class="c1">// respectively, if the value is omitted entirely.</span></div><div class='line' id='LC5377'> <span class="nx">stringify</span><span class="p">()</span> <span class="o">===</span> <span class="nx">undef</span> <span class="o">&&</span></div><div class='line' id='LC5378'> <span class="c1">// FF 3.1b1, 2 throw an error if the given value is not a number,</span></div><div class='line' id='LC5379'> <span class="c1">// string, array, object, Boolean, or `null` literal. This applies to</span></div><div class='line' id='LC5380'> <span class="c1">// objects with custom `toJSON` methods as well, unless they are nested</span></div><div class='line' id='LC5381'> <span class="c1">// inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`</span></div><div class='line' id='LC5382'> <span class="c1">// methods entirely.</span></div><div class='line' id='LC5383'> <span class="nx">stringify</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="o">===</span> <span class="s2">"1"</span> <span class="o">&&</span></div><div class='line' id='LC5384'> <span class="nx">stringify</span><span class="p">([</span><span class="nx">value</span><span class="p">])</span> <span class="o">==</span> <span class="s2">"[1]"</span> <span class="o">&&</span></div><div class='line' id='LC5385'> <span class="c1">// Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of</span></div><div class='line' id='LC5386'> <span class="c1">// `"[null]"`.</span></div><div class='line' id='LC5387'> <span class="nx">stringify</span><span class="p">([</span><span class="nx">undef</span><span class="p">])</span> <span class="o">==</span> <span class="s2">"[null]"</span> <span class="o">&&</span></div><div class='line' id='LC5388'> <span class="c1">// YUI 3.0.0b1 fails to serialize `null` literals.</span></div><div class='line' id='LC5389'> <span class="nx">stringify</span><span class="p">(</span><span class="kc">null</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"null"</span> <span class="o">&&</span></div><div class='line' id='LC5390'> <span class="c1">// FF 3.1b1, 2 halts serialization if an array contains a function:</span></div><div class='line' id='LC5391'> <span class="c1">// `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3</span></div><div class='line' id='LC5392'> <span class="c1">// elides non-JSON values from objects and arrays, unless they</span></div><div class='line' id='LC5393'> <span class="c1">// define custom `toJSON` methods.</span></div><div class='line' id='LC5394'> <span class="nx">stringify</span><span class="p">([</span><span class="nx">undef</span><span class="p">,</span> <span class="nx">getClass</span><span class="p">,</span> <span class="kc">null</span><span class="p">])</span> <span class="o">==</span> <span class="s2">"[null,null,null]"</span> <span class="o">&&</span></div><div class='line' id='LC5395'> <span class="c1">// Simple serialization test. FF 3.1b1 uses Unicode escape sequences</span></div><div class='line' id='LC5396'> <span class="c1">// where character escape codes are expected (e.g., `\b` => `\u0008`).</span></div><div class='line' id='LC5397'> <span class="nx">stringify</span><span class="p">({</span> <span class="s2">"a"</span><span class="o">:</span> <span class="p">[</span><span class="nx">value</span><span class="p">,</span> <span class="kc">true</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="s2">"\x00\b\n\f\r\t"</span><span class="p">]</span> <span class="p">})</span> <span class="o">==</span> <span class="nx">serialized</span> <span class="o">&&</span></div><div class='line' id='LC5398'> <span class="c1">// FF 3.1b1 and b2 ignore the `filter` and `width` arguments.</span></div><div class='line' id='LC5399'> <span class="nx">stringify</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="o">===</span> <span class="s2">"1"</span> <span class="o">&&</span></div><div class='line' id='LC5400'> <span class="nx">stringify</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="kc">null</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"[\n 1,\n 2\n]"</span> <span class="o">&&</span></div><div class='line' id='LC5401'> <span class="c1">// JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly</span></div><div class='line' id='LC5402'> <span class="c1">// serialize extended years.</span></div><div class='line' id='LC5403'> <span class="nx">stringify</span><span class="p">(</span><span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="o">-</span><span class="mf">8.64e15</span><span class="p">))</span> <span class="o">==</span> <span class="s1">'"-271821-04-20T00:00:00.000Z"'</span> <span class="o">&&</span></div><div class='line' id='LC5404'> <span class="c1">// The milliseconds are optional in ES 5, but required in 5.1.</span></div><div class='line' id='LC5405'> <span class="nx">stringify</span><span class="p">(</span><span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="mf">8.64e15</span><span class="p">))</span> <span class="o">==</span> <span class="s1">'"+275760-09-13T00:00:00.000Z"'</span> <span class="o">&&</span></div><div class='line' id='LC5406'> <span class="c1">// Firefox <= 11.0 incorrectly serializes years prior to 0 as negative</span></div><div class='line' id='LC5407'> <span class="c1">// four-digit years instead of six-digit years. Credits: @Yaffle.</span></div><div class='line' id='LC5408'> <span class="nx">stringify</span><span class="p">(</span><span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="o">-</span><span class="mi">621987552</span><span class="nx">e5</span><span class="p">))</span> <span class="o">==</span> <span class="s1">'"-000001-01-01T00:00:00.000Z"'</span> <span class="o">&&</span></div><div class='line' id='LC5409'> <span class="c1">// Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond</span></div><div class='line' id='LC5410'> <span class="c1">// values less than 1000. Credits: @Yaffle.</span></div><div class='line' id='LC5411'> <span class="nx">stringify</span><span class="p">(</span><span class="k">new</span> <span class="nb">Date</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span> <span class="o">==</span> <span class="s1">'"1969-12-31T23:59:59.999Z"'</span><span class="p">;</span></div><div class='line' id='LC5412'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5413'> <span class="nx">stringifySupported</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC5414'> <span class="p">}</span></div><div class='line' id='LC5415'> <span class="p">}</span></div><div class='line' id='LC5416'> <span class="nx">isSupported</span> <span class="o">=</span> <span class="nx">stringifySupported</span><span class="p">;</span></div><div class='line' id='LC5417'> <span class="p">}</span></div><div class='line' id='LC5418'> <span class="c1">// Test `JSON.parse`.</span></div><div class='line' id='LC5419'> <span class="k">if</span> <span class="p">(</span><span class="nx">name</span> <span class="o">==</span> <span class="s2">"json-parse"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5420'> <span class="kd">var</span> <span class="nx">parse</span> <span class="o">=</span> <span class="nx">JSON3</span><span class="p">.</span><span class="nx">parse</span><span class="p">;</span></div><div class='line' id='LC5421'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">parse</span> <span class="o">==</span> <span class="s2">"function"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5422'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5423'> <span class="c1">// FF 3.1b1, b2 will throw an exception if a bare literal is provided.</span></div><div class='line' id='LC5424'> <span class="c1">// Conforming implementations should also coerce the initial argument to</span></div><div class='line' id='LC5425'> <span class="c1">// a string prior to parsing.</span></div><div class='line' id='LC5426'> <span class="k">if</span> <span class="p">(</span><span class="nx">parse</span><span class="p">(</span><span class="s2">"0"</span><span class="p">)</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">parse</span><span class="p">(</span><span class="kc">false</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5427'> <span class="c1">// Simple parsing test.</span></div><div class='line' id='LC5428'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">parse</span><span class="p">(</span><span class="nx">serialized</span><span class="p">);</span></div><div class='line' id='LC5429'> <span class="kd">var</span> <span class="nx">parseSupported</span> <span class="o">=</span> <span class="nx">value</span><span class="p">[</span><span class="s2">"a"</span><span class="p">].</span><span class="nx">length</span> <span class="o">==</span> <span class="mi">5</span> <span class="o">&&</span> <span class="nx">value</span><span class="p">[</span><span class="s2">"a"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">===</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC5430'> <span class="k">if</span> <span class="p">(</span><span class="nx">parseSupported</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5431'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5432'> <span class="c1">// Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.</span></div><div class='line' id='LC5433'> <span class="nx">parseSupported</span> <span class="o">=</span> <span class="o">!</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'"\t"'</span><span class="p">);</span></div><div class='line' id='LC5434'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC5435'> <span class="k">if</span> <span class="p">(</span><span class="nx">parseSupported</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5436'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5437'> <span class="c1">// FF 4.0 and 4.0.1 allow leading `+` signs and leading</span></div><div class='line' id='LC5438'> <span class="c1">// decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow</span></div><div class='line' id='LC5439'> <span class="c1">// certain octal literals.</span></div><div class='line' id='LC5440'> <span class="nx">parseSupported</span> <span class="o">=</span> <span class="nx">parse</span><span class="p">(</span><span class="s2">"01"</span><span class="p">)</span> <span class="o">!==</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC5441'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC5442'> <span class="p">}</span></div><div class='line' id='LC5443'> <span class="k">if</span> <span class="p">(</span><span class="nx">parseSupported</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5444'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5445'> <span class="c1">// FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal</span></div><div class='line' id='LC5446'> <span class="c1">// points. These environments, along with FF 3.1b1 and 2,</span></div><div class='line' id='LC5447'> <span class="c1">// also allow trailing commas in JSON objects and arrays.</span></div><div class='line' id='LC5448'> <span class="nx">parseSupported</span> <span class="o">=</span> <span class="nx">parse</span><span class="p">(</span><span class="s2">"1."</span><span class="p">)</span> <span class="o">!==</span> <span class="mi">1</span><span class="p">;</span></div><div class='line' id='LC5449'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC5450'> <span class="p">}</span></div><div class='line' id='LC5451'> <span class="p">}</span></div><div class='line' id='LC5452'> <span class="p">}</span></div><div class='line' id='LC5453'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5454'> <span class="nx">parseSupported</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC5455'> <span class="p">}</span></div><div class='line' id='LC5456'> <span class="p">}</span></div><div class='line' id='LC5457'> <span class="nx">isSupported</span> <span class="o">=</span> <span class="nx">parseSupported</span><span class="p">;</span></div><div class='line' id='LC5458'> <span class="p">}</span></div><div class='line' id='LC5459'> <span class="p">}</span></div><div class='line' id='LC5460'> <span class="k">return</span> <span class="nx">has</span><span class="p">[</span><span class="nx">name</span><span class="p">]</span> <span class="o">=</span> <span class="o">!!</span><span class="nx">isSupported</span><span class="p">;</span></div><div class='line' id='LC5461'> <span class="p">}</span></div><div class='line' id='LC5462'><br/></div><div class='line' id='LC5463'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">has</span><span class="p">(</span><span class="s2">"json"</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5464'> <span class="c1">// Common `[[Class]]` name aliases.</span></div><div class='line' id='LC5465'> <span class="kd">var</span> <span class="nx">functionClass</span> <span class="o">=</span> <span class="s2">"[object Function]"</span><span class="p">;</span></div><div class='line' id='LC5466'> <span class="kd">var</span> <span class="nx">dateClass</span> <span class="o">=</span> <span class="s2">"[object Date]"</span><span class="p">;</span></div><div class='line' id='LC5467'> <span class="kd">var</span> <span class="nx">numberClass</span> <span class="o">=</span> <span class="s2">"[object Number]"</span><span class="p">;</span></div><div class='line' id='LC5468'> <span class="kd">var</span> <span class="nx">stringClass</span> <span class="o">=</span> <span class="s2">"[object String]"</span><span class="p">;</span></div><div class='line' id='LC5469'> <span class="kd">var</span> <span class="nx">arrayClass</span> <span class="o">=</span> <span class="s2">"[object Array]"</span><span class="p">;</span></div><div class='line' id='LC5470'> <span class="kd">var</span> <span class="nx">booleanClass</span> <span class="o">=</span> <span class="s2">"[object Boolean]"</span><span class="p">;</span></div><div class='line' id='LC5471'><br/></div><div class='line' id='LC5472'> <span class="c1">// Detect incomplete support for accessing string characters by index.</span></div><div class='line' id='LC5473'> <span class="kd">var</span> <span class="nx">charIndexBuggy</span> <span class="o">=</span> <span class="nx">has</span><span class="p">(</span><span class="s2">"bug-string-char-index"</span><span class="p">);</span></div><div class='line' id='LC5474'><br/></div><div class='line' id='LC5475'> <span class="c1">// Define additional utility methods if the `Date` methods are buggy.</span></div><div class='line' id='LC5476'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">isExtended</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5477'> <span class="kd">var</span> <span class="nx">floor</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">;</span></div><div class='line' id='LC5478'> <span class="c1">// A mapping between the months of the year and the number of days between</span></div><div class='line' id='LC5479'> <span class="c1">// January 1st and the first of the respective month.</span></div><div class='line' id='LC5480'> <span class="kd">var</span> <span class="nx">Months</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">59</span><span class="p">,</span> <span class="mi">90</span><span class="p">,</span> <span class="mi">120</span><span class="p">,</span> <span class="mi">151</span><span class="p">,</span> <span class="mi">181</span><span class="p">,</span> <span class="mi">212</span><span class="p">,</span> <span class="mi">243</span><span class="p">,</span> <span class="mi">273</span><span class="p">,</span> <span class="mi">304</span><span class="p">,</span> <span class="mi">334</span><span class="p">];</span></div><div class='line' id='LC5481'> <span class="c1">// Internal: Calculates the number of days between the Unix epoch and the</span></div><div class='line' id='LC5482'> <span class="c1">// first day of the given month.</span></div><div class='line' id='LC5483'> <span class="kd">var</span> <span class="nx">getDay</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">year</span><span class="p">,</span> <span class="nx">month</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5484'> <span class="k">return</span> <span class="nx">Months</span><span class="p">[</span><span class="nx">month</span><span class="p">]</span> <span class="o">+</span> <span class="mi">365</span> <span class="o">*</span> <span class="p">(</span><span class="nx">year</span> <span class="o">-</span> <span class="mi">1970</span><span class="p">)</span> <span class="o">+</span> <span class="nx">floor</span><span class="p">((</span><span class="nx">year</span> <span class="o">-</span> <span class="mi">1969</span> <span class="o">+</span> <span class="p">(</span><span class="nx">month</span> <span class="o">=</span> <span class="o">+</span><span class="p">(</span><span class="nx">month</span> <span class="o">></span> <span class="mi">1</span><span class="p">)))</span> <span class="o">/</span> <span class="mi">4</span><span class="p">)</span> <span class="o">-</span> <span class="nx">floor</span><span class="p">((</span><span class="nx">year</span> <span class="o">-</span> <span class="mi">1901</span> <span class="o">+</span> <span class="nx">month</span><span class="p">)</span> <span class="o">/</span> <span class="mi">100</span><span class="p">)</span> <span class="o">+</span> <span class="nx">floor</span><span class="p">((</span><span class="nx">year</span> <span class="o">-</span> <span class="mi">1601</span> <span class="o">+</span> <span class="nx">month</span><span class="p">)</span> <span class="o">/</span> <span class="mi">400</span><span class="p">);</span></div><div class='line' id='LC5485'> <span class="p">};</span></div><div class='line' id='LC5486'> <span class="p">}</span></div><div class='line' id='LC5487'><br/></div><div class='line' id='LC5488'> <span class="c1">// Internal: Determines if a property is a direct property of the given</span></div><div class='line' id='LC5489'> <span class="c1">// object. Delegates to the native `Object#hasOwnProperty` method.</span></div><div class='line' id='LC5490'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">isProperty</span> <span class="o">=</span> <span class="p">{}.</span><span class="nx">hasOwnProperty</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5491'> <span class="nx">isProperty</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">property</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5492'> <span class="kd">var</span> <span class="nx">members</span> <span class="o">=</span> <span class="p">{},</span> <span class="nx">constructor</span><span class="p">;</span></div><div class='line' id='LC5493'> <span class="k">if</span> <span class="p">((</span><span class="nx">members</span><span class="p">.</span><span class="nx">__proto__</span> <span class="o">=</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">members</span><span class="p">.</span><span class="nx">__proto__</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC5494'> <span class="c1">// The *proto* property cannot be set multiple times in recent</span></div><div class='line' id='LC5495'> <span class="c1">// versions of Firefox and SeaMonkey.</span></div><div class='line' id='LC5496'> <span class="s2">"toString"</span><span class="o">:</span> <span class="mi">1</span></div><div class='line' id='LC5497'> <span class="p">},</span> <span class="nx">members</span><span class="p">).</span><span class="nx">toString</span> <span class="o">!=</span> <span class="nx">getClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5498'> <span class="c1">// Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but</span></div><div class='line' id='LC5499'> <span class="c1">// supports the mutable *proto* property.</span></div><div class='line' id='LC5500'> <span class="nx">isProperty</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">property</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5501'> <span class="c1">// Capture and break the object's prototype chain (see section 8.6.2</span></div><div class='line' id='LC5502'> <span class="c1">// of the ES 5.1 spec). The parenthesized expression prevents an</span></div><div class='line' id='LC5503'> <span class="c1">// unsafe transformation by the Closure Compiler.</span></div><div class='line' id='LC5504'> <span class="kd">var</span> <span class="nx">original</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">__proto__</span><span class="p">,</span> <span class="nx">result</span> <span class="o">=</span> <span class="nx">property</span> <span class="k">in</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">__proto__</span> <span class="o">=</span> <span class="kc">null</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span></div><div class='line' id='LC5505'> <span class="c1">// Restore the original prototype chain.</span></div><div class='line' id='LC5506'> <span class="k">this</span><span class="p">.</span><span class="nx">__proto__</span> <span class="o">=</span> <span class="nx">original</span><span class="p">;</span></div><div class='line' id='LC5507'> <span class="k">return</span> <span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC5508'> <span class="p">};</span></div><div class='line' id='LC5509'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5510'> <span class="c1">// Capture a reference to the top-level `Object` constructor.</span></div><div class='line' id='LC5511'> <span class="nx">constructor</span> <span class="o">=</span> <span class="nx">members</span><span class="p">.</span><span class="nx">constructor</span><span class="p">;</span></div><div class='line' id='LC5512'> <span class="c1">// Use the `constructor` property to simulate `Object#hasOwnProperty` in</span></div><div class='line' id='LC5513'> <span class="c1">// other environments.</span></div><div class='line' id='LC5514'> <span class="nx">isProperty</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">property</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5515'> <span class="kd">var</span> <span class="nx">parent</span> <span class="o">=</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">||</span> <span class="nx">constructor</span><span class="p">).</span><span class="nx">prototype</span><span class="p">;</span></div><div class='line' id='LC5516'> <span class="k">return</span> <span class="nx">property</span> <span class="k">in</span> <span class="k">this</span> <span class="o">&&</span> <span class="o">!</span><span class="p">(</span><span class="nx">property</span> <span class="k">in</span> <span class="nx">parent</span> <span class="o">&&</span> <span class="k">this</span><span class="p">[</span><span class="nx">property</span><span class="p">]</span> <span class="o">===</span> <span class="nx">parent</span><span class="p">[</span><span class="nx">property</span><span class="p">]);</span></div><div class='line' id='LC5517'> <span class="p">};</span></div><div class='line' id='LC5518'> <span class="p">}</span></div><div class='line' id='LC5519'> <span class="nx">members</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5520'> <span class="k">return</span> <span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">property</span><span class="p">);</span></div><div class='line' id='LC5521'> <span class="p">};</span></div><div class='line' id='LC5522'> <span class="p">}</span></div><div class='line' id='LC5523'><br/></div><div class='line' id='LC5524'> <span class="c1">// Internal: A set of primitive types used by `isHostType`.</span></div><div class='line' id='LC5525'> <span class="kd">var</span> <span class="nx">PrimitiveTypes</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC5526'> <span class="s1">'boolean'</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC5527'> <span class="s1">'number'</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC5528'> <span class="s1">'string'</span><span class="o">:</span> <span class="mi">1</span><span class="p">,</span></div><div class='line' id='LC5529'> <span class="s1">'undefined'</span><span class="o">:</span> <span class="mi">1</span></div><div class='line' id='LC5530'> <span class="p">};</span></div><div class='line' id='LC5531'><br/></div><div class='line' id='LC5532'> <span class="c1">// Internal: Determines if the given object `property` value is a</span></div><div class='line' id='LC5533'> <span class="c1">// non-primitive.</span></div><div class='line' id='LC5534'> <span class="kd">var</span> <span class="nx">isHostType</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">property</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5535'> <span class="kd">var</span> <span class="nx">type</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">object</span><span class="p">[</span><span class="nx">property</span><span class="p">];</span></div><div class='line' id='LC5536'> <span class="k">return</span> <span class="nx">type</span> <span class="o">==</span> <span class="s1">'object'</span> <span class="o">?</span> <span class="o">!!</span><span class="nx">object</span><span class="p">[</span><span class="nx">property</span><span class="p">]</span> <span class="o">:</span> <span class="o">!</span><span class="nx">PrimitiveTypes</span><span class="p">[</span><span class="nx">type</span><span class="p">];</span></div><div class='line' id='LC5537'> <span class="p">};</span></div><div class='line' id='LC5538'><br/></div><div class='line' id='LC5539'> <span class="c1">// Internal: Normalizes the `for...in` iteration algorithm across</span></div><div class='line' id='LC5540'> <span class="c1">// environments. Each enumerated key is yielded to a `callback` function.</span></div><div class='line' id='LC5541'> <span class="nx">forEach</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5542'> <span class="kd">var</span> <span class="nx">size</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">Properties</span><span class="p">,</span> <span class="nx">members</span><span class="p">,</span> <span class="nx">property</span><span class="p">;</span></div><div class='line' id='LC5543'><br/></div><div class='line' id='LC5544'> <span class="c1">// Tests for bugs in the current environment's `for...in` algorithm. The</span></div><div class='line' id='LC5545'> <span class="c1">// `valueOf` property inherits the non-enumerable flag from</span></div><div class='line' id='LC5546'> <span class="c1">// `Object.prototype` in older versions of IE, Netscape, and Mozilla.</span></div><div class='line' id='LC5547'> <span class="p">(</span><span class="nx">Properties</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5548'> <span class="k">this</span><span class="p">.</span><span class="nx">valueOf</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC5549'> <span class="p">}).</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">valueOf</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC5550'><br/></div><div class='line' id='LC5551'> <span class="c1">// Iterate over a new instance of the `Properties` class.</span></div><div class='line' id='LC5552'> <span class="nx">members</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Properties</span><span class="p">();</span></div><div class='line' id='LC5553'> <span class="k">for</span> <span class="p">(</span><span class="nx">property</span> <span class="k">in</span> <span class="nx">members</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5554'> <span class="c1">// Ignore all properties inherited from `Object.prototype`.</span></div><div class='line' id='LC5555'> <span class="k">if</span> <span class="p">(</span><span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">members</span><span class="p">,</span> <span class="nx">property</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5556'> <span class="nx">size</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC5557'> <span class="p">}</span></div><div class='line' id='LC5558'> <span class="p">}</span></div><div class='line' id='LC5559'> <span class="nx">Properties</span> <span class="o">=</span> <span class="nx">members</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5560'><br/></div><div class='line' id='LC5561'> <span class="c1">// Normalize the iteration algorithm.</span></div><div class='line' id='LC5562'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">size</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5563'> <span class="c1">// A list of non-enumerable properties inherited from `Object.prototype`.</span></div><div class='line' id='LC5564'> <span class="nx">members</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"valueOf"</span><span class="p">,</span> <span class="s2">"toString"</span><span class="p">,</span> <span class="s2">"toLocaleString"</span><span class="p">,</span> <span class="s2">"propertyIsEnumerable"</span><span class="p">,</span> <span class="s2">"isPrototypeOf"</span><span class="p">,</span> <span class="s2">"hasOwnProperty"</span><span class="p">,</span> <span class="s2">"constructor"</span><span class="p">];</span></div><div class='line' id='LC5565'> <span class="c1">// IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable</span></div><div class='line' id='LC5566'> <span class="c1">// properties.</span></div><div class='line' id='LC5567'> <span class="nx">forEach</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5568'> <span class="kd">var</span> <span class="nx">isFunction</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="o">==</span> <span class="nx">functionClass</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC5569'> <span class="kd">var</span> <span class="nx">hasProperty</span> <span class="o">=</span> <span class="o">!</span><span class="nx">isFunction</span> <span class="o">&&</span> <span class="k">typeof</span> <span class="nx">object</span><span class="p">.</span><span class="nx">constructor</span> <span class="o">!=</span> <span class="s1">'function'</span> <span class="o">&&</span> <span class="nx">isHostType</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="s1">'hasOwnProperty'</span><span class="p">)</span> <span class="o">?</span> <span class="nx">object</span><span class="p">.</span><span class="nx">hasOwnProperty</span> <span class="o">:</span> <span class="nx">isProperty</span><span class="p">;</span></div><div class='line' id='LC5570'> <span class="k">for</span> <span class="p">(</span><span class="nx">property</span> <span class="k">in</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5571'> <span class="c1">// Gecko <= 1.0 enumerates the `prototype` property of functions under</span></div><div class='line' id='LC5572'> <span class="c1">// certain conditions; IE does not.</span></div><div class='line' id='LC5573'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">isFunction</span> <span class="o">&&</span> <span class="nx">property</span> <span class="o">==</span> <span class="s2">"prototype"</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">hasProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">property</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5574'> <span class="nx">callback</span><span class="p">(</span><span class="nx">property</span><span class="p">);</span></div><div class='line' id='LC5575'> <span class="p">}</span></div><div class='line' id='LC5576'> <span class="p">}</span></div><div class='line' id='LC5577'> <span class="c1">// Manually invoke the callback for each non-enumerable property.</span></div><div class='line' id='LC5578'> <span class="k">for</span> <span class="p">(</span><span class="nx">length</span> <span class="o">=</span> <span class="nx">members</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">property</span> <span class="o">=</span> <span class="nx">members</span><span class="p">[</span><span class="o">--</span><span class="nx">length</span><span class="p">];</span> <span class="nx">hasProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">property</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">callback</span><span class="p">(</span><span class="nx">property</span><span class="p">));</span></div><div class='line' id='LC5579'> <span class="p">};</span></div><div class='line' id='LC5580'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">size</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5581'> <span class="c1">// Safari <= 2.0.4 enumerates shadowed properties twice.</span></div><div class='line' id='LC5582'> <span class="nx">forEach</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5583'> <span class="c1">// Create a set of iterated properties.</span></div><div class='line' id='LC5584'> <span class="kd">var</span> <span class="nx">members</span> <span class="o">=</span> <span class="p">{},</span> <span class="nx">isFunction</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="o">==</span> <span class="nx">functionClass</span><span class="p">,</span> <span class="nx">property</span><span class="p">;</span></div><div class='line' id='LC5585'> <span class="k">for</span> <span class="p">(</span><span class="nx">property</span> <span class="k">in</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5586'> <span class="c1">// Store each property name to prevent double enumeration. The</span></div><div class='line' id='LC5587'> <span class="c1">// `prototype` property of functions is not enumerated due to cross-</span></div><div class='line' id='LC5588'> <span class="c1">// environment inconsistencies.</span></div><div class='line' id='LC5589'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">isFunction</span> <span class="o">&&</span> <span class="nx">property</span> <span class="o">==</span> <span class="s2">"prototype"</span><span class="p">)</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">members</span><span class="p">,</span> <span class="nx">property</span><span class="p">)</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">members</span><span class="p">[</span><span class="nx">property</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">property</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5590'> <span class="nx">callback</span><span class="p">(</span><span class="nx">property</span><span class="p">);</span></div><div class='line' id='LC5591'> <span class="p">}</span></div><div class='line' id='LC5592'> <span class="p">}</span></div><div class='line' id='LC5593'> <span class="p">};</span></div><div class='line' id='LC5594'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5595'> <span class="c1">// No bugs detected; use the standard `for...in` algorithm.</span></div><div class='line' id='LC5596'> <span class="nx">forEach</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5597'> <span class="kd">var</span> <span class="nx">isFunction</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">)</span> <span class="o">==</span> <span class="nx">functionClass</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">isConstructor</span><span class="p">;</span></div><div class='line' id='LC5598'> <span class="k">for</span> <span class="p">(</span><span class="nx">property</span> <span class="k">in</span> <span class="nx">object</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5599'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">isFunction</span> <span class="o">&&</span> <span class="nx">property</span> <span class="o">==</span> <span class="s2">"prototype"</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">property</span><span class="p">)</span> <span class="o">&&</span> <span class="o">!</span><span class="p">(</span><span class="nx">isConstructor</span> <span class="o">=</span> <span class="nx">property</span> <span class="o">===</span> <span class="s2">"constructor"</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5600'> <span class="nx">callback</span><span class="p">(</span><span class="nx">property</span><span class="p">);</span></div><div class='line' id='LC5601'> <span class="p">}</span></div><div class='line' id='LC5602'> <span class="p">}</span></div><div class='line' id='LC5603'> <span class="c1">// Manually invoke the callback for the `constructor` property due to</span></div><div class='line' id='LC5604'> <span class="c1">// cross-environment inconsistencies.</span></div><div class='line' id='LC5605'> <span class="k">if</span> <span class="p">(</span><span class="nx">isConstructor</span> <span class="o">||</span> <span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="p">(</span><span class="nx">property</span> <span class="o">=</span> <span class="s2">"constructor"</span><span class="p">)))</span> <span class="p">{</span></div><div class='line' id='LC5606'> <span class="nx">callback</span><span class="p">(</span><span class="nx">property</span><span class="p">);</span></div><div class='line' id='LC5607'> <span class="p">}</span></div><div class='line' id='LC5608'> <span class="p">};</span></div><div class='line' id='LC5609'> <span class="p">}</span></div><div class='line' id='LC5610'> <span class="k">return</span> <span class="nx">forEach</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC5611'> <span class="p">};</span></div><div class='line' id='LC5612'><br/></div><div class='line' id='LC5613'> <span class="c1">// Public: Serializes a JavaScript `value` as a JSON string. The optional</span></div><div class='line' id='LC5614'> <span class="c1">// `filter` argument may specify either a function that alters how object and</span></div><div class='line' id='LC5615'> <span class="c1">// array members are serialized, or an array of strings and numbers that</span></div><div class='line' id='LC5616'> <span class="c1">// indicates which properties should be serialized. The optional `width`</span></div><div class='line' id='LC5617'> <span class="c1">// argument may be either a string or number that specifies the indentation</span></div><div class='line' id='LC5618'> <span class="c1">// level of the output.</span></div><div class='line' id='LC5619'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">has</span><span class="p">(</span><span class="s2">"json-stringify"</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5620'> <span class="c1">// Internal: A map of control characters and their escaped equivalents.</span></div><div class='line' id='LC5621'> <span class="kd">var</span> <span class="nx">Escapes</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC5622'> <span class="mi">92</span><span class="o">:</span> <span class="s2">"\\\\"</span><span class="p">,</span></div><div class='line' id='LC5623'> <span class="mi">34</span><span class="o">:</span> <span class="s1">'\\"'</span><span class="p">,</span></div><div class='line' id='LC5624'> <span class="mi">8</span><span class="o">:</span> <span class="s2">"\\b"</span><span class="p">,</span></div><div class='line' id='LC5625'> <span class="mi">12</span><span class="o">:</span> <span class="s2">"\\f"</span><span class="p">,</span></div><div class='line' id='LC5626'> <span class="mi">10</span><span class="o">:</span> <span class="s2">"\\n"</span><span class="p">,</span></div><div class='line' id='LC5627'> <span class="mi">13</span><span class="o">:</span> <span class="s2">"\\r"</span><span class="p">,</span></div><div class='line' id='LC5628'> <span class="mi">9</span><span class="o">:</span> <span class="s2">"\\t"</span></div><div class='line' id='LC5629'> <span class="p">};</span></div><div class='line' id='LC5630'><br/></div><div class='line' id='LC5631'> <span class="c1">// Internal: Converts `value` into a zero-padded string such that its</span></div><div class='line' id='LC5632'> <span class="c1">// length is at least equal to `width`. The `width` must be <= 6.</span></div><div class='line' id='LC5633'> <span class="kd">var</span> <span class="nx">leadingZeroes</span> <span class="o">=</span> <span class="s2">"000000"</span><span class="p">;</span></div><div class='line' id='LC5634'> <span class="kd">var</span> <span class="nx">toPaddedString</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">width</span><span class="p">,</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5635'> <span class="c1">// The `|| 0` expression is necessary to work around a bug in</span></div><div class='line' id='LC5636'> <span class="c1">// Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.</span></div><div class='line' id='LC5637'> <span class="k">return</span> <span class="p">(</span><span class="nx">leadingZeroes</span> <span class="o">+</span> <span class="p">(</span><span class="nx">value</span> <span class="o">||</span> <span class="mi">0</span><span class="p">)).</span><span class="nx">slice</span><span class="p">(</span><span class="o">-</span><span class="nx">width</span><span class="p">);</span></div><div class='line' id='LC5638'> <span class="p">};</span></div><div class='line' id='LC5639'><br/></div><div class='line' id='LC5640'> <span class="c1">// Internal: Double-quotes a string `value`, replacing all ASCII control</span></div><div class='line' id='LC5641'> <span class="c1">// characters (characters with code unit values between 0 and 31) with</span></div><div class='line' id='LC5642'> <span class="c1">// their escaped equivalents. This is an implementation of the</span></div><div class='line' id='LC5643'> <span class="c1">// `Quote(value)` operation defined in ES 5.1 section 15.12.3.</span></div><div class='line' id='LC5644'> <span class="kd">var</span> <span class="nx">unicodePrefix</span> <span class="o">=</span> <span class="s2">"\\u00"</span><span class="p">;</span></div><div class='line' id='LC5645'> <span class="kd">var</span> <span class="nx">quote</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5646'> <span class="kd">var</span> <span class="nx">result</span> <span class="o">=</span> <span class="s1">'"'</span><span class="p">,</span> <span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">isLarge</span> <span class="o">=</span> <span class="nx">length</span> <span class="o">></span> <span class="mi">10</span> <span class="o">&&</span> <span class="nx">charIndexBuggy</span><span class="p">,</span> <span class="nx">symbols</span><span class="p">;</span></div><div class='line' id='LC5647'> <span class="k">if</span> <span class="p">(</span><span class="nx">isLarge</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5648'> <span class="nx">symbols</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">split</span><span class="p">(</span><span class="s2">""</span><span class="p">);</span></div><div class='line' id='LC5649'> <span class="p">}</span></div><div class='line' id='LC5650'> <span class="k">for</span> <span class="p">(;</span> <span class="nx">index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">index</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5651'> <span class="kd">var</span> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">index</span><span class="p">);</span></div><div class='line' id='LC5652'> <span class="c1">// If the character is a control character, append its Unicode or</span></div><div class='line' id='LC5653'> <span class="c1">// shorthand escape sequence; otherwise, append the character as-is.</span></div><div class='line' id='LC5654'> <span class="k">switch</span> <span class="p">(</span><span class="nx">charCode</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5655'> <span class="k">case</span> <span class="mi">8</span><span class="o">:</span> <span class="k">case</span> <span class="mi">9</span><span class="o">:</span> <span class="k">case</span> <span class="mi">10</span><span class="o">:</span> <span class="k">case</span> <span class="mi">12</span><span class="o">:</span> <span class="k">case</span> <span class="mi">13</span><span class="o">:</span> <span class="k">case</span> <span class="mi">34</span><span class="o">:</span> <span class="k">case</span> <span class="mi">92</span><span class="o">:</span></div><div class='line' id='LC5656'> <span class="nx">result</span> <span class="o">+=</span> <span class="nx">Escapes</span><span class="p">[</span><span class="nx">charCode</span><span class="p">];</span></div><div class='line' id='LC5657'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5658'> <span class="k">default</span><span class="o">:</span></div><div class='line' id='LC5659'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o"><</span> <span class="mi">32</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5660'> <span class="nx">result</span> <span class="o">+=</span> <span class="nx">unicodePrefix</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">charCode</span><span class="p">.</span><span class="nx">toString</span><span class="p">(</span><span class="mi">16</span><span class="p">));</span></div><div class='line' id='LC5661'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5662'> <span class="p">}</span></div><div class='line' id='LC5663'> <span class="nx">result</span> <span class="o">+=</span> <span class="nx">isLarge</span> <span class="o">?</span> <span class="nx">symbols</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span> <span class="o">:</span> <span class="nx">charIndexBuggy</span> <span class="o">?</span> <span class="nx">value</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="o">:</span> <span class="nx">value</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span></div><div class='line' id='LC5664'> <span class="p">}</span></div><div class='line' id='LC5665'> <span class="p">}</span></div><div class='line' id='LC5666'> <span class="k">return</span> <span class="nx">result</span> <span class="o">+</span> <span class="s1">'"'</span><span class="p">;</span></div><div class='line' id='LC5667'> <span class="p">};</span></div><div class='line' id='LC5668'><br/></div><div class='line' id='LC5669'> <span class="c1">// Internal: Recursively serializes an object. Implements the</span></div><div class='line' id='LC5670'> <span class="c1">// `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.</span></div><div class='line' id='LC5671'> <span class="kd">var</span> <span class="nx">serialize</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">property</span><span class="p">,</span> <span class="nx">object</span><span class="p">,</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">properties</span><span class="p">,</span> <span class="nx">whitespace</span><span class="p">,</span> <span class="nx">indentation</span><span class="p">,</span> <span class="nx">stack</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5672'> <span class="kd">var</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">className</span><span class="p">,</span> <span class="nx">year</span><span class="p">,</span> <span class="nx">month</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span class="nx">time</span><span class="p">,</span> <span class="nx">hours</span><span class="p">,</span> <span class="nx">minutes</span><span class="p">,</span> <span class="nx">seconds</span><span class="p">,</span> <span class="nx">milliseconds</span><span class="p">,</span> <span class="nx">results</span><span class="p">,</span> <span class="nx">element</span><span class="p">,</span> <span class="nx">index</span><span class="p">,</span> <span class="nx">length</span><span class="p">,</span> <span class="nx">prefix</span><span class="p">,</span> <span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC5673'> <span class="k">try</span> <span class="p">{</span></div><div class='line' id='LC5674'> <span class="c1">// Necessary for host object support.</span></div><div class='line' id='LC5675'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">object</span><span class="p">[</span><span class="nx">property</span><span class="p">];</span></div><div class='line' id='LC5676'> <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="nx">exception</span><span class="p">)</span> <span class="p">{}</span></div><div class='line' id='LC5677'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">==</span> <span class="s2">"object"</span> <span class="o">&&</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5678'> <span class="nx">className</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC5679'> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">dateClass</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">value</span><span class="p">,</span> <span class="s2">"toJSON"</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5680'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">0</span> <span class="o">&&</span> <span class="nx">value</span> <span class="o"><</span> <span class="mi">1</span> <span class="o">/</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5681'> <span class="c1">// Dates are serialized according to the `Date#toJSON` method</span></div><div class='line' id='LC5682'> <span class="c1">// specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15</span></div><div class='line' id='LC5683'> <span class="c1">// for the ISO 8601 date time string format.</span></div><div class='line' id='LC5684'> <span class="k">if</span> <span class="p">(</span><span class="nx">getDay</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5685'> <span class="c1">// Manually compute the year, month, date, hours, minutes,</span></div><div class='line' id='LC5686'> <span class="c1">// seconds, and milliseconds if the `getUTC*` methods are</span></div><div class='line' id='LC5687'> <span class="c1">// buggy. Adapted from @Yaffle's `date-shim` project.</span></div><div class='line' id='LC5688'> <span class="nx">date</span> <span class="o">=</span> <span class="nx">floor</span><span class="p">(</span><span class="nx">value</span> <span class="o">/</span> <span class="mi">864</span><span class="nx">e5</span><span class="p">);</span></div><div class='line' id='LC5689'> <span class="k">for</span> <span class="p">(</span><span class="nx">year</span> <span class="o">=</span> <span class="nx">floor</span><span class="p">(</span><span class="nx">date</span> <span class="o">/</span> <span class="mf">365.2425</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1970</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span> <span class="nx">getDay</span><span class="p">(</span><span class="nx">year</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o"><=</span> <span class="nx">date</span><span class="p">;</span> <span class="nx">year</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC5690'> <span class="k">for</span> <span class="p">(</span><span class="nx">month</span> <span class="o">=</span> <span class="nx">floor</span><span class="p">((</span><span class="nx">date</span> <span class="o">-</span> <span class="nx">getDay</span><span class="p">(</span><span class="nx">year</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> <span class="o">/</span> <span class="mf">30.42</span><span class="p">);</span> <span class="nx">getDay</span><span class="p">(</span><span class="nx">year</span><span class="p">,</span> <span class="nx">month</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o"><=</span> <span class="nx">date</span><span class="p">;</span> <span class="nx">month</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC5691'> <span class="nx">date</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">+</span> <span class="nx">date</span> <span class="o">-</span> <span class="nx">getDay</span><span class="p">(</span><span class="nx">year</span><span class="p">,</span> <span class="nx">month</span><span class="p">);</span></div><div class='line' id='LC5692'> <span class="c1">// The `time` value specifies the time within the day (see ES</span></div><div class='line' id='LC5693'> <span class="c1">// 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used</span></div><div class='line' id='LC5694'> <span class="c1">// to compute `A modulo B`, as the `%` operator does not</span></div><div class='line' id='LC5695'> <span class="c1">// correspond to the `modulo` operation for negative numbers.</span></div><div class='line' id='LC5696'> <span class="nx">time</span> <span class="o">=</span> <span class="p">(</span><span class="nx">value</span> <span class="o">%</span> <span class="mi">864</span><span class="nx">e5</span> <span class="o">+</span> <span class="mi">864</span><span class="nx">e5</span><span class="p">)</span> <span class="o">%</span> <span class="mi">864</span><span class="nx">e5</span><span class="p">;</span></div><div class='line' id='LC5697'> <span class="c1">// The hours, minutes, seconds, and milliseconds are obtained by</span></div><div class='line' id='LC5698'> <span class="c1">// decomposing the time within the day. See section 15.9.1.10.</span></div><div class='line' id='LC5699'> <span class="nx">hours</span> <span class="o">=</span> <span class="nx">floor</span><span class="p">(</span><span class="nx">time</span> <span class="o">/</span> <span class="mi">36</span><span class="nx">e5</span><span class="p">)</span> <span class="o">%</span> <span class="mi">24</span><span class="p">;</span></div><div class='line' id='LC5700'> <span class="nx">minutes</span> <span class="o">=</span> <span class="nx">floor</span><span class="p">(</span><span class="nx">time</span> <span class="o">/</span> <span class="mi">6</span><span class="nx">e4</span><span class="p">)</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span></div><div class='line' id='LC5701'> <span class="nx">seconds</span> <span class="o">=</span> <span class="nx">floor</span><span class="p">(</span><span class="nx">time</span> <span class="o">/</span> <span class="mi">1</span><span class="nx">e3</span><span class="p">)</span> <span class="o">%</span> <span class="mi">60</span><span class="p">;</span></div><div class='line' id='LC5702'> <span class="nx">milliseconds</span> <span class="o">=</span> <span class="nx">time</span> <span class="o">%</span> <span class="mi">1</span><span class="nx">e3</span><span class="p">;</span></div><div class='line' id='LC5703'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5704'> <span class="nx">year</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCFullYear</span><span class="p">();</span></div><div class='line' id='LC5705'> <span class="nx">month</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCMonth</span><span class="p">();</span></div><div class='line' id='LC5706'> <span class="nx">date</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCDate</span><span class="p">();</span></div><div class='line' id='LC5707'> <span class="nx">hours</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCHours</span><span class="p">();</span></div><div class='line' id='LC5708'> <span class="nx">minutes</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCMinutes</span><span class="p">();</span></div><div class='line' id='LC5709'> <span class="nx">seconds</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCSeconds</span><span class="p">();</span></div><div class='line' id='LC5710'> <span class="nx">milliseconds</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">getUTCMilliseconds</span><span class="p">();</span></div><div class='line' id='LC5711'> <span class="p">}</span></div><div class='line' id='LC5712'> <span class="c1">// Serialize extended years correctly.</span></div><div class='line' id='LC5713'> <span class="nx">value</span> <span class="o">=</span> <span class="p">(</span><span class="nx">year</span> <span class="o"><=</span> <span class="mi">0</span> <span class="o">||</span> <span class="nx">year</span> <span class="o">>=</span> <span class="mi">1</span><span class="nx">e4</span> <span class="o">?</span> <span class="p">(</span><span class="nx">year</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">?</span> <span class="s2">"-"</span> <span class="o">:</span> <span class="s2">"+"</span><span class="p">)</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="nx">year</span> <span class="o"><</span> <span class="mi">0</span> <span class="o">?</span> <span class="o">-</span><span class="nx">year</span> <span class="o">:</span> <span class="nx">year</span><span class="p">)</span> <span class="o">:</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="nx">year</span><span class="p">))</span> <span class="o">+</span></div><div class='line' id='LC5714'> <span class="s2">"-"</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">month</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"-"</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">date</span><span class="p">)</span> <span class="o">+</span></div><div class='line' id='LC5715'> <span class="c1">// Months, dates, hours, minutes, and seconds should have two</span></div><div class='line' id='LC5716'> <span class="c1">// digits; milliseconds should have three.</span></div><div class='line' id='LC5717'> <span class="s2">"T"</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">hours</span><span class="p">)</span> <span class="o">+</span> <span class="s2">":"</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">minutes</span><span class="p">)</span> <span class="o">+</span> <span class="s2">":"</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="nx">seconds</span><span class="p">)</span> <span class="o">+</span></div><div class='line' id='LC5718'> <span class="c1">// Milliseconds are optional in ES 5.0, but required in 5.1.</span></div><div class='line' id='LC5719'> <span class="s2">"."</span> <span class="o">+</span> <span class="nx">toPaddedString</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="nx">milliseconds</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"Z"</span><span class="p">;</span></div><div class='line' id='LC5720'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5721'> <span class="nx">value</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5722'> <span class="p">}</span></div><div class='line' id='LC5723'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span><span class="p">.</span><span class="nx">toJSON</span> <span class="o">==</span> <span class="s2">"function"</span> <span class="o">&&</span> <span class="p">((</span><span class="nx">className</span> <span class="o">!=</span> <span class="nx">numberClass</span> <span class="o">&&</span> <span class="nx">className</span> <span class="o">!=</span> <span class="nx">stringClass</span> <span class="o">&&</span> <span class="nx">className</span> <span class="o">!=</span> <span class="nx">arrayClass</span><span class="p">)</span> <span class="o">||</span> <span class="nx">isProperty</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">value</span><span class="p">,</span> <span class="s2">"toJSON"</span><span class="p">)))</span> <span class="p">{</span></div><div class='line' id='LC5724'> <span class="c1">// Prototype <= 1.6.1 adds non-standard `toJSON` methods to the</span></div><div class='line' id='LC5725'> <span class="c1">// `Number`, `String`, `Date`, and `Array` prototypes. JSON 3</span></div><div class='line' id='LC5726'> <span class="c1">// ignores all `toJSON` methods on these objects unless they are</span></div><div class='line' id='LC5727'> <span class="c1">// defined directly on an instance.</span></div><div class='line' id='LC5728'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">toJSON</span><span class="p">(</span><span class="nx">property</span><span class="p">);</span></div><div class='line' id='LC5729'> <span class="p">}</span></div><div class='line' id='LC5730'> <span class="p">}</span></div><div class='line' id='LC5731'> <span class="k">if</span> <span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5732'> <span class="c1">// If a replacement function was provided, call it to obtain the value</span></div><div class='line' id='LC5733'> <span class="c1">// for serialization.</span></div><div class='line' id='LC5734'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">callback</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">object</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC5735'> <span class="p">}</span></div><div class='line' id='LC5736'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5737'> <span class="k">return</span> <span class="s2">"null"</span><span class="p">;</span></div><div class='line' id='LC5738'> <span class="p">}</span></div><div class='line' id='LC5739'> <span class="nx">className</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC5740'> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">booleanClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5741'> <span class="c1">// Booleans are represented literally.</span></div><div class='line' id='LC5742'> <span class="k">return</span> <span class="s2">""</span> <span class="o">+</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC5743'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">numberClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5744'> <span class="c1">// JSON numbers must be finite. `Infinity` and `NaN` are serialized as</span></div><div class='line' id='LC5745'> <span class="c1">// `"null"`.</span></div><div class='line' id='LC5746'> <span class="k">return</span> <span class="nx">value</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">0</span> <span class="o">&&</span> <span class="nx">value</span> <span class="o"><</span> <span class="mi">1</span> <span class="o">/</span> <span class="mi">0</span> <span class="o">?</span> <span class="s2">""</span> <span class="o">+</span> <span class="nx">value</span> <span class="o">:</span> <span class="s2">"null"</span><span class="p">;</span></div><div class='line' id='LC5747'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">stringClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5748'> <span class="c1">// Strings are double-quoted and escaped.</span></div><div class='line' id='LC5749'> <span class="k">return</span> <span class="nx">quote</span><span class="p">(</span><span class="s2">""</span> <span class="o">+</span> <span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC5750'> <span class="p">}</span></div><div class='line' id='LC5751'> <span class="c1">// Recursively serialize objects and arrays.</span></div><div class='line' id='LC5752'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">==</span> <span class="s2">"object"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5753'> <span class="c1">// Check for cyclic structures. This is a linear search; performance</span></div><div class='line' id='LC5754'> <span class="c1">// is inversely proportional to the number of unique nested objects.</span></div><div class='line' id='LC5755'> <span class="k">for</span> <span class="p">(</span><span class="nx">length</span> <span class="o">=</span> <span class="nx">stack</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">length</span><span class="o">--</span><span class="p">;)</span> <span class="p">{</span></div><div class='line' id='LC5756'> <span class="k">if</span> <span class="p">(</span><span class="nx">stack</span><span class="p">[</span><span class="nx">length</span><span class="p">]</span> <span class="o">===</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5757'> <span class="c1">// Cyclic structures cannot be serialized by `JSON.stringify`.</span></div><div class='line' id='LC5758'> <span class="k">throw</span> <span class="nx">TypeError</span><span class="p">();</span></div><div class='line' id='LC5759'> <span class="p">}</span></div><div class='line' id='LC5760'> <span class="p">}</span></div><div class='line' id='LC5761'> <span class="c1">// Add the object to the stack of traversed objects.</span></div><div class='line' id='LC5762'> <span class="nx">stack</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC5763'> <span class="nx">results</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC5764'> <span class="c1">// Save the current indentation level and indent one additional level.</span></div><div class='line' id='LC5765'> <span class="nx">prefix</span> <span class="o">=</span> <span class="nx">indentation</span><span class="p">;</span></div><div class='line' id='LC5766'> <span class="nx">indentation</span> <span class="o">+=</span> <span class="nx">whitespace</span><span class="p">;</span></div><div class='line' id='LC5767'> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">arrayClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5768'> <span class="c1">// Recursively serialize array elements.</span></div><div class='line' id='LC5769'> <span class="k">for</span> <span class="p">(</span><span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">index</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5770'> <span class="nx">element</span> <span class="o">=</span> <span class="nx">serialize</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">properties</span><span class="p">,</span> <span class="nx">whitespace</span><span class="p">,</span> <span class="nx">indentation</span><span class="p">,</span> <span class="nx">stack</span><span class="p">);</span></div><div class='line' id='LC5771'> <span class="nx">results</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">element</span> <span class="o">===</span> <span class="nx">undef</span> <span class="o">?</span> <span class="s2">"null"</span> <span class="o">:</span> <span class="nx">element</span><span class="p">);</span></div><div class='line' id='LC5772'> <span class="p">}</span></div><div class='line' id='LC5773'> <span class="nx">result</span> <span class="o">=</span> <span class="nx">results</span><span class="p">.</span><span class="nx">length</span> <span class="o">?</span> <span class="p">(</span><span class="nx">whitespace</span> <span class="o">?</span> <span class="s2">"[\n"</span> <span class="o">+</span> <span class="nx">indentation</span> <span class="o">+</span> <span class="nx">results</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s2">",\n"</span> <span class="o">+</span> <span class="nx">indentation</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"\n"</span> <span class="o">+</span> <span class="nx">prefix</span> <span class="o">+</span> <span class="s2">"]"</span> <span class="o">:</span> <span class="p">(</span><span class="s2">"["</span> <span class="o">+</span> <span class="nx">results</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"]"</span><span class="p">))</span> <span class="o">:</span> <span class="s2">"[]"</span><span class="p">;</span></div><div class='line' id='LC5774'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5775'> <span class="c1">// Recursively serialize object members. Members are selected from</span></div><div class='line' id='LC5776'> <span class="c1">// either a user-specified list of property names, or the object</span></div><div class='line' id='LC5777'> <span class="c1">// itself.</span></div><div class='line' id='LC5778'> <span class="nx">forEach</span><span class="p">(</span><span class="nx">properties</span> <span class="o">||</span> <span class="nx">value</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">property</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5779'> <span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">serialize</span><span class="p">(</span><span class="nx">property</span><span class="p">,</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">properties</span><span class="p">,</span> <span class="nx">whitespace</span><span class="p">,</span> <span class="nx">indentation</span><span class="p">,</span> <span class="nx">stack</span><span class="p">);</span></div><div class='line' id='LC5780'> <span class="k">if</span> <span class="p">(</span><span class="nx">element</span> <span class="o">!==</span> <span class="nx">undef</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5781'> <span class="c1">// According to ES 5.1 section 15.12.3: "If `gap` {whitespace}</span></div><div class='line' id='LC5782'> <span class="c1">// is not the empty string, let `member` {quote(property) + ":"}</span></div><div class='line' id='LC5783'> <span class="c1">// be the concatenation of `member` and the `space` character."</span></div><div class='line' id='LC5784'> <span class="c1">// The "`space` character" refers to the literal space</span></div><div class='line' id='LC5785'> <span class="c1">// character, not the `space` {width} argument provided to</span></div><div class='line' id='LC5786'> <span class="c1">// `JSON.stringify`.</span></div><div class='line' id='LC5787'> <span class="nx">results</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">quote</span><span class="p">(</span><span class="nx">property</span><span class="p">)</span> <span class="o">+</span> <span class="s2">":"</span> <span class="o">+</span> <span class="p">(</span><span class="nx">whitespace</span> <span class="o">?</span> <span class="s2">" "</span> <span class="o">:</span> <span class="s2">""</span><span class="p">)</span> <span class="o">+</span> <span class="nx">element</span><span class="p">);</span></div><div class='line' id='LC5788'> <span class="p">}</span></div><div class='line' id='LC5789'> <span class="p">});</span></div><div class='line' id='LC5790'> <span class="nx">result</span> <span class="o">=</span> <span class="nx">results</span><span class="p">.</span><span class="nx">length</span> <span class="o">?</span> <span class="p">(</span><span class="nx">whitespace</span> <span class="o">?</span> <span class="s2">"{\n"</span> <span class="o">+</span> <span class="nx">indentation</span> <span class="o">+</span> <span class="nx">results</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s2">",\n"</span> <span class="o">+</span> <span class="nx">indentation</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"\n"</span> <span class="o">+</span> <span class="nx">prefix</span> <span class="o">+</span> <span class="s2">"}"</span> <span class="o">:</span> <span class="p">(</span><span class="s2">"{"</span> <span class="o">+</span> <span class="nx">results</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s2">","</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"}"</span><span class="p">))</span> <span class="o">:</span> <span class="s2">"{}"</span><span class="p">;</span></div><div class='line' id='LC5791'> <span class="p">}</span></div><div class='line' id='LC5792'> <span class="c1">// Remove the object from the traversed object stack.</span></div><div class='line' id='LC5793'> <span class="nx">stack</span><span class="p">.</span><span class="nx">pop</span><span class="p">();</span></div><div class='line' id='LC5794'> <span class="k">return</span> <span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC5795'> <span class="p">}</span></div><div class='line' id='LC5796'> <span class="p">};</span></div><div class='line' id='LC5797'><br/></div><div class='line' id='LC5798'> <span class="c1">// Public: `JSON.stringify`. See ES 5.1 section 15.12.3.</span></div><div class='line' id='LC5799'> <span class="nx">JSON3</span><span class="p">.</span><span class="nx">stringify</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">filter</span><span class="p">,</span> <span class="nx">width</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5800'> <span class="kd">var</span> <span class="nx">whitespace</span><span class="p">,</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">properties</span><span class="p">,</span> <span class="nx">className</span><span class="p">;</span></div><div class='line' id='LC5801'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">filter</span> <span class="o">==</span> <span class="s2">"function"</span> <span class="o">||</span> <span class="k">typeof</span> <span class="nx">filter</span> <span class="o">==</span> <span class="s2">"object"</span> <span class="o">&&</span> <span class="nx">filter</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5802'> <span class="k">if</span> <span class="p">((</span><span class="nx">className</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">filter</span><span class="p">))</span> <span class="o">==</span> <span class="nx">functionClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5803'> <span class="nx">callback</span> <span class="o">=</span> <span class="nx">filter</span><span class="p">;</span></div><div class='line' id='LC5804'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">arrayClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5805'> <span class="c1">// Convert the property names array into a makeshift set.</span></div><div class='line' id='LC5806'> <span class="nx">properties</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC5807'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">filter</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">value</span><span class="p">;</span> <span class="nx">index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">;</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">filter</span><span class="p">[</span><span class="nx">index</span><span class="o">++</span><span class="p">],</span> <span class="p">((</span><span class="nx">className</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">value</span><span class="p">)),</span> <span class="nx">className</span> <span class="o">==</span> <span class="nx">stringClass</span> <span class="o">||</span> <span class="nx">className</span> <span class="o">==</span> <span class="nx">numberClass</span><span class="p">)</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">properties</span><span class="p">[</span><span class="nx">value</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">));</span></div><div class='line' id='LC5808'> <span class="p">}</span></div><div class='line' id='LC5809'> <span class="p">}</span></div><div class='line' id='LC5810'> <span class="k">if</span> <span class="p">(</span><span class="nx">width</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5811'> <span class="k">if</span> <span class="p">((</span><span class="nx">className</span> <span class="o">=</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">width</span><span class="p">))</span> <span class="o">==</span> <span class="nx">numberClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5812'> <span class="c1">// Convert the `width` to an integer and create a string containing</span></div><div class='line' id='LC5813'> <span class="c1">// `width` number of space characters.</span></div><div class='line' id='LC5814'> <span class="k">if</span> <span class="p">((</span><span class="nx">width</span> <span class="o">-=</span> <span class="nx">width</span> <span class="o">%</span> <span class="mi">1</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5815'> <span class="k">for</span> <span class="p">(</span><span class="nx">whitespace</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> <span class="nx">width</span> <span class="o">></span> <span class="mi">10</span> <span class="o">&&</span> <span class="p">(</span><span class="nx">width</span> <span class="o">=</span> <span class="mi">10</span><span class="p">);</span> <span class="nx">whitespace</span><span class="p">.</span><span class="nx">length</span> <span class="o"><</span> <span class="nx">width</span><span class="p">;</span> <span class="nx">whitespace</span> <span class="o">+=</span> <span class="s2">" "</span><span class="p">);</span></div><div class='line' id='LC5816'> <span class="p">}</span></div><div class='line' id='LC5817'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">className</span> <span class="o">==</span> <span class="nx">stringClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5818'> <span class="nx">whitespace</span> <span class="o">=</span> <span class="nx">width</span><span class="p">.</span><span class="nx">length</span> <span class="o"><=</span> <span class="mi">10</span> <span class="o">?</span> <span class="nx">width</span> <span class="o">:</span> <span class="nx">width</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">10</span><span class="p">);</span></div><div class='line' id='LC5819'> <span class="p">}</span></div><div class='line' id='LC5820'> <span class="p">}</span></div><div class='line' id='LC5821'> <span class="c1">// Opera <= 7.54u2 discards the values associated with empty string keys</span></div><div class='line' id='LC5822'> <span class="c1">// (`""`) only if they are used directly within an object member list</span></div><div class='line' id='LC5823'> <span class="c1">// (e.g., `!("" in { "": 1})`).</span></div><div class='line' id='LC5824'> <span class="k">return</span> <span class="nx">serialize</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="p">(</span><span class="nx">value</span> <span class="o">=</span> <span class="p">{},</span> <span class="nx">value</span><span class="p">[</span><span class="s2">""</span><span class="p">]</span> <span class="o">=</span> <span class="nx">source</span><span class="p">,</span> <span class="nx">value</span><span class="p">),</span> <span class="nx">callback</span><span class="p">,</span> <span class="nx">properties</span><span class="p">,</span> <span class="nx">whitespace</span><span class="p">,</span> <span class="s2">""</span><span class="p">,</span> <span class="p">[]);</span></div><div class='line' id='LC5825'> <span class="p">};</span></div><div class='line' id='LC5826'> <span class="p">}</span></div><div class='line' id='LC5827'><br/></div><div class='line' id='LC5828'> <span class="c1">// Public: Parses a JSON source string.</span></div><div class='line' id='LC5829'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">has</span><span class="p">(</span><span class="s2">"json-parse"</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5830'> <span class="kd">var</span> <span class="nx">fromCharCode</span> <span class="o">=</span> <span class="nb">String</span><span class="p">.</span><span class="nx">fromCharCode</span><span class="p">;</span></div><div class='line' id='LC5831'><br/></div><div class='line' id='LC5832'> <span class="c1">// Internal: A map of escaped control characters and their unescaped</span></div><div class='line' id='LC5833'> <span class="c1">// equivalents.</span></div><div class='line' id='LC5834'> <span class="kd">var</span> <span class="nx">Unescapes</span> <span class="o">=</span> <span class="p">{</span></div><div class='line' id='LC5835'> <span class="mi">92</span><span class="o">:</span> <span class="s2">"\\"</span><span class="p">,</span></div><div class='line' id='LC5836'> <span class="mi">34</span><span class="o">:</span> <span class="s1">'"'</span><span class="p">,</span></div><div class='line' id='LC5837'> <span class="mi">47</span><span class="o">:</span> <span class="s2">"/"</span><span class="p">,</span></div><div class='line' id='LC5838'> <span class="mi">98</span><span class="o">:</span> <span class="s2">"\b"</span><span class="p">,</span></div><div class='line' id='LC5839'> <span class="mi">116</span><span class="o">:</span> <span class="s2">"\t"</span><span class="p">,</span></div><div class='line' id='LC5840'> <span class="mi">110</span><span class="o">:</span> <span class="s2">"\n"</span><span class="p">,</span></div><div class='line' id='LC5841'> <span class="mi">102</span><span class="o">:</span> <span class="s2">"\f"</span><span class="p">,</span></div><div class='line' id='LC5842'> <span class="mi">114</span><span class="o">:</span> <span class="s2">"\r"</span></div><div class='line' id='LC5843'> <span class="p">};</span></div><div class='line' id='LC5844'><br/></div><div class='line' id='LC5845'> <span class="c1">// Internal: Stores the parser state.</span></div><div class='line' id='LC5846'> <span class="kd">var</span> <span class="nx">Index</span><span class="p">,</span> <span class="nx">Source</span><span class="p">;</span></div><div class='line' id='LC5847'><br/></div><div class='line' id='LC5848'> <span class="c1">// Internal: Resets the parser state and throws a `SyntaxError`.</span></div><div class='line' id='LC5849'> <span class="kd">var</span> <span class="nx">abort</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5850'> <span class="nx">Index</span> <span class="o">=</span> <span class="nx">Source</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC5851'> <span class="k">throw</span> <span class="nx">SyntaxError</span><span class="p">();</span></div><div class='line' id='LC5852'> <span class="p">};</span></div><div class='line' id='LC5853'><br/></div><div class='line' id='LC5854'> <span class="c1">// Internal: Returns the next token, or `"$"` if the parser has reached</span></div><div class='line' id='LC5855'> <span class="c1">// the end of the source string. A token may be a string, number, `null`</span></div><div class='line' id='LC5856'> <span class="c1">// literal, or Boolean literal.</span></div><div class='line' id='LC5857'> <span class="kd">var</span> <span class="nx">lex</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC5858'> <span class="kd">var</span> <span class="nx">source</span> <span class="o">=</span> <span class="nx">Source</span><span class="p">,</span> <span class="nx">length</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">length</span><span class="p">,</span> <span class="nx">value</span><span class="p">,</span> <span class="nx">begin</span><span class="p">,</span> <span class="nx">position</span><span class="p">,</span> <span class="nx">isSigned</span><span class="p">,</span> <span class="nx">charCode</span><span class="p">;</span></div><div class='line' id='LC5859'> <span class="k">while</span> <span class="p">(</span><span class="nx">Index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5860'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5861'> <span class="k">switch</span> <span class="p">(</span><span class="nx">charCode</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5862'> <span class="k">case</span> <span class="mi">9</span><span class="o">:</span> <span class="k">case</span> <span class="mi">10</span><span class="o">:</span> <span class="k">case</span> <span class="mi">13</span><span class="o">:</span> <span class="k">case</span> <span class="mi">32</span><span class="o">:</span></div><div class='line' id='LC5863'> <span class="c1">// Skip whitespace tokens, including tabs, carriage returns, line</span></div><div class='line' id='LC5864'> <span class="c1">// feeds, and space characters.</span></div><div class='line' id='LC5865'> <span class="nx">Index</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC5866'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5867'> <span class="k">case</span> <span class="mi">123</span><span class="o">:</span> <span class="k">case</span> <span class="mi">125</span><span class="o">:</span> <span class="k">case</span> <span class="mi">91</span><span class="o">:</span> <span class="k">case</span> <span class="mi">93</span><span class="o">:</span> <span class="k">case</span> <span class="mi">58</span><span class="o">:</span> <span class="k">case</span> <span class="mi">44</span><span class="o">:</span></div><div class='line' id='LC5868'> <span class="c1">// Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at</span></div><div class='line' id='LC5869'> <span class="c1">// the current position.</span></div><div class='line' id='LC5870'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">charIndexBuggy</span> <span class="o">?</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">)</span> <span class="o">:</span> <span class="nx">source</span><span class="p">[</span><span class="nx">Index</span><span class="p">];</span></div><div class='line' id='LC5871'> <span class="nx">Index</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC5872'> <span class="k">return</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC5873'> <span class="k">case</span> <span class="mi">34</span><span class="o">:</span></div><div class='line' id='LC5874'> <span class="c1">// `"` delimits a JSON string; advance to the next character and</span></div><div class='line' id='LC5875'> <span class="c1">// begin parsing the string. String tokens are prefixed with the</span></div><div class='line' id='LC5876'> <span class="c1">// sentinel `@` character to distinguish them from punctuators and</span></div><div class='line' id='LC5877'> <span class="c1">// end-of-string tokens.</span></div><div class='line' id='LC5878'> <span class="k">for</span> <span class="p">(</span><span class="nx">value</span> <span class="o">=</span> <span class="s2">"@"</span><span class="p">,</span> <span class="nx">Index</span><span class="o">++</span><span class="p">;</span> <span class="nx">Index</span> <span class="o"><</span> <span class="nx">length</span><span class="p">;)</span> <span class="p">{</span></div><div class='line' id='LC5879'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5880'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o"><</span> <span class="mi">32</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5881'> <span class="c1">// Unescaped ASCII control characters (those with a code unit</span></div><div class='line' id='LC5882'> <span class="c1">// less than the space character) are not permitted.</span></div><div class='line' id='LC5883'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5884'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">==</span> <span class="mi">92</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5885'> <span class="c1">// A reverse solidus (`\`) marks the beginning of an escaped</span></div><div class='line' id='LC5886'> <span class="c1">// control character (including `"`, `\`, and `/`) or Unicode</span></div><div class='line' id='LC5887'> <span class="c1">// escape sequence.</span></div><div class='line' id='LC5888'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="o">++</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5889'> <span class="k">switch</span> <span class="p">(</span><span class="nx">charCode</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5890'> <span class="k">case</span> <span class="mi">92</span><span class="o">:</span> <span class="k">case</span> <span class="mi">34</span><span class="o">:</span> <span class="k">case</span> <span class="mi">47</span><span class="o">:</span> <span class="k">case</span> <span class="mi">98</span><span class="o">:</span> <span class="k">case</span> <span class="mi">116</span><span class="o">:</span> <span class="k">case</span> <span class="mi">110</span><span class="o">:</span> <span class="k">case</span> <span class="mi">102</span><span class="o">:</span> <span class="k">case</span> <span class="mi">114</span><span class="o">:</span></div><div class='line' id='LC5891'> <span class="c1">// Revive escaped control characters.</span></div><div class='line' id='LC5892'> <span class="nx">value</span> <span class="o">+=</span> <span class="nx">Unescapes</span><span class="p">[</span><span class="nx">charCode</span><span class="p">];</span></div><div class='line' id='LC5893'> <span class="nx">Index</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC5894'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5895'> <span class="k">case</span> <span class="mi">117</span><span class="o">:</span></div><div class='line' id='LC5896'> <span class="c1">// `\u` marks the beginning of a Unicode escape sequence.</span></div><div class='line' id='LC5897'> <span class="c1">// Advance to the first character and validate the</span></div><div class='line' id='LC5898'> <span class="c1">// four-digit code point.</span></div><div class='line' id='LC5899'> <span class="nx">begin</span> <span class="o">=</span> <span class="o">++</span><span class="nx">Index</span><span class="p">;</span></div><div class='line' id='LC5900'> <span class="k">for</span> <span class="p">(</span><span class="nx">position</span> <span class="o">=</span> <span class="nx">Index</span> <span class="o">+</span> <span class="mi">4</span><span class="p">;</span> <span class="nx">Index</span> <span class="o"><</span> <span class="nx">position</span><span class="p">;</span> <span class="nx">Index</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5901'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5902'> <span class="c1">// A valid sequence comprises four hexdigits (case-</span></div><div class='line' id='LC5903'> <span class="c1">// insensitive) that form a single hexadecimal value.</span></div><div class='line' id='LC5904'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">48</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">57</span> <span class="o">||</span> <span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">97</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">102</span> <span class="o">||</span> <span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">65</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">70</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5905'> <span class="c1">// Invalid Unicode escape sequence.</span></div><div class='line' id='LC5906'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5907'> <span class="p">}</span></div><div class='line' id='LC5908'> <span class="p">}</span></div><div class='line' id='LC5909'> <span class="c1">// Revive the escaped character.</span></div><div class='line' id='LC5910'> <span class="nx">value</span> <span class="o">+=</span> <span class="nx">fromCharCode</span><span class="p">(</span><span class="s2">"0x"</span> <span class="o">+</span> <span class="nx">source</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">begin</span><span class="p">,</span> <span class="nx">Index</span><span class="p">));</span></div><div class='line' id='LC5911'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5912'> <span class="k">default</span><span class="o">:</span></div><div class='line' id='LC5913'> <span class="c1">// Invalid escape sequence.</span></div><div class='line' id='LC5914'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5915'> <span class="p">}</span></div><div class='line' id='LC5916'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC5917'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">==</span> <span class="mi">34</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5918'> <span class="c1">// An unescaped double-quote character marks the end of the</span></div><div class='line' id='LC5919'> <span class="c1">// string.</span></div><div class='line' id='LC5920'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC5921'> <span class="p">}</span></div><div class='line' id='LC5922'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5923'> <span class="nx">begin</span> <span class="o">=</span> <span class="nx">Index</span><span class="p">;</span></div><div class='line' id='LC5924'> <span class="c1">// Optimize for the common case where a string is valid.</span></div><div class='line' id='LC5925'> <span class="k">while</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">32</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o">!=</span> <span class="mi">92</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o">!=</span> <span class="mi">34</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5926'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="o">++</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5927'> <span class="p">}</span></div><div class='line' id='LC5928'> <span class="c1">// Append the string as-is.</span></div><div class='line' id='LC5929'> <span class="nx">value</span> <span class="o">+=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">begin</span><span class="p">,</span> <span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5930'> <span class="p">}</span></div><div class='line' id='LC5931'> <span class="p">}</span></div><div class='line' id='LC5932'> <span class="k">if</span> <span class="p">(</span><span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">)</span> <span class="o">==</span> <span class="mi">34</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5933'> <span class="c1">// Advance to the next character and return the revived string.</span></div><div class='line' id='LC5934'> <span class="nx">Index</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC5935'> <span class="k">return</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC5936'> <span class="p">}</span></div><div class='line' id='LC5937'> <span class="c1">// Unterminated string.</span></div><div class='line' id='LC5938'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5939'> <span class="k">default</span><span class="o">:</span></div><div class='line' id='LC5940'> <span class="c1">// Parse numbers and literals.</span></div><div class='line' id='LC5941'> <span class="nx">begin</span> <span class="o">=</span> <span class="nx">Index</span><span class="p">;</span></div><div class='line' id='LC5942'> <span class="c1">// Advance past the negative sign, if one is specified.</span></div><div class='line' id='LC5943'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">==</span> <span class="mi">45</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5944'> <span class="nx">isSigned</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC5945'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="o">++</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5946'> <span class="p">}</span></div><div class='line' id='LC5947'> <span class="c1">// Parse an integer or floating-point value.</span></div><div class='line' id='LC5948'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">48</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">57</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5949'> <span class="c1">// Leading zeroes are interpreted as octal literals.</span></div><div class='line' id='LC5950'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">==</span> <span class="mi">48</span> <span class="o">&&</span> <span class="p">((</span><span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)),</span> <span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">48</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">57</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC5951'> <span class="c1">// Illegal octal literal.</span></div><div class='line' id='LC5952'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5953'> <span class="p">}</span></div><div class='line' id='LC5954'> <span class="nx">isSigned</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC5955'> <span class="c1">// Parse the integer component.</span></div><div class='line' id='LC5956'> <span class="k">for</span> <span class="p">(;</span> <span class="nx">Index</span> <span class="o"><</span> <span class="nx">length</span> <span class="o">&&</span> <span class="p">((</span><span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">)),</span> <span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">48</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">57</span><span class="p">);</span> <span class="nx">Index</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC5957'> <span class="c1">// Floats cannot contain a leading decimal point; however, this</span></div><div class='line' id='LC5958'> <span class="c1">// case is already accounted for by the parser.</span></div><div class='line' id='LC5959'> <span class="k">if</span> <span class="p">(</span><span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">)</span> <span class="o">==</span> <span class="mi">46</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5960'> <span class="nx">position</span> <span class="o">=</span> <span class="o">++</span><span class="nx">Index</span><span class="p">;</span></div><div class='line' id='LC5961'> <span class="c1">// Parse the decimal component.</span></div><div class='line' id='LC5962'> <span class="k">for</span> <span class="p">(;</span> <span class="nx">position</span> <span class="o"><</span> <span class="nx">length</span> <span class="o">&&</span> <span class="p">((</span><span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">position</span><span class="p">)),</span> <span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">48</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">57</span><span class="p">);</span> <span class="nx">position</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC5963'> <span class="k">if</span> <span class="p">(</span><span class="nx">position</span> <span class="o">==</span> <span class="nx">Index</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5964'> <span class="c1">// Illegal trailing decimal.</span></div><div class='line' id='LC5965'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5966'> <span class="p">}</span></div><div class='line' id='LC5967'> <span class="nx">Index</span> <span class="o">=</span> <span class="nx">position</span><span class="p">;</span></div><div class='line' id='LC5968'> <span class="p">}</span></div><div class='line' id='LC5969'> <span class="c1">// Parse exponents. The `e` denoting the exponent is</span></div><div class='line' id='LC5970'> <span class="c1">// case-insensitive.</span></div><div class='line' id='LC5971'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5972'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">==</span> <span class="mi">101</span> <span class="o">||</span> <span class="nx">charCode</span> <span class="o">==</span> <span class="mi">69</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5973'> <span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="o">++</span><span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5974'> <span class="c1">// Skip past the sign following the exponent, if one is</span></div><div class='line' id='LC5975'> <span class="c1">// specified.</span></div><div class='line' id='LC5976'> <span class="k">if</span> <span class="p">(</span><span class="nx">charCode</span> <span class="o">==</span> <span class="mi">43</span> <span class="o">||</span> <span class="nx">charCode</span> <span class="o">==</span> <span class="mi">45</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5977'> <span class="nx">Index</span><span class="o">++</span><span class="p">;</span></div><div class='line' id='LC5978'> <span class="p">}</span></div><div class='line' id='LC5979'> <span class="c1">// Parse the exponential component.</span></div><div class='line' id='LC5980'> <span class="k">for</span> <span class="p">(</span><span class="nx">position</span> <span class="o">=</span> <span class="nx">Index</span><span class="p">;</span> <span class="nx">position</span> <span class="o"><</span> <span class="nx">length</span> <span class="o">&&</span> <span class="p">((</span><span class="nx">charCode</span> <span class="o">=</span> <span class="nx">source</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">position</span><span class="p">)),</span> <span class="nx">charCode</span> <span class="o">>=</span> <span class="mi">48</span> <span class="o">&&</span> <span class="nx">charCode</span> <span class="o"><=</span> <span class="mi">57</span><span class="p">);</span> <span class="nx">position</span><span class="o">++</span><span class="p">);</span></div><div class='line' id='LC5981'> <span class="k">if</span> <span class="p">(</span><span class="nx">position</span> <span class="o">==</span> <span class="nx">Index</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5982'> <span class="c1">// Illegal empty exponent.</span></div><div class='line' id='LC5983'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5984'> <span class="p">}</span></div><div class='line' id='LC5985'> <span class="nx">Index</span> <span class="o">=</span> <span class="nx">position</span><span class="p">;</span></div><div class='line' id='LC5986'> <span class="p">}</span></div><div class='line' id='LC5987'> <span class="c1">// Coerce the parsed value to a JavaScript number.</span></div><div class='line' id='LC5988'> <span class="k">return</span> <span class="o">+</span><span class="nx">source</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">begin</span><span class="p">,</span> <span class="nx">Index</span><span class="p">);</span></div><div class='line' id='LC5989'> <span class="p">}</span></div><div class='line' id='LC5990'> <span class="c1">// A negative sign may only precede numbers.</span></div><div class='line' id='LC5991'> <span class="k">if</span> <span class="p">(</span><span class="nx">isSigned</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5992'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC5993'> <span class="p">}</span></div><div class='line' id='LC5994'> <span class="c1">// `true`, `false`, and `null` literals.</span></div><div class='line' id='LC5995'> <span class="k">if</span> <span class="p">(</span><span class="nx">source</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">Index</span><span class="p">,</span> <span class="nx">Index</span> <span class="o">+</span> <span class="mi">4</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"true"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5996'> <span class="nx">Index</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span></div><div class='line' id='LC5997'> <span class="k">return</span> <span class="kc">true</span><span class="p">;</span></div><div class='line' id='LC5998'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">source</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">Index</span><span class="p">,</span> <span class="nx">Index</span> <span class="o">+</span> <span class="mi">5</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"false"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC5999'> <span class="nx">Index</span> <span class="o">+=</span> <span class="mi">5</span><span class="p">;</span></div><div class='line' id='LC6000'> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span></div><div class='line' id='LC6001'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">source</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="nx">Index</span><span class="p">,</span> <span class="nx">Index</span> <span class="o">+</span> <span class="mi">4</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"null"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6002'> <span class="nx">Index</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span></div><div class='line' id='LC6003'> <span class="k">return</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC6004'> <span class="p">}</span></div><div class='line' id='LC6005'> <span class="c1">// Unrecognized token.</span></div><div class='line' id='LC6006'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6007'> <span class="p">}</span></div><div class='line' id='LC6008'> <span class="p">}</span></div><div class='line' id='LC6009'> <span class="c1">// Return the sentinel `$` character if the parser has reached the end</span></div><div class='line' id='LC6010'> <span class="c1">// of the source string.</span></div><div class='line' id='LC6011'> <span class="k">return</span> <span class="s2">"$"</span><span class="p">;</span></div><div class='line' id='LC6012'> <span class="p">};</span></div><div class='line' id='LC6013'><br/></div><div class='line' id='LC6014'> <span class="c1">// Internal: Parses a JSON `value` token.</span></div><div class='line' id='LC6015'> <span class="kd">var</span> <span class="nx">get</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6016'> <span class="kd">var</span> <span class="nx">results</span><span class="p">,</span> <span class="nx">hasMembers</span><span class="p">;</span></div><div class='line' id='LC6017'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"$"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6018'> <span class="c1">// Unexpected end of input.</span></div><div class='line' id='LC6019'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6020'> <span class="p">}</span></div><div class='line' id='LC6021'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">==</span> <span class="s2">"string"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6022'> <span class="k">if</span> <span class="p">((</span><span class="nx">charIndexBuggy</span> <span class="o">?</span> <span class="nx">value</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">:</span> <span class="nx">value</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">==</span> <span class="s2">"@"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6023'> <span class="c1">// Remove the sentinel `@` character.</span></div><div class='line' id='LC6024'> <span class="k">return</span> <span class="nx">value</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span></div><div class='line' id='LC6025'> <span class="p">}</span></div><div class='line' id='LC6026'> <span class="c1">// Parse object and array literals.</span></div><div class='line' id='LC6027'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"["</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6028'> <span class="c1">// Parses a JSON array, returning a new JavaScript array.</span></div><div class='line' id='LC6029'> <span class="nx">results</span> <span class="o">=</span> <span class="p">[];</span></div><div class='line' id='LC6030'> <span class="k">for</span> <span class="p">(;;</span> <span class="nx">hasMembers</span> <span class="o">||</span> <span class="p">(</span><span class="nx">hasMembers</span> <span class="o">=</span> <span class="kc">true</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC6031'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">lex</span><span class="p">();</span></div><div class='line' id='LC6032'> <span class="c1">// A closing square bracket marks the end of the array literal.</span></div><div class='line' id='LC6033'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"]"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6034'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC6035'> <span class="p">}</span></div><div class='line' id='LC6036'> <span class="c1">// If the array literal contains elements, the current token</span></div><div class='line' id='LC6037'> <span class="c1">// should be a comma separating the previous element from the</span></div><div class='line' id='LC6038'> <span class="c1">// next.</span></div><div class='line' id='LC6039'> <span class="k">if</span> <span class="p">(</span><span class="nx">hasMembers</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6040'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">","</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6041'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">lex</span><span class="p">();</span></div><div class='line' id='LC6042'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"]"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6043'> <span class="c1">// Unexpected trailing `,` in array literal.</span></div><div class='line' id='LC6044'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6045'> <span class="p">}</span></div><div class='line' id='LC6046'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC6047'> <span class="c1">// A `,` must separate each array element.</span></div><div class='line' id='LC6048'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6049'> <span class="p">}</span></div><div class='line' id='LC6050'> <span class="p">}</span></div><div class='line' id='LC6051'> <span class="c1">// Elisions and leading commas are not permitted.</span></div><div class='line' id='LC6052'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">","</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6053'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6054'> <span class="p">}</span></div><div class='line' id='LC6055'> <span class="nx">results</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">get</span><span class="p">(</span><span class="nx">value</span><span class="p">));</span></div><div class='line' id='LC6056'> <span class="p">}</span></div><div class='line' id='LC6057'> <span class="k">return</span> <span class="nx">results</span><span class="p">;</span></div><div class='line' id='LC6058'> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"{"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6059'> <span class="c1">// Parses a JSON object, returning a new JavaScript object.</span></div><div class='line' id='LC6060'> <span class="nx">results</span> <span class="o">=</span> <span class="p">{};</span></div><div class='line' id='LC6061'> <span class="k">for</span> <span class="p">(;;</span> <span class="nx">hasMembers</span> <span class="o">||</span> <span class="p">(</span><span class="nx">hasMembers</span> <span class="o">=</span> <span class="kc">true</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC6062'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">lex</span><span class="p">();</span></div><div class='line' id='LC6063'> <span class="c1">// A closing curly brace marks the end of the object literal.</span></div><div class='line' id='LC6064'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"}"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6065'> <span class="k">break</span><span class="p">;</span></div><div class='line' id='LC6066'> <span class="p">}</span></div><div class='line' id='LC6067'> <span class="c1">// If the object literal contains members, the current token</span></div><div class='line' id='LC6068'> <span class="c1">// should be a comma separator.</span></div><div class='line' id='LC6069'> <span class="k">if</span> <span class="p">(</span><span class="nx">hasMembers</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6070'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">","</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6071'> <span class="nx">value</span> <span class="o">=</span> <span class="nx">lex</span><span class="p">();</span></div><div class='line' id='LC6072'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">"}"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6073'> <span class="c1">// Unexpected trailing `,` in object literal.</span></div><div class='line' id='LC6074'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6075'> <span class="p">}</span></div><div class='line' id='LC6076'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC6077'> <span class="c1">// A `,` must separate each object member.</span></div><div class='line' id='LC6078'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6079'> <span class="p">}</span></div><div class='line' id='LC6080'> <span class="p">}</span></div><div class='line' id='LC6081'> <span class="c1">// Leading commas are not permitted, object property names must be</span></div><div class='line' id='LC6082'> <span class="c1">// double-quoted strings, and a `:` must separate each property</span></div><div class='line' id='LC6083'> <span class="c1">// name and value.</span></div><div class='line' id='LC6084'> <span class="k">if</span> <span class="p">(</span><span class="nx">value</span> <span class="o">==</span> <span class="s2">","</span> <span class="o">||</span> <span class="k">typeof</span> <span class="nx">value</span> <span class="o">!=</span> <span class="s2">"string"</span> <span class="o">||</span> <span class="p">(</span><span class="nx">charIndexBuggy</span> <span class="o">?</span> <span class="nx">value</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">:</span> <span class="nx">value</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">!=</span> <span class="s2">"@"</span> <span class="o">||</span> <span class="nx">lex</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">":"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6085'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6086'> <span class="p">}</span></div><div class='line' id='LC6087'> <span class="nx">results</span><span class="p">[</span><span class="nx">value</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">1</span><span class="p">)]</span> <span class="o">=</span> <span class="nx">get</span><span class="p">(</span><span class="nx">lex</span><span class="p">());</span></div><div class='line' id='LC6088'> <span class="p">}</span></div><div class='line' id='LC6089'> <span class="k">return</span> <span class="nx">results</span><span class="p">;</span></div><div class='line' id='LC6090'> <span class="p">}</span></div><div class='line' id='LC6091'> <span class="c1">// Unexpected token encountered.</span></div><div class='line' id='LC6092'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6093'> <span class="p">}</span></div><div class='line' id='LC6094'> <span class="k">return</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC6095'> <span class="p">};</span></div><div class='line' id='LC6096'><br/></div><div class='line' id='LC6097'> <span class="c1">// Internal: Updates a traversed object member.</span></div><div class='line' id='LC6098'> <span class="kd">var</span> <span class="nx">update</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6099'> <span class="kd">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="nx">walk</span><span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC6100'> <span class="k">if</span> <span class="p">(</span><span class="nx">element</span> <span class="o">===</span> <span class="nx">undef</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6101'> <span class="k">delete</span> <span class="nx">source</span><span class="p">[</span><span class="nx">property</span><span class="p">];</span></div><div class='line' id='LC6102'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC6103'> <span class="nx">source</span><span class="p">[</span><span class="nx">property</span><span class="p">]</span> <span class="o">=</span> <span class="nx">element</span><span class="p">;</span></div><div class='line' id='LC6104'> <span class="p">}</span></div><div class='line' id='LC6105'> <span class="p">};</span></div><div class='line' id='LC6106'><br/></div><div class='line' id='LC6107'> <span class="c1">// Internal: Recursively traverses a parsed JSON object, invoking the</span></div><div class='line' id='LC6108'> <span class="c1">// `callback` function for each value. This is an implementation of the</span></div><div class='line' id='LC6109'> <span class="c1">// `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.</span></div><div class='line' id='LC6110'> <span class="kd">var</span> <span class="nx">walk</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6111'> <span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">source</span><span class="p">[</span><span class="nx">property</span><span class="p">],</span> <span class="nx">length</span><span class="p">;</span></div><div class='line' id='LC6112'> <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">==</span> <span class="s2">"object"</span> <span class="o">&&</span> <span class="nx">value</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6113'> <span class="c1">// `forEach` can't be used to traverse an array in Opera <= 8.54</span></div><div class='line' id='LC6114'> <span class="c1">// because its `Object#hasOwnProperty` implementation returns `false`</span></div><div class='line' id='LC6115'> <span class="c1">// for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).</span></div><div class='line' id='LC6116'> <span class="k">if</span> <span class="p">(</span><span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">value</span><span class="p">)</span> <span class="o">==</span> <span class="nx">arrayClass</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6117'> <span class="k">for</span> <span class="p">(</span><span class="nx">length</span> <span class="o">=</span> <span class="nx">value</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">length</span><span class="o">--</span><span class="p">;)</span> <span class="p">{</span></div><div class='line' id='LC6118'> <span class="nx">update</span><span class="p">(</span><span class="nx">value</span><span class="p">,</span> <span class="nx">length</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC6119'> <span class="p">}</span></div><div class='line' id='LC6120'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span></div><div class='line' id='LC6121'> <span class="nx">forEach</span><span class="p">(</span><span class="nx">value</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">property</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6122'> <span class="nx">update</span><span class="p">(</span><span class="nx">value</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span></div><div class='line' id='LC6123'> <span class="p">});</span></div><div class='line' id='LC6124'> <span class="p">}</span></div><div class='line' id='LC6125'> <span class="p">}</span></div><div class='line' id='LC6126'> <span class="k">return</span> <span class="nx">callback</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">value</span><span class="p">);</span></div><div class='line' id='LC6127'> <span class="p">};</span></div><div class='line' id='LC6128'><br/></div><div class='line' id='LC6129'> <span class="c1">// Public: `JSON.parse`. See ES 5.1 section 15.12.2.</span></div><div class='line' id='LC6130'> <span class="nx">JSON3</span><span class="p">.</span><span class="nx">parse</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">source</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6131'> <span class="kd">var</span> <span class="nx">result</span><span class="p">,</span> <span class="nx">value</span><span class="p">;</span></div><div class='line' id='LC6132'> <span class="nx">Index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></div><div class='line' id='LC6133'> <span class="nx">Source</span> <span class="o">=</span> <span class="s2">""</span> <span class="o">+</span> <span class="nx">source</span><span class="p">;</span></div><div class='line' id='LC6134'> <span class="nx">result</span> <span class="o">=</span> <span class="nx">get</span><span class="p">(</span><span class="nx">lex</span><span class="p">());</span></div><div class='line' id='LC6135'> <span class="c1">// If a JSON string contains multiple tokens, it is invalid.</span></div><div class='line' id='LC6136'> <span class="k">if</span> <span class="p">(</span><span class="nx">lex</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"$"</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6137'> <span class="nx">abort</span><span class="p">();</span></div><div class='line' id='LC6138'> <span class="p">}</span></div><div class='line' id='LC6139'> <span class="c1">// Reset the parser state.</span></div><div class='line' id='LC6140'> <span class="nx">Index</span> <span class="o">=</span> <span class="nx">Source</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span></div><div class='line' id='LC6141'> <span class="k">return</span> <span class="nx">callback</span> <span class="o">&&</span> <span class="nx">getClass</span><span class="p">.</span><span class="nx">call</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="o">==</span> <span class="nx">functionClass</span> <span class="o">?</span> <span class="nx">walk</span><span class="p">((</span><span class="nx">value</span> <span class="o">=</span> <span class="p">{},</span> <span class="nx">value</span><span class="p">[</span><span class="s2">""</span><span class="p">]</span> <span class="o">=</span> <span class="nx">result</span><span class="p">,</span> <span class="nx">value</span><span class="p">),</span> <span class="s2">""</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="o">:</span> <span class="nx">result</span><span class="p">;</span></div><div class='line' id='LC6142'> <span class="p">};</span></div><div class='line' id='LC6143'> <span class="p">}</span></div><div class='line' id='LC6144'> <span class="p">}</span></div><div class='line' id='LC6145'><br/></div><div class='line' id='LC6146'> <span class="c1">// Export for asynchronous module loaders.</span></div><div class='line' id='LC6147'> <span class="k">if</span> <span class="p">(</span><span class="nx">isLoader</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6148'> <span class="nx">define</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span></div><div class='line' id='LC6149'> <span class="k">return</span> <span class="nx">JSON3</span><span class="p">;</span></div><div class='line' id='LC6150'> <span class="p">});</span></div><div class='line' id='LC6151'> <span class="p">}</span></div><div class='line' id='LC6152'><span class="p">}(</span><span class="k">this</span><span class="p">));</span></div><div class='line' id='LC6153'><br/></div><div class='line' id='LC6154'><span class="p">},{}],</span><span class="mi">43</span><span class="o">:</span><span class="p">[</span><span class="kd">function</span><span class="p">(</span><span class="nx">require</span><span class="p">,</span><span class="nx">module</span><span class="p">,</span><span class="nx">exports</span><span class="p">){</span></div><div class='line' id='LC6155'><span class="nx">module</span><span class="p">.</span><span class="nx">exports</span> <span class="o">=</span> <span class="nx">toArray</span></div><div class='line' id='LC6156'><br/></div><div class='line' id='LC6157'><span class="kd">function</span> <span class="nx">toArray</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span> <span class="nx">index</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6158'> <span class="kd">var</span> <span class="nx">array</span> <span class="o">=</span> <span class="p">[]</span></div><div class='line' id='LC6159'><br/></div><div class='line' id='LC6160'> <span class="nx">index</span> <span class="o">=</span> <span class="nx">index</span> <span class="o">||</span> <span class="mi">0</span></div><div class='line' id='LC6161'><br/></div><div class='line' id='LC6162'> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="nx">index</span> <span class="o">||</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o"><</span> <span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span></div><div class='line' id='LC6163'> <span class="nx">array</span><span class="p">[</span><span class="nx">i</span> <span class="o">-</span> <span class="nx">index</span><span class="p">]</span> <span class="o">=</span> <span class="nx">list</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span></div><div class='line' id='LC6164'> <span class="p">}</span></div><div class='line' id='LC6165'><br/></div><div class='line' id='LC6166'> <span class="k">return</span> <span class="nx">array</span></div><div class='line' id='LC6167'><span class="p">}</span></div><div class='line' id='LC6168'><br/></div><div class='line' id='LC6169'><span class="p">},{}]},{},[</span><span class="mi">1</span><span class="p">])</span></div><div class='line' id='LC6170'><span class="p">(</span><span class="mi">1</span><span class="p">)</span></div><div class='line' id='LC6171'><span class="p">});</span></div><div class='line' id='LC6172'><span class="p">;</span></div></pre></div></td>
- </tr>
- </table>
- </div>
- </div>
- </div>
- <a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
- <div id="jump-to-line" style="display:none">
- <form accept-charset="UTF-8" class="js-jump-to-line-form">
- <input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" autofocus>
- <button type="submit" class="button">Go</button>
- </form>
- </div>
- </div>
- </div><!-- /.repo-container -->
- <div class="modal-backdrop"></div>
- </div><!-- /.container -->
- </div><!-- /.site -->
- </div><!-- /.wrapper -->
- <div class="container">
- <div class="site-footer">
- <ul class="site-footer-links right">
- <li><a href="https://status.github.com/">Status</a></li>
- <li><a href="http://developer.github.com">API</a></li>
- <li><a href="http://training.github.com">Training</a></li>
- <li><a href="http://shop.github.com">Shop</a></li>
- <li><a href="/blog">Blog</a></li>
- <li><a href="/about">About</a></li>
- </ul>
- <a href="/">
- <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
- </a>
- <ul class="site-footer-links">
- <li>© 2014 <span title="0.10346s from github-fe129-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
- <li><a href="/site/terms">Terms</a></li>
- <li><a href="/site/privacy">Privacy</a></li>
- <li><a href="/security">Security</a></li>
- <li><a href="/contact">Contact</a></li>
- </ul>
- </div><!-- /.site-footer -->
- </div><!-- /.container -->
- <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
- <div class="fullscreen-container js-fullscreen-container">
- <div class="textarea-wrap">
- <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
- </div>
- </div>
- <div class="fullscreen-sidebar">
- <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
- <span class="mega-octicon octicon-screen-normal"></span>
- </a>
- <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
- aria-label="Switch themes">
- <span class="octicon octicon-color-mode"></span>
- </a>
- </div>
- </div>
- <div id="ajax-error-message" class="flash flash-error">
- <span class="octicon octicon-alert"></span>
- <a href="#" class="octicon octicon-x close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
- Something went wrong with that request. Please try again.
- </div>
- <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-7908e205cc4734da9f037e6c8b09d0ba6c913b32.js" type="text/javascript"></script>
- <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-be385f94f618a005241395f4a467ac7f0682fc86.js" type="text/javascript"></script>
-
-
- <script async src="https://www.google-analytics.com/analytics.js"></script>
- </body>
- </html>