File: C:/Users/fred/AppData/Roaming/Code/Backups/dd084cc075a19ec865aca773f8c7f467/file/-676ccd6a
file:///c%3A/xampp/htdocs/cmykDe/ht5/moxie.js {"mtime":1780030160156,"ctime":1733490323151,"size":3322552,"etag":"3g5ffkn563igc3","orphaned":false,"typeId":""}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="dns-prefetch" href="https://assets-cdn.github.com">
<link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
<link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
<link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
<link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
<link crossorigin="anonymous" media="all" integrity="sha512-PkbtxdWDpLChpxtWQ0KbvJoef4XMYPq5pfd/ZmylYZTzXYpCfGwN9d+bsSKcmOJLwTkfjFkfj5wz3poDrhJoSQ==" rel="stylesheet" href="https://assets-cdn.github.com/assets/frameworks-f6e6ce21346c0d2eb22def1e8534afcb.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-0BWCA/R6u2ObTpfsUgMSBEyTMfOY1V9wGfqpR/U9O9tc/BFc53yM/UKaeK950BOFvlIM0BFc2lrr6CHkg095YA==" rel="stylesheet" href="https://assets-cdn.github.com/assets/github-22f66197d69af5eeca9f48295c52743e.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-zyxweUSm/NG+juywqcMFSS4HbKjLWCZyEM2JjoCqnQUU6RVrHpHMwH66xreiaeMIRoA6vYuk0hm8S1X42r/YWQ==" rel="stylesheet" href="https://assets-cdn.github.com/assets/site-220df28424b63d1e24f3bd909efebe81.css" />
<meta name="viewport" content="width=device-width">
<title>moxie/moxie.js at master · moxiecode/moxie · GitHub</title>
<meta name="description" content="GitHub is where people build software. More than 28 million people use GitHub to discover, fork, and contribute to over 85 million projects.">
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
<meta property="fb:app_id" content="1401488693436528">
<meta property="og:image" content="https://avatars0.githubusercontent.com/u/119816?s=400&v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="moxiecode/moxie" /><meta property="og:url" content="https://github.com/moxiecode/moxie" /><meta property="og:description" content="moxie - Pollyfills for XHR2 and File API" />
<link rel="assets" href="https://assets-cdn.github.com/">
<meta name="pjax-timeout" content="1000">
<meta name="request-id" content="06DE:0FEC:63326DE:8E23392:5B2599B4" data-pjax-transient>
<meta name="selected-link" value="repo_source" data-pjax-transient>
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
<meta name="google-analytics" content="UA-3769691-2">
<meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="06DE:0FEC:63326DE:8E23392:5B2599B4" /><meta name="octolytics-dimension-region_edge" content="iad" /><meta name="octolytics-dimension-region_render" content="iad" />
<meta name="analytics-location" content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" />
<meta class="js-ga-set" name="dimension1" content="Logged Out">
<meta name="hostname" content="github.com">
<meta name="user-login" content="">
<meta name="expected-hostname" content="github.com">
<meta name="js-proxy-site-detection-payload" content="OWVhMTIyZGE3ZGU4ZDVmNGMwZTgwMzEzYTZmZTUwZTI5YzlkODk1Y2YyNTdlZTk2NmY1ZGYzYWYxMTgxNWViMnx7InJlbW90ZV9hZGRyZXNzIjoiMjE4LjIxMC4zOS43MiIsInJlcXVlc3RfaWQiOiIwNkRFOjBGRUM6NjMzMjZERTo4RTIzMzkyOjVCMjU5OUI0IiwidGltZXN0YW1wIjoxNTI5MTkwODQwLCJob3N0IjoiZ2l0aHViLmNvbSJ9">
<meta name="enabled-features" content="UNIVERSE_BANNER,FREE_TRIALS,MARKETPLACE_INSIGHTS,MARKETPLACE_INSIGHTS_CONVERSION_PERCENTAGES">
<meta name="html-safe-nonce" content="8a8050e1883022781ca32bf0bb830c706d03892f">
<meta http-equiv="x-pjax-version" content="3977f63d7cfef93709233cd75c3e2fbd">
<link href="https://github.com/moxiecode/moxie/commits/master.atom" rel="alternate" title="Recent Commits to moxie:master" type="application/atom+xml">
<meta name="description" content="moxie - Pollyfills for XHR2 and File API">
<meta name="go-import" content="github.com/moxiecode/moxie git https://github.com/moxiecode/moxie.git">
<meta name="octolytics-dimension-user_id" content="119816" /><meta name="octolytics-dimension-user_login" content="moxiecode" /><meta name="octolytics-dimension-repository_id" content="5315347" /><meta name="octolytics-dimension-repository_nwo" content="moxiecode/moxie" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="5315347" /><meta name="octolytics-dimension-repository_network_root_nwo" content="moxiecode/moxie" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />
<link rel="canonical" href="https://github.com/moxiecode/moxie/blob/master/bin/js/moxie.js" data-pjax-transient>
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
<link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
<link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://assets-cdn.github.com/favicon.ico">
<meta name="theme-color" content="#1e2327">
<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
</head>
<body class="logged-out env-production page-blob">
<div class="position-relative js-header-wrapper ">
<a href="#start-of-content" tabindex="1" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
<div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
<header class="Header header-logged-out position-relative f4 py-3" role="banner">
<div class="container-lg d-flex px-3">
<div class="d-flex flex-justify-between flex-items-center">
<a class="header-logo-invertocat my-0" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
<svg height="32" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
</a>
</div>
<div class="HeaderMenu HeaderMenu--bright d-flex flex-justify-between flex-auto">
<nav class="mt-0">
<ul class="d-flex list-style-none">
<li class="ml-2">
<a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:features" data-selected-links="/features /features/project-management /features/code-review /features/project-management /features/integrations /features" href="/features">
Features
</a> </li>
<li class="ml-4">
<a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:business" data-selected-links="/business /business/security /business/customers /business" href="/business">
Business
</a> </li>
<li class="ml-4">
<a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship showcases showcases_search showcases_landing /explore" href="/explore">
Explore
</a> </li>
<li class="ml-4">
<a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:marketplace" data-selected-links=" /marketplace" href="/marketplace">
Marketplace
</a> </li>
<li class="ml-4">
<a class="js-selected-navigation-item HeaderNavlink px-0 py-2 m-0" data-ga-click="Header, click, Nav menu - item:pricing" data-selected-links="/pricing /pricing/developer /pricing/team /pricing/business-hosted /pricing/business-enterprise /pricing" href="/pricing">
Pricing
</a> </li>
</ul>
</nav>
<div class="d-flex">
<div class="d-lg-flex flex-items-center mr-3">
<div class="header-search scoped-search site-scoped-search js-site-search position-relative js-jump-to"
role="search combobox"
aria-owns="jump-to-results"
aria-label="Search or jump to"
aria-haspopup="listbox"
aria-expanded="true"
>
<div class="position-relative">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" data-scope-type="Repository" data-scope-id="5315347" data-scoped-search-url="/moxiecode/moxie/search" data-unscoped-search-url="/search" action="/moxiecode/moxie/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
<label class="form-control header-search-wrapper header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container">
<input type="text"
class="form-control header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
data-hotkey="s,/"
name="q"
value=""
placeholder="Search"
data-unscoped-placeholder="Search GitHub"
data-scoped-placeholder="Search"
autocapitalize="off"
aria-autocomplete="list"
aria-controls="jump-to-results"
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations#csrf-token=3n1c9Z+1fr1twL0oOR915mO1eeQf5sUsHWp5XdggvOTFohMB39Zi1VVa69qJqphZ2Y8r/NhjkjQH6NvOL6Nxzg=="
spellcheck="false"
autocomplete="off"
>
<input type="hidden" class="js-site-search-type-field" name="type" >
<img src="https://assets-cdn.github.com/images/search-shortcut-hint.svg" alt="" class="mr-2 header-search-key-slash">
<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
<ul class="d-none js-jump-to-suggestions-template-container">
<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center p-2 jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open" href="">
<div class="jump-to-octicon js-jump-to-octicon mr-2 text-center d-none"></div>
<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar" alt="" aria-label="Team" src="" width="28" height="28">
<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden no-wrap css-truncate css-truncate-target">
</div>
<div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>
<svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-repo-octicon-template" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
<svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-project-octicon-template" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
<svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-search-octicon-template" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
</ul>
<ul class="d-none js-jump-to-no-results-template-container">
<li class="d-flex flex-justify-center flex-items-center p-3 f5 d-none">
<span class="text-gray">No suggested jump to results</span>
</li>
</ul>
<ul id="jump-to-results" class="js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container" >
<li class="d-flex flex-justify-center flex-items-center p-0 f5">
<img src="https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif" alt="Octocat Spinner Icon" class="m-2" width="28">
</li>
</ul>
</div>
</label>
</form> </div>
</div>
</div>
<span class="d-inline-block">
<div class="HeaderNavlink px-0 py-2 m-0">
<a class="text-bold text-white no-underline" href="/login?return_to=%2Fmoxiecode%2Fmoxie%2Fblob%2Fmaster%2Fbin%2Fjs%2Fmoxie.js" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
<span class="text-gray">or</span>
<a class="text-bold text-white no-underline" href="/join?source=header-repo" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
</div>
</span>
</div>
</div>
</div>
</header>
</div>
<div id="start-of-content" class="show-on-focus"></div>
<div id="js-flash-container">
</div>
<div role="main" class="application-main ">
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
<div id="js-repo-pjax-container" data-pjax-container >
<div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav ">
<div class="repohead-details-container clearfix container">
<ul class="pagehead-actions">
<li>
<a href="/login?return_to=%2Fmoxiecode%2Fmoxie"
class="btn btn-sm btn-with-count tooltipped tooltipped-n"
aria-label="You must be signed in to watch a repository" rel="nofollow">
<svg class="octicon octicon-eye" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
Watch
</a>
<a class="social-count" href="/moxiecode/moxie/watchers"
aria-label="32 users are watching this repository">
32
</a>
</li>
<li>
<a href="/login?return_to=%2Fmoxiecode%2Fmoxie"
class="btn btn-sm btn-with-count tooltipped tooltipped-n"
aria-label="You must be signed in to star a repository" rel="nofollow">
<svg class="octicon octicon-star" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
Star
</a>
<a class="social-count js-social-count" href="/moxiecode/moxie/stargazers"
aria-label="436 users starred this repository">
436
</a>
</li>
<li>
<a href="/login?return_to=%2Fmoxiecode%2Fmoxie"
class="btn btn-sm btn-with-count tooltipped tooltipped-n"
aria-label="You must be signed in to fork a repository" rel="nofollow">
<svg class="octicon octicon-repo-forked" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
Fork
</a>
<a href="/moxiecode/moxie/network" class="social-count"
aria-label="136 users forked this repository">
136
</a>
</li>
</ul>
<h1 class="public ">
<svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
<span class="author" itemprop="author"><a class="url fn" rel="author" href="/moxiecode">moxiecode</a></span><!--
--><span class="path-divider">/</span><!--
--><strong itemprop="name"><a data-pjax="#js-repo-pjax-container" href="/moxiecode/moxie">moxie</a></strong>
</h1>
</div>
<nav class="reponav js-repo-nav js-sidenav-container-pjax container"
itemscope
itemtype="http://schema.org/BreadcrumbList"
role="navigation"
data-pjax="#js-repo-pjax-container">
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
<a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /moxiecode/moxie" href="/moxiecode/moxie">
<svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
<span itemprop="name">Code</span>
<meta itemprop="position" content="1">
</a> </span>
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
<a itemprop="url" data-hotkey="g i" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /moxiecode/moxie/issues" href="/moxiecode/moxie/issues">
<svg class="octicon octicon-issue-opened" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg>
<span itemprop="name">Issues</span>
<span class="Counter">25</span>
<meta itemprop="position" content="2">
</a> </span>
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
<a data-hotkey="g p" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /moxiecode/moxie/pulls" href="/moxiecode/moxie/pulls">
<svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
<span itemprop="name">Pull requests</span>
<span class="Counter">5</span>
<meta itemprop="position" content="3">
</a> </span>
<a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /moxiecode/moxie/projects" href="/moxiecode/moxie/projects">
<svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
Projects
<span class="Counter" >0</span>
</a>
<a class="js-selected-navigation-item reponav-item" data-hotkey="g w" data-selected-links="repo_wiki /moxiecode/moxie/wiki" href="/moxiecode/moxie/wiki">
<svg class="octicon octicon-book" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3 5h4v1H3V5zm0 3h4V7H3v1zm0 2h4V9H3v1zm11-5h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm2-6v9c0 .55-.45 1-1 1H9.5l-1 1-1-1H2c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h5.5l1 1 1-1H15c.55 0 1 .45 1 1zm-8 .5L7.5 3H2v9h6V3.5zm7-.5H9.5l-.5.5V12h6V3z"/></svg>
Wiki
</a>
<a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse /moxiecode/moxie/pulse" href="/moxiecode/moxie/pulse">
<svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
Insights
</a>
</nav>
</div>
<div class="container new-discussion-timeline experiment-repo-nav ">
<div class="repository-content ">
<a class="d-none js-permalink-shortcut" data-hotkey="y" href="/moxiecode/moxie/blob/09eaf578f38480dc4b8e2017c473c496883b6168/bin/js/moxie.js">Permalink</a>
<!-- blob contrib key: blob_contributors:v21:eca57daf6c4aca3378912c3fe0b61619 -->
<div class="file-navigation">
<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left">
<button class=" btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
type="button" aria-label="Switch branches or tags" aria-expanded="false" aria-haspopup="true">
<i>Branch:</i>
<span class="js-select-button css-truncate-target">master</span>
</button>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<svg class="octicon octicon-x js-menu-close" role="img" aria-label="Close" viewBox="0 0 12 16" version="1.1" width="12" height="16"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
<span class="select-menu-title">Switch branches/tags</span>
</div>
<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="form-control 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" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a>
</li>
</ul>
</div>
</div>
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/blob/1.2.x/bin/js/moxie.js"
data-name="1.2.x"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
1.2.x
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/blob/2.x/bin/js/moxie.js"
data-name="2.x"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
2.x
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open selected"
href="/moxiecode/moxie/blob/master/bin/js/moxie.js"
data-name="master"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
master
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/blob/pre-amd/bin/js/moxie.js"
data-name="pre-amd"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
pre-amd
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/blob/target_fp10_3/bin/js/moxie.js"
data-name="target_fp10_3"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
target_fp10_3
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/blob/ts/bin/js/moxie.js"
data-name="ts"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
ts
</span>
</a>
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div>
<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">
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.5.6/bin/js/moxie.js"
data-name="v1.5.6"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.5.6">
v1.5.6
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.5.5/bin/js/moxie.js"
data-name="v1.5.5"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.5.5">
v1.5.5
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.5.4/bin/js/moxie.js"
data-name="v1.5.4"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.5.4">
v1.5.4
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.5.3/bin/js/moxie.js"
data-name="v1.5.3"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.5.3">
v1.5.3
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.5.2/bin/js/moxie.js"
data-name="v1.5.2"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.5.2">
v1.5.2
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.5/bin/js/moxie.js"
data-name="v1.5"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.5">
v1.5
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.4.1/bin/js/moxie.js"
data-name="v1.4.1"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.4.1">
v1.4.1
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.3.5/bin/js/moxie.js"
data-name="v1.3.5"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.3.5">
v1.3.5
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.3.4/bin/js/moxie.js"
data-name="v1.3.4"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.3.4">
v1.3.4
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.3/bin/js/moxie.js"
data-name="v1.3"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.3">
v1.3
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.2.2/bin/js/moxie.js"
data-name="v1.2.2"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.2.2">
v1.2.2
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.2.1/bin/js/moxie.js"
data-name="v1.2.1"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.2.1">
v1.2.1
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.2.0/bin/js/moxie.js"
data-name="v1.2.0"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.2.0">
v1.2.0
</span>
</a>
<a class="select-menu-item js-navigation-item js-navigation-open "
href="/moxiecode/moxie/tree/v1.1.0/bin/js/moxie.js"
data-name="v1.1.0"
data-skip-pjax="true"
rel="nofollow">
<svg class="octicon octicon-check select-menu-item-icon" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z"/></svg>
<span class="select-menu-item-text css-truncate-target" title="v1.1.0">
v1.1.0
</span>
</a>
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div>
</div>
</div>
</div>
<div class="BtnGroup float-right">
<a href="/moxiecode/moxie/find/master"
class="js-pjax-capture-input btn btn-sm BtnGroup-item"
data-pjax
data-hotkey="t">
Find file
</a>
<clipboard-copy for="blob-path" class="btn btn-sm BtnGroup-item">
Copy path
</clipboard-copy>
</div>
<div id="blob-path" class="breadcrumb">
<span class="repo-root js-repo-root"><span class="js-path-segment"><a data-pjax="true" href="/moxiecode/moxie"><span>moxie</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a data-pjax="true" href="/moxiecode/moxie/tree/master/bin"><span>bin</span></a></span><span class="separator">/</span><span class="js-path-segment"><a data-pjax="true" href="/moxiecode/moxie/tree/master/bin/js"><span>js</span></a></span><span class="separator">/</span><strong class="final-path">moxie.js</strong>
</div>
</div>
<div class="commit-tease">
<span class="float-right">
<a class="commit-tease-sha" href="/moxiecode/moxie/commit/09eaf578f38480dc4b8e2017c473c496883b6168" data-pjax>
09eaf57
</a>
<relative-time datetime="2018-02-19T18:41:09Z">Feb 20, 2018</relative-time>
</span>
<div>
<a rel="contributor" data-skip-pjax="true" data-hovercard-user-id="150075" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/jayarjo"><img class="avatar" src="https://avatars1.githubusercontent.com/u/150075?s=40&v=4" width="20" height="20" alt="@jayarjo" /></a>
<a class="user-mention" rel="contributor" data-hovercard-user-id="150075" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/jayarjo">jayarjo</a>
<a data-pjax="true" title="update version" class="message" href="/moxiecode/moxie/commit/09eaf578f38480dc4b8e2017c473c496883b6168">update version</a>
</div>
<div class="commit-tease-contributors">
<button type="button" class="btn-link muted-link contributors-toggle" data-facebox="#blob_contributors_box">
<strong>1</strong>
contributor
</button>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header" data-facebox-id="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list" data-facebox-id="facebox-description">
<li class="facebox-user-list-item">
<a class="d-inline-block" data-hovercard-user-id="150075" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/jayarjo"><img src="https://avatars0.githubusercontent.com/u/150075?s=48&v=4" width="24" height="24" alt="@jayarjo" /></a>
<a data-hovercard-user-id="150075" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/jayarjo">jayarjo</a>
</li>
</ul>
</div>
</div>
<div class="file">
<div class="file-header">
<div class="file-actions">
<div class="BtnGroup">
<a id="raw-url" class="btn btn-sm BtnGroup-item" href="/moxiecode/moxie/raw/master/bin/js/moxie.js">Raw</a>
<a class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b" href="/moxiecode/moxie/blame/master/bin/js/moxie.js">Blame</a>
<a rel="nofollow" class="btn btn-sm BtnGroup-item" href="/moxiecode/moxie/commits/master/bin/js/moxie.js">History</a>
</div>
<a class="btn-octicon tooltipped tooltipped-nw"
href="https://desktop.github.com"
aria-label="Open this file in GitHub Desktop"
data-ga-click="Repository, open with desktop, type:windows">
<svg class="octicon octicon-device-desktop" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
</a>
<button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
aria-label="You must be signed in to make or propose changes">
<svg class="octicon octicon-pencil" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
</button>
<button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
aria-label="You must be signed in to make or propose changes">
<svg class="octicon octicon-trashcan" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
</button>
</div>
<div class="file-info">
11718 lines (9599 sloc)
<span class="file-info-divider"></span>
292 KB
</div>
</div>
<div itemprop="text" class="blob-wrapper data type-javascript">
<table class="highlight tab-size js-file-line-container" data-tab-size="8">
<tr>
<td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
<td id="LC1" class="blob-code blob-code-inner js-file-line">;<span class="pl-k">var</span> <span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
<td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
<td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill</span></td>
</tr>
<tr>
<td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
<td id="LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * v1.5.8</span></td>
</tr>
<tr>
<td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
<td id="LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
<td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
<td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
<td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
<td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
<td id="LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
<td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
<td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Date: 2018-02-19</span></td>
</tr>
<tr>
<td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
<td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
<td id="LC14" class="blob-code blob-code-inner js-file-line">;(<span class="pl-k">function</span> (<span class="pl-c1">global</span>, <span class="pl-smi">factory</span>) {</td>
</tr>
<tr>
<td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
<td id="LC15" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">extract</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
<td id="LC16" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ctx <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
<td id="LC17" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">factory</span>.<span class="pl-c1">apply</span>(ctx, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
<td id="LC18" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">ctx</span>.<span class="pl-smi">moxie</span>;</td>
</tr>
<tr>
<td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
<td id="LC19" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
<td id="LC20" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
<td id="LC21" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> define <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">"</span>function<span class="pl-pds">"</span></span> <span class="pl-k">&&</span> <span class="pl-smi">define</span>.<span class="pl-smi">amd</span>) {</td>
</tr>
<tr>
<td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
<td id="LC22" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie<span class="pl-pds">"</span></span>, [], extract);</td>
</tr>
<tr>
<td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
<td id="LC23" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> <span class="pl-c1">module</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">"</span>object<span class="pl-pds">"</span></span> <span class="pl-k">&&</span> <span class="pl-c1">module</span>.<span class="pl-smi">exports</span>) {</td>
</tr>
<tr>
<td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
<td id="LC24" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">module</span>.<span class="pl-smi">exports</span> <span class="pl-k">=</span> <span class="pl-en">extract</span>();</td>
</tr>
<tr>
<td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
<td id="LC25" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
<td id="LC26" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">global</span>.<span class="pl-smi">moxie</span> <span class="pl-k">=</span> <span class="pl-en">extract</span>();</td>
</tr>
<tr>
<td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
<td id="LC27" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
<td id="LC28" class="blob-code blob-code-inner js-file-line">}(<span class="pl-c1">this</span> <span class="pl-k">||</span> <span class="pl-c1">window</span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
<td id="LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
<td id="LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Compiled inline version. (Library mode)</span></td>
</tr>
<tr>
<td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
<td id="LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
<td id="LC32" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
<td id="LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>jshint smarttabs:true, undef:true, latedef:true, curly:true, bitwise:true, camelcase:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
<td id="LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>globals $code <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
<td id="LC35" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
<td id="LC36" class="blob-code blob-code-inner js-file-line">(<span class="pl-k">function</span>(<span class="pl-c1">exports</span>, <span class="pl-c1">undefined</span>) {</td>
</tr>
<tr>
<td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
<td id="LC37" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>use strict<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
<td id="LC38" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
<td id="LC39" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> modules <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
<td id="LC40" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
<td id="LC41" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">require</span>(<span class="pl-smi">ids</span>, <span class="pl-smi">callback</span>) {</td>
</tr>
<tr>
<td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
<td id="LC42" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">module</span>, defs <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
<td id="LC43" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
<td id="LC44" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">ids</span>.<span class="pl-c1">length</span>; <span class="pl-k">++</span>i) {</td>
</tr>
<tr>
<td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
<td id="LC45" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">module</span> <span class="pl-k">=</span> modules[ids[i]] <span class="pl-k">||</span> <span class="pl-en">resolve</span>(ids[i]);</td>
</tr>
<tr>
<td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
<td id="LC46" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">module</span>) {</td>
</tr>
<tr>
<td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
<td id="LC47" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-s"><span class="pl-pds">'</span>module definition dependecy not found: <span class="pl-pds">'</span></span> <span class="pl-k">+</span> ids[i];</td>
</tr>
<tr>
<td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
<td id="LC48" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
<td id="LC49" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
<td id="LC50" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">defs</span>.<span class="pl-c1">push</span>(<span class="pl-c1">module</span>);</td>
</tr>
<tr>
<td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
<td id="LC51" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
<td id="LC52" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
<td id="LC53" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">callback</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">null</span>, defs);</td>
</tr>
<tr>
<td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
<td id="LC54" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
<td id="LC55" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
<td id="LC56" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">define</span>(<span class="pl-smi">id</span>, <span class="pl-smi">dependencies</span>, <span class="pl-smi">definition</span>) {</td>
</tr>
<tr>
<td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
<td id="LC57" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> id <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
<td id="LC58" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-s"><span class="pl-pds">'</span>invalid module definition, module id must be defined and be a string<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
<td id="LC59" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
<td id="LC60" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
<td id="LC61" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (dependencies <span class="pl-k">===</span> <span class="pl-c1">undefined</span>) {</td>
</tr>
<tr>
<td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
<td id="LC62" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-s"><span class="pl-pds">'</span>invalid module definition, dependencies must be specified<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
<td id="LC63" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
<td id="LC64" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
<td id="LC65" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (definition <span class="pl-k">===</span> <span class="pl-c1">undefined</span>) {</td>
</tr>
<tr>
<td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
<td id="LC66" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-s"><span class="pl-pds">'</span>invalid module definition, definition function must be specified<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
<td id="LC67" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
<td id="LC68" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
<td id="LC69" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">require</span>(dependencies, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
<td id="LC70" class="blob-code blob-code-inner js-file-line"> modules[id] <span class="pl-k">=</span> <span class="pl-smi">definition</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">null</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
<td id="LC71" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
<td id="LC72" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
<td id="LC73" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
<td id="LC74" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">defined</span>(<span class="pl-smi">id</span>) {</td>
</tr>
<tr>
<td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
<td id="LC75" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span>modules[id];</td>
</tr>
<tr>
<td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
<td id="LC76" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
<td id="LC77" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
<td id="LC78" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">resolve</span>(<span class="pl-smi">id</span>) {</td>
</tr>
<tr>
<td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
<td id="LC79" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">exports</span>;</td>
</tr>
<tr>
<td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
<td id="LC80" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> fragments <span class="pl-k">=</span> <span class="pl-smi">id</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">[<span class="pl-c1">.</span><span class="pl-cce">\/</span>]</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
<td id="LC81" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
<td id="LC82" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> fi <span class="pl-k">=</span> <span class="pl-c1">0</span>; fi <span class="pl-k"><</span> <span class="pl-smi">fragments</span>.<span class="pl-c1">length</span>; <span class="pl-k">++</span>fi) {</td>
</tr>
<tr>
<td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
<td id="LC83" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>target[fragments[fi]]) {</td>
</tr>
<tr>
<td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
<td id="LC84" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
<td id="LC85" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
<td id="LC86" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
<td id="LC87" class="blob-code blob-code-inner js-file-line"> target <span class="pl-k">=</span> target[fragments[fi]];</td>
</tr>
<tr>
<td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
<td id="LC88" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
<td id="LC89" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
<td id="LC90" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> target;</td>
</tr>
<tr>
<td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
<td id="LC91" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
<td id="LC92" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
<td id="LC93" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">expose</span>(<span class="pl-smi">ids</span>) {</td>
</tr>
<tr>
<td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
<td id="LC94" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">ids</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
<td id="LC95" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">exports</span>;</td>
</tr>
<tr>
<td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
<td id="LC96" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> id <span class="pl-k">=</span> ids[i];</td>
</tr>
<tr>
<td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
<td id="LC97" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> fragments <span class="pl-k">=</span> <span class="pl-smi">id</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">[<span class="pl-c1">.</span><span class="pl-cce">\/</span>]</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
<td id="LC98" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
<td id="LC99" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> fi <span class="pl-k">=</span> <span class="pl-c1">0</span>; fi <span class="pl-k"><</span> <span class="pl-smi">fragments</span>.<span class="pl-c1">length</span> <span class="pl-k">-</span> <span class="pl-c1">1</span>; <span class="pl-k">++</span>fi) {</td>
</tr>
<tr>
<td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
<td id="LC100" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (target[fragments[fi]] <span class="pl-k">===</span> <span class="pl-c1">undefined</span>) {</td>
</tr>
<tr>
<td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
<td id="LC101" class="blob-code blob-code-inner js-file-line"> target[fragments[fi]] <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
<td id="LC102" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
<td id="LC103" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
<td id="LC104" class="blob-code blob-code-inner js-file-line"> target <span class="pl-k">=</span> target[fragments[fi]];</td>
</tr>
<tr>
<td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
<td id="LC105" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
<td id="LC106" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
<td id="LC107" class="blob-code blob-code-inner js-file-line"> target[fragments[<span class="pl-smi">fragments</span>.<span class="pl-c1">length</span> <span class="pl-k">-</span> <span class="pl-c1">1</span>]] <span class="pl-k">=</span> modules[id];</td>
</tr>
<tr>
<td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
<td id="LC108" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
<td id="LC109" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
<td id="LC110" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
<td id="LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Basic.js</span></td>
</tr>
<tr>
<td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
<td id="LC112" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
<td id="LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
<td id="LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Basic.js</span></td>
</tr>
<tr>
<td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
<td id="LC115" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
<td id="LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
<td id="LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
<td id="LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
<td id="LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
<td id="LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
<td id="LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
<td id="LC122" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
<td id="LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
<td id="LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Basic</span></td>
</tr>
<tr>
<td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
<td id="LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
<td id="LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
<td id="LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
<td id="LC128" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
<td id="LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>, [], <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
<td id="LC130" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
<td id="LC131" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Gets the true type of the built-in object (better version of typeof).</span></td>
</tr>
<tr>
<td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
<td id="LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@author</span> <span class="pl-en">Angus Croll (http:</span>//javascriptweblog.wordpress.com/)</span></td>
</tr>
<tr>
<td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
<td id="LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
<td id="LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">typeOf</span></span></td>
</tr>
<tr>
<td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
<td id="LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
<td id="LC136" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">o</span> Object to check.</span></td>
</tr>
<tr>
<td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
<td id="LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Object [[Class]]</span></td>
</tr>
<tr>
<td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
<td id="LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
<td id="LC139" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">typeOf</span>(<span class="pl-smi">o</span>) {</td>
</tr>
<tr>
<td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
<td id="LC140" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> undef;</td>
</tr>
<tr>
<td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
<td id="LC141" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
<td id="LC142" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (o <span class="pl-k">===</span> undef) {</td>
</tr>
<tr>
<td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
<td id="LC143" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
<td id="LC144" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (o <span class="pl-k">===</span> <span class="pl-c1">null</span>) {</td>
</tr>
<tr>
<td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
<td id="LC145" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span>null<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
<td id="LC146" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">o</span>.<span class="pl-c1">nodeType</span>) {</td>
</tr>
<tr>
<td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
<td id="LC147" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span>node<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
<td id="LC148" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
<td id="LC149" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
<td id="LC150" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> the snippet below is awesome, however it fails to detect null, undefined and arguments types in IE lte 8</span></td>
</tr>
<tr>
<td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
<td id="LC151" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> ({}).<span class="pl-smi">toString</span>.<span class="pl-c1">call</span>(o).<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span>(<span class="pl-c1">[<span class="pl-c1">a-z</span>|<span class="pl-c1">A-Z</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span></span>)[<span class="pl-c1">1</span>].<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
<td id="LC152" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
<td id="LC153" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
<td id="LC154" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
<td id="LC155" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Extends the specified object with another object(s).</span></td>
</tr>
<tr>
<td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
<td id="LC156" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
<td id="LC157" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">extend</span></span></td>
</tr>
<tr>
<td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
<td id="LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
<td id="LC159" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">target</span> Object to extend.</span></td>
</tr>
<tr>
<td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
<td id="LC160" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[obj]</span>* Multiple objects to extend with.</span></td>
</tr>
<tr>
<td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
<td id="LC161" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Object}</span> Same as target, the extended object.</span></td>
</tr>
<tr>
<td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
<td id="LC162" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
<td id="LC163" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">extend</span>() {</td>
</tr>
<tr>
<td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
<td id="LC164" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">merge</span>(<span class="pl-c1">false</span>, <span class="pl-c1">false</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
<td id="LC165" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
<td id="LC166" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
<td id="LC167" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
<td id="LC168" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
<td id="LC169" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Extends the specified object with another object(s), but only if the property exists in the target.</span></td>
</tr>
<tr>
<td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
<td id="LC170" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
<td id="LC171" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">extendIf</span></span></td>
</tr>
<tr>
<td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
<td id="LC172" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
<td id="LC173" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">target</span> Object to extend.</span></td>
</tr>
<tr>
<td id="L174" class="blob-num js-line-number" data-line-number="174"></td>
<td id="LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[obj]</span>* Multiple objects to extend with.</span></td>
</tr>
<tr>
<td id="L175" class="blob-num js-line-number" data-line-number="175"></td>
<td id="LC175" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Object}</span> Same as target, the extended object.</span></td>
</tr>
<tr>
<td id="L176" class="blob-num js-line-number" data-line-number="176"></td>
<td id="LC176" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L177" class="blob-num js-line-number" data-line-number="177"></td>
<td id="LC177" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">extendIf</span>() {</td>
</tr>
<tr>
<td id="L178" class="blob-num js-line-number" data-line-number="178"></td>
<td id="LC178" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">merge</span>(<span class="pl-c1">true</span>, <span class="pl-c1">false</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L179" class="blob-num js-line-number" data-line-number="179"></td>
<td id="LC179" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L180" class="blob-num js-line-number" data-line-number="180"></td>
<td id="LC180" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L181" class="blob-num js-line-number" data-line-number="181"></td>
<td id="LC181" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L182" class="blob-num js-line-number" data-line-number="182"></td>
<td id="LC182" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">extendImmutable</span>() {</td>
</tr>
<tr>
<td id="L183" class="blob-num js-line-number" data-line-number="183"></td>
<td id="LC183" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">merge</span>(<span class="pl-c1">false</span>, <span class="pl-c1">true</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L184" class="blob-num js-line-number" data-line-number="184"></td>
<td id="LC184" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L185" class="blob-num js-line-number" data-line-number="185"></td>
<td id="LC185" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L186" class="blob-num js-line-number" data-line-number="186"></td>
<td id="LC186" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L187" class="blob-num js-line-number" data-line-number="187"></td>
<td id="LC187" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">extendImmutableIf</span>() {</td>
</tr>
<tr>
<td id="L188" class="blob-num js-line-number" data-line-number="188"></td>
<td id="LC188" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">merge</span>(<span class="pl-c1">true</span>, <span class="pl-c1">true</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L189" class="blob-num js-line-number" data-line-number="189"></td>
<td id="LC189" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L190" class="blob-num js-line-number" data-line-number="190"></td>
<td id="LC190" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L191" class="blob-num js-line-number" data-line-number="191"></td>
<td id="LC191" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L192" class="blob-num js-line-number" data-line-number="192"></td>
<td id="LC192" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">clone</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L193" class="blob-num js-line-number" data-line-number="193"></td>
<td id="LC193" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-en">typeOf</span>(value)) {</td>
</tr>
<tr>
<td id="L194" class="blob-num js-line-number" data-line-number="194"></td>
<td id="LC194" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L195" class="blob-num js-line-number" data-line-number="195"></td>
<td id="LC195" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">merge</span>(<span class="pl-c1">false</span>, <span class="pl-c1">true</span>, [[], value]);</td>
</tr>
<tr>
<td id="L196" class="blob-num js-line-number" data-line-number="196"></td>
<td id="LC196" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L197" class="blob-num js-line-number" data-line-number="197"></td>
<td id="LC197" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L198" class="blob-num js-line-number" data-line-number="198"></td>
<td id="LC198" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">merge</span>(<span class="pl-c1">false</span>, <span class="pl-c1">true</span>, [{}, value]);</td>
</tr>
<tr>
<td id="L199" class="blob-num js-line-number" data-line-number="199"></td>
<td id="LC199" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L200" class="blob-num js-line-number" data-line-number="200"></td>
<td id="LC200" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>:</td>
</tr>
<tr>
<td id="L201" class="blob-num js-line-number" data-line-number="201"></td>
<td id="LC201" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value;</td>
</tr>
<tr>
<td id="L202" class="blob-num js-line-number" data-line-number="202"></td>
<td id="LC202" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L203" class="blob-num js-line-number" data-line-number="203"></td>
<td id="LC203" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L204" class="blob-num js-line-number" data-line-number="204"></td>
<td id="LC204" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L205" class="blob-num js-line-number" data-line-number="205"></td>
<td id="LC205" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L206" class="blob-num js-line-number" data-line-number="206"></td>
<td id="LC206" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">shallowCopy</span>(<span class="pl-smi">obj</span>) {</td>
</tr>
<tr>
<td id="L207" class="blob-num js-line-number" data-line-number="207"></td>
<td id="LC207" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-en">typeOf</span>(obj)) {</td>
</tr>
<tr>
<td id="L208" class="blob-num js-line-number" data-line-number="208"></td>
<td id="LC208" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L209" class="blob-num js-line-number" data-line-number="209"></td>
<td id="LC209" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">Array</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(obj);</td>
</tr>
<tr>
<td id="L210" class="blob-num js-line-number" data-line-number="210"></td>
<td id="LC210" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L211" class="blob-num js-line-number" data-line-number="211"></td>
<td id="LC211" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L212" class="blob-num js-line-number" data-line-number="212"></td>
<td id="LC212" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">extend</span>({}, obj);</td>
</tr>
<tr>
<td id="L213" class="blob-num js-line-number" data-line-number="213"></td>
<td id="LC213" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L214" class="blob-num js-line-number" data-line-number="214"></td>
<td id="LC214" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> obj;</td>
</tr>
<tr>
<td id="L215" class="blob-num js-line-number" data-line-number="215"></td>
<td id="LC215" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L216" class="blob-num js-line-number" data-line-number="216"></td>
<td id="LC216" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L217" class="blob-num js-line-number" data-line-number="217"></td>
<td id="LC217" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L218" class="blob-num js-line-number" data-line-number="218"></td>
<td id="LC218" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">merge</span>(<span class="pl-smi">strict</span>, <span class="pl-smi">immutable</span>, <span class="pl-smi">args</span>) {</td>
</tr>
<tr>
<td id="L219" class="blob-num js-line-number" data-line-number="219"></td>
<td id="LC219" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> undef;</td>
</tr>
<tr>
<td id="L220" class="blob-num js-line-number" data-line-number="220"></td>
<td id="LC220" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> args[<span class="pl-c1">0</span>];</td>
</tr>
<tr>
<td id="L221" class="blob-num js-line-number" data-line-number="221"></td>
<td id="LC221" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L222" class="blob-num js-line-number" data-line-number="222"></td>
<td id="LC222" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">each</span>(args, <span class="pl-k">function</span>(<span class="pl-smi">arg</span>, <span class="pl-smi">i</span>) {</td>
</tr>
<tr>
<td id="L223" class="blob-num js-line-number" data-line-number="223"></td>
<td id="LC223" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (i <span class="pl-k">></span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L224" class="blob-num js-line-number" data-line-number="224"></td>
<td id="LC224" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">each</span>(arg, <span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">key</span>) {</td>
</tr>
<tr>
<td id="L225" class="blob-num js-line-number" data-line-number="225"></td>
<td id="LC225" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> isComplex <span class="pl-k">=</span> <span class="pl-en">inArray</span>(<span class="pl-en">typeOf</span>(value), [<span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L226" class="blob-num js-line-number" data-line-number="226"></td>
<td id="LC226" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L227" class="blob-num js-line-number" data-line-number="227"></td>
<td id="LC227" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">===</span> undef <span class="pl-k">||</span> strict <span class="pl-k">&&</span> target[key] <span class="pl-k">===</span> undef) {</td>
</tr>
<tr>
<td id="L228" class="blob-num js-line-number" data-line-number="228"></td>
<td id="LC228" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L229" class="blob-num js-line-number" data-line-number="229"></td>
<td id="LC229" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L230" class="blob-num js-line-number" data-line-number="230"></td>
<td id="LC230" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L231" class="blob-num js-line-number" data-line-number="231"></td>
<td id="LC231" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (isComplex <span class="pl-k">&&</span> immutable) {</td>
</tr>
<tr>
<td id="L232" class="blob-num js-line-number" data-line-number="232"></td>
<td id="LC232" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> <span class="pl-en">shallowCopy</span>(value);</td>
</tr>
<tr>
<td id="L233" class="blob-num js-line-number" data-line-number="233"></td>
<td id="LC233" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L234" class="blob-num js-line-number" data-line-number="234"></td>
<td id="LC234" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L235" class="blob-num js-line-number" data-line-number="235"></td>
<td id="LC235" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">typeOf</span>(target[key]) <span class="pl-k">===</span> <span class="pl-en">typeOf</span>(value) <span class="pl-k">&&</span> isComplex) {</td>
</tr>
<tr>
<td id="L236" class="blob-num js-line-number" data-line-number="236"></td>
<td id="LC236" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">merge</span>(strict, immutable, [target[key], value]);</td>
</tr>
<tr>
<td id="L237" class="blob-num js-line-number" data-line-number="237"></td>
<td id="LC237" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L238" class="blob-num js-line-number" data-line-number="238"></td>
<td id="LC238" class="blob-code blob-code-inner js-file-line"> target[key] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L239" class="blob-num js-line-number" data-line-number="239"></td>
<td id="LC239" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L240" class="blob-num js-line-number" data-line-number="240"></td>
<td id="LC240" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L241" class="blob-num js-line-number" data-line-number="241"></td>
<td id="LC241" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L242" class="blob-num js-line-number" data-line-number="242"></td>
<td id="LC242" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L243" class="blob-num js-line-number" data-line-number="243"></td>
<td id="LC243" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L244" class="blob-num js-line-number" data-line-number="244"></td>
<td id="LC244" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> target;</td>
</tr>
<tr>
<td id="L245" class="blob-num js-line-number" data-line-number="245"></td>
<td id="LC245" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L246" class="blob-num js-line-number" data-line-number="246"></td>
<td id="LC246" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L247" class="blob-num js-line-number" data-line-number="247"></td>
<td id="LC247" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L248" class="blob-num js-line-number" data-line-number="248"></td>
<td id="LC248" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L249" class="blob-num js-line-number" data-line-number="249"></td>
<td id="LC249" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> A way to inherit one `class` from another in a consisstent way (more or less)</span></td>
</tr>
<tr>
<td id="L250" class="blob-num js-line-number" data-line-number="250"></td>
<td id="LC250" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L251" class="blob-num js-line-number" data-line-number="251"></td>
<td id="LC251" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">inherit</span></span></td>
</tr>
<tr>
<td id="L252" class="blob-num js-line-number" data-line-number="252"></td>
<td id="LC252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L253" class="blob-num js-line-number" data-line-number="253"></td>
<td id="LC253" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@since</span> >1.4.1</span></td>
</tr>
<tr>
<td id="L254" class="blob-num js-line-number" data-line-number="254"></td>
<td id="LC254" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">child</span></span></td>
</tr>
<tr>
<td id="L255" class="blob-num js-line-number" data-line-number="255"></td>
<td id="LC255" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">parent</span></span></td>
</tr>
<tr>
<td id="L256" class="blob-num js-line-number" data-line-number="256"></td>
<td id="LC256" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Function}</span> Prepared constructor</span></td>
</tr>
<tr>
<td id="L257" class="blob-num js-line-number" data-line-number="257"></td>
<td id="LC257" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L258" class="blob-num js-line-number" data-line-number="258"></td>
<td id="LC258" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">inherit</span>(<span class="pl-smi">child</span>, <span class="pl-smi">parent</span>) {</td>
</tr>
<tr>
<td id="L259" class="blob-num js-line-number" data-line-number="259"></td>
<td id="LC259" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> copy over all parent properties</span></td>
</tr>
<tr>
<td id="L260" class="blob-num js-line-number" data-line-number="260"></td>
<td id="LC260" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> key <span class="pl-k">in</span> parent) {</td>
</tr>
<tr>
<td id="L261" class="blob-num js-line-number" data-line-number="261"></td>
<td id="LC261" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ({}.<span class="pl-smi">hasOwnProperty</span>.<span class="pl-c1">call</span>(parent, key)) {</td>
</tr>
<tr>
<td id="L262" class="blob-num js-line-number" data-line-number="262"></td>
<td id="LC262" class="blob-code blob-code-inner js-file-line"> child[key] <span class="pl-k">=</span> parent[key];</td>
</tr>
<tr>
<td id="L263" class="blob-num js-line-number" data-line-number="263"></td>
<td id="LC263" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L264" class="blob-num js-line-number" data-line-number="264"></td>
<td id="LC264" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L265" class="blob-num js-line-number" data-line-number="265"></td>
<td id="LC265" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L266" class="blob-num js-line-number" data-line-number="266"></td>
<td id="LC266" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> give child `class` a place to define its own methods</span></td>
</tr>
<tr>
<td id="L267" class="blob-num js-line-number" data-line-number="267"></td>
<td id="LC267" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">ctor</span>() {</td>
</tr>
<tr>
<td id="L268" class="blob-num js-line-number" data-line-number="268"></td>
<td id="LC268" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">constructor</span> <span class="pl-k">=</span> child;</td>
</tr>
<tr>
<td id="L269" class="blob-num js-line-number" data-line-number="269"></td>
<td id="LC269" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L270" class="blob-num js-line-number" data-line-number="270"></td>
<td id="LC270" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span>) {</td>
</tr>
<tr>
<td id="L271" class="blob-num js-line-number" data-line-number="271"></td>
<td id="LC271" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">getCtorName</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">fn</span>) {</td>
</tr>
<tr>
<td id="L272" class="blob-num js-line-number" data-line-number="272"></td>
<td id="LC272" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> m <span class="pl-k">=</span> <span class="pl-smi">fn</span>.<span class="pl-c1">toString</span>().<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>function<span class="pl-c1">\s</span>(<span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\(</span><span class="pl-c1">\s</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L273" class="blob-num js-line-number" data-line-number="273"></td>
<td id="LC273" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> m <span class="pl-k">?</span> m[<span class="pl-c1">1</span>] <span class="pl-k">:</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L274" class="blob-num js-line-number" data-line-number="274"></td>
<td id="LC274" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L275" class="blob-num js-line-number" data-line-number="275"></td>
<td id="LC275" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L276" class="blob-num js-line-number" data-line-number="276"></td>
<td id="LC276" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">ctorName</span> <span class="pl-k">=</span> <span class="pl-en">getCtorName</span>(child);</td>
</tr>
<tr>
<td id="L277" class="blob-num js-line-number" data-line-number="277"></td>
<td id="LC277" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L278" class="blob-num js-line-number" data-line-number="278"></td>
<td id="LC278" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L279" class="blob-num js-line-number" data-line-number="279"></td>
<td id="LC279" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctor</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-smi">parent</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L280" class="blob-num js-line-number" data-line-number="280"></td>
<td id="LC280" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">child</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">ctor</span>();</td>
</tr>
<tr>
<td id="L281" class="blob-num js-line-number" data-line-number="281"></td>
<td id="LC281" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L282" class="blob-num js-line-number" data-line-number="282"></td>
<td id="LC282" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> keep a way to reference parent methods</span></td>
</tr>
<tr>
<td id="L283" class="blob-num js-line-number" data-line-number="283"></td>
<td id="LC283" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">child</span>.<span class="pl-c1">parent</span> <span class="pl-k">=</span> <span class="pl-smi">parent</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L284" class="blob-num js-line-number" data-line-number="284"></td>
<td id="LC284" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> child;</td>
</tr>
<tr>
<td id="L285" class="blob-num js-line-number" data-line-number="285"></td>
<td id="LC285" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L286" class="blob-num js-line-number" data-line-number="286"></td>
<td id="LC286" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L287" class="blob-num js-line-number" data-line-number="287"></td>
<td id="LC287" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L288" class="blob-num js-line-number" data-line-number="288"></td>
<td id="LC288" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L289" class="blob-num js-line-number" data-line-number="289"></td>
<td id="LC289" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Executes the callback function for each item in array/object. If you return false in the</span></td>
</tr>
<tr>
<td id="L290" class="blob-num js-line-number" data-line-number="290"></td>
<td id="LC290" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> callback it will break the loop.</span></td>
</tr>
<tr>
<td id="L291" class="blob-num js-line-number" data-line-number="291"></td>
<td id="LC291" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L292" class="blob-num js-line-number" data-line-number="292"></td>
<td id="LC292" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">each</span></span></td>
</tr>
<tr>
<td id="L293" class="blob-num js-line-number" data-line-number="293"></td>
<td id="LC293" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L294" class="blob-num js-line-number" data-line-number="294"></td>
<td id="LC294" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> Object to iterate.</span></td>
</tr>
<tr>
<td id="L295" class="blob-num js-line-number" data-line-number="295"></td>
<td id="LC295" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{function}</span> <span class="pl-smi">callback</span> Callback function to execute for each item.</span></td>
</tr>
<tr>
<td id="L296" class="blob-num js-line-number" data-line-number="296"></td>
<td id="LC296" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L297" class="blob-num js-line-number" data-line-number="297"></td>
<td id="LC297" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">each</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">callback</span>) {</td>
</tr>
<tr>
<td id="L298" class="blob-num js-line-number" data-line-number="298"></td>
<td id="LC298" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> length, key, i, undef;</td>
</tr>
<tr>
<td id="L299" class="blob-num js-line-number" data-line-number="299"></td>
<td id="LC299" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L300" class="blob-num js-line-number" data-line-number="300"></td>
<td id="LC300" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (obj) {</td>
</tr>
<tr>
<td id="L301" class="blob-num js-line-number" data-line-number="301"></td>
<td id="LC301" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L302" class="blob-num js-line-number" data-line-number="302"></td>
<td id="LC302" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-smi">obj</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L303" class="blob-num js-line-number" data-line-number="303"></td>
<td id="LC303" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L304" class="blob-num js-line-number" data-line-number="304"></td>
<td id="LC304" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> undef;</td>
</tr>
<tr>
<td id="L305" class="blob-num js-line-number" data-line-number="305"></td>
<td id="LC305" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L306" class="blob-num js-line-number" data-line-number="306"></td>
<td id="LC306" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L307" class="blob-num js-line-number" data-line-number="307"></td>
<td id="LC307" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (length <span class="pl-k">===</span> undef <span class="pl-k">||</span> <span class="pl-k">typeof</span>(length) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>number<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L308" class="blob-num js-line-number" data-line-number="308"></td>
<td id="LC308" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Loop object items</span></td>
</tr>
<tr>
<td id="L309" class="blob-num js-line-number" data-line-number="309"></td>
<td id="LC309" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (key <span class="pl-k">in</span> obj) {</td>
</tr>
<tr>
<td id="L310" class="blob-num js-line-number" data-line-number="310"></td>
<td id="LC310" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-en">hasOwnProperty</span>(key)) {</td>
</tr>
<tr>
<td id="L311" class="blob-num js-line-number" data-line-number="311"></td>
<td id="LC311" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">callback</span>(obj[key], key) <span class="pl-k">===</span> <span class="pl-c1">false</span>) {</td>
</tr>
<tr>
<td id="L312" class="blob-num js-line-number" data-line-number="312"></td>
<td id="LC312" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L313" class="blob-num js-line-number" data-line-number="313"></td>
<td id="LC313" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L314" class="blob-num js-line-number" data-line-number="314"></td>
<td id="LC314" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L315" class="blob-num js-line-number" data-line-number="315"></td>
<td id="LC315" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L316" class="blob-num js-line-number" data-line-number="316"></td>
<td id="LC316" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L317" class="blob-num js-line-number" data-line-number="317"></td>
<td id="LC317" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Loop array items</span></td>
</tr>
<tr>
<td id="L318" class="blob-num js-line-number" data-line-number="318"></td>
<td id="LC318" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> length; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L319" class="blob-num js-line-number" data-line-number="319"></td>
<td id="LC319" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">callback</span>(obj[i], i) <span class="pl-k">===</span> <span class="pl-c1">false</span>) {</td>
</tr>
<tr>
<td id="L320" class="blob-num js-line-number" data-line-number="320"></td>
<td id="LC320" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L321" class="blob-num js-line-number" data-line-number="321"></td>
<td id="LC321" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L322" class="blob-num js-line-number" data-line-number="322"></td>
<td id="LC322" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L323" class="blob-num js-line-number" data-line-number="323"></td>
<td id="LC323" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L324" class="blob-num js-line-number" data-line-number="324"></td>
<td id="LC324" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L325" class="blob-num js-line-number" data-line-number="325"></td>
<td id="LC325" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L326" class="blob-num js-line-number" data-line-number="326"></td>
<td id="LC326" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L327" class="blob-num js-line-number" data-line-number="327"></td>
<td id="LC327" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L328" class="blob-num js-line-number" data-line-number="328"></td>
<td id="LC328" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Checks if object is empty.</span></td>
</tr>
<tr>
<td id="L329" class="blob-num js-line-number" data-line-number="329"></td>
<td id="LC329" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L330" class="blob-num js-line-number" data-line-number="330"></td>
<td id="LC330" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">isEmptyObj</span></span></td>
</tr>
<tr>
<td id="L331" class="blob-num js-line-number" data-line-number="331"></td>
<td id="LC331" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L332" class="blob-num js-line-number" data-line-number="332"></td>
<td id="LC332" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">o</span> Object to check.</span></td>
</tr>
<tr>
<td id="L333" class="blob-num js-line-number" data-line-number="333"></td>
<td id="LC333" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span></span></td>
</tr>
<tr>
<td id="L334" class="blob-num js-line-number" data-line-number="334"></td>
<td id="LC334" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L335" class="blob-num js-line-number" data-line-number="335"></td>
<td id="LC335" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">isEmptyObj</span>(<span class="pl-smi">obj</span>) {</td>
</tr>
<tr>
<td id="L336" class="blob-num js-line-number" data-line-number="336"></td>
<td id="LC336" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> prop;</td>
</tr>
<tr>
<td id="L337" class="blob-num js-line-number" data-line-number="337"></td>
<td id="LC337" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L338" class="blob-num js-line-number" data-line-number="338"></td>
<td id="LC338" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>obj <span class="pl-k">||</span> <span class="pl-en">typeOf</span>(obj) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L339" class="blob-num js-line-number" data-line-number="339"></td>
<td id="LC339" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L340" class="blob-num js-line-number" data-line-number="340"></td>
<td id="LC340" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L341" class="blob-num js-line-number" data-line-number="341"></td>
<td id="LC341" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L342" class="blob-num js-line-number" data-line-number="342"></td>
<td id="LC342" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (prop <span class="pl-k">in</span> obj) {</td>
</tr>
<tr>
<td id="L343" class="blob-num js-line-number" data-line-number="343"></td>
<td id="LC343" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L344" class="blob-num js-line-number" data-line-number="344"></td>
<td id="LC344" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L345" class="blob-num js-line-number" data-line-number="345"></td>
<td id="LC345" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L346" class="blob-num js-line-number" data-line-number="346"></td>
<td id="LC346" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L347" class="blob-num js-line-number" data-line-number="347"></td>
<td id="LC347" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L348" class="blob-num js-line-number" data-line-number="348"></td>
<td id="LC348" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L349" class="blob-num js-line-number" data-line-number="349"></td>
<td id="LC349" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L350" class="blob-num js-line-number" data-line-number="350"></td>
<td id="LC350" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Recieve an array of functions (usually async) to call in sequence, each function</span></td>
</tr>
<tr>
<td id="L351" class="blob-num js-line-number" data-line-number="351"></td>
<td id="LC351" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> receives a callback as first argument that it should call, when it completes. Finally,</span></td>
</tr>
<tr>
<td id="L352" class="blob-num js-line-number" data-line-number="352"></td>
<td id="LC352" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> after everything is complete, main callback is called. Passing truthy value to the</span></td>
</tr>
<tr>
<td id="L353" class="blob-num js-line-number" data-line-number="353"></td>
<td id="LC353" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> callback as a first argument will interrupt the sequence and invoke main callback</span></td>
</tr>
<tr>
<td id="L354" class="blob-num js-line-number" data-line-number="354"></td>
<td id="LC354" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> immediately.</span></td>
</tr>
<tr>
<td id="L355" class="blob-num js-line-number" data-line-number="355"></td>
<td id="LC355" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L356" class="blob-num js-line-number" data-line-number="356"></td>
<td id="LC356" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">inSeries</span></span></td>
</tr>
<tr>
<td id="L357" class="blob-num js-line-number" data-line-number="357"></td>
<td id="LC357" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L358" class="blob-num js-line-number" data-line-number="358"></td>
<td id="LC358" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">queue</span> Array of functions to call in sequence</span></td>
</tr>
<tr>
<td id="L359" class="blob-num js-line-number" data-line-number="359"></td>
<td id="LC359" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">cb</span> Main callback that is called in the end, or in case of error</span></td>
</tr>
<tr>
<td id="L360" class="blob-num js-line-number" data-line-number="360"></td>
<td id="LC360" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L361" class="blob-num js-line-number" data-line-number="361"></td>
<td id="LC361" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">inSeries</span>(<span class="pl-smi">queue</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L362" class="blob-num js-line-number" data-line-number="362"></td>
<td id="LC362" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>, length <span class="pl-k">=</span> <span class="pl-smi">queue</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L363" class="blob-num js-line-number" data-line-number="363"></td>
<td id="LC363" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L364" class="blob-num js-line-number" data-line-number="364"></td>
<td id="LC364" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">typeOf</span>(cb) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L365" class="blob-num js-line-number" data-line-number="365"></td>
<td id="LC365" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {};</td>
</tr>
<tr>
<td id="L366" class="blob-num js-line-number" data-line-number="366"></td>
<td id="LC366" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L367" class="blob-num js-line-number" data-line-number="367"></td>
<td id="LC367" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L368" class="blob-num js-line-number" data-line-number="368"></td>
<td id="LC368" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>queue <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">queue</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L369" class="blob-num js-line-number" data-line-number="369"></td>
<td id="LC369" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>();</td>
</tr>
<tr>
<td id="L370" class="blob-num js-line-number" data-line-number="370"></td>
<td id="LC370" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L371" class="blob-num js-line-number" data-line-number="371"></td>
<td id="LC371" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L372" class="blob-num js-line-number" data-line-number="372"></td>
<td id="LC372" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">callNext</span>(<span class="pl-smi">i</span>) {</td>
</tr>
<tr>
<td id="L373" class="blob-num js-line-number" data-line-number="373"></td>
<td id="LC373" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">typeOf</span>(queue[i]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L374" class="blob-num js-line-number" data-line-number="374"></td>
<td id="LC374" class="blob-code blob-code-inner js-file-line"> queue[i](<span class="pl-k">function</span>(<span class="pl-smi">error</span>) {</td>
</tr>
<tr>
<td id="L375" class="blob-num js-line-number" data-line-number="375"></td>
<td id="LC375" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>jshint expr:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L376" class="blob-num js-line-number" data-line-number="376"></td>
<td id="LC376" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">++</span>i <span class="pl-k"><</span> length <span class="pl-k">&&</span> <span class="pl-k">!</span>error <span class="pl-k">?</span> <span class="pl-en">callNext</span>(i) <span class="pl-k">:</span> <span class="pl-en">cb</span>(error);</td>
</tr>
<tr>
<td id="L377" class="blob-num js-line-number" data-line-number="377"></td>
<td id="LC377" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L378" class="blob-num js-line-number" data-line-number="378"></td>
<td id="LC378" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L379" class="blob-num js-line-number" data-line-number="379"></td>
<td id="LC379" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L380" class="blob-num js-line-number" data-line-number="380"></td>
<td id="LC380" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">callNext</span>(i);</td>
</tr>
<tr>
<td id="L381" class="blob-num js-line-number" data-line-number="381"></td>
<td id="LC381" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L382" class="blob-num js-line-number" data-line-number="382"></td>
<td id="LC382" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L383" class="blob-num js-line-number" data-line-number="383"></td>
<td id="LC383" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L384" class="blob-num js-line-number" data-line-number="384"></td>
<td id="LC384" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L385" class="blob-num js-line-number" data-line-number="385"></td>
<td id="LC385" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Recieve an array of functions (usually async) to call in parallel, each function</span></td>
</tr>
<tr>
<td id="L386" class="blob-num js-line-number" data-line-number="386"></td>
<td id="LC386" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> receives a callback as first argument that it should call, when it completes. After</span></td>
</tr>
<tr>
<td id="L387" class="blob-num js-line-number" data-line-number="387"></td>
<td id="LC387" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> everything is complete, main callback is called. Passing truthy value to the</span></td>
</tr>
<tr>
<td id="L388" class="blob-num js-line-number" data-line-number="388"></td>
<td id="LC388" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> callback as a first argument will interrupt the process and invoke main callback</span></td>
</tr>
<tr>
<td id="L389" class="blob-num js-line-number" data-line-number="389"></td>
<td id="LC389" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> immediately.</span></td>
</tr>
<tr>
<td id="L390" class="blob-num js-line-number" data-line-number="390"></td>
<td id="LC390" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L391" class="blob-num js-line-number" data-line-number="391"></td>
<td id="LC391" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">inParallel</span></span></td>
</tr>
<tr>
<td id="L392" class="blob-num js-line-number" data-line-number="392"></td>
<td id="LC392" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L393" class="blob-num js-line-number" data-line-number="393"></td>
<td id="LC393" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">queue</span> Array of functions to call in sequence</span></td>
</tr>
<tr>
<td id="L394" class="blob-num js-line-number" data-line-number="394"></td>
<td id="LC394" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">cb</span> Main callback that is called in the end, or in case of erro</span></td>
</tr>
<tr>
<td id="L395" class="blob-num js-line-number" data-line-number="395"></td>
<td id="LC395" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L396" class="blob-num js-line-number" data-line-number="396"></td>
<td id="LC396" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">inParallel</span>(<span class="pl-smi">queue</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L397" class="blob-num js-line-number" data-line-number="397"></td>
<td id="LC397" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> count <span class="pl-k">=</span> <span class="pl-c1">0</span>, num <span class="pl-k">=</span> <span class="pl-smi">queue</span>.<span class="pl-c1">length</span>, cbArgs <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Array</span>(num);</td>
</tr>
<tr>
<td id="L398" class="blob-num js-line-number" data-line-number="398"></td>
<td id="LC398" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L399" class="blob-num js-line-number" data-line-number="399"></td>
<td id="LC399" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">each</span>(queue, <span class="pl-k">function</span>(<span class="pl-smi">fn</span>, <span class="pl-smi">i</span>) {</td>
</tr>
<tr>
<td id="L400" class="blob-num js-line-number" data-line-number="400"></td>
<td id="LC400" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">fn</span>(<span class="pl-k">function</span>(<span class="pl-smi">error</span>) {</td>
</tr>
<tr>
<td id="L401" class="blob-num js-line-number" data-line-number="401"></td>
<td id="LC401" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (error) {</td>
</tr>
<tr>
<td id="L402" class="blob-num js-line-number" data-line-number="402"></td>
<td id="LC402" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">cb</span>(error);</td>
</tr>
<tr>
<td id="L403" class="blob-num js-line-number" data-line-number="403"></td>
<td id="LC403" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L404" class="blob-num js-line-number" data-line-number="404"></td>
<td id="LC404" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L405" class="blob-num js-line-number" data-line-number="405"></td>
<td id="LC405" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L406" class="blob-num js-line-number" data-line-number="406"></td>
<td id="LC406" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">args</span>.<span class="pl-c1">shift</span>(); <span class="pl-c"><span class="pl-c">//</span> strip error - undefined or not</span></td>
</tr>
<tr>
<td id="L407" class="blob-num js-line-number" data-line-number="407"></td>
<td id="LC407" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L408" class="blob-num js-line-number" data-line-number="408"></td>
<td id="LC408" class="blob-code blob-code-inner js-file-line"> cbArgs[i] <span class="pl-k">=</span> args;</td>
</tr>
<tr>
<td id="L409" class="blob-num js-line-number" data-line-number="409"></td>
<td id="LC409" class="blob-code blob-code-inner js-file-line"> count<span class="pl-k">++</span>;</td>
</tr>
<tr>
<td id="L410" class="blob-num js-line-number" data-line-number="410"></td>
<td id="LC410" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L411" class="blob-num js-line-number" data-line-number="411"></td>
<td id="LC411" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (count <span class="pl-k">===</span> num) {</td>
</tr>
<tr>
<td id="L412" class="blob-num js-line-number" data-line-number="412"></td>
<td id="LC412" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">cbArgs</span>.<span class="pl-c1">unshift</span>(<span class="pl-c1">null</span>);</td>
</tr>
<tr>
<td id="L413" class="blob-num js-line-number" data-line-number="413"></td>
<td id="LC413" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">cb</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, cbArgs);</td>
</tr>
<tr>
<td id="L414" class="blob-num js-line-number" data-line-number="414"></td>
<td id="LC414" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L415" class="blob-num js-line-number" data-line-number="415"></td>
<td id="LC415" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L416" class="blob-num js-line-number" data-line-number="416"></td>
<td id="LC416" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L417" class="blob-num js-line-number" data-line-number="417"></td>
<td id="LC417" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L418" class="blob-num js-line-number" data-line-number="418"></td>
<td id="LC418" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L419" class="blob-num js-line-number" data-line-number="419"></td>
<td id="LC419" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L420" class="blob-num js-line-number" data-line-number="420"></td>
<td id="LC420" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L421" class="blob-num js-line-number" data-line-number="421"></td>
<td id="LC421" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Find an element in array and return it's index if present, otherwise return -1.</span></td>
</tr>
<tr>
<td id="L422" class="blob-num js-line-number" data-line-number="422"></td>
<td id="LC422" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L423" class="blob-num js-line-number" data-line-number="423"></td>
<td id="LC423" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">inArray</span></span></td>
</tr>
<tr>
<td id="L424" class="blob-num js-line-number" data-line-number="424"></td>
<td id="LC424" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L425" class="blob-num js-line-number" data-line-number="425"></td>
<td id="LC425" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> <span class="pl-smi">needle</span> Element to find</span></td>
</tr>
<tr>
<td id="L426" class="blob-num js-line-number" data-line-number="426"></td>
<td id="LC426" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">array</span></span></td>
</tr>
<tr>
<td id="L427" class="blob-num js-line-number" data-line-number="427"></td>
<td id="LC427" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Int}</span> Index of the element, or -1 if not found</span></td>
</tr>
<tr>
<td id="L428" class="blob-num js-line-number" data-line-number="428"></td>
<td id="LC428" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L429" class="blob-num js-line-number" data-line-number="429"></td>
<td id="LC429" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">inArray</span>(<span class="pl-smi">needle</span>, <span class="pl-smi">array</span>) {</td>
</tr>
<tr>
<td id="L430" class="blob-num js-line-number" data-line-number="430"></td>
<td id="LC430" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (array) {</td>
</tr>
<tr>
<td id="L431" class="blob-num js-line-number" data-line-number="431"></td>
<td id="LC431" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">Array</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">indexOf</span>) {</td>
</tr>
<tr>
<td id="L432" class="blob-num js-line-number" data-line-number="432"></td>
<td id="LC432" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">Array</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">indexOf</span>.<span class="pl-c1">call</span>(array, needle);</td>
</tr>
<tr>
<td id="L433" class="blob-num js-line-number" data-line-number="433"></td>
<td id="LC433" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L434" class="blob-num js-line-number" data-line-number="434"></td>
<td id="LC434" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L435" class="blob-num js-line-number" data-line-number="435"></td>
<td id="LC435" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>, length <span class="pl-k">=</span> <span class="pl-smi">array</span>.<span class="pl-c1">length</span>; i <span class="pl-k"><</span> length; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L436" class="blob-num js-line-number" data-line-number="436"></td>
<td id="LC436" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (array[i] <span class="pl-k">===</span> needle) {</td>
</tr>
<tr>
<td id="L437" class="blob-num js-line-number" data-line-number="437"></td>
<td id="LC437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> i;</td>
</tr>
<tr>
<td id="L438" class="blob-num js-line-number" data-line-number="438"></td>
<td id="LC438" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L439" class="blob-num js-line-number" data-line-number="439"></td>
<td id="LC439" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L440" class="blob-num js-line-number" data-line-number="440"></td>
<td id="LC440" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L441" class="blob-num js-line-number" data-line-number="441"></td>
<td id="LC441" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">-</span><span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L442" class="blob-num js-line-number" data-line-number="442"></td>
<td id="LC442" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L443" class="blob-num js-line-number" data-line-number="443"></td>
<td id="LC443" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L444" class="blob-num js-line-number" data-line-number="444"></td>
<td id="LC444" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L445" class="blob-num js-line-number" data-line-number="445"></td>
<td id="LC445" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L446" class="blob-num js-line-number" data-line-number="446"></td>
<td id="LC446" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns elements of first array if they are not present in second. And false - otherwise.</span></td>
</tr>
<tr>
<td id="L447" class="blob-num js-line-number" data-line-number="447"></td>
<td id="LC447" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L448" class="blob-num js-line-number" data-line-number="448"></td>
<td id="LC448" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L449" class="blob-num js-line-number" data-line-number="449"></td>
<td id="LC449" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">arrayDiff</span></span></td>
</tr>
<tr>
<td id="L450" class="blob-num js-line-number" data-line-number="450"></td>
<td id="LC450" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">needles</span></span></td>
</tr>
<tr>
<td id="L451" class="blob-num js-line-number" data-line-number="451"></td>
<td id="LC451" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">array</span></span></td>
</tr>
<tr>
<td id="L452" class="blob-num js-line-number" data-line-number="452"></td>
<td id="LC452" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Array|Boolean}</span></span></td>
</tr>
<tr>
<td id="L453" class="blob-num js-line-number" data-line-number="453"></td>
<td id="LC453" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L454" class="blob-num js-line-number" data-line-number="454"></td>
<td id="LC454" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">arrayDiff</span>(<span class="pl-smi">needles</span>, <span class="pl-smi">array</span>) {</td>
</tr>
<tr>
<td id="L455" class="blob-num js-line-number" data-line-number="455"></td>
<td id="LC455" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> diff <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L456" class="blob-num js-line-number" data-line-number="456"></td>
<td id="LC456" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L457" class="blob-num js-line-number" data-line-number="457"></td>
<td id="LC457" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">typeOf</span>(needles) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L458" class="blob-num js-line-number" data-line-number="458"></td>
<td id="LC458" class="blob-code blob-code-inner js-file-line"> needles <span class="pl-k">=</span> [needles];</td>
</tr>
<tr>
<td id="L459" class="blob-num js-line-number" data-line-number="459"></td>
<td id="LC459" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L460" class="blob-num js-line-number" data-line-number="460"></td>
<td id="LC460" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L461" class="blob-num js-line-number" data-line-number="461"></td>
<td id="LC461" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">typeOf</span>(array) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L462" class="blob-num js-line-number" data-line-number="462"></td>
<td id="LC462" class="blob-code blob-code-inner js-file-line"> array <span class="pl-k">=</span> [array];</td>
</tr>
<tr>
<td id="L463" class="blob-num js-line-number" data-line-number="463"></td>
<td id="LC463" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L464" class="blob-num js-line-number" data-line-number="464"></td>
<td id="LC464" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L465" class="blob-num js-line-number" data-line-number="465"></td>
<td id="LC465" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">in</span> needles) {</td>
</tr>
<tr>
<td id="L466" class="blob-num js-line-number" data-line-number="466"></td>
<td id="LC466" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">inArray</span>(needles[i], array) <span class="pl-k">===</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L467" class="blob-num js-line-number" data-line-number="467"></td>
<td id="LC467" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">diff</span>.<span class="pl-c1">push</span>(needles[i]);</td>
</tr>
<tr>
<td id="L468" class="blob-num js-line-number" data-line-number="468"></td>
<td id="LC468" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L469" class="blob-num js-line-number" data-line-number="469"></td>
<td id="LC469" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L470" class="blob-num js-line-number" data-line-number="470"></td>
<td id="LC470" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">diff</span>.<span class="pl-c1">length</span> <span class="pl-k">?</span> diff <span class="pl-k">:</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L471" class="blob-num js-line-number" data-line-number="471"></td>
<td id="LC471" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L472" class="blob-num js-line-number" data-line-number="472"></td>
<td id="LC472" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L473" class="blob-num js-line-number" data-line-number="473"></td>
<td id="LC473" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L474" class="blob-num js-line-number" data-line-number="474"></td>
<td id="LC474" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L475" class="blob-num js-line-number" data-line-number="475"></td>
<td id="LC475" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Find intersection of two arrays.</span></td>
</tr>
<tr>
<td id="L476" class="blob-num js-line-number" data-line-number="476"></td>
<td id="LC476" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L477" class="blob-num js-line-number" data-line-number="477"></td>
<td id="LC477" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L478" class="blob-num js-line-number" data-line-number="478"></td>
<td id="LC478" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">arrayIntersect</span></span></td>
</tr>
<tr>
<td id="L479" class="blob-num js-line-number" data-line-number="479"></td>
<td id="LC479" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">array1</span></span></td>
</tr>
<tr>
<td id="L480" class="blob-num js-line-number" data-line-number="480"></td>
<td id="LC480" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">array2</span></span></td>
</tr>
<tr>
<td id="L481" class="blob-num js-line-number" data-line-number="481"></td>
<td id="LC481" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Array}</span> Intersection of two arrays or null if there is none</span></td>
</tr>
<tr>
<td id="L482" class="blob-num js-line-number" data-line-number="482"></td>
<td id="LC482" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L483" class="blob-num js-line-number" data-line-number="483"></td>
<td id="LC483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">arrayIntersect</span>(<span class="pl-smi">array1</span>, <span class="pl-smi">array2</span>) {</td>
</tr>
<tr>
<td id="L484" class="blob-num js-line-number" data-line-number="484"></td>
<td id="LC484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> result <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L485" class="blob-num js-line-number" data-line-number="485"></td>
<td id="LC485" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">each</span>(array1, <span class="pl-k">function</span>(<span class="pl-smi">item</span>) {</td>
</tr>
<tr>
<td id="L486" class="blob-num js-line-number" data-line-number="486"></td>
<td id="LC486" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">inArray</span>(item, array2) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L487" class="blob-num js-line-number" data-line-number="487"></td>
<td id="LC487" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">result</span>.<span class="pl-c1">push</span>(item);</td>
</tr>
<tr>
<td id="L488" class="blob-num js-line-number" data-line-number="488"></td>
<td id="LC488" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L489" class="blob-num js-line-number" data-line-number="489"></td>
<td id="LC489" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L490" class="blob-num js-line-number" data-line-number="490"></td>
<td id="LC490" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">result</span>.<span class="pl-c1">length</span> <span class="pl-k">?</span> result <span class="pl-k">:</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L491" class="blob-num js-line-number" data-line-number="491"></td>
<td id="LC491" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L492" class="blob-num js-line-number" data-line-number="492"></td>
<td id="LC492" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L493" class="blob-num js-line-number" data-line-number="493"></td>
<td id="LC493" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L494" class="blob-num js-line-number" data-line-number="494"></td>
<td id="LC494" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L495" class="blob-num js-line-number" data-line-number="495"></td>
<td id="LC495" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Forces anything into an array.</span></td>
</tr>
<tr>
<td id="L496" class="blob-num js-line-number" data-line-number="496"></td>
<td id="LC496" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L497" class="blob-num js-line-number" data-line-number="497"></td>
<td id="LC497" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">toArray</span></span></td>
</tr>
<tr>
<td id="L498" class="blob-num js-line-number" data-line-number="498"></td>
<td id="LC498" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L499" class="blob-num js-line-number" data-line-number="499"></td>
<td id="LC499" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> Object with length field.</span></td>
</tr>
<tr>
<td id="L500" class="blob-num js-line-number" data-line-number="500"></td>
<td id="LC500" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Array}</span> Array object containing all items.</span></td>
</tr>
<tr>
<td id="L501" class="blob-num js-line-number" data-line-number="501"></td>
<td id="LC501" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L502" class="blob-num js-line-number" data-line-number="502"></td>
<td id="LC502" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">toArray</span>(<span class="pl-smi">obj</span>) {</td>
</tr>
<tr>
<td id="L503" class="blob-num js-line-number" data-line-number="503"></td>
<td id="LC503" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> i, arr <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L504" class="blob-num js-line-number" data-line-number="504"></td>
<td id="LC504" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L505" class="blob-num js-line-number" data-line-number="505"></td>
<td id="LC505" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">obj</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L506" class="blob-num js-line-number" data-line-number="506"></td>
<td id="LC506" class="blob-code blob-code-inner js-file-line"> arr[i] <span class="pl-k">=</span> obj[i];</td>
</tr>
<tr>
<td id="L507" class="blob-num js-line-number" data-line-number="507"></td>
<td id="LC507" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L508" class="blob-num js-line-number" data-line-number="508"></td>
<td id="LC508" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L509" class="blob-num js-line-number" data-line-number="509"></td>
<td id="LC509" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> arr;</td>
</tr>
<tr>
<td id="L510" class="blob-num js-line-number" data-line-number="510"></td>
<td id="LC510" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L511" class="blob-num js-line-number" data-line-number="511"></td>
<td id="LC511" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L512" class="blob-num js-line-number" data-line-number="512"></td>
<td id="LC512" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L513" class="blob-num js-line-number" data-line-number="513"></td>
<td id="LC513" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L514" class="blob-num js-line-number" data-line-number="514"></td>
<td id="LC514" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Generates an unique ID. The only way a user would be able to get the same ID is if the two persons</span></td>
</tr>
<tr>
<td id="L515" class="blob-num js-line-number" data-line-number="515"></td>
<td id="LC515" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> at the same exact millisecond manage to get the same 5 random numbers between 0-65535; it also uses</span></td>
</tr>
<tr>
<td id="L516" class="blob-num js-line-number" data-line-number="516"></td>
<td id="LC516" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> a counter so each ID is guaranteed to be unique for the given page. It is more probable for the earth</span></td>
</tr>
<tr>
<td id="L517" class="blob-num js-line-number" data-line-number="517"></td>
<td id="LC517" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> to be hit with an asteroid.</span></td>
</tr>
<tr>
<td id="L518" class="blob-num js-line-number" data-line-number="518"></td>
<td id="LC518" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L519" class="blob-num js-line-number" data-line-number="519"></td>
<td id="LC519" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">guid</span></span></td>
</tr>
<tr>
<td id="L520" class="blob-num js-line-number" data-line-number="520"></td>
<td id="LC520" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L521" class="blob-num js-line-number" data-line-number="521"></td>
<td id="LC521" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">prefix</span> to prepend (by default 'o' will be prepended).</span></td>
</tr>
<tr>
<td id="L522" class="blob-num js-line-number" data-line-number="522"></td>
<td id="LC522" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">guid</span></span></td>
</tr>
<tr>
<td id="L523" class="blob-num js-line-number" data-line-number="523"></td>
<td id="LC523" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Virtually unique id.</span></td>
</tr>
<tr>
<td id="L524" class="blob-num js-line-number" data-line-number="524"></td>
<td id="LC524" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L525" class="blob-num js-line-number" data-line-number="525"></td>
<td id="LC525" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> guid <span class="pl-k">=</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L526" class="blob-num js-line-number" data-line-number="526"></td>
<td id="LC526" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> counter <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L527" class="blob-num js-line-number" data-line-number="527"></td>
<td id="LC527" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L528" class="blob-num js-line-number" data-line-number="528"></td>
<td id="LC528" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>(<span class="pl-smi">prefix</span>) {</td>
</tr>
<tr>
<td id="L529" class="blob-num js-line-number" data-line-number="529"></td>
<td id="LC529" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> guid <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Date</span>().<span class="pl-c1">getTime</span>().<span class="pl-c1">toString</span>(<span class="pl-c1">32</span>), i;</td>
</tr>
<tr>
<td id="L530" class="blob-num js-line-number" data-line-number="530"></td>
<td id="LC530" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L531" class="blob-num js-line-number" data-line-number="531"></td>
<td id="LC531" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-c1">5</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L532" class="blob-num js-line-number" data-line-number="532"></td>
<td id="LC532" class="blob-code blob-code-inner js-file-line"> guid <span class="pl-k">+=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>(<span class="pl-c1">Math</span>.<span class="pl-c1">random</span>() <span class="pl-k">*</span> <span class="pl-c1">65535</span>).<span class="pl-c1">toString</span>(<span class="pl-c1">32</span>);</td>
</tr>
<tr>
<td id="L533" class="blob-num js-line-number" data-line-number="533"></td>
<td id="LC533" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L534" class="blob-num js-line-number" data-line-number="534"></td>
<td id="LC534" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L535" class="blob-num js-line-number" data-line-number="535"></td>
<td id="LC535" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (prefix <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>o_<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> guid <span class="pl-k">+</span> (counter<span class="pl-k">++</span>).<span class="pl-c1">toString</span>(<span class="pl-c1">32</span>);</td>
</tr>
<tr>
<td id="L536" class="blob-num js-line-number" data-line-number="536"></td>
<td id="LC536" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L537" class="blob-num js-line-number" data-line-number="537"></td>
<td id="LC537" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L538" class="blob-num js-line-number" data-line-number="538"></td>
<td id="LC538" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L539" class="blob-num js-line-number" data-line-number="539"></td>
<td id="LC539" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L540" class="blob-num js-line-number" data-line-number="540"></td>
<td id="LC540" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L541" class="blob-num js-line-number" data-line-number="541"></td>
<td id="LC541" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Trims white spaces around the string</span></td>
</tr>
<tr>
<td id="L542" class="blob-num js-line-number" data-line-number="542"></td>
<td id="LC542" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L543" class="blob-num js-line-number" data-line-number="543"></td>
<td id="LC543" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">trim</span></span></td>
</tr>
<tr>
<td id="L544" class="blob-num js-line-number" data-line-number="544"></td>
<td id="LC544" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L545" class="blob-num js-line-number" data-line-number="545"></td>
<td id="LC545" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span></span></td>
</tr>
<tr>
<td id="L546" class="blob-num js-line-number" data-line-number="546"></td>
<td id="LC546" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L547" class="blob-num js-line-number" data-line-number="547"></td>
<td id="LC547" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L548" class="blob-num js-line-number" data-line-number="548"></td>
<td id="LC548" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">trim</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L549" class="blob-num js-line-number" data-line-number="549"></td>
<td id="LC549" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>str) {</td>
</tr>
<tr>
<td id="L550" class="blob-num js-line-number" data-line-number="550"></td>
<td id="LC550" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> str;</td>
</tr>
<tr>
<td id="L551" class="blob-num js-line-number" data-line-number="551"></td>
<td id="LC551" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L552" class="blob-num js-line-number" data-line-number="552"></td>
<td id="LC552" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">String</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">trim</span> <span class="pl-k">?</span> <span class="pl-c1">String</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">trim</span>.<span class="pl-c1">call</span>(str) <span class="pl-k">:</span> <span class="pl-smi">str</span>.<span class="pl-c1">toString</span>().<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>).<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L553" class="blob-num js-line-number" data-line-number="553"></td>
<td id="LC553" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L554" class="blob-num js-line-number" data-line-number="554"></td>
<td id="LC554" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L555" class="blob-num js-line-number" data-line-number="555"></td>
<td id="LC555" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L556" class="blob-num js-line-number" data-line-number="556"></td>
<td id="LC556" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L557" class="blob-num js-line-number" data-line-number="557"></td>
<td id="LC557" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Parses the specified size string into a byte value. For example 10kb becomes 10240.</span></td>
</tr>
<tr>
<td id="L558" class="blob-num js-line-number" data-line-number="558"></td>
<td id="LC558" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L559" class="blob-num js-line-number" data-line-number="559"></td>
<td id="LC559" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">parseSizeStr</span></span></td>
</tr>
<tr>
<td id="L560" class="blob-num js-line-number" data-line-number="560"></td>
<td id="LC560" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L561" class="blob-num js-line-number" data-line-number="561"></td>
<td id="LC561" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String/Number}</span> <span class="pl-smi">size</span> String to parse or number to just pass through.</span></td>
</tr>
<tr>
<td id="L562" class="blob-num js-line-number" data-line-number="562"></td>
<td id="LC562" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Number}</span> Size in bytes.</span></td>
</tr>
<tr>
<td id="L563" class="blob-num js-line-number" data-line-number="563"></td>
<td id="LC563" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L564" class="blob-num js-line-number" data-line-number="564"></td>
<td id="LC564" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">parseSizeStr</span>(<span class="pl-smi">size</span>) {</td>
</tr>
<tr>
<td id="L565" class="blob-num js-line-number" data-line-number="565"></td>
<td id="LC565" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(size) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L566" class="blob-num js-line-number" data-line-number="566"></td>
<td id="LC566" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> size;</td>
</tr>
<tr>
<td id="L567" class="blob-num js-line-number" data-line-number="567"></td>
<td id="LC567" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L568" class="blob-num js-line-number" data-line-number="568"></td>
<td id="LC568" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L569" class="blob-num js-line-number" data-line-number="569"></td>
<td id="LC569" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> muls <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L570" class="blob-num js-line-number" data-line-number="570"></td>
<td id="LC570" class="blob-code blob-code-inner js-file-line"> t<span class="pl-k">:</span> <span class="pl-c1">1099511627776</span>,</td>
</tr>
<tr>
<td id="L571" class="blob-num js-line-number" data-line-number="571"></td>
<td id="LC571" class="blob-code blob-code-inner js-file-line"> g<span class="pl-k">:</span> <span class="pl-c1">1073741824</span>,</td>
</tr>
<tr>
<td id="L572" class="blob-num js-line-number" data-line-number="572"></td>
<td id="LC572" class="blob-code blob-code-inner js-file-line"> m<span class="pl-k">:</span> <span class="pl-c1">1048576</span>,</td>
</tr>
<tr>
<td id="L573" class="blob-num js-line-number" data-line-number="573"></td>
<td id="LC573" class="blob-code blob-code-inner js-file-line"> k<span class="pl-k">:</span> <span class="pl-c1">1024</span></td>
</tr>
<tr>
<td id="L574" class="blob-num js-line-number" data-line-number="574"></td>
<td id="LC574" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L575" class="blob-num js-line-number" data-line-number="575"></td>
<td id="LC575" class="blob-code blob-code-inner js-file-line"> mul;</td>
</tr>
<tr>
<td id="L576" class="blob-num js-line-number" data-line-number="576"></td>
<td id="LC576" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L577" class="blob-num js-line-number" data-line-number="577"></td>
<td id="LC577" class="blob-code blob-code-inner js-file-line"> size <span class="pl-k">=</span><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-k">^</span>(<span class="pl-c1">[<span class="pl-c1">0-9</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)(<span class="pl-c1">[tmgk]</span><span class="pl-k">?</span>)<span class="pl-k">$</span><span class="pl-pds">/</span></span>.<span class="pl-c1">exec</span>(<span class="pl-smi">size</span>.<span class="pl-c1">toLowerCase</span>().<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-c1">0-9</span><span class="pl-cce">\.</span>tmkg]</span><span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L578" class="blob-num js-line-number" data-line-number="578"></td>
<td id="LC578" class="blob-code blob-code-inner js-file-line"> mul <span class="pl-k">=</span> size[<span class="pl-c1">2</span>];</td>
</tr>
<tr>
<td id="L579" class="blob-num js-line-number" data-line-number="579"></td>
<td id="LC579" class="blob-code blob-code-inner js-file-line"> size <span class="pl-k">=</span> <span class="pl-k">+</span>size[<span class="pl-c1">1</span>];</td>
</tr>
<tr>
<td id="L580" class="blob-num js-line-number" data-line-number="580"></td>
<td id="LC580" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L581" class="blob-num js-line-number" data-line-number="581"></td>
<td id="LC581" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">muls</span>.<span class="pl-en">hasOwnProperty</span>(mul)) {</td>
</tr>
<tr>
<td id="L582" class="blob-num js-line-number" data-line-number="582"></td>
<td id="LC582" class="blob-code blob-code-inner js-file-line"> size <span class="pl-k">*=</span> muls[mul];</td>
</tr>
<tr>
<td id="L583" class="blob-num js-line-number" data-line-number="583"></td>
<td id="LC583" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L584" class="blob-num js-line-number" data-line-number="584"></td>
<td id="LC584" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>(size);</td>
</tr>
<tr>
<td id="L585" class="blob-num js-line-number" data-line-number="585"></td>
<td id="LC585" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L586" class="blob-num js-line-number" data-line-number="586"></td>
<td id="LC586" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L587" class="blob-num js-line-number" data-line-number="587"></td>
<td id="LC587" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L588" class="blob-num js-line-number" data-line-number="588"></td>
<td id="LC588" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L589" class="blob-num js-line-number" data-line-number="589"></td>
<td id="LC589" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Pseudo sprintf implementation - simple way to replace tokens with specified values.</span></td>
</tr>
<tr>
<td id="L590" class="blob-num js-line-number" data-line-number="590"></td>
<td id="LC590" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L591" class="blob-num js-line-number" data-line-number="591"></td>
<td id="LC591" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span> String with tokens</span></td>
</tr>
<tr>
<td id="L592" class="blob-num js-line-number" data-line-number="592"></td>
<td id="LC592" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{String}</span> String with replaced tokens</span></td>
</tr>
<tr>
<td id="L593" class="blob-num js-line-number" data-line-number="593"></td>
<td id="LC593" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L594" class="blob-num js-line-number" data-line-number="594"></td>
<td id="LC594" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">sprintf</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L595" class="blob-num js-line-number" data-line-number="595"></td>
<td id="LC595" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L596" class="blob-num js-line-number" data-line-number="596"></td>
<td id="LC596" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L597" class="blob-num js-line-number" data-line-number="597"></td>
<td id="LC597" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">str</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>%(<span class="pl-c1">[<span class="pl-c1">a-z</span>]</span>)<span class="pl-pds">/</span>g</span>, <span class="pl-k">function</span>(<span class="pl-smi">$0</span>, <span class="pl-smi">$1</span>) {</td>
</tr>
<tr>
<td id="L598" class="blob-num js-line-number" data-line-number="598"></td>
<td id="LC598" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> value <span class="pl-k">=</span> <span class="pl-smi">args</span>.<span class="pl-c1">shift</span>();</td>
</tr>
<tr>
<td id="L599" class="blob-num js-line-number" data-line-number="599"></td>
<td id="LC599" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L600" class="blob-num js-line-number" data-line-number="600"></td>
<td id="LC600" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> ($1) {</td>
</tr>
<tr>
<td id="L601" class="blob-num js-line-number" data-line-number="601"></td>
<td id="LC601" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>s<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L602" class="blob-num js-line-number" data-line-number="602"></td>
<td id="LC602" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L603" class="blob-num js-line-number" data-line-number="603"></td>
<td id="LC603" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L604" class="blob-num js-line-number" data-line-number="604"></td>
<td id="LC604" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>d<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L605" class="blob-num js-line-number" data-line-number="605"></td>
<td id="LC605" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">parseInt</span>(value, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L606" class="blob-num js-line-number" data-line-number="606"></td>
<td id="LC606" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L607" class="blob-num js-line-number" data-line-number="607"></td>
<td id="LC607" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>f<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L608" class="blob-num js-line-number" data-line-number="608"></td>
<td id="LC608" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">parseFloat</span>(value);</td>
</tr>
<tr>
<td id="L609" class="blob-num js-line-number" data-line-number="609"></td>
<td id="LC609" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L610" class="blob-num js-line-number" data-line-number="610"></td>
<td id="LC610" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>c<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L611" class="blob-num js-line-number" data-line-number="611"></td>
<td id="LC611" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L612" class="blob-num js-line-number" data-line-number="612"></td>
<td id="LC612" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L613" class="blob-num js-line-number" data-line-number="613"></td>
<td id="LC613" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>:</td>
</tr>
<tr>
<td id="L614" class="blob-num js-line-number" data-line-number="614"></td>
<td id="LC614" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value;</td>
</tr>
<tr>
<td id="L615" class="blob-num js-line-number" data-line-number="615"></td>
<td id="LC615" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L616" class="blob-num js-line-number" data-line-number="616"></td>
<td id="LC616" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L617" class="blob-num js-line-number" data-line-number="617"></td>
<td id="LC617" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L618" class="blob-num js-line-number" data-line-number="618"></td>
<td id="LC618" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L619" class="blob-num js-line-number" data-line-number="619"></td>
<td id="LC619" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L620" class="blob-num js-line-number" data-line-number="620"></td>
<td id="LC620" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L621" class="blob-num js-line-number" data-line-number="621"></td>
<td id="LC621" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">delay</span>(<span class="pl-smi">cb</span>, <span class="pl-smi">timeout</span>) {</td>
</tr>
<tr>
<td id="L622" class="blob-num js-line-number" data-line-number="622"></td>
<td id="LC622" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L623" class="blob-num js-line-number" data-line-number="623"></td>
<td id="LC623" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L624" class="blob-num js-line-number" data-line-number="624"></td>
<td id="LC624" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">cb</span>.<span class="pl-c1">call</span>(self);</td>
</tr>
<tr>
<td id="L625" class="blob-num js-line-number" data-line-number="625"></td>
<td id="LC625" class="blob-code blob-code-inner js-file-line"> }, timeout <span class="pl-k">||</span> <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L626" class="blob-num js-line-number" data-line-number="626"></td>
<td id="LC626" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L627" class="blob-num js-line-number" data-line-number="627"></td>
<td id="LC627" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L628" class="blob-num js-line-number" data-line-number="628"></td>
<td id="LC628" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L629" class="blob-num js-line-number" data-line-number="629"></td>
<td id="LC629" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L630" class="blob-num js-line-number" data-line-number="630"></td>
<td id="LC630" class="blob-code blob-code-inner js-file-line"> guid<span class="pl-k">:</span> guid,</td>
</tr>
<tr>
<td id="L631" class="blob-num js-line-number" data-line-number="631"></td>
<td id="LC631" class="blob-code blob-code-inner js-file-line"> typeOf<span class="pl-k">:</span> typeOf,</td>
</tr>
<tr>
<td id="L632" class="blob-num js-line-number" data-line-number="632"></td>
<td id="LC632" class="blob-code blob-code-inner js-file-line"> extend<span class="pl-k">:</span> extend,</td>
</tr>
<tr>
<td id="L633" class="blob-num js-line-number" data-line-number="633"></td>
<td id="LC633" class="blob-code blob-code-inner js-file-line"> extendIf<span class="pl-k">:</span> extendIf,</td>
</tr>
<tr>
<td id="L634" class="blob-num js-line-number" data-line-number="634"></td>
<td id="LC634" class="blob-code blob-code-inner js-file-line"> extendImmutable<span class="pl-k">:</span> extendImmutable,</td>
</tr>
<tr>
<td id="L635" class="blob-num js-line-number" data-line-number="635"></td>
<td id="LC635" class="blob-code blob-code-inner js-file-line"> extendImmutableIf<span class="pl-k">:</span> extendImmutableIf,</td>
</tr>
<tr>
<td id="L636" class="blob-num js-line-number" data-line-number="636"></td>
<td id="LC636" class="blob-code blob-code-inner js-file-line"> clone<span class="pl-k">:</span> clone,</td>
</tr>
<tr>
<td id="L637" class="blob-num js-line-number" data-line-number="637"></td>
<td id="LC637" class="blob-code blob-code-inner js-file-line"> inherit<span class="pl-k">:</span> inherit,</td>
</tr>
<tr>
<td id="L638" class="blob-num js-line-number" data-line-number="638"></td>
<td id="LC638" class="blob-code blob-code-inner js-file-line"> each<span class="pl-k">:</span> each,</td>
</tr>
<tr>
<td id="L639" class="blob-num js-line-number" data-line-number="639"></td>
<td id="LC639" class="blob-code blob-code-inner js-file-line"> isEmptyObj<span class="pl-k">:</span> isEmptyObj,</td>
</tr>
<tr>
<td id="L640" class="blob-num js-line-number" data-line-number="640"></td>
<td id="LC640" class="blob-code blob-code-inner js-file-line"> inSeries<span class="pl-k">:</span> inSeries,</td>
</tr>
<tr>
<td id="L641" class="blob-num js-line-number" data-line-number="641"></td>
<td id="LC641" class="blob-code blob-code-inner js-file-line"> inParallel<span class="pl-k">:</span> inParallel,</td>
</tr>
<tr>
<td id="L642" class="blob-num js-line-number" data-line-number="642"></td>
<td id="LC642" class="blob-code blob-code-inner js-file-line"> inArray<span class="pl-k">:</span> inArray,</td>
</tr>
<tr>
<td id="L643" class="blob-num js-line-number" data-line-number="643"></td>
<td id="LC643" class="blob-code blob-code-inner js-file-line"> arrayDiff<span class="pl-k">:</span> arrayDiff,</td>
</tr>
<tr>
<td id="L644" class="blob-num js-line-number" data-line-number="644"></td>
<td id="LC644" class="blob-code blob-code-inner js-file-line"> arrayIntersect<span class="pl-k">:</span> arrayIntersect,</td>
</tr>
<tr>
<td id="L645" class="blob-num js-line-number" data-line-number="645"></td>
<td id="LC645" class="blob-code blob-code-inner js-file-line"> toArray<span class="pl-k">:</span> toArray,</td>
</tr>
<tr>
<td id="L646" class="blob-num js-line-number" data-line-number="646"></td>
<td id="LC646" class="blob-code blob-code-inner js-file-line"> trim<span class="pl-k">:</span> trim,</td>
</tr>
<tr>
<td id="L647" class="blob-num js-line-number" data-line-number="647"></td>
<td id="LC647" class="blob-code blob-code-inner js-file-line"> sprintf<span class="pl-k">:</span> sprintf,</td>
</tr>
<tr>
<td id="L648" class="blob-num js-line-number" data-line-number="648"></td>
<td id="LC648" class="blob-code blob-code-inner js-file-line"> parseSizeStr<span class="pl-k">:</span> parseSizeStr,</td>
</tr>
<tr>
<td id="L649" class="blob-num js-line-number" data-line-number="649"></td>
<td id="LC649" class="blob-code blob-code-inner js-file-line"> delay<span class="pl-k">:</span> delay</td>
</tr>
<tr>
<td id="L650" class="blob-num js-line-number" data-line-number="650"></td>
<td id="LC650" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L651" class="blob-num js-line-number" data-line-number="651"></td>
<td id="LC651" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L652" class="blob-num js-line-number" data-line-number="652"></td>
<td id="LC652" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L653" class="blob-num js-line-number" data-line-number="653"></td>
<td id="LC653" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Encode.js</span></td>
</tr>
<tr>
<td id="L654" class="blob-num js-line-number" data-line-number="654"></td>
<td id="LC654" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L655" class="blob-num js-line-number" data-line-number="655"></td>
<td id="LC655" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L656" class="blob-num js-line-number" data-line-number="656"></td>
<td id="LC656" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Encode.js</span></td>
</tr>
<tr>
<td id="L657" class="blob-num js-line-number" data-line-number="657"></td>
<td id="LC657" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L658" class="blob-num js-line-number" data-line-number="658"></td>
<td id="LC658" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L659" class="blob-num js-line-number" data-line-number="659"></td>
<td id="LC659" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L660" class="blob-num js-line-number" data-line-number="660"></td>
<td id="LC660" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L661" class="blob-num js-line-number" data-line-number="661"></td>
<td id="LC661" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L662" class="blob-num js-line-number" data-line-number="662"></td>
<td id="LC662" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L663" class="blob-num js-line-number" data-line-number="663"></td>
<td id="LC663" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L664" class="blob-num js-line-number" data-line-number="664"></td>
<td id="LC664" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L665" class="blob-num js-line-number" data-line-number="665"></td>
<td id="LC665" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L666" class="blob-num js-line-number" data-line-number="666"></td>
<td id="LC666" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Encode</span></td>
</tr>
<tr>
<td id="L667" class="blob-num js-line-number" data-line-number="667"></td>
<td id="LC667" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L668" class="blob-num js-line-number" data-line-number="668"></td>
<td id="LC668" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L669" class="blob-num js-line-number" data-line-number="669"></td>
<td id="LC669" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L670" class="blob-num js-line-number" data-line-number="670"></td>
<td id="LC670" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L671" class="blob-num js-line-number" data-line-number="671"></td>
<td id="LC671" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Encode<span class="pl-pds">'</span></span>, [], <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L672" class="blob-num js-line-number" data-line-number="672"></td>
<td id="LC672" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L673" class="blob-num js-line-number" data-line-number="673"></td>
<td id="LC673" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L674" class="blob-num js-line-number" data-line-number="674"></td>
<td id="LC674" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Encode string with UTF-8</span></td>
</tr>
<tr>
<td id="L675" class="blob-num js-line-number" data-line-number="675"></td>
<td id="LC675" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L676" class="blob-num js-line-number" data-line-number="676"></td>
<td id="LC676" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">utf8_encode</span></span></td>
</tr>
<tr>
<td id="L677" class="blob-num js-line-number" data-line-number="677"></td>
<td id="LC677" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L678" class="blob-num js-line-number" data-line-number="678"></td>
<td id="LC678" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span> String to encode</span></td>
</tr>
<tr>
<td id="L679" class="blob-num js-line-number" data-line-number="679"></td>
<td id="LC679" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> UTF-8 encoded string</span></td>
</tr>
<tr>
<td id="L680" class="blob-num js-line-number" data-line-number="680"></td>
<td id="LC680" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L681" class="blob-num js-line-number" data-line-number="681"></td>
<td id="LC681" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">utf8_encode</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L682" class="blob-num js-line-number" data-line-number="682"></td>
<td id="LC682" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">unescape</span>(<span class="pl-c1">encodeURIComponent</span>(str));</td>
</tr>
<tr>
<td id="L683" class="blob-num js-line-number" data-line-number="683"></td>
<td id="LC683" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L684" class="blob-num js-line-number" data-line-number="684"></td>
<td id="LC684" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L685" class="blob-num js-line-number" data-line-number="685"></td>
<td id="LC685" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L686" class="blob-num js-line-number" data-line-number="686"></td>
<td id="LC686" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Decode UTF-8 encoded string</span></td>
</tr>
<tr>
<td id="L687" class="blob-num js-line-number" data-line-number="687"></td>
<td id="LC687" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L688" class="blob-num js-line-number" data-line-number="688"></td>
<td id="LC688" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">utf8_decode</span></span></td>
</tr>
<tr>
<td id="L689" class="blob-num js-line-number" data-line-number="689"></td>
<td id="LC689" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L690" class="blob-num js-line-number" data-line-number="690"></td>
<td id="LC690" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span> String to decode</span></td>
</tr>
<tr>
<td id="L691" class="blob-num js-line-number" data-line-number="691"></td>
<td id="LC691" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Decoded string</span></td>
</tr>
<tr>
<td id="L692" class="blob-num js-line-number" data-line-number="692"></td>
<td id="LC692" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L693" class="blob-num js-line-number" data-line-number="693"></td>
<td id="LC693" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">utf8_decode</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">str_data</span>) {</td>
</tr>
<tr>
<td id="L694" class="blob-num js-line-number" data-line-number="694"></td>
<td id="LC694" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">decodeURIComponent</span>(<span class="pl-c1">escape</span>(str_data));</td>
</tr>
<tr>
<td id="L695" class="blob-num js-line-number" data-line-number="695"></td>
<td id="LC695" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L696" class="blob-num js-line-number" data-line-number="696"></td>
<td id="LC696" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L697" class="blob-num js-line-number" data-line-number="697"></td>
<td id="LC697" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L698" class="blob-num js-line-number" data-line-number="698"></td>
<td id="LC698" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Decode Base64 encoded string (uses browser's default method if available),</span></td>
</tr>
<tr>
<td id="L699" class="blob-num js-line-number" data-line-number="699"></td>
<td id="LC699" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_decode.js</span></td>
</tr>
<tr>
<td id="L700" class="blob-num js-line-number" data-line-number="700"></td>
<td id="LC700" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L701" class="blob-num js-line-number" data-line-number="701"></td>
<td id="LC701" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">atob</span></span></td>
</tr>
<tr>
<td id="L702" class="blob-num js-line-number" data-line-number="702"></td>
<td id="LC702" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L703" class="blob-num js-line-number" data-line-number="703"></td>
<td id="LC703" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">data</span> String to decode</span></td>
</tr>
<tr>
<td id="L704" class="blob-num js-line-number" data-line-number="704"></td>
<td id="LC704" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Decoded string</span></td>
</tr>
<tr>
<td id="L705" class="blob-num js-line-number" data-line-number="705"></td>
<td id="LC705" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L706" class="blob-num js-line-number" data-line-number="706"></td>
<td id="LC706" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">atob</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>, <span class="pl-smi">utf8</span>) {</td>
</tr>
<tr>
<td id="L707" class="blob-num js-line-number" data-line-number="707"></td>
<td id="LC707" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-c1">window</span>.<span class="pl-smi">atob</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L708" class="blob-num js-line-number" data-line-number="708"></td>
<td id="LC708" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> utf8 <span class="pl-k">?</span> <span class="pl-en">utf8_decode</span>(<span class="pl-c1">window</span>.<span class="pl-c1">atob</span>(data)) <span class="pl-k">:</span> <span class="pl-c1">window</span>.<span class="pl-c1">atob</span>(data);</td>
</tr>
<tr>
<td id="L709" class="blob-num js-line-number" data-line-number="709"></td>
<td id="LC709" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L710" class="blob-num js-line-number" data-line-number="710"></td>
<td id="LC710" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L711" class="blob-num js-line-number" data-line-number="711"></td>
<td id="LC711" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> http://kevin.vanzonneveld.net</span></td>
</tr>
<tr>
<td id="L712" class="blob-num js-line-number" data-line-number="712"></td>
<td id="LC712" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + original by: Tyler Akins (http://rumkin.com)</span></td>
</tr>
<tr>
<td id="L713" class="blob-num js-line-number" data-line-number="713"></td>
<td id="LC713" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Thunder.m</span></td>
</tr>
<tr>
<td id="L714" class="blob-num js-line-number" data-line-number="714"></td>
<td id="LC714" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + input by: Aman Gupta</span></td>
</tr>
<tr>
<td id="L715" class="blob-num js-line-number" data-line-number="715"></td>
<td id="LC715" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)</span></td>
</tr>
<tr>
<td id="L716" class="blob-num js-line-number" data-line-number="716"></td>
<td id="LC716" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + bugfixed by: Onno Marsman</span></td>
</tr>
<tr>
<td id="L717" class="blob-num js-line-number" data-line-number="717"></td>
<td id="LC717" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + bugfixed by: Pellentesque Malesuada</span></td>
</tr>
<tr>
<td id="L718" class="blob-num js-line-number" data-line-number="718"></td>
<td id="LC718" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)</span></td>
</tr>
<tr>
<td id="L719" class="blob-num js-line-number" data-line-number="719"></td>
<td id="LC719" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + input by: Brett Zamir (http://brett-zamir.me)</span></td>
</tr>
<tr>
<td id="L720" class="blob-num js-line-number" data-line-number="720"></td>
<td id="LC720" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)</span></td>
</tr>
<tr>
<td id="L721" class="blob-num js-line-number" data-line-number="721"></td>
<td id="LC721" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');</span></td>
</tr>
<tr>
<td id="L722" class="blob-num js-line-number" data-line-number="722"></td>
<td id="LC722" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * returns 1: 'Kevin van Zonneveld'</span></td>
</tr>
<tr>
<td id="L723" class="blob-num js-line-number" data-line-number="723"></td>
<td id="LC723" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> mozilla has this native</span></td>
</tr>
<tr>
<td id="L724" class="blob-num js-line-number" data-line-number="724"></td>
<td id="LC724" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> - but breaks in 2.0.0.12!</span></td>
</tr>
<tr>
<td id="L725" class="blob-num js-line-number" data-line-number="725"></td>
<td id="LC725" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>if (typeof this.window.atob == 'function') {</span></td>
</tr>
<tr>
<td id="L726" class="blob-num js-line-number" data-line-number="726"></td>
<td id="LC726" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> return atob(data);</span></td>
</tr>
<tr>
<td id="L727" class="blob-num js-line-number" data-line-number="727"></td>
<td id="LC727" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>}</span></td>
</tr>
<tr>
<td id="L728" class="blob-num js-line-number" data-line-number="728"></td>
<td id="LC728" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> b64 <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L729" class="blob-num js-line-number" data-line-number="729"></td>
<td id="LC729" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> o1, o2, o3, h1, h2, h3, h4, bits, i <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L730" class="blob-num js-line-number" data-line-number="730"></td>
<td id="LC730" class="blob-code blob-code-inner js-file-line"> ac <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L731" class="blob-num js-line-number" data-line-number="731"></td>
<td id="LC731" class="blob-code blob-code-inner js-file-line"> dec <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L732" class="blob-num js-line-number" data-line-number="732"></td>
<td id="LC732" class="blob-code blob-code-inner js-file-line"> tmp_arr <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L733" class="blob-num js-line-number" data-line-number="733"></td>
<td id="LC733" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L734" class="blob-num js-line-number" data-line-number="734"></td>
<td id="LC734" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>data) {</td>
</tr>
<tr>
<td id="L735" class="blob-num js-line-number" data-line-number="735"></td>
<td id="LC735" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L736" class="blob-num js-line-number" data-line-number="736"></td>
<td id="LC736" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L737" class="blob-num js-line-number" data-line-number="737"></td>
<td id="LC737" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L738" class="blob-num js-line-number" data-line-number="738"></td>
<td id="LC738" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L739" class="blob-num js-line-number" data-line-number="739"></td>
<td id="LC739" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L740" class="blob-num js-line-number" data-line-number="740"></td>
<td id="LC740" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">do</span> { <span class="pl-c"><span class="pl-c">//</span> unpack four hexets into three octets using index points in b64</span></td>
</tr>
<tr>
<td id="L741" class="blob-num js-line-number" data-line-number="741"></td>
<td id="LC741" class="blob-code blob-code-inner js-file-line"> h1 <span class="pl-k">=</span> <span class="pl-smi">b64</span>.<span class="pl-c1">indexOf</span>(<span class="pl-smi">data</span>.<span class="pl-c1">charAt</span>(i<span class="pl-k">++</span>));</td>
</tr>
<tr>
<td id="L742" class="blob-num js-line-number" data-line-number="742"></td>
<td id="LC742" class="blob-code blob-code-inner js-file-line"> h2 <span class="pl-k">=</span> <span class="pl-smi">b64</span>.<span class="pl-c1">indexOf</span>(<span class="pl-smi">data</span>.<span class="pl-c1">charAt</span>(i<span class="pl-k">++</span>));</td>
</tr>
<tr>
<td id="L743" class="blob-num js-line-number" data-line-number="743"></td>
<td id="LC743" class="blob-code blob-code-inner js-file-line"> h3 <span class="pl-k">=</span> <span class="pl-smi">b64</span>.<span class="pl-c1">indexOf</span>(<span class="pl-smi">data</span>.<span class="pl-c1">charAt</span>(i<span class="pl-k">++</span>));</td>
</tr>
<tr>
<td id="L744" class="blob-num js-line-number" data-line-number="744"></td>
<td id="LC744" class="blob-code blob-code-inner js-file-line"> h4 <span class="pl-k">=</span> <span class="pl-smi">b64</span>.<span class="pl-c1">indexOf</span>(<span class="pl-smi">data</span>.<span class="pl-c1">charAt</span>(i<span class="pl-k">++</span>));</td>
</tr>
<tr>
<td id="L745" class="blob-num js-line-number" data-line-number="745"></td>
<td id="LC745" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L746" class="blob-num js-line-number" data-line-number="746"></td>
<td id="LC746" class="blob-code blob-code-inner js-file-line"> bits <span class="pl-k">=</span> h1 <span class="pl-k"><<</span> <span class="pl-c1">18</span> <span class="pl-k">|</span> h2 <span class="pl-k"><<</span> <span class="pl-c1">12</span> <span class="pl-k">|</span> h3 <span class="pl-k"><<</span> <span class="pl-c1">6</span> <span class="pl-k">|</span> h4;</td>
</tr>
<tr>
<td id="L747" class="blob-num js-line-number" data-line-number="747"></td>
<td id="LC747" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L748" class="blob-num js-line-number" data-line-number="748"></td>
<td id="LC748" class="blob-code blob-code-inner js-file-line"> o1 <span class="pl-k">=</span> bits <span class="pl-k">>></span> <span class="pl-c1">16</span> <span class="pl-k">&</span> <span class="pl-c1">0xff</span>;</td>
</tr>
<tr>
<td id="L749" class="blob-num js-line-number" data-line-number="749"></td>
<td id="LC749" class="blob-code blob-code-inner js-file-line"> o2 <span class="pl-k">=</span> bits <span class="pl-k">>></span> <span class="pl-c1">8</span> <span class="pl-k">&</span> <span class="pl-c1">0xff</span>;</td>
</tr>
<tr>
<td id="L750" class="blob-num js-line-number" data-line-number="750"></td>
<td id="LC750" class="blob-code blob-code-inner js-file-line"> o3 <span class="pl-k">=</span> bits <span class="pl-k">&</span> <span class="pl-c1">0xff</span>;</td>
</tr>
<tr>
<td id="L751" class="blob-num js-line-number" data-line-number="751"></td>
<td id="LC751" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L752" class="blob-num js-line-number" data-line-number="752"></td>
<td id="LC752" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (h3 <span class="pl-k">==</span> <span class="pl-c1">64</span>) {</td>
</tr>
<tr>
<td id="L753" class="blob-num js-line-number" data-line-number="753"></td>
<td id="LC753" class="blob-code blob-code-inner js-file-line"> tmp_arr[ac<span class="pl-k">++</span>] <span class="pl-k">=</span> <span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(o1);</td>
</tr>
<tr>
<td id="L754" class="blob-num js-line-number" data-line-number="754"></td>
<td id="LC754" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (h4 <span class="pl-k">==</span> <span class="pl-c1">64</span>) {</td>
</tr>
<tr>
<td id="L755" class="blob-num js-line-number" data-line-number="755"></td>
<td id="LC755" class="blob-code blob-code-inner js-file-line"> tmp_arr[ac<span class="pl-k">++</span>] <span class="pl-k">=</span> <span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(o1, o2);</td>
</tr>
<tr>
<td id="L756" class="blob-num js-line-number" data-line-number="756"></td>
<td id="LC756" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L757" class="blob-num js-line-number" data-line-number="757"></td>
<td id="LC757" class="blob-code blob-code-inner js-file-line"> tmp_arr[ac<span class="pl-k">++</span>] <span class="pl-k">=</span> <span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(o1, o2, o3);</td>
</tr>
<tr>
<td id="L758" class="blob-num js-line-number" data-line-number="758"></td>
<td id="LC758" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L759" class="blob-num js-line-number" data-line-number="759"></td>
<td id="LC759" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">while</span> (i <span class="pl-k"><</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span>);</td>
</tr>
<tr>
<td id="L760" class="blob-num js-line-number" data-line-number="760"></td>
<td id="LC760" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L761" class="blob-num js-line-number" data-line-number="761"></td>
<td id="LC761" class="blob-code blob-code-inner js-file-line"> dec <span class="pl-k">=</span> <span class="pl-smi">tmp_arr</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L762" class="blob-num js-line-number" data-line-number="762"></td>
<td id="LC762" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L763" class="blob-num js-line-number" data-line-number="763"></td>
<td id="LC763" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> utf8 <span class="pl-k">?</span> <span class="pl-en">utf8_decode</span>(dec) <span class="pl-k">:</span> dec;</td>
</tr>
<tr>
<td id="L764" class="blob-num js-line-number" data-line-number="764"></td>
<td id="LC764" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L765" class="blob-num js-line-number" data-line-number="765"></td>
<td id="LC765" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L766" class="blob-num js-line-number" data-line-number="766"></td>
<td id="LC766" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L767" class="blob-num js-line-number" data-line-number="767"></td>
<td id="LC767" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Base64 encode string (uses browser's default method if available),</span></td>
</tr>
<tr>
<td id="L768" class="blob-num js-line-number" data-line-number="768"></td>
<td id="LC768" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_encode.js</span></td>
</tr>
<tr>
<td id="L769" class="blob-num js-line-number" data-line-number="769"></td>
<td id="LC769" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L770" class="blob-num js-line-number" data-line-number="770"></td>
<td id="LC770" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">btoa</span></span></td>
</tr>
<tr>
<td id="L771" class="blob-num js-line-number" data-line-number="771"></td>
<td id="LC771" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L772" class="blob-num js-line-number" data-line-number="772"></td>
<td id="LC772" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">data</span> String to encode</span></td>
</tr>
<tr>
<td id="L773" class="blob-num js-line-number" data-line-number="773"></td>
<td id="LC773" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Base64 encoded string</span></td>
</tr>
<tr>
<td id="L774" class="blob-num js-line-number" data-line-number="774"></td>
<td id="LC774" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L775" class="blob-num js-line-number" data-line-number="775"></td>
<td id="LC775" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">btoa</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>, <span class="pl-smi">utf8</span>) {</td>
</tr>
<tr>
<td id="L776" class="blob-num js-line-number" data-line-number="776"></td>
<td id="LC776" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (utf8) {</td>
</tr>
<tr>
<td id="L777" class="blob-num js-line-number" data-line-number="777"></td>
<td id="LC777" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-en">utf8_encode</span>(data);</td>
</tr>
<tr>
<td id="L778" class="blob-num js-line-number" data-line-number="778"></td>
<td id="LC778" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L779" class="blob-num js-line-number" data-line-number="779"></td>
<td id="LC779" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L780" class="blob-num js-line-number" data-line-number="780"></td>
<td id="LC780" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-c1">window</span>.<span class="pl-smi">btoa</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L781" class="blob-num js-line-number" data-line-number="781"></td>
<td id="LC781" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">window</span>.<span class="pl-c1">btoa</span>(data);</td>
</tr>
<tr>
<td id="L782" class="blob-num js-line-number" data-line-number="782"></td>
<td id="LC782" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L783" class="blob-num js-line-number" data-line-number="783"></td>
<td id="LC783" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L784" class="blob-num js-line-number" data-line-number="784"></td>
<td id="LC784" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> http://kevin.vanzonneveld.net</span></td>
</tr>
<tr>
<td id="L785" class="blob-num js-line-number" data-line-number="785"></td>
<td id="LC785" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + original by: Tyler Akins (http://rumkin.com)</span></td>
</tr>
<tr>
<td id="L786" class="blob-num js-line-number" data-line-number="786"></td>
<td id="LC786" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Bayron Guevara</span></td>
</tr>
<tr>
<td id="L787" class="blob-num js-line-number" data-line-number="787"></td>
<td id="LC787" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Thunder.m</span></td>
</tr>
<tr>
<td id="L788" class="blob-num js-line-number" data-line-number="788"></td>
<td id="LC788" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)</span></td>
</tr>
<tr>
<td id="L789" class="blob-num js-line-number" data-line-number="789"></td>
<td id="LC789" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + bugfixed by: Pellentesque Malesuada</span></td>
</tr>
<tr>
<td id="L790" class="blob-num js-line-number" data-line-number="790"></td>
<td id="LC790" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)</span></td>
</tr>
<tr>
<td id="L791" class="blob-num js-line-number" data-line-number="791"></td>
<td id="LC791" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Rafał Kukawski (http://kukawski.pl)</span></td>
</tr>
<tr>
<td id="L792" class="blob-num js-line-number" data-line-number="792"></td>
<td id="LC792" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * example 1: base64_encode('Kevin van Zonneveld');</span></td>
</tr>
<tr>
<td id="L793" class="blob-num js-line-number" data-line-number="793"></td>
<td id="LC793" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='</span></td>
</tr>
<tr>
<td id="L794" class="blob-num js-line-number" data-line-number="794"></td>
<td id="LC794" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> mozilla has this native</span></td>
</tr>
<tr>
<td id="L795" class="blob-num js-line-number" data-line-number="795"></td>
<td id="LC795" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> - but breaks in 2.0.0.12!</span></td>
</tr>
<tr>
<td id="L796" class="blob-num js-line-number" data-line-number="796"></td>
<td id="LC796" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> b64 <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L797" class="blob-num js-line-number" data-line-number="797"></td>
<td id="LC797" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> o1, o2, o3, h1, h2, h3, h4, bits, i <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L798" class="blob-num js-line-number" data-line-number="798"></td>
<td id="LC798" class="blob-code blob-code-inner js-file-line"> ac <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L799" class="blob-num js-line-number" data-line-number="799"></td>
<td id="LC799" class="blob-code blob-code-inner js-file-line"> enc <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L800" class="blob-num js-line-number" data-line-number="800"></td>
<td id="LC800" class="blob-code blob-code-inner js-file-line"> tmp_arr <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L801" class="blob-num js-line-number" data-line-number="801"></td>
<td id="LC801" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L802" class="blob-num js-line-number" data-line-number="802"></td>
<td id="LC802" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>data) {</td>
</tr>
<tr>
<td id="L803" class="blob-num js-line-number" data-line-number="803"></td>
<td id="LC803" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L804" class="blob-num js-line-number" data-line-number="804"></td>
<td id="LC804" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L805" class="blob-num js-line-number" data-line-number="805"></td>
<td id="LC805" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L806" class="blob-num js-line-number" data-line-number="806"></td>
<td id="LC806" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">do</span> { <span class="pl-c"><span class="pl-c">//</span> pack three octets into four hexets</span></td>
</tr>
<tr>
<td id="L807" class="blob-num js-line-number" data-line-number="807"></td>
<td id="LC807" class="blob-code blob-code-inner js-file-line"> o1 <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">charCodeAt</span>(i<span class="pl-k">++</span>);</td>
</tr>
<tr>
<td id="L808" class="blob-num js-line-number" data-line-number="808"></td>
<td id="LC808" class="blob-code blob-code-inner js-file-line"> o2 <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">charCodeAt</span>(i<span class="pl-k">++</span>);</td>
</tr>
<tr>
<td id="L809" class="blob-num js-line-number" data-line-number="809"></td>
<td id="LC809" class="blob-code blob-code-inner js-file-line"> o3 <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">charCodeAt</span>(i<span class="pl-k">++</span>);</td>
</tr>
<tr>
<td id="L810" class="blob-num js-line-number" data-line-number="810"></td>
<td id="LC810" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L811" class="blob-num js-line-number" data-line-number="811"></td>
<td id="LC811" class="blob-code blob-code-inner js-file-line"> bits <span class="pl-k">=</span> o1 <span class="pl-k"><<</span> <span class="pl-c1">16</span> <span class="pl-k">|</span> o2 <span class="pl-k"><<</span> <span class="pl-c1">8</span> <span class="pl-k">|</span> o3;</td>
</tr>
<tr>
<td id="L812" class="blob-num js-line-number" data-line-number="812"></td>
<td id="LC812" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L813" class="blob-num js-line-number" data-line-number="813"></td>
<td id="LC813" class="blob-code blob-code-inner js-file-line"> h1 <span class="pl-k">=</span> bits <span class="pl-k">>></span> <span class="pl-c1">18</span> <span class="pl-k">&</span> <span class="pl-c1">0x3f</span>;</td>
</tr>
<tr>
<td id="L814" class="blob-num js-line-number" data-line-number="814"></td>
<td id="LC814" class="blob-code blob-code-inner js-file-line"> h2 <span class="pl-k">=</span> bits <span class="pl-k">>></span> <span class="pl-c1">12</span> <span class="pl-k">&</span> <span class="pl-c1">0x3f</span>;</td>
</tr>
<tr>
<td id="L815" class="blob-num js-line-number" data-line-number="815"></td>
<td id="LC815" class="blob-code blob-code-inner js-file-line"> h3 <span class="pl-k">=</span> bits <span class="pl-k">>></span> <span class="pl-c1">6</span> <span class="pl-k">&</span> <span class="pl-c1">0x3f</span>;</td>
</tr>
<tr>
<td id="L816" class="blob-num js-line-number" data-line-number="816"></td>
<td id="LC816" class="blob-code blob-code-inner js-file-line"> h4 <span class="pl-k">=</span> bits <span class="pl-k">&</span> <span class="pl-c1">0x3f</span>;</td>
</tr>
<tr>
<td id="L817" class="blob-num js-line-number" data-line-number="817"></td>
<td id="LC817" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L818" class="blob-num js-line-number" data-line-number="818"></td>
<td id="LC818" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> use hexets to index into b64, and append result to encoded string</span></td>
</tr>
<tr>
<td id="L819" class="blob-num js-line-number" data-line-number="819"></td>
<td id="LC819" class="blob-code blob-code-inner js-file-line"> tmp_arr[ac<span class="pl-k">++</span>] <span class="pl-k">=</span> <span class="pl-smi">b64</span>.<span class="pl-c1">charAt</span>(h1) <span class="pl-k">+</span> <span class="pl-smi">b64</span>.<span class="pl-c1">charAt</span>(h2) <span class="pl-k">+</span> <span class="pl-smi">b64</span>.<span class="pl-c1">charAt</span>(h3) <span class="pl-k">+</span> <span class="pl-smi">b64</span>.<span class="pl-c1">charAt</span>(h4);</td>
</tr>
<tr>
<td id="L820" class="blob-num js-line-number" data-line-number="820"></td>
<td id="LC820" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">while</span> (i <span class="pl-k"><</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span>);</td>
</tr>
<tr>
<td id="L821" class="blob-num js-line-number" data-line-number="821"></td>
<td id="LC821" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L822" class="blob-num js-line-number" data-line-number="822"></td>
<td id="LC822" class="blob-code blob-code-inner js-file-line"> enc <span class="pl-k">=</span> <span class="pl-smi">tmp_arr</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L823" class="blob-num js-line-number" data-line-number="823"></td>
<td id="LC823" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L824" class="blob-num js-line-number" data-line-number="824"></td>
<td id="LC824" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> r <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span> <span class="pl-k">%</span> <span class="pl-c1">3</span>;</td>
</tr>
<tr>
<td id="L825" class="blob-num js-line-number" data-line-number="825"></td>
<td id="LC825" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L826" class="blob-num js-line-number" data-line-number="826"></td>
<td id="LC826" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (r <span class="pl-k">?</span> <span class="pl-smi">enc</span>.<span class="pl-c1">slice</span>(<span class="pl-c1">0</span>, r <span class="pl-k">-</span> <span class="pl-c1">3</span>) <span class="pl-k">:</span> enc) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>===<span class="pl-pds">'</span></span>.<span class="pl-c1">slice</span>(r <span class="pl-k">||</span> <span class="pl-c1">3</span>);</td>
</tr>
<tr>
<td id="L827" class="blob-num js-line-number" data-line-number="827"></td>
<td id="LC827" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L828" class="blob-num js-line-number" data-line-number="828"></td>
<td id="LC828" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L829" class="blob-num js-line-number" data-line-number="829"></td>
<td id="LC829" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L830" class="blob-num js-line-number" data-line-number="830"></td>
<td id="LC830" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L831" class="blob-num js-line-number" data-line-number="831"></td>
<td id="LC831" class="blob-code blob-code-inner js-file-line"> utf8_encode<span class="pl-k">:</span> utf8_encode,</td>
</tr>
<tr>
<td id="L832" class="blob-num js-line-number" data-line-number="832"></td>
<td id="LC832" class="blob-code blob-code-inner js-file-line"> utf8_decode<span class="pl-k">:</span> utf8_decode,</td>
</tr>
<tr>
<td id="L833" class="blob-num js-line-number" data-line-number="833"></td>
<td id="LC833" class="blob-code blob-code-inner js-file-line"> atob<span class="pl-k">:</span> atob,</td>
</tr>
<tr>
<td id="L834" class="blob-num js-line-number" data-line-number="834"></td>
<td id="LC834" class="blob-code blob-code-inner js-file-line"> btoa<span class="pl-k">:</span> btoa</td>
</tr>
<tr>
<td id="L835" class="blob-num js-line-number" data-line-number="835"></td>
<td id="LC835" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L836" class="blob-num js-line-number" data-line-number="836"></td>
<td id="LC836" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L837" class="blob-num js-line-number" data-line-number="837"></td>
<td id="LC837" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L838" class="blob-num js-line-number" data-line-number="838"></td>
<td id="LC838" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Env.js</span></td>
</tr>
<tr>
<td id="L839" class="blob-num js-line-number" data-line-number="839"></td>
<td id="LC839" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L840" class="blob-num js-line-number" data-line-number="840"></td>
<td id="LC840" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L841" class="blob-num js-line-number" data-line-number="841"></td>
<td id="LC841" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Env.js</span></td>
</tr>
<tr>
<td id="L842" class="blob-num js-line-number" data-line-number="842"></td>
<td id="LC842" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L843" class="blob-num js-line-number" data-line-number="843"></td>
<td id="LC843" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L844" class="blob-num js-line-number" data-line-number="844"></td>
<td id="LC844" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L845" class="blob-num js-line-number" data-line-number="845"></td>
<td id="LC845" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L846" class="blob-num js-line-number" data-line-number="846"></td>
<td id="LC846" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L847" class="blob-num js-line-number" data-line-number="847"></td>
<td id="LC847" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L848" class="blob-num js-line-number" data-line-number="848"></td>
<td id="LC848" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L849" class="blob-num js-line-number" data-line-number="849"></td>
<td id="LC849" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L850" class="blob-num js-line-number" data-line-number="850"></td>
<td id="LC850" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L851" class="blob-num js-line-number" data-line-number="851"></td>
<td id="LC851" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Env</span></td>
</tr>
<tr>
<td id="L852" class="blob-num js-line-number" data-line-number="852"></td>
<td id="LC852" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L853" class="blob-num js-line-number" data-line-number="853"></td>
<td id="LC853" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L854" class="blob-num js-line-number" data-line-number="854"></td>
<td id="LC854" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L855" class="blob-num js-line-number" data-line-number="855"></td>
<td id="LC855" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L856" class="blob-num js-line-number" data-line-number="856"></td>
<td id="LC856" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L857" class="blob-num js-line-number" data-line-number="857"></td>
<td id="LC857" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L858" class="blob-num js-line-number" data-line-number="858"></td>
<td id="LC858" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L859" class="blob-num js-line-number" data-line-number="859"></td>
<td id="LC859" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L860" class="blob-num js-line-number" data-line-number="860"></td>
<td id="LC860" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L861" class="blob-num js-line-number" data-line-number="861"></td>
<td id="LC861" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * UAParser.js v0.7.7</span></td>
</tr>
<tr>
<td id="L862" class="blob-num js-line-number" data-line-number="862"></td>
<td id="LC862" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Lightweight JavaScript-based User-Agent string parser</span></td>
</tr>
<tr>
<td id="L863" class="blob-num js-line-number" data-line-number="863"></td>
<td id="LC863" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * https://github.com/faisalman/ua-parser-js</span></td>
</tr>
<tr>
<td id="L864" class="blob-num js-line-number" data-line-number="864"></td>
<td id="LC864" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L865" class="blob-num js-line-number" data-line-number="865"></td>
<td id="LC865" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright © 2012-2015 Faisal Salman <[email protected]></span></td>
</tr>
<tr>
<td id="L866" class="blob-num js-line-number" data-line-number="866"></td>
<td id="LC866" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Dual licensed under GPLv2 & MIT</span></td>
</tr>
<tr>
<td id="L867" class="blob-num js-line-number" data-line-number="867"></td>
<td id="LC867" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L868" class="blob-num js-line-number" data-line-number="868"></td>
<td id="LC868" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> UAParser <span class="pl-k">=</span> (<span class="pl-k">function</span> (<span class="pl-c1">undefined</span>) {</td>
</tr>
<tr>
<td id="L869" class="blob-num js-line-number" data-line-number="869"></td>
<td id="LC869" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L870" class="blob-num js-line-number" data-line-number="870"></td>
<td id="LC870" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>////////////</span></td>
</tr>
<tr>
<td id="L871" class="blob-num js-line-number" data-line-number="871"></td>
<td id="LC871" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Constants</span></td>
</tr>
<tr>
<td id="L872" class="blob-num js-line-number" data-line-number="872"></td>
<td id="LC872" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>///////////</span></td>
</tr>
<tr>
<td id="L873" class="blob-num js-line-number" data-line-number="873"></td>
<td id="LC873" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L874" class="blob-num js-line-number" data-line-number="874"></td>
<td id="LC874" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L875" class="blob-num js-line-number" data-line-number="875"></td>
<td id="LC875" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">EMPTY</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L876" class="blob-num js-line-number" data-line-number="876"></td>
<td id="LC876" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">UNKNOWN</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>?<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L877" class="blob-num js-line-number" data-line-number="877"></td>
<td id="LC877" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FUNC_TYPE</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L878" class="blob-num js-line-number" data-line-number="878"></td>
<td id="LC878" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">UNDEF_TYPE</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L879" class="blob-num js-line-number" data-line-number="879"></td>
<td id="LC879" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">OBJ_TYPE</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L880" class="blob-num js-line-number" data-line-number="880"></td>
<td id="LC880" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">MAJOR</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>major<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L881" class="blob-num js-line-number" data-line-number="881"></td>
<td id="LC881" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">MODEL</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>model<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L882" class="blob-num js-line-number" data-line-number="882"></td>
<td id="LC882" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NAME</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>name<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L883" class="blob-num js-line-number" data-line-number="883"></td>
<td id="LC883" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">TYPE</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>type<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L884" class="blob-num js-line-number" data-line-number="884"></td>
<td id="LC884" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">VENDOR</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>vendor<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L885" class="blob-num js-line-number" data-line-number="885"></td>
<td id="LC885" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">VERSION</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>version<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L886" class="blob-num js-line-number" data-line-number="886"></td>
<td id="LC886" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">ARCHITECTURE</span><span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>architecture<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L887" class="blob-num js-line-number" data-line-number="887"></td>
<td id="LC887" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">CONSOLE</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>console<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L888" class="blob-num js-line-number" data-line-number="888"></td>
<td id="LC888" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">MOBILE</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>mobile<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L889" class="blob-num js-line-number" data-line-number="889"></td>
<td id="LC889" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">TABLET</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>tablet<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L890" class="blob-num js-line-number" data-line-number="890"></td>
<td id="LC890" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L891" class="blob-num js-line-number" data-line-number="891"></td>
<td id="LC891" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L892" class="blob-num js-line-number" data-line-number="892"></td>
<td id="LC892" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>/////////</span></td>
</tr>
<tr>
<td id="L893" class="blob-num js-line-number" data-line-number="893"></td>
<td id="LC893" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Helper</span></td>
</tr>
<tr>
<td id="L894" class="blob-num js-line-number" data-line-number="894"></td>
<td id="LC894" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>////////</span></td>
</tr>
<tr>
<td id="L895" class="blob-num js-line-number" data-line-number="895"></td>
<td id="LC895" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L896" class="blob-num js-line-number" data-line-number="896"></td>
<td id="LC896" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L897" class="blob-num js-line-number" data-line-number="897"></td>
<td id="LC897" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> util <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L898" class="blob-num js-line-number" data-line-number="898"></td>
<td id="LC898" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">has</span> <span class="pl-k">:</span> <span class="pl-k">function</span> (<span class="pl-smi">str1</span>, <span class="pl-smi">str2</span>) {</td>
</tr>
<tr>
<td id="L899" class="blob-num js-line-number" data-line-number="899"></td>
<td id="LC899" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">str2</span>.<span class="pl-c1">toLowerCase</span>().<span class="pl-c1">indexOf</span>(<span class="pl-smi">str1</span>.<span class="pl-c1">toLowerCase</span>()) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L900" class="blob-num js-line-number" data-line-number="900"></td>
<td id="LC900" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L901" class="blob-num js-line-number" data-line-number="901"></td>
<td id="LC901" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">lowerize</span> <span class="pl-k">:</span> <span class="pl-k">function</span> (<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L902" class="blob-num js-line-number" data-line-number="902"></td>
<td id="LC902" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">str</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L903" class="blob-num js-line-number" data-line-number="903"></td>
<td id="LC903" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L904" class="blob-num js-line-number" data-line-number="904"></td>
<td id="LC904" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L905" class="blob-num js-line-number" data-line-number="905"></td>
<td id="LC905" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L906" class="blob-num js-line-number" data-line-number="906"></td>
<td id="LC906" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L907" class="blob-num js-line-number" data-line-number="907"></td>
<td id="LC907" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>/////////////</span></td>
</tr>
<tr>
<td id="L908" class="blob-num js-line-number" data-line-number="908"></td>
<td id="LC908" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Map helper</span></td>
</tr>
<tr>
<td id="L909" class="blob-num js-line-number" data-line-number="909"></td>
<td id="LC909" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>////////////</span></td>
</tr>
<tr>
<td id="L910" class="blob-num js-line-number" data-line-number="910"></td>
<td id="LC910" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L911" class="blob-num js-line-number" data-line-number="911"></td>
<td id="LC911" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L912" class="blob-num js-line-number" data-line-number="912"></td>
<td id="LC912" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mapper <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L913" class="blob-num js-line-number" data-line-number="913"></td>
<td id="LC913" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L914" class="blob-num js-line-number" data-line-number="914"></td>
<td id="LC914" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">rgx</span> <span class="pl-k">:</span> <span class="pl-k">function</span> () {</td>
</tr>
<tr>
<td id="L915" class="blob-num js-line-number" data-line-number="915"></td>
<td id="LC915" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L916" class="blob-num js-line-number" data-line-number="916"></td>
<td id="LC916" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> loop through all regexes maps</span></td>
</tr>
<tr>
<td id="L917" class="blob-num js-line-number" data-line-number="917"></td>
<td id="LC917" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> result, i <span class="pl-k">=</span> <span class="pl-c1">0</span>, j, k, p, q, matches, match, args <span class="pl-k">=</span> <span class="pl-c1">arguments</span>; i <span class="pl-k"><</span> <span class="pl-smi">args</span>.<span class="pl-c1">length</span>; i <span class="pl-k">+=</span> <span class="pl-c1">2</span>) {</td>
</tr>
<tr>
<td id="L918" class="blob-num js-line-number" data-line-number="918"></td>
<td id="LC918" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L919" class="blob-num js-line-number" data-line-number="919"></td>
<td id="LC919" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> regex <span class="pl-k">=</span> args[i], <span class="pl-c"><span class="pl-c">//</span> even sequence (0,2,4,..)</span></td>
</tr>
<tr>
<td id="L920" class="blob-num js-line-number" data-line-number="920"></td>
<td id="LC920" class="blob-code blob-code-inner js-file-line"> props <span class="pl-k">=</span> args[i <span class="pl-k">+</span> <span class="pl-c1">1</span>]; <span class="pl-c"><span class="pl-c">//</span> odd sequence (1,3,5,..)</span></td>
</tr>
<tr>
<td id="L921" class="blob-num js-line-number" data-line-number="921"></td>
<td id="LC921" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L922" class="blob-num js-line-number" data-line-number="922"></td>
<td id="LC922" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> construct object barebones</span></td>
</tr>
<tr>
<td id="L923" class="blob-num js-line-number" data-line-number="923"></td>
<td id="LC923" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(result) <span class="pl-k">===</span> <span class="pl-c1">UNDEF_TYPE</span>) {</td>
</tr>
<tr>
<td id="L924" class="blob-num js-line-number" data-line-number="924"></td>
<td id="LC924" class="blob-code blob-code-inner js-file-line"> result <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L925" class="blob-num js-line-number" data-line-number="925"></td>
<td id="LC925" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (p <span class="pl-k">in</span> props) {</td>
</tr>
<tr>
<td id="L926" class="blob-num js-line-number" data-line-number="926"></td>
<td id="LC926" class="blob-code blob-code-inner js-file-line"> q <span class="pl-k">=</span> props[p];</td>
</tr>
<tr>
<td id="L927" class="blob-num js-line-number" data-line-number="927"></td>
<td id="LC927" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(q) <span class="pl-k">===</span> <span class="pl-c1">OBJ_TYPE</span>) {</td>
</tr>
<tr>
<td id="L928" class="blob-num js-line-number" data-line-number="928"></td>
<td id="LC928" class="blob-code blob-code-inner js-file-line"> result[q[<span class="pl-c1">0</span>]] <span class="pl-k">=</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L929" class="blob-num js-line-number" data-line-number="929"></td>
<td id="LC929" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L930" class="blob-num js-line-number" data-line-number="930"></td>
<td id="LC930" class="blob-code blob-code-inner js-file-line"> result[q] <span class="pl-k">=</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L931" class="blob-num js-line-number" data-line-number="931"></td>
<td id="LC931" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L932" class="blob-num js-line-number" data-line-number="932"></td>
<td id="LC932" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L933" class="blob-num js-line-number" data-line-number="933"></td>
<td id="LC933" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L934" class="blob-num js-line-number" data-line-number="934"></td>
<td id="LC934" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L935" class="blob-num js-line-number" data-line-number="935"></td>
<td id="LC935" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> try matching uastring with regexes</span></td>
</tr>
<tr>
<td id="L936" class="blob-num js-line-number" data-line-number="936"></td>
<td id="LC936" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (j <span class="pl-k">=</span> k <span class="pl-k">=</span> <span class="pl-c1">0</span>; j <span class="pl-k"><</span> <span class="pl-smi">regex</span>.<span class="pl-c1">length</span>; j<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L937" class="blob-num js-line-number" data-line-number="937"></td>
<td id="LC937" class="blob-code blob-code-inner js-file-line"> matches <span class="pl-k">=</span> regex[j].<span class="pl-c1">exec</span>(<span class="pl-c1">this</span>.<span class="pl-en">getUA</span>());</td>
</tr>
<tr>
<td id="L938" class="blob-num js-line-number" data-line-number="938"></td>
<td id="LC938" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span>matches) {</td>
</tr>
<tr>
<td id="L939" class="blob-num js-line-number" data-line-number="939"></td>
<td id="LC939" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (p <span class="pl-k">=</span> <span class="pl-c1">0</span>; p <span class="pl-k"><</span> <span class="pl-smi">props</span>.<span class="pl-c1">length</span>; p<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L940" class="blob-num js-line-number" data-line-number="940"></td>
<td id="LC940" class="blob-code blob-code-inner js-file-line"> match <span class="pl-k">=</span> matches[<span class="pl-k">++</span>k];</td>
</tr>
<tr>
<td id="L941" class="blob-num js-line-number" data-line-number="941"></td>
<td id="LC941" class="blob-code blob-code-inner js-file-line"> q <span class="pl-k">=</span> props[p];</td>
</tr>
<tr>
<td id="L942" class="blob-num js-line-number" data-line-number="942"></td>
<td id="LC942" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if given property is actually array</span></td>
</tr>
<tr>
<td id="L943" class="blob-num js-line-number" data-line-number="943"></td>
<td id="LC943" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(q) <span class="pl-k">===</span> <span class="pl-c1">OBJ_TYPE</span> <span class="pl-k">&&</span> <span class="pl-smi">q</span>.<span class="pl-c1">length</span> <span class="pl-k">></span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L944" class="blob-num js-line-number" data-line-number="944"></td>
<td id="LC944" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">q</span>.<span class="pl-c1">length</span> <span class="pl-k">==</span> <span class="pl-c1">2</span>) {</td>
</tr>
<tr>
<td id="L945" class="blob-num js-line-number" data-line-number="945"></td>
<td id="LC945" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(q[<span class="pl-c1">1</span>]) <span class="pl-k">==</span> <span class="pl-c1">FUNC_TYPE</span>) {</td>
</tr>
<tr>
<td id="L946" class="blob-num js-line-number" data-line-number="946"></td>
<td id="LC946" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> assign modified match</span></td>
</tr>
<tr>
<td id="L947" class="blob-num js-line-number" data-line-number="947"></td>
<td id="LC947" class="blob-code blob-code-inner js-file-line"> result[q[<span class="pl-c1">0</span>]] <span class="pl-k">=</span> q[<span class="pl-c1">1</span>].<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, match);</td>
</tr>
<tr>
<td id="L948" class="blob-num js-line-number" data-line-number="948"></td>
<td id="LC948" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L949" class="blob-num js-line-number" data-line-number="949"></td>
<td id="LC949" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> assign given value, ignore regex match</span></td>
</tr>
<tr>
<td id="L950" class="blob-num js-line-number" data-line-number="950"></td>
<td id="LC950" class="blob-code blob-code-inner js-file-line"> result[q[<span class="pl-c1">0</span>]] <span class="pl-k">=</span> q[<span class="pl-c1">1</span>];</td>
</tr>
<tr>
<td id="L951" class="blob-num js-line-number" data-line-number="951"></td>
<td id="LC951" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L952" class="blob-num js-line-number" data-line-number="952"></td>
<td id="LC952" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">q</span>.<span class="pl-c1">length</span> <span class="pl-k">==</span> <span class="pl-c1">3</span>) {</td>
</tr>
<tr>
<td id="L953" class="blob-num js-line-number" data-line-number="953"></td>
<td id="LC953" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check whether function or regex</span></td>
</tr>
<tr>
<td id="L954" class="blob-num js-line-number" data-line-number="954"></td>
<td id="LC954" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(q[<span class="pl-c1">1</span>]) <span class="pl-k">===</span> <span class="pl-c1">FUNC_TYPE</span> <span class="pl-k">&&</span> <span class="pl-k">!</span>(q[<span class="pl-c1">1</span>].<span class="pl-smi">exec</span> <span class="pl-k">&&</span> q[<span class="pl-c1">1</span>].<span class="pl-smi">test</span>)) {</td>
</tr>
<tr>
<td id="L955" class="blob-num js-line-number" data-line-number="955"></td>
<td id="LC955" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> call function (usually string mapper)</span></td>
</tr>
<tr>
<td id="L956" class="blob-num js-line-number" data-line-number="956"></td>
<td id="LC956" class="blob-code blob-code-inner js-file-line"> result[q[<span class="pl-c1">0</span>]] <span class="pl-k">=</span> match <span class="pl-k">?</span> q[<span class="pl-c1">1</span>].<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, match, q[<span class="pl-c1">2</span>]) <span class="pl-k">:</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L957" class="blob-num js-line-number" data-line-number="957"></td>
<td id="LC957" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L958" class="blob-num js-line-number" data-line-number="958"></td>
<td id="LC958" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> sanitize match using given regex</span></td>
</tr>
<tr>
<td id="L959" class="blob-num js-line-number" data-line-number="959"></td>
<td id="LC959" class="blob-code blob-code-inner js-file-line"> result[q[<span class="pl-c1">0</span>]] <span class="pl-k">=</span> match <span class="pl-k">?</span> <span class="pl-smi">match</span>.<span class="pl-c1">replace</span>(q[<span class="pl-c1">1</span>], q[<span class="pl-c1">2</span>]) <span class="pl-k">:</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L960" class="blob-num js-line-number" data-line-number="960"></td>
<td id="LC960" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L961" class="blob-num js-line-number" data-line-number="961"></td>
<td id="LC961" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">q</span>.<span class="pl-c1">length</span> <span class="pl-k">==</span> <span class="pl-c1">4</span>) {</td>
</tr>
<tr>
<td id="L962" class="blob-num js-line-number" data-line-number="962"></td>
<td id="LC962" class="blob-code blob-code-inner js-file-line"> result[q[<span class="pl-c1">0</span>]] <span class="pl-k">=</span> match <span class="pl-k">?</span> q[<span class="pl-c1">3</span>].<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">match</span>.<span class="pl-c1">replace</span>(q[<span class="pl-c1">1</span>], q[<span class="pl-c1">2</span>])) <span class="pl-k">:</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L963" class="blob-num js-line-number" data-line-number="963"></td>
<td id="LC963" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L964" class="blob-num js-line-number" data-line-number="964"></td>
<td id="LC964" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L965" class="blob-num js-line-number" data-line-number="965"></td>
<td id="LC965" class="blob-code blob-code-inner js-file-line"> result[q] <span class="pl-k">=</span> match <span class="pl-k">?</span> match <span class="pl-k">:</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L966" class="blob-num js-line-number" data-line-number="966"></td>
<td id="LC966" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L967" class="blob-num js-line-number" data-line-number="967"></td>
<td id="LC967" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L968" class="blob-num js-line-number" data-line-number="968"></td>
<td id="LC968" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L969" class="blob-num js-line-number" data-line-number="969"></td>
<td id="LC969" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L970" class="blob-num js-line-number" data-line-number="970"></td>
<td id="LC970" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L971" class="blob-num js-line-number" data-line-number="971"></td>
<td id="LC971" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L972" class="blob-num js-line-number" data-line-number="972"></td>
<td id="LC972" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span>(<span class="pl-k">!!</span>matches) <span class="pl-k">break</span>; <span class="pl-c"><span class="pl-c">//</span> break the loop immediately if match found</span></td>
</tr>
<tr>
<td id="L973" class="blob-num js-line-number" data-line-number="973"></td>
<td id="LC973" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L974" class="blob-num js-line-number" data-line-number="974"></td>
<td id="LC974" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> result;</td>
</tr>
<tr>
<td id="L975" class="blob-num js-line-number" data-line-number="975"></td>
<td id="LC975" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L976" class="blob-num js-line-number" data-line-number="976"></td>
<td id="LC976" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L977" class="blob-num js-line-number" data-line-number="977"></td>
<td id="LC977" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">str</span> <span class="pl-k">:</span> <span class="pl-k">function</span> (<span class="pl-smi">str</span>, <span class="pl-smi">map</span>) {</td>
</tr>
<tr>
<td id="L978" class="blob-num js-line-number" data-line-number="978"></td>
<td id="LC978" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L979" class="blob-num js-line-number" data-line-number="979"></td>
<td id="LC979" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">in</span> map) {</td>
</tr>
<tr>
<td id="L980" class="blob-num js-line-number" data-line-number="980"></td>
<td id="LC980" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if array</span></td>
</tr>
<tr>
<td id="L981" class="blob-num js-line-number" data-line-number="981"></td>
<td id="LC981" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(map[i]) <span class="pl-k">===</span> <span class="pl-c1">OBJ_TYPE</span> <span class="pl-k">&&</span> map[i].<span class="pl-c1">length</span> <span class="pl-k">></span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L982" class="blob-num js-line-number" data-line-number="982"></td>
<td id="LC982" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> j <span class="pl-k">=</span> <span class="pl-c1">0</span>; j <span class="pl-k"><</span> map[i].<span class="pl-c1">length</span>; j<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L983" class="blob-num js-line-number" data-line-number="983"></td>
<td id="LC983" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">util</span>.<span class="pl-c1">has</span>(map[i][j], str)) {</td>
</tr>
<tr>
<td id="L984" class="blob-num js-line-number" data-line-number="984"></td>
<td id="LC984" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (i <span class="pl-k">===</span> <span class="pl-c1">UNKNOWN</span>) <span class="pl-k">?</span> <span class="pl-c1">undefined</span> <span class="pl-k">:</span> i;</td>
</tr>
<tr>
<td id="L985" class="blob-num js-line-number" data-line-number="985"></td>
<td id="LC985" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L986" class="blob-num js-line-number" data-line-number="986"></td>
<td id="LC986" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L987" class="blob-num js-line-number" data-line-number="987"></td>
<td id="LC987" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">util</span>.<span class="pl-c1">has</span>(map[i], str)) {</td>
</tr>
<tr>
<td id="L988" class="blob-num js-line-number" data-line-number="988"></td>
<td id="LC988" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (i <span class="pl-k">===</span> <span class="pl-c1">UNKNOWN</span>) <span class="pl-k">?</span> <span class="pl-c1">undefined</span> <span class="pl-k">:</span> i;</td>
</tr>
<tr>
<td id="L989" class="blob-num js-line-number" data-line-number="989"></td>
<td id="LC989" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L990" class="blob-num js-line-number" data-line-number="990"></td>
<td id="LC990" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L991" class="blob-num js-line-number" data-line-number="991"></td>
<td id="LC991" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> str;</td>
</tr>
<tr>
<td id="L992" class="blob-num js-line-number" data-line-number="992"></td>
<td id="LC992" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L993" class="blob-num js-line-number" data-line-number="993"></td>
<td id="LC993" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L994" class="blob-num js-line-number" data-line-number="994"></td>
<td id="LC994" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L995" class="blob-num js-line-number" data-line-number="995"></td>
<td id="LC995" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L996" class="blob-num js-line-number" data-line-number="996"></td>
<td id="LC996" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>/////////////</span></td>
</tr>
<tr>
<td id="L997" class="blob-num js-line-number" data-line-number="997"></td>
<td id="LC997" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> String map</span></td>
</tr>
<tr>
<td id="L998" class="blob-num js-line-number" data-line-number="998"></td>
<td id="LC998" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>////////////</span></td>
</tr>
<tr>
<td id="L999" class="blob-num js-line-number" data-line-number="999"></td>
<td id="LC999" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1000" class="blob-num js-line-number" data-line-number="1000"></td>
<td id="LC1000" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1001" class="blob-num js-line-number" data-line-number="1001"></td>
<td id="LC1001" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> maps <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1002" class="blob-num js-line-number" data-line-number="1002"></td>
<td id="LC1002" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1003" class="blob-num js-line-number" data-line-number="1003"></td>
<td id="LC1003" class="blob-code blob-code-inner js-file-line"> browser <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1004" class="blob-num js-line-number" data-line-number="1004"></td>
<td id="LC1004" class="blob-code blob-code-inner js-file-line"> oldsafari <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1005" class="blob-num js-line-number" data-line-number="1005"></td>
<td id="LC1005" class="blob-code blob-code-inner js-file-line"> major <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1006" class="blob-num js-line-number" data-line-number="1006"></td>
<td id="LC1006" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>1<span class="pl-pds">'</span></span> <span class="pl-k">:</span> [<span class="pl-s"><span class="pl-pds">'</span>/8<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>/1<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>/3<span class="pl-pds">'</span></span>],</td>
</tr>
<tr>
<td id="L1007" class="blob-num js-line-number" data-line-number="1007"></td>
<td id="LC1007" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>2<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/4<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1008" class="blob-num js-line-number" data-line-number="1008"></td>
<td id="LC1008" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>?<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1009" class="blob-num js-line-number" data-line-number="1009"></td>
<td id="LC1009" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1010" class="blob-num js-line-number" data-line-number="1010"></td>
<td id="LC1010" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1011" class="blob-num js-line-number" data-line-number="1011"></td>
<td id="LC1011" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>1.0<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/8<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1012" class="blob-num js-line-number" data-line-number="1012"></td>
<td id="LC1012" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>1.2<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/1<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1013" class="blob-num js-line-number" data-line-number="1013"></td>
<td id="LC1013" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>1.3<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/3<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1014" class="blob-num js-line-number" data-line-number="1014"></td>
<td id="LC1014" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>2.0<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/412<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1015" class="blob-num js-line-number" data-line-number="1015"></td>
<td id="LC1015" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>2.0.2<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/416<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1016" class="blob-num js-line-number" data-line-number="1016"></td>
<td id="LC1016" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>2.0.3<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/417<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1017" class="blob-num js-line-number" data-line-number="1017"></td>
<td id="LC1017" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>2.0.4<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/419<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1018" class="blob-num js-line-number" data-line-number="1018"></td>
<td id="LC1018" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>?<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1019" class="blob-num js-line-number" data-line-number="1019"></td>
<td id="LC1019" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1020" class="blob-num js-line-number" data-line-number="1020"></td>
<td id="LC1020" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1021" class="blob-num js-line-number" data-line-number="1021"></td>
<td id="LC1021" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1022" class="blob-num js-line-number" data-line-number="1022"></td>
<td id="LC1022" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1023" class="blob-num js-line-number" data-line-number="1023"></td>
<td id="LC1023" class="blob-code blob-code-inner js-file-line"> device <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1024" class="blob-num js-line-number" data-line-number="1024"></td>
<td id="LC1024" class="blob-code blob-code-inner js-file-line"> sprint <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1025" class="blob-num js-line-number" data-line-number="1025"></td>
<td id="LC1025" class="blob-code blob-code-inner js-file-line"> model <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1026" class="blob-num js-line-number" data-line-number="1026"></td>
<td id="LC1026" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Evo Shift 4G<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>7373KT<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1027" class="blob-num js-line-number" data-line-number="1027"></td>
<td id="LC1027" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1028" class="blob-num js-line-number" data-line-number="1028"></td>
<td id="LC1028" class="blob-code blob-code-inner js-file-line"> vendor <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1029" class="blob-num js-line-number" data-line-number="1029"></td>
<td id="LC1029" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>HTC<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>APA<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1030" class="blob-num js-line-number" data-line-number="1030"></td>
<td id="LC1030" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Sprint<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Sprint<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1031" class="blob-num js-line-number" data-line-number="1031"></td>
<td id="LC1031" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1032" class="blob-num js-line-number" data-line-number="1032"></td>
<td id="LC1032" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1033" class="blob-num js-line-number" data-line-number="1033"></td>
<td id="LC1033" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1034" class="blob-num js-line-number" data-line-number="1034"></td>
<td id="LC1034" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1035" class="blob-num js-line-number" data-line-number="1035"></td>
<td id="LC1035" class="blob-code blob-code-inner js-file-line"> os <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1036" class="blob-num js-line-number" data-line-number="1036"></td>
<td id="LC1036" class="blob-code blob-code-inner js-file-line"> windows <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1037" class="blob-num js-line-number" data-line-number="1037"></td>
<td id="LC1037" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L1038" class="blob-num js-line-number" data-line-number="1038"></td>
<td id="LC1038" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>ME<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>4.90<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1039" class="blob-num js-line-number" data-line-number="1039"></td>
<td id="LC1039" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>NT 3.11<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT3.51<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1040" class="blob-num js-line-number" data-line-number="1040"></td>
<td id="LC1040" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>NT 4.0<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT4.0<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1041" class="blob-num js-line-number" data-line-number="1041"></td>
<td id="LC1041" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>2000<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT 5.0<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1042" class="blob-num js-line-number" data-line-number="1042"></td>
<td id="LC1042" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>XP<span class="pl-pds">'</span></span> <span class="pl-k">:</span> [<span class="pl-s"><span class="pl-pds">'</span>NT 5.1<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>NT 5.2<span class="pl-pds">'</span></span>],</td>
</tr>
<tr>
<td id="L1043" class="blob-num js-line-number" data-line-number="1043"></td>
<td id="LC1043" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Vista<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT 6.0<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1044" class="blob-num js-line-number" data-line-number="1044"></td>
<td id="LC1044" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>7<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT 6.1<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1045" class="blob-num js-line-number" data-line-number="1045"></td>
<td id="LC1045" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>8<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT 6.2<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1046" class="blob-num js-line-number" data-line-number="1046"></td>
<td id="LC1046" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>8.1<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>NT 6.3<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1047" class="blob-num js-line-number" data-line-number="1047"></td>
<td id="LC1047" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>RT<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ARM<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1048" class="blob-num js-line-number" data-line-number="1048"></td>
<td id="LC1048" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1049" class="blob-num js-line-number" data-line-number="1049"></td>
<td id="LC1049" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1050" class="blob-num js-line-number" data-line-number="1050"></td>
<td id="LC1050" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1051" class="blob-num js-line-number" data-line-number="1051"></td>
<td id="LC1051" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1052" class="blob-num js-line-number" data-line-number="1052"></td>
<td id="LC1052" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1053" class="blob-num js-line-number" data-line-number="1053"></td>
<td id="LC1053" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1054" class="blob-num js-line-number" data-line-number="1054"></td>
<td id="LC1054" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>////////////</span></td>
</tr>
<tr>
<td id="L1055" class="blob-num js-line-number" data-line-number="1055"></td>
<td id="LC1055" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Regex map</span></td>
</tr>
<tr>
<td id="L1056" class="blob-num js-line-number" data-line-number="1056"></td>
<td id="LC1056" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>///////////</span></td>
</tr>
<tr>
<td id="L1057" class="blob-num js-line-number" data-line-number="1057"></td>
<td id="LC1057" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1058" class="blob-num js-line-number" data-line-number="1058"></td>
<td id="LC1058" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1059" class="blob-num js-line-number" data-line-number="1059"></td>
<td id="LC1059" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> regexes <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1060" class="blob-num js-line-number" data-line-number="1060"></td>
<td id="LC1060" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1061" class="blob-num js-line-number" data-line-number="1061"></td>
<td id="LC1061" class="blob-code blob-code-inner js-file-line"> browser <span class="pl-k">:</span> [[</td>
</tr>
<tr>
<td id="L1062" class="blob-num js-line-number" data-line-number="1062"></td>
<td id="LC1062" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1063" class="blob-num js-line-number" data-line-number="1063"></td>
<td id="LC1063" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Presto based</span></td>
</tr>
<tr>
<td id="L1064" class="blob-num js-line-number" data-line-number="1064"></td>
<td id="LC1064" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(opera<span class="pl-c1">\s</span>mini)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>-]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Opera Mini</span></td>
</tr>
<tr>
<td id="L1065" class="blob-num js-line-number" data-line-number="1065"></td>
<td id="LC1065" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(opera<span class="pl-c1">\s</span><span class="pl-c1">[mobiletab]</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">+</span>version<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>-]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Opera Mobi/Tablet</span></td>
</tr>
<tr>
<td id="L1066" class="blob-num js-line-number" data-line-number="1066"></td>
<td id="LC1066" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(opera)<span class="pl-c1">.</span><span class="pl-k">+</span>version<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Opera > 9.80</span></td>
</tr>
<tr>
<td id="L1067" class="blob-num js-line-number" data-line-number="1067"></td>
<td id="LC1067" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(opera)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-k">+</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Opera < 9.80</span></td>
</tr>
<tr>
<td id="L1068" class="blob-num js-line-number" data-line-number="1068"></td>
<td id="LC1068" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1069" class="blob-num js-line-number" data-line-number="1069"></td>
<td id="LC1069" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1070" class="blob-num js-line-number" data-line-number="1070"></td>
<td id="LC1070" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1071" class="blob-num js-line-number" data-line-number="1071"></td>
<td id="LC1071" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-c1">\s</span>(opr)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Opera Webkit</span></td>
</tr>
<tr>
<td id="L1072" class="blob-num js-line-number" data-line-number="1072"></td>
<td id="LC1072" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Opera<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1073" class="blob-num js-line-number" data-line-number="1073"></td>
<td id="LC1073" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1074" class="blob-num js-line-number" data-line-number="1074"></td>
<td id="LC1074" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Mixed</span></td>
</tr>
<tr>
<td id="L1075" class="blob-num js-line-number" data-line-number="1075"></td>
<td id="LC1075" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(kindle)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Kindle</span></td>
</tr>
<tr>
<td id="L1076" class="blob-num js-line-number" data-line-number="1076"></td>
<td id="LC1076" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(lunascape<span class="pl-k">|</span>maxthon<span class="pl-k">|</span>netfront<span class="pl-k">|</span>jasmine<span class="pl-k">|</span>blazer)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1077" class="blob-num js-line-number" data-line-number="1077"></td>
<td id="LC1077" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Lunascape/Maxthon/Netfront/Jasmine/Blazer</span></td>
</tr>
<tr>
<td id="L1078" class="blob-num js-line-number" data-line-number="1078"></td>
<td id="LC1078" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1079" class="blob-num js-line-number" data-line-number="1079"></td>
<td id="LC1079" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Trident based</span></td>
</tr>
<tr>
<td id="L1080" class="blob-num js-line-number" data-line-number="1080"></td>
<td id="LC1080" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(avant<span class="pl-c1">\s</span><span class="pl-k">|</span>iemobile<span class="pl-k">|</span>slim<span class="pl-k">|</span>baidu)(?:browser)<span class="pl-k">?</span><span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">*</span>)<span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1081" class="blob-num js-line-number" data-line-number="1081"></td>
<td id="LC1081" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Avant/IEMobile/SlimBrowser/Baidu</span></td>
</tr>
<tr>
<td id="L1082" class="blob-num js-line-number" data-line-number="1082"></td>
<td id="LC1082" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(?:ms<span class="pl-k">|</span><span class="pl-cce">\(</span>)(ie)<span class="pl-c1">\s</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Internet Explorer</span></td>
</tr>
<tr>
<td id="L1083" class="blob-num js-line-number" data-line-number="1083"></td>
<td id="LC1083" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1084" class="blob-num js-line-number" data-line-number="1084"></td>
<td id="LC1084" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Webkit/KHTML based</span></td>
</tr>
<tr>
<td id="L1085" class="blob-num js-line-number" data-line-number="1085"></td>
<td id="LC1085" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(rekonq)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Rekonq</span></td>
</tr>
<tr>
<td id="L1086" class="blob-num js-line-number" data-line-number="1086"></td>
<td id="LC1086" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(chromium<span class="pl-k">|</span>flock<span class="pl-k">|</span>rockmelt<span class="pl-k">|</span>midori<span class="pl-k">|</span>epiphany<span class="pl-k">|</span>silk<span class="pl-k">|</span>skyfire<span class="pl-k">|</span>ovibrowser<span class="pl-k">|</span>bolt<span class="pl-k">|</span>iron<span class="pl-k">|</span>vivaldi)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>-]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span></td>
</tr>
<tr>
<td id="L1087" class="blob-num js-line-number" data-line-number="1087"></td>
<td id="LC1087" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron</span></td>
</tr>
<tr>
<td id="L1088" class="blob-num js-line-number" data-line-number="1088"></td>
<td id="LC1088" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1089" class="blob-num js-line-number" data-line-number="1089"></td>
<td id="LC1089" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1090" class="blob-num js-line-number" data-line-number="1090"></td>
<td id="LC1090" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(trident)<span class="pl-c1">.</span><span class="pl-k">+</span>rv<span class="pl-c1">[:<span class="pl-c1">\s</span>]</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">+</span>like<span class="pl-c1">\s</span>gecko<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> IE11</span></td>
</tr>
<tr>
<td id="L1091" class="blob-num js-line-number" data-line-number="1091"></td>
<td id="LC1091" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1092" class="blob-num js-line-number" data-line-number="1092"></td>
<td id="LC1092" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1093" class="blob-num js-line-number" data-line-number="1093"></td>
<td id="LC1093" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(edge)<span class="pl-cce">\/</span>((<span class="pl-c1">\d</span><span class="pl-k">+</span>)<span class="pl-k">?</span><span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Microsoft Edge</span></td>
</tr>
<tr>
<td id="L1094" class="blob-num js-line-number" data-line-number="1094"></td>
<td id="LC1094" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1095" class="blob-num js-line-number" data-line-number="1095"></td>
<td id="LC1095" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1096" class="blob-num js-line-number" data-line-number="1096"></td>
<td id="LC1096" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(yabrowser)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Yandex</span></td>
</tr>
<tr>
<td id="L1097" class="blob-num js-line-number" data-line-number="1097"></td>
<td id="LC1097" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Yandex<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1098" class="blob-num js-line-number" data-line-number="1098"></td>
<td id="LC1098" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1099" class="blob-num js-line-number" data-line-number="1099"></td>
<td id="LC1099" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(comodo_dragon)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Comodo Dragon</span></td>
</tr>
<tr>
<td id="L1100" class="blob-num js-line-number" data-line-number="1100"></td>
<td id="LC1100" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>,<span class="pl-sr"> <span class="pl-pds">/</span>_<span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span> <span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1101" class="blob-num js-line-number" data-line-number="1101"></td>
<td id="LC1101" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1102" class="blob-num js-line-number" data-line-number="1102"></td>
<td id="LC1102" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(chrome<span class="pl-k">|</span>omniweb<span class="pl-k">|</span>arora<span class="pl-k">|</span><span class="pl-c1">[tizenoka]</span><span class="pl-k">{5}</span><span class="pl-c1">\s</span><span class="pl-k">?</span>browser)<span class="pl-cce">\/</span>v<span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1103" class="blob-num js-line-number" data-line-number="1103"></td>
<td id="LC1103" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Chrome/OmniWeb/Arora/Tizen/Nokia</span></td>
</tr>
<tr>
<td id="L1104" class="blob-num js-line-number" data-line-number="1104"></td>
<td id="LC1104" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(uc<span class="pl-c1">\s</span><span class="pl-k">?</span>browser<span class="pl-k">|</span>qqbrowser)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span></td>
</tr>
<tr>
<td id="L1105" class="blob-num js-line-number" data-line-number="1105"></td>
<td id="LC1105" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> UCBrowser/QQBrowser</span></td>
</tr>
<tr>
<td id="L1106" class="blob-num js-line-number" data-line-number="1106"></td>
<td id="LC1106" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1107" class="blob-num js-line-number" data-line-number="1107"></td>
<td id="LC1107" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1108" class="blob-num js-line-number" data-line-number="1108"></td>
<td id="LC1108" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(dolfin)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Dolphin</span></td>
</tr>
<tr>
<td id="L1109" class="blob-num js-line-number" data-line-number="1109"></td>
<td id="LC1109" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Dolphin<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1110" class="blob-num js-line-number" data-line-number="1110"></td>
<td id="LC1110" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1111" class="blob-num js-line-number" data-line-number="1111"></td>
<td id="LC1111" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>((?:android<span class="pl-c1">.</span><span class="pl-k">+</span>)crmo<span class="pl-k">|</span>crios)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Chrome for Android/iOS</span></td>
</tr>
<tr>
<td id="L1112" class="blob-num js-line-number" data-line-number="1112"></td>
<td id="LC1112" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Chrome<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1113" class="blob-num js-line-number" data-line-number="1113"></td>
<td id="LC1113" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1114" class="blob-num js-line-number" data-line-number="1114"></td>
<td id="LC1114" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>XiaoMi<span class="pl-cce">\/</span>MiuiBrowser<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> MIUI Browser</span></td>
</tr>
<tr>
<td id="L1115" class="blob-num js-line-number" data-line-number="1115"></td>
<td id="LC1115" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, [<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>MIUI Browser<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1116" class="blob-num js-line-number" data-line-number="1116"></td>
<td id="LC1116" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1117" class="blob-num js-line-number" data-line-number="1117"></td>
<td id="LC1117" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>android<span class="pl-c1">.</span><span class="pl-k">+</span>version<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-c1">\s</span><span class="pl-k">+</span>(?:mobile<span class="pl-c1">\s</span><span class="pl-k">?</span>safari<span class="pl-k">|</span>safari)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Android Browser</span></td>
</tr>
<tr>
<td id="L1118" class="blob-num js-line-number" data-line-number="1118"></td>
<td id="LC1118" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, [<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Android Browser<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1119" class="blob-num js-line-number" data-line-number="1119"></td>
<td id="LC1119" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1120" class="blob-num js-line-number" data-line-number="1120"></td>
<td id="LC1120" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>FBAV<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>);<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Facebook App for iOS</span></td>
</tr>
<tr>
<td id="L1121" class="blob-num js-line-number" data-line-number="1121"></td>
<td id="LC1121" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, [<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Facebook<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1122" class="blob-num js-line-number" data-line-number="1122"></td>
<td id="LC1122" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1123" class="blob-num js-line-number" data-line-number="1123"></td>
<td id="LC1123" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>version<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">+?</span>mobile<span class="pl-cce">\/</span><span class="pl-c1">\w</span><span class="pl-k">+</span><span class="pl-c1">\s</span>(safari)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Mobile Safari</span></td>
</tr>
<tr>
<td id="L1124" class="blob-num js-line-number" data-line-number="1124"></td>
<td id="LC1124" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, [<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Mobile Safari<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1125" class="blob-num js-line-number" data-line-number="1125"></td>
<td id="LC1125" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1126" class="blob-num js-line-number" data-line-number="1126"></td>
<td id="LC1126" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>version<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">+?</span>(mobile<span class="pl-c1">\s</span><span class="pl-k">?</span>safari<span class="pl-k">|</span>safari)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Safari & Safari Mobile</span></td>
</tr>
<tr>
<td id="L1127" class="blob-num js-line-number" data-line-number="1127"></td>
<td id="LC1127" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, <span class="pl-c1">NAME</span>], [</td>
</tr>
<tr>
<td id="L1128" class="blob-num js-line-number" data-line-number="1128"></td>
<td id="LC1128" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1129" class="blob-num js-line-number" data-line-number="1129"></td>
<td id="LC1129" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>webkit<span class="pl-c1">.</span><span class="pl-k">+?</span>(mobile<span class="pl-c1">\s</span><span class="pl-k">?</span>safari<span class="pl-k">|</span>safari)(<span class="pl-cce">\/</span><span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Safari < 3.0</span></td>
</tr>
<tr>
<td id="L1130" class="blob-num js-line-number" data-line-number="1130"></td>
<td id="LC1130" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, [<span class="pl-c1">VERSION</span>, <span class="pl-smi">mapper</span>.<span class="pl-smi">str</span>, <span class="pl-smi">maps</span>.<span class="pl-smi">browser</span>.<span class="pl-smi">oldsafari</span>.<span class="pl-c1">version</span>]], [</td>
</tr>
<tr>
<td id="L1131" class="blob-num js-line-number" data-line-number="1131"></td>
<td id="LC1131" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1132" class="blob-num js-line-number" data-line-number="1132"></td>
<td id="LC1132" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(konqueror)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Konqueror</span></td>
</tr>
<tr>
<td id="L1133" class="blob-num js-line-number" data-line-number="1133"></td>
<td id="LC1133" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(webkit<span class="pl-k">|</span>khtml)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span></td>
</tr>
<tr>
<td id="L1134" class="blob-num js-line-number" data-line-number="1134"></td>
<td id="LC1134" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1135" class="blob-num js-line-number" data-line-number="1135"></td>
<td id="LC1135" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1136" class="blob-num js-line-number" data-line-number="1136"></td>
<td id="LC1136" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Gecko based</span></td>
</tr>
<tr>
<td id="L1137" class="blob-num js-line-number" data-line-number="1137"></td>
<td id="LC1137" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(navigator<span class="pl-k">|</span>netscape)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>-]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Netscape</span></td>
</tr>
<tr>
<td id="L1138" class="blob-num js-line-number" data-line-number="1138"></td>
<td id="LC1138" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Netscape<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1139" class="blob-num js-line-number" data-line-number="1139"></td>
<td id="LC1139" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(swiftfox)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Swiftfox</span></td>
</tr>
<tr>
<td id="L1140" class="blob-num js-line-number" data-line-number="1140"></td>
<td id="LC1140" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(icedragon<span class="pl-k">|</span>iceweasel<span class="pl-k">|</span>camino<span class="pl-k">|</span>chimera<span class="pl-k">|</span>fennec<span class="pl-k">|</span>maemo<span class="pl-c1">\s</span>browser<span class="pl-k">|</span>minimo<span class="pl-k">|</span>conkeror)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.\+</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1141" class="blob-num js-line-number" data-line-number="1141"></td>
<td id="LC1141" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror</span></td>
</tr>
<tr>
<td id="L1142" class="blob-num js-line-number" data-line-number="1142"></td>
<td id="LC1142" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(firefox<span class="pl-k">|</span>seamonkey<span class="pl-k">|</span>k-meleon<span class="pl-k">|</span>icecat<span class="pl-k">|</span>iceape<span class="pl-k">|</span>firebird<span class="pl-k">|</span>phoenix)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>-]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1143" class="blob-num js-line-number" data-line-number="1143"></td>
<td id="LC1143" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix</span></td>
</tr>
<tr>
<td id="L1144" class="blob-num js-line-number" data-line-number="1144"></td>
<td id="LC1144" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(mozilla)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">+</span>rv<span class="pl-cce">\:</span><span class="pl-c1">.</span><span class="pl-k">+</span>gecko<span class="pl-cce">\/</span><span class="pl-c1">\d</span><span class="pl-k">+</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Mozilla</span></td>
</tr>
<tr>
<td id="L1145" class="blob-num js-line-number" data-line-number="1145"></td>
<td id="LC1145" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1146" class="blob-num js-line-number" data-line-number="1146"></td>
<td id="LC1146" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Other</span></td>
</tr>
<tr>
<td id="L1147" class="blob-num js-line-number" data-line-number="1147"></td>
<td id="LC1147" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(polaris<span class="pl-k">|</span>lynx<span class="pl-k">|</span>dillo<span class="pl-k">|</span>icab<span class="pl-k">|</span>doris<span class="pl-k">|</span>amaya<span class="pl-k">|</span>w3m<span class="pl-k">|</span>netsurf)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1148" class="blob-num js-line-number" data-line-number="1148"></td>
<td id="LC1148" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf</span></td>
</tr>
<tr>
<td id="L1149" class="blob-num js-line-number" data-line-number="1149"></td>
<td id="LC1149" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(links)<span class="pl-c1">\s</span><span class="pl-cce">\(</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Links</span></td>
</tr>
<tr>
<td id="L1150" class="blob-num js-line-number" data-line-number="1150"></td>
<td id="LC1150" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(gobrowser)<span class="pl-cce">\/</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> GoBrowser</span></td>
</tr>
<tr>
<td id="L1151" class="blob-num js-line-number" data-line-number="1151"></td>
<td id="LC1151" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(ice<span class="pl-c1">\s</span><span class="pl-k">?</span>browser)<span class="pl-cce">\/</span>v<span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>_]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> ICE Browser</span></td>
</tr>
<tr>
<td id="L1152" class="blob-num js-line-number" data-line-number="1152"></td>
<td id="LC1152" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(mosaic)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Mosaic</span></td>
</tr>
<tr>
<td id="L1153" class="blob-num js-line-number" data-line-number="1153"></td>
<td id="LC1153" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>]</td>
</tr>
<tr>
<td id="L1154" class="blob-num js-line-number" data-line-number="1154"></td>
<td id="LC1154" class="blob-code blob-code-inner js-file-line"> ],</td>
</tr>
<tr>
<td id="L1155" class="blob-num js-line-number" data-line-number="1155"></td>
<td id="LC1155" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1156" class="blob-num js-line-number" data-line-number="1156"></td>
<td id="LC1156" class="blob-code blob-code-inner js-file-line"> engine <span class="pl-k">:</span> [[</td>
</tr>
<tr>
<td id="L1157" class="blob-num js-line-number" data-line-number="1157"></td>
<td id="LC1157" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1158" class="blob-num js-line-number" data-line-number="1158"></td>
<td id="LC1158" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>windows<span class="pl-c1">.</span><span class="pl-k">+</span><span class="pl-c1">\s</span>edge<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> EdgeHTML</span></td>
</tr>
<tr>
<td id="L1159" class="blob-num js-line-number" data-line-number="1159"></td>
<td id="LC1159" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, [<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>EdgeHTML<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1160" class="blob-num js-line-number" data-line-number="1160"></td>
<td id="LC1160" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1161" class="blob-num js-line-number" data-line-number="1161"></td>
<td id="LC1161" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(presto)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Presto</span></td>
</tr>
<tr>
<td id="L1162" class="blob-num js-line-number" data-line-number="1162"></td>
<td id="LC1162" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(webkit<span class="pl-k">|</span>trident<span class="pl-k">|</span>netfront<span class="pl-k">|</span>netsurf<span class="pl-k">|</span>amaya<span class="pl-k">|</span>lynx<span class="pl-k">|</span>w3m)<span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m</span></td>
</tr>
<tr>
<td id="L1163" class="blob-num js-line-number" data-line-number="1163"></td>
<td id="LC1163" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(khtml<span class="pl-k">|</span>tasman<span class="pl-k">|</span>links)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span><span class="pl-cce">\(</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> KHTML/Tasman/Links</span></td>
</tr>
<tr>
<td id="L1164" class="blob-num js-line-number" data-line-number="1164"></td>
<td id="LC1164" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(icab)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span>(<span class="pl-c1">[23]</span><span class="pl-cce">\.</span><span class="pl-c1">[<span class="pl-c1">\d</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> iCab</span></td>
</tr>
<tr>
<td id="L1165" class="blob-num js-line-number" data-line-number="1165"></td>
<td id="LC1165" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1166" class="blob-num js-line-number" data-line-number="1166"></td>
<td id="LC1166" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1167" class="blob-num js-line-number" data-line-number="1167"></td>
<td id="LC1167" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>rv<span class="pl-cce">\:</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">*</span>(gecko)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Gecko</span></td>
</tr>
<tr>
<td id="L1168" class="blob-num js-line-number" data-line-number="1168"></td>
<td id="LC1168" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">VERSION</span>, <span class="pl-c1">NAME</span>]</td>
</tr>
<tr>
<td id="L1169" class="blob-num js-line-number" data-line-number="1169"></td>
<td id="LC1169" class="blob-code blob-code-inner js-file-line"> ],</td>
</tr>
<tr>
<td id="L1170" class="blob-num js-line-number" data-line-number="1170"></td>
<td id="LC1170" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1171" class="blob-num js-line-number" data-line-number="1171"></td>
<td id="LC1171" class="blob-code blob-code-inner js-file-line"> os <span class="pl-k">:</span> [[</td>
</tr>
<tr>
<td id="L1172" class="blob-num js-line-number" data-line-number="1172"></td>
<td id="LC1172" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1173" class="blob-num js-line-number" data-line-number="1173"></td>
<td id="LC1173" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Windows based</span></td>
</tr>
<tr>
<td id="L1174" class="blob-num js-line-number" data-line-number="1174"></td>
<td id="LC1174" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>microsoft<span class="pl-c1">\s</span>(windows)<span class="pl-c1">\s</span>(vista<span class="pl-k">|</span>xp)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Windows (iTunes)</span></td>
</tr>
<tr>
<td id="L1175" class="blob-num js-line-number" data-line-number="1175"></td>
<td id="LC1175" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1176" class="blob-num js-line-number" data-line-number="1176"></td>
<td id="LC1176" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(windows)<span class="pl-c1">\s</span>nt<span class="pl-c1">\s</span>6<span class="pl-cce">\.</span>2;<span class="pl-c1">\s</span>(arm)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Windows RT</span></td>
</tr>
<tr>
<td id="L1177" class="blob-num js-line-number" data-line-number="1177"></td>
<td id="LC1177" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(windows<span class="pl-c1">\s</span>phone(?:<span class="pl-c1">\s</span>os)<span class="pl-k">*</span><span class="pl-k">|</span>windows<span class="pl-c1">\s</span>mobile<span class="pl-k">|</span>windows)<span class="pl-c1">[<span class="pl-c1">\s</span><span class="pl-cce">\/</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">[ntce<span class="pl-c1">\d</span><span class="pl-cce">\.</span><span class="pl-c1">\s</span>]</span><span class="pl-k">+</span><span class="pl-c1">\w</span>)<span class="pl-pds">/</span>i</span></td>
</tr>
<tr>
<td id="L1178" class="blob-num js-line-number" data-line-number="1178"></td>
<td id="LC1178" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, [<span class="pl-c1">VERSION</span>, <span class="pl-smi">mapper</span>.<span class="pl-smi">str</span>, <span class="pl-smi">maps</span>.<span class="pl-smi">os</span>.<span class="pl-smi">windows</span>.<span class="pl-c1">version</span>]], [</td>
</tr>
<tr>
<td id="L1179" class="blob-num js-line-number" data-line-number="1179"></td>
<td id="LC1179" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(win(?=3<span class="pl-k">|</span>9<span class="pl-k">|</span>n)<span class="pl-k">|</span>win<span class="pl-c1">\s</span>9x<span class="pl-c1">\s</span>)(<span class="pl-c1">[nt<span class="pl-c1">\d</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span></td>
</tr>
<tr>
<td id="L1180" class="blob-num js-line-number" data-line-number="1180"></td>
<td id="LC1180" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Windows<span class="pl-pds">'</span></span>], [<span class="pl-c1">VERSION</span>, <span class="pl-smi">mapper</span>.<span class="pl-smi">str</span>, <span class="pl-smi">maps</span>.<span class="pl-smi">os</span>.<span class="pl-smi">windows</span>.<span class="pl-c1">version</span>]], [</td>
</tr>
<tr>
<td id="L1181" class="blob-num js-line-number" data-line-number="1181"></td>
<td id="LC1181" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1182" class="blob-num js-line-number" data-line-number="1182"></td>
<td id="LC1182" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Mobile/Embedded OS</span></td>
</tr>
<tr>
<td id="L1183" class="blob-num js-line-number" data-line-number="1183"></td>
<td id="LC1183" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-cce">\(</span>(bb)(10);<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> BlackBerry 10</span></td>
</tr>
<tr>
<td id="L1184" class="blob-num js-line-number" data-line-number="1184"></td>
<td id="LC1184" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>BlackBerry<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1185" class="blob-num js-line-number" data-line-number="1185"></td>
<td id="LC1185" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(blackberry)<span class="pl-c1">\w</span><span class="pl-k">*</span><span class="pl-cce">\/</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Blackberry</span></td>
</tr>
<tr>
<td id="L1186" class="blob-num js-line-number" data-line-number="1186"></td>
<td id="LC1186" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(tizen)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>]</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Tizen</span></td>
</tr>
<tr>
<td id="L1187" class="blob-num js-line-number" data-line-number="1187"></td>
<td id="LC1187" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(android<span class="pl-k">|</span>webos<span class="pl-k">|</span>palm<span class="pl-cce">\o</span>s<span class="pl-k">|</span>qnx<span class="pl-k">|</span>bada<span class="pl-k">|</span>rim<span class="pl-c1">\s</span>tablet<span class="pl-c1">\s</span>os<span class="pl-k">|</span>meego<span class="pl-k">|</span>contiki)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>-]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1188" class="blob-num js-line-number" data-line-number="1188"></td>
<td id="LC1188" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki</span></td>
</tr>
<tr>
<td id="L1189" class="blob-num js-line-number" data-line-number="1189"></td>
<td id="LC1189" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>linux;<span class="pl-c1">.</span><span class="pl-k">+</span>(sailfish);<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Sailfish OS</span></td>
</tr>
<tr>
<td id="L1190" class="blob-num js-line-number" data-line-number="1190"></td>
<td id="LC1190" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1191" class="blob-num js-line-number" data-line-number="1191"></td>
<td id="LC1191" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(symbian<span class="pl-c1">\s</span><span class="pl-k">?</span>os<span class="pl-k">|</span>symbos<span class="pl-k">|</span>s60(?=;))<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>-]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Symbian</span></td>
</tr>
<tr>
<td id="L1192" class="blob-num js-line-number" data-line-number="1192"></td>
<td id="LC1192" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Symbian<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1193" class="blob-num js-line-number" data-line-number="1193"></td>
<td id="LC1193" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-cce">\(</span>(series40);<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Series 40</span></td>
</tr>
<tr>
<td id="L1194" class="blob-num js-line-number" data-line-number="1194"></td>
<td id="LC1194" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>], [</td>
</tr>
<tr>
<td id="L1195" class="blob-num js-line-number" data-line-number="1195"></td>
<td id="LC1195" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>mozilla<span class="pl-c1">.</span><span class="pl-k">+</span><span class="pl-cce">\(</span>mobile;<span class="pl-c1">.</span><span class="pl-k">+</span>gecko<span class="pl-c1">.</span><span class="pl-k">+</span>firefox<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Firefox OS</span></td>
</tr>
<tr>
<td id="L1196" class="blob-num js-line-number" data-line-number="1196"></td>
<td id="LC1196" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Firefox OS<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1197" class="blob-num js-line-number" data-line-number="1197"></td>
<td id="LC1197" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1198" class="blob-num js-line-number" data-line-number="1198"></td>
<td id="LC1198" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Console</span></td>
</tr>
<tr>
<td id="L1199" class="blob-num js-line-number" data-line-number="1199"></td>
<td id="LC1199" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(nintendo<span class="pl-k">|</span>playstation)<span class="pl-c1">\s</span>(<span class="pl-c1">[wids3portablevu]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Nintendo/Playstation</span></td>
</tr>
<tr>
<td id="L1200" class="blob-num js-line-number" data-line-number="1200"></td>
<td id="LC1200" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1201" class="blob-num js-line-number" data-line-number="1201"></td>
<td id="LC1201" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> GNU/Linux based</span></td>
</tr>
<tr>
<td id="L1202" class="blob-num js-line-number" data-line-number="1202"></td>
<td id="LC1202" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(mint)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span><span class="pl-cce">\(</span>]</span><span class="pl-k">?</span>(<span class="pl-c1">\w</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Mint</span></td>
</tr>
<tr>
<td id="L1203" class="blob-num js-line-number" data-line-number="1203"></td>
<td id="LC1203" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(mageia<span class="pl-k">|</span>vectorlinux)<span class="pl-c1">[;<span class="pl-c1">\s</span>]</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Mageia/VectorLinux</span></td>
</tr>
<tr>
<td id="L1204" class="blob-num js-line-number" data-line-number="1204"></td>
<td id="LC1204" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(joli<span class="pl-k">|</span><span class="pl-c1">[kxln]</span><span class="pl-k">?</span>ubuntu<span class="pl-k">|</span>debian<span class="pl-k">|</span><span class="pl-c1">[open]</span><span class="pl-k">*</span>suse<span class="pl-k">|</span>gentoo<span class="pl-k">|</span>arch<span class="pl-k">|</span>slackware<span class="pl-k">|</span>fedora<span class="pl-k">|</span>mandriva<span class="pl-k">|</span>centos<span class="pl-k">|</span>pclinuxos<span class="pl-k">|</span>redhat<span class="pl-k">|</span>zenwalk<span class="pl-k">|</span>linpus)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>-]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>-]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1205" class="blob-num js-line-number" data-line-number="1205"></td>
<td id="LC1205" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware</span></td>
</tr>
<tr>
<td id="L1206" class="blob-num js-line-number" data-line-number="1206"></td>
<td id="LC1206" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus</span></td>
</tr>
<tr>
<td id="L1207" class="blob-num js-line-number" data-line-number="1207"></td>
<td id="LC1207" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(hurd<span class="pl-k">|</span>linux)<span class="pl-c1">\s</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Hurd/Linux</span></td>
</tr>
<tr>
<td id="L1208" class="blob-num js-line-number" data-line-number="1208"></td>
<td id="LC1208" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(gnu)<span class="pl-c1">\s</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> GNU</span></td>
</tr>
<tr>
<td id="L1209" class="blob-num js-line-number" data-line-number="1209"></td>
<td id="LC1209" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1210" class="blob-num js-line-number" data-line-number="1210"></td>
<td id="LC1210" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1211" class="blob-num js-line-number" data-line-number="1211"></td>
<td id="LC1211" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(cros)<span class="pl-c1">\s</span><span class="pl-c1">[<span class="pl-c1">\w</span>]</span><span class="pl-k">+</span><span class="pl-c1">\s</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span><span class="pl-c1">\w</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Chromium OS</span></td>
</tr>
<tr>
<td id="L1212" class="blob-num js-line-number" data-line-number="1212"></td>
<td id="LC1212" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Chromium OS<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>],[</td>
</tr>
<tr>
<td id="L1213" class="blob-num js-line-number" data-line-number="1213"></td>
<td id="LC1213" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1214" class="blob-num js-line-number" data-line-number="1214"></td>
<td id="LC1214" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Solaris</span></td>
</tr>
<tr>
<td id="L1215" class="blob-num js-line-number" data-line-number="1215"></td>
<td id="LC1215" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(sunos)<span class="pl-c1">\s</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span><span class="pl-c1">\d</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Solaris</span></td>
</tr>
<tr>
<td id="L1216" class="blob-num js-line-number" data-line-number="1216"></td>
<td id="LC1216" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Solaris<span class="pl-pds">'</span></span>], <span class="pl-c1">VERSION</span>], [</td>
</tr>
<tr>
<td id="L1217" class="blob-num js-line-number" data-line-number="1217"></td>
<td id="LC1217" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1218" class="blob-num js-line-number" data-line-number="1218"></td>
<td id="LC1218" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> BSD based</span></td>
</tr>
<tr>
<td id="L1219" class="blob-num js-line-number" data-line-number="1219"></td>
<td id="LC1219" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-c1">\s</span>(<span class="pl-c1">[frentopc-]</span><span class="pl-k">{0,4}</span>bsd<span class="pl-k">|</span>dragonfly)<span class="pl-c1">\s</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly</span></td>
</tr>
<tr>
<td id="L1220" class="blob-num js-line-number" data-line-number="1220"></td>
<td id="LC1220" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>],[</td>
</tr>
<tr>
<td id="L1221" class="blob-num js-line-number" data-line-number="1221"></td>
<td id="LC1221" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1222" class="blob-num js-line-number" data-line-number="1222"></td>
<td id="LC1222" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(ip<span class="pl-c1">[honead]</span><span class="pl-k">+</span>)(?:<span class="pl-c1">.</span><span class="pl-k">*</span>os<span class="pl-c1">\s</span><span class="pl-k">*</span>(<span class="pl-c1">[<span class="pl-c1">\w</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-c1">\s</span>like<span class="pl-c1">\s</span>mac<span class="pl-k">|</span>;<span class="pl-c1">\s</span>opera)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> iOS</span></td>
</tr>
<tr>
<td id="L1223" class="blob-num js-line-number" data-line-number="1223"></td>
<td id="LC1223" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>iOS<span class="pl-pds">'</span></span>], [<span class="pl-c1">VERSION</span>,<span class="pl-sr"> <span class="pl-pds">/</span>_<span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1224" class="blob-num js-line-number" data-line-number="1224"></td>
<td id="LC1224" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1225" class="blob-num js-line-number" data-line-number="1225"></td>
<td id="LC1225" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(mac<span class="pl-c1">\s</span>os<span class="pl-c1">\s</span>x)<span class="pl-c1">\s</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w\s</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span><span class="pl-c1">\w</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1226" class="blob-num js-line-number" data-line-number="1226"></td>
<td id="LC1226" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(macintosh<span class="pl-k">|</span>mac(?=_powerpc)<span class="pl-c1">\s</span>)<span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> Mac OS</span></td>
</tr>
<tr>
<td id="L1227" class="blob-num js-line-number" data-line-number="1227"></td>
<td id="LC1227" class="blob-code blob-code-inner js-file-line"> ], [[<span class="pl-c1">NAME</span>, <span class="pl-s"><span class="pl-pds">'</span>Mac OS<span class="pl-pds">'</span></span>], [<span class="pl-c1">VERSION</span>,<span class="pl-sr"> <span class="pl-pds">/</span>_<span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span>]], [</td>
</tr>
<tr>
<td id="L1228" class="blob-num js-line-number" data-line-number="1228"></td>
<td id="LC1228" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1229" class="blob-num js-line-number" data-line-number="1229"></td>
<td id="LC1229" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Other</span></td>
</tr>
<tr>
<td id="L1230" class="blob-num js-line-number" data-line-number="1230"></td>
<td id="LC1230" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>((?:open)<span class="pl-k">?</span>solaris)<span class="pl-c1">[<span class="pl-cce">\/</span><span class="pl-c1">\s</span>-]</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Solaris</span></td>
</tr>
<tr>
<td id="L1231" class="blob-num js-line-number" data-line-number="1231"></td>
<td id="LC1231" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(haiku)<span class="pl-c1">\s</span>(<span class="pl-c1">\w</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> Haiku</span></td>
</tr>
<tr>
<td id="L1232" class="blob-num js-line-number" data-line-number="1232"></td>
<td id="LC1232" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(aix)<span class="pl-c1">\s</span>((<span class="pl-c1">\d</span>)(?=<span class="pl-cce">\.</span><span class="pl-k">|</span><span class="pl-cce">\)</span><span class="pl-k">|</span><span class="pl-c1">\s</span>)<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">*</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span>, <span class="pl-c"><span class="pl-c">//</span> AIX</span></td>
</tr>
<tr>
<td id="L1233" class="blob-num js-line-number" data-line-number="1233"></td>
<td id="LC1233" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(plan<span class="pl-c1">\s</span>9<span class="pl-k">|</span>minix<span class="pl-k">|</span>beos<span class="pl-k">|</span>os<span class="pl-cce">\/</span>2<span class="pl-k">|</span>amigaos<span class="pl-k">|</span>morphos<span class="pl-k">|</span>risc<span class="pl-c1">\s</span>os<span class="pl-k">|</span>openvms)<span class="pl-pds">/</span>i</span>,</td>
</tr>
<tr>
<td id="L1234" class="blob-num js-line-number" data-line-number="1234"></td>
<td id="LC1234" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS</span></td>
</tr>
<tr>
<td id="L1235" class="blob-num js-line-number" data-line-number="1235"></td>
<td id="LC1235" class="blob-code blob-code-inner js-file-line"><span class="pl-sr"> <span class="pl-pds">/</span>(unix)<span class="pl-c1">\s</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-cce">\.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">*</span><span class="pl-pds">/</span>i</span> <span class="pl-c"><span class="pl-c">//</span> UNIX</span></td>
</tr>
<tr>
<td id="L1236" class="blob-num js-line-number" data-line-number="1236"></td>
<td id="LC1236" class="blob-code blob-code-inner js-file-line"> ], [<span class="pl-c1">NAME</span>, <span class="pl-c1">VERSION</span>]</td>
</tr>
<tr>
<td id="L1237" class="blob-num js-line-number" data-line-number="1237"></td>
<td id="LC1237" class="blob-code blob-code-inner js-file-line"> ]</td>
</tr>
<tr>
<td id="L1238" class="blob-num js-line-number" data-line-number="1238"></td>
<td id="LC1238" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1239" class="blob-num js-line-number" data-line-number="1239"></td>
<td id="LC1239" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1240" class="blob-num js-line-number" data-line-number="1240"></td>
<td id="LC1240" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1241" class="blob-num js-line-number" data-line-number="1241"></td>
<td id="LC1241" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>///////////////</span></td>
</tr>
<tr>
<td id="L1242" class="blob-num js-line-number" data-line-number="1242"></td>
<td id="LC1242" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Constructor</span></td>
</tr>
<tr>
<td id="L1243" class="blob-num js-line-number" data-line-number="1243"></td>
<td id="LC1243" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>//////////////</span></td>
</tr>
<tr>
<td id="L1244" class="blob-num js-line-number" data-line-number="1244"></td>
<td id="LC1244" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1245" class="blob-num js-line-number" data-line-number="1245"></td>
<td id="LC1245" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1246" class="blob-num js-line-number" data-line-number="1246"></td>
<td id="LC1246" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">UAParser</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">uastring</span>) {</td>
</tr>
<tr>
<td id="L1247" class="blob-num js-line-number" data-line-number="1247"></td>
<td id="LC1247" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1248" class="blob-num js-line-number" data-line-number="1248"></td>
<td id="LC1248" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ua <span class="pl-k">=</span> uastring <span class="pl-k">||</span> ((<span class="pl-c1">window</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">navigator</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">navigator</span>.<span class="pl-c1">userAgent</span>) <span class="pl-k">?</span> <span class="pl-c1">window</span>.<span class="pl-smi">navigator</span>.<span class="pl-c1">userAgent</span> <span class="pl-k">:</span> <span class="pl-c1">EMPTY</span>);</td>
</tr>
<tr>
<td id="L1249" class="blob-num js-line-number" data-line-number="1249"></td>
<td id="LC1249" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1250" class="blob-num js-line-number" data-line-number="1250"></td>
<td id="LC1250" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getBrowser</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {</td>
</tr>
<tr>
<td id="L1251" class="blob-num js-line-number" data-line-number="1251"></td>
<td id="LC1251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">mapper</span>.<span class="pl-smi">rgx</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-smi">regexes</span>.<span class="pl-smi">browser</span>);</td>
</tr>
<tr>
<td id="L1252" class="blob-num js-line-number" data-line-number="1252"></td>
<td id="LC1252" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1253" class="blob-num js-line-number" data-line-number="1253"></td>
<td id="LC1253" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getEngine</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {</td>
</tr>
<tr>
<td id="L1254" class="blob-num js-line-number" data-line-number="1254"></td>
<td id="LC1254" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">mapper</span>.<span class="pl-smi">rgx</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-smi">regexes</span>.<span class="pl-smi">engine</span>);</td>
</tr>
<tr>
<td id="L1255" class="blob-num js-line-number" data-line-number="1255"></td>
<td id="LC1255" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1256" class="blob-num js-line-number" data-line-number="1256"></td>
<td id="LC1256" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getOS</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {</td>
</tr>
<tr>
<td id="L1257" class="blob-num js-line-number" data-line-number="1257"></td>
<td id="LC1257" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">mapper</span>.<span class="pl-smi">rgx</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-smi">regexes</span>.<span class="pl-smi">os</span>);</td>
</tr>
<tr>
<td id="L1258" class="blob-num js-line-number" data-line-number="1258"></td>
<td id="LC1258" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1259" class="blob-num js-line-number" data-line-number="1259"></td>
<td id="LC1259" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getResult</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1260" class="blob-num js-line-number" data-line-number="1260"></td>
<td id="LC1260" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1261" class="blob-num js-line-number" data-line-number="1261"></td>
<td id="LC1261" class="blob-code blob-code-inner js-file-line"> ua <span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-en">getUA</span>(),</td>
</tr>
<tr>
<td id="L1262" class="blob-num js-line-number" data-line-number="1262"></td>
<td id="LC1262" class="blob-code blob-code-inner js-file-line"> browser <span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-en">getBrowser</span>(),</td>
</tr>
<tr>
<td id="L1263" class="blob-num js-line-number" data-line-number="1263"></td>
<td id="LC1263" class="blob-code blob-code-inner js-file-line"> engine <span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-en">getEngine</span>(),</td>
</tr>
<tr>
<td id="L1264" class="blob-num js-line-number" data-line-number="1264"></td>
<td id="LC1264" class="blob-code blob-code-inner js-file-line"> os <span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-en">getOS</span>()</td>
</tr>
<tr>
<td id="L1265" class="blob-num js-line-number" data-line-number="1265"></td>
<td id="LC1265" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1266" class="blob-num js-line-number" data-line-number="1266"></td>
<td id="LC1266" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1267" class="blob-num js-line-number" data-line-number="1267"></td>
<td id="LC1267" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getUA</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {</td>
</tr>
<tr>
<td id="L1268" class="blob-num js-line-number" data-line-number="1268"></td>
<td id="LC1268" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> ua;</td>
</tr>
<tr>
<td id="L1269" class="blob-num js-line-number" data-line-number="1269"></td>
<td id="LC1269" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1270" class="blob-num js-line-number" data-line-number="1270"></td>
<td id="LC1270" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">setUA</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">uastring</span>) {</td>
</tr>
<tr>
<td id="L1271" class="blob-num js-line-number" data-line-number="1271"></td>
<td id="LC1271" class="blob-code blob-code-inner js-file-line"> ua <span class="pl-k">=</span> uastring;</td>
</tr>
<tr>
<td id="L1272" class="blob-num js-line-number" data-line-number="1272"></td>
<td id="LC1272" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L1273" class="blob-num js-line-number" data-line-number="1273"></td>
<td id="LC1273" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1274" class="blob-num js-line-number" data-line-number="1274"></td>
<td id="LC1274" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">setUA</span>(ua);</td>
</tr>
<tr>
<td id="L1275" class="blob-num js-line-number" data-line-number="1275"></td>
<td id="LC1275" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1276" class="blob-num js-line-number" data-line-number="1276"></td>
<td id="LC1276" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1277" class="blob-num js-line-number" data-line-number="1277"></td>
<td id="LC1277" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> UAParser;</td>
</tr>
<tr>
<td id="L1278" class="blob-num js-line-number" data-line-number="1278"></td>
<td id="LC1278" class="blob-code blob-code-inner js-file-line"> })();</td>
</tr>
<tr>
<td id="L1279" class="blob-num js-line-number" data-line-number="1279"></td>
<td id="LC1279" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1280" class="blob-num js-line-number" data-line-number="1280"></td>
<td id="LC1280" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1281" class="blob-num js-line-number" data-line-number="1281"></td>
<td id="LC1281" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">version_compare</span>(<span class="pl-smi">v1</span>, <span class="pl-smi">v2</span>, <span class="pl-smi">operator</span>) {</td>
</tr>
<tr>
<td id="L1282" class="blob-num js-line-number" data-line-number="1282"></td>
<td id="LC1282" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> From: http://phpjs.org/functions</span></td>
</tr>
<tr>
<td id="L1283" class="blob-num js-line-number" data-line-number="1283"></td>
<td id="LC1283" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + original by: Philippe Jausions (http://pear.php.net/user/jausions)</span></td>
</tr>
<tr>
<td id="L1284" class="blob-num js-line-number" data-line-number="1284"></td>
<td id="LC1284" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + original by: Aidan Lister (http://aidanlister.com/)</span></td>
</tr>
<tr>
<td id="L1285" class="blob-num js-line-number" data-line-number="1285"></td>
<td id="LC1285" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + reimplemented by: Kankrelune (http://www.webfaktory.info/)</span></td>
</tr>
<tr>
<td id="L1286" class="blob-num js-line-number" data-line-number="1286"></td>
<td id="LC1286" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Brett Zamir (http://brett-zamir.me)</span></td>
</tr>
<tr>
<td id="L1287" class="blob-num js-line-number" data-line-number="1287"></td>
<td id="LC1287" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Scott Baker</span></td>
</tr>
<tr>
<td id="L1288" class="blob-num js-line-number" data-line-number="1288"></td>
<td id="LC1288" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> + improved by: Theriault</span></td>
</tr>
<tr>
<td id="L1289" class="blob-num js-line-number" data-line-number="1289"></td>
<td id="LC1289" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * example 1: version_compare('8.2.5rc', '8.2.5a');</span></td>
</tr>
<tr>
<td id="L1290" class="blob-num js-line-number" data-line-number="1290"></td>
<td id="LC1290" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * returns 1: 1</span></td>
</tr>
<tr>
<td id="L1291" class="blob-num js-line-number" data-line-number="1291"></td>
<td id="LC1291" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * example 2: version_compare('8.2.50', '8.2.52', '<');</span></td>
</tr>
<tr>
<td id="L1292" class="blob-num js-line-number" data-line-number="1292"></td>
<td id="LC1292" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * returns 2: true</span></td>
</tr>
<tr>
<td id="L1293" class="blob-num js-line-number" data-line-number="1293"></td>
<td id="LC1293" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * example 3: version_compare('5.3.0-dev', '5.3.0');</span></td>
</tr>
<tr>
<td id="L1294" class="blob-num js-line-number" data-line-number="1294"></td>
<td id="LC1294" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * returns 3: -1</span></td>
</tr>
<tr>
<td id="L1295" class="blob-num js-line-number" data-line-number="1295"></td>
<td id="LC1295" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * example 4: version_compare('4.1.0.52','4.01.0.51');</span></td>
</tr>
<tr>
<td id="L1296" class="blob-num js-line-number" data-line-number="1296"></td>
<td id="LC1296" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> * returns 4: 1</span></td>
</tr>
<tr>
<td id="L1297" class="blob-num js-line-number" data-line-number="1297"></td>
<td id="LC1297" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1298" class="blob-num js-line-number" data-line-number="1298"></td>
<td id="LC1298" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Important: compare must be initialized at 0.</span></td>
</tr>
<tr>
<td id="L1299" class="blob-num js-line-number" data-line-number="1299"></td>
<td id="LC1299" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L1300" class="blob-num js-line-number" data-line-number="1300"></td>
<td id="LC1300" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L1301" class="blob-num js-line-number" data-line-number="1301"></td>
<td id="LC1301" class="blob-code blob-code-inner js-file-line"> compare <span class="pl-k">=</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L1302" class="blob-num js-line-number" data-line-number="1302"></td>
<td id="LC1302" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> vm maps textual PHP versions to negatives so they're less than 0.</span></td>
</tr>
<tr>
<td id="L1303" class="blob-num js-line-number" data-line-number="1303"></td>
<td id="LC1303" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> PHP currently defines these as CASE-SENSITIVE. It is important to</span></td>
</tr>
<tr>
<td id="L1304" class="blob-num js-line-number" data-line-number="1304"></td>
<td id="LC1304" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> leave these as negatives so that they can come before numerical versions</span></td>
</tr>
<tr>
<td id="L1305" class="blob-num js-line-number" data-line-number="1305"></td>
<td id="LC1305" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> and as if no letters were there to begin with.</span></td>
</tr>
<tr>
<td id="L1306" class="blob-num js-line-number" data-line-number="1306"></td>
<td id="LC1306" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> (1alpha is < 1 and < 1.1 but > 1dev1)</span></td>
</tr>
<tr>
<td id="L1307" class="blob-num js-line-number" data-line-number="1307"></td>
<td id="LC1307" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If a non-numerical value can't be mapped to this table, it receives</span></td>
</tr>
<tr>
<td id="L1308" class="blob-num js-line-number" data-line-number="1308"></td>
<td id="LC1308" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> -7 as its value.</span></td>
</tr>
<tr>
<td id="L1309" class="blob-num js-line-number" data-line-number="1309"></td>
<td id="LC1309" class="blob-code blob-code-inner js-file-line"> vm <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1310" class="blob-num js-line-number" data-line-number="1310"></td>
<td id="LC1310" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>dev<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">6</span>,</td>
</tr>
<tr>
<td id="L1311" class="blob-num js-line-number" data-line-number="1311"></td>
<td id="LC1311" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>alpha<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">5</span>,</td>
</tr>
<tr>
<td id="L1312" class="blob-num js-line-number" data-line-number="1312"></td>
<td id="LC1312" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>a<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">5</span>,</td>
</tr>
<tr>
<td id="L1313" class="blob-num js-line-number" data-line-number="1313"></td>
<td id="LC1313" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>beta<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">4</span>,</td>
</tr>
<tr>
<td id="L1314" class="blob-num js-line-number" data-line-number="1314"></td>
<td id="LC1314" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>b<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">4</span>,</td>
</tr>
<tr>
<td id="L1315" class="blob-num js-line-number" data-line-number="1315"></td>
<td id="LC1315" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>RC<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">3</span>,</td>
</tr>
<tr>
<td id="L1316" class="blob-num js-line-number" data-line-number="1316"></td>
<td id="LC1316" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>rc<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">3</span>,</td>
</tr>
<tr>
<td id="L1317" class="blob-num js-line-number" data-line-number="1317"></td>
<td id="LC1317" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>#<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">2</span>,</td>
</tr>
<tr>
<td id="L1318" class="blob-num js-line-number" data-line-number="1318"></td>
<td id="LC1318" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>p<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L1319" class="blob-num js-line-number" data-line-number="1319"></td>
<td id="LC1319" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>pl<span class="pl-pds">'</span></span><span class="pl-k">:</span> <span class="pl-c1">1</span></td>
</tr>
<tr>
<td id="L1320" class="blob-num js-line-number" data-line-number="1320"></td>
<td id="LC1320" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1321" class="blob-num js-line-number" data-line-number="1321"></td>
<td id="LC1321" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> This function will be called to prepare each version argument.</span></td>
</tr>
<tr>
<td id="L1322" class="blob-num js-line-number" data-line-number="1322"></td>
<td id="LC1322" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> It replaces every _, -, and + with a dot.</span></td>
</tr>
<tr>
<td id="L1323" class="blob-num js-line-number" data-line-number="1323"></td>
<td id="LC1323" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> It surrounds any nonsequence of numbers/dots with dots.</span></td>
</tr>
<tr>
<td id="L1324" class="blob-num js-line-number" data-line-number="1324"></td>
<td id="LC1324" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> It replaces sequences of dots with a single dot.</span></td>
</tr>
<tr>
<td id="L1325" class="blob-num js-line-number" data-line-number="1325"></td>
<td id="LC1325" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> version_compare('4..0', '4.0') == 0</span></td>
</tr>
<tr>
<td id="L1326" class="blob-num js-line-number" data-line-number="1326"></td>
<td id="LC1326" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Important: A string of 0 length needs to be converted into a value</span></td>
</tr>
<tr>
<td id="L1327" class="blob-num js-line-number" data-line-number="1327"></td>
<td id="LC1327" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> even less than an unexisting value in vm (-7), hence [-8].</span></td>
</tr>
<tr>
<td id="L1328" class="blob-num js-line-number" data-line-number="1328"></td>
<td id="LC1328" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> It's also important to not strip spaces because of this.</span></td>
</tr>
<tr>
<td id="L1329" class="blob-num js-line-number" data-line-number="1329"></td>
<td id="LC1329" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> version_compare('', ' ') == 1</span></td>
</tr>
<tr>
<td id="L1330" class="blob-num js-line-number" data-line-number="1330"></td>
<td id="LC1330" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">prepVersion</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">v</span>) {</td>
</tr>
<tr>
<td id="L1331" class="blob-num js-line-number" data-line-number="1331"></td>
<td id="LC1331" class="blob-code blob-code-inner js-file-line"> v <span class="pl-k">=</span> (<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span> <span class="pl-k">+</span> v).<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">[_<span class="pl-c1">\-+</span>]</span><span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1332" class="blob-num js-line-number" data-line-number="1332"></td>
<td id="LC1332" class="blob-code blob-code-inner js-file-line"> v <span class="pl-k">=</span> <span class="pl-smi">v</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>(<span class="pl-c1">[<span class="pl-k">^</span><span class="pl-c1">.\d</span>]</span><span class="pl-k">+</span>)<span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>.$1.<span class="pl-pds">'</span></span>).<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\.</span><span class="pl-k">{2,}</span><span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1333" class="blob-num js-line-number" data-line-number="1333"></td>
<td id="LC1333" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-k">!</span><span class="pl-smi">v</span>.<span class="pl-c1">length</span> <span class="pl-k">?</span> [<span class="pl-k">-</span><span class="pl-c1">8</span>] <span class="pl-k">:</span> <span class="pl-smi">v</span>.<span class="pl-c1">split</span>(<span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L1334" class="blob-num js-line-number" data-line-number="1334"></td>
<td id="LC1334" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1335" class="blob-num js-line-number" data-line-number="1335"></td>
<td id="LC1335" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> This converts a version component to a number.</span></td>
</tr>
<tr>
<td id="L1336" class="blob-num js-line-number" data-line-number="1336"></td>
<td id="LC1336" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Empty component becomes 0.</span></td>
</tr>
<tr>
<td id="L1337" class="blob-num js-line-number" data-line-number="1337"></td>
<td id="LC1337" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Non-numerical component becomes a negative number.</span></td>
</tr>
<tr>
<td id="L1338" class="blob-num js-line-number" data-line-number="1338"></td>
<td id="LC1338" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Numerical component becomes itself as an integer.</span></td>
</tr>
<tr>
<td id="L1339" class="blob-num js-line-number" data-line-number="1339"></td>
<td id="LC1339" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">numVersion</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">v</span>) {</td>
</tr>
<tr>
<td id="L1340" class="blob-num js-line-number" data-line-number="1340"></td>
<td id="LC1340" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span>v <span class="pl-k">?</span> <span class="pl-c1">0</span> <span class="pl-k">:</span> (<span class="pl-c1">isNaN</span>(v) <span class="pl-k">?</span> vm[v] <span class="pl-k">||</span> <span class="pl-k">-</span><span class="pl-c1">7</span> <span class="pl-k">:</span> <span class="pl-c1">parseInt</span>(v, <span class="pl-c1">10</span>));</td>
</tr>
<tr>
<td id="L1341" class="blob-num js-line-number" data-line-number="1341"></td>
<td id="LC1341" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1342" class="blob-num js-line-number" data-line-number="1342"></td>
<td id="LC1342" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1343" class="blob-num js-line-number" data-line-number="1343"></td>
<td id="LC1343" class="blob-code blob-code-inner js-file-line"> v1 <span class="pl-k">=</span> <span class="pl-en">prepVersion</span>(v1);</td>
</tr>
<tr>
<td id="L1344" class="blob-num js-line-number" data-line-number="1344"></td>
<td id="LC1344" class="blob-code blob-code-inner js-file-line"> v2 <span class="pl-k">=</span> <span class="pl-en">prepVersion</span>(v2);</td>
</tr>
<tr>
<td id="L1345" class="blob-num js-line-number" data-line-number="1345"></td>
<td id="LC1345" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">max</span>(<span class="pl-smi">v1</span>.<span class="pl-c1">length</span>, <span class="pl-smi">v2</span>.<span class="pl-c1">length</span>);</td>
</tr>
<tr>
<td id="L1346" class="blob-num js-line-number" data-line-number="1346"></td>
<td id="LC1346" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> x; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L1347" class="blob-num js-line-number" data-line-number="1347"></td>
<td id="LC1347" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (v1[i] <span class="pl-k">==</span> v2[i]) {</td>
</tr>
<tr>
<td id="L1348" class="blob-num js-line-number" data-line-number="1348"></td>
<td id="LC1348" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">continue</span>;</td>
</tr>
<tr>
<td id="L1349" class="blob-num js-line-number" data-line-number="1349"></td>
<td id="LC1349" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1350" class="blob-num js-line-number" data-line-number="1350"></td>
<td id="LC1350" class="blob-code blob-code-inner js-file-line"> v1[i] <span class="pl-k">=</span> <span class="pl-en">numVersion</span>(v1[i]);</td>
</tr>
<tr>
<td id="L1351" class="blob-num js-line-number" data-line-number="1351"></td>
<td id="LC1351" class="blob-code blob-code-inner js-file-line"> v2[i] <span class="pl-k">=</span> <span class="pl-en">numVersion</span>(v2[i]);</td>
</tr>
<tr>
<td id="L1352" class="blob-num js-line-number" data-line-number="1352"></td>
<td id="LC1352" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (v1[i] <span class="pl-k"><</span> v2[i]) {</td>
</tr>
<tr>
<td id="L1353" class="blob-num js-line-number" data-line-number="1353"></td>
<td id="LC1353" class="blob-code blob-code-inner js-file-line"> compare <span class="pl-k">=</span> <span class="pl-k">-</span><span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L1354" class="blob-num js-line-number" data-line-number="1354"></td>
<td id="LC1354" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L1355" class="blob-num js-line-number" data-line-number="1355"></td>
<td id="LC1355" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (v1[i] <span class="pl-k">></span> v2[i]) {</td>
</tr>
<tr>
<td id="L1356" class="blob-num js-line-number" data-line-number="1356"></td>
<td id="LC1356" class="blob-code blob-code-inner js-file-line"> compare <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L1357" class="blob-num js-line-number" data-line-number="1357"></td>
<td id="LC1357" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L1358" class="blob-num js-line-number" data-line-number="1358"></td>
<td id="LC1358" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1359" class="blob-num js-line-number" data-line-number="1359"></td>
<td id="LC1359" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1360" class="blob-num js-line-number" data-line-number="1360"></td>
<td id="LC1360" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>operator) {</td>
</tr>
<tr>
<td id="L1361" class="blob-num js-line-number" data-line-number="1361"></td>
<td id="LC1361" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> compare;</td>
</tr>
<tr>
<td id="L1362" class="blob-num js-line-number" data-line-number="1362"></td>
<td id="LC1362" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1363" class="blob-num js-line-number" data-line-number="1363"></td>
<td id="LC1363" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1364" class="blob-num js-line-number" data-line-number="1364"></td>
<td id="LC1364" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Important: operator is CASE-SENSITIVE.</span></td>
</tr>
<tr>
<td id="L1365" class="blob-num js-line-number" data-line-number="1365"></td>
<td id="LC1365" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> "No operator" seems to be treated as "<."</span></td>
</tr>
<tr>
<td id="L1366" class="blob-num js-line-number" data-line-number="1366"></td>
<td id="LC1366" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Any other values seem to make the function return null.</span></td>
</tr>
<tr>
<td id="L1367" class="blob-num js-line-number" data-line-number="1367"></td>
<td id="LC1367" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (operator) {</td>
</tr>
<tr>
<td id="L1368" class="blob-num js-line-number" data-line-number="1368"></td>
<td id="LC1368" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>><span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1369" class="blob-num js-line-number" data-line-number="1369"></td>
<td id="LC1369" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>gt<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1370" class="blob-num js-line-number" data-line-number="1370"></td>
<td id="LC1370" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (compare <span class="pl-k">></span> <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L1371" class="blob-num js-line-number" data-line-number="1371"></td>
<td id="LC1371" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>>=<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1372" class="blob-num js-line-number" data-line-number="1372"></td>
<td id="LC1372" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>ge<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1373" class="blob-num js-line-number" data-line-number="1373"></td>
<td id="LC1373" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (compare <span class="pl-k">>=</span> <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L1374" class="blob-num js-line-number" data-line-number="1374"></td>
<td id="LC1374" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span><=<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1375" class="blob-num js-line-number" data-line-number="1375"></td>
<td id="LC1375" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>le<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1376" class="blob-num js-line-number" data-line-number="1376"></td>
<td id="LC1376" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (compare <span class="pl-k"><=</span> <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L1377" class="blob-num js-line-number" data-line-number="1377"></td>
<td id="LC1377" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>==<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1378" class="blob-num js-line-number" data-line-number="1378"></td>
<td id="LC1378" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>=<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1379" class="blob-num js-line-number" data-line-number="1379"></td>
<td id="LC1379" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>eq<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1380" class="blob-num js-line-number" data-line-number="1380"></td>
<td id="LC1380" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (compare <span class="pl-k">===</span> <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L1381" class="blob-num js-line-number" data-line-number="1381"></td>
<td id="LC1381" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span><><span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1382" class="blob-num js-line-number" data-line-number="1382"></td>
<td id="LC1382" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>!=<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1383" class="blob-num js-line-number" data-line-number="1383"></td>
<td id="LC1383" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>ne<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1384" class="blob-num js-line-number" data-line-number="1384"></td>
<td id="LC1384" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (compare <span class="pl-k">!==</span> <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L1385" class="blob-num js-line-number" data-line-number="1385"></td>
<td id="LC1385" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1386" class="blob-num js-line-number" data-line-number="1386"></td>
<td id="LC1386" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1387" class="blob-num js-line-number" data-line-number="1387"></td>
<td id="LC1387" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>lt<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L1388" class="blob-num js-line-number" data-line-number="1388"></td>
<td id="LC1388" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (compare <span class="pl-k"><</span> <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L1389" class="blob-num js-line-number" data-line-number="1389"></td>
<td id="LC1389" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>:</td>
</tr>
<tr>
<td id="L1390" class="blob-num js-line-number" data-line-number="1390"></td>
<td id="LC1390" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L1391" class="blob-num js-line-number" data-line-number="1391"></td>
<td id="LC1391" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1392" class="blob-num js-line-number" data-line-number="1392"></td>
<td id="LC1392" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1393" class="blob-num js-line-number" data-line-number="1393"></td>
<td id="LC1393" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1394" class="blob-num js-line-number" data-line-number="1394"></td>
<td id="LC1394" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1395" class="blob-num js-line-number" data-line-number="1395"></td>
<td id="LC1395" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> can <span class="pl-k">=</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1396" class="blob-num js-line-number" data-line-number="1396"></td>
<td id="LC1396" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> caps <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1397" class="blob-num js-line-number" data-line-number="1397"></td>
<td id="LC1397" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">access_global_ns</span><span class="pl-k">:</span> <span class="pl-k">function</span> () {</td>
</tr>
<tr>
<td id="L1398" class="blob-num js-line-number" data-line-number="1398"></td>
<td id="LC1398" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-smi">moxie</span>;</td>
</tr>
<tr>
<td id="L1399" class="blob-num js-line-number" data-line-number="1399"></td>
<td id="LC1399" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1400" class="blob-num js-line-number" data-line-number="1400"></td>
<td id="LC1400" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1401" class="blob-num js-line-number" data-line-number="1401"></td>
<td id="LC1401" class="blob-code blob-code-inner js-file-line"> define_property<span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1402" class="blob-num js-line-number" data-line-number="1402"></td>
<td id="LC1402" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> // currently too much extra code required, not exactly worth it</span></td>
</tr>
<tr>
<td id="L1403" class="blob-num js-line-number" data-line-number="1403"></td>
<td id="LC1403" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> try { // as of IE8, getters/setters are supported only on DOM elements</span></td>
</tr>
<tr>
<td id="L1404" class="blob-num js-line-number" data-line-number="1404"></td>
<td id="LC1404" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> var obj = {};</span></td>
</tr>
<tr>
<td id="L1405" class="blob-num js-line-number" data-line-number="1405"></td>
<td id="LC1405" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (Object.defineProperty) {</span></td>
</tr>
<tr>
<td id="L1406" class="blob-num js-line-number" data-line-number="1406"></td>
<td id="LC1406" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Object.defineProperty(obj, 'prop', {</span></td>
</tr>
<tr>
<td id="L1407" class="blob-num js-line-number" data-line-number="1407"></td>
<td id="LC1407" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> enumerable: true,</span></td>
</tr>
<tr>
<td id="L1408" class="blob-num js-line-number" data-line-number="1408"></td>
<td id="LC1408" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: true</span></td>
</tr>
<tr>
<td id="L1409" class="blob-num js-line-number" data-line-number="1409"></td>
<td id="LC1409" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L1410" class="blob-num js-line-number" data-line-number="1410"></td>
<td id="LC1410" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return true;</span></td>
</tr>
<tr>
<td id="L1411" class="blob-num js-line-number" data-line-number="1411"></td>
<td id="LC1411" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L1412" class="blob-num js-line-number" data-line-number="1412"></td>
<td id="LC1412" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> } catch(ex) {}</span></td>
</tr>
<tr>
<td id="L1413" class="blob-num js-line-number" data-line-number="1413"></td>
<td id="LC1413" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1414" class="blob-num js-line-number" data-line-number="1414"></td>
<td id="LC1414" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__) {</span></td>
</tr>
<tr>
<td id="L1415" class="blob-num js-line-number" data-line-number="1415"></td>
<td id="LC1415" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return true;</span></td>
</tr>
<tr>
<td id="L1416" class="blob-num js-line-number" data-line-number="1416"></td>
<td id="LC1416" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }<span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1417" class="blob-num js-line-number" data-line-number="1417"></td>
<td id="LC1417" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L1418" class="blob-num js-line-number" data-line-number="1418"></td>
<td id="LC1418" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1419" class="blob-num js-line-number" data-line-number="1419"></td>
<td id="LC1419" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1420" class="blob-num js-line-number" data-line-number="1420"></td>
<td id="LC1420" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">create_canvas</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1421" class="blob-num js-line-number" data-line-number="1421"></td>
<td id="LC1421" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> On the S60 and BB Storm, getContext exists, but always returns undefined</span></td>
</tr>
<tr>
<td id="L1422" class="blob-num js-line-number" data-line-number="1422"></td>
<td id="LC1422" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> so we actually have to call getContext() to verify</span></td>
</tr>
<tr>
<td id="L1423" class="blob-num js-line-number" data-line-number="1423"></td>
<td id="LC1423" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> github.com/Modernizr/Modernizr/issues/issue/97/</span></td>
</tr>
<tr>
<td id="L1424" class="blob-num js-line-number" data-line-number="1424"></td>
<td id="LC1424" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> el <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1425" class="blob-num js-line-number" data-line-number="1425"></td>
<td id="LC1425" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> isSupported <span class="pl-k">=</span> <span class="pl-k">!!</span>(<span class="pl-smi">el</span>.<span class="pl-smi">getContext</span> <span class="pl-k">&&</span> <span class="pl-smi">el</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">'</span>2d<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L1426" class="blob-num js-line-number" data-line-number="1426"></td>
<td id="LC1426" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">caps</span>.<span class="pl-smi">create_canvas</span> <span class="pl-k">=</span> isSupported;</td>
</tr>
<tr>
<td id="L1427" class="blob-num js-line-number" data-line-number="1427"></td>
<td id="LC1427" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> isSupported;</td>
</tr>
<tr>
<td id="L1428" class="blob-num js-line-number" data-line-number="1428"></td>
<td id="LC1428" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1429" class="blob-num js-line-number" data-line-number="1429"></td>
<td id="LC1429" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1430" class="blob-num js-line-number" data-line-number="1430"></td>
<td id="LC1430" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_type</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L1431" class="blob-num js-line-number" data-line-number="1431"></td>
<td id="LC1431" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L1432" class="blob-num js-line-number" data-line-number="1432"></td>
<td id="LC1432" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(responseType, [<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>text<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L1433" class="blob-num js-line-number" data-line-number="1433"></td>
<td id="LC1433" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L1434" class="blob-num js-line-number" data-line-number="1434"></td>
<td id="LC1434" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span>) {</td>
</tr>
<tr>
<td id="L1435" class="blob-num js-line-number" data-line-number="1435"></td>
<td id="LC1435" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> xhr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">XMLHttpRequest</span>();</td>
</tr>
<tr>
<td id="L1436" class="blob-num js-line-number" data-line-number="1436"></td>
<td id="LC1436" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-c1">open</span>(<span class="pl-s"><span class="pl-pds">'</span>get<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>); <span class="pl-c"><span class="pl-c">//</span> otherwise Gecko throws an exception</span></td>
</tr>
<tr>
<td id="L1437" class="blob-num js-line-number" data-line-number="1437"></td>
<td id="LC1437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>responseType<span class="pl-pds">'</span></span> <span class="pl-k">in</span> xhr) {</td>
</tr>
<tr>
<td id="L1438" class="blob-num js-line-number" data-line-number="1438"></td>
<td id="LC1438" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-smi">responseType</span> <span class="pl-k">=</span> responseType;</td>
</tr>
<tr>
<td id="L1439" class="blob-num js-line-number" data-line-number="1439"></td>
<td id="LC1439" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> as of 23.0.1271.64, Chrome switched from throwing exception to merely logging it to the console (why? o why?)</span></td>
</tr>
<tr>
<td id="L1440" class="blob-num js-line-number" data-line-number="1440"></td>
<td id="LC1440" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">xhr</span>.<span class="pl-smi">responseType</span> <span class="pl-k">!==</span> responseType) {</td>
</tr>
<tr>
<td id="L1441" class="blob-num js-line-number" data-line-number="1441"></td>
<td id="LC1441" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L1442" class="blob-num js-line-number" data-line-number="1442"></td>
<td id="LC1442" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1443" class="blob-num js-line-number" data-line-number="1443"></td>
<td id="LC1443" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L1444" class="blob-num js-line-number" data-line-number="1444"></td>
<td id="LC1444" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1445" class="blob-num js-line-number" data-line-number="1445"></td>
<td id="LC1445" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1446" class="blob-num js-line-number" data-line-number="1446"></td>
<td id="LC1446" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {}</td>
</tr>
<tr>
<td id="L1447" class="blob-num js-line-number" data-line-number="1447"></td>
<td id="LC1447" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L1448" class="blob-num js-line-number" data-line-number="1448"></td>
<td id="LC1448" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1449" class="blob-num js-line-number" data-line-number="1449"></td>
<td id="LC1449" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1450" class="blob-num js-line-number" data-line-number="1450"></td>
<td id="LC1450" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_blob_uri</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1451" class="blob-num js-line-number" data-line-number="1451"></td>
<td id="LC1451" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">URL</span> <span class="pl-k">=</span> <span class="pl-c1">window</span>.<span class="pl-c1">URL</span>;</td>
</tr>
<tr>
<td id="L1452" class="blob-num js-line-number" data-line-number="1452"></td>
<td id="LC1452" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">caps</span>.<span class="pl-smi">use_blob_uri</span> <span class="pl-k">=</span> (<span class="pl-c1">URL</span> <span class="pl-k">&&</span></td>
</tr>
<tr>
<td id="L1453" class="blob-num js-line-number" data-line-number="1453"></td>
<td id="LC1453" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>createObjectURL<span class="pl-pds">'</span></span> <span class="pl-k">in</span> <span class="pl-c1">URL</span> <span class="pl-k">&&</span></td>
</tr>
<tr>
<td id="L1454" class="blob-num js-line-number" data-line-number="1454"></td>
<td id="LC1454" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>revokeObjectURL<span class="pl-pds">'</span></span> <span class="pl-k">in</span> <span class="pl-c1">URL</span> <span class="pl-k">&&</span></td>
</tr>
<tr>
<td id="L1455" class="blob-num js-line-number" data-line-number="1455"></td>
<td id="LC1455" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-s"><span class="pl-pds">'</span>11.0.46<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>>=<span class="pl-pds">'</span></span>)) <span class="pl-c"><span class="pl-c">//</span> IE supports createObjectURL, but not fully, for example it fails to use it as a src for the image</span></td>
</tr>
<tr>
<td id="L1456" class="blob-num js-line-number" data-line-number="1456"></td>
<td id="LC1456" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L1457" class="blob-num js-line-number" data-line-number="1457"></td>
<td id="LC1457" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">caps</span>.<span class="pl-smi">use_blob_uri</span>;</td>
</tr>
<tr>
<td id="L1458" class="blob-num js-line-number" data-line-number="1458"></td>
<td id="LC1458" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1459" class="blob-num js-line-number" data-line-number="1459"></td>
<td id="LC1459" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1460" class="blob-num js-line-number" data-line-number="1460"></td>
<td id="LC1460" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> ideas for this heavily come from Modernizr (http://modernizr.com/)</span></td>
</tr>
<tr>
<td id="L1461" class="blob-num js-line-number" data-line-number="1461"></td>
<td id="LC1461" class="blob-code blob-code-inner js-file-line"> use_data_uri<span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1462" class="blob-num js-line-number" data-line-number="1462"></td>
<td id="LC1462" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> du <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Image</span>();</td>
</tr>
<tr>
<td id="L1463" class="blob-num js-line-number" data-line-number="1463"></td>
<td id="LC1463" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1464" class="blob-num js-line-number" data-line-number="1464"></td>
<td id="LC1464" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">du</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1465" class="blob-num js-line-number" data-line-number="1465"></td>
<td id="LC1465" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">caps</span>.<span class="pl-smi">use_data_uri</span> <span class="pl-k">=</span> (<span class="pl-smi">du</span>.<span class="pl-c1">width</span> <span class="pl-k">===</span> <span class="pl-c1">1</span> <span class="pl-k">&&</span> <span class="pl-smi">du</span>.<span class="pl-c1">height</span> <span class="pl-k">===</span> <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L1466" class="blob-num js-line-number" data-line-number="1466"></td>
<td id="LC1466" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1467" class="blob-num js-line-number" data-line-number="1467"></td>
<td id="LC1467" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1468" class="blob-num js-line-number" data-line-number="1468"></td>
<td id="LC1468" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1469" class="blob-num js-line-number" data-line-number="1469"></td>
<td id="LC1469" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">du</span>.<span class="pl-smi">src</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L1470" class="blob-num js-line-number" data-line-number="1470"></td>
<td id="LC1470" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L1471" class="blob-num js-line-number" data-line-number="1471"></td>
<td id="LC1471" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L1472" class="blob-num js-line-number" data-line-number="1472"></td>
<td id="LC1472" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1473" class="blob-num js-line-number" data-line-number="1473"></td>
<td id="LC1473" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1474" class="blob-num js-line-number" data-line-number="1474"></td>
<td id="LC1474" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_data_uri_over32kb</span><span class="pl-k">:</span> <span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> IE8</span></td>
</tr>
<tr>
<td id="L1475" class="blob-num js-line-number" data-line-number="1475"></td>
<td id="LC1475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">caps</span>.<span class="pl-smi">use_data_uri</span> <span class="pl-k">&&</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-smi">Env</span>.<span class="pl-c1">version</span> <span class="pl-k">>=</span> <span class="pl-c1">9</span>);</td>
</tr>
<tr>
<td id="L1476" class="blob-num js-line-number" data-line-number="1476"></td>
<td id="LC1476" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1477" class="blob-num js-line-number" data-line-number="1477"></td>
<td id="LC1477" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1478" class="blob-num js-line-number" data-line-number="1478"></td>
<td id="LC1478" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_data_uri_of</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">bytes</span>) {</td>
</tr>
<tr>
<td id="L1479" class="blob-num js-line-number" data-line-number="1479"></td>
<td id="LC1479" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">caps</span>.<span class="pl-smi">use_data_uri</span> <span class="pl-k">&&</span> bytes <span class="pl-k"><</span> <span class="pl-c1">33000</span> <span class="pl-k">||</span> <span class="pl-smi">caps</span>.<span class="pl-en">use_data_uri_over32kb</span>());</td>
</tr>
<tr>
<td id="L1480" class="blob-num js-line-number" data-line-number="1480"></td>
<td id="LC1480" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1481" class="blob-num js-line-number" data-line-number="1481"></td>
<td id="LC1481" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1482" class="blob-num js-line-number" data-line-number="1482"></td>
<td id="LC1482" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_fileinput</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1483" class="blob-num js-line-number" data-line-number="1483"></td>
<td id="LC1483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">navigator</span>.<span class="pl-c1">userAgent</span>.<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span>(Android (1<span class="pl-c1">.</span>0<span class="pl-k">|</span>1<span class="pl-c1">.</span>1<span class="pl-k">|</span>1<span class="pl-c1">.</span>5<span class="pl-k">|</span>1<span class="pl-c1">.</span>6<span class="pl-k">|</span>2<span class="pl-c1">.</span>0<span class="pl-k">|</span>2<span class="pl-c1">.</span>1))<span class="pl-k">|</span>(Windows Phone (OS 7<span class="pl-k">|</span>8<span class="pl-c1">.</span>0))<span class="pl-k">|</span>(XBLWP)<span class="pl-k">|</span>(ZuneWP)<span class="pl-k">|</span>(w(eb)<span class="pl-k">?</span>OSBrowser)<span class="pl-k">|</span>(webOS)<span class="pl-k">|</span>(Kindle<span class="pl-cce">\/</span>(1<span class="pl-c1">.</span>0<span class="pl-k">|</span>2<span class="pl-c1">.</span>0<span class="pl-k">|</span>2<span class="pl-c1">.</span>5<span class="pl-k">|</span>3<span class="pl-c1">.</span>0))<span class="pl-pds">/</span></span>)) {</td>
</tr>
<tr>
<td id="L1484" class="blob-num js-line-number" data-line-number="1484"></td>
<td id="LC1484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L1485" class="blob-num js-line-number" data-line-number="1485"></td>
<td id="LC1485" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1486" class="blob-num js-line-number" data-line-number="1486"></td>
<td id="LC1486" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1487" class="blob-num js-line-number" data-line-number="1487"></td>
<td id="LC1487" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> el <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>input<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1488" class="blob-num js-line-number" data-line-number="1488"></td>
<td id="LC1488" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">el</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1489" class="blob-num js-line-number" data-line-number="1489"></td>
<td id="LC1489" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">caps</span>.<span class="pl-smi">use_fileinput</span> <span class="pl-k">=</span> <span class="pl-k">!</span><span class="pl-smi">el</span>.<span class="pl-c1">disabled</span>;</td>
</tr>
<tr>
<td id="L1490" class="blob-num js-line-number" data-line-number="1490"></td>
<td id="LC1490" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1491" class="blob-num js-line-number" data-line-number="1491"></td>
<td id="LC1491" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1492" class="blob-num js-line-number" data-line-number="1492"></td>
<td id="LC1492" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_webgl</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1493" class="blob-num js-line-number" data-line-number="1493"></td>
<td id="LC1493" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> canvas <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1494" class="blob-num js-line-number" data-line-number="1494"></td>
<td id="LC1494" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> gl <span class="pl-k">=</span> <span class="pl-c1">null</span>, isSupported;</td>
</tr>
<tr>
<td id="L1495" class="blob-num js-line-number" data-line-number="1495"></td>
<td id="LC1495" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L1496" class="blob-num js-line-number" data-line-number="1496"></td>
<td id="LC1496" class="blob-code blob-code-inner js-file-line"> gl <span class="pl-k">=</span> <span class="pl-smi">canvas</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">"</span>webgl<span class="pl-pds">"</span></span>) <span class="pl-k">||</span> <span class="pl-smi">canvas</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">"</span>experimental-webgl<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L1497" class="blob-num js-line-number" data-line-number="1497"></td>
<td id="LC1497" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1498" class="blob-num js-line-number" data-line-number="1498"></td>
<td id="LC1498" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">catch</span>(e) {}</td>
</tr>
<tr>
<td id="L1499" class="blob-num js-line-number" data-line-number="1499"></td>
<td id="LC1499" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1500" class="blob-num js-line-number" data-line-number="1500"></td>
<td id="LC1500" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>gl) { <span class="pl-c"><span class="pl-c">//</span> it seems that sometimes it doesn't throw exception, but still fails to get context</span></td>
</tr>
<tr>
<td id="L1501" class="blob-num js-line-number" data-line-number="1501"></td>
<td id="LC1501" class="blob-code blob-code-inner js-file-line"> gl <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L1502" class="blob-num js-line-number" data-line-number="1502"></td>
<td id="LC1502" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1503" class="blob-num js-line-number" data-line-number="1503"></td>
<td id="LC1503" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1504" class="blob-num js-line-number" data-line-number="1504"></td>
<td id="LC1504" class="blob-code blob-code-inner js-file-line"> isSupported <span class="pl-k">=</span> <span class="pl-k">!!</span>gl;</td>
</tr>
<tr>
<td id="L1505" class="blob-num js-line-number" data-line-number="1505"></td>
<td id="LC1505" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">caps</span>.<span class="pl-smi">use_webgl</span> <span class="pl-k">=</span> isSupported; <span class="pl-c"><span class="pl-c">//</span> save result of our check</span></td>
</tr>
<tr>
<td id="L1506" class="blob-num js-line-number" data-line-number="1506"></td>
<td id="LC1506" class="blob-code blob-code-inner js-file-line"> canvas <span class="pl-k">=</span> <span class="pl-c1">undefined</span>;</td>
</tr>
<tr>
<td id="L1507" class="blob-num js-line-number" data-line-number="1507"></td>
<td id="LC1507" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> isSupported;</td>
</tr>
<tr>
<td id="L1508" class="blob-num js-line-number" data-line-number="1508"></td>
<td id="LC1508" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1509" class="blob-num js-line-number" data-line-number="1509"></td>
<td id="LC1509" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1510" class="blob-num js-line-number" data-line-number="1510"></td>
<td id="LC1510" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1511" class="blob-num js-line-number" data-line-number="1511"></td>
<td id="LC1511" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>(<span class="pl-smi">cap</span>) {</td>
</tr>
<tr>
<td id="L1512" class="blob-num js-line-number" data-line-number="1512"></td>
<td id="LC1512" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L1513" class="blob-num js-line-number" data-line-number="1513"></td>
<td id="LC1513" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">args</span>.<span class="pl-c1">shift</span>(); <span class="pl-c"><span class="pl-c">//</span> shift of cap</span></td>
</tr>
<tr>
<td id="L1514" class="blob-num js-line-number" data-line-number="1514"></td>
<td id="LC1514" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(caps[cap]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span> <span class="pl-k">?</span> caps[cap].<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, args) <span class="pl-k">:</span> <span class="pl-k">!!</span>caps[cap];</td>
</tr>
<tr>
<td id="L1515" class="blob-num js-line-number" data-line-number="1515"></td>
<td id="LC1515" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1516" class="blob-num js-line-number" data-line-number="1516"></td>
<td id="LC1516" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L1517" class="blob-num js-line-number" data-line-number="1517"></td>
<td id="LC1517" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1518" class="blob-num js-line-number" data-line-number="1518"></td>
<td id="LC1518" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1519" class="blob-num js-line-number" data-line-number="1519"></td>
<td id="LC1519" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> uaResult <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">UAParser</span>().<span class="pl-en">getResult</span>();</td>
</tr>
<tr>
<td id="L1520" class="blob-num js-line-number" data-line-number="1520"></td>
<td id="LC1520" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1521" class="blob-num js-line-number" data-line-number="1521"></td>
<td id="LC1521" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1522" class="blob-num js-line-number" data-line-number="1522"></td>
<td id="LC1522" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> Env <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1523" class="blob-num js-line-number" data-line-number="1523"></td>
<td id="LC1523" class="blob-code blob-code-inner js-file-line"> can<span class="pl-k">:</span> can,</td>
</tr>
<tr>
<td id="L1524" class="blob-num js-line-number" data-line-number="1524"></td>
<td id="LC1524" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1525" class="blob-num js-line-number" data-line-number="1525"></td>
<td id="LC1525" class="blob-code blob-code-inner js-file-line"> uaParser<span class="pl-k">:</span> UAParser,</td>
</tr>
<tr>
<td id="L1526" class="blob-num js-line-number" data-line-number="1526"></td>
<td id="LC1526" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1527" class="blob-num js-line-number" data-line-number="1527"></td>
<td id="LC1527" class="blob-code blob-code-inner js-file-line"> browser<span class="pl-k">:</span> <span class="pl-smi">uaResult</span>.<span class="pl-smi">browser</span>.<span class="pl-c1">name</span>,</td>
</tr>
<tr>
<td id="L1528" class="blob-num js-line-number" data-line-number="1528"></td>
<td id="LC1528" class="blob-code blob-code-inner js-file-line"> version<span class="pl-k">:</span> <span class="pl-smi">uaResult</span>.<span class="pl-smi">browser</span>.<span class="pl-c1">version</span>,</td>
</tr>
<tr>
<td id="L1529" class="blob-num js-line-number" data-line-number="1529"></td>
<td id="LC1529" class="blob-code blob-code-inner js-file-line"> os<span class="pl-k">:</span> <span class="pl-smi">uaResult</span>.<span class="pl-smi">os</span>.<span class="pl-c1">name</span>, <span class="pl-c"><span class="pl-c">//</span> everybody intuitively types it in a lowercase for some reason</span></td>
</tr>
<tr>
<td id="L1530" class="blob-num js-line-number" data-line-number="1530"></td>
<td id="LC1530" class="blob-code blob-code-inner js-file-line"> osVersion<span class="pl-k">:</span> <span class="pl-smi">uaResult</span>.<span class="pl-smi">os</span>.<span class="pl-c1">version</span>,</td>
</tr>
<tr>
<td id="L1531" class="blob-num js-line-number" data-line-number="1531"></td>
<td id="LC1531" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1532" class="blob-num js-line-number" data-line-number="1532"></td>
<td id="LC1532" class="blob-code blob-code-inner js-file-line"> verComp<span class="pl-k">:</span> version_compare,</td>
</tr>
<tr>
<td id="L1533" class="blob-num js-line-number" data-line-number="1533"></td>
<td id="LC1533" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1534" class="blob-num js-line-number" data-line-number="1534"></td>
<td id="LC1534" class="blob-code blob-code-inner js-file-line"> swf_url<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>../flash/Moxie.swf<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L1535" class="blob-num js-line-number" data-line-number="1535"></td>
<td id="LC1535" class="blob-code blob-code-inner js-file-line"> xap_url<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>../silverlight/Moxie.xap<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L1536" class="blob-num js-line-number" data-line-number="1536"></td>
<td id="LC1536" class="blob-code blob-code-inner js-file-line"> global_event_dispatcher<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>moxie.core.EventTarget.instance.dispatchEvent<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L1537" class="blob-num js-line-number" data-line-number="1537"></td>
<td id="LC1537" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1538" class="blob-num js-line-number" data-line-number="1538"></td>
<td id="LC1538" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1539" class="blob-num js-line-number" data-line-number="1539"></td>
<td id="LC1539" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for backward compatibility</span></td>
</tr>
<tr>
<td id="L1540" class="blob-num js-line-number" data-line-number="1540"></td>
<td id="LC1540" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> @deprecated Use `Env.os` instead</span></td>
</tr>
<tr>
<td id="L1541" class="blob-num js-line-number" data-line-number="1541"></td>
<td id="LC1541" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-c1">OS</span> <span class="pl-k">=</span> <span class="pl-smi">Env</span>.<span class="pl-smi">os</span>;</td>
</tr>
<tr>
<td id="L1542" class="blob-num js-line-number" data-line-number="1542"></td>
<td id="LC1542" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1543" class="blob-num js-line-number" data-line-number="1543"></td>
<td id="LC1543" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span>) {</td>
</tr>
<tr>
<td id="L1544" class="blob-num js-line-number" data-line-number="1544"></td>
<td id="LC1544" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span> <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1545" class="blob-num js-line-number" data-line-number="1545"></td>
<td id="LC1545" class="blob-code blob-code-inner js-file-line"> runtime<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L1546" class="blob-num js-line-number" data-line-number="1546"></td>
<td id="LC1546" class="blob-code blob-code-inner js-file-line"> events<span class="pl-k">:</span> <span class="pl-c1">false</span></td>
</tr>
<tr>
<td id="L1547" class="blob-num js-line-number" data-line-number="1547"></td>
<td id="LC1547" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1548" class="blob-num js-line-number" data-line-number="1548"></td>
<td id="LC1548" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1549" class="blob-num js-line-number" data-line-number="1549"></td>
<td id="LC1549" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1550" class="blob-num js-line-number" data-line-number="1550"></td>
<td id="LC1550" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1551" class="blob-num js-line-number" data-line-number="1551"></td>
<td id="LC1551" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">logObj</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L1552" class="blob-num js-line-number" data-line-number="1552"></td>
<td id="LC1552" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> TODO: this should recursively print out the object in a pretty way</span></td>
</tr>
<tr>
<td id="L1553" class="blob-num js-line-number" data-line-number="1553"></td>
<td id="LC1553" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">console</span>.<span class="pl-c1">appendChild</span>(<span class="pl-c1">document</span>.<span class="pl-c1">createTextNode</span>(data <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\n</span><span class="pl-pds">"</span></span>));</td>
</tr>
<tr>
<td id="L1554" class="blob-num js-line-number" data-line-number="1554"></td>
<td id="LC1554" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1555" class="blob-num js-line-number" data-line-number="1555"></td>
<td id="LC1555" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1556" class="blob-num js-line-number" data-line-number="1556"></td>
<td id="LC1556" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if debugger present, IE8 might have window.console.log method, but not be able to apply on it (why...)</span></td>
</tr>
<tr>
<td id="L1557" class="blob-num js-line-number" data-line-number="1557"></td>
<td id="LC1557" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">window</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">console</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">console</span>.<span class="pl-smi">log</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">console</span>.<span class="pl-smi">log</span>.<span class="pl-smi">apply</span>) {</td>
</tr>
<tr>
<td id="L1558" class="blob-num js-line-number" data-line-number="1558"></td>
<td id="LC1558" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">window</span>.<span class="pl-smi">console</span>.<span class="pl-smi">log</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">window</span>.<span class="pl-smi">console</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L1559" class="blob-num js-line-number" data-line-number="1559"></td>
<td id="LC1559" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-c1">document</span>) {</td>
</tr>
<tr>
<td id="L1560" class="blob-num js-line-number" data-line-number="1560"></td>
<td id="LC1560" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">console</span> <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">getElementById</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie-console<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1561" class="blob-num js-line-number" data-line-number="1561"></td>
<td id="LC1561" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-en">console</span>) {</td>
</tr>
<tr>
<td id="L1562" class="blob-num js-line-number" data-line-number="1562"></td>
<td id="LC1562" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">console</span> <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>pre<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1563" class="blob-num js-line-number" data-line-number="1563"></td>
<td id="LC1563" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">console</span>.<span class="pl-c1">id</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>moxie-console<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L1564" class="blob-num js-line-number" data-line-number="1564"></td>
<td id="LC1564" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>console.style.display = 'none';</span></td>
</tr>
<tr>
<td id="L1565" class="blob-num js-line-number" data-line-number="1565"></td>
<td id="LC1565" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">document</span>.<span class="pl-c1">body</span>.<span class="pl-c1">appendChild</span>(<span class="pl-en">console</span>);</td>
</tr>
<tr>
<td id="L1566" class="blob-num js-line-number" data-line-number="1566"></td>
<td id="LC1566" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1567" class="blob-num js-line-number" data-line-number="1567"></td>
<td id="LC1567" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1568" class="blob-num js-line-number" data-line-number="1568"></td>
<td id="LC1568" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> data <span class="pl-k">=</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">0</span>];</td>
</tr>
<tr>
<td id="L1569" class="blob-num js-line-number" data-line-number="1569"></td>
<td id="LC1569" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(data) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L1570" class="blob-num js-line-number" data-line-number="1570"></td>
<td id="LC1570" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-smi">sprintf</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L1571" class="blob-num js-line-number" data-line-number="1571"></td>
<td id="LC1571" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(data), [<span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L1572" class="blob-num js-line-number" data-line-number="1572"></td>
<td id="LC1572" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">logObj</span>(data);</td>
</tr>
<tr>
<td id="L1573" class="blob-num js-line-number" data-line-number="1573"></td>
<td id="LC1573" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L1574" class="blob-num js-line-number" data-line-number="1574"></td>
<td id="LC1574" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1575" class="blob-num js-line-number" data-line-number="1575"></td>
<td id="LC1575" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1576" class="blob-num js-line-number" data-line-number="1576"></td>
<td id="LC1576" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">console</span>.<span class="pl-c1">appendChild</span>(<span class="pl-c1">document</span>.<span class="pl-c1">createTextNode</span>(data <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\n</span><span class="pl-pds">"</span></span>));</td>
</tr>
<tr>
<td id="L1577" class="blob-num js-line-number" data-line-number="1577"></td>
<td id="LC1577" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1578" class="blob-num js-line-number" data-line-number="1578"></td>
<td id="LC1578" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1579" class="blob-num js-line-number" data-line-number="1579"></td>
<td id="LC1579" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1580" class="blob-num js-line-number" data-line-number="1580"></td>
<td id="LC1580" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1581" class="blob-num js-line-number" data-line-number="1581"></td>
<td id="LC1581" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> Env;</td>
</tr>
<tr>
<td id="L1582" class="blob-num js-line-number" data-line-number="1582"></td>
<td id="LC1582" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L1583" class="blob-num js-line-number" data-line-number="1583"></td>
<td id="LC1583" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1584" class="blob-num js-line-number" data-line-number="1584"></td>
<td id="LC1584" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/Exceptions.js</span></td>
</tr>
<tr>
<td id="L1585" class="blob-num js-line-number" data-line-number="1585"></td>
<td id="LC1585" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1586" class="blob-num js-line-number" data-line-number="1586"></td>
<td id="LC1586" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1587" class="blob-num js-line-number" data-line-number="1587"></td>
<td id="LC1587" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Exceptions.js</span></td>
</tr>
<tr>
<td id="L1588" class="blob-num js-line-number" data-line-number="1588"></td>
<td id="LC1588" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L1589" class="blob-num js-line-number" data-line-number="1589"></td>
<td id="LC1589" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L1590" class="blob-num js-line-number" data-line-number="1590"></td>
<td id="LC1590" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L1591" class="blob-num js-line-number" data-line-number="1591"></td>
<td id="LC1591" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L1592" class="blob-num js-line-number" data-line-number="1592"></td>
<td id="LC1592" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L1593" class="blob-num js-line-number" data-line-number="1593"></td>
<td id="LC1593" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L1594" class="blob-num js-line-number" data-line-number="1594"></td>
<td id="LC1594" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1595" class="blob-num js-line-number" data-line-number="1595"></td>
<td id="LC1595" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1596" class="blob-num js-line-number" data-line-number="1596"></td>
<td id="LC1596" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/Exceptions<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L1597" class="blob-num js-line-number" data-line-number="1597"></td>
<td id="LC1597" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1598" class="blob-num js-line-number" data-line-number="1598"></td>
<td id="LC1598" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L1599" class="blob-num js-line-number" data-line-number="1599"></td>
<td id="LC1599" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1600" class="blob-num js-line-number" data-line-number="1600"></td>
<td id="LC1600" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_findKey</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L1601" class="blob-num js-line-number" data-line-number="1601"></td>
<td id="LC1601" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> key;</td>
</tr>
<tr>
<td id="L1602" class="blob-num js-line-number" data-line-number="1602"></td>
<td id="LC1602" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (key <span class="pl-k">in</span> obj) {</td>
</tr>
<tr>
<td id="L1603" class="blob-num js-line-number" data-line-number="1603"></td>
<td id="LC1603" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (obj[key] <span class="pl-k">===</span> value) {</td>
</tr>
<tr>
<td id="L1604" class="blob-num js-line-number" data-line-number="1604"></td>
<td id="LC1604" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> key;</td>
</tr>
<tr>
<td id="L1605" class="blob-num js-line-number" data-line-number="1605"></td>
<td id="LC1605" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1606" class="blob-num js-line-number" data-line-number="1606"></td>
<td id="LC1606" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1607" class="blob-num js-line-number" data-line-number="1607"></td>
<td id="LC1607" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L1608" class="blob-num js-line-number" data-line-number="1608"></td>
<td id="LC1608" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1609" class="blob-num js-line-number" data-line-number="1609"></td>
<td id="LC1609" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1610" class="blob-num js-line-number" data-line-number="1610"></td>
<td id="LC1610" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1611" class="blob-num js-line-number" data-line-number="1611"></td>
<td id="LC1611" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/core/Exception</span></td>
</tr>
<tr>
<td id="L1612" class="blob-num js-line-number" data-line-number="1612"></td>
<td id="LC1612" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1613" class="blob-num js-line-number" data-line-number="1613"></td>
<td id="LC1613" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1614" class="blob-num js-line-number" data-line-number="1614"></td>
<td id="LC1614" class="blob-code blob-code-inner js-file-line"> RuntimeError<span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1615" class="blob-num js-line-number" data-line-number="1615"></td>
<td id="LC1615" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> namecodes <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1616" class="blob-num js-line-number" data-line-number="1616"></td>
<td id="LC1616" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_INIT_ERR</span><span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L1617" class="blob-num js-line-number" data-line-number="1617"></td>
<td id="LC1617" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">EXCEPTION_ERR</span><span class="pl-k">:</span> <span class="pl-c1">3</span>,</td>
</tr>
<tr>
<td id="L1618" class="blob-num js-line-number" data-line-number="1618"></td>
<td id="LC1618" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_SUPPORTED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">9</span>,</td>
</tr>
<tr>
<td id="L1619" class="blob-num js-line-number" data-line-number="1619"></td>
<td id="LC1619" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">JS_ERR</span><span class="pl-k">:</span> <span class="pl-c1">4</span></td>
</tr>
<tr>
<td id="L1620" class="blob-num js-line-number" data-line-number="1620"></td>
<td id="LC1620" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1621" class="blob-num js-line-number" data-line-number="1621"></td>
<td id="LC1621" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1622" class="blob-num js-line-number" data-line-number="1622"></td>
<td id="LC1622" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">RuntimeError</span>(<span class="pl-smi">code</span>, <span class="pl-smi">message</span>) {</td>
</tr>
<tr>
<td id="L1623" class="blob-num js-line-number" data-line-number="1623"></td>
<td id="LC1623" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">code</span> <span class="pl-k">=</span> code;</td>
</tr>
<tr>
<td id="L1624" class="blob-num js-line-number" data-line-number="1624"></td>
<td id="LC1624" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-en">_findKey</span>(namecodes, code);</td>
</tr>
<tr>
<td id="L1625" class="blob-num js-line-number" data-line-number="1625"></td>
<td id="LC1625" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">message</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">+</span> (message <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">"</span>: RuntimeError <span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-c1">code</span>);</td>
</tr>
<tr>
<td id="L1626" class="blob-num js-line-number" data-line-number="1626"></td>
<td id="LC1626" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1627" class="blob-num js-line-number" data-line-number="1627"></td>
<td id="LC1627" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1628" class="blob-num js-line-number" data-line-number="1628"></td>
<td id="LC1628" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(RuntimeError, namecodes);</td>
</tr>
<tr>
<td id="L1629" class="blob-num js-line-number" data-line-number="1629"></td>
<td id="LC1629" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeError</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Error</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L1630" class="blob-num js-line-number" data-line-number="1630"></td>
<td id="LC1630" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> RuntimeError;</td>
</tr>
<tr>
<td id="L1631" class="blob-num js-line-number" data-line-number="1631"></td>
<td id="LC1631" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1632" class="blob-num js-line-number" data-line-number="1632"></td>
<td id="LC1632" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1633" class="blob-num js-line-number" data-line-number="1633"></td>
<td id="LC1633" class="blob-code blob-code-inner js-file-line"> OperationNotAllowedException<span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1634" class="blob-num js-line-number" data-line-number="1634"></td>
<td id="LC1634" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1635" class="blob-num js-line-number" data-line-number="1635"></td>
<td id="LC1635" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">OperationNotAllowedException</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L1636" class="blob-num js-line-number" data-line-number="1636"></td>
<td id="LC1636" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">code</span> <span class="pl-k">=</span> code;</td>
</tr>
<tr>
<td id="L1637" class="blob-num js-line-number" data-line-number="1637"></td>
<td id="LC1637" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>OperationNotAllowedException<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L1638" class="blob-num js-line-number" data-line-number="1638"></td>
<td id="LC1638" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1639" class="blob-num js-line-number" data-line-number="1639"></td>
<td id="LC1639" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1640" class="blob-num js-line-number" data-line-number="1640"></td>
<td id="LC1640" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(OperationNotAllowedException, {</td>
</tr>
<tr>
<td id="L1641" class="blob-num js-line-number" data-line-number="1641"></td>
<td id="LC1641" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_ALLOWED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">1</span></td>
</tr>
<tr>
<td id="L1642" class="blob-num js-line-number" data-line-number="1642"></td>
<td id="LC1642" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L1643" class="blob-num js-line-number" data-line-number="1643"></td>
<td id="LC1643" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1644" class="blob-num js-line-number" data-line-number="1644"></td>
<td id="LC1644" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">OperationNotAllowedException</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Error</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L1645" class="blob-num js-line-number" data-line-number="1645"></td>
<td id="LC1645" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1646" class="blob-num js-line-number" data-line-number="1646"></td>
<td id="LC1646" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> OperationNotAllowedException;</td>
</tr>
<tr>
<td id="L1647" class="blob-num js-line-number" data-line-number="1647"></td>
<td id="LC1647" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1648" class="blob-num js-line-number" data-line-number="1648"></td>
<td id="LC1648" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1649" class="blob-num js-line-number" data-line-number="1649"></td>
<td id="LC1649" class="blob-code blob-code-inner js-file-line"> ImageError<span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1650" class="blob-num js-line-number" data-line-number="1650"></td>
<td id="LC1650" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> namecodes <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1651" class="blob-num js-line-number" data-line-number="1651"></td>
<td id="LC1651" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">WRONG_FORMAT</span><span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L1652" class="blob-num js-line-number" data-line-number="1652"></td>
<td id="LC1652" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">MAX_RESOLUTION_ERR</span><span class="pl-k">:</span> <span class="pl-c1">2</span>,</td>
</tr>
<tr>
<td id="L1653" class="blob-num js-line-number" data-line-number="1653"></td>
<td id="LC1653" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_META_ERR</span><span class="pl-k">:</span> <span class="pl-c1">3</span></td>
</tr>
<tr>
<td id="L1654" class="blob-num js-line-number" data-line-number="1654"></td>
<td id="LC1654" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1655" class="blob-num js-line-number" data-line-number="1655"></td>
<td id="LC1655" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1656" class="blob-num js-line-number" data-line-number="1656"></td>
<td id="LC1656" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">ImageError</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L1657" class="blob-num js-line-number" data-line-number="1657"></td>
<td id="LC1657" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">code</span> <span class="pl-k">=</span> code;</td>
</tr>
<tr>
<td id="L1658" class="blob-num js-line-number" data-line-number="1658"></td>
<td id="LC1658" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-en">_findKey</span>(namecodes, code);</td>
</tr>
<tr>
<td id="L1659" class="blob-num js-line-number" data-line-number="1659"></td>
<td id="LC1659" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">message</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span>: ImageError <span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-c1">code</span>;</td>
</tr>
<tr>
<td id="L1660" class="blob-num js-line-number" data-line-number="1660"></td>
<td id="LC1660" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1661" class="blob-num js-line-number" data-line-number="1661"></td>
<td id="LC1661" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1662" class="blob-num js-line-number" data-line-number="1662"></td>
<td id="LC1662" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(ImageError, namecodes);</td>
</tr>
<tr>
<td id="L1663" class="blob-num js-line-number" data-line-number="1663"></td>
<td id="LC1663" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ImageError</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Error</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L1664" class="blob-num js-line-number" data-line-number="1664"></td>
<td id="LC1664" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1665" class="blob-num js-line-number" data-line-number="1665"></td>
<td id="LC1665" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> ImageError;</td>
</tr>
<tr>
<td id="L1666" class="blob-num js-line-number" data-line-number="1666"></td>
<td id="LC1666" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1667" class="blob-num js-line-number" data-line-number="1667"></td>
<td id="LC1667" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1668" class="blob-num js-line-number" data-line-number="1668"></td>
<td id="LC1668" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FileException</span><span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1669" class="blob-num js-line-number" data-line-number="1669"></td>
<td id="LC1669" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> namecodes <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1670" class="blob-num js-line-number" data-line-number="1670"></td>
<td id="LC1670" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_FOUND_ERR</span><span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L1671" class="blob-num js-line-number" data-line-number="1671"></td>
<td id="LC1671" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">SECURITY_ERR</span><span class="pl-k">:</span> <span class="pl-c1">2</span>,</td>
</tr>
<tr>
<td id="L1672" class="blob-num js-line-number" data-line-number="1672"></td>
<td id="LC1672" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">ABORT_ERR</span><span class="pl-k">:</span> <span class="pl-c1">3</span>,</td>
</tr>
<tr>
<td id="L1673" class="blob-num js-line-number" data-line-number="1673"></td>
<td id="LC1673" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_READABLE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">4</span>,</td>
</tr>
<tr>
<td id="L1674" class="blob-num js-line-number" data-line-number="1674"></td>
<td id="LC1674" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">ENCODING_ERR</span><span class="pl-k">:</span> <span class="pl-c1">5</span>,</td>
</tr>
<tr>
<td id="L1675" class="blob-num js-line-number" data-line-number="1675"></td>
<td id="LC1675" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NO_MODIFICATION_ALLOWED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">6</span>,</td>
</tr>
<tr>
<td id="L1676" class="blob-num js-line-number" data-line-number="1676"></td>
<td id="LC1676" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_STATE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">7</span>,</td>
</tr>
<tr>
<td id="L1677" class="blob-num js-line-number" data-line-number="1677"></td>
<td id="LC1677" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">SYNTAX_ERR</span><span class="pl-k">:</span> <span class="pl-c1">8</span></td>
</tr>
<tr>
<td id="L1678" class="blob-num js-line-number" data-line-number="1678"></td>
<td id="LC1678" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1679" class="blob-num js-line-number" data-line-number="1679"></td>
<td id="LC1679" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1680" class="blob-num js-line-number" data-line-number="1680"></td>
<td id="LC1680" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileException</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L1681" class="blob-num js-line-number" data-line-number="1681"></td>
<td id="LC1681" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">code</span> <span class="pl-k">=</span> code;</td>
</tr>
<tr>
<td id="L1682" class="blob-num js-line-number" data-line-number="1682"></td>
<td id="LC1682" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-en">_findKey</span>(namecodes, code);</td>
</tr>
<tr>
<td id="L1683" class="blob-num js-line-number" data-line-number="1683"></td>
<td id="LC1683" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">message</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span>: FileException <span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-c1">code</span>;</td>
</tr>
<tr>
<td id="L1684" class="blob-num js-line-number" data-line-number="1684"></td>
<td id="LC1684" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1685" class="blob-num js-line-number" data-line-number="1685"></td>
<td id="LC1685" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1686" class="blob-num js-line-number" data-line-number="1686"></td>
<td id="LC1686" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">FileException</span>, namecodes);</td>
</tr>
<tr>
<td id="L1687" class="blob-num js-line-number" data-line-number="1687"></td>
<td id="LC1687" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FileException</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Error</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L1688" class="blob-num js-line-number" data-line-number="1688"></td>
<td id="LC1688" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">FileException</span>;</td>
</tr>
<tr>
<td id="L1689" class="blob-num js-line-number" data-line-number="1689"></td>
<td id="LC1689" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1690" class="blob-num js-line-number" data-line-number="1690"></td>
<td id="LC1690" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1691" class="blob-num js-line-number" data-line-number="1691"></td>
<td id="LC1691" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">DOMException</span><span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1692" class="blob-num js-line-number" data-line-number="1692"></td>
<td id="LC1692" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> namecodes <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L1693" class="blob-num js-line-number" data-line-number="1693"></td>
<td id="LC1693" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INDEX_SIZE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L1694" class="blob-num js-line-number" data-line-number="1694"></td>
<td id="LC1694" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">DOMSTRING_SIZE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">2</span>,</td>
</tr>
<tr>
<td id="L1695" class="blob-num js-line-number" data-line-number="1695"></td>
<td id="LC1695" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">HIERARCHY_REQUEST_ERR</span><span class="pl-k">:</span> <span class="pl-c1">3</span>,</td>
</tr>
<tr>
<td id="L1696" class="blob-num js-line-number" data-line-number="1696"></td>
<td id="LC1696" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">WRONG_DOCUMENT_ERR</span><span class="pl-k">:</span> <span class="pl-c1">4</span>,</td>
</tr>
<tr>
<td id="L1697" class="blob-num js-line-number" data-line-number="1697"></td>
<td id="LC1697" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_CHARACTER_ERR</span><span class="pl-k">:</span> <span class="pl-c1">5</span>,</td>
</tr>
<tr>
<td id="L1698" class="blob-num js-line-number" data-line-number="1698"></td>
<td id="LC1698" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NO_DATA_ALLOWED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">6</span>,</td>
</tr>
<tr>
<td id="L1699" class="blob-num js-line-number" data-line-number="1699"></td>
<td id="LC1699" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NO_MODIFICATION_ALLOWED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">7</span>,</td>
</tr>
<tr>
<td id="L1700" class="blob-num js-line-number" data-line-number="1700"></td>
<td id="LC1700" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_FOUND_ERR</span><span class="pl-k">:</span> <span class="pl-c1">8</span>,</td>
</tr>
<tr>
<td id="L1701" class="blob-num js-line-number" data-line-number="1701"></td>
<td id="LC1701" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NOT_SUPPORTED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">9</span>,</td>
</tr>
<tr>
<td id="L1702" class="blob-num js-line-number" data-line-number="1702"></td>
<td id="LC1702" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INUSE_ATTRIBUTE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">10</span>,</td>
</tr>
<tr>
<td id="L1703" class="blob-num js-line-number" data-line-number="1703"></td>
<td id="LC1703" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_STATE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">11</span>,</td>
</tr>
<tr>
<td id="L1704" class="blob-num js-line-number" data-line-number="1704"></td>
<td id="LC1704" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">SYNTAX_ERR</span><span class="pl-k">:</span> <span class="pl-c1">12</span>,</td>
</tr>
<tr>
<td id="L1705" class="blob-num js-line-number" data-line-number="1705"></td>
<td id="LC1705" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_MODIFICATION_ERR</span><span class="pl-k">:</span> <span class="pl-c1">13</span>,</td>
</tr>
<tr>
<td id="L1706" class="blob-num js-line-number" data-line-number="1706"></td>
<td id="LC1706" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NAMESPACE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">14</span>,</td>
</tr>
<tr>
<td id="L1707" class="blob-num js-line-number" data-line-number="1707"></td>
<td id="LC1707" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_ACCESS_ERR</span><span class="pl-k">:</span> <span class="pl-c1">15</span>,</td>
</tr>
<tr>
<td id="L1708" class="blob-num js-line-number" data-line-number="1708"></td>
<td id="LC1708" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">VALIDATION_ERR</span><span class="pl-k">:</span> <span class="pl-c1">16</span>,</td>
</tr>
<tr>
<td id="L1709" class="blob-num js-line-number" data-line-number="1709"></td>
<td id="LC1709" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">TYPE_MISMATCH_ERR</span><span class="pl-k">:</span> <span class="pl-c1">17</span>,</td>
</tr>
<tr>
<td id="L1710" class="blob-num js-line-number" data-line-number="1710"></td>
<td id="LC1710" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">SECURITY_ERR</span><span class="pl-k">:</span> <span class="pl-c1">18</span>,</td>
</tr>
<tr>
<td id="L1711" class="blob-num js-line-number" data-line-number="1711"></td>
<td id="LC1711" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">NETWORK_ERR</span><span class="pl-k">:</span> <span class="pl-c1">19</span>,</td>
</tr>
<tr>
<td id="L1712" class="blob-num js-line-number" data-line-number="1712"></td>
<td id="LC1712" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">ABORT_ERR</span><span class="pl-k">:</span> <span class="pl-c1">20</span>,</td>
</tr>
<tr>
<td id="L1713" class="blob-num js-line-number" data-line-number="1713"></td>
<td id="LC1713" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">URL_MISMATCH_ERR</span><span class="pl-k">:</span> <span class="pl-c1">21</span>,</td>
</tr>
<tr>
<td id="L1714" class="blob-num js-line-number" data-line-number="1714"></td>
<td id="LC1714" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">QUOTA_EXCEEDED_ERR</span><span class="pl-k">:</span> <span class="pl-c1">22</span>,</td>
</tr>
<tr>
<td id="L1715" class="blob-num js-line-number" data-line-number="1715"></td>
<td id="LC1715" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">TIMEOUT_ERR</span><span class="pl-k">:</span> <span class="pl-c1">23</span>,</td>
</tr>
<tr>
<td id="L1716" class="blob-num js-line-number" data-line-number="1716"></td>
<td id="LC1716" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">INVALID_NODE_TYPE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">24</span>,</td>
</tr>
<tr>
<td id="L1717" class="blob-num js-line-number" data-line-number="1717"></td>
<td id="LC1717" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">DATA_CLONE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">25</span></td>
</tr>
<tr>
<td id="L1718" class="blob-num js-line-number" data-line-number="1718"></td>
<td id="LC1718" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1719" class="blob-num js-line-number" data-line-number="1719"></td>
<td id="LC1719" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1720" class="blob-num js-line-number" data-line-number="1720"></td>
<td id="LC1720" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">DOMException</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L1721" class="blob-num js-line-number" data-line-number="1721"></td>
<td id="LC1721" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">code</span> <span class="pl-k">=</span> code;</td>
</tr>
<tr>
<td id="L1722" class="blob-num js-line-number" data-line-number="1722"></td>
<td id="LC1722" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-en">_findKey</span>(namecodes, code);</td>
</tr>
<tr>
<td id="L1723" class="blob-num js-line-number" data-line-number="1723"></td>
<td id="LC1723" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">message</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span>: DOMException <span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-c1">code</span>;</td>
</tr>
<tr>
<td id="L1724" class="blob-num js-line-number" data-line-number="1724"></td>
<td id="LC1724" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1725" class="blob-num js-line-number" data-line-number="1725"></td>
<td id="LC1725" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1726" class="blob-num js-line-number" data-line-number="1726"></td>
<td id="LC1726" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">DOMException</span>, namecodes);</td>
</tr>
<tr>
<td id="L1727" class="blob-num js-line-number" data-line-number="1727"></td>
<td id="LC1727" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">DOMException</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Error</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L1728" class="blob-num js-line-number" data-line-number="1728"></td>
<td id="LC1728" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">DOMException</span>;</td>
</tr>
<tr>
<td id="L1729" class="blob-num js-line-number" data-line-number="1729"></td>
<td id="LC1729" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L1730" class="blob-num js-line-number" data-line-number="1730"></td>
<td id="LC1730" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1731" class="blob-num js-line-number" data-line-number="1731"></td>
<td id="LC1731" class="blob-code blob-code-inner js-file-line"> EventException<span class="pl-k">:</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1732" class="blob-num js-line-number" data-line-number="1732"></td>
<td id="LC1732" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">EventException</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L1733" class="blob-num js-line-number" data-line-number="1733"></td>
<td id="LC1733" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">code</span> <span class="pl-k">=</span> code;</td>
</tr>
<tr>
<td id="L1734" class="blob-num js-line-number" data-line-number="1734"></td>
<td id="LC1734" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>EventException<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L1735" class="blob-num js-line-number" data-line-number="1735"></td>
<td id="LC1735" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1736" class="blob-num js-line-number" data-line-number="1736"></td>
<td id="LC1736" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1737" class="blob-num js-line-number" data-line-number="1737"></td>
<td id="LC1737" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(EventException, {</td>
</tr>
<tr>
<td id="L1738" class="blob-num js-line-number" data-line-number="1738"></td>
<td id="LC1738" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">UNSPECIFIED_EVENT_TYPE_ERR</span><span class="pl-k">:</span> <span class="pl-c1">0</span></td>
</tr>
<tr>
<td id="L1739" class="blob-num js-line-number" data-line-number="1739"></td>
<td id="LC1739" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L1740" class="blob-num js-line-number" data-line-number="1740"></td>
<td id="LC1740" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1741" class="blob-num js-line-number" data-line-number="1741"></td>
<td id="LC1741" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">EventException</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Error</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L1742" class="blob-num js-line-number" data-line-number="1742"></td>
<td id="LC1742" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L1743" class="blob-num js-line-number" data-line-number="1743"></td>
<td id="LC1743" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> EventException;</td>
</tr>
<tr>
<td id="L1744" class="blob-num js-line-number" data-line-number="1744"></td>
<td id="LC1744" class="blob-code blob-code-inner js-file-line"> }())</td>
</tr>
<tr>
<td id="L1745" class="blob-num js-line-number" data-line-number="1745"></td>
<td id="LC1745" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1746" class="blob-num js-line-number" data-line-number="1746"></td>
<td id="LC1746" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L1747" class="blob-num js-line-number" data-line-number="1747"></td>
<td id="LC1747" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1748" class="blob-num js-line-number" data-line-number="1748"></td>
<td id="LC1748" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Dom.js</span></td>
</tr>
<tr>
<td id="L1749" class="blob-num js-line-number" data-line-number="1749"></td>
<td id="LC1749" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1750" class="blob-num js-line-number" data-line-number="1750"></td>
<td id="LC1750" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1751" class="blob-num js-line-number" data-line-number="1751"></td>
<td id="LC1751" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Dom.js</span></td>
</tr>
<tr>
<td id="L1752" class="blob-num js-line-number" data-line-number="1752"></td>
<td id="LC1752" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L1753" class="blob-num js-line-number" data-line-number="1753"></td>
<td id="LC1753" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L1754" class="blob-num js-line-number" data-line-number="1754"></td>
<td id="LC1754" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L1755" class="blob-num js-line-number" data-line-number="1755"></td>
<td id="LC1755" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L1756" class="blob-num js-line-number" data-line-number="1756"></td>
<td id="LC1756" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L1757" class="blob-num js-line-number" data-line-number="1757"></td>
<td id="LC1757" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L1758" class="blob-num js-line-number" data-line-number="1758"></td>
<td id="LC1758" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1759" class="blob-num js-line-number" data-line-number="1759"></td>
<td id="LC1759" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1760" class="blob-num js-line-number" data-line-number="1760"></td>
<td id="LC1760" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1761" class="blob-num js-line-number" data-line-number="1761"></td>
<td id="LC1761" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Dom</span></td>
</tr>
<tr>
<td id="L1762" class="blob-num js-line-number" data-line-number="1762"></td>
<td id="LC1762" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L1763" class="blob-num js-line-number" data-line-number="1763"></td>
<td id="LC1763" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1764" class="blob-num js-line-number" data-line-number="1764"></td>
<td id="LC1764" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1765" class="blob-num js-line-number" data-line-number="1765"></td>
<td id="LC1765" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1766" class="blob-num js-line-number" data-line-number="1766"></td>
<td id="LC1766" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Dom<span class="pl-pds">'</span></span>, [<span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Env<span class="pl-pds">'</span></span>], <span class="pl-k">function</span>(<span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L1767" class="blob-num js-line-number" data-line-number="1767"></td>
<td id="LC1767" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1768" class="blob-num js-line-number" data-line-number="1768"></td>
<td id="LC1768" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1769" class="blob-num js-line-number" data-line-number="1769"></td>
<td id="LC1769" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Get DOM Element by it's id.</span></td>
</tr>
<tr>
<td id="L1770" class="blob-num js-line-number" data-line-number="1770"></td>
<td id="LC1770" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1771" class="blob-num js-line-number" data-line-number="1771"></td>
<td id="LC1771" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">get</span></span></td>
</tr>
<tr>
<td id="L1772" class="blob-num js-line-number" data-line-number="1772"></td>
<td id="LC1772" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">id</span> Identifier of the DOM Element</span></td>
</tr>
<tr>
<td id="L1773" class="blob-num js-line-number" data-line-number="1773"></td>
<td id="LC1773" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{DOMElement}</span></span></td>
</tr>
<tr>
<td id="L1774" class="blob-num js-line-number" data-line-number="1774"></td>
<td id="LC1774" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1775" class="blob-num js-line-number" data-line-number="1775"></td>
<td id="LC1775" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">get</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">id</span>) {</td>
</tr>
<tr>
<td id="L1776" class="blob-num js-line-number" data-line-number="1776"></td>
<td id="LC1776" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> id <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L1777" class="blob-num js-line-number" data-line-number="1777"></td>
<td id="LC1777" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> id;</td>
</tr>
<tr>
<td id="L1778" class="blob-num js-line-number" data-line-number="1778"></td>
<td id="LC1778" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1779" class="blob-num js-line-number" data-line-number="1779"></td>
<td id="LC1779" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">document</span>.<span class="pl-c1">getElementById</span>(id);</td>
</tr>
<tr>
<td id="L1780" class="blob-num js-line-number" data-line-number="1780"></td>
<td id="LC1780" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1781" class="blob-num js-line-number" data-line-number="1781"></td>
<td id="LC1781" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1782" class="blob-num js-line-number" data-line-number="1782"></td>
<td id="LC1782" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1783" class="blob-num js-line-number" data-line-number="1783"></td>
<td id="LC1783" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Checks if specified DOM element has specified class.</span></td>
</tr>
<tr>
<td id="L1784" class="blob-num js-line-number" data-line-number="1784"></td>
<td id="LC1784" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1785" class="blob-num js-line-number" data-line-number="1785"></td>
<td id="LC1785" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">hasClass</span></span></td>
</tr>
<tr>
<td id="L1786" class="blob-num js-line-number" data-line-number="1786"></td>
<td id="LC1786" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1787" class="blob-num js-line-number" data-line-number="1787"></td>
<td id="LC1787" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element like object to add handler to.</span></td>
</tr>
<tr>
<td id="L1788" class="blob-num js-line-number" data-line-number="1788"></td>
<td id="LC1788" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Class name</span></td>
</tr>
<tr>
<td id="L1789" class="blob-num js-line-number" data-line-number="1789"></td>
<td id="LC1789" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1790" class="blob-num js-line-number" data-line-number="1790"></td>
<td id="LC1790" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">hasClass</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L1791" class="blob-num js-line-number" data-line-number="1791"></td>
<td id="LC1791" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">obj</span>.<span class="pl-c1">className</span>) {</td>
</tr>
<tr>
<td id="L1792" class="blob-num js-line-number" data-line-number="1792"></td>
<td id="LC1792" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L1793" class="blob-num js-line-number" data-line-number="1793"></td>
<td id="LC1793" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1794" class="blob-num js-line-number" data-line-number="1794"></td>
<td id="LC1794" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1795" class="blob-num js-line-number" data-line-number="1795"></td>
<td id="LC1795" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> regExp <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">RegExp</span>(<span class="pl-s"><span class="pl-pds">"</span>(^|<span class="pl-cce">\\</span>s+)<span class="pl-pds">"</span></span><span class="pl-k">+</span>name<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">"</span>(<span class="pl-cce">\\</span>s+|$)<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L1796" class="blob-num js-line-number" data-line-number="1796"></td>
<td id="LC1796" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">regExp</span>.<span class="pl-c1">test</span>(<span class="pl-smi">obj</span>.<span class="pl-c1">className</span>);</td>
</tr>
<tr>
<td id="L1797" class="blob-num js-line-number" data-line-number="1797"></td>
<td id="LC1797" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1798" class="blob-num js-line-number" data-line-number="1798"></td>
<td id="LC1798" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1799" class="blob-num js-line-number" data-line-number="1799"></td>
<td id="LC1799" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1800" class="blob-num js-line-number" data-line-number="1800"></td>
<td id="LC1800" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Adds specified className to specified DOM element.</span></td>
</tr>
<tr>
<td id="L1801" class="blob-num js-line-number" data-line-number="1801"></td>
<td id="LC1801" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1802" class="blob-num js-line-number" data-line-number="1802"></td>
<td id="LC1802" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">addClass</span></span></td>
</tr>
<tr>
<td id="L1803" class="blob-num js-line-number" data-line-number="1803"></td>
<td id="LC1803" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1804" class="blob-num js-line-number" data-line-number="1804"></td>
<td id="LC1804" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element like object to add handler to.</span></td>
</tr>
<tr>
<td id="L1805" class="blob-num js-line-number" data-line-number="1805"></td>
<td id="LC1805" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Class name</span></td>
</tr>
<tr>
<td id="L1806" class="blob-num js-line-number" data-line-number="1806"></td>
<td id="LC1806" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1807" class="blob-num js-line-number" data-line-number="1807"></td>
<td id="LC1807" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">addClass</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L1808" class="blob-num js-line-number" data-line-number="1808"></td>
<td id="LC1808" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-en">hasClass</span>(obj, name)) {</td>
</tr>
<tr>
<td id="L1809" class="blob-num js-line-number" data-line-number="1809"></td>
<td id="LC1809" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">className</span> <span class="pl-k">=</span> <span class="pl-k">!</span><span class="pl-smi">obj</span>.<span class="pl-c1">className</span> <span class="pl-k">?</span> name <span class="pl-k">:</span> <span class="pl-smi">obj</span>.<span class="pl-c1">className</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">+</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span> <span class="pl-pds">'</span></span> <span class="pl-k">+</span> name;</td>
</tr>
<tr>
<td id="L1810" class="blob-num js-line-number" data-line-number="1810"></td>
<td id="LC1810" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1811" class="blob-num js-line-number" data-line-number="1811"></td>
<td id="LC1811" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1812" class="blob-num js-line-number" data-line-number="1812"></td>
<td id="LC1812" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1813" class="blob-num js-line-number" data-line-number="1813"></td>
<td id="LC1813" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1814" class="blob-num js-line-number" data-line-number="1814"></td>
<td id="LC1814" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Removes specified className from specified DOM element.</span></td>
</tr>
<tr>
<td id="L1815" class="blob-num js-line-number" data-line-number="1815"></td>
<td id="LC1815" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1816" class="blob-num js-line-number" data-line-number="1816"></td>
<td id="LC1816" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">removeClass</span></span></td>
</tr>
<tr>
<td id="L1817" class="blob-num js-line-number" data-line-number="1817"></td>
<td id="LC1817" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1818" class="blob-num js-line-number" data-line-number="1818"></td>
<td id="LC1818" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element like object to add handler to.</span></td>
</tr>
<tr>
<td id="L1819" class="blob-num js-line-number" data-line-number="1819"></td>
<td id="LC1819" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Class name</span></td>
</tr>
<tr>
<td id="L1820" class="blob-num js-line-number" data-line-number="1820"></td>
<td id="LC1820" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1821" class="blob-num js-line-number" data-line-number="1821"></td>
<td id="LC1821" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">removeClass</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L1822" class="blob-num js-line-number" data-line-number="1822"></td>
<td id="LC1822" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-c1">className</span>) {</td>
</tr>
<tr>
<td id="L1823" class="blob-num js-line-number" data-line-number="1823"></td>
<td id="LC1823" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> regExp <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">RegExp</span>(<span class="pl-s"><span class="pl-pds">"</span>(^|<span class="pl-cce">\\</span>s+)<span class="pl-pds">"</span></span><span class="pl-k">+</span>name<span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">"</span>(<span class="pl-cce">\\</span>s+|$)<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L1824" class="blob-num js-line-number" data-line-number="1824"></td>
<td id="LC1824" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">className</span> <span class="pl-k">=</span> <span class="pl-smi">obj</span>.<span class="pl-c1">className</span>.<span class="pl-c1">replace</span>(regExp, <span class="pl-k">function</span>(<span class="pl-smi">$0</span>, <span class="pl-smi">$1</span>, <span class="pl-smi">$2</span>) {</td>
</tr>
<tr>
<td id="L1825" class="blob-num js-line-number" data-line-number="1825"></td>
<td id="LC1825" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> $1 <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span> <span class="pl-pds">'</span></span> <span class="pl-k">&&</span> $2 <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span> <span class="pl-pds">'</span></span> <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span> <span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L1826" class="blob-num js-line-number" data-line-number="1826"></td>
<td id="LC1826" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L1827" class="blob-num js-line-number" data-line-number="1827"></td>
<td id="LC1827" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1828" class="blob-num js-line-number" data-line-number="1828"></td>
<td id="LC1828" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1829" class="blob-num js-line-number" data-line-number="1829"></td>
<td id="LC1829" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1830" class="blob-num js-line-number" data-line-number="1830"></td>
<td id="LC1830" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1831" class="blob-num js-line-number" data-line-number="1831"></td>
<td id="LC1831" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns a given computed style of a DOM element.</span></td>
</tr>
<tr>
<td id="L1832" class="blob-num js-line-number" data-line-number="1832"></td>
<td id="LC1832" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1833" class="blob-num js-line-number" data-line-number="1833"></td>
<td id="LC1833" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getStyle</span></span></td>
</tr>
<tr>
<td id="L1834" class="blob-num js-line-number" data-line-number="1834"></td>
<td id="LC1834" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1835" class="blob-num js-line-number" data-line-number="1835"></td>
<td id="LC1835" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element like object.</span></td>
</tr>
<tr>
<td id="L1836" class="blob-num js-line-number" data-line-number="1836"></td>
<td id="LC1836" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Style you want to get from the DOM element</span></td>
</tr>
<tr>
<td id="L1837" class="blob-num js-line-number" data-line-number="1837"></td>
<td id="LC1837" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1838" class="blob-num js-line-number" data-line-number="1838"></td>
<td id="LC1838" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">getStyle</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L1839" class="blob-num js-line-number" data-line-number="1839"></td>
<td id="LC1839" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-smi">currentStyle</span>) {</td>
</tr>
<tr>
<td id="L1840" class="blob-num js-line-number" data-line-number="1840"></td>
<td id="LC1840" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">obj</span>.<span class="pl-smi">currentStyle</span>[name];</td>
</tr>
<tr>
<td id="L1841" class="blob-num js-line-number" data-line-number="1841"></td>
<td id="LC1841" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-c1">window</span>.<span class="pl-smi">getComputedStyle</span>) {</td>
</tr>
<tr>
<td id="L1842" class="blob-num js-line-number" data-line-number="1842"></td>
<td id="LC1842" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">window</span>.<span class="pl-en">getComputedStyle</span>(obj, <span class="pl-c1">null</span>)[name];</td>
</tr>
<tr>
<td id="L1843" class="blob-num js-line-number" data-line-number="1843"></td>
<td id="LC1843" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1844" class="blob-num js-line-number" data-line-number="1844"></td>
<td id="LC1844" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1845" class="blob-num js-line-number" data-line-number="1845"></td>
<td id="LC1845" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1846" class="blob-num js-line-number" data-line-number="1846"></td>
<td id="LC1846" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1847" class="blob-num js-line-number" data-line-number="1847"></td>
<td id="LC1847" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1848" class="blob-num js-line-number" data-line-number="1848"></td>
<td id="LC1848" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the absolute x, y position of an Element. The position will be returned in a object with x, y fields.</span></td>
</tr>
<tr>
<td id="L1849" class="blob-num js-line-number" data-line-number="1849"></td>
<td id="LC1849" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1850" class="blob-num js-line-number" data-line-number="1850"></td>
<td id="LC1850" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getPos</span></span></td>
</tr>
<tr>
<td id="L1851" class="blob-num js-line-number" data-line-number="1851"></td>
<td id="LC1851" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1852" class="blob-num js-line-number" data-line-number="1852"></td>
<td id="LC1852" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Element}</span> <span class="pl-smi">node</span> HTML element or element id to get x, y position from.</span></td>
</tr>
<tr>
<td id="L1853" class="blob-num js-line-number" data-line-number="1853"></td>
<td id="LC1853" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Element}</span> <span class="pl-smi">root</span> Optional root element to stop calculations at.</span></td>
</tr>
<tr>
<td id="L1854" class="blob-num js-line-number" data-line-number="1854"></td>
<td id="LC1854" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{object}</span> Absolute position of the specified element object with x, y fields.</span></td>
</tr>
<tr>
<td id="L1855" class="blob-num js-line-number" data-line-number="1855"></td>
<td id="LC1855" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1856" class="blob-num js-line-number" data-line-number="1856"></td>
<td id="LC1856" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">getPos</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">node</span>, <span class="pl-smi">root</span>) {</td>
</tr>
<tr>
<td id="L1857" class="blob-num js-line-number" data-line-number="1857"></td>
<td id="LC1857" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> x <span class="pl-k">=</span> <span class="pl-c1">0</span>, y <span class="pl-k">=</span> <span class="pl-c1">0</span>, parent, doc <span class="pl-k">=</span> <span class="pl-c1">document</span>, nodeRect, rootRect;</td>
</tr>
<tr>
<td id="L1858" class="blob-num js-line-number" data-line-number="1858"></td>
<td id="LC1858" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1859" class="blob-num js-line-number" data-line-number="1859"></td>
<td id="LC1859" class="blob-code blob-code-inner js-file-line"> node <span class="pl-k">=</span> node;</td>
</tr>
<tr>
<td id="L1860" class="blob-num js-line-number" data-line-number="1860"></td>
<td id="LC1860" class="blob-code blob-code-inner js-file-line"> root <span class="pl-k">=</span> root <span class="pl-k">||</span> <span class="pl-smi">doc</span>.<span class="pl-c1">body</span>;</td>
</tr>
<tr>
<td id="L1861" class="blob-num js-line-number" data-line-number="1861"></td>
<td id="LC1861" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1862" class="blob-num js-line-number" data-line-number="1862"></td>
<td id="LC1862" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Returns the x, y cordinate for an element on IE 6 and IE 7</span></td>
</tr>
<tr>
<td id="L1863" class="blob-num js-line-number" data-line-number="1863"></td>
<td id="LC1863" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">getIEPos</span>(<span class="pl-smi">node</span>) {</td>
</tr>
<tr>
<td id="L1864" class="blob-num js-line-number" data-line-number="1864"></td>
<td id="LC1864" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> bodyElm, rect, x <span class="pl-k">=</span> <span class="pl-c1">0</span>, y <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L1865" class="blob-num js-line-number" data-line-number="1865"></td>
<td id="LC1865" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1866" class="blob-num js-line-number" data-line-number="1866"></td>
<td id="LC1866" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (node) {</td>
</tr>
<tr>
<td id="L1867" class="blob-num js-line-number" data-line-number="1867"></td>
<td id="LC1867" class="blob-code blob-code-inner js-file-line"> rect <span class="pl-k">=</span> <span class="pl-smi">node</span>.<span class="pl-c1">getBoundingClientRect</span>();</td>
</tr>
<tr>
<td id="L1868" class="blob-num js-line-number" data-line-number="1868"></td>
<td id="LC1868" class="blob-code blob-code-inner js-file-line"> bodyElm <span class="pl-k">=</span> <span class="pl-smi">doc</span>.<span class="pl-smi">compatMode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">"</span>CSS1Compat<span class="pl-pds">"</span></span> <span class="pl-k">?</span> <span class="pl-smi">doc</span>.<span class="pl-c1">documentElement</span> <span class="pl-k">:</span> <span class="pl-smi">doc</span>.<span class="pl-c1">body</span>;</td>
</tr>
<tr>
<td id="L1869" class="blob-num js-line-number" data-line-number="1869"></td>
<td id="LC1869" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">=</span> <span class="pl-smi">rect</span>.<span class="pl-c1">left</span> <span class="pl-k">+</span> <span class="pl-smi">bodyElm</span>.<span class="pl-smi">scrollLeft</span>;</td>
</tr>
<tr>
<td id="L1870" class="blob-num js-line-number" data-line-number="1870"></td>
<td id="LC1870" class="blob-code blob-code-inner js-file-line"> y <span class="pl-k">=</span> <span class="pl-smi">rect</span>.<span class="pl-c1">top</span> <span class="pl-k">+</span> <span class="pl-smi">bodyElm</span>.<span class="pl-smi">scrollTop</span>;</td>
</tr>
<tr>
<td id="L1871" class="blob-num js-line-number" data-line-number="1871"></td>
<td id="LC1871" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1872" class="blob-num js-line-number" data-line-number="1872"></td>
<td id="LC1872" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1873" class="blob-num js-line-number" data-line-number="1873"></td>
<td id="LC1873" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1874" class="blob-num js-line-number" data-line-number="1874"></td>
<td id="LC1874" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">:</span> x,</td>
</tr>
<tr>
<td id="L1875" class="blob-num js-line-number" data-line-number="1875"></td>
<td id="LC1875" class="blob-code blob-code-inner js-file-line"> y <span class="pl-k">:</span> y</td>
</tr>
<tr>
<td id="L1876" class="blob-num js-line-number" data-line-number="1876"></td>
<td id="LC1876" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1877" class="blob-num js-line-number" data-line-number="1877"></td>
<td id="LC1877" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1878" class="blob-num js-line-number" data-line-number="1878"></td>
<td id="LC1878" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1879" class="blob-num js-line-number" data-line-number="1879"></td>
<td id="LC1879" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Use getBoundingClientRect on IE 6 and IE 7 but not on IE 8 in standards mode</span></td>
</tr>
<tr>
<td id="L1880" class="blob-num js-line-number" data-line-number="1880"></td>
<td id="LC1880" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (node <span class="pl-k">&&</span> <span class="pl-smi">node</span>.<span class="pl-smi">getBoundingClientRect</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> (<span class="pl-k">!</span><span class="pl-smi">doc</span>.<span class="pl-smi">documentMode</span> <span class="pl-k">||</span> <span class="pl-smi">doc</span>.<span class="pl-smi">documentMode</span> <span class="pl-k"><</span> <span class="pl-c1">8</span>)) {</td>
</tr>
<tr>
<td id="L1881" class="blob-num js-line-number" data-line-number="1881"></td>
<td id="LC1881" class="blob-code blob-code-inner js-file-line"> nodeRect <span class="pl-k">=</span> <span class="pl-en">getIEPos</span>(node);</td>
</tr>
<tr>
<td id="L1882" class="blob-num js-line-number" data-line-number="1882"></td>
<td id="LC1882" class="blob-code blob-code-inner js-file-line"> rootRect <span class="pl-k">=</span> <span class="pl-en">getIEPos</span>(root);</td>
</tr>
<tr>
<td id="L1883" class="blob-num js-line-number" data-line-number="1883"></td>
<td id="LC1883" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1884" class="blob-num js-line-number" data-line-number="1884"></td>
<td id="LC1884" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1885" class="blob-num js-line-number" data-line-number="1885"></td>
<td id="LC1885" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">:</span> <span class="pl-smi">nodeRect</span>.<span class="pl-c1">x</span> <span class="pl-k">-</span> <span class="pl-smi">rootRect</span>.<span class="pl-c1">x</span>,</td>
</tr>
<tr>
<td id="L1886" class="blob-num js-line-number" data-line-number="1886"></td>
<td id="LC1886" class="blob-code blob-code-inner js-file-line"> y <span class="pl-k">:</span> <span class="pl-smi">nodeRect</span>.<span class="pl-c1">y</span> <span class="pl-k">-</span> <span class="pl-smi">rootRect</span>.<span class="pl-c1">y</span></td>
</tr>
<tr>
<td id="L1887" class="blob-num js-line-number" data-line-number="1887"></td>
<td id="LC1887" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1888" class="blob-num js-line-number" data-line-number="1888"></td>
<td id="LC1888" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1889" class="blob-num js-line-number" data-line-number="1889"></td>
<td id="LC1889" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1890" class="blob-num js-line-number" data-line-number="1890"></td>
<td id="LC1890" class="blob-code blob-code-inner js-file-line"> parent <span class="pl-k">=</span> node;</td>
</tr>
<tr>
<td id="L1891" class="blob-num js-line-number" data-line-number="1891"></td>
<td id="LC1891" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (parent <span class="pl-k">&&</span> parent <span class="pl-k">!=</span> root <span class="pl-k">&&</span> <span class="pl-smi">parent</span>.<span class="pl-c1">nodeType</span>) {</td>
</tr>
<tr>
<td id="L1892" class="blob-num js-line-number" data-line-number="1892"></td>
<td id="LC1892" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">+=</span> <span class="pl-smi">parent</span>.<span class="pl-smi">offsetLeft</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L1893" class="blob-num js-line-number" data-line-number="1893"></td>
<td id="LC1893" class="blob-code blob-code-inner js-file-line"> y <span class="pl-k">+=</span> <span class="pl-smi">parent</span>.<span class="pl-smi">offsetTop</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L1894" class="blob-num js-line-number" data-line-number="1894"></td>
<td id="LC1894" class="blob-code blob-code-inner js-file-line"> parent <span class="pl-k">=</span> <span class="pl-smi">parent</span>.<span class="pl-smi">offsetParent</span>;</td>
</tr>
<tr>
<td id="L1895" class="blob-num js-line-number" data-line-number="1895"></td>
<td id="LC1895" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1896" class="blob-num js-line-number" data-line-number="1896"></td>
<td id="LC1896" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1897" class="blob-num js-line-number" data-line-number="1897"></td>
<td id="LC1897" class="blob-code blob-code-inner js-file-line"> parent <span class="pl-k">=</span> <span class="pl-smi">node</span>.<span class="pl-c1">parentNode</span>;</td>
</tr>
<tr>
<td id="L1898" class="blob-num js-line-number" data-line-number="1898"></td>
<td id="LC1898" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (parent <span class="pl-k">&&</span> parent <span class="pl-k">!=</span> root <span class="pl-k">&&</span> <span class="pl-smi">parent</span>.<span class="pl-c1">nodeType</span>) {</td>
</tr>
<tr>
<td id="L1899" class="blob-num js-line-number" data-line-number="1899"></td>
<td id="LC1899" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">-=</span> <span class="pl-smi">parent</span>.<span class="pl-smi">scrollLeft</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L1900" class="blob-num js-line-number" data-line-number="1900"></td>
<td id="LC1900" class="blob-code blob-code-inner js-file-line"> y <span class="pl-k">-=</span> <span class="pl-smi">parent</span>.<span class="pl-smi">scrollTop</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L1901" class="blob-num js-line-number" data-line-number="1901"></td>
<td id="LC1901" class="blob-code blob-code-inner js-file-line"> parent <span class="pl-k">=</span> <span class="pl-smi">parent</span>.<span class="pl-c1">parentNode</span>;</td>
</tr>
<tr>
<td id="L1902" class="blob-num js-line-number" data-line-number="1902"></td>
<td id="LC1902" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1903" class="blob-num js-line-number" data-line-number="1903"></td>
<td id="LC1903" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1904" class="blob-num js-line-number" data-line-number="1904"></td>
<td id="LC1904" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1905" class="blob-num js-line-number" data-line-number="1905"></td>
<td id="LC1905" class="blob-code blob-code-inner js-file-line"> x <span class="pl-k">:</span> x,</td>
</tr>
<tr>
<td id="L1906" class="blob-num js-line-number" data-line-number="1906"></td>
<td id="LC1906" class="blob-code blob-code-inner js-file-line"> y <span class="pl-k">:</span> y</td>
</tr>
<tr>
<td id="L1907" class="blob-num js-line-number" data-line-number="1907"></td>
<td id="LC1907" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1908" class="blob-num js-line-number" data-line-number="1908"></td>
<td id="LC1908" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1909" class="blob-num js-line-number" data-line-number="1909"></td>
<td id="LC1909" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1910" class="blob-num js-line-number" data-line-number="1910"></td>
<td id="LC1910" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1911" class="blob-num js-line-number" data-line-number="1911"></td>
<td id="LC1911" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the size of the specified node in pixels.</span></td>
</tr>
<tr>
<td id="L1912" class="blob-num js-line-number" data-line-number="1912"></td>
<td id="LC1912" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1913" class="blob-num js-line-number" data-line-number="1913"></td>
<td id="LC1913" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getSize</span></span></td>
</tr>
<tr>
<td id="L1914" class="blob-num js-line-number" data-line-number="1914"></td>
<td id="LC1914" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L1915" class="blob-num js-line-number" data-line-number="1915"></td>
<td id="LC1915" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Node}</span> <span class="pl-smi">node</span> Node to get the size of.</span></td>
</tr>
<tr>
<td id="L1916" class="blob-num js-line-number" data-line-number="1916"></td>
<td id="LC1916" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Object}</span> Object with a w and h property.</span></td>
</tr>
<tr>
<td id="L1917" class="blob-num js-line-number" data-line-number="1917"></td>
<td id="LC1917" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1918" class="blob-num js-line-number" data-line-number="1918"></td>
<td id="LC1918" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">getSize</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">node</span>) {</td>
</tr>
<tr>
<td id="L1919" class="blob-num js-line-number" data-line-number="1919"></td>
<td id="LC1919" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1920" class="blob-num js-line-number" data-line-number="1920"></td>
<td id="LC1920" class="blob-code blob-code-inner js-file-line"> w <span class="pl-k">:</span> <span class="pl-smi">node</span>.<span class="pl-smi">offsetWidth</span> <span class="pl-k">||</span> <span class="pl-smi">node</span>.<span class="pl-smi">clientWidth</span>,</td>
</tr>
<tr>
<td id="L1921" class="blob-num js-line-number" data-line-number="1921"></td>
<td id="LC1921" class="blob-code blob-code-inner js-file-line"> h <span class="pl-k">:</span> <span class="pl-smi">node</span>.<span class="pl-smi">offsetHeight</span> <span class="pl-k">||</span> <span class="pl-smi">node</span>.<span class="pl-smi">clientHeight</span></td>
</tr>
<tr>
<td id="L1922" class="blob-num js-line-number" data-line-number="1922"></td>
<td id="LC1922" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1923" class="blob-num js-line-number" data-line-number="1923"></td>
<td id="LC1923" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1924" class="blob-num js-line-number" data-line-number="1924"></td>
<td id="LC1924" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1925" class="blob-num js-line-number" data-line-number="1925"></td>
<td id="LC1925" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L1926" class="blob-num js-line-number" data-line-number="1926"></td>
<td id="LC1926" class="blob-code blob-code-inner js-file-line"> get<span class="pl-k">:</span> get,</td>
</tr>
<tr>
<td id="L1927" class="blob-num js-line-number" data-line-number="1927"></td>
<td id="LC1927" class="blob-code blob-code-inner js-file-line"> hasClass<span class="pl-k">:</span> hasClass,</td>
</tr>
<tr>
<td id="L1928" class="blob-num js-line-number" data-line-number="1928"></td>
<td id="LC1928" class="blob-code blob-code-inner js-file-line"> addClass<span class="pl-k">:</span> addClass,</td>
</tr>
<tr>
<td id="L1929" class="blob-num js-line-number" data-line-number="1929"></td>
<td id="LC1929" class="blob-code blob-code-inner js-file-line"> removeClass<span class="pl-k">:</span> removeClass,</td>
</tr>
<tr>
<td id="L1930" class="blob-num js-line-number" data-line-number="1930"></td>
<td id="LC1930" class="blob-code blob-code-inner js-file-line"> getStyle<span class="pl-k">:</span> getStyle,</td>
</tr>
<tr>
<td id="L1931" class="blob-num js-line-number" data-line-number="1931"></td>
<td id="LC1931" class="blob-code blob-code-inner js-file-line"> getPos<span class="pl-k">:</span> getPos,</td>
</tr>
<tr>
<td id="L1932" class="blob-num js-line-number" data-line-number="1932"></td>
<td id="LC1932" class="blob-code blob-code-inner js-file-line"> getSize<span class="pl-k">:</span> getSize</td>
</tr>
<tr>
<td id="L1933" class="blob-num js-line-number" data-line-number="1933"></td>
<td id="LC1933" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L1934" class="blob-num js-line-number" data-line-number="1934"></td>
<td id="LC1934" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L1935" class="blob-num js-line-number" data-line-number="1935"></td>
<td id="LC1935" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1936" class="blob-num js-line-number" data-line-number="1936"></td>
<td id="LC1936" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/EventTarget.js</span></td>
</tr>
<tr>
<td id="L1937" class="blob-num js-line-number" data-line-number="1937"></td>
<td id="LC1937" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1938" class="blob-num js-line-number" data-line-number="1938"></td>
<td id="LC1938" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1939" class="blob-num js-line-number" data-line-number="1939"></td>
<td id="LC1939" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * EventTarget.js</span></td>
</tr>
<tr>
<td id="L1940" class="blob-num js-line-number" data-line-number="1940"></td>
<td id="LC1940" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L1941" class="blob-num js-line-number" data-line-number="1941"></td>
<td id="LC1941" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L1942" class="blob-num js-line-number" data-line-number="1942"></td>
<td id="LC1942" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L1943" class="blob-num js-line-number" data-line-number="1943"></td>
<td id="LC1943" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L1944" class="blob-num js-line-number" data-line-number="1944"></td>
<td id="LC1944" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L1945" class="blob-num js-line-number" data-line-number="1945"></td>
<td id="LC1945" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L1946" class="blob-num js-line-number" data-line-number="1946"></td>
<td id="LC1946" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1947" class="blob-num js-line-number" data-line-number="1947"></td>
<td id="LC1947" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1948" class="blob-num js-line-number" data-line-number="1948"></td>
<td id="LC1948" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/EventTarget<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L1949" class="blob-num js-line-number" data-line-number="1949"></td>
<td id="LC1949" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Env<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1950" class="blob-num js-line-number" data-line-number="1950"></td>
<td id="LC1950" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/Exceptions<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L1951" class="blob-num js-line-number" data-line-number="1951"></td>
<td id="LC1951" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L1952" class="blob-num js-line-number" data-line-number="1952"></td>
<td id="LC1952" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Env</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L1953" class="blob-num js-line-number" data-line-number="1953"></td>
<td id="LC1953" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1954" class="blob-num js-line-number" data-line-number="1954"></td>
<td id="LC1954" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> hash of event listeners by object uid</span></td>
</tr>
<tr>
<td id="L1955" class="blob-num js-line-number" data-line-number="1955"></td>
<td id="LC1955" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> eventpool <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L1956" class="blob-num js-line-number" data-line-number="1956"></td>
<td id="LC1956" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1957" class="blob-num js-line-number" data-line-number="1957"></td>
<td id="LC1957" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1958" class="blob-num js-line-number" data-line-number="1958"></td>
<td id="LC1958" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Parent object for all event dispatching components and objects</span></td>
</tr>
<tr>
<td id="L1959" class="blob-num js-line-number" data-line-number="1959"></td>
<td id="LC1959" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1960" class="blob-num js-line-number" data-line-number="1960"></td>
<td id="LC1960" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/core/EventTarget</span></td>
</tr>
<tr>
<td id="L1961" class="blob-num js-line-number" data-line-number="1961"></td>
<td id="LC1961" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span> EventTarget</span></td>
</tr>
<tr>
<td id="L1962" class="blob-num js-line-number" data-line-number="1962"></td>
<td id="LC1962" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1963" class="blob-num js-line-number" data-line-number="1963"></td>
<td id="LC1963" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">EventTarget</span>() {</td>
</tr>
<tr>
<td id="L1964" class="blob-num js-line-number" data-line-number="1964"></td>
<td id="LC1964" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1965" class="blob-num js-line-number" data-line-number="1965"></td>
<td id="LC1965" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the event dispatcher, usually overriden by children</span></td>
</tr>
<tr>
<td id="L1966" class="blob-num js-line-number" data-line-number="1966"></td>
<td id="LC1966" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1967" class="blob-num js-line-number" data-line-number="1967"></td>
<td id="LC1967" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L1968" class="blob-num js-line-number" data-line-number="1968"></td>
<td id="LC1968" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> String</span></td>
</tr>
<tr>
<td id="L1969" class="blob-num js-line-number" data-line-number="1969"></td>
<td id="LC1969" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1970" class="blob-num js-line-number" data-line-number="1970"></td>
<td id="LC1970" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>();</td>
</tr>
<tr>
<td id="L1971" class="blob-num js-line-number" data-line-number="1971"></td>
<td id="LC1971" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1972" class="blob-num js-line-number" data-line-number="1972"></td>
<td id="LC1972" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1973" class="blob-num js-line-number" data-line-number="1973"></td>
<td id="LC1973" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1974" class="blob-num js-line-number" data-line-number="1974"></td>
<td id="LC1974" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">EventTarget</span>.<span class="pl-c1">prototype</span>, {</td>
</tr>
<tr>
<td id="L1975" class="blob-num js-line-number" data-line-number="1975"></td>
<td id="LC1975" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1976" class="blob-num js-line-number" data-line-number="1976"></td>
<td id="LC1976" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1977" class="blob-num js-line-number" data-line-number="1977"></td>
<td id="LC1977" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Can be called from within a child in order to acquire uniqie id in automated manner</span></td>
</tr>
<tr>
<td id="L1978" class="blob-num js-line-number" data-line-number="1978"></td>
<td id="LC1978" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1979" class="blob-num js-line-number" data-line-number="1979"></td>
<td id="LC1979" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">init</span></span></td>
</tr>
<tr>
<td id="L1980" class="blob-num js-line-number" data-line-number="1980"></td>
<td id="LC1980" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1981" class="blob-num js-line-number" data-line-number="1981"></td>
<td id="LC1981" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L1982" class="blob-num js-line-number" data-line-number="1982"></td>
<td id="LC1982" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-smi">uid</span>) {</td>
</tr>
<tr>
<td id="L1983" class="blob-num js-line-number" data-line-number="1983"></td>
<td id="LC1983" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L1984" class="blob-num js-line-number" data-line-number="1984"></td>
<td id="LC1984" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L1985" class="blob-num js-line-number" data-line-number="1985"></td>
<td id="LC1985" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L1986" class="blob-num js-line-number" data-line-number="1986"></td>
<td id="LC1986" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1987" class="blob-num js-line-number" data-line-number="1987"></td>
<td id="LC1987" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L1988" class="blob-num js-line-number" data-line-number="1988"></td>
<td id="LC1988" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Register a handler to a specific event dispatched by the object</span></td>
</tr>
<tr>
<td id="L1989" class="blob-num js-line-number" data-line-number="1989"></td>
<td id="LC1989" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L1990" class="blob-num js-line-number" data-line-number="1990"></td>
<td id="LC1990" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">addEventListener</span></span></td>
</tr>
<tr>
<td id="L1991" class="blob-num js-line-number" data-line-number="1991"></td>
<td id="LC1991" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Type or basically a name of the event to subscribe to</span></td>
</tr>
<tr>
<td id="L1992" class="blob-num js-line-number" data-line-number="1992"></td>
<td id="LC1992" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">fn</span> Callback function that will be called when event happens</span></td>
</tr>
<tr>
<td id="L1993" class="blob-num js-line-number" data-line-number="1993"></td>
<td id="LC1993" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[priority<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">0</span></span>]</span> Priority of the event handler - handlers with higher priorities will be called first</span></td>
</tr>
<tr>
<td id="L1994" class="blob-num js-line-number" data-line-number="1994"></td>
<td id="LC1994" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[scope<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">this</span></span>]</span> A scope to invoke event handler in</span></td>
</tr>
<tr>
<td id="L1995" class="blob-num js-line-number" data-line-number="1995"></td>
<td id="LC1995" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L1996" class="blob-num js-line-number" data-line-number="1996"></td>
<td id="LC1996" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">addEventListener</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">fn</span>, <span class="pl-smi">priority</span>, <span class="pl-smi">scope</span>) {</td>
</tr>
<tr>
<td id="L1997" class="blob-num js-line-number" data-line-number="1997"></td>
<td id="LC1997" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>, list;</td>
</tr>
<tr>
<td id="L1998" class="blob-num js-line-number" data-line-number="1998"></td>
<td id="LC1998" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L1999" class="blob-num js-line-number" data-line-number="1999"></td>
<td id="LC1999" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> without uid no event handlers can be added, so make sure we got one</span></td>
</tr>
<tr>
<td id="L2000" class="blob-num js-line-number" data-line-number="2000"></td>
<td id="LC2000" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-en">hasOwnProperty</span>(<span class="pl-s"><span class="pl-pds">'</span>uid<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L2001" class="blob-num js-line-number" data-line-number="2001"></td>
<td id="LC2001" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L2002" class="blob-num js-line-number" data-line-number="2002"></td>
<td id="LC2002" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2003" class="blob-num js-line-number" data-line-number="2003"></td>
<td id="LC2003" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2004" class="blob-num js-line-number" data-line-number="2004"></td>
<td id="LC2004" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(type);</td>
</tr>
<tr>
<td id="L2005" class="blob-num js-line-number" data-line-number="2005"></td>
<td id="LC2005" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2006" class="blob-num js-line-number" data-line-number="2006"></td>
<td id="LC2006" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(type)) {</td>
</tr>
<tr>
<td id="L2007" class="blob-num js-line-number" data-line-number="2007"></td>
<td id="LC2007" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> multiple event types were passed for one handler</span></td>
</tr>
<tr>
<td id="L2008" class="blob-num js-line-number" data-line-number="2008"></td>
<td id="LC2008" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">type</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">+</span><span class="pl-pds">/</span></span>), <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L2009" class="blob-num js-line-number" data-line-number="2009"></td>
<td id="LC2009" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">addEventListener</span>(type, fn, priority, scope);</td>
</tr>
<tr>
<td id="L2010" class="blob-num js-line-number" data-line-number="2010"></td>
<td id="LC2010" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2011" class="blob-num js-line-number" data-line-number="2011"></td>
<td id="LC2011" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L2012" class="blob-num js-line-number" data-line-number="2012"></td>
<td id="LC2012" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2013" class="blob-num js-line-number" data-line-number="2013"></td>
<td id="LC2013" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2014" class="blob-num js-line-number" data-line-number="2014"></td>
<td id="LC2014" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">type</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L2015" class="blob-num js-line-number" data-line-number="2015"></td>
<td id="LC2015" class="blob-code blob-code-inner js-file-line"> priority <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(priority, <span class="pl-c1">10</span>) <span class="pl-k">||</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L2016" class="blob-num js-line-number" data-line-number="2016"></td>
<td id="LC2016" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2017" class="blob-num js-line-number" data-line-number="2017"></td>
<td id="LC2017" class="blob-code blob-code-inner js-file-line"> list <span class="pl-k">=</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>] <span class="pl-k">&&</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>][type] <span class="pl-k">||</span> [];</td>
</tr>
<tr>
<td id="L2018" class="blob-num js-line-number" data-line-number="2018"></td>
<td id="LC2018" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">list</span>.<span class="pl-c1">push</span>({fn <span class="pl-k">:</span> fn, priority <span class="pl-k">:</span> priority, scope <span class="pl-k">:</span> scope <span class="pl-k">||</span> <span class="pl-c1">this</span>});</td>
</tr>
<tr>
<td id="L2019" class="blob-num js-line-number" data-line-number="2019"></td>
<td id="LC2019" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2020" class="blob-num js-line-number" data-line-number="2020"></td>
<td id="LC2020" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>]) {</td>
</tr>
<tr>
<td id="L2021" class="blob-num js-line-number" data-line-number="2021"></td>
<td id="LC2021" class="blob-code blob-code-inner js-file-line"> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>] <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L2022" class="blob-num js-line-number" data-line-number="2022"></td>
<td id="LC2022" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2023" class="blob-num js-line-number" data-line-number="2023"></td>
<td id="LC2023" class="blob-code blob-code-inner js-file-line"> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>][type] <span class="pl-k">=</span> list;</td>
</tr>
<tr>
<td id="L2024" class="blob-num js-line-number" data-line-number="2024"></td>
<td id="LC2024" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2025" class="blob-num js-line-number" data-line-number="2025"></td>
<td id="LC2025" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2026" class="blob-num js-line-number" data-line-number="2026"></td>
<td id="LC2026" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2027" class="blob-num js-line-number" data-line-number="2027"></td>
<td id="LC2027" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Check if any handlers were registered to the specified event</span></td>
</tr>
<tr>
<td id="L2028" class="blob-num js-line-number" data-line-number="2028"></td>
<td id="LC2028" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2029" class="blob-num js-line-number" data-line-number="2029"></td>
<td id="LC2029" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">hasEventListener</span></span></td>
</tr>
<tr>
<td id="L2030" class="blob-num js-line-number" data-line-number="2030"></td>
<td id="LC2030" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[type]</span> Type or basically a name of the event to check</span></td>
</tr>
<tr>
<td id="L2031" class="blob-num js-line-number" data-line-number="2031"></td>
<td id="LC2031" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Mixed}</span> Returns a handler if it was found and false, if - not</span></td>
</tr>
<tr>
<td id="L2032" class="blob-num js-line-number" data-line-number="2032"></td>
<td id="LC2032" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2033" class="blob-num js-line-number" data-line-number="2033"></td>
<td id="LC2033" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">hasEventListener</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L2034" class="blob-num js-line-number" data-line-number="2034"></td>
<td id="LC2034" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> list;</td>
</tr>
<tr>
<td id="L2035" class="blob-num js-line-number" data-line-number="2035"></td>
<td id="LC2035" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (type) {</td>
</tr>
<tr>
<td id="L2036" class="blob-num js-line-number" data-line-number="2036"></td>
<td id="LC2036" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">type</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L2037" class="blob-num js-line-number" data-line-number="2037"></td>
<td id="LC2037" class="blob-code blob-code-inner js-file-line"> list <span class="pl-k">=</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>] <span class="pl-k">&&</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>][type];</td>
</tr>
<tr>
<td id="L2038" class="blob-num js-line-number" data-line-number="2038"></td>
<td id="LC2038" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L2039" class="blob-num js-line-number" data-line-number="2039"></td>
<td id="LC2039" class="blob-code blob-code-inner js-file-line"> list <span class="pl-k">=</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L2040" class="blob-num js-line-number" data-line-number="2040"></td>
<td id="LC2040" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2041" class="blob-num js-line-number" data-line-number="2041"></td>
<td id="LC2041" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> list <span class="pl-k">?</span> list <span class="pl-k">:</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2042" class="blob-num js-line-number" data-line-number="2042"></td>
<td id="LC2042" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2043" class="blob-num js-line-number" data-line-number="2043"></td>
<td id="LC2043" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2044" class="blob-num js-line-number" data-line-number="2044"></td>
<td id="LC2044" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2045" class="blob-num js-line-number" data-line-number="2045"></td>
<td id="LC2045" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unregister the handler from the event, or if former was not specified - unregister all handlers</span></td>
</tr>
<tr>
<td id="L2046" class="blob-num js-line-number" data-line-number="2046"></td>
<td id="LC2046" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2047" class="blob-num js-line-number" data-line-number="2047"></td>
<td id="LC2047" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">removeEventListener</span></span></td>
</tr>
<tr>
<td id="L2048" class="blob-num js-line-number" data-line-number="2048"></td>
<td id="LC2048" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Type or basically a name of the event</span></td>
</tr>
<tr>
<td id="L2049" class="blob-num js-line-number" data-line-number="2049"></td>
<td id="LC2049" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">[fn]</span> Handler to unregister</span></td>
</tr>
<tr>
<td id="L2050" class="blob-num js-line-number" data-line-number="2050"></td>
<td id="LC2050" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2051" class="blob-num js-line-number" data-line-number="2051"></td>
<td id="LC2051" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeEventListener</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">fn</span>) {</td>
</tr>
<tr>
<td id="L2052" class="blob-num js-line-number" data-line-number="2052"></td>
<td id="LC2052" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>, list, i;</td>
</tr>
<tr>
<td id="L2053" class="blob-num js-line-number" data-line-number="2053"></td>
<td id="LC2053" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2054" class="blob-num js-line-number" data-line-number="2054"></td>
<td id="LC2054" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">type</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L2055" class="blob-num js-line-number" data-line-number="2055"></td>
<td id="LC2055" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2056" class="blob-num js-line-number" data-line-number="2056"></td>
<td id="LC2056" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(type)) {</td>
</tr>
<tr>
<td id="L2057" class="blob-num js-line-number" data-line-number="2057"></td>
<td id="LC2057" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> multiple event types were passed for one handler</span></td>
</tr>
<tr>
<td id="L2058" class="blob-num js-line-number" data-line-number="2058"></td>
<td id="LC2058" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">type</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">+</span><span class="pl-pds">/</span></span>), <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L2059" class="blob-num js-line-number" data-line-number="2059"></td>
<td id="LC2059" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">removeEventListener</span>(type, fn);</td>
</tr>
<tr>
<td id="L2060" class="blob-num js-line-number" data-line-number="2060"></td>
<td id="LC2060" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2061" class="blob-num js-line-number" data-line-number="2061"></td>
<td id="LC2061" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L2062" class="blob-num js-line-number" data-line-number="2062"></td>
<td id="LC2062" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2063" class="blob-num js-line-number" data-line-number="2063"></td>
<td id="LC2063" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2064" class="blob-num js-line-number" data-line-number="2064"></td>
<td id="LC2064" class="blob-code blob-code-inner js-file-line"> list <span class="pl-k">=</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>] <span class="pl-k">&&</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>][type];</td>
</tr>
<tr>
<td id="L2065" class="blob-num js-line-number" data-line-number="2065"></td>
<td id="LC2065" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2066" class="blob-num js-line-number" data-line-number="2066"></td>
<td id="LC2066" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (list) {</td>
</tr>
<tr>
<td id="L2067" class="blob-num js-line-number" data-line-number="2067"></td>
<td id="LC2067" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (fn) {</td>
</tr>
<tr>
<td id="L2068" class="blob-num js-line-number" data-line-number="2068"></td>
<td id="LC2068" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-smi">list</span>.<span class="pl-c1">length</span> <span class="pl-k">-</span> <span class="pl-c1">1</span>; i <span class="pl-k">>=</span> <span class="pl-c1">0</span>; i<span class="pl-k">--</span>) {</td>
</tr>
<tr>
<td id="L2069" class="blob-num js-line-number" data-line-number="2069"></td>
<td id="LC2069" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (list[i].<span class="pl-smi">fn</span> <span class="pl-k">===</span> fn) {</td>
</tr>
<tr>
<td id="L2070" class="blob-num js-line-number" data-line-number="2070"></td>
<td id="LC2070" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">list</span>.<span class="pl-c1">splice</span>(i, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L2071" class="blob-num js-line-number" data-line-number="2071"></td>
<td id="LC2071" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L2072" class="blob-num js-line-number" data-line-number="2072"></td>
<td id="LC2072" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2073" class="blob-num js-line-number" data-line-number="2073"></td>
<td id="LC2073" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2074" class="blob-num js-line-number" data-line-number="2074"></td>
<td id="LC2074" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L2075" class="blob-num js-line-number" data-line-number="2075"></td>
<td id="LC2075" class="blob-code blob-code-inner js-file-line"> list <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L2076" class="blob-num js-line-number" data-line-number="2076"></td>
<td id="LC2076" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2077" class="blob-num js-line-number" data-line-number="2077"></td>
<td id="LC2077" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2078" class="blob-num js-line-number" data-line-number="2078"></td>
<td id="LC2078" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> delete event list if it has become empty</span></td>
</tr>
<tr>
<td id="L2079" class="blob-num js-line-number" data-line-number="2079"></td>
<td id="LC2079" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">list</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L2080" class="blob-num js-line-number" data-line-number="2080"></td>
<td id="LC2080" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>][type];</td>
</tr>
<tr>
<td id="L2081" class="blob-num js-line-number" data-line-number="2081"></td>
<td id="LC2081" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2082" class="blob-num js-line-number" data-line-number="2082"></td>
<td id="LC2082" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> and object specific entry in a hash if it has no more listeners attached</span></td>
</tr>
<tr>
<td id="L2083" class="blob-num js-line-number" data-line-number="2083"></td>
<td id="LC2083" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>])) {</td>
</tr>
<tr>
<td id="L2084" class="blob-num js-line-number" data-line-number="2084"></td>
<td id="LC2084" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L2085" class="blob-num js-line-number" data-line-number="2085"></td>
<td id="LC2085" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2086" class="blob-num js-line-number" data-line-number="2086"></td>
<td id="LC2086" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2087" class="blob-num js-line-number" data-line-number="2087"></td>
<td id="LC2087" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2088" class="blob-num js-line-number" data-line-number="2088"></td>
<td id="LC2088" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2089" class="blob-num js-line-number" data-line-number="2089"></td>
<td id="LC2089" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2090" class="blob-num js-line-number" data-line-number="2090"></td>
<td id="LC2090" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2091" class="blob-num js-line-number" data-line-number="2091"></td>
<td id="LC2091" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Remove all event handlers from the object</span></td>
</tr>
<tr>
<td id="L2092" class="blob-num js-line-number" data-line-number="2092"></td>
<td id="LC2092" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2093" class="blob-num js-line-number" data-line-number="2093"></td>
<td id="LC2093" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">removeAllEventListeners</span></span></td>
</tr>
<tr>
<td id="L2094" class="blob-num js-line-number" data-line-number="2094"></td>
<td id="LC2094" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2095" class="blob-num js-line-number" data-line-number="2095"></td>
<td id="LC2095" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeAllEventListeners</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2096" class="blob-num js-line-number" data-line-number="2096"></td>
<td id="LC2096" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>]) {</td>
</tr>
<tr>
<td id="L2097" class="blob-num js-line-number" data-line-number="2097"></td>
<td id="LC2097" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> eventpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L2098" class="blob-num js-line-number" data-line-number="2098"></td>
<td id="LC2098" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2099" class="blob-num js-line-number" data-line-number="2099"></td>
<td id="LC2099" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2100" class="blob-num js-line-number" data-line-number="2100"></td>
<td id="LC2100" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2101" class="blob-num js-line-number" data-line-number="2101"></td>
<td id="LC2101" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2102" class="blob-num js-line-number" data-line-number="2102"></td>
<td id="LC2102" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatch the event</span></td>
</tr>
<tr>
<td id="L2103" class="blob-num js-line-number" data-line-number="2103"></td>
<td id="LC2103" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2104" class="blob-num js-line-number" data-line-number="2104"></td>
<td id="LC2104" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">dispatchEvent</span></span></td>
</tr>
<tr>
<td id="L2105" class="blob-num js-line-number" data-line-number="2105"></td>
<td id="LC2105" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String/Object}</span> <span class="pl-smi">Type</span> of event or event object to dispatch</span></td>
</tr>
<tr>
<td id="L2106" class="blob-num js-line-number" data-line-number="2106"></td>
<td id="LC2106" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> [...] Variable number of arguments to be passed to a handlers</span></td>
</tr>
<tr>
<td id="L2107" class="blob-num js-line-number" data-line-number="2107"></td>
<td id="LC2107" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span> true by default and false if any handler returned false</span></td>
</tr>
<tr>
<td id="L2108" class="blob-num js-line-number" data-line-number="2108"></td>
<td id="LC2108" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2109" class="blob-num js-line-number" data-line-number="2109"></td>
<td id="LC2109" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">dispatchEvent</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L2110" class="blob-num js-line-number" data-line-number="2110"></td>
<td id="LC2110" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> uid, list, args, tmpEvt, evt <span class="pl-k">=</span> {}, result <span class="pl-k">=</span> <span class="pl-c1">true</span>, undef;</td>
</tr>
<tr>
<td id="L2111" class="blob-num js-line-number" data-line-number="2111"></td>
<td id="LC2111" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2112" class="blob-num js-line-number" data-line-number="2112"></td>
<td id="LC2112" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(type) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2113" class="blob-num js-line-number" data-line-number="2113"></td>
<td id="LC2113" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> we can't use original object directly (because of Silverlight)</span></td>
</tr>
<tr>
<td id="L2114" class="blob-num js-line-number" data-line-number="2114"></td>
<td id="LC2114" class="blob-code blob-code-inner js-file-line"> tmpEvt <span class="pl-k">=</span> type;</td>
</tr>
<tr>
<td id="L2115" class="blob-num js-line-number" data-line-number="2115"></td>
<td id="LC2115" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2116" class="blob-num js-line-number" data-line-number="2116"></td>
<td id="LC2116" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-smi">tmpEvt</span>.<span class="pl-c1">type</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2117" class="blob-num js-line-number" data-line-number="2117"></td>
<td id="LC2117" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">tmpEvt</span>.<span class="pl-c1">type</span>;</td>
</tr>
<tr>
<td id="L2118" class="blob-num js-line-number" data-line-number="2118"></td>
<td id="LC2118" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2119" class="blob-num js-line-number" data-line-number="2119"></td>
<td id="LC2119" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">tmpEvt</span>.<span class="pl-smi">total</span> <span class="pl-k">!==</span> undef <span class="pl-k">&&</span> <span class="pl-smi">tmpEvt</span>.<span class="pl-smi">loaded</span> <span class="pl-k">!==</span> undef) { <span class="pl-c"><span class="pl-c">//</span> progress event</span></td>
</tr>
<tr>
<td id="L2120" class="blob-num js-line-number" data-line-number="2120"></td>
<td id="LC2120" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-smi">total</span> <span class="pl-k">=</span> <span class="pl-smi">tmpEvt</span>.<span class="pl-smi">total</span>;</td>
</tr>
<tr>
<td id="L2121" class="blob-num js-line-number" data-line-number="2121"></td>
<td id="LC2121" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-smi">loaded</span> <span class="pl-k">=</span> <span class="pl-smi">tmpEvt</span>.<span class="pl-smi">loaded</span>;</td>
</tr>
<tr>
<td id="L2122" class="blob-num js-line-number" data-line-number="2122"></td>
<td id="LC2122" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2123" class="blob-num js-line-number" data-line-number="2123"></td>
<td id="LC2123" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-smi">async</span> <span class="pl-k">=</span> <span class="pl-smi">tmpEvt</span>.<span class="pl-smi">async</span> <span class="pl-k">||</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2124" class="blob-num js-line-number" data-line-number="2124"></td>
<td id="LC2124" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L2125" class="blob-num js-line-number" data-line-number="2125"></td>
<td id="LC2125" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.EventException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">EventException</span>.<span class="pl-c1">UNSPECIFIED_EVENT_TYPE_ERR</span>);</td>
</tr>
<tr>
<td id="L2126" class="blob-num js-line-number" data-line-number="2126"></td>
<td id="LC2126" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2127" class="blob-num js-line-number" data-line-number="2127"></td>
<td id="LC2127" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2128" class="blob-num js-line-number" data-line-number="2128"></td>
<td id="LC2128" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2129" class="blob-num js-line-number" data-line-number="2129"></td>
<td id="LC2129" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if event is meant to be dispatched on an object having specific uid</span></td>
</tr>
<tr>
<td id="L2130" class="blob-num js-line-number" data-line-number="2130"></td>
<td id="LC2130" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">type</span>.<span class="pl-c1">indexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>::<span class="pl-pds">'</span></span>) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L2131" class="blob-num js-line-number" data-line-number="2131"></td>
<td id="LC2131" class="blob-code blob-code-inner js-file-line"> (<span class="pl-k">function</span>(<span class="pl-smi">arr</span>) {</td>
</tr>
<tr>
<td id="L2132" class="blob-num js-line-number" data-line-number="2132"></td>
<td id="LC2132" class="blob-code blob-code-inner js-file-line"> uid <span class="pl-k">=</span> arr[<span class="pl-c1">0</span>];</td>
</tr>
<tr>
<td id="L2133" class="blob-num js-line-number" data-line-number="2133"></td>
<td id="LC2133" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> arr[<span class="pl-c1">1</span>];</td>
</tr>
<tr>
<td id="L2134" class="blob-num js-line-number" data-line-number="2134"></td>
<td id="LC2134" class="blob-code blob-code-inner js-file-line"> }(<span class="pl-smi">type</span>.<span class="pl-c1">split</span>(<span class="pl-s"><span class="pl-pds">'</span>::<span class="pl-pds">'</span></span>)));</td>
</tr>
<tr>
<td id="L2135" class="blob-num js-line-number" data-line-number="2135"></td>
<td id="LC2135" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L2136" class="blob-num js-line-number" data-line-number="2136"></td>
<td id="LC2136" class="blob-code blob-code-inner js-file-line"> uid <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L2137" class="blob-num js-line-number" data-line-number="2137"></td>
<td id="LC2137" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2138" class="blob-num js-line-number" data-line-number="2138"></td>
<td id="LC2138" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2139" class="blob-num js-line-number" data-line-number="2139"></td>
<td id="LC2139" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">type</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L2140" class="blob-num js-line-number" data-line-number="2140"></td>
<td id="LC2140" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2141" class="blob-num js-line-number" data-line-number="2141"></td>
<td id="LC2141" class="blob-code blob-code-inner js-file-line"> list <span class="pl-k">=</span> eventpool[uid] <span class="pl-k">&&</span> eventpool[uid][type];</td>
</tr>
<tr>
<td id="L2142" class="blob-num js-line-number" data-line-number="2142"></td>
<td id="LC2142" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2143" class="blob-num js-line-number" data-line-number="2143"></td>
<td id="LC2143" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (list) {</td>
</tr>
<tr>
<td id="L2144" class="blob-num js-line-number" data-line-number="2144"></td>
<td id="LC2144" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> sort event list by prority</span></td>
</tr>
<tr>
<td id="L2145" class="blob-num js-line-number" data-line-number="2145"></td>
<td id="LC2145" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">list</span>.<span class="pl-c1">sort</span>(<span class="pl-k">function</span>(<span class="pl-smi">a</span>, <span class="pl-smi">b</span>) { <span class="pl-k">return</span> <span class="pl-smi">b</span>.<span class="pl-smi">priority</span> <span class="pl-k">-</span> <span class="pl-smi">a</span>.<span class="pl-smi">priority</span>; });</td>
</tr>
<tr>
<td id="L2146" class="blob-num js-line-number" data-line-number="2146"></td>
<td id="LC2146" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2147" class="blob-num js-line-number" data-line-number="2147"></td>
<td id="LC2147" class="blob-code blob-code-inner js-file-line"> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2148" class="blob-num js-line-number" data-line-number="2148"></td>
<td id="LC2148" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2149" class="blob-num js-line-number" data-line-number="2149"></td>
<td id="LC2149" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> first argument will be pseudo-event object</span></td>
</tr>
<tr>
<td id="L2150" class="blob-num js-line-number" data-line-number="2150"></td>
<td id="LC2150" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">args</span>.<span class="pl-c1">shift</span>();</td>
</tr>
<tr>
<td id="L2151" class="blob-num js-line-number" data-line-number="2151"></td>
<td id="LC2151" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-c1">type</span> <span class="pl-k">=</span> type;</td>
</tr>
<tr>
<td id="L2152" class="blob-num js-line-number" data-line-number="2152"></td>
<td id="LC2152" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">args</span>.<span class="pl-c1">unshift</span>(evt);</td>
</tr>
<tr>
<td id="L2153" class="blob-num js-line-number" data-line-number="2153"></td>
<td id="LC2153" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2154" class="blob-num js-line-number" data-line-number="2154"></td>
<td id="LC2154" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">events</span>) {</td>
</tr>
<tr>
<td id="L2155" class="blob-num js-line-number" data-line-number="2155"></td>
<td id="LC2155" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>%cEvent '%s' fired on %s<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">'</span>color: #999;<span class="pl-pds">'</span></span>, <span class="pl-smi">evt</span>.<span class="pl-c1">type</span>, (<span class="pl-c1">this</span>.<span class="pl-smi">ctorName</span> <span class="pl-k">?</span> <span class="pl-c1">this</span>.<span class="pl-smi">ctorName</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>::<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> uid);</td>
</tr>
<tr>
<td id="L2156" class="blob-num js-line-number" data-line-number="2156"></td>
<td id="LC2156" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2157" class="blob-num js-line-number" data-line-number="2157"></td>
<td id="LC2157" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2158" class="blob-num js-line-number" data-line-number="2158"></td>
<td id="LC2158" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Dispatch event to all listeners</span></td>
</tr>
<tr>
<td id="L2159" class="blob-num js-line-number" data-line-number="2159"></td>
<td id="LC2159" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> queue <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L2160" class="blob-num js-line-number" data-line-number="2160"></td>
<td id="LC2160" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(list, <span class="pl-k">function</span>(<span class="pl-smi">handler</span>) {</td>
</tr>
<tr>
<td id="L2161" class="blob-num js-line-number" data-line-number="2161"></td>
<td id="LC2161" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> explicitly set the target, otherwise events fired from shims do not get it</span></td>
</tr>
<tr>
<td id="L2162" class="blob-num js-line-number" data-line-number="2162"></td>
<td id="LC2162" class="blob-code blob-code-inner js-file-line"> args[<span class="pl-c1">0</span>].<span class="pl-c1">target</span> <span class="pl-k">=</span> <span class="pl-smi">handler</span>.<span class="pl-c1">scope</span>;</td>
</tr>
<tr>
<td id="L2163" class="blob-num js-line-number" data-line-number="2163"></td>
<td id="LC2163" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if event is marked as async, detach the handler</span></td>
</tr>
<tr>
<td id="L2164" class="blob-num js-line-number" data-line-number="2164"></td>
<td id="LC2164" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">evt</span>.<span class="pl-smi">async</span>) {</td>
</tr>
<tr>
<td id="L2165" class="blob-num js-line-number" data-line-number="2165"></td>
<td id="LC2165" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">queue</span>.<span class="pl-c1">push</span>(<span class="pl-k">function</span>(<span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L2166" class="blob-num js-line-number" data-line-number="2166"></td>
<td id="LC2166" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2167" class="blob-num js-line-number" data-line-number="2167"></td>
<td id="LC2167" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>(<span class="pl-smi">handler</span>.<span class="pl-smi">fn</span>.<span class="pl-c1">apply</span>(<span class="pl-smi">handler</span>.<span class="pl-c1">scope</span>, args) <span class="pl-k">===</span> <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L2168" class="blob-num js-line-number" data-line-number="2168"></td>
<td id="LC2168" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L2169" class="blob-num js-line-number" data-line-number="2169"></td>
<td id="LC2169" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2170" class="blob-num js-line-number" data-line-number="2170"></td>
<td id="LC2170" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L2171" class="blob-num js-line-number" data-line-number="2171"></td>
<td id="LC2171" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">queue</span>.<span class="pl-c1">push</span>(<span class="pl-k">function</span>(<span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L2172" class="blob-num js-line-number" data-line-number="2172"></td>
<td id="LC2172" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>(<span class="pl-smi">handler</span>.<span class="pl-smi">fn</span>.<span class="pl-c1">apply</span>(<span class="pl-smi">handler</span>.<span class="pl-c1">scope</span>, args) <span class="pl-k">===</span> <span class="pl-c1">false</span>); <span class="pl-c"><span class="pl-c">//</span> if handler returns false stop propagation</span></td>
</tr>
<tr>
<td id="L2173" class="blob-num js-line-number" data-line-number="2173"></td>
<td id="LC2173" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2174" class="blob-num js-line-number" data-line-number="2174"></td>
<td id="LC2174" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2175" class="blob-num js-line-number" data-line-number="2175"></td>
<td id="LC2175" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2176" class="blob-num js-line-number" data-line-number="2176"></td>
<td id="LC2176" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">queue</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L2177" class="blob-num js-line-number" data-line-number="2177"></td>
<td id="LC2177" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">inSeries</span>(queue, <span class="pl-k">function</span>(<span class="pl-smi">err</span>) {</td>
</tr>
<tr>
<td id="L2178" class="blob-num js-line-number" data-line-number="2178"></td>
<td id="LC2178" class="blob-code blob-code-inner js-file-line"> result <span class="pl-k">=</span> <span class="pl-k">!</span>err;</td>
</tr>
<tr>
<td id="L2179" class="blob-num js-line-number" data-line-number="2179"></td>
<td id="LC2179" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2180" class="blob-num js-line-number" data-line-number="2180"></td>
<td id="LC2180" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2181" class="blob-num js-line-number" data-line-number="2181"></td>
<td id="LC2181" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2182" class="blob-num js-line-number" data-line-number="2182"></td>
<td id="LC2182" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> result;</td>
</tr>
<tr>
<td id="L2183" class="blob-num js-line-number" data-line-number="2183"></td>
<td id="LC2183" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2184" class="blob-num js-line-number" data-line-number="2184"></td>
<td id="LC2184" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2185" class="blob-num js-line-number" data-line-number="2185"></td>
<td id="LC2185" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2186" class="blob-num js-line-number" data-line-number="2186"></td>
<td id="LC2186" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Register a handler to the event type that will run only once</span></td>
</tr>
<tr>
<td id="L2187" class="blob-num js-line-number" data-line-number="2187"></td>
<td id="LC2187" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2188" class="blob-num js-line-number" data-line-number="2188"></td>
<td id="LC2188" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">bindOnce</span></span></td>
</tr>
<tr>
<td id="L2189" class="blob-num js-line-number" data-line-number="2189"></td>
<td id="LC2189" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@since</span> >1.4.1</span></td>
</tr>
<tr>
<td id="L2190" class="blob-num js-line-number" data-line-number="2190"></td>
<td id="LC2190" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Type or basically a name of the event to subscribe to</span></td>
</tr>
<tr>
<td id="L2191" class="blob-num js-line-number" data-line-number="2191"></td>
<td id="LC2191" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">fn</span> Callback function that will be called when event happens</span></td>
</tr>
<tr>
<td id="L2192" class="blob-num js-line-number" data-line-number="2192"></td>
<td id="LC2192" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[priority<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">0</span></span>]</span> Priority of the event handler - handlers with higher priorities will be called first</span></td>
</tr>
<tr>
<td id="L2193" class="blob-num js-line-number" data-line-number="2193"></td>
<td id="LC2193" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[scope<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">this</span></span>]</span> A scope to invoke event handler in</span></td>
</tr>
<tr>
<td id="L2194" class="blob-num js-line-number" data-line-number="2194"></td>
<td id="LC2194" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2195" class="blob-num js-line-number" data-line-number="2195"></td>
<td id="LC2195" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">bindOnce</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">fn</span>, <span class="pl-smi">priority</span>, <span class="pl-smi">scope</span>) {</td>
</tr>
<tr>
<td id="L2196" class="blob-num js-line-number" data-line-number="2196"></td>
<td id="LC2196" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L2197" class="blob-num js-line-number" data-line-number="2197"></td>
<td id="LC2197" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">bind</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, type, <span class="pl-k">function</span> <span class="pl-en">cb</span>() {</td>
</tr>
<tr>
<td id="L2198" class="blob-num js-line-number" data-line-number="2198"></td>
<td id="LC2198" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">unbind</span>(type, cb);</td>
</tr>
<tr>
<td id="L2199" class="blob-num js-line-number" data-line-number="2199"></td>
<td id="LC2199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">fn</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2200" class="blob-num js-line-number" data-line-number="2200"></td>
<td id="LC2200" class="blob-code blob-code-inner js-file-line"> }, priority, scope);</td>
</tr>
<tr>
<td id="L2201" class="blob-num js-line-number" data-line-number="2201"></td>
<td id="LC2201" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2202" class="blob-num js-line-number" data-line-number="2202"></td>
<td id="LC2202" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2203" class="blob-num js-line-number" data-line-number="2203"></td>
<td id="LC2203" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2204" class="blob-num js-line-number" data-line-number="2204"></td>
<td id="LC2204" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Alias for addEventListener</span></td>
</tr>
<tr>
<td id="L2205" class="blob-num js-line-number" data-line-number="2205"></td>
<td id="LC2205" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2206" class="blob-num js-line-number" data-line-number="2206"></td>
<td id="LC2206" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">bind</span></span></td>
</tr>
<tr>
<td id="L2207" class="blob-num js-line-number" data-line-number="2207"></td>
<td id="LC2207" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L2208" class="blob-num js-line-number" data-line-number="2208"></td>
<td id="LC2208" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2209" class="blob-num js-line-number" data-line-number="2209"></td>
<td id="LC2209" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">bind</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2210" class="blob-num js-line-number" data-line-number="2210"></td>
<td id="LC2210" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">addEventListener</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2211" class="blob-num js-line-number" data-line-number="2211"></td>
<td id="LC2211" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2212" class="blob-num js-line-number" data-line-number="2212"></td>
<td id="LC2212" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2213" class="blob-num js-line-number" data-line-number="2213"></td>
<td id="LC2213" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2214" class="blob-num js-line-number" data-line-number="2214"></td>
<td id="LC2214" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Alias for removeEventListener</span></td>
</tr>
<tr>
<td id="L2215" class="blob-num js-line-number" data-line-number="2215"></td>
<td id="LC2215" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2216" class="blob-num js-line-number" data-line-number="2216"></td>
<td id="LC2216" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">unbind</span></span></td>
</tr>
<tr>
<td id="L2217" class="blob-num js-line-number" data-line-number="2217"></td>
<td id="LC2217" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L2218" class="blob-num js-line-number" data-line-number="2218"></td>
<td id="LC2218" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2219" class="blob-num js-line-number" data-line-number="2219"></td>
<td id="LC2219" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">unbind</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2220" class="blob-num js-line-number" data-line-number="2220"></td>
<td id="LC2220" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">removeEventListener</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2221" class="blob-num js-line-number" data-line-number="2221"></td>
<td id="LC2221" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2222" class="blob-num js-line-number" data-line-number="2222"></td>
<td id="LC2222" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2223" class="blob-num js-line-number" data-line-number="2223"></td>
<td id="LC2223" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2224" class="blob-num js-line-number" data-line-number="2224"></td>
<td id="LC2224" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Alias for removeAllEventListeners</span></td>
</tr>
<tr>
<td id="L2225" class="blob-num js-line-number" data-line-number="2225"></td>
<td id="LC2225" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2226" class="blob-num js-line-number" data-line-number="2226"></td>
<td id="LC2226" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">unbindAll</span></span></td>
</tr>
<tr>
<td id="L2227" class="blob-num js-line-number" data-line-number="2227"></td>
<td id="LC2227" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L2228" class="blob-num js-line-number" data-line-number="2228"></td>
<td id="LC2228" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2229" class="blob-num js-line-number" data-line-number="2229"></td>
<td id="LC2229" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">unbindAll</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2230" class="blob-num js-line-number" data-line-number="2230"></td>
<td id="LC2230" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">removeAllEventListeners</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2231" class="blob-num js-line-number" data-line-number="2231"></td>
<td id="LC2231" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2232" class="blob-num js-line-number" data-line-number="2232"></td>
<td id="LC2232" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2233" class="blob-num js-line-number" data-line-number="2233"></td>
<td id="LC2233" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2234" class="blob-num js-line-number" data-line-number="2234"></td>
<td id="LC2234" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Alias for dispatchEvent</span></td>
</tr>
<tr>
<td id="L2235" class="blob-num js-line-number" data-line-number="2235"></td>
<td id="LC2235" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2236" class="blob-num js-line-number" data-line-number="2236"></td>
<td id="LC2236" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">trigger</span></span></td>
</tr>
<tr>
<td id="L2237" class="blob-num js-line-number" data-line-number="2237"></td>
<td id="LC2237" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L2238" class="blob-num js-line-number" data-line-number="2238"></td>
<td id="LC2238" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2239" class="blob-num js-line-number" data-line-number="2239"></td>
<td id="LC2239" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">trigger</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2240" class="blob-num js-line-number" data-line-number="2240"></td>
<td id="LC2240" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-smi">dispatchEvent</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2241" class="blob-num js-line-number" data-line-number="2241"></td>
<td id="LC2241" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2242" class="blob-num js-line-number" data-line-number="2242"></td>
<td id="LC2242" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2243" class="blob-num js-line-number" data-line-number="2243"></td>
<td id="LC2243" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2244" class="blob-num js-line-number" data-line-number="2244"></td>
<td id="LC2244" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2245" class="blob-num js-line-number" data-line-number="2245"></td>
<td id="LC2245" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Handle properties of on[event] type.</span></td>
</tr>
<tr>
<td id="L2246" class="blob-num js-line-number" data-line-number="2246"></td>
<td id="LC2246" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2247" class="blob-num js-line-number" data-line-number="2247"></td>
<td id="LC2247" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">handleEventProps</span></span></td>
</tr>
<tr>
<td id="L2248" class="blob-num js-line-number" data-line-number="2248"></td>
<td id="LC2248" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2249" class="blob-num js-line-number" data-line-number="2249"></td>
<td id="LC2249" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2250" class="blob-num js-line-number" data-line-number="2250"></td>
<td id="LC2250" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">handleEventProps</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">dispatches</span>) {</td>
</tr>
<tr>
<td id="L2251" class="blob-num js-line-number" data-line-number="2251"></td>
<td id="LC2251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L2252" class="blob-num js-line-number" data-line-number="2252"></td>
<td id="LC2252" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2253" class="blob-num js-line-number" data-line-number="2253"></td>
<td id="LC2253" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-smi">dispatches</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span> <span class="pl-pds">'</span></span>), <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L2254" class="blob-num js-line-number" data-line-number="2254"></td>
<td id="LC2254" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> prop <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>on<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">e</span>.<span class="pl-c1">type</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L2255" class="blob-num js-line-number" data-line-number="2255"></td>
<td id="LC2255" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-c1">this</span>[prop]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2256" class="blob-num js-line-number" data-line-number="2256"></td>
<td id="LC2256" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>[prop].<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2257" class="blob-num js-line-number" data-line-number="2257"></td>
<td id="LC2257" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2258" class="blob-num js-line-number" data-line-number="2258"></td>
<td id="LC2258" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2259" class="blob-num js-line-number" data-line-number="2259"></td>
<td id="LC2259" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2260" class="blob-num js-line-number" data-line-number="2260"></td>
<td id="LC2260" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> object must have defined event properties, even if it doesn't make use of them</span></td>
</tr>
<tr>
<td id="L2261" class="blob-num js-line-number" data-line-number="2261"></td>
<td id="LC2261" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(dispatches, <span class="pl-k">function</span>(<span class="pl-smi">prop</span>) {</td>
</tr>
<tr>
<td id="L2262" class="blob-num js-line-number" data-line-number="2262"></td>
<td id="LC2262" class="blob-code blob-code-inner js-file-line"> prop <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>on<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">prop</span>.<span class="pl-c1">toLowerCase</span>(prop);</td>
</tr>
<tr>
<td id="L2263" class="blob-num js-line-number" data-line-number="2263"></td>
<td id="LC2263" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(self[prop]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2264" class="blob-num js-line-number" data-line-number="2264"></td>
<td id="LC2264" class="blob-code blob-code-inner js-file-line"> self[prop] <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2265" class="blob-num js-line-number" data-line-number="2265"></td>
<td id="LC2265" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2266" class="blob-num js-line-number" data-line-number="2266"></td>
<td id="LC2266" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2267" class="blob-num js-line-number" data-line-number="2267"></td>
<td id="LC2267" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2268" class="blob-num js-line-number" data-line-number="2268"></td>
<td id="LC2268" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2269" class="blob-num js-line-number" data-line-number="2269"></td>
<td id="LC2269" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2270" class="blob-num js-line-number" data-line-number="2270"></td>
<td id="LC2270" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2271" class="blob-num js-line-number" data-line-number="2271"></td>
<td id="LC2271" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2272" class="blob-num js-line-number" data-line-number="2272"></td>
<td id="LC2272" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">EventTarget</span>();</td>
</tr>
<tr>
<td id="L2273" class="blob-num js-line-number" data-line-number="2273"></td>
<td id="LC2273" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2274" class="blob-num js-line-number" data-line-number="2274"></td>
<td id="LC2274" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">EventTarget</span>;</td>
</tr>
<tr>
<td id="L2275" class="blob-num js-line-number" data-line-number="2275"></td>
<td id="LC2275" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L2276" class="blob-num js-line-number" data-line-number="2276"></td>
<td id="LC2276" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2277" class="blob-num js-line-number" data-line-number="2277"></td>
<td id="LC2277" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/Runtime.js</span></td>
</tr>
<tr>
<td id="L2278" class="blob-num js-line-number" data-line-number="2278"></td>
<td id="LC2278" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2279" class="blob-num js-line-number" data-line-number="2279"></td>
<td id="LC2279" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2280" class="blob-num js-line-number" data-line-number="2280"></td>
<td id="LC2280" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Runtime.js</span></td>
</tr>
<tr>
<td id="L2281" class="blob-num js-line-number" data-line-number="2281"></td>
<td id="LC2281" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L2282" class="blob-num js-line-number" data-line-number="2282"></td>
<td id="LC2282" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L2283" class="blob-num js-line-number" data-line-number="2283"></td>
<td id="LC2283" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L2284" class="blob-num js-line-number" data-line-number="2284"></td>
<td id="LC2284" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L2285" class="blob-num js-line-number" data-line-number="2285"></td>
<td id="LC2285" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L2286" class="blob-num js-line-number" data-line-number="2286"></td>
<td id="LC2286" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L2287" class="blob-num js-line-number" data-line-number="2287"></td>
<td id="LC2287" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2288" class="blob-num js-line-number" data-line-number="2288"></td>
<td id="LC2288" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2289" class="blob-num js-line-number" data-line-number="2289"></td>
<td id="LC2289" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/Runtime<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L2290" class="blob-num js-line-number" data-line-number="2290"></td>
<td id="LC2290" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L2291" class="blob-num js-line-number" data-line-number="2291"></td>
<td id="LC2291" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L2292" class="blob-num js-line-number" data-line-number="2292"></td>
<td id="LC2292" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L2293" class="blob-num js-line-number" data-line-number="2293"></td>
<td id="LC2293" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/EventTarget<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L2294" class="blob-num js-line-number" data-line-number="2294"></td>
<td id="LC2294" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Env</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Dom</span>, <span class="pl-c1">EventTarget</span>) {</td>
</tr>
<tr>
<td id="L2295" class="blob-num js-line-number" data-line-number="2295"></td>
<td id="LC2295" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtimeConstructors <span class="pl-k">=</span> {}, runtimes <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L2296" class="blob-num js-line-number" data-line-number="2296"></td>
<td id="LC2296" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2297" class="blob-num js-line-number" data-line-number="2297"></td>
<td id="LC2297" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2298" class="blob-num js-line-number" data-line-number="2298"></td>
<td id="LC2298" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Common set of methods and properties for every runtime instance</span></td>
</tr>
<tr>
<td id="L2299" class="blob-num js-line-number" data-line-number="2299"></td>
<td id="LC2299" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2300" class="blob-num js-line-number" data-line-number="2300"></td>
<td id="LC2300" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/runtime/Runtime</span></td>
</tr>
<tr>
<td id="L2301" class="blob-num js-line-number" data-line-number="2301"></td>
<td id="LC2301" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2302" class="blob-num js-line-number" data-line-number="2302"></td>
<td id="LC2302" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">options</span></span></td>
</tr>
<tr>
<td id="L2303" class="blob-num js-line-number" data-line-number="2303"></td>
<td id="LC2303" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Sanitized name of the runtime</span></td>
</tr>
<tr>
<td id="L2304" class="blob-num js-line-number" data-line-number="2304"></td>
<td id="LC2304" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[caps]</span> Set of capabilities that differentiate specified runtime</span></td>
</tr>
<tr>
<td id="L2305" class="blob-num js-line-number" data-line-number="2305"></td>
<td id="LC2305" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[modeCaps]</span> Set of capabilities that do require specific operational mode</span></td>
</tr>
<tr>
<td id="L2306" class="blob-num js-line-number" data-line-number="2306"></td>
<td id="LC2306" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[preferredMode<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span></span>]</span> Preferred operational mode to choose if no required capabilities were requested</span></td>
</tr>
<tr>
<td id="L2307" class="blob-num js-line-number" data-line-number="2307"></td>
<td id="LC2307" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2308" class="blob-num js-line-number" data-line-number="2308"></td>
<td id="LC2308" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">Runtime</span>(<span class="pl-smi">options</span>, <span class="pl-smi">type</span>, <span class="pl-smi">caps</span>, <span class="pl-smi">modeCaps</span>, <span class="pl-smi">preferredMode</span>) {</td>
</tr>
<tr>
<td id="L2309" class="blob-num js-line-number" data-line-number="2309"></td>
<td id="LC2309" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2310" class="blob-num js-line-number" data-line-number="2310"></td>
<td id="LC2310" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when runtime is initialized and ready.</span></td>
</tr>
<tr>
<td id="L2311" class="blob-num js-line-number" data-line-number="2311"></td>
<td id="LC2311" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Results in RuntimeInit on a connected component.</span></td>
</tr>
<tr>
<td id="L2312" class="blob-num js-line-number" data-line-number="2312"></td>
<td id="LC2312" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2313" class="blob-num js-line-number" data-line-number="2313"></td>
<td id="LC2313" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">Init</span></span></td>
</tr>
<tr>
<td id="L2314" class="blob-num js-line-number" data-line-number="2314"></td>
<td id="LC2314" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2315" class="blob-num js-line-number" data-line-number="2315"></td>
<td id="LC2315" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2316" class="blob-num js-line-number" data-line-number="2316"></td>
<td id="LC2316" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2317" class="blob-num js-line-number" data-line-number="2317"></td>
<td id="LC2317" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when runtime fails to initialize.</span></td>
</tr>
<tr>
<td id="L2318" class="blob-num js-line-number" data-line-number="2318"></td>
<td id="LC2318" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Results in RuntimeError on a connected component.</span></td>
</tr>
<tr>
<td id="L2319" class="blob-num js-line-number" data-line-number="2319"></td>
<td id="LC2319" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2320" class="blob-num js-line-number" data-line-number="2320"></td>
<td id="LC2320" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">Error</span></span></td>
</tr>
<tr>
<td id="L2321" class="blob-num js-line-number" data-line-number="2321"></td>
<td id="LC2321" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2322" class="blob-num js-line-number" data-line-number="2322"></td>
<td id="LC2322" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2323" class="blob-num js-line-number" data-line-number="2323"></td>
<td id="LC2323" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L2324" class="blob-num js-line-number" data-line-number="2324"></td>
<td id="LC2324" class="blob-code blob-code-inner js-file-line"> , _shim</td>
</tr>
<tr>
<td id="L2325" class="blob-num js-line-number" data-line-number="2325"></td>
<td id="LC2325" class="blob-code blob-code-inner js-file-line"> , _uid <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(type <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_<span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L2326" class="blob-num js-line-number" data-line-number="2326"></td>
<td id="LC2326" class="blob-code blob-code-inner js-file-line"> , defaultMode <span class="pl-k">=</span> preferredMode <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L2327" class="blob-num js-line-number" data-line-number="2327"></td>
<td id="LC2327" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L2328" class="blob-num js-line-number" data-line-number="2328"></td>
<td id="LC2328" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2329" class="blob-num js-line-number" data-line-number="2329"></td>
<td id="LC2329" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> options <span class="pl-k">||</span> {};</td>
</tr>
<tr>
<td id="L2330" class="blob-num js-line-number" data-line-number="2330"></td>
<td id="LC2330" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2331" class="blob-num js-line-number" data-line-number="2331"></td>
<td id="LC2331" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> register runtime in private hash</span></td>
</tr>
<tr>
<td id="L2332" class="blob-num js-line-number" data-line-number="2332"></td>
<td id="LC2332" class="blob-code blob-code-inner js-file-line"> runtimes[_uid] <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L2333" class="blob-num js-line-number" data-line-number="2333"></td>
<td id="LC2333" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2334" class="blob-num js-line-number" data-line-number="2334"></td>
<td id="LC2334" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2335" class="blob-num js-line-number" data-line-number="2335"></td>
<td id="LC2335" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Default set of capabilities, which can be redifined later by specific runtime</span></td>
</tr>
<tr>
<td id="L2336" class="blob-num js-line-number" data-line-number="2336"></td>
<td id="LC2336" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2337" class="blob-num js-line-number" data-line-number="2337"></td>
<td id="LC2337" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2338" class="blob-num js-line-number" data-line-number="2338"></td>
<td id="LC2338" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> caps</span></td>
</tr>
<tr>
<td id="L2339" class="blob-num js-line-number" data-line-number="2339"></td>
<td id="LC2339" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Object</span></td>
</tr>
<tr>
<td id="L2340" class="blob-num js-line-number" data-line-number="2340"></td>
<td id="LC2340" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2341" class="blob-num js-line-number" data-line-number="2341"></td>
<td id="LC2341" class="blob-code blob-code-inner js-file-line"> caps <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({</td>
</tr>
<tr>
<td id="L2342" class="blob-num js-line-number" data-line-number="2342"></td>
<td id="LC2342" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Runtime can: </span></td>
</tr>
<tr>
<td id="L2343" class="blob-num js-line-number" data-line-number="2343"></td>
<td id="LC2343" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> provide access to raw binary data of the file</span></td>
</tr>
<tr>
<td id="L2344" class="blob-num js-line-number" data-line-number="2344"></td>
<td id="LC2344" class="blob-code blob-code-inner js-file-line"> access_binary<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2345" class="blob-num js-line-number" data-line-number="2345"></td>
<td id="LC2345" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> provide access to raw binary data of the image (image extension is optional) </span></td>
</tr>
<tr>
<td id="L2346" class="blob-num js-line-number" data-line-number="2346"></td>
<td id="LC2346" class="blob-code blob-code-inner js-file-line"> access_image_binary<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2347" class="blob-num js-line-number" data-line-number="2347"></td>
<td id="LC2347" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> display binary data as thumbs for example</span></td>
</tr>
<tr>
<td id="L2348" class="blob-num js-line-number" data-line-number="2348"></td>
<td id="LC2348" class="blob-code blob-code-inner js-file-line"> display_media<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2349" class="blob-num js-line-number" data-line-number="2349"></td>
<td id="LC2349" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make cross-domain requests</span></td>
</tr>
<tr>
<td id="L2350" class="blob-num js-line-number" data-line-number="2350"></td>
<td id="LC2350" class="blob-code blob-code-inner js-file-line"> do_cors<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2351" class="blob-num js-line-number" data-line-number="2351"></td>
<td id="LC2351" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> accept files dragged and dropped from the desktop</span></td>
</tr>
<tr>
<td id="L2352" class="blob-num js-line-number" data-line-number="2352"></td>
<td id="LC2352" class="blob-code blob-code-inner js-file-line"> drag_and_drop<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2353" class="blob-num js-line-number" data-line-number="2353"></td>
<td id="LC2353" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> filter files in selection dialog by their extensions</span></td>
</tr>
<tr>
<td id="L2354" class="blob-num js-line-number" data-line-number="2354"></td>
<td id="LC2354" class="blob-code blob-code-inner js-file-line"> filter_by_extension<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L2355" class="blob-num js-line-number" data-line-number="2355"></td>
<td id="LC2355" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> resize image (and manipulate it raw data of any file in general)</span></td>
</tr>
<tr>
<td id="L2356" class="blob-num js-line-number" data-line-number="2356"></td>
<td id="LC2356" class="blob-code blob-code-inner js-file-line"> resize_image<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2357" class="blob-num js-line-number" data-line-number="2357"></td>
<td id="LC2357" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> periodically report how many bytes of total in the file were uploaded (loaded)</span></td>
</tr>
<tr>
<td id="L2358" class="blob-num js-line-number" data-line-number="2358"></td>
<td id="LC2358" class="blob-code blob-code-inner js-file-line"> report_upload_progress<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2359" class="blob-num js-line-number" data-line-number="2359"></td>
<td id="LC2359" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> provide access to the headers of http response </span></td>
</tr>
<tr>
<td id="L2360" class="blob-num js-line-number" data-line-number="2360"></td>
<td id="LC2360" class="blob-code blob-code-inner js-file-line"> return_response_headers<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2361" class="blob-num js-line-number" data-line-number="2361"></td>
<td id="LC2361" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> support response of specific type, which should be passed as an argument</span></td>
</tr>
<tr>
<td id="L2362" class="blob-num js-line-number" data-line-number="2362"></td>
<td id="LC2362" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> e.g. runtime.can('return_response_type', 'blob')</span></td>
</tr>
<tr>
<td id="L2363" class="blob-num js-line-number" data-line-number="2363"></td>
<td id="LC2363" class="blob-code blob-code-inner js-file-line"> return_response_type<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2364" class="blob-num js-line-number" data-line-number="2364"></td>
<td id="LC2364" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> return http status code of the response</span></td>
</tr>
<tr>
<td id="L2365" class="blob-num js-line-number" data-line-number="2365"></td>
<td id="LC2365" class="blob-code blob-code-inner js-file-line"> return_status_code<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L2366" class="blob-num js-line-number" data-line-number="2366"></td>
<td id="LC2366" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> send custom http header with the request</span></td>
</tr>
<tr>
<td id="L2367" class="blob-num js-line-number" data-line-number="2367"></td>
<td id="LC2367" class="blob-code blob-code-inner js-file-line"> send_custom_headers<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2368" class="blob-num js-line-number" data-line-number="2368"></td>
<td id="LC2368" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> pick up the files from a dialog</span></td>
</tr>
<tr>
<td id="L2369" class="blob-num js-line-number" data-line-number="2369"></td>
<td id="LC2369" class="blob-code blob-code-inner js-file-line"> select_file<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2370" class="blob-num js-line-number" data-line-number="2370"></td>
<td id="LC2370" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> select whole folder in file browse dialog</span></td>
</tr>
<tr>
<td id="L2371" class="blob-num js-line-number" data-line-number="2371"></td>
<td id="LC2371" class="blob-code blob-code-inner js-file-line"> select_folder<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2372" class="blob-num js-line-number" data-line-number="2372"></td>
<td id="LC2372" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> select multiple files at once in file browse dialog</span></td>
</tr>
<tr>
<td id="L2373" class="blob-num js-line-number" data-line-number="2373"></td>
<td id="LC2373" class="blob-code blob-code-inner js-file-line"> select_multiple<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L2374" class="blob-num js-line-number" data-line-number="2374"></td>
<td id="LC2374" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> send raw binary data, that is generated after image resizing or manipulation of other kind</span></td>
</tr>
<tr>
<td id="L2375" class="blob-num js-line-number" data-line-number="2375"></td>
<td id="LC2375" class="blob-code blob-code-inner js-file-line"> send_binary_string<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2376" class="blob-num js-line-number" data-line-number="2376"></td>
<td id="LC2376" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> send cookies with http request and therefore retain session</span></td>
</tr>
<tr>
<td id="L2377" class="blob-num js-line-number" data-line-number="2377"></td>
<td id="LC2377" class="blob-code blob-code-inner js-file-line"> send_browser_cookies<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L2378" class="blob-num js-line-number" data-line-number="2378"></td>
<td id="LC2378" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> send data formatted as multipart/form-data</span></td>
</tr>
<tr>
<td id="L2379" class="blob-num js-line-number" data-line-number="2379"></td>
<td id="LC2379" class="blob-code blob-code-inner js-file-line"> send_multipart<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L2380" class="blob-num js-line-number" data-line-number="2380"></td>
<td id="LC2380" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> slice the file or blob to smaller parts</span></td>
</tr>
<tr>
<td id="L2381" class="blob-num js-line-number" data-line-number="2381"></td>
<td id="LC2381" class="blob-code blob-code-inner js-file-line"> slice_blob<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2382" class="blob-num js-line-number" data-line-number="2382"></td>
<td id="LC2382" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> upload file without preloading it to memory, stream it out directly from disk</span></td>
</tr>
<tr>
<td id="L2383" class="blob-num js-line-number" data-line-number="2383"></td>
<td id="LC2383" class="blob-code blob-code-inner js-file-line"> stream_upload<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2384" class="blob-num js-line-number" data-line-number="2384"></td>
<td id="LC2384" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> programmatically trigger file browse dialog</span></td>
</tr>
<tr>
<td id="L2385" class="blob-num js-line-number" data-line-number="2385"></td>
<td id="LC2385" class="blob-code blob-code-inner js-file-line"> summon_file_dialog<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L2386" class="blob-num js-line-number" data-line-number="2386"></td>
<td id="LC2386" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> upload file of specific size, size should be passed as argument</span></td>
</tr>
<tr>
<td id="L2387" class="blob-num js-line-number" data-line-number="2387"></td>
<td id="LC2387" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> e.g. runtime.can('upload_filesize', '500mb')</span></td>
</tr>
<tr>
<td id="L2388" class="blob-num js-line-number" data-line-number="2388"></td>
<td id="LC2388" class="blob-code blob-code-inner js-file-line"> upload_filesize<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L2389" class="blob-num js-line-number" data-line-number="2389"></td>
<td id="LC2389" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> initiate http request with specific http method, method should be passed as argument</span></td>
</tr>
<tr>
<td id="L2390" class="blob-num js-line-number" data-line-number="2390"></td>
<td id="LC2390" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> e.g. runtime.can('use_http_method', 'put')</span></td>
</tr>
<tr>
<td id="L2391" class="blob-num js-line-number" data-line-number="2391"></td>
<td id="LC2391" class="blob-code blob-code-inner js-file-line"> use_http_method<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L2392" class="blob-num js-line-number" data-line-number="2392"></td>
<td id="LC2392" class="blob-code blob-code-inner js-file-line"> }, caps);</td>
</tr>
<tr>
<td id="L2393" class="blob-num js-line-number" data-line-number="2393"></td>
<td id="LC2393" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L2394" class="blob-num js-line-number" data-line-number="2394"></td>
<td id="LC2394" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L2395" class="blob-num js-line-number" data-line-number="2395"></td>
<td id="LC2395" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> default to the mode that is compatible with preferred caps</span></td>
</tr>
<tr>
<td id="L2396" class="blob-num js-line-number" data-line-number="2396"></td>
<td id="LC2396" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">options</span>.<span class="pl-smi">preferred_caps</span>) {</td>
</tr>
<tr>
<td id="L2397" class="blob-num js-line-number" data-line-number="2397"></td>
<td id="LC2397" class="blob-code blob-code-inner js-file-line"> defaultMode <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">getMode</span>(modeCaps, <span class="pl-smi">options</span>.<span class="pl-smi">preferred_caps</span>, defaultMode);</td>
</tr>
<tr>
<td id="L2398" class="blob-num js-line-number" data-line-number="2398"></td>
<td id="LC2398" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2399" class="blob-num js-line-number" data-line-number="2399"></td>
<td id="LC2399" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2400" class="blob-num js-line-number" data-line-number="2400"></td>
<td id="LC2400" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2401" class="blob-num js-line-number" data-line-number="2401"></td>
<td id="LC2401" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t</span>default mode: %s<span class="pl-pds">"</span></span>, defaultMode); </td>
</tr>
<tr>
<td id="L2402" class="blob-num js-line-number" data-line-number="2402"></td>
<td id="LC2402" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2403" class="blob-num js-line-number" data-line-number="2403"></td>
<td id="LC2403" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L2404" class="blob-num js-line-number" data-line-number="2404"></td>
<td id="LC2404" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> small extension factory here (is meant to be extended with actual extensions constructors)</span></td>
</tr>
<tr>
<td id="L2405" class="blob-num js-line-number" data-line-number="2405"></td>
<td id="LC2405" class="blob-code blob-code-inner js-file-line"> _shim <span class="pl-k">=</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2406" class="blob-num js-line-number" data-line-number="2406"></td>
<td id="LC2406" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> objpool <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L2407" class="blob-num js-line-number" data-line-number="2407"></td>
<td id="LC2407" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L2408" class="blob-num js-line-number" data-line-number="2408"></td>
<td id="LC2408" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">uid</span>, <span class="pl-smi">comp</span>, <span class="pl-smi">fn</span>, <span class="pl-smi">args</span>) {</td>
</tr>
<tr>
<td id="L2409" class="blob-num js-line-number" data-line-number="2409"></td>
<td id="LC2409" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_shim[comp]) {</td>
</tr>
<tr>
<td id="L2410" class="blob-num js-line-number" data-line-number="2410"></td>
<td id="LC2410" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>objpool[uid]) {</td>
</tr>
<tr>
<td id="L2411" class="blob-num js-line-number" data-line-number="2411"></td>
<td id="LC2411" class="blob-code blob-code-inner js-file-line"> objpool[uid] <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L2412" class="blob-num js-line-number" data-line-number="2412"></td>
<td id="LC2412" class="blob-code blob-code-inner js-file-line"> context<span class="pl-k">:</span> <span class="pl-c1">this</span>,</td>
</tr>
<tr>
<td id="L2413" class="blob-num js-line-number" data-line-number="2413"></td>
<td id="LC2413" class="blob-code blob-code-inner js-file-line"> instance<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-en">_shim</span>[comp]()</td>
</tr>
<tr>
<td id="L2414" class="blob-num js-line-number" data-line-number="2414"></td>
<td id="LC2414" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2415" class="blob-num js-line-number" data-line-number="2415"></td>
<td id="LC2415" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2416" class="blob-num js-line-number" data-line-number="2416"></td>
<td id="LC2416" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (objpool[uid].<span class="pl-smi">instance</span>[fn]) {</td>
</tr>
<tr>
<td id="L2417" class="blob-num js-line-number" data-line-number="2417"></td>
<td id="LC2417" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> objpool[uid].<span class="pl-smi">instance</span>[fn].<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, args);</td>
</tr>
<tr>
<td id="L2418" class="blob-num js-line-number" data-line-number="2418"></td>
<td id="LC2418" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2419" class="blob-num js-line-number" data-line-number="2419"></td>
<td id="LC2419" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2420" class="blob-num js-line-number" data-line-number="2420"></td>
<td id="LC2420" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2421" class="blob-num js-line-number" data-line-number="2421"></td>
<td id="LC2421" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2422" class="blob-num js-line-number" data-line-number="2422"></td>
<td id="LC2422" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeInstance</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">uid</span>) {</td>
</tr>
<tr>
<td id="L2423" class="blob-num js-line-number" data-line-number="2423"></td>
<td id="LC2423" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> objpool[uid];</td>
</tr>
<tr>
<td id="L2424" class="blob-num js-line-number" data-line-number="2424"></td>
<td id="LC2424" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2425" class="blob-num js-line-number" data-line-number="2425"></td>
<td id="LC2425" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2426" class="blob-num js-line-number" data-line-number="2426"></td>
<td id="LC2426" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeAllInstances</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2427" class="blob-num js-line-number" data-line-number="2427"></td>
<td id="LC2427" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L2428" class="blob-num js-line-number" data-line-number="2428"></td>
<td id="LC2428" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(objpool, <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">uid</span>) {</td>
</tr>
<tr>
<td id="L2429" class="blob-num js-line-number" data-line-number="2429"></td>
<td id="LC2429" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-smi">obj</span>.<span class="pl-smi">instance</span>.<span class="pl-smi">destroy</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2430" class="blob-num js-line-number" data-line-number="2430"></td>
<td id="LC2430" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-smi">instance</span>.<span class="pl-smi">destroy</span>.<span class="pl-c1">call</span>(<span class="pl-smi">obj</span>.<span class="pl-smi">context</span>);</td>
</tr>
<tr>
<td id="L2431" class="blob-num js-line-number" data-line-number="2431"></td>
<td id="LC2431" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2432" class="blob-num js-line-number" data-line-number="2432"></td>
<td id="LC2432" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">removeInstance</span>(uid);</td>
</tr>
<tr>
<td id="L2433" class="blob-num js-line-number" data-line-number="2433"></td>
<td id="LC2433" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2434" class="blob-num js-line-number" data-line-number="2434"></td>
<td id="LC2434" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2435" class="blob-num js-line-number" data-line-number="2435"></td>
<td id="LC2435" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2436" class="blob-num js-line-number" data-line-number="2436"></td>
<td id="LC2436" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L2437" class="blob-num js-line-number" data-line-number="2437"></td>
<td id="LC2437" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2438" class="blob-num js-line-number" data-line-number="2438"></td>
<td id="LC2438" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2439" class="blob-num js-line-number" data-line-number="2439"></td>
<td id="LC2439" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> public methods</span></td>
</tr>
<tr>
<td id="L2440" class="blob-num js-line-number" data-line-number="2440"></td>
<td id="LC2440" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L2441" class="blob-num js-line-number" data-line-number="2441"></td>
<td id="LC2441" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2442" class="blob-num js-line-number" data-line-number="2442"></td>
<td id="LC2442" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Specifies whether runtime instance was initialized or not</span></td>
</tr>
<tr>
<td id="L2443" class="blob-num js-line-number" data-line-number="2443"></td>
<td id="LC2443" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2444" class="blob-num js-line-number" data-line-number="2444"></td>
<td id="LC2444" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> initialized</span></td>
</tr>
<tr>
<td id="L2445" class="blob-num js-line-number" data-line-number="2445"></td>
<td id="LC2445" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Boolean}</span></span></td>
</tr>
<tr>
<td id="L2446" class="blob-num js-line-number" data-line-number="2446"></td>
<td id="LC2446" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">false</span></span></td>
</tr>
<tr>
<td id="L2447" class="blob-num js-line-number" data-line-number="2447"></td>
<td id="LC2447" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2448" class="blob-num js-line-number" data-line-number="2448"></td>
<td id="LC2448" class="blob-code blob-code-inner js-file-line"> initialized<span class="pl-k">:</span> <span class="pl-c1">false</span>, <span class="pl-c"><span class="pl-c">//</span> shims require this flag to stop initialization retries</span></td>
</tr>
<tr>
<td id="L2449" class="blob-num js-line-number" data-line-number="2449"></td>
<td id="LC2449" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2450" class="blob-num js-line-number" data-line-number="2450"></td>
<td id="LC2450" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2451" class="blob-num js-line-number" data-line-number="2451"></td>
<td id="LC2451" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique ID of the runtime</span></td>
</tr>
<tr>
<td id="L2452" class="blob-num js-line-number" data-line-number="2452"></td>
<td id="LC2452" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2453" class="blob-num js-line-number" data-line-number="2453"></td>
<td id="LC2453" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L2454" class="blob-num js-line-number" data-line-number="2454"></td>
<td id="LC2454" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L2455" class="blob-num js-line-number" data-line-number="2455"></td>
<td id="LC2455" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2456" class="blob-num js-line-number" data-line-number="2456"></td>
<td id="LC2456" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> _uid,</td>
</tr>
<tr>
<td id="L2457" class="blob-num js-line-number" data-line-number="2457"></td>
<td id="LC2457" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2458" class="blob-num js-line-number" data-line-number="2458"></td>
<td id="LC2458" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2459" class="blob-num js-line-number" data-line-number="2459"></td>
<td id="LC2459" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Runtime type (e.g. flash, html5, etc)</span></td>
</tr>
<tr>
<td id="L2460" class="blob-num js-line-number" data-line-number="2460"></td>
<td id="LC2460" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2461" class="blob-num js-line-number" data-line-number="2461"></td>
<td id="LC2461" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> type</span></td>
</tr>
<tr>
<td id="L2462" class="blob-num js-line-number" data-line-number="2462"></td>
<td id="LC2462" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L2463" class="blob-num js-line-number" data-line-number="2463"></td>
<td id="LC2463" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2464" class="blob-num js-line-number" data-line-number="2464"></td>
<td id="LC2464" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> type,</td>
</tr>
<tr>
<td id="L2465" class="blob-num js-line-number" data-line-number="2465"></td>
<td id="LC2465" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2466" class="blob-num js-line-number" data-line-number="2466"></td>
<td id="LC2466" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2467" class="blob-num js-line-number" data-line-number="2467"></td>
<td id="LC2467" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Runtime (not native one) may operate in browser or client mode.</span></td>
</tr>
<tr>
<td id="L2468" class="blob-num js-line-number" data-line-number="2468"></td>
<td id="LC2468" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2469" class="blob-num js-line-number" data-line-number="2469"></td>
<td id="LC2469" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> mode</span></td>
</tr>
<tr>
<td id="L2470" class="blob-num js-line-number" data-line-number="2470"></td>
<td id="LC2470" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2471" class="blob-num js-line-number" data-line-number="2471"></td>
<td id="LC2471" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String|Boolean}</span> current mode or false, if none possible</span></td>
</tr>
<tr>
<td id="L2472" class="blob-num js-line-number" data-line-number="2472"></td>
<td id="LC2472" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2473" class="blob-num js-line-number" data-line-number="2473"></td>
<td id="LC2473" class="blob-code blob-code-inner js-file-line"> mode<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">getMode</span>(modeCaps, (<span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span>), defaultMode),</td>
</tr>
<tr>
<td id="L2474" class="blob-num js-line-number" data-line-number="2474"></td>
<td id="LC2474" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2475" class="blob-num js-line-number" data-line-number="2475"></td>
<td id="LC2475" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2476" class="blob-num js-line-number" data-line-number="2476"></td>
<td id="LC2476" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> id of the DOM container for the runtime (if available)</span></td>
</tr>
<tr>
<td id="L2477" class="blob-num js-line-number" data-line-number="2477"></td>
<td id="LC2477" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2478" class="blob-num js-line-number" data-line-number="2478"></td>
<td id="LC2478" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> shimid</span></td>
</tr>
<tr>
<td id="L2479" class="blob-num js-line-number" data-line-number="2479"></td>
<td id="LC2479" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L2480" class="blob-num js-line-number" data-line-number="2480"></td>
<td id="LC2480" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2481" class="blob-num js-line-number" data-line-number="2481"></td>
<td id="LC2481" class="blob-code blob-code-inner js-file-line"> shimid<span class="pl-k">:</span> _uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_container<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L2482" class="blob-num js-line-number" data-line-number="2482"></td>
<td id="LC2482" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2483" class="blob-num js-line-number" data-line-number="2483"></td>
<td id="LC2483" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2484" class="blob-num js-line-number" data-line-number="2484"></td>
<td id="LC2484" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Number of connected clients. If equal to zero, runtime can be destroyed</span></td>
</tr>
<tr>
<td id="L2485" class="blob-num js-line-number" data-line-number="2485"></td>
<td id="LC2485" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2486" class="blob-num js-line-number" data-line-number="2486"></td>
<td id="LC2486" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> clients</span></td>
</tr>
<tr>
<td id="L2487" class="blob-num js-line-number" data-line-number="2487"></td>
<td id="LC2487" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L2488" class="blob-num js-line-number" data-line-number="2488"></td>
<td id="LC2488" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2489" class="blob-num js-line-number" data-line-number="2489"></td>
<td id="LC2489" class="blob-code blob-code-inner js-file-line"> clients<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L2490" class="blob-num js-line-number" data-line-number="2490"></td>
<td id="LC2490" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2491" class="blob-num js-line-number" data-line-number="2491"></td>
<td id="LC2491" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2492" class="blob-num js-line-number" data-line-number="2492"></td>
<td id="LC2492" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Runtime initialization options</span></td>
</tr>
<tr>
<td id="L2493" class="blob-num js-line-number" data-line-number="2493"></td>
<td id="LC2493" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2494" class="blob-num js-line-number" data-line-number="2494"></td>
<td id="LC2494" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> options</span></td>
</tr>
<tr>
<td id="L2495" class="blob-num js-line-number" data-line-number="2495"></td>
<td id="LC2495" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Object}</span></span></td>
</tr>
<tr>
<td id="L2496" class="blob-num js-line-number" data-line-number="2496"></td>
<td id="LC2496" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2497" class="blob-num js-line-number" data-line-number="2497"></td>
<td id="LC2497" class="blob-code blob-code-inner js-file-line"> options<span class="pl-k">:</span> options,</td>
</tr>
<tr>
<td id="L2498" class="blob-num js-line-number" data-line-number="2498"></td>
<td id="LC2498" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2499" class="blob-num js-line-number" data-line-number="2499"></td>
<td id="LC2499" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2500" class="blob-num js-line-number" data-line-number="2500"></td>
<td id="LC2500" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Checks if the runtime has specific capability</span></td>
</tr>
<tr>
<td id="L2501" class="blob-num js-line-number" data-line-number="2501"></td>
<td id="LC2501" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2502" class="blob-num js-line-number" data-line-number="2502"></td>
<td id="LC2502" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">can</span></span></td>
</tr>
<tr>
<td id="L2503" class="blob-num js-line-number" data-line-number="2503"></td>
<td id="LC2503" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">cap</span> Name of capability to check</span></td>
</tr>
<tr>
<td id="L2504" class="blob-num js-line-number" data-line-number="2504"></td>
<td id="LC2504" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> <span class="pl-smi">[value]</span> If passed, capability should somehow correlate to the value</span></td>
</tr>
<tr>
<td id="L2505" class="blob-num js-line-number" data-line-number="2505"></td>
<td id="LC2505" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[refCaps]</span> Set of capabilities to check the specified cap against (defaults to internal set)</span></td>
</tr>
<tr>
<td id="L2506" class="blob-num js-line-number" data-line-number="2506"></td>
<td id="LC2506" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span> true if runtime has such capability and false, if - not</span></td>
</tr>
<tr>
<td id="L2507" class="blob-num js-line-number" data-line-number="2507"></td>
<td id="LC2507" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2508" class="blob-num js-line-number" data-line-number="2508"></td>
<td id="LC2508" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">can</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">cap</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L2509" class="blob-num js-line-number" data-line-number="2509"></td>
<td id="LC2509" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> refCaps <span class="pl-k">=</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">2</span>] <span class="pl-k">||</span> caps;</td>
</tr>
<tr>
<td id="L2510" class="blob-num js-line-number" data-line-number="2510"></td>
<td id="LC2510" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2511" class="blob-num js-line-number" data-line-number="2511"></td>
<td id="LC2511" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if cap var is a comma-separated list of caps, convert it to object (key/value)</span></td>
</tr>
<tr>
<td id="L2512" class="blob-num js-line-number" data-line-number="2512"></td>
<td id="LC2512" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(cap) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(value) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2513" class="blob-num js-line-number" data-line-number="2513"></td>
<td id="LC2513" class="blob-code blob-code-inner js-file-line"> cap <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">parseCaps</span>(cap);</td>
</tr>
<tr>
<td id="L2514" class="blob-num js-line-number" data-line-number="2514"></td>
<td id="LC2514" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2515" class="blob-num js-line-number" data-line-number="2515"></td>
<td id="LC2515" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2516" class="blob-num js-line-number" data-line-number="2516"></td>
<td id="LC2516" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(cap) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2517" class="blob-num js-line-number" data-line-number="2517"></td>
<td id="LC2517" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> key <span class="pl-k">in</span> cap) {</td>
</tr>
<tr>
<td id="L2518" class="blob-num js-line-number" data-line-number="2518"></td>
<td id="LC2518" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-en">can</span>(key, cap[key], refCaps)) {</td>
</tr>
<tr>
<td id="L2519" class="blob-num js-line-number" data-line-number="2519"></td>
<td id="LC2519" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2520" class="blob-num js-line-number" data-line-number="2520"></td>
<td id="LC2520" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2521" class="blob-num js-line-number" data-line-number="2521"></td>
<td id="LC2521" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2522" class="blob-num js-line-number" data-line-number="2522"></td>
<td id="LC2522" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L2523" class="blob-num js-line-number" data-line-number="2523"></td>
<td id="LC2523" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2524" class="blob-num js-line-number" data-line-number="2524"></td>
<td id="LC2524" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2525" class="blob-num js-line-number" data-line-number="2525"></td>
<td id="LC2525" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check the individual cap</span></td>
</tr>
<tr>
<td id="L2526" class="blob-num js-line-number" data-line-number="2526"></td>
<td id="LC2526" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(refCaps[cap]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2527" class="blob-num js-line-number" data-line-number="2527"></td>
<td id="LC2527" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> refCaps[cap].<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, value);</td>
</tr>
<tr>
<td id="L2528" class="blob-num js-line-number" data-line-number="2528"></td>
<td id="LC2528" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L2529" class="blob-num js-line-number" data-line-number="2529"></td>
<td id="LC2529" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (value <span class="pl-k">===</span> refCaps[cap]);</td>
</tr>
<tr>
<td id="L2530" class="blob-num js-line-number" data-line-number="2530"></td>
<td id="LC2530" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2531" class="blob-num js-line-number" data-line-number="2531"></td>
<td id="LC2531" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2532" class="blob-num js-line-number" data-line-number="2532"></td>
<td id="LC2532" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2533" class="blob-num js-line-number" data-line-number="2533"></td>
<td id="LC2533" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2534" class="blob-num js-line-number" data-line-number="2534"></td>
<td id="LC2534" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns container for the runtime as DOM element</span></td>
</tr>
<tr>
<td id="L2535" class="blob-num js-line-number" data-line-number="2535"></td>
<td id="LC2535" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2536" class="blob-num js-line-number" data-line-number="2536"></td>
<td id="LC2536" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getShimContainer</span></span></td>
</tr>
<tr>
<td id="L2537" class="blob-num js-line-number" data-line-number="2537"></td>
<td id="LC2537" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{DOMElement}</span></span></td>
</tr>
<tr>
<td id="L2538" class="blob-num js-line-number" data-line-number="2538"></td>
<td id="LC2538" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2539" class="blob-num js-line-number" data-line-number="2539"></td>
<td id="LC2539" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getShimContainer</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2540" class="blob-num js-line-number" data-line-number="2540"></td>
<td id="LC2540" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> container, shimContainer <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">this</span>.<span class="pl-smi">shimid</span>);</td>
</tr>
<tr>
<td id="L2541" class="blob-num js-line-number" data-line-number="2541"></td>
<td id="LC2541" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2542" class="blob-num js-line-number" data-line-number="2542"></td>
<td id="LC2542" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if no container for shim, create one</span></td>
</tr>
<tr>
<td id="L2543" class="blob-num js-line-number" data-line-number="2543"></td>
<td id="LC2543" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>shimContainer) {</td>
</tr>
<tr>
<td id="L2544" class="blob-num js-line-number" data-line-number="2544"></td>
<td id="LC2544" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">this</span>.<span class="pl-c1">options</span>.<span class="pl-smi">container</span>) <span class="pl-k">||</span> <span class="pl-c1">document</span>.<span class="pl-c1">body</span>;</td>
</tr>
<tr>
<td id="L2545" class="blob-num js-line-number" data-line-number="2545"></td>
<td id="LC2545" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2546" class="blob-num js-line-number" data-line-number="2546"></td>
<td id="LC2546" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> create shim container and insert it at an absolute position into the outer container</span></td>
</tr>
<tr>
<td id="L2547" class="blob-num js-line-number" data-line-number="2547"></td>
<td id="LC2547" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>div<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L2548" class="blob-num js-line-number" data-line-number="2548"></td>
<td id="LC2548" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-c1">id</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">shimid</span>;</td>
</tr>
<tr>
<td id="L2549" class="blob-num js-line-number" data-line-number="2549"></td>
<td id="LC2549" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-c1">className</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>moxie-shim moxie-shim-<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-c1">type</span>;</td>
</tr>
<tr>
<td id="L2550" class="blob-num js-line-number" data-line-number="2550"></td>
<td id="LC2550" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2551" class="blob-num js-line-number" data-line-number="2551"></td>
<td id="LC2551" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">shimContainer</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L2552" class="blob-num js-line-number" data-line-number="2552"></td>
<td id="LC2552" class="blob-code blob-code-inner js-file-line"> position<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>absolute<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L2553" class="blob-num js-line-number" data-line-number="2553"></td>
<td id="LC2553" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>0px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L2554" class="blob-num js-line-number" data-line-number="2554"></td>
<td id="LC2554" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>0px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L2555" class="blob-num js-line-number" data-line-number="2555"></td>
<td id="LC2555" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>1px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L2556" class="blob-num js-line-number" data-line-number="2556"></td>
<td id="LC2556" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>1px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L2557" class="blob-num js-line-number" data-line-number="2557"></td>
<td id="LC2557" class="blob-code blob-code-inner js-file-line"> overflow<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>hidden<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L2558" class="blob-num js-line-number" data-line-number="2558"></td>
<td id="LC2558" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2559" class="blob-num js-line-number" data-line-number="2559"></td>
<td id="LC2559" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2560" class="blob-num js-line-number" data-line-number="2560"></td>
<td id="LC2560" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">container</span>.<span class="pl-c1">appendChild</span>(shimContainer);</td>
</tr>
<tr>
<td id="L2561" class="blob-num js-line-number" data-line-number="2561"></td>
<td id="LC2561" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2562" class="blob-num js-line-number" data-line-number="2562"></td>
<td id="LC2562" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2563" class="blob-num js-line-number" data-line-number="2563"></td>
<td id="LC2563" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2564" class="blob-num js-line-number" data-line-number="2564"></td>
<td id="LC2564" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> shimContainer;</td>
</tr>
<tr>
<td id="L2565" class="blob-num js-line-number" data-line-number="2565"></td>
<td id="LC2565" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2566" class="blob-num js-line-number" data-line-number="2566"></td>
<td id="LC2566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2567" class="blob-num js-line-number" data-line-number="2567"></td>
<td id="LC2567" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2568" class="blob-num js-line-number" data-line-number="2568"></td>
<td id="LC2568" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns runtime as DOM element (if appropriate)</span></td>
</tr>
<tr>
<td id="L2569" class="blob-num js-line-number" data-line-number="2569"></td>
<td id="LC2569" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2570" class="blob-num js-line-number" data-line-number="2570"></td>
<td id="LC2570" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getShim</span></span></td>
</tr>
<tr>
<td id="L2571" class="blob-num js-line-number" data-line-number="2571"></td>
<td id="LC2571" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{DOMElement}</span></span></td>
</tr>
<tr>
<td id="L2572" class="blob-num js-line-number" data-line-number="2572"></td>
<td id="LC2572" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2573" class="blob-num js-line-number" data-line-number="2573"></td>
<td id="LC2573" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getShim</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2574" class="blob-num js-line-number" data-line-number="2574"></td>
<td id="LC2574" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _shim;</td>
</tr>
<tr>
<td id="L2575" class="blob-num js-line-number" data-line-number="2575"></td>
<td id="LC2575" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2576" class="blob-num js-line-number" data-line-number="2576"></td>
<td id="LC2576" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2577" class="blob-num js-line-number" data-line-number="2577"></td>
<td id="LC2577" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2578" class="blob-num js-line-number" data-line-number="2578"></td>
<td id="LC2578" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Invokes a method within the runtime itself (might differ across the runtimes)</span></td>
</tr>
<tr>
<td id="L2579" class="blob-num js-line-number" data-line-number="2579"></td>
<td id="LC2579" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2580" class="blob-num js-line-number" data-line-number="2580"></td>
<td id="LC2580" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">shimExec</span></span></td>
</tr>
<tr>
<td id="L2581" class="blob-num js-line-number" data-line-number="2581"></td>
<td id="LC2581" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> []</span></td>
</tr>
<tr>
<td id="L2582" class="blob-num js-line-number" data-line-number="2582"></td>
<td id="LC2582" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L2583" class="blob-num js-line-number" data-line-number="2583"></td>
<td id="LC2583" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Mixed}</span> Depends on the action and component</span></td>
</tr>
<tr>
<td id="L2584" class="blob-num js-line-number" data-line-number="2584"></td>
<td id="LC2584" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2585" class="blob-num js-line-number" data-line-number="2585"></td>
<td id="LC2585" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">shimExec</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">component</span>, <span class="pl-smi">action</span>) {</td>
</tr>
<tr>
<td id="L2586" class="blob-num js-line-number" data-line-number="2586"></td>
<td id="LC2586" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>, <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L2587" class="blob-num js-line-number" data-line-number="2587"></td>
<td id="LC2587" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">self</span>.<span class="pl-en">getShim</span>().<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>, component, action, args);</td>
</tr>
<tr>
<td id="L2588" class="blob-num js-line-number" data-line-number="2588"></td>
<td id="LC2588" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2589" class="blob-num js-line-number" data-line-number="2589"></td>
<td id="LC2589" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2590" class="blob-num js-line-number" data-line-number="2590"></td>
<td id="LC2590" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2591" class="blob-num js-line-number" data-line-number="2591"></td>
<td id="LC2591" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Operaional interface that is used by components to invoke specific actions on the runtime</span></td>
</tr>
<tr>
<td id="L2592" class="blob-num js-line-number" data-line-number="2592"></td>
<td id="LC2592" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> (is invoked in the scope of component)</span></td>
</tr>
<tr>
<td id="L2593" class="blob-num js-line-number" data-line-number="2593"></td>
<td id="LC2593" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2594" class="blob-num js-line-number" data-line-number="2594"></td>
<td id="LC2594" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">exec</span></span></td>
</tr>
<tr>
<td id="L2595" class="blob-num js-line-number" data-line-number="2595"></td>
<td id="LC2595" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> []*</span></td>
</tr>
<tr>
<td id="L2596" class="blob-num js-line-number" data-line-number="2596"></td>
<td id="LC2596" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L2597" class="blob-num js-line-number" data-line-number="2597"></td>
<td id="LC2597" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Mixed}</span> Depends on the action and component</span></td>
</tr>
<tr>
<td id="L2598" class="blob-num js-line-number" data-line-number="2598"></td>
<td id="LC2598" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2599" class="blob-num js-line-number" data-line-number="2599"></td>
<td id="LC2599" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">component</span>, <span class="pl-smi">action</span>) { <span class="pl-c"><span class="pl-c">//</span> this is called in the context of component, not runtime</span></td>
</tr>
<tr>
<td id="L2600" class="blob-num js-line-number" data-line-number="2600"></td>
<td id="LC2600" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>, <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L2601" class="blob-num js-line-number" data-line-number="2601"></td>
<td id="LC2601" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2602" class="blob-num js-line-number" data-line-number="2602"></td>
<td id="LC2602" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (self[component] <span class="pl-k">&&</span> self[component][action]) {</td>
</tr>
<tr>
<td id="L2603" class="blob-num js-line-number" data-line-number="2603"></td>
<td id="LC2603" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> self[component][action].<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, args);</td>
</tr>
<tr>
<td id="L2604" class="blob-num js-line-number" data-line-number="2604"></td>
<td id="LC2604" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2605" class="blob-num js-line-number" data-line-number="2605"></td>
<td id="LC2605" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2606" class="blob-num js-line-number" data-line-number="2606"></td>
<td id="LC2606" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L2607" class="blob-num js-line-number" data-line-number="2607"></td>
<td id="LC2607" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2608" class="blob-num js-line-number" data-line-number="2608"></td>
<td id="LC2608" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2609" class="blob-num js-line-number" data-line-number="2609"></td>
<td id="LC2609" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Destroys the runtime (removes all events and deletes DOM structures)</span></td>
</tr>
<tr>
<td id="L2610" class="blob-num js-line-number" data-line-number="2610"></td>
<td id="LC2610" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2611" class="blob-num js-line-number" data-line-number="2611"></td>
<td id="LC2611" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">destroy</span></span></td>
</tr>
<tr>
<td id="L2612" class="blob-num js-line-number" data-line-number="2612"></td>
<td id="LC2612" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2613" class="blob-num js-line-number" data-line-number="2613"></td>
<td id="LC2613" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2614" class="blob-num js-line-number" data-line-number="2614"></td>
<td id="LC2614" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>self) {</td>
</tr>
<tr>
<td id="L2615" class="blob-num js-line-number" data-line-number="2615"></td>
<td id="LC2615" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>; <span class="pl-c"><span class="pl-c">//</span> obviously already destroyed</span></td>
</tr>
<tr>
<td id="L2616" class="blob-num js-line-number" data-line-number="2616"></td>
<td id="LC2616" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2617" class="blob-num js-line-number" data-line-number="2617"></td>
<td id="LC2617" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2618" class="blob-num js-line-number" data-line-number="2618"></td>
<td id="LC2618" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> shimContainer <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">this</span>.<span class="pl-smi">shimid</span>);</td>
</tr>
<tr>
<td id="L2619" class="blob-num js-line-number" data-line-number="2619"></td>
<td id="LC2619" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (shimContainer) {</td>
</tr>
<tr>
<td id="L2620" class="blob-num js-line-number" data-line-number="2620"></td>
<td id="LC2620" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(shimContainer);</td>
</tr>
<tr>
<td id="L2621" class="blob-num js-line-number" data-line-number="2621"></td>
<td id="LC2621" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2622" class="blob-num js-line-number" data-line-number="2622"></td>
<td id="LC2622" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2623" class="blob-num js-line-number" data-line-number="2623"></td>
<td id="LC2623" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_shim) {</td>
</tr>
<tr>
<td id="L2624" class="blob-num js-line-number" data-line-number="2624"></td>
<td id="LC2624" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_shim</span>.<span class="pl-en">removeAllInstances</span>();</td>
</tr>
<tr>
<td id="L2625" class="blob-num js-line-number" data-line-number="2625"></td>
<td id="LC2625" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2626" class="blob-num js-line-number" data-line-number="2626"></td>
<td id="LC2626" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2627" class="blob-num js-line-number" data-line-number="2627"></td>
<td id="LC2627" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L2628" class="blob-num js-line-number" data-line-number="2628"></td>
<td id="LC2628" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> runtimes[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L2629" class="blob-num js-line-number" data-line-number="2629"></td>
<td id="LC2629" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> mark this runtime as destroyed</span></td>
</tr>
<tr>
<td id="L2630" class="blob-num js-line-number" data-line-number="2630"></td>
<td id="LC2630" class="blob-code blob-code-inner js-file-line"> _uid <span class="pl-k">=</span> self <span class="pl-k">=</span> _shim <span class="pl-k">=</span> shimContainer <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2631" class="blob-num js-line-number" data-line-number="2631"></td>
<td id="LC2631" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2632" class="blob-num js-line-number" data-line-number="2632"></td>
<td id="LC2632" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2633" class="blob-num js-line-number" data-line-number="2633"></td>
<td id="LC2633" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2634" class="blob-num js-line-number" data-line-number="2634"></td>
<td id="LC2634" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> once we got the mode, test against all caps</span></td>
</tr>
<tr>
<td id="L2635" class="blob-num js-line-number" data-line-number="2635"></td>
<td id="LC2635" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">mode</span> <span class="pl-k">&&</span> <span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span> <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-en">can</span>(<span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span>)) {</td>
</tr>
<tr>
<td id="L2636" class="blob-num js-line-number" data-line-number="2636"></td>
<td id="LC2636" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">mode</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2637" class="blob-num js-line-number" data-line-number="2637"></td>
<td id="LC2637" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L2638" class="blob-num js-line-number" data-line-number="2638"></td>
<td id="LC2638" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2639" class="blob-num js-line-number" data-line-number="2639"></td>
<td id="LC2639" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2640" class="blob-num js-line-number" data-line-number="2640"></td>
<td id="LC2640" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2641" class="blob-num js-line-number" data-line-number="2641"></td>
<td id="LC2641" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2642" class="blob-num js-line-number" data-line-number="2642"></td>
<td id="LC2642" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Default order to try different runtime types</span></td>
</tr>
<tr>
<td id="L2643" class="blob-num js-line-number" data-line-number="2643"></td>
<td id="LC2643" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2644" class="blob-num js-line-number" data-line-number="2644"></td>
<td id="LC2644" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> order</span></td>
</tr>
<tr>
<td id="L2645" class="blob-num js-line-number" data-line-number="2645"></td>
<td id="LC2645" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> String</span></td>
</tr>
<tr>
<td id="L2646" class="blob-num js-line-number" data-line-number="2646"></td>
<td id="LC2646" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2647" class="blob-num js-line-number" data-line-number="2647"></td>
<td id="LC2647" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2648" class="blob-num js-line-number" data-line-number="2648"></td>
<td id="LC2648" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-smi">order</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>html5,flash,silverlight,html4<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L2649" class="blob-num js-line-number" data-line-number="2649"></td>
<td id="LC2649" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2650" class="blob-num js-line-number" data-line-number="2650"></td>
<td id="LC2650" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2651" class="blob-num js-line-number" data-line-number="2651"></td>
<td id="LC2651" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2652" class="blob-num js-line-number" data-line-number="2652"></td>
<td id="LC2652" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Retrieves runtime from private hash by it's uid</span></td>
</tr>
<tr>
<td id="L2653" class="blob-num js-line-number" data-line-number="2653"></td>
<td id="LC2653" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2654" class="blob-num js-line-number" data-line-number="2654"></td>
<td id="LC2654" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getRuntime</span></span></td>
</tr>
<tr>
<td id="L2655" class="blob-num js-line-number" data-line-number="2655"></td>
<td id="LC2655" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2656" class="blob-num js-line-number" data-line-number="2656"></td>
<td id="LC2656" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2657" class="blob-num js-line-number" data-line-number="2657"></td>
<td id="LC2657" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">uid</span> Unique identifier of the runtime</span></td>
</tr>
<tr>
<td id="L2658" class="blob-num js-line-number" data-line-number="2658"></td>
<td id="LC2658" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Runtime|Boolean}</span> Returns runtime, if it exists and false, if - not</span></td>
</tr>
<tr>
<td id="L2659" class="blob-num js-line-number" data-line-number="2659"></td>
<td id="LC2659" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2660" class="blob-num js-line-number" data-line-number="2660"></td>
<td id="LC2660" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">getRuntime</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">uid</span>) {</td>
</tr>
<tr>
<td id="L2661" class="blob-num js-line-number" data-line-number="2661"></td>
<td id="LC2661" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtimes[uid] <span class="pl-k">?</span> runtimes[uid] <span class="pl-k">:</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2662" class="blob-num js-line-number" data-line-number="2662"></td>
<td id="LC2662" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2663" class="blob-num js-line-number" data-line-number="2663"></td>
<td id="LC2663" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2664" class="blob-num js-line-number" data-line-number="2664"></td>
<td id="LC2664" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2665" class="blob-num js-line-number" data-line-number="2665"></td>
<td id="LC2665" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2666" class="blob-num js-line-number" data-line-number="2666"></td>
<td id="LC2666" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Register constructor for the Runtime of new (or perhaps modified) type</span></td>
</tr>
<tr>
<td id="L2667" class="blob-num js-line-number" data-line-number="2667"></td>
<td id="LC2667" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2668" class="blob-num js-line-number" data-line-number="2668"></td>
<td id="LC2668" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">addConstructor</span></span></td>
</tr>
<tr>
<td id="L2669" class="blob-num js-line-number" data-line-number="2669"></td>
<td id="LC2669" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2670" class="blob-num js-line-number" data-line-number="2670"></td>
<td id="LC2670" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Runtime type (e.g. flash, html5, etc)</span></td>
</tr>
<tr>
<td id="L2671" class="blob-num js-line-number" data-line-number="2671"></td>
<td id="LC2671" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">construct</span> Constructor for the Runtime type</span></td>
</tr>
<tr>
<td id="L2672" class="blob-num js-line-number" data-line-number="2672"></td>
<td id="LC2672" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2673" class="blob-num js-line-number" data-line-number="2673"></td>
<td id="LC2673" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">addConstructor</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-en">constructor</span>) {</td>
</tr>
<tr>
<td id="L2674" class="blob-num js-line-number" data-line-number="2674"></td>
<td id="LC2674" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">constructor</span>.prototype = EventTarget.instance;</td>
</tr>
<tr>
<td id="L2675" class="blob-num js-line-number" data-line-number="2675"></td>
<td id="LC2675" class="blob-code blob-code-inner js-file-line"> runtimeConstructors[type] = <span class="pl-en">constructor</span>;</td>
</tr>
<tr>
<td id="L2676" class="blob-num js-line-number" data-line-number="2676"></td>
<td id="LC2676" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2677" class="blob-num js-line-number" data-line-number="2677"></td>
<td id="LC2677" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2678" class="blob-num js-line-number" data-line-number="2678"></td>
<td id="LC2678" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2679" class="blob-num js-line-number" data-line-number="2679"></td>
<td id="LC2679" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2680" class="blob-num js-line-number" data-line-number="2680"></td>
<td id="LC2680" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Get the constructor for the specified type.</span></td>
</tr>
<tr>
<td id="L2681" class="blob-num js-line-number" data-line-number="2681"></td>
<td id="LC2681" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2682" class="blob-num js-line-number" data-line-number="2682"></td>
<td id="LC2682" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> method getConstructor</span></td>
</tr>
<tr>
<td id="L2683" class="blob-num js-line-number" data-line-number="2683"></td>
<td id="LC2683" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2684" class="blob-num js-line-number" data-line-number="2684"></td>
<td id="LC2684" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Runtime type (e.g. flash, html5, etc)</span></td>
</tr>
<tr>
<td id="L2685" class="blob-num js-line-number" data-line-number="2685"></td>
<td id="LC2685" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Function}</span> Constructor for the Runtime type</span></td>
</tr>
<tr>
<td id="L2686" class="blob-num js-line-number" data-line-number="2686"></td>
<td id="LC2686" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2687" class="blob-num js-line-number" data-line-number="2687"></td>
<td id="LC2687" class="blob-code blob-code-inner js-file-line"> Runtime.getConstructor = <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L2688" class="blob-num js-line-number" data-line-number="2688"></td>
<td id="LC2688" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtimeConstructors[type] <span class="pl-k">||</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2689" class="blob-num js-line-number" data-line-number="2689"></td>
<td id="LC2689" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2690" class="blob-num js-line-number" data-line-number="2690"></td>
<td id="LC2690" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2691" class="blob-num js-line-number" data-line-number="2691"></td>
<td id="LC2691" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2692" class="blob-num js-line-number" data-line-number="2692"></td>
<td id="LC2692" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2693" class="blob-num js-line-number" data-line-number="2693"></td>
<td id="LC2693" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Get info about the runtime (uid, type, capabilities)</span></td>
</tr>
<tr>
<td id="L2694" class="blob-num js-line-number" data-line-number="2694"></td>
<td id="LC2694" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2695" class="blob-num js-line-number" data-line-number="2695"></td>
<td id="LC2695" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getInfo</span></span></td>
</tr>
<tr>
<td id="L2696" class="blob-num js-line-number" data-line-number="2696"></td>
<td id="LC2696" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2697" class="blob-num js-line-number" data-line-number="2697"></td>
<td id="LC2697" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">uid</span> Unique identifier of the runtime</span></td>
</tr>
<tr>
<td id="L2698" class="blob-num js-line-number" data-line-number="2698"></td>
<td id="LC2698" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Mixed}</span> Info object or null if runtime doesn't exist</span></td>
</tr>
<tr>
<td id="L2699" class="blob-num js-line-number" data-line-number="2699"></td>
<td id="LC2699" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2700" class="blob-num js-line-number" data-line-number="2700"></td>
<td id="LC2700" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">getInfo</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">uid</span>) {</td>
</tr>
<tr>
<td id="L2701" class="blob-num js-line-number" data-line-number="2701"></td>
<td id="LC2701" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">getRuntime</span>(uid);</td>
</tr>
<tr>
<td id="L2702" class="blob-num js-line-number" data-line-number="2702"></td>
<td id="LC2702" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2703" class="blob-num js-line-number" data-line-number="2703"></td>
<td id="LC2703" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime) {</td>
</tr>
<tr>
<td id="L2704" class="blob-num js-line-number" data-line-number="2704"></td>
<td id="LC2704" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L2705" class="blob-num js-line-number" data-line-number="2705"></td>
<td id="LC2705" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>,</td>
</tr>
<tr>
<td id="L2706" class="blob-num js-line-number" data-line-number="2706"></td>
<td id="LC2706" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-smi">runtime</span>.<span class="pl-c1">type</span>,</td>
</tr>
<tr>
<td id="L2707" class="blob-num js-line-number" data-line-number="2707"></td>
<td id="LC2707" class="blob-code blob-code-inner js-file-line"> mode<span class="pl-k">:</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">mode</span>,</td>
</tr>
<tr>
<td id="L2708" class="blob-num js-line-number" data-line-number="2708"></td>
<td id="LC2708" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">can</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2709" class="blob-num js-line-number" data-line-number="2709"></td>
<td id="LC2709" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">can</span>.<span class="pl-c1">apply</span>(runtime, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L2710" class="blob-num js-line-number" data-line-number="2710"></td>
<td id="LC2710" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2711" class="blob-num js-line-number" data-line-number="2711"></td>
<td id="LC2711" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2712" class="blob-num js-line-number" data-line-number="2712"></td>
<td id="LC2712" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2713" class="blob-num js-line-number" data-line-number="2713"></td>
<td id="LC2713" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2714" class="blob-num js-line-number" data-line-number="2714"></td>
<td id="LC2714" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2715" class="blob-num js-line-number" data-line-number="2715"></td>
<td id="LC2715" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2716" class="blob-num js-line-number" data-line-number="2716"></td>
<td id="LC2716" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2717" class="blob-num js-line-number" data-line-number="2717"></td>
<td id="LC2717" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2718" class="blob-num js-line-number" data-line-number="2718"></td>
<td id="LC2718" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Convert caps represented by a comma-separated string to the object representation.</span></td>
</tr>
<tr>
<td id="L2719" class="blob-num js-line-number" data-line-number="2719"></td>
<td id="LC2719" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2720" class="blob-num js-line-number" data-line-number="2720"></td>
<td id="LC2720" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">parseCaps</span></span></td>
</tr>
<tr>
<td id="L2721" class="blob-num js-line-number" data-line-number="2721"></td>
<td id="LC2721" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2722" class="blob-num js-line-number" data-line-number="2722"></td>
<td id="LC2722" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">capStr</span> Comma-separated list of capabilities</span></td>
</tr>
<tr>
<td id="L2723" class="blob-num js-line-number" data-line-number="2723"></td>
<td id="LC2723" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Object}</span></span></td>
</tr>
<tr>
<td id="L2724" class="blob-num js-line-number" data-line-number="2724"></td>
<td id="LC2724" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2725" class="blob-num js-line-number" data-line-number="2725"></td>
<td id="LC2725" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">parseCaps</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">capStr</span>) {</td>
</tr>
<tr>
<td id="L2726" class="blob-num js-line-number" data-line-number="2726"></td>
<td id="LC2726" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> capObj <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L2727" class="blob-num js-line-number" data-line-number="2727"></td>
<td id="LC2727" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2728" class="blob-num js-line-number" data-line-number="2728"></td>
<td id="LC2728" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(capStr) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2729" class="blob-num js-line-number" data-line-number="2729"></td>
<td id="LC2729" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> capStr <span class="pl-k">||</span> {};</td>
</tr>
<tr>
<td id="L2730" class="blob-num js-line-number" data-line-number="2730"></td>
<td id="LC2730" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2731" class="blob-num js-line-number" data-line-number="2731"></td>
<td id="LC2731" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2732" class="blob-num js-line-number" data-line-number="2732"></td>
<td id="LC2732" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">capStr</span>.<span class="pl-c1">split</span>(<span class="pl-s"><span class="pl-pds">'</span>,<span class="pl-pds">'</span></span>), <span class="pl-k">function</span>(<span class="pl-smi">key</span>) {</td>
</tr>
<tr>
<td id="L2733" class="blob-num js-line-number" data-line-number="2733"></td>
<td id="LC2733" class="blob-code blob-code-inner js-file-line"> capObj[key] <span class="pl-k">=</span> <span class="pl-c1">true</span>; <span class="pl-c"><span class="pl-c">//</span> we assume it to be - true</span></td>
</tr>
<tr>
<td id="L2734" class="blob-num js-line-number" data-line-number="2734"></td>
<td id="LC2734" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2735" class="blob-num js-line-number" data-line-number="2735"></td>
<td id="LC2735" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2736" class="blob-num js-line-number" data-line-number="2736"></td>
<td id="LC2736" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> capObj;</td>
</tr>
<tr>
<td id="L2737" class="blob-num js-line-number" data-line-number="2737"></td>
<td id="LC2737" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2738" class="blob-num js-line-number" data-line-number="2738"></td>
<td id="LC2738" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2739" class="blob-num js-line-number" data-line-number="2739"></td>
<td id="LC2739" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2740" class="blob-num js-line-number" data-line-number="2740"></td>
<td id="LC2740" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Test the specified runtime for specific capabilities.</span></td>
</tr>
<tr>
<td id="L2741" class="blob-num js-line-number" data-line-number="2741"></td>
<td id="LC2741" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2742" class="blob-num js-line-number" data-line-number="2742"></td>
<td id="LC2742" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">can</span></span></td>
</tr>
<tr>
<td id="L2743" class="blob-num js-line-number" data-line-number="2743"></td>
<td id="LC2743" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2744" class="blob-num js-line-number" data-line-number="2744"></td>
<td id="LC2744" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">type</span> Runtime type (e.g. flash, html5, etc)</span></td>
</tr>
<tr>
<td id="L2745" class="blob-num js-line-number" data-line-number="2745"></td>
<td id="LC2745" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Object}</span> <span class="pl-smi">caps</span> Set of capabilities to check</span></td>
</tr>
<tr>
<td id="L2746" class="blob-num js-line-number" data-line-number="2746"></td>
<td id="LC2746" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span> Result of the test</span></td>
</tr>
<tr>
<td id="L2747" class="blob-num js-line-number" data-line-number="2747"></td>
<td id="LC2747" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2748" class="blob-num js-line-number" data-line-number="2748"></td>
<td id="LC2748" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">can</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">caps</span>) {</td>
</tr>
<tr>
<td id="L2749" class="blob-num js-line-number" data-line-number="2749"></td>
<td id="LC2749" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime</td>
</tr>
<tr>
<td id="L2750" class="blob-num js-line-number" data-line-number="2750"></td>
<td id="LC2750" class="blob-code blob-code-inner js-file-line"> , <span class="pl-en">constructor </span>= Runtime.<span class="pl-en">getConstructor</span>(<span class="pl-smi">type</span>)</td>
</tr>
<tr>
<td id="L2751" class="blob-num js-line-number" data-line-number="2751"></td>
<td id="LC2751" class="blob-code blob-code-inner js-file-line"> , mode</td>
</tr>
<tr>
<td id="L2752" class="blob-num js-line-number" data-line-number="2752"></td>
<td id="LC2752" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L2753" class="blob-num js-line-number" data-line-number="2753"></td>
<td id="LC2753" class="blob-code blob-code-inner js-file-line"> if (constructor) {</td>
</tr>
<tr>
<td id="L2754" class="blob-num js-line-number" data-line-number="2754"></td>
<td id="LC2754" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">constructor</span>({</td>
</tr>
<tr>
<td id="L2755" class="blob-num js-line-number" data-line-number="2755"></td>
<td id="LC2755" class="blob-code blob-code-inner js-file-line"> required_caps<span class="pl-k">:</span> caps</td>
</tr>
<tr>
<td id="L2756" class="blob-num js-line-number" data-line-number="2756"></td>
<td id="LC2756" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2757" class="blob-num js-line-number" data-line-number="2757"></td>
<td id="LC2757" class="blob-code blob-code-inner js-file-line"> mode <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">mode</span>;</td>
</tr>
<tr>
<td id="L2758" class="blob-num js-line-number" data-line-number="2758"></td>
<td id="LC2758" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L2759" class="blob-num js-line-number" data-line-number="2759"></td>
<td id="LC2759" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span>mode;</td>
</tr>
<tr>
<td id="L2760" class="blob-num js-line-number" data-line-number="2760"></td>
<td id="LC2760" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2761" class="blob-num js-line-number" data-line-number="2761"></td>
<td id="LC2761" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2762" class="blob-num js-line-number" data-line-number="2762"></td>
<td id="LC2762" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2763" class="blob-num js-line-number" data-line-number="2763"></td>
<td id="LC2763" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2764" class="blob-num js-line-number" data-line-number="2764"></td>
<td id="LC2764" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2765" class="blob-num js-line-number" data-line-number="2765"></td>
<td id="LC2765" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2766" class="blob-num js-line-number" data-line-number="2766"></td>
<td id="LC2766" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Figure out a runtime that supports specified capabilities.</span></td>
</tr>
<tr>
<td id="L2767" class="blob-num js-line-number" data-line-number="2767"></td>
<td id="LC2767" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2768" class="blob-num js-line-number" data-line-number="2768"></td>
<td id="LC2768" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">thatCan</span></span></td>
</tr>
<tr>
<td id="L2769" class="blob-num js-line-number" data-line-number="2769"></td>
<td id="LC2769" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2770" class="blob-num js-line-number" data-line-number="2770"></td>
<td id="LC2770" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Object}</span> <span class="pl-smi">caps</span> Set of capabilities to check</span></td>
</tr>
<tr>
<td id="L2771" class="blob-num js-line-number" data-line-number="2771"></td>
<td id="LC2771" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[runtimeOrder]</span> Comma-separated list of runtimes to check against</span></td>
</tr>
<tr>
<td id="L2772" class="blob-num js-line-number" data-line-number="2772"></td>
<td id="LC2772" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Usable runtime identifier or null</span></td>
</tr>
<tr>
<td id="L2773" class="blob-num js-line-number" data-line-number="2773"></td>
<td id="LC2773" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2774" class="blob-num js-line-number" data-line-number="2774"></td>
<td id="LC2774" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">thatCan</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">caps</span>, <span class="pl-smi">runtimeOrder</span>) {</td>
</tr>
<tr>
<td id="L2775" class="blob-num js-line-number" data-line-number="2775"></td>
<td id="LC2775" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> types <span class="pl-k">=</span> (runtimeOrder <span class="pl-k">||</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">order</span>).<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">*</span>,<span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L2776" class="blob-num js-line-number" data-line-number="2776"></td>
<td id="LC2776" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">in</span> types) {</td>
</tr>
<tr>
<td id="L2777" class="blob-num js-line-number" data-line-number="2777"></td>
<td id="LC2777" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Runtime</span>.<span class="pl-en">can</span>(types[i], caps)) {</td>
</tr>
<tr>
<td id="L2778" class="blob-num js-line-number" data-line-number="2778"></td>
<td id="LC2778" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> types[i];</td>
</tr>
<tr>
<td id="L2779" class="blob-num js-line-number" data-line-number="2779"></td>
<td id="LC2779" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2780" class="blob-num js-line-number" data-line-number="2780"></td>
<td id="LC2780" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2781" class="blob-num js-line-number" data-line-number="2781"></td>
<td id="LC2781" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2782" class="blob-num js-line-number" data-line-number="2782"></td>
<td id="LC2782" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2783" class="blob-num js-line-number" data-line-number="2783"></td>
<td id="LC2783" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2784" class="blob-num js-line-number" data-line-number="2784"></td>
<td id="LC2784" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2785" class="blob-num js-line-number" data-line-number="2785"></td>
<td id="LC2785" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2786" class="blob-num js-line-number" data-line-number="2786"></td>
<td id="LC2786" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Figure out an operational mode for the specified set of capabilities.</span></td>
</tr>
<tr>
<td id="L2787" class="blob-num js-line-number" data-line-number="2787"></td>
<td id="LC2787" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2788" class="blob-num js-line-number" data-line-number="2788"></td>
<td id="LC2788" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getMode</span></span></td>
</tr>
<tr>
<td id="L2789" class="blob-num js-line-number" data-line-number="2789"></td>
<td id="LC2789" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2790" class="blob-num js-line-number" data-line-number="2790"></td>
<td id="LC2790" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">modeCaps</span> Set of capabilities that depend on particular runtime mode</span></td>
</tr>
<tr>
<td id="L2791" class="blob-num js-line-number" data-line-number="2791"></td>
<td id="LC2791" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[requiredCaps]</span> Supplied set of capabilities to find operational mode for</span></td>
</tr>
<tr>
<td id="L2792" class="blob-num js-line-number" data-line-number="2792"></td>
<td id="LC2792" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Boolean}</span> <span class="pl-smi">[defaultMode<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span></span>]</span> Default mode to use </span></td>
</tr>
<tr>
<td id="L2793" class="blob-num js-line-number" data-line-number="2793"></td>
<td id="LC2793" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String|Boolean}</span> Compatible operational mode</span></td>
</tr>
<tr>
<td id="L2794" class="blob-num js-line-number" data-line-number="2794"></td>
<td id="LC2794" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2795" class="blob-num js-line-number" data-line-number="2795"></td>
<td id="LC2795" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">getMode</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">modeCaps</span>, <span class="pl-smi">requiredCaps</span>, <span class="pl-smi">defaultMode</span>) {</td>
</tr>
<tr>
<td id="L2796" class="blob-num js-line-number" data-line-number="2796"></td>
<td id="LC2796" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mode <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2797" class="blob-num js-line-number" data-line-number="2797"></td>
<td id="LC2797" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2798" class="blob-num js-line-number" data-line-number="2798"></td>
<td id="LC2798" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(defaultMode) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span>) { <span class="pl-c"><span class="pl-c">//</span> only if not specified</span></td>
</tr>
<tr>
<td id="L2799" class="blob-num js-line-number" data-line-number="2799"></td>
<td id="LC2799" class="blob-code blob-code-inner js-file-line"> defaultMode <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L2800" class="blob-num js-line-number" data-line-number="2800"></td>
<td id="LC2800" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2801" class="blob-num js-line-number" data-line-number="2801"></td>
<td id="LC2801" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2802" class="blob-num js-line-number" data-line-number="2802"></td>
<td id="LC2802" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (requiredCaps <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(modeCaps)) {</td>
</tr>
<tr>
<td id="L2803" class="blob-num js-line-number" data-line-number="2803"></td>
<td id="LC2803" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> loop over required caps and check if they do require the same mode</span></td>
</tr>
<tr>
<td id="L2804" class="blob-num js-line-number" data-line-number="2804"></td>
<td id="LC2804" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(requiredCaps, <span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">cap</span>) {</td>
</tr>
<tr>
<td id="L2805" class="blob-num js-line-number" data-line-number="2805"></td>
<td id="LC2805" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">modeCaps</span>.<span class="pl-en">hasOwnProperty</span>(cap)) {</td>
</tr>
<tr>
<td id="L2806" class="blob-num js-line-number" data-line-number="2806"></td>
<td id="LC2806" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> capMode <span class="pl-k">=</span> modeCaps[cap](value);</td>
</tr>
<tr>
<td id="L2807" class="blob-num js-line-number" data-line-number="2807"></td>
<td id="LC2807" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2808" class="blob-num js-line-number" data-line-number="2808"></td>
<td id="LC2808" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make sure we always have an array</span></td>
</tr>
<tr>
<td id="L2809" class="blob-num js-line-number" data-line-number="2809"></td>
<td id="LC2809" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(capMode) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L2810" class="blob-num js-line-number" data-line-number="2810"></td>
<td id="LC2810" class="blob-code blob-code-inner js-file-line"> capMode <span class="pl-k">=</span> [capMode];</td>
</tr>
<tr>
<td id="L2811" class="blob-num js-line-number" data-line-number="2811"></td>
<td id="LC2811" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2812" class="blob-num js-line-number" data-line-number="2812"></td>
<td id="LC2812" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L2813" class="blob-num js-line-number" data-line-number="2813"></td>
<td id="LC2813" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>mode) {</td>
</tr>
<tr>
<td id="L2814" class="blob-num js-line-number" data-line-number="2814"></td>
<td id="LC2814" class="blob-code blob-code-inner js-file-line"> mode <span class="pl-k">=</span> capMode; </td>
</tr>
<tr>
<td id="L2815" class="blob-num js-line-number" data-line-number="2815"></td>
<td id="LC2815" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-k">!</span>(mode <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">arrayIntersect</span>(mode, capMode))) {</td>
</tr>
<tr>
<td id="L2816" class="blob-num js-line-number" data-line-number="2816"></td>
<td id="LC2816" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if cap requires conflicting mode - runtime cannot fulfill required caps</span></td>
</tr>
<tr>
<td id="L2817" class="blob-num js-line-number" data-line-number="2817"></td>
<td id="LC2817" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2818" class="blob-num js-line-number" data-line-number="2818"></td>
<td id="LC2818" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2819" class="blob-num js-line-number" data-line-number="2819"></td>
<td id="LC2819" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t\t</span>%s: %s (conflicting mode requested: %s)<span class="pl-pds">"</span></span>, cap, value, capMode);</td>
</tr>
<tr>
<td id="L2820" class="blob-num js-line-number" data-line-number="2820"></td>
<td id="LC2820" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2821" class="blob-num js-line-number" data-line-number="2821"></td>
<td id="LC2821" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2822" class="blob-num js-line-number" data-line-number="2822"></td>
<td id="LC2822" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (mode <span class="pl-k">=</span> <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L2823" class="blob-num js-line-number" data-line-number="2823"></td>
<td id="LC2823" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L2824" class="blob-num js-line-number" data-line-number="2824"></td>
<td id="LC2824" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2825" class="blob-num js-line-number" data-line-number="2825"></td>
<td id="LC2825" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2826" class="blob-num js-line-number" data-line-number="2826"></td>
<td id="LC2826" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2827" class="blob-num js-line-number" data-line-number="2827"></td>
<td id="LC2827" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t\t</span>%s: %s (compatible modes: %s)<span class="pl-pds">"</span></span>, cap, value, mode);</td>
</tr>
<tr>
<td id="L2828" class="blob-num js-line-number" data-line-number="2828"></td>
<td id="LC2828" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2829" class="blob-num js-line-number" data-line-number="2829"></td>
<td id="LC2829" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2830" class="blob-num js-line-number" data-line-number="2830"></td>
<td id="LC2830" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2831" class="blob-num js-line-number" data-line-number="2831"></td>
<td id="LC2831" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (mode) {</td>
</tr>
<tr>
<td id="L2832" class="blob-num js-line-number" data-line-number="2832"></td>
<td id="LC2832" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(defaultMode, mode) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span> <span class="pl-k">?</span> defaultMode <span class="pl-k">:</span> mode[<span class="pl-c1">0</span>];</td>
</tr>
<tr>
<td id="L2833" class="blob-num js-line-number" data-line-number="2833"></td>
<td id="LC2833" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (mode <span class="pl-k">===</span> <span class="pl-c1">false</span>) {</td>
</tr>
<tr>
<td id="L2834" class="blob-num js-line-number" data-line-number="2834"></td>
<td id="LC2834" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2835" class="blob-num js-line-number" data-line-number="2835"></td>
<td id="LC2835" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2836" class="blob-num js-line-number" data-line-number="2836"></td>
<td id="LC2836" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2837" class="blob-num js-line-number" data-line-number="2837"></td>
<td id="LC2837" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> defaultMode; </td>
</tr>
<tr>
<td id="L2838" class="blob-num js-line-number" data-line-number="2838"></td>
<td id="LC2838" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2839" class="blob-num js-line-number" data-line-number="2839"></td>
<td id="LC2839" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2840" class="blob-num js-line-number" data-line-number="2840"></td>
<td id="LC2840" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2841" class="blob-num js-line-number" data-line-number="2841"></td>
<td id="LC2841" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2842" class="blob-num js-line-number" data-line-number="2842"></td>
<td id="LC2842" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Third party shims (Flash and Silverlight) require global event target against which they</span></td>
</tr>
<tr>
<td id="L2843" class="blob-num js-line-number" data-line-number="2843"></td>
<td id="LC2843" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * will fire their events. However when moxie is not loaded to global namespace, default</span></td>
</tr>
<tr>
<td id="L2844" class="blob-num js-line-number" data-line-number="2844"></td>
<td id="LC2844" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * event target is not accessible and we have to create artificial ones.</span></td>
</tr>
<tr>
<td id="L2845" class="blob-num js-line-number" data-line-number="2845"></td>
<td id="LC2845" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L2846" class="blob-num js-line-number" data-line-number="2846"></td>
<td id="LC2846" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">getGlobalEventTarget</span></span></td>
</tr>
<tr>
<td id="L2847" class="blob-num js-line-number" data-line-number="2847"></td>
<td id="LC2847" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2848" class="blob-num js-line-number" data-line-number="2848"></td>
<td id="LC2848" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Name of the global event target</span></td>
</tr>
<tr>
<td id="L2849" class="blob-num js-line-number" data-line-number="2849"></td>
<td id="LC2849" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2850" class="blob-num js-line-number" data-line-number="2850"></td>
<td id="LC2850" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">getGlobalEventTarget</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2851" class="blob-num js-line-number" data-line-number="2851"></td>
<td id="LC2851" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>moxie<span class="pl-cce">\.</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(<span class="pl-smi">Env</span>.<span class="pl-smi">global_event_dispatcher</span>) <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>access_global_ns<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L2852" class="blob-num js-line-number" data-line-number="2852"></td>
<td id="LC2852" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> uniqueCallbackName <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie_event_target_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L2853" class="blob-num js-line-number" data-line-number="2853"></td>
<td id="LC2853" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2854" class="blob-num js-line-number" data-line-number="2854"></td>
<td id="LC2854" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">window</span>[uniqueCallbackName] <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L2855" class="blob-num js-line-number" data-line-number="2855"></td>
<td id="LC2855" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>.<span class="pl-c1">dispatchEvent</span>(e, data);</td>
</tr>
<tr>
<td id="L2856" class="blob-num js-line-number" data-line-number="2856"></td>
<td id="LC2856" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2857" class="blob-num js-line-number" data-line-number="2857"></td>
<td id="LC2857" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2858" class="blob-num js-line-number" data-line-number="2858"></td>
<td id="LC2858" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">global_event_dispatcher</span> <span class="pl-k">=</span> uniqueCallbackName;</td>
</tr>
<tr>
<td id="L2859" class="blob-num js-line-number" data-line-number="2859"></td>
<td id="LC2859" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2860" class="blob-num js-line-number" data-line-number="2860"></td>
<td id="LC2860" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2861" class="blob-num js-line-number" data-line-number="2861"></td>
<td id="LC2861" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Env</span>.<span class="pl-smi">global_event_dispatcher</span>;</td>
</tr>
<tr>
<td id="L2862" class="blob-num js-line-number" data-line-number="2862"></td>
<td id="LC2862" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2863" class="blob-num js-line-number" data-line-number="2863"></td>
<td id="LC2863" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2864" class="blob-num js-line-number" data-line-number="2864"></td>
<td id="LC2864" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2865" class="blob-num js-line-number" data-line-number="2865"></td>
<td id="LC2865" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2866" class="blob-num js-line-number" data-line-number="2866"></td>
<td id="LC2866" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Capability check that always returns true</span></td>
</tr>
<tr>
<td id="L2867" class="blob-num js-line-number" data-line-number="2867"></td>
<td id="LC2867" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2868" class="blob-num js-line-number" data-line-number="2868"></td>
<td id="LC2868" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2869" class="blob-num js-line-number" data-line-number="2869"></td>
<td id="LC2869" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2870" class="blob-num js-line-number" data-line-number="2870"></td>
<td id="LC2870" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{True}</span></span></td>
</tr>
<tr>
<td id="L2871" class="blob-num js-line-number" data-line-number="2871"></td>
<td id="LC2871" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2872" class="blob-num js-line-number" data-line-number="2872"></td>
<td id="LC2872" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">capTrue</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2873" class="blob-num js-line-number" data-line-number="2873"></td>
<td id="LC2873" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L2874" class="blob-num js-line-number" data-line-number="2874"></td>
<td id="LC2874" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2875" class="blob-num js-line-number" data-line-number="2875"></td>
<td id="LC2875" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2876" class="blob-num js-line-number" data-line-number="2876"></td>
<td id="LC2876" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2877" class="blob-num js-line-number" data-line-number="2877"></td>
<td id="LC2877" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Capability check that always returns false</span></td>
</tr>
<tr>
<td id="L2878" class="blob-num js-line-number" data-line-number="2878"></td>
<td id="LC2878" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2879" class="blob-num js-line-number" data-line-number="2879"></td>
<td id="LC2879" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2880" class="blob-num js-line-number" data-line-number="2880"></td>
<td id="LC2880" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2881" class="blob-num js-line-number" data-line-number="2881"></td>
<td id="LC2881" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{False}</span></span></td>
</tr>
<tr>
<td id="L2882" class="blob-num js-line-number" data-line-number="2882"></td>
<td id="LC2882" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2883" class="blob-num js-line-number" data-line-number="2883"></td>
<td id="LC2883" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">capFalse</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2884" class="blob-num js-line-number" data-line-number="2884"></td>
<td id="LC2884" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L2885" class="blob-num js-line-number" data-line-number="2885"></td>
<td id="LC2885" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2886" class="blob-num js-line-number" data-line-number="2886"></td>
<td id="LC2886" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2887" class="blob-num js-line-number" data-line-number="2887"></td>
<td id="LC2887" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2888" class="blob-num js-line-number" data-line-number="2888"></td>
<td id="LC2888" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Evaluate the expression to boolean value and create a function that always returns it.</span></td>
</tr>
<tr>
<td id="L2889" class="blob-num js-line-number" data-line-number="2889"></td>
<td id="LC2889" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2890" class="blob-num js-line-number" data-line-number="2890"></td>
<td id="LC2890" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2891" class="blob-num js-line-number" data-line-number="2891"></td>
<td id="LC2891" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L2892" class="blob-num js-line-number" data-line-number="2892"></td>
<td id="LC2892" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> <span class="pl-smi">expr</span> Expression to evaluate</span></td>
</tr>
<tr>
<td id="L2893" class="blob-num js-line-number" data-line-number="2893"></td>
<td id="LC2893" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Function}</span> Function returning the result of evaluation</span></td>
</tr>
<tr>
<td id="L2894" class="blob-num js-line-number" data-line-number="2894"></td>
<td id="LC2894" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2895" class="blob-num js-line-number" data-line-number="2895"></td>
<td id="LC2895" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">capTest</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">expr</span>) {</td>
</tr>
<tr>
<td id="L2896" class="blob-num js-line-number" data-line-number="2896"></td>
<td id="LC2896" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2897" class="blob-num js-line-number" data-line-number="2897"></td>
<td id="LC2897" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span>expr;</td>
</tr>
<tr>
<td id="L2898" class="blob-num js-line-number" data-line-number="2898"></td>
<td id="LC2898" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2899" class="blob-num js-line-number" data-line-number="2899"></td>
<td id="LC2899" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L2900" class="blob-num js-line-number" data-line-number="2900"></td>
<td id="LC2900" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2901" class="blob-num js-line-number" data-line-number="2901"></td>
<td id="LC2901" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> Runtime;</td>
</tr>
<tr>
<td id="L2902" class="blob-num js-line-number" data-line-number="2902"></td>
<td id="LC2902" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L2903" class="blob-num js-line-number" data-line-number="2903"></td>
<td id="LC2903" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2904" class="blob-num js-line-number" data-line-number="2904"></td>
<td id="LC2904" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/RuntimeClient.js</span></td>
</tr>
<tr>
<td id="L2905" class="blob-num js-line-number" data-line-number="2905"></td>
<td id="LC2905" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2906" class="blob-num js-line-number" data-line-number="2906"></td>
<td id="LC2906" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2907" class="blob-num js-line-number" data-line-number="2907"></td>
<td id="LC2907" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * RuntimeClient.js</span></td>
</tr>
<tr>
<td id="L2908" class="blob-num js-line-number" data-line-number="2908"></td>
<td id="LC2908" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L2909" class="blob-num js-line-number" data-line-number="2909"></td>
<td id="LC2909" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L2910" class="blob-num js-line-number" data-line-number="2910"></td>
<td id="LC2910" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L2911" class="blob-num js-line-number" data-line-number="2911"></td>
<td id="LC2911" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L2912" class="blob-num js-line-number" data-line-number="2912"></td>
<td id="LC2912" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L2913" class="blob-num js-line-number" data-line-number="2913"></td>
<td id="LC2913" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L2914" class="blob-num js-line-number" data-line-number="2914"></td>
<td id="LC2914" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2915" class="blob-num js-line-number" data-line-number="2915"></td>
<td id="LC2915" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2916" class="blob-num js-line-number" data-line-number="2916"></td>
<td id="LC2916" class="blob-code blob-code-inner js-file-line">define('moxie/runtime/RuntimeClient', [</td>
</tr>
<tr>
<td id="L2917" class="blob-num js-line-number" data-line-number="2917"></td>
<td id="LC2917" class="blob-code blob-code-inner js-file-line"> 'moxie/core/utils/Env',</td>
</tr>
<tr>
<td id="L2918" class="blob-num js-line-number" data-line-number="2918"></td>
<td id="LC2918" class="blob-code blob-code-inner js-file-line"> 'moxie/core/Exceptions',</td>
</tr>
<tr>
<td id="L2919" class="blob-num js-line-number" data-line-number="2919"></td>
<td id="LC2919" class="blob-code blob-code-inner js-file-line"> 'moxie/core/utils/Basic',</td>
</tr>
<tr>
<td id="L2920" class="blob-num js-line-number" data-line-number="2920"></td>
<td id="LC2920" class="blob-code blob-code-inner js-file-line"> 'moxie/runtime/Runtime'</td>
</tr>
<tr>
<td id="L2921" class="blob-num js-line-number" data-line-number="2921"></td>
<td id="LC2921" class="blob-code blob-code-inner js-file-line">], function(Env, x, Basic, Runtime) {</td>
</tr>
<tr>
<td id="L2922" class="blob-num js-line-number" data-line-number="2922"></td>
<td id="LC2922" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2923" class="blob-num js-line-number" data-line-number="2923"></td>
<td id="LC2923" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Set of methods and properties, required by a component to acquire ability to connect to a runtime</span></td>
</tr>
<tr>
<td id="L2924" class="blob-num js-line-number" data-line-number="2924"></td>
<td id="LC2924" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2925" class="blob-num js-line-number" data-line-number="2925"></td>
<td id="LC2925" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/runtime/RuntimeClient</span></td>
</tr>
<tr>
<td id="L2926" class="blob-num js-line-number" data-line-number="2926"></td>
<td id="LC2926" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2927" class="blob-num js-line-number" data-line-number="2927"></td>
<td id="LC2927" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span> <span class="pl-en">RuntimeClient</span>() {</td>
</tr>
<tr>
<td id="L2928" class="blob-num js-line-number" data-line-number="2928"></td>
<td id="LC2928" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime;</td>
</tr>
<tr>
<td id="L2929" class="blob-num js-line-number" data-line-number="2929"></td>
<td id="LC2929" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2930" class="blob-num js-line-number" data-line-number="2930"></td>
<td id="LC2930" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L2931" class="blob-num js-line-number" data-line-number="2931"></td>
<td id="LC2931" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L2932" class="blob-num js-line-number" data-line-number="2932"></td>
<td id="LC2932" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Connects to the runtime specified by the options. Will either connect to existing runtime or create a new one.</span></td>
</tr>
<tr>
<td id="L2933" class="blob-num js-line-number" data-line-number="2933"></td>
<td id="LC2933" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Increments number of clients connected to the specified runtime.</span></td>
</tr>
<tr>
<td id="L2934" class="blob-num js-line-number" data-line-number="2934"></td>
<td id="LC2934" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L2935" class="blob-num js-line-number" data-line-number="2935"></td>
<td id="LC2935" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L2936" class="blob-num js-line-number" data-line-number="2936"></td>
<td id="LC2936" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">connectRuntime</span></span></td>
</tr>
<tr>
<td id="L2937" class="blob-num js-line-number" data-line-number="2937"></td>
<td id="LC2937" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> <span class="pl-smi">options</span> Can be a runtme uid or a set of key-value pairs defining requirements and pre-requisites</span></td>
</tr>
<tr>
<td id="L2938" class="blob-num js-line-number" data-line-number="2938"></td>
<td id="LC2938" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L2939" class="blob-num js-line-number" data-line-number="2939"></td>
<td id="LC2939" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">connectRuntime</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L2940" class="blob-num js-line-number" data-line-number="2940"></td>
<td id="LC2940" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, ruid;</td>
</tr>
<tr>
<td id="L2941" class="blob-num js-line-number" data-line-number="2941"></td>
<td id="LC2941" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2942" class="blob-num js-line-number" data-line-number="2942"></td>
<td id="LC2942" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">initialize</span>(<span class="pl-smi">items</span>) {</td>
</tr>
<tr>
<td id="L2943" class="blob-num js-line-number" data-line-number="2943"></td>
<td id="LC2943" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> type, <span class="pl-en">constructor</span>;</td>
</tr>
<tr>
<td id="L2944" class="blob-num js-line-number" data-line-number="2944"></td>
<td id="LC2944" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2945" class="blob-num js-line-number" data-line-number="2945"></td>
<td id="LC2945" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if we ran out of runtimes</span></td>
</tr>
<tr>
<td id="L2946" class="blob-num js-line-number" data-line-number="2946"></td>
<td id="LC2946" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">if</span> (<span class="pl-k">!</span><span class="pl-smi">items</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L2947" class="blob-num js-line-number" data-line-number="2947"></td>
<td id="LC2947" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeError<span class="pl-pds">'</span></span>, <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_INIT_ERR</span>));</td>
</tr>
<tr>
<td id="L2948" class="blob-num js-line-number" data-line-number="2948"></td>
<td id="LC2948" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L2949" class="blob-num js-line-number" data-line-number="2949"></td>
<td id="LC2949" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L2950" class="blob-num js-line-number" data-line-number="2950"></td>
<td id="LC2950" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2951" class="blob-num js-line-number" data-line-number="2951"></td>
<td id="LC2951" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2952" class="blob-num js-line-number" data-line-number="2952"></td>
<td id="LC2952" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">items</span>.<span class="pl-c1">shift</span>().<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L2953" class="blob-num js-line-number" data-line-number="2953"></td>
<td id="LC2953" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">constructor </span>= Runtime.<span class="pl-en">getConstructor</span>(<span class="pl-smi">type</span>);</td>
</tr>
<tr>
<td id="L2954" class="blob-num js-line-number" data-line-number="2954"></td>
<td id="LC2954" class="blob-code blob-code-inner js-file-line"> if (!constructor) {</td>
</tr>
<tr>
<td id="L2955" class="blob-num js-line-number" data-line-number="2955"></td>
<td id="LC2955" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2956" class="blob-num js-line-number" data-line-number="2956"></td>
<td id="LC2956" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Constructor for '%s' runtime is not available.<span class="pl-pds">"</span></span>, type);</td>
</tr>
<tr>
<td id="L2957" class="blob-num js-line-number" data-line-number="2957"></td>
<td id="LC2957" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2958" class="blob-num js-line-number" data-line-number="2958"></td>
<td id="LC2958" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">initialize</span>(items);</td>
</tr>
<tr>
<td id="L2959" class="blob-num js-line-number" data-line-number="2959"></td>
<td id="LC2959" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L2960" class="blob-num js-line-number" data-line-number="2960"></td>
<td id="LC2960" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2961" class="blob-num js-line-number" data-line-number="2961"></td>
<td id="LC2961" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2962" class="blob-num js-line-number" data-line-number="2962"></td>
<td id="LC2962" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2963" class="blob-num js-line-number" data-line-number="2963"></td>
<td id="LC2963" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Trying runtime: %s<span class="pl-pds">"</span></span>, type);</td>
</tr>
<tr>
<td id="L2964" class="blob-num js-line-number" data-line-number="2964"></td>
<td id="LC2964" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(options);</td>
</tr>
<tr>
<td id="L2965" class="blob-num js-line-number" data-line-number="2965"></td>
<td id="LC2965" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2966" class="blob-num js-line-number" data-line-number="2966"></td>
<td id="LC2966" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2967" class="blob-num js-line-number" data-line-number="2967"></td>
<td id="LC2967" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> try initializing the runtime</span></td>
</tr>
<tr>
<td id="L2968" class="blob-num js-line-number" data-line-number="2968"></td>
<td id="LC2968" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">constructor</span>(options);</td>
</tr>
<tr>
<td id="L2969" class="blob-num js-line-number" data-line-number="2969"></td>
<td id="LC2969" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2970" class="blob-num js-line-number" data-line-number="2970"></td>
<td id="LC2970" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Init<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2971" class="blob-num js-line-number" data-line-number="2971"></td>
<td id="LC2971" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> mark runtime as initialized</span></td>
</tr>
<tr>
<td id="L2972" class="blob-num js-line-number" data-line-number="2972"></td>
<td id="LC2972" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">initialized</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L2973" class="blob-num js-line-number" data-line-number="2973"></td>
<td id="LC2973" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2974" class="blob-num js-line-number" data-line-number="2974"></td>
<td id="LC2974" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2975" class="blob-num js-line-number" data-line-number="2975"></td>
<td id="LC2975" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Runtime '%s' initialized<span class="pl-pds">"</span></span>, <span class="pl-smi">runtime</span>.<span class="pl-c1">type</span>);</td>
</tr>
<tr>
<td id="L2976" class="blob-num js-line-number" data-line-number="2976"></td>
<td id="LC2976" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2977" class="blob-num js-line-number" data-line-number="2977"></td>
<td id="LC2977" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2978" class="blob-num js-line-number" data-line-number="2978"></td>
<td id="LC2978" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> jailbreak ...</span></td>
</tr>
<tr>
<td id="L2979" class="blob-num js-line-number" data-line-number="2979"></td>
<td id="LC2979" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2980" class="blob-num js-line-number" data-line-number="2980"></td>
<td id="LC2980" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">clients</span><span class="pl-k">++</span>;</td>
</tr>
<tr>
<td id="L2981" class="blob-num js-line-number" data-line-number="2981"></td>
<td id="LC2981" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L2982" class="blob-num js-line-number" data-line-number="2982"></td>
<td id="LC2982" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this will be triggered on component</span></td>
</tr>
<tr>
<td id="L2983" class="blob-num js-line-number" data-line-number="2983"></td>
<td id="LC2983" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeInit<span class="pl-pds">'</span></span>, runtime);</td>
</tr>
<tr>
<td id="L2984" class="blob-num js-line-number" data-line-number="2984"></td>
<td id="LC2984" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L2985" class="blob-num js-line-number" data-line-number="2985"></td>
<td id="LC2985" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2986" class="blob-num js-line-number" data-line-number="2986"></td>
<td id="LC2986" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2987" class="blob-num js-line-number" data-line-number="2987"></td>
<td id="LC2987" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Error<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L2988" class="blob-num js-line-number" data-line-number="2988"></td>
<td id="LC2988" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L2989" class="blob-num js-line-number" data-line-number="2989"></td>
<td id="LC2989" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Runtime '%s' failed to initialize<span class="pl-pds">"</span></span>, <span class="pl-smi">runtime</span>.<span class="pl-c1">type</span>);</td>
</tr>
<tr>
<td id="L2990" class="blob-num js-line-number" data-line-number="2990"></td>
<td id="LC2990" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L2991" class="blob-num js-line-number" data-line-number="2991"></td>
<td id="LC2991" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2992" class="blob-num js-line-number" data-line-number="2992"></td>
<td id="LC2992" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">destroy</span>(); <span class="pl-c"><span class="pl-c">//</span> runtime cannot destroy itself from inside at a right moment, thus we do it here</span></td>
</tr>
<tr>
<td id="L2993" class="blob-num js-line-number" data-line-number="2993"></td>
<td id="LC2993" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">initialize</span>(items);</td>
</tr>
<tr>
<td id="L2994" class="blob-num js-line-number" data-line-number="2994"></td>
<td id="LC2994" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L2995" class="blob-num js-line-number" data-line-number="2995"></td>
<td id="LC2995" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L2996" class="blob-num js-line-number" data-line-number="2996"></td>
<td id="LC2996" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Exception<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">err</span>) {</td>
</tr>
<tr>
<td id="L2997" class="blob-num js-line-number" data-line-number="2997"></td>
<td id="LC2997" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> message <span class="pl-k">=</span> <span class="pl-smi">err</span>.<span class="pl-c1">name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span>(#<span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-smi">err</span>.<span class="pl-c1">code</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span>)<span class="pl-pds">"</span></span> <span class="pl-k">+</span> (<span class="pl-smi">err</span>.<span class="pl-smi">message</span> <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">"</span>, from: <span class="pl-pds">"</span></span> <span class="pl-k">+</span> <span class="pl-smi">err</span>.<span class="pl-smi">message</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L2998" class="blob-num js-line-number" data-line-number="2998"></td>
<td id="LC2998" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L2999" class="blob-num js-line-number" data-line-number="2999"></td>
<td id="LC2999" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L3000" class="blob-num js-line-number" data-line-number="3000"></td>
<td id="LC3000" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Runtime '%s' has thrown an exception: %s<span class="pl-pds">"</span></span>, <span class="pl-c1">this</span>.<span class="pl-c1">type</span>, message);</td>
</tr>
<tr>
<td id="L3001" class="blob-num js-line-number" data-line-number="3001"></td>
<td id="LC3001" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3002" class="blob-num js-line-number" data-line-number="3002"></td>
<td id="LC3002" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeError<span class="pl-pds">'</span></span>, <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">EXCEPTION_ERR</span>, message));</td>
</tr>
<tr>
<td id="L3003" class="blob-num js-line-number" data-line-number="3003"></td>
<td id="LC3003" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3004" class="blob-num js-line-number" data-line-number="3004"></td>
<td id="LC3004" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3005" class="blob-num js-line-number" data-line-number="3005"></td>
<td id="LC3005" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L3006" class="blob-num js-line-number" data-line-number="3006"></td>
<td id="LC3006" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t</span>selected mode: %s<span class="pl-pds">"</span></span>, <span class="pl-smi">runtime</span>.<span class="pl-smi">mode</span>); </td>
</tr>
<tr>
<td id="L3007" class="blob-num js-line-number" data-line-number="3007"></td>
<td id="LC3007" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3008" class="blob-num js-line-number" data-line-number="3008"></td>
<td id="LC3008" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3009" class="blob-num js-line-number" data-line-number="3009"></td>
<td id="LC3009" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if runtime managed to pick-up operational mode</span></td>
</tr>
<tr>
<td id="L3010" class="blob-num js-line-number" data-line-number="3010"></td>
<td id="LC3010" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">runtime</span>.<span class="pl-smi">mode</span>) {</td>
</tr>
<tr>
<td id="L3011" class="blob-num js-line-number" data-line-number="3011"></td>
<td id="LC3011" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>Error<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L3012" class="blob-num js-line-number" data-line-number="3012"></td>
<td id="LC3012" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L3013" class="blob-num js-line-number" data-line-number="3013"></td>
<td id="LC3013" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3014" class="blob-num js-line-number" data-line-number="3014"></td>
<td id="LC3014" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3015" class="blob-num js-line-number" data-line-number="3015"></td>
<td id="LC3015" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">init</span>();</td>
</tr>
<tr>
<td id="L3016" class="blob-num js-line-number" data-line-number="3016"></td>
<td id="LC3016" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3017" class="blob-num js-line-number" data-line-number="3017"></td>
<td id="LC3017" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3018" class="blob-num js-line-number" data-line-number="3018"></td>
<td id="LC3018" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if a particular runtime was requested</span></td>
</tr>
<tr>
<td id="L3019" class="blob-num js-line-number" data-line-number="3019"></td>
<td id="LC3019" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(options) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3020" class="blob-num js-line-number" data-line-number="3020"></td>
<td id="LC3020" class="blob-code blob-code-inner js-file-line"> ruid <span class="pl-k">=</span> options;</td>
</tr>
<tr>
<td id="L3021" class="blob-num js-line-number" data-line-number="3021"></td>
<td id="LC3021" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-smi">options</span>.<span class="pl-smi">ruid</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3022" class="blob-num js-line-number" data-line-number="3022"></td>
<td id="LC3022" class="blob-code blob-code-inner js-file-line"> ruid <span class="pl-k">=</span> <span class="pl-smi">options</span>.<span class="pl-smi">ruid</span>;</td>
</tr>
<tr>
<td id="L3023" class="blob-num js-line-number" data-line-number="3023"></td>
<td id="LC3023" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3024" class="blob-num js-line-number" data-line-number="3024"></td>
<td id="LC3024" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3025" class="blob-num js-line-number" data-line-number="3025"></td>
<td id="LC3025" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (ruid) {</td>
</tr>
<tr>
<td id="L3026" class="blob-num js-line-number" data-line-number="3026"></td>
<td id="LC3026" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">getRuntime</span>(ruid);</td>
</tr>
<tr>
<td id="L3027" class="blob-num js-line-number" data-line-number="3027"></td>
<td id="LC3027" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime) {</td>
</tr>
<tr>
<td id="L3028" class="blob-num js-line-number" data-line-number="3028"></td>
<td id="LC3028" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> ruid;</td>
</tr>
<tr>
<td id="L3029" class="blob-num js-line-number" data-line-number="3029"></td>
<td id="LC3029" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">clients</span><span class="pl-k">++</span>;</td>
</tr>
<tr>
<td id="L3030" class="blob-num js-line-number" data-line-number="3030"></td>
<td id="LC3030" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtime;</td>
</tr>
<tr>
<td id="L3031" class="blob-num js-line-number" data-line-number="3031"></td>
<td id="LC3031" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L3032" class="blob-num js-line-number" data-line-number="3032"></td>
<td id="LC3032" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> there should be a runtime and there's none - weird case</span></td>
</tr>
<tr>
<td id="L3033" class="blob-num js-line-number" data-line-number="3033"></td>
<td id="LC3033" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_INIT_ERR</span>);</td>
</tr>
<tr>
<td id="L3034" class="blob-num js-line-number" data-line-number="3034"></td>
<td id="LC3034" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3035" class="blob-num js-line-number" data-line-number="3035"></td>
<td id="LC3035" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3036" class="blob-num js-line-number" data-line-number="3036"></td>
<td id="LC3036" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3037" class="blob-num js-line-number" data-line-number="3037"></td>
<td id="LC3037" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> initialize a fresh one, that fits runtime list and required features best</span></td>
</tr>
<tr>
<td id="L3038" class="blob-num js-line-number" data-line-number="3038"></td>
<td id="LC3038" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">initialize</span>((<span class="pl-smi">options</span>.<span class="pl-smi">runtime_order</span> <span class="pl-k">||</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">order</span>).<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">*</span>,<span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-pds">/</span></span>));</td>
</tr>
<tr>
<td id="L3039" class="blob-num js-line-number" data-line-number="3039"></td>
<td id="LC3039" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3040" class="blob-num js-line-number" data-line-number="3040"></td>
<td id="LC3040" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3041" class="blob-num js-line-number" data-line-number="3041"></td>
<td id="LC3041" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3042" class="blob-num js-line-number" data-line-number="3042"></td>
<td id="LC3042" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3043" class="blob-num js-line-number" data-line-number="3043"></td>
<td id="LC3043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Disconnects from the runtime. Decrements number of clients connected to the specified runtime.</span></td>
</tr>
<tr>
<td id="L3044" class="blob-num js-line-number" data-line-number="3044"></td>
<td id="LC3044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3045" class="blob-num js-line-number" data-line-number="3045"></td>
<td id="LC3045" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L3046" class="blob-num js-line-number" data-line-number="3046"></td>
<td id="LC3046" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">disconnectRuntime</span></span></td>
</tr>
<tr>
<td id="L3047" class="blob-num js-line-number" data-line-number="3047"></td>
<td id="LC3047" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3048" class="blob-num js-line-number" data-line-number="3048"></td>
<td id="LC3048" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">disconnectRuntime</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3049" class="blob-num js-line-number" data-line-number="3049"></td>
<td id="LC3049" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime <span class="pl-k">&&</span> <span class="pl-k">--</span><span class="pl-smi">runtime</span>.<span class="pl-smi">clients</span> <span class="pl-k"><=</span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L3050" class="blob-num js-line-number" data-line-number="3050"></td>
<td id="LC3050" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L3051" class="blob-num js-line-number" data-line-number="3051"></td>
<td id="LC3051" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3052" class="blob-num js-line-number" data-line-number="3052"></td>
<td id="LC3052" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3053" class="blob-num js-line-number" data-line-number="3053"></td>
<td id="LC3053" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> once the component is disconnected, it shouldn't have access to the runtime</span></td>
</tr>
<tr>
<td id="L3054" class="blob-num js-line-number" data-line-number="3054"></td>
<td id="LC3054" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L3055" class="blob-num js-line-number" data-line-number="3055"></td>
<td id="LC3055" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3056" class="blob-num js-line-number" data-line-number="3056"></td>
<td id="LC3056" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3057" class="blob-num js-line-number" data-line-number="3057"></td>
<td id="LC3057" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3058" class="blob-num js-line-number" data-line-number="3058"></td>
<td id="LC3058" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3059" class="blob-num js-line-number" data-line-number="3059"></td>
<td id="LC3059" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the runtime to which the client is currently connected.</span></td>
</tr>
<tr>
<td id="L3060" class="blob-num js-line-number" data-line-number="3060"></td>
<td id="LC3060" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3061" class="blob-num js-line-number" data-line-number="3061"></td>
<td id="LC3061" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getRuntime</span></span></td>
</tr>
<tr>
<td id="L3062" class="blob-num js-line-number" data-line-number="3062"></td>
<td id="LC3062" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Runtime}</span> Runtime or null if client is not connected</span></td>
</tr>
<tr>
<td id="L3063" class="blob-num js-line-number" data-line-number="3063"></td>
<td id="LC3063" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3064" class="blob-num js-line-number" data-line-number="3064"></td>
<td id="LC3064" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getRuntime</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3065" class="blob-num js-line-number" data-line-number="3065"></td>
<td id="LC3065" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime <span class="pl-k">&&</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>) {</td>
</tr>
<tr>
<td id="L3066" class="blob-num js-line-number" data-line-number="3066"></td>
<td id="LC3066" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtime;</td>
</tr>
<tr>
<td id="L3067" class="blob-num js-line-number" data-line-number="3067"></td>
<td id="LC3067" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3068" class="blob-num js-line-number" data-line-number="3068"></td>
<td id="LC3068" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtime <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> make sure we do not leave zombies rambling around</span></td>
</tr>
<tr>
<td id="L3069" class="blob-num js-line-number" data-line-number="3069"></td>
<td id="LC3069" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3070" class="blob-num js-line-number" data-line-number="3070"></td>
<td id="LC3070" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3071" class="blob-num js-line-number" data-line-number="3071"></td>
<td id="LC3071" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3072" class="blob-num js-line-number" data-line-number="3072"></td>
<td id="LC3072" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3073" class="blob-num js-line-number" data-line-number="3073"></td>
<td id="LC3073" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Handy shortcut to safely invoke runtime extension methods.</span></td>
</tr>
<tr>
<td id="L3074" class="blob-num js-line-number" data-line-number="3074"></td>
<td id="LC3074" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td>
</tr>
<tr>
<td id="L3075" class="blob-num js-line-number" data-line-number="3075"></td>
<td id="LC3075" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L3076" class="blob-num js-line-number" data-line-number="3076"></td>
<td id="LC3076" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">exec</span></span></td>
</tr>
<tr>
<td id="L3077" class="blob-num js-line-number" data-line-number="3077"></td>
<td id="LC3077" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Mixed}</span> Whatever runtime extension method returns</span></td>
</tr>
<tr>
<td id="L3078" class="blob-num js-line-number" data-line-number="3078"></td>
<td id="LC3078" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3079" class="blob-num js-line-number" data-line-number="3079"></td>
<td id="LC3079" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3080" class="blob-num js-line-number" data-line-number="3080"></td>
<td id="LC3080" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtime <span class="pl-k">?</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>) <span class="pl-k">:</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L3081" class="blob-num js-line-number" data-line-number="3081"></td>
<td id="LC3081" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3082" class="blob-num js-line-number" data-line-number="3082"></td>
<td id="LC3082" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3083" class="blob-num js-line-number" data-line-number="3083"></td>
<td id="LC3083" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3084" class="blob-num js-line-number" data-line-number="3084"></td>
<td id="LC3084" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3085" class="blob-num js-line-number" data-line-number="3085"></td>
<td id="LC3085" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Test runtime client for specific capability</span></td>
</tr>
<tr>
<td id="L3086" class="blob-num js-line-number" data-line-number="3086"></td>
<td id="LC3086" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td>
</tr>
<tr>
<td id="L3087" class="blob-num js-line-number" data-line-number="3087"></td>
<td id="LC3087" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">can</span></span></td>
</tr>
<tr>
<td id="L3088" class="blob-num js-line-number" data-line-number="3088"></td>
<td id="LC3088" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">cap</span></span></td>
</tr>
<tr>
<td id="L3089" class="blob-num js-line-number" data-line-number="3089"></td>
<td id="LC3089" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Bool}</span></span></td>
</tr>
<tr>
<td id="L3090" class="blob-num js-line-number" data-line-number="3090"></td>
<td id="LC3090" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3091" class="blob-num js-line-number" data-line-number="3091"></td>
<td id="LC3091" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">can</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">cap</span>) {</td>
</tr>
<tr>
<td id="L3092" class="blob-num js-line-number" data-line-number="3092"></td>
<td id="LC3092" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> runtime <span class="pl-k">?</span> <span class="pl-smi">runtime</span>.<span class="pl-en">can</span>(cap) <span class="pl-k">:</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L3093" class="blob-num js-line-number" data-line-number="3093"></td>
<td id="LC3093" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3094" class="blob-num js-line-number" data-line-number="3094"></td>
<td id="LC3094" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3095" class="blob-num js-line-number" data-line-number="3095"></td>
<td id="LC3095" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3096" class="blob-num js-line-number" data-line-number="3096"></td>
<td id="LC3096" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3097" class="blob-num js-line-number" data-line-number="3097"></td>
<td id="LC3097" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3098" class="blob-num js-line-number" data-line-number="3098"></td>
<td id="LC3098" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3099" class="blob-num js-line-number" data-line-number="3099"></td>
<td id="LC3099" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L3100" class="blob-num js-line-number" data-line-number="3100"></td>
<td id="LC3100" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3101" class="blob-num js-line-number" data-line-number="3101"></td>
<td id="LC3101" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/file/Blob.js</span></td>
</tr>
<tr>
<td id="L3102" class="blob-num js-line-number" data-line-number="3102"></td>
<td id="LC3102" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3103" class="blob-num js-line-number" data-line-number="3103"></td>
<td id="LC3103" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3104" class="blob-num js-line-number" data-line-number="3104"></td>
<td id="LC3104" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Blob.js</span></td>
</tr>
<tr>
<td id="L3105" class="blob-num js-line-number" data-line-number="3105"></td>
<td id="LC3105" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3106" class="blob-num js-line-number" data-line-number="3106"></td>
<td id="LC3106" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L3107" class="blob-num js-line-number" data-line-number="3107"></td>
<td id="LC3107" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L3108" class="blob-num js-line-number" data-line-number="3108"></td>
<td id="LC3108" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3109" class="blob-num js-line-number" data-line-number="3109"></td>
<td id="LC3109" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L3110" class="blob-num js-line-number" data-line-number="3110"></td>
<td id="LC3110" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L3111" class="blob-num js-line-number" data-line-number="3111"></td>
<td id="LC3111" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3112" class="blob-num js-line-number" data-line-number="3112"></td>
<td id="LC3112" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3113" class="blob-num js-line-number" data-line-number="3113"></td>
<td id="LC3113" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/file/Blob<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L3114" class="blob-num js-line-number" data-line-number="3114"></td>
<td id="LC3114" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3115" class="blob-num js-line-number" data-line-number="3115"></td>
<td id="LC3115" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Encode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3116" class="blob-num js-line-number" data-line-number="3116"></td>
<td id="LC3116" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeClient<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L3117" class="blob-num js-line-number" data-line-number="3117"></td>
<td id="LC3117" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Encode</span>, <span class="pl-smi">RuntimeClient</span>) {</td>
</tr>
<tr>
<td id="L3118" class="blob-num js-line-number" data-line-number="3118"></td>
<td id="LC3118" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3119" class="blob-num js-line-number" data-line-number="3119"></td>
<td id="LC3119" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> blobpool <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L3120" class="blob-num js-line-number" data-line-number="3120"></td>
<td id="LC3120" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3121" class="blob-num js-line-number" data-line-number="3121"></td>
<td id="LC3121" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3122" class="blob-num js-line-number" data-line-number="3122"></td>
<td id="LC3122" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/file/Blob</span></td>
</tr>
<tr>
<td id="L3123" class="blob-num js-line-number" data-line-number="3123"></td>
<td id="LC3123" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L3124" class="blob-num js-line-number" data-line-number="3124"></td>
<td id="LC3124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">ruid</span> Unique id of the runtime, to which this blob belongs to</span></td>
</tr>
<tr>
<td id="L3125" class="blob-num js-line-number" data-line-number="3125"></td>
<td id="LC3125" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">blob</span> Object "Native" blob object, as it is represented in the runtime</span></td>
</tr>
<tr>
<td id="L3126" class="blob-num js-line-number" data-line-number="3126"></td>
<td id="LC3126" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3127" class="blob-num js-line-number" data-line-number="3127"></td>
<td id="LC3127" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">Blob</span>(<span class="pl-smi">ruid</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L3128" class="blob-num js-line-number" data-line-number="3128"></td>
<td id="LC3128" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3129" class="blob-num js-line-number" data-line-number="3129"></td>
<td id="LC3129" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_sliceDetached</span>(<span class="pl-smi">start</span>, <span class="pl-smi">end</span>, <span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L3130" class="blob-num js-line-number" data-line-number="3130"></td>
<td id="LC3130" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> blob, data <span class="pl-k">=</span> blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L3131" class="blob-num js-line-number" data-line-number="3131"></td>
<td id="LC3131" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3132" class="blob-num js-line-number" data-line-number="3132"></td>
<td id="LC3132" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(data) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">data</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L3133" class="blob-num js-line-number" data-line-number="3133"></td>
<td id="LC3133" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> or throw exception</span></td>
</tr>
<tr>
<td id="L3134" class="blob-num js-line-number" data-line-number="3134"></td>
<td id="LC3134" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3135" class="blob-num js-line-number" data-line-number="3135"></td>
<td id="LC3135" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3136" class="blob-num js-line-number" data-line-number="3136"></td>
<td id="LC3136" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-c1">null</span>, {</td>
</tr>
<tr>
<td id="L3137" class="blob-num js-line-number" data-line-number="3137"></td>
<td id="LC3137" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> type,</td>
</tr>
<tr>
<td id="L3138" class="blob-num js-line-number" data-line-number="3138"></td>
<td id="LC3138" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> end <span class="pl-k">-</span> start</td>
</tr>
<tr>
<td id="L3139" class="blob-num js-line-number" data-line-number="3139"></td>
<td id="LC3139" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3140" class="blob-num js-line-number" data-line-number="3140"></td>
<td id="LC3140" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">blob</span>.<span class="pl-c1">detach</span>(<span class="pl-smi">data</span>.<span class="pl-c1">substr</span>(start, <span class="pl-smi">blob</span>.<span class="pl-c1">size</span>));</td>
</tr>
<tr>
<td id="L3141" class="blob-num js-line-number" data-line-number="3141"></td>
<td id="LC3141" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3142" class="blob-num js-line-number" data-line-number="3142"></td>
<td id="LC3142" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> blob;</td>
</tr>
<tr>
<td id="L3143" class="blob-num js-line-number" data-line-number="3143"></td>
<td id="LC3143" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3144" class="blob-num js-line-number" data-line-number="3144"></td>
<td id="LC3144" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3145" class="blob-num js-line-number" data-line-number="3145"></td>
<td id="LC3145" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L3146" class="blob-num js-line-number" data-line-number="3146"></td>
<td id="LC3146" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3147" class="blob-num js-line-number" data-line-number="3147"></td>
<td id="LC3147" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (ruid) { </td>
</tr>
<tr>
<td id="L3148" class="blob-num js-line-number" data-line-number="3148"></td>
<td id="LC3148" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(ruid);</td>
</tr>
<tr>
<td id="L3149" class="blob-num js-line-number" data-line-number="3149"></td>
<td id="LC3149" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3150" class="blob-num js-line-number" data-line-number="3150"></td>
<td id="LC3150" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3151" class="blob-num js-line-number" data-line-number="3151"></td>
<td id="LC3151" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>blob) {</td>
</tr>
<tr>
<td id="L3152" class="blob-num js-line-number" data-line-number="3152"></td>
<td id="LC3152" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L3153" class="blob-num js-line-number" data-line-number="3153"></td>
<td id="LC3153" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(blob) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) { <span class="pl-c"><span class="pl-c">//</span> dataUrl or binary string</span></td>
</tr>
<tr>
<td id="L3154" class="blob-num js-line-number" data-line-number="3154"></td>
<td id="LC3154" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> { data<span class="pl-k">:</span> blob };</td>
</tr>
<tr>
<td id="L3155" class="blob-num js-line-number" data-line-number="3155"></td>
<td id="LC3155" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3156" class="blob-num js-line-number" data-line-number="3156"></td>
<td id="LC3156" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3157" class="blob-num js-line-number" data-line-number="3157"></td>
<td id="LC3157" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L3158" class="blob-num js-line-number" data-line-number="3158"></td>
<td id="LC3158" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3159" class="blob-num js-line-number" data-line-number="3159"></td>
<td id="LC3159" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3160" class="blob-num js-line-number" data-line-number="3160"></td>
<td id="LC3160" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the component</span></td>
</tr>
<tr>
<td id="L3161" class="blob-num js-line-number" data-line-number="3161"></td>
<td id="LC3161" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3162" class="blob-num js-line-number" data-line-number="3162"></td>
<td id="LC3162" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L3163" class="blob-num js-line-number" data-line-number="3163"></td>
<td id="LC3163" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L3164" class="blob-num js-line-number" data-line-number="3164"></td>
<td id="LC3164" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3165" class="blob-num js-line-number" data-line-number="3165"></td>
<td id="LC3165" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">blob</span>.<span class="pl-smi">uid</span> <span class="pl-k">||</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L3166" class="blob-num js-line-number" data-line-number="3166"></td>
<td id="LC3166" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3167" class="blob-num js-line-number" data-line-number="3167"></td>
<td id="LC3167" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3168" class="blob-num js-line-number" data-line-number="3168"></td>
<td id="LC3168" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the connected runtime, if falsy, then runtime will have to be initialized </span></td>
</tr>
<tr>
<td id="L3169" class="blob-num js-line-number" data-line-number="3169"></td>
<td id="LC3169" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> before this Blob can be used, modified or sent</span></td>
</tr>
<tr>
<td id="L3170" class="blob-num js-line-number" data-line-number="3170"></td>
<td id="LC3170" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3171" class="blob-num js-line-number" data-line-number="3171"></td>
<td id="LC3171" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> ruid</span></td>
</tr>
<tr>
<td id="L3172" class="blob-num js-line-number" data-line-number="3172"></td>
<td id="LC3172" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L3173" class="blob-num js-line-number" data-line-number="3173"></td>
<td id="LC3173" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3174" class="blob-num js-line-number" data-line-number="3174"></td>
<td id="LC3174" class="blob-code blob-code-inner js-file-line"> ruid<span class="pl-k">:</span> ruid,</td>
</tr>
<tr>
<td id="L3175" class="blob-num js-line-number" data-line-number="3175"></td>
<td id="LC3175" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3176" class="blob-num js-line-number" data-line-number="3176"></td>
<td id="LC3176" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3177" class="blob-num js-line-number" data-line-number="3177"></td>
<td id="LC3177" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Size of blob</span></td>
</tr>
<tr>
<td id="L3178" class="blob-num js-line-number" data-line-number="3178"></td>
<td id="LC3178" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3179" class="blob-num js-line-number" data-line-number="3179"></td>
<td id="LC3179" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> size</span></td>
</tr>
<tr>
<td id="L3180" class="blob-num js-line-number" data-line-number="3180"></td>
<td id="LC3180" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L3181" class="blob-num js-line-number" data-line-number="3181"></td>
<td id="LC3181" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L3182" class="blob-num js-line-number" data-line-number="3182"></td>
<td id="LC3182" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3183" class="blob-num js-line-number" data-line-number="3183"></td>
<td id="LC3183" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> <span class="pl-smi">blob</span>.<span class="pl-c1">size</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L3184" class="blob-num js-line-number" data-line-number="3184"></td>
<td id="LC3184" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3185" class="blob-num js-line-number" data-line-number="3185"></td>
<td id="LC3185" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3186" class="blob-num js-line-number" data-line-number="3186"></td>
<td id="LC3186" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Mime type of blob</span></td>
</tr>
<tr>
<td id="L3187" class="blob-num js-line-number" data-line-number="3187"></td>
<td id="LC3187" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3188" class="blob-num js-line-number" data-line-number="3188"></td>
<td id="LC3188" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> type</span></td>
</tr>
<tr>
<td id="L3189" class="blob-num js-line-number" data-line-number="3189"></td>
<td id="LC3189" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L3190" class="blob-num js-line-number" data-line-number="3190"></td>
<td id="LC3190" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi"><span class="pl-pds">'</span><span class="pl-pds">'</span></span></span></td>
</tr>
<tr>
<td id="L3191" class="blob-num js-line-number" data-line-number="3191"></td>
<td id="LC3191" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3192" class="blob-num js-line-number" data-line-number="3192"></td>
<td id="LC3192" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-smi">blob</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3193" class="blob-num js-line-number" data-line-number="3193"></td>
<td id="LC3193" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3194" class="blob-num js-line-number" data-line-number="3194"></td>
<td id="LC3194" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3195" class="blob-num js-line-number" data-line-number="3195"></td>
<td id="LC3195" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">slice</span></span></td>
</tr>
<tr>
<td id="L3196" class="blob-num js-line-number" data-line-number="3196"></td>
<td id="LC3196" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[start<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">0</span></span>]</span></span></td>
</tr>
<tr>
<td id="L3197" class="blob-num js-line-number" data-line-number="3197"></td>
<td id="LC3197" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3198" class="blob-num js-line-number" data-line-number="3198"></td>
<td id="LC3198" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">slice</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">start</span>, <span class="pl-smi">end</span>, <span class="pl-smi">type</span>) { </td>
</tr>
<tr>
<td id="L3199" class="blob-num js-line-number" data-line-number="3199"></td>
<td id="LC3199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L3200" class="blob-num js-line-number" data-line-number="3200"></td>
<td id="LC3200" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_sliceDetached</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L3201" class="blob-num js-line-number" data-line-number="3201"></td>
<td id="LC3201" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3202" class="blob-num js-line-number" data-line-number="3202"></td>
<td id="LC3202" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Blob<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>slice<span class="pl-pds">'</span></span>, <span class="pl-c1">this</span>.<span class="pl-en">getSource</span>(), start, end, type);</td>
</tr>
<tr>
<td id="L3203" class="blob-num js-line-number" data-line-number="3203"></td>
<td id="LC3203" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3204" class="blob-num js-line-number" data-line-number="3204"></td>
<td id="LC3204" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3205" class="blob-num js-line-number" data-line-number="3205"></td>
<td id="LC3205" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3206" class="blob-num js-line-number" data-line-number="3206"></td>
<td id="LC3206" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns "native" blob object (as it is represented in connected runtime) or null if not found</span></td>
</tr>
<tr>
<td id="L3207" class="blob-num js-line-number" data-line-number="3207"></td>
<td id="LC3207" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3208" class="blob-num js-line-number" data-line-number="3208"></td>
<td id="LC3208" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getSource</span></span></td>
</tr>
<tr>
<td id="L3209" class="blob-num js-line-number" data-line-number="3209"></td>
<td id="LC3209" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Blob}</span> Returns "native" blob object or null if not found</span></td>
</tr>
<tr>
<td id="L3210" class="blob-num js-line-number" data-line-number="3210"></td>
<td id="LC3210" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3211" class="blob-num js-line-number" data-line-number="3211"></td>
<td id="LC3211" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getSource</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3212" class="blob-num js-line-number" data-line-number="3212"></td>
<td id="LC3212" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>]) {</td>
</tr>
<tr>
<td id="L3213" class="blob-num js-line-number" data-line-number="3213"></td>
<td id="LC3213" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>; </td>
</tr>
<tr>
<td id="L3214" class="blob-num js-line-number" data-line-number="3214"></td>
<td id="LC3214" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3215" class="blob-num js-line-number" data-line-number="3215"></td>
<td id="LC3215" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L3216" class="blob-num js-line-number" data-line-number="3216"></td>
<td id="LC3216" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3217" class="blob-num js-line-number" data-line-number="3217"></td>
<td id="LC3217" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3218" class="blob-num js-line-number" data-line-number="3218"></td>
<td id="LC3218" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L3219" class="blob-num js-line-number" data-line-number="3219"></td>
<td id="LC3219" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Detaches blob from any runtime that it depends on and initialize with standalone value</span></td>
</tr>
<tr>
<td id="L3220" class="blob-num js-line-number" data-line-number="3220"></td>
<td id="LC3220" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3221" class="blob-num js-line-number" data-line-number="3221"></td>
<td id="LC3221" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">detach</span></span></td>
</tr>
<tr>
<td id="L3222" class="blob-num js-line-number" data-line-number="3222"></td>
<td id="LC3222" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L3223" class="blob-num js-line-number" data-line-number="3223"></td>
<td id="LC3223" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{DOMString}</span> <span class="pl-smi">[data<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span></span>]</span> Standalone value</span></td>
</tr>
<tr>
<td id="L3224" class="blob-num js-line-number" data-line-number="3224"></td>
<td id="LC3224" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3225" class="blob-num js-line-number" data-line-number="3225"></td>
<td id="LC3225" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">detach</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L3226" class="blob-num js-line-number" data-line-number="3226"></td>
<td id="LC3226" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">ruid</span>) {</td>
</tr>
<tr>
<td id="L3227" class="blob-num js-line-number" data-line-number="3227"></td>
<td id="LC3227" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Blob<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>destroy<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L3228" class="blob-num js-line-number" data-line-number="3228"></td>
<td id="LC3228" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L3229" class="blob-num js-line-number" data-line-number="3229"></td>
<td id="LC3229" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L3230" class="blob-num js-line-number" data-line-number="3230"></td>
<td id="LC3230" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3231" class="blob-num js-line-number" data-line-number="3231"></td>
<td id="LC3231" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3232" class="blob-num js-line-number" data-line-number="3232"></td>
<td id="LC3232" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> data <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L3233" class="blob-num js-line-number" data-line-number="3233"></td>
<td id="LC3233" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3234" class="blob-num js-line-number" data-line-number="3234"></td>
<td id="LC3234" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if dataUrl, convert to binary string</span></td>
</tr>
<tr>
<td id="L3235" class="blob-num js-line-number" data-line-number="3235"></td>
<td id="LC3235" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">data</span>.<span class="pl-c1">substr</span>(<span class="pl-c1">0</span>, <span class="pl-c1">5</span>) <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3236" class="blob-num js-line-number" data-line-number="3236"></td>
<td id="LC3236" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> base64Offset <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">indexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L3237" class="blob-num js-line-number" data-line-number="3237"></td>
<td id="LC3237" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">type</span> <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">substring</span>(<span class="pl-c1">5</span>, base64Offset);</td>
</tr>
<tr>
<td id="L3238" class="blob-num js-line-number" data-line-number="3238"></td>
<td id="LC3238" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(<span class="pl-smi">data</span>.<span class="pl-c1">substring</span>(base64Offset <span class="pl-k">+</span> <span class="pl-c1">8</span>));</td>
</tr>
<tr>
<td id="L3239" class="blob-num js-line-number" data-line-number="3239"></td>
<td id="LC3239" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3240" class="blob-num js-line-number" data-line-number="3240"></td>
<td id="LC3240" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3241" class="blob-num js-line-number" data-line-number="3241"></td>
<td id="LC3241" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">size</span> <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L3242" class="blob-num js-line-number" data-line-number="3242"></td>
<td id="LC3242" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3243" class="blob-num js-line-number" data-line-number="3243"></td>
<td id="LC3243" class="blob-code blob-code-inner js-file-line"> blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>] <span class="pl-k">=</span> data;</td>
</tr>
<tr>
<td id="L3244" class="blob-num js-line-number" data-line-number="3244"></td>
<td id="LC3244" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3245" class="blob-num js-line-number" data-line-number="3245"></td>
<td id="LC3245" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3246" class="blob-num js-line-number" data-line-number="3246"></td>
<td id="LC3246" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3247" class="blob-num js-line-number" data-line-number="3247"></td>
<td id="LC3247" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Checks if blob is standalone (detached of any runtime)</span></td>
</tr>
<tr>
<td id="L3248" class="blob-num js-line-number" data-line-number="3248"></td>
<td id="LC3248" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td>
</tr>
<tr>
<td id="L3249" class="blob-num js-line-number" data-line-number="3249"></td>
<td id="LC3249" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">isDetached</span></span></td>
</tr>
<tr>
<td id="L3250" class="blob-num js-line-number" data-line-number="3250"></td>
<td id="LC3250" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L3251" class="blob-num js-line-number" data-line-number="3251"></td>
<td id="LC3251" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span></span></td>
</tr>
<tr>
<td id="L3252" class="blob-num js-line-number" data-line-number="3252"></td>
<td id="LC3252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3253" class="blob-num js-line-number" data-line-number="3253"></td>
<td id="LC3253" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">isDetached</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3254" class="blob-num js-line-number" data-line-number="3254"></td>
<td id="LC3254" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-smi">ruid</span> <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L3255" class="blob-num js-line-number" data-line-number="3255"></td>
<td id="LC3255" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3256" class="blob-num js-line-number" data-line-number="3256"></td>
<td id="LC3256" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3257" class="blob-num js-line-number" data-line-number="3257"></td>
<td id="LC3257" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L3258" class="blob-num js-line-number" data-line-number="3258"></td>
<td id="LC3258" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Destroy Blob and free any resources it was using</span></td>
</tr>
<tr>
<td id="L3259" class="blob-num js-line-number" data-line-number="3259"></td>
<td id="LC3259" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3260" class="blob-num js-line-number" data-line-number="3260"></td>
<td id="LC3260" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">destroy</span></span></td>
</tr>
<tr>
<td id="L3261" class="blob-num js-line-number" data-line-number="3261"></td>
<td id="LC3261" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3262" class="blob-num js-line-number" data-line-number="3262"></td>
<td id="LC3262" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3263" class="blob-num js-line-number" data-line-number="3263"></td>
<td id="LC3263" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">detach</span>();</td>
</tr>
<tr>
<td id="L3264" class="blob-num js-line-number" data-line-number="3264"></td>
<td id="LC3264" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>];</td>
</tr>
<tr>
<td id="L3265" class="blob-num js-line-number" data-line-number="3265"></td>
<td id="LC3265" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3266" class="blob-num js-line-number" data-line-number="3266"></td>
<td id="LC3266" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3267" class="blob-num js-line-number" data-line-number="3267"></td>
<td id="LC3267" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3268" class="blob-num js-line-number" data-line-number="3268"></td>
<td id="LC3268" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3269" class="blob-num js-line-number" data-line-number="3269"></td>
<td id="LC3269" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-c1">data</span>) {</td>
</tr>
<tr>
<td id="L3270" class="blob-num js-line-number" data-line-number="3270"></td>
<td id="LC3270" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">detach</span>(<span class="pl-smi">blob</span>.<span class="pl-c1">data</span>); <span class="pl-c"><span class="pl-c">//</span> auto-detach if payload has been passed</span></td>
</tr>
<tr>
<td id="L3271" class="blob-num js-line-number" data-line-number="3271"></td>
<td id="LC3271" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L3272" class="blob-num js-line-number" data-line-number="3272"></td>
<td id="LC3272" class="blob-code blob-code-inner js-file-line"> blobpool[<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>] <span class="pl-k">=</span> blob; </td>
</tr>
<tr>
<td id="L3273" class="blob-num js-line-number" data-line-number="3273"></td>
<td id="LC3273" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3274" class="blob-num js-line-number" data-line-number="3274"></td>
<td id="LC3274" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3275" class="blob-num js-line-number" data-line-number="3275"></td>
<td id="LC3275" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L3276" class="blob-num js-line-number" data-line-number="3276"></td>
<td id="LC3276" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">Blob</span>;</td>
</tr>
<tr>
<td id="L3277" class="blob-num js-line-number" data-line-number="3277"></td>
<td id="LC3277" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L3278" class="blob-num js-line-number" data-line-number="3278"></td>
<td id="LC3278" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3279" class="blob-num js-line-number" data-line-number="3279"></td>
<td id="LC3279" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/I18n.js</span></td>
</tr>
<tr>
<td id="L3280" class="blob-num js-line-number" data-line-number="3280"></td>
<td id="LC3280" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3281" class="blob-num js-line-number" data-line-number="3281"></td>
<td id="LC3281" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3282" class="blob-num js-line-number" data-line-number="3282"></td>
<td id="LC3282" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * I18n.js</span></td>
</tr>
<tr>
<td id="L3283" class="blob-num js-line-number" data-line-number="3283"></td>
<td id="LC3283" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3284" class="blob-num js-line-number" data-line-number="3284"></td>
<td id="LC3284" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L3285" class="blob-num js-line-number" data-line-number="3285"></td>
<td id="LC3285" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L3286" class="blob-num js-line-number" data-line-number="3286"></td>
<td id="LC3286" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3287" class="blob-num js-line-number" data-line-number="3287"></td>
<td id="LC3287" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L3288" class="blob-num js-line-number" data-line-number="3288"></td>
<td id="LC3288" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L3289" class="blob-num js-line-number" data-line-number="3289"></td>
<td id="LC3289" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3290" class="blob-num js-line-number" data-line-number="3290"></td>
<td id="LC3290" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3291" class="blob-num js-line-number" data-line-number="3291"></td>
<td id="LC3291" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/core/I18n<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L3292" class="blob-num js-line-number" data-line-number="3292"></td>
<td id="LC3292" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L3293" class="blob-num js-line-number" data-line-number="3293"></td>
<td id="LC3293" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L3294" class="blob-num js-line-number" data-line-number="3294"></td>
<td id="LC3294" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> i18n <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L3295" class="blob-num js-line-number" data-line-number="3295"></td>
<td id="LC3295" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3296" class="blob-num js-line-number" data-line-number="3296"></td>
<td id="LC3296" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3297" class="blob-num js-line-number" data-line-number="3297"></td>
<td id="LC3297" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/core/I18n</span></td>
</tr>
<tr>
<td id="L3298" class="blob-num js-line-number" data-line-number="3298"></td>
<td id="LC3298" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3299" class="blob-num js-line-number" data-line-number="3299"></td>
<td id="LC3299" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L3300" class="blob-num js-line-number" data-line-number="3300"></td>
<td id="LC3300" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3301" class="blob-num js-line-number" data-line-number="3301"></td>
<td id="LC3301" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Extends the language pack object with new items.</span></td>
</tr>
<tr>
<td id="L3302" class="blob-num js-line-number" data-line-number="3302"></td>
<td id="LC3302" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3303" class="blob-num js-line-number" data-line-number="3303"></td>
<td id="LC3303" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">pack</span> Language pack items to add.</span></td>
</tr>
<tr>
<td id="L3304" class="blob-num js-line-number" data-line-number="3304"></td>
<td id="LC3304" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{Object}</span> Extended language pack object.</span></td>
</tr>
<tr>
<td id="L3305" class="blob-num js-line-number" data-line-number="3305"></td>
<td id="LC3305" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3306" class="blob-num js-line-number" data-line-number="3306"></td>
<td id="LC3306" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">addI18n</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">pack</span>) {</td>
</tr>
<tr>
<td id="L3307" class="blob-num js-line-number" data-line-number="3307"></td>
<td id="LC3307" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(i18n, pack);</td>
</tr>
<tr>
<td id="L3308" class="blob-num js-line-number" data-line-number="3308"></td>
<td id="LC3308" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3309" class="blob-num js-line-number" data-line-number="3309"></td>
<td id="LC3309" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3310" class="blob-num js-line-number" data-line-number="3310"></td>
<td id="LC3310" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3311" class="blob-num js-line-number" data-line-number="3311"></td>
<td id="LC3311" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Translates the specified string by checking for the english string in the language pack lookup.</span></td>
</tr>
<tr>
<td id="L3312" class="blob-num js-line-number" data-line-number="3312"></td>
<td id="LC3312" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3313" class="blob-num js-line-number" data-line-number="3313"></td>
<td id="LC3313" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span> String to look for.</span></td>
</tr>
<tr>
<td id="L3314" class="blob-num js-line-number" data-line-number="3314"></td>
<td id="LC3314" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Translated string or the input string if it wasn't found.</span></td>
</tr>
<tr>
<td id="L3315" class="blob-num js-line-number" data-line-number="3315"></td>
<td id="LC3315" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3316" class="blob-num js-line-number" data-line-number="3316"></td>
<td id="LC3316" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">translate</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L3317" class="blob-num js-line-number" data-line-number="3317"></td>
<td id="LC3317" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> i18n[str] <span class="pl-k">||</span> str;</td>
</tr>
<tr>
<td id="L3318" class="blob-num js-line-number" data-line-number="3318"></td>
<td id="LC3318" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3319" class="blob-num js-line-number" data-line-number="3319"></td>
<td id="LC3319" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3320" class="blob-num js-line-number" data-line-number="3320"></td>
<td id="LC3320" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3321" class="blob-num js-line-number" data-line-number="3321"></td>
<td id="LC3321" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Shortcut for translate function</span></td>
</tr>
<tr>
<td id="L3322" class="blob-num js-line-number" data-line-number="3322"></td>
<td id="LC3322" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3323" class="blob-num js-line-number" data-line-number="3323"></td>
<td id="LC3323" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span> String to look for.</span></td>
</tr>
<tr>
<td id="L3324" class="blob-num js-line-number" data-line-number="3324"></td>
<td id="LC3324" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Translated string or the input string if it wasn't found.</span></td>
</tr>
<tr>
<td id="L3325" class="blob-num js-line-number" data-line-number="3325"></td>
<td id="LC3325" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3326" class="blob-num js-line-number" data-line-number="3326"></td>
<td id="LC3326" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L3327" class="blob-num js-line-number" data-line-number="3327"></td>
<td id="LC3327" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">translate</span>(str);</td>
</tr>
<tr>
<td id="L3328" class="blob-num js-line-number" data-line-number="3328"></td>
<td id="LC3328" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3329" class="blob-num js-line-number" data-line-number="3329"></td>
<td id="LC3329" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3330" class="blob-num js-line-number" data-line-number="3330"></td>
<td id="LC3330" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3331" class="blob-num js-line-number" data-line-number="3331"></td>
<td id="LC3331" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Pseudo sprintf implementation - simple way to replace tokens with specified values.</span></td>
</tr>
<tr>
<td id="L3332" class="blob-num js-line-number" data-line-number="3332"></td>
<td id="LC3332" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3333" class="blob-num js-line-number" data-line-number="3333"></td>
<td id="LC3333" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">str</span> String with tokens</span></td>
</tr>
<tr>
<td id="L3334" class="blob-num js-line-number" data-line-number="3334"></td>
<td id="LC3334" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{String}</span> String with replaced tokens</span></td>
</tr>
<tr>
<td id="L3335" class="blob-num js-line-number" data-line-number="3335"></td>
<td id="LC3335" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3336" class="blob-num js-line-number" data-line-number="3336"></td>
<td id="LC3336" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">sprintf</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L3337" class="blob-num js-line-number" data-line-number="3337"></td>
<td id="LC3337" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L3338" class="blob-num js-line-number" data-line-number="3338"></td>
<td id="LC3338" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3339" class="blob-num js-line-number" data-line-number="3339"></td>
<td id="LC3339" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">str</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>%<span class="pl-c1">[<span class="pl-c1">a-z</span>]</span><span class="pl-pds">/</span>g</span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3340" class="blob-num js-line-number" data-line-number="3340"></td>
<td id="LC3340" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> value <span class="pl-k">=</span> <span class="pl-smi">args</span>.<span class="pl-c1">shift</span>();</td>
</tr>
<tr>
<td id="L3341" class="blob-num js-line-number" data-line-number="3341"></td>
<td id="LC3341" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(value) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span> <span class="pl-k">?</span> value <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L3342" class="blob-num js-line-number" data-line-number="3342"></td>
<td id="LC3342" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3343" class="blob-num js-line-number" data-line-number="3343"></td>
<td id="LC3343" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3344" class="blob-num js-line-number" data-line-number="3344"></td>
<td id="LC3344" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3345" class="blob-num js-line-number" data-line-number="3345"></td>
<td id="LC3345" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L3346" class="blob-num js-line-number" data-line-number="3346"></td>
<td id="LC3346" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3347" class="blob-num js-line-number" data-line-number="3347"></td>
<td id="LC3347" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Mime.js</span></td>
</tr>
<tr>
<td id="L3348" class="blob-num js-line-number" data-line-number="3348"></td>
<td id="LC3348" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3349" class="blob-num js-line-number" data-line-number="3349"></td>
<td id="LC3349" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3350" class="blob-num js-line-number" data-line-number="3350"></td>
<td id="LC3350" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Mime.js</span></td>
</tr>
<tr>
<td id="L3351" class="blob-num js-line-number" data-line-number="3351"></td>
<td id="LC3351" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3352" class="blob-num js-line-number" data-line-number="3352"></td>
<td id="LC3352" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L3353" class="blob-num js-line-number" data-line-number="3353"></td>
<td id="LC3353" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L3354" class="blob-num js-line-number" data-line-number="3354"></td>
<td id="LC3354" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3355" class="blob-num js-line-number" data-line-number="3355"></td>
<td id="LC3355" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L3356" class="blob-num js-line-number" data-line-number="3356"></td>
<td id="LC3356" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L3357" class="blob-num js-line-number" data-line-number="3357"></td>
<td id="LC3357" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3358" class="blob-num js-line-number" data-line-number="3358"></td>
<td id="LC3358" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3359" class="blob-num js-line-number" data-line-number="3359"></td>
<td id="LC3359" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3360" class="blob-num js-line-number" data-line-number="3360"></td>
<td id="LC3360" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Mime</span></td>
</tr>
<tr>
<td id="L3361" class="blob-num js-line-number" data-line-number="3361"></td>
<td id="LC3361" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L3362" class="blob-num js-line-number" data-line-number="3362"></td>
<td id="LC3362" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L3363" class="blob-num js-line-number" data-line-number="3363"></td>
<td id="LC3363" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3364" class="blob-num js-line-number" data-line-number="3364"></td>
<td id="LC3364" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3365" class="blob-num js-line-number" data-line-number="3365"></td>
<td id="LC3365" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L3366" class="blob-num js-line-number" data-line-number="3366"></td>
<td id="LC3366" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L3367" class="blob-num js-line-number" data-line-number="3367"></td>
<td id="LC3367" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/I18n<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L3368" class="blob-num js-line-number" data-line-number="3368"></td>
<td id="LC3368" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">I18n</span>) {</td>
</tr>
<tr>
<td id="L3369" class="blob-num js-line-number" data-line-number="3369"></td>
<td id="LC3369" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3370" class="blob-num js-line-number" data-line-number="3370"></td>
<td id="LC3370" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mimeData <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3371" class="blob-num js-line-number" data-line-number="3371"></td>
<td id="LC3371" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/msword,doc dot,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3372" class="blob-num js-line-number" data-line-number="3372"></td>
<td id="LC3372" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/pdf,pdf,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3373" class="blob-num js-line-number" data-line-number="3373"></td>
<td id="LC3373" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/pgp-signature,pgp,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3374" class="blob-num js-line-number" data-line-number="3374"></td>
<td id="LC3374" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/postscript,ps ai eps,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3375" class="blob-num js-line-number" data-line-number="3375"></td>
<td id="LC3375" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/rtf,rtf,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3376" class="blob-num js-line-number" data-line-number="3376"></td>
<td id="LC3376" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.ms-excel,xls xlb xlt xla,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3377" class="blob-num js-line-number" data-line-number="3377"></td>
<td id="LC3377" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.ms-powerpoint,ppt pps pot ppa,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3378" class="blob-num js-line-number" data-line-number="3378"></td>
<td id="LC3378" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/zip,zip,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3379" class="blob-num js-line-number" data-line-number="3379"></td>
<td id="LC3379" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/x-shockwave-flash,swf swfl,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3380" class="blob-num js-line-number" data-line-number="3380"></td>
<td id="LC3380" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3381" class="blob-num js-line-number" data-line-number="3381"></td>
<td id="LC3381" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3382" class="blob-num js-line-number" data-line-number="3382"></td>
<td id="LC3382" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3383" class="blob-num js-line-number" data-line-number="3383"></td>
<td id="LC3383" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3384" class="blob-num js-line-number" data-line-number="3384"></td>
<td id="LC3384" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.openxmlformats-officedocument.presentationml.template,potx,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3385" class="blob-num js-line-number" data-line-number="3385"></td>
<td id="LC3385" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3386" class="blob-num js-line-number" data-line-number="3386"></td>
<td id="LC3386" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/x-javascript,js,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3387" class="blob-num js-line-number" data-line-number="3387"></td>
<td id="LC3387" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/json,json,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3388" class="blob-num js-line-number" data-line-number="3388"></td>
<td id="LC3388" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/mpeg,mp3 mpga mpega mp2,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3389" class="blob-num js-line-number" data-line-number="3389"></td>
<td id="LC3389" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/x-wav,wav,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3390" class="blob-num js-line-number" data-line-number="3390"></td>
<td id="LC3390" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/x-m4a,m4a,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3391" class="blob-num js-line-number" data-line-number="3391"></td>
<td id="LC3391" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/ogg,oga ogg,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3392" class="blob-num js-line-number" data-line-number="3392"></td>
<td id="LC3392" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/aiff,aiff aif,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3393" class="blob-num js-line-number" data-line-number="3393"></td>
<td id="LC3393" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/flac,flac,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3394" class="blob-num js-line-number" data-line-number="3394"></td>
<td id="LC3394" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/aac,aac,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3395" class="blob-num js-line-number" data-line-number="3395"></td>
<td id="LC3395" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/ac3,ac3,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3396" class="blob-num js-line-number" data-line-number="3396"></td>
<td id="LC3396" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>audio/x-ms-wma,wma,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3397" class="blob-num js-line-number" data-line-number="3397"></td>
<td id="LC3397" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/bmp,bmp,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3398" class="blob-num js-line-number" data-line-number="3398"></td>
<td id="LC3398" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/gif,gif,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3399" class="blob-num js-line-number" data-line-number="3399"></td>
<td id="LC3399" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/jpeg,jpg jpeg jpe,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3400" class="blob-num js-line-number" data-line-number="3400"></td>
<td id="LC3400" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/photoshop,psd,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3401" class="blob-num js-line-number" data-line-number="3401"></td>
<td id="LC3401" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/png,png,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3402" class="blob-num js-line-number" data-line-number="3402"></td>
<td id="LC3402" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/svg+xml,svg svgz,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3403" class="blob-num js-line-number" data-line-number="3403"></td>
<td id="LC3403" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>image/tiff,tiff tif,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3404" class="blob-num js-line-number" data-line-number="3404"></td>
<td id="LC3404" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>text/plain,asc txt text diff log,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3405" class="blob-num js-line-number" data-line-number="3405"></td>
<td id="LC3405" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>text/html,htm html xhtml,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3406" class="blob-num js-line-number" data-line-number="3406"></td>
<td id="LC3406" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>text/css,css,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3407" class="blob-num js-line-number" data-line-number="3407"></td>
<td id="LC3407" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>text/csv,csv,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3408" class="blob-num js-line-number" data-line-number="3408"></td>
<td id="LC3408" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>text/rtf,rtf,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3409" class="blob-num js-line-number" data-line-number="3409"></td>
<td id="LC3409" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/mpeg,mpeg mpg mpe m2v,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3410" class="blob-num js-line-number" data-line-number="3410"></td>
<td id="LC3410" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/quicktime,qt mov,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3411" class="blob-num js-line-number" data-line-number="3411"></td>
<td id="LC3411" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/mp4,mp4,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3412" class="blob-num js-line-number" data-line-number="3412"></td>
<td id="LC3412" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/x-m4v,m4v,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3413" class="blob-num js-line-number" data-line-number="3413"></td>
<td id="LC3413" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/x-flv,flv,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3414" class="blob-num js-line-number" data-line-number="3414"></td>
<td id="LC3414" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/x-ms-wmv,wmv,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3415" class="blob-num js-line-number" data-line-number="3415"></td>
<td id="LC3415" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/avi,avi,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3416" class="blob-num js-line-number" data-line-number="3416"></td>
<td id="LC3416" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/webm,webm,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3417" class="blob-num js-line-number" data-line-number="3417"></td>
<td id="LC3417" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/3gpp,3gpp 3gp,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3418" class="blob-num js-line-number" data-line-number="3418"></td>
<td id="LC3418" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/3gpp2,3g2,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3419" class="blob-num js-line-number" data-line-number="3419"></td>
<td id="LC3419" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/vnd.rn-realvideo,rv,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3420" class="blob-num js-line-number" data-line-number="3420"></td>
<td id="LC3420" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/ogg,ogv,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3421" class="blob-num js-line-number" data-line-number="3421"></td>
<td id="LC3421" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>video/x-matroska,mkv,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3422" class="blob-num js-line-number" data-line-number="3422"></td>
<td id="LC3422" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/vnd.oasis.opendocument.formula-template,otf,<span class="pl-pds">"</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L3423" class="blob-num js-line-number" data-line-number="3423"></td>
<td id="LC3423" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>application/octet-stream,exe<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L3424" class="blob-num js-line-number" data-line-number="3424"></td>
<td id="LC3424" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3425" class="blob-num js-line-number" data-line-number="3425"></td>
<td id="LC3425" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3426" class="blob-num js-line-number" data-line-number="3426"></td>
<td id="LC3426" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3427" class="blob-num js-line-number" data-line-number="3427"></td>
<td id="LC3427" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Map of mimes to extensions</span></td>
</tr>
<tr>
<td id="L3428" class="blob-num js-line-number" data-line-number="3428"></td>
<td id="LC3428" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3429" class="blob-num js-line-number" data-line-number="3429"></td>
<td id="LC3429" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@property</span> mimes</span></td>
</tr>
<tr>
<td id="L3430" class="blob-num js-line-number" data-line-number="3430"></td>
<td id="LC3430" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@type</span> <span class="pl-en">{Object}</span></span></td>
</tr>
<tr>
<td id="L3431" class="blob-num js-line-number" data-line-number="3431"></td>
<td id="LC3431" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3432" class="blob-num js-line-number" data-line-number="3432"></td>
<td id="LC3432" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mimes <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L3433" class="blob-num js-line-number" data-line-number="3433"></td>
<td id="LC3433" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3434" class="blob-num js-line-number" data-line-number="3434"></td>
<td id="LC3434" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3435" class="blob-num js-line-number" data-line-number="3435"></td>
<td id="LC3435" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Map of extensions to mimes</span></td>
</tr>
<tr>
<td id="L3436" class="blob-num js-line-number" data-line-number="3436"></td>
<td id="LC3436" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3437" class="blob-num js-line-number" data-line-number="3437"></td>
<td id="LC3437" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@property</span> extensions</span></td>
</tr>
<tr>
<td id="L3438" class="blob-num js-line-number" data-line-number="3438"></td>
<td id="LC3438" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@type</span> <span class="pl-en">{Object}</span></span></td>
</tr>
<tr>
<td id="L3439" class="blob-num js-line-number" data-line-number="3439"></td>
<td id="LC3439" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3440" class="blob-num js-line-number" data-line-number="3440"></td>
<td id="LC3440" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> extensions <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L3441" class="blob-num js-line-number" data-line-number="3441"></td>
<td id="LC3441" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3442" class="blob-num js-line-number" data-line-number="3442"></td>
<td id="LC3442" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3443" class="blob-num js-line-number" data-line-number="3443"></td>
<td id="LC3443" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3444" class="blob-num js-line-number" data-line-number="3444"></td>
<td id="LC3444" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Parses mimeData string into a mimes and extensions lookup maps. String should have the</span></td>
</tr>
<tr>
<td id="L3445" class="blob-num js-line-number" data-line-number="3445"></td>
<td id="LC3445" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * following format:</span></td>
</tr>
<tr>
<td id="L3446" class="blob-num js-line-number" data-line-number="3446"></td>
<td id="LC3446" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3447" class="blob-num js-line-number" data-line-number="3447"></td>
<td id="LC3447" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * application/msword,doc dot,application/pdf,pdf, ...</span></td>
</tr>
<tr>
<td id="L3448" class="blob-num js-line-number" data-line-number="3448"></td>
<td id="LC3448" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3449" class="blob-num js-line-number" data-line-number="3449"></td>
<td id="LC3449" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * so mime-type followed by comma and followed by space-separated list of associated extensions,</span></td>
</tr>
<tr>
<td id="L3450" class="blob-num js-line-number" data-line-number="3450"></td>
<td id="LC3450" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * then comma again and then another mime-type, etc.</span></td>
</tr>
<tr>
<td id="L3451" class="blob-num js-line-number" data-line-number="3451"></td>
<td id="LC3451" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3452" class="blob-num js-line-number" data-line-number="3452"></td>
<td id="LC3452" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * If invoked externally will replace override internal lookup maps with user-provided data.</span></td>
</tr>
<tr>
<td id="L3453" class="blob-num js-line-number" data-line-number="3453"></td>
<td id="LC3453" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3454" class="blob-num js-line-number" data-line-number="3454"></td>
<td id="LC3454" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">addMimeType</span></span></td>
</tr>
<tr>
<td id="L3455" class="blob-num js-line-number" data-line-number="3455"></td>
<td id="LC3455" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">mimeData</span></span></td>
</tr>
<tr>
<td id="L3456" class="blob-num js-line-number" data-line-number="3456"></td>
<td id="LC3456" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3457" class="blob-num js-line-number" data-line-number="3457"></td>
<td id="LC3457" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">addMimeType</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">mimeData</span>) {</td>
</tr>
<tr>
<td id="L3458" class="blob-num js-line-number" data-line-number="3458"></td>
<td id="LC3458" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> items <span class="pl-k">=</span> <span class="pl-smi">mimeData</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span>,<span class="pl-pds">/</span></span>), i, ii, ext;</td>
</tr>
<tr>
<td id="L3459" class="blob-num js-line-number" data-line-number="3459"></td>
<td id="LC3459" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3460" class="blob-num js-line-number" data-line-number="3460"></td>
<td id="LC3460" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">items</span>.<span class="pl-c1">length</span>; i <span class="pl-k">+=</span> <span class="pl-c1">2</span>) {</td>
</tr>
<tr>
<td id="L3461" class="blob-num js-line-number" data-line-number="3461"></td>
<td id="LC3461" class="blob-code blob-code-inner js-file-line"> ext <span class="pl-k">=</span> items[i <span class="pl-k">+</span> <span class="pl-c1">1</span>].<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span> <span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L3462" class="blob-num js-line-number" data-line-number="3462"></td>
<td id="LC3462" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3463" class="blob-num js-line-number" data-line-number="3463"></td>
<td id="LC3463" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> extension to mime lookup</span></td>
</tr>
<tr>
<td id="L3464" class="blob-num js-line-number" data-line-number="3464"></td>
<td id="LC3464" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (ii <span class="pl-k">=</span> <span class="pl-c1">0</span>; ii <span class="pl-k"><</span> <span class="pl-smi">ext</span>.<span class="pl-c1">length</span>; ii<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L3465" class="blob-num js-line-number" data-line-number="3465"></td>
<td id="LC3465" class="blob-code blob-code-inner js-file-line"> mimes[ext[ii]] <span class="pl-k">=</span> items[i];</td>
</tr>
<tr>
<td id="L3466" class="blob-num js-line-number" data-line-number="3466"></td>
<td id="LC3466" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3467" class="blob-num js-line-number" data-line-number="3467"></td>
<td id="LC3467" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> mime to extension lookup</span></td>
</tr>
<tr>
<td id="L3468" class="blob-num js-line-number" data-line-number="3468"></td>
<td id="LC3468" class="blob-code blob-code-inner js-file-line"> extensions[items[i]] <span class="pl-k">=</span> ext;</td>
</tr>
<tr>
<td id="L3469" class="blob-num js-line-number" data-line-number="3469"></td>
<td id="LC3469" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3470" class="blob-num js-line-number" data-line-number="3470"></td>
<td id="LC3470" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3471" class="blob-num js-line-number" data-line-number="3471"></td>
<td id="LC3471" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3472" class="blob-num js-line-number" data-line-number="3472"></td>
<td id="LC3472" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3473" class="blob-num js-line-number" data-line-number="3473"></td>
<td id="LC3473" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">extList2mimes</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">filters</span>, <span class="pl-smi">addMissingExtensions</span>) {</td>
</tr>
<tr>
<td id="L3474" class="blob-num js-line-number" data-line-number="3474"></td>
<td id="LC3474" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ext, i, ii, type, mimes <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L3475" class="blob-num js-line-number" data-line-number="3475"></td>
<td id="LC3475" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3476" class="blob-num js-line-number" data-line-number="3476"></td>
<td id="LC3476" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> convert extensions to mime types list</span></td>
</tr>
<tr>
<td id="L3477" class="blob-num js-line-number" data-line-number="3477"></td>
<td id="LC3477" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">filters</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L3478" class="blob-num js-line-number" data-line-number="3478"></td>
<td id="LC3478" class="blob-code blob-code-inner js-file-line"> ext <span class="pl-k">=</span> filters[i].<span class="pl-smi">extensions</span>.<span class="pl-c1">toLowerCase</span>().<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">*</span>,<span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L3479" class="blob-num js-line-number" data-line-number="3479"></td>
<td id="LC3479" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3480" class="blob-num js-line-number" data-line-number="3480"></td>
<td id="LC3480" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (ii <span class="pl-k">=</span> <span class="pl-c1">0</span>; ii <span class="pl-k"><</span> <span class="pl-smi">ext</span>.<span class="pl-c1">length</span>; ii<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L3481" class="blob-num js-line-number" data-line-number="3481"></td>
<td id="LC3481" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3482" class="blob-num js-line-number" data-line-number="3482"></td>
<td id="LC3482" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if there's an asterisk in the list, then accept attribute is not required</span></td>
</tr>
<tr>
<td id="L3483" class="blob-num js-line-number" data-line-number="3483"></td>
<td id="LC3483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (ext[ii] <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3484" class="blob-num js-line-number" data-line-number="3484"></td>
<td id="LC3484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> [];</td>
</tr>
<tr>
<td id="L3485" class="blob-num js-line-number" data-line-number="3485"></td>
<td id="LC3485" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3486" class="blob-num js-line-number" data-line-number="3486"></td>
<td id="LC3486" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3487" class="blob-num js-line-number" data-line-number="3487"></td>
<td id="LC3487" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> mimes[ext[ii]];</td>
</tr>
<tr>
<td id="L3488" class="blob-num js-line-number" data-line-number="3488"></td>
<td id="LC3488" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3489" class="blob-num js-line-number" data-line-number="3489"></td>
<td id="LC3489" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> future browsers should filter by extension, finally</span></td>
</tr>
<tr>
<td id="L3490" class="blob-num js-line-number" data-line-number="3490"></td>
<td id="LC3490" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (addMissingExtensions <span class="pl-k">&&</span><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-c1">\w</span><span class="pl-k">+</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(ext[ii])) {</td>
</tr>
<tr>
<td id="L3491" class="blob-num js-line-number" data-line-number="3491"></td>
<td id="LC3491" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">mimes</span>.<span class="pl-c1">push</span>(<span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span> <span class="pl-k">+</span> ext[ii]);</td>
</tr>
<tr>
<td id="L3492" class="blob-num js-line-number" data-line-number="3492"></td>
<td id="LC3492" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (type <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(type, mimes) <span class="pl-k">===</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L3493" class="blob-num js-line-number" data-line-number="3493"></td>
<td id="LC3493" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">mimes</span>.<span class="pl-c1">push</span>(type);</td>
</tr>
<tr>
<td id="L3494" class="blob-num js-line-number" data-line-number="3494"></td>
<td id="LC3494" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-k">!</span>type) {</td>
</tr>
<tr>
<td id="L3495" class="blob-num js-line-number" data-line-number="3495"></td>
<td id="LC3495" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if we have no type in our map, then accept all</span></td>
</tr>
<tr>
<td id="L3496" class="blob-num js-line-number" data-line-number="3496"></td>
<td id="LC3496" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> [];</td>
</tr>
<tr>
<td id="L3497" class="blob-num js-line-number" data-line-number="3497"></td>
<td id="LC3497" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3498" class="blob-num js-line-number" data-line-number="3498"></td>
<td id="LC3498" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3499" class="blob-num js-line-number" data-line-number="3499"></td>
<td id="LC3499" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3500" class="blob-num js-line-number" data-line-number="3500"></td>
<td id="LC3500" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> mimes;</td>
</tr>
<tr>
<td id="L3501" class="blob-num js-line-number" data-line-number="3501"></td>
<td id="LC3501" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3502" class="blob-num js-line-number" data-line-number="3502"></td>
<td id="LC3502" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3503" class="blob-num js-line-number" data-line-number="3503"></td>
<td id="LC3503" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3504" class="blob-num js-line-number" data-line-number="3504"></td>
<td id="LC3504" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">mimes2exts</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">mimes</span>) {</td>
</tr>
<tr>
<td id="L3505" class="blob-num js-line-number" data-line-number="3505"></td>
<td id="LC3505" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> exts <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L3506" class="blob-num js-line-number" data-line-number="3506"></td>
<td id="LC3506" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3507" class="blob-num js-line-number" data-line-number="3507"></td>
<td id="LC3507" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(mimes, <span class="pl-k">function</span>(<span class="pl-smi">mime</span>) {</td>
</tr>
<tr>
<td id="L3508" class="blob-num js-line-number" data-line-number="3508"></td>
<td id="LC3508" class="blob-code blob-code-inner js-file-line"> mime <span class="pl-k">=</span> <span class="pl-smi">mime</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L3509" class="blob-num js-line-number" data-line-number="3509"></td>
<td id="LC3509" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3510" class="blob-num js-line-number" data-line-number="3510"></td>
<td id="LC3510" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (mime <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3511" class="blob-num js-line-number" data-line-number="3511"></td>
<td id="LC3511" class="blob-code blob-code-inner js-file-line"> exts <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L3512" class="blob-num js-line-number" data-line-number="3512"></td>
<td id="LC3512" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L3513" class="blob-num js-line-number" data-line-number="3513"></td>
<td id="LC3513" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3514" class="blob-num js-line-number" data-line-number="3514"></td>
<td id="LC3514" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3515" class="blob-num js-line-number" data-line-number="3515"></td>
<td id="LC3515" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if this thing looks like mime type</span></td>
</tr>
<tr>
<td id="L3516" class="blob-num js-line-number" data-line-number="3516"></td>
<td id="LC3516" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> m <span class="pl-k">=</span> <span class="pl-smi">mime</span>.<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>(<span class="pl-c1">\w</span><span class="pl-k">+</span>)<span class="pl-cce">\/</span>(<span class="pl-cce">\*</span><span class="pl-k">|</span><span class="pl-c1">\w</span><span class="pl-k">+</span>)<span class="pl-k">$</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L3517" class="blob-num js-line-number" data-line-number="3517"></td>
<td id="LC3517" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (m) {</td>
</tr>
<tr>
<td id="L3518" class="blob-num js-line-number" data-line-number="3518"></td>
<td id="LC3518" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (m[<span class="pl-c1">2</span>] <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3519" class="blob-num js-line-number" data-line-number="3519"></td>
<td id="LC3519" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> wildcard mime type detected</span></td>
</tr>
<tr>
<td id="L3520" class="blob-num js-line-number" data-line-number="3520"></td>
<td id="LC3520" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(extensions, <span class="pl-k">function</span>(<span class="pl-smi">arr</span>, <span class="pl-smi">mime</span>) {</td>
</tr>
<tr>
<td id="L3521" class="blob-num js-line-number" data-line-number="3521"></td>
<td id="LC3521" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((<span class="pl-k">new</span> <span class="pl-en">RegExp</span>(<span class="pl-s"><span class="pl-pds">'</span>^<span class="pl-pds">'</span></span> <span class="pl-k">+</span> m[<span class="pl-c1">1</span>] <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>)).<span class="pl-c1">test</span>(mime)) {</td>
</tr>
<tr>
<td id="L3522" class="blob-num js-line-number" data-line-number="3522"></td>
<td id="LC3522" class="blob-code blob-code-inner js-file-line"> [].<span class="pl-smi">push</span>.<span class="pl-c1">apply</span>(exts, extensions[mime]);</td>
</tr>
<tr>
<td id="L3523" class="blob-num js-line-number" data-line-number="3523"></td>
<td id="LC3523" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3524" class="blob-num js-line-number" data-line-number="3524"></td>
<td id="LC3524" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3525" class="blob-num js-line-number" data-line-number="3525"></td>
<td id="LC3525" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (extensions[mime]) {</td>
</tr>
<tr>
<td id="L3526" class="blob-num js-line-number" data-line-number="3526"></td>
<td id="LC3526" class="blob-code blob-code-inner js-file-line"> [].<span class="pl-smi">push</span>.<span class="pl-c1">apply</span>(exts, extensions[mime]);</td>
</tr>
<tr>
<td id="L3527" class="blob-num js-line-number" data-line-number="3527"></td>
<td id="LC3527" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3528" class="blob-num js-line-number" data-line-number="3528"></td>
<td id="LC3528" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3529" class="blob-num js-line-number" data-line-number="3529"></td>
<td id="LC3529" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3530" class="blob-num js-line-number" data-line-number="3530"></td>
<td id="LC3530" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> exts;</td>
</tr>
<tr>
<td id="L3531" class="blob-num js-line-number" data-line-number="3531"></td>
<td id="LC3531" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3532" class="blob-num js-line-number" data-line-number="3532"></td>
<td id="LC3532" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3533" class="blob-num js-line-number" data-line-number="3533"></td>
<td id="LC3533" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3534" class="blob-num js-line-number" data-line-number="3534"></td>
<td id="LC3534" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">mimes2extList</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">mimes</span>) {</td>
</tr>
<tr>
<td id="L3535" class="blob-num js-line-number" data-line-number="3535"></td>
<td id="LC3535" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> accept <span class="pl-k">=</span> [], exts <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L3536" class="blob-num js-line-number" data-line-number="3536"></td>
<td id="LC3536" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3537" class="blob-num js-line-number" data-line-number="3537"></td>
<td id="LC3537" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(mimes) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3538" class="blob-num js-line-number" data-line-number="3538"></td>
<td id="LC3538" class="blob-code blob-code-inner js-file-line"> mimes <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(mimes).<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">*</span>,<span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L3539" class="blob-num js-line-number" data-line-number="3539"></td>
<td id="LC3539" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3540" class="blob-num js-line-number" data-line-number="3540"></td>
<td id="LC3540" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3541" class="blob-num js-line-number" data-line-number="3541"></td>
<td id="LC3541" class="blob-code blob-code-inner js-file-line"> exts <span class="pl-k">=</span> <span class="pl-en">mimes2exts</span>(mimes);</td>
</tr>
<tr>
<td id="L3542" class="blob-num js-line-number" data-line-number="3542"></td>
<td id="LC3542" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3543" class="blob-num js-line-number" data-line-number="3543"></td>
<td id="LC3543" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">accept</span>.<span class="pl-c1">push</span>({</td>
</tr>
<tr>
<td id="L3544" class="blob-num js-line-number" data-line-number="3544"></td>
<td id="LC3544" class="blob-code blob-code-inner js-file-line"> title<span class="pl-k">:</span> <span class="pl-smi">I18n</span>.<span class="pl-en">translate</span>(<span class="pl-s"><span class="pl-pds">'</span>Files<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L3545" class="blob-num js-line-number" data-line-number="3545"></td>
<td id="LC3545" class="blob-code blob-code-inner js-file-line"> extensions<span class="pl-k">:</span> <span class="pl-smi">exts</span>.<span class="pl-c1">length</span> <span class="pl-k">?</span> <span class="pl-smi">exts</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>,<span class="pl-pds">'</span></span>) <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L3546" class="blob-num js-line-number" data-line-number="3546"></td>
<td id="LC3546" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3547" class="blob-num js-line-number" data-line-number="3547"></td>
<td id="LC3547" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3548" class="blob-num js-line-number" data-line-number="3548"></td>
<td id="LC3548" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> accept;</td>
</tr>
<tr>
<td id="L3549" class="blob-num js-line-number" data-line-number="3549"></td>
<td id="LC3549" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3550" class="blob-num js-line-number" data-line-number="3550"></td>
<td id="LC3550" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3551" class="blob-num js-line-number" data-line-number="3551"></td>
<td id="LC3551" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3552" class="blob-num js-line-number" data-line-number="3552"></td>
<td id="LC3552" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Extract extension from the given filename</span></td>
</tr>
<tr>
<td id="L3553" class="blob-num js-line-number" data-line-number="3553"></td>
<td id="LC3553" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3554" class="blob-num js-line-number" data-line-number="3554"></td>
<td id="LC3554" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">getFileExtension</span></span></td>
</tr>
<tr>
<td id="L3555" class="blob-num js-line-number" data-line-number="3555"></td>
<td id="LC3555" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">fileName</span></span></td>
</tr>
<tr>
<td id="L3556" class="blob-num js-line-number" data-line-number="3556"></td>
<td id="LC3556" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{String}</span> File extension</span></td>
</tr>
<tr>
<td id="L3557" class="blob-num js-line-number" data-line-number="3557"></td>
<td id="LC3557" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3558" class="blob-num js-line-number" data-line-number="3558"></td>
<td id="LC3558" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">getFileExtension</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">fileName</span>) {</td>
</tr>
<tr>
<td id="L3559" class="blob-num js-line-number" data-line-number="3559"></td>
<td id="LC3559" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> matches <span class="pl-k">=</span> fileName <span class="pl-k">&&</span> <span class="pl-smi">fileName</span>.<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\.</span>(<span class="pl-c1">[<span class="pl-k">^</span><span class="pl-c1">.</span>]</span><span class="pl-k">+</span>)<span class="pl-k">$</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L3560" class="blob-num js-line-number" data-line-number="3560"></td>
<td id="LC3560" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (matches) {</td>
</tr>
<tr>
<td id="L3561" class="blob-num js-line-number" data-line-number="3561"></td>
<td id="LC3561" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> matches[<span class="pl-c1">1</span>].<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L3562" class="blob-num js-line-number" data-line-number="3562"></td>
<td id="LC3562" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3563" class="blob-num js-line-number" data-line-number="3563"></td>
<td id="LC3563" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L3564" class="blob-num js-line-number" data-line-number="3564"></td>
<td id="LC3564" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3565" class="blob-num js-line-number" data-line-number="3565"></td>
<td id="LC3565" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3566" class="blob-num js-line-number" data-line-number="3566"></td>
<td id="LC3566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3567" class="blob-num js-line-number" data-line-number="3567"></td>
<td id="LC3567" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3568" class="blob-num js-line-number" data-line-number="3568"></td>
<td id="LC3568" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Get file mime-type from it's filename - will try to match the extension</span></td>
</tr>
<tr>
<td id="L3569" class="blob-num js-line-number" data-line-number="3569"></td>
<td id="LC3569" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * against internal mime-type lookup map</span></td>
</tr>
<tr>
<td id="L3570" class="blob-num js-line-number" data-line-number="3570"></td>
<td id="LC3570" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3571" class="blob-num js-line-number" data-line-number="3571"></td>
<td id="LC3571" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">getFileMime</span></span></td>
</tr>
<tr>
<td id="L3572" class="blob-num js-line-number" data-line-number="3572"></td>
<td id="LC3572" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">fileName</span></span></td>
</tr>
<tr>
<td id="L3573" class="blob-num js-line-number" data-line-number="3573"></td>
<td id="LC3573" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> File mime-type if found or an empty string if not</span></td>
</tr>
<tr>
<td id="L3574" class="blob-num js-line-number" data-line-number="3574"></td>
<td id="LC3574" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3575" class="blob-num js-line-number" data-line-number="3575"></td>
<td id="LC3575" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">getFileMime</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">fileName</span>) {</td>
</tr>
<tr>
<td id="L3576" class="blob-num js-line-number" data-line-number="3576"></td>
<td id="LC3576" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> mimes[<span class="pl-en">getFileExtension</span>(fileName)] <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L3577" class="blob-num js-line-number" data-line-number="3577"></td>
<td id="LC3577" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3578" class="blob-num js-line-number" data-line-number="3578"></td>
<td id="LC3578" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3579" class="blob-num js-line-number" data-line-number="3579"></td>
<td id="LC3579" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3580" class="blob-num js-line-number" data-line-number="3580"></td>
<td id="LC3580" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">addMimeType</span>(mimeData);</td>
</tr>
<tr>
<td id="L3581" class="blob-num js-line-number" data-line-number="3581"></td>
<td id="LC3581" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3582" class="blob-num js-line-number" data-line-number="3582"></td>
<td id="LC3582" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L3583" class="blob-num js-line-number" data-line-number="3583"></td>
<td id="LC3583" class="blob-code blob-code-inner js-file-line"> mimes<span class="pl-k">:</span> mimes,</td>
</tr>
<tr>
<td id="L3584" class="blob-num js-line-number" data-line-number="3584"></td>
<td id="LC3584" class="blob-code blob-code-inner js-file-line"> extensions<span class="pl-k">:</span> extensions,</td>
</tr>
<tr>
<td id="L3585" class="blob-num js-line-number" data-line-number="3585"></td>
<td id="LC3585" class="blob-code blob-code-inner js-file-line"> addMimeType<span class="pl-k">:</span> addMimeType,</td>
</tr>
<tr>
<td id="L3586" class="blob-num js-line-number" data-line-number="3586"></td>
<td id="LC3586" class="blob-code blob-code-inner js-file-line"> extList2mimes<span class="pl-k">:</span> extList2mimes,</td>
</tr>
<tr>
<td id="L3587" class="blob-num js-line-number" data-line-number="3587"></td>
<td id="LC3587" class="blob-code blob-code-inner js-file-line"> mimes2exts<span class="pl-k">:</span> mimes2exts,</td>
</tr>
<tr>
<td id="L3588" class="blob-num js-line-number" data-line-number="3588"></td>
<td id="LC3588" class="blob-code blob-code-inner js-file-line"> mimes2extList<span class="pl-k">:</span> mimes2extList,</td>
</tr>
<tr>
<td id="L3589" class="blob-num js-line-number" data-line-number="3589"></td>
<td id="LC3589" class="blob-code blob-code-inner js-file-line"> getFileExtension<span class="pl-k">:</span> getFileExtension,</td>
</tr>
<tr>
<td id="L3590" class="blob-num js-line-number" data-line-number="3590"></td>
<td id="LC3590" class="blob-code blob-code-inner js-file-line"> getFileMime<span class="pl-k">:</span> getFileMime</td>
</tr>
<tr>
<td id="L3591" class="blob-num js-line-number" data-line-number="3591"></td>
<td id="LC3591" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3592" class="blob-num js-line-number" data-line-number="3592"></td>
<td id="LC3592" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L3593" class="blob-num js-line-number" data-line-number="3593"></td>
<td id="LC3593" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3594" class="blob-num js-line-number" data-line-number="3594"></td>
<td id="LC3594" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/file/FileInput.js</span></td>
</tr>
<tr>
<td id="L3595" class="blob-num js-line-number" data-line-number="3595"></td>
<td id="LC3595" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3596" class="blob-num js-line-number" data-line-number="3596"></td>
<td id="LC3596" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3597" class="blob-num js-line-number" data-line-number="3597"></td>
<td id="LC3597" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileInput.js</span></td>
</tr>
<tr>
<td id="L3598" class="blob-num js-line-number" data-line-number="3598"></td>
<td id="LC3598" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3599" class="blob-num js-line-number" data-line-number="3599"></td>
<td id="LC3599" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L3600" class="blob-num js-line-number" data-line-number="3600"></td>
<td id="LC3600" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L3601" class="blob-num js-line-number" data-line-number="3601"></td>
<td id="LC3601" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3602" class="blob-num js-line-number" data-line-number="3602"></td>
<td id="LC3602" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L3603" class="blob-num js-line-number" data-line-number="3603"></td>
<td id="LC3603" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L3604" class="blob-num js-line-number" data-line-number="3604"></td>
<td id="LC3604" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3605" class="blob-num js-line-number" data-line-number="3605"></td>
<td id="LC3605" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3606" class="blob-num js-line-number" data-line-number="3606"></td>
<td id="LC3606" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/file/FileInput<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L3607" class="blob-num js-line-number" data-line-number="3607"></td>
<td id="LC3607" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3608" class="blob-num js-line-number" data-line-number="3608"></td>
<td id="LC3608" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Env<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3609" class="blob-num js-line-number" data-line-number="3609"></td>
<td id="LC3609" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Mime<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3610" class="blob-num js-line-number" data-line-number="3610"></td>
<td id="LC3610" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Dom<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3611" class="blob-num js-line-number" data-line-number="3611"></td>
<td id="LC3611" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/Exceptions<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3612" class="blob-num js-line-number" data-line-number="3612"></td>
<td id="LC3612" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/EventTarget<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3613" class="blob-num js-line-number" data-line-number="3613"></td>
<td id="LC3613" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/I18n<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3614" class="blob-num js-line-number" data-line-number="3614"></td>
<td id="LC3614" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/Runtime<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3615" class="blob-num js-line-number" data-line-number="3615"></td>
<td id="LC3615" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeClient<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L3616" class="blob-num js-line-number" data-line-number="3616"></td>
<td id="LC3616" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Env</span>, <span class="pl-smi">Mime</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">x</span>, <span class="pl-c1">EventTarget</span>, <span class="pl-smi">I18n</span>, <span class="pl-smi">Runtime</span>, <span class="pl-smi">RuntimeClient</span>) {</td>
</tr>
<tr>
<td id="L3617" class="blob-num js-line-number" data-line-number="3617"></td>
<td id="LC3617" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3618" class="blob-num js-line-number" data-line-number="3618"></td>
<td id="LC3618" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Provides a convenient way to create cross-browser file-picker. Generates file selection dialog on click,</span></td>
</tr>
<tr>
<td id="L3619" class="blob-num js-line-number" data-line-number="3619"></td>
<td id="LC3619" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory</span></td>
</tr>
<tr>
<td id="L3620" class="blob-num js-line-number" data-line-number="3620"></td>
<td id="LC3620" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> with _FileReader_ or uploaded to a server through _XMLHttpRequest_.</span></td>
</tr>
<tr>
<td id="L3621" class="blob-num js-line-number" data-line-number="3621"></td>
<td id="LC3621" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3622" class="blob-num js-line-number" data-line-number="3622"></td>
<td id="LC3622" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/file/FileInput</span></td>
</tr>
<tr>
<td id="L3623" class="blob-num js-line-number" data-line-number="3623"></td>
<td id="LC3623" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L3624" class="blob-num js-line-number" data-line-number="3624"></td>
<td id="LC3624" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">EventTarget</span></span></td>
</tr>
<tr>
<td id="L3625" class="blob-num js-line-number" data-line-number="3625"></td>
<td id="LC3625" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@uses</span> <span class="pl-en">RuntimeClient</span></span></td>
</tr>
<tr>
<td id="L3626" class="blob-num js-line-number" data-line-number="3626"></td>
<td id="LC3626" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object|String|DOMElement}</span> <span class="pl-smi">options</span> If options is string or node, argument is considered as _browse\_button_.</span></td>
</tr>
<tr>
<td id="L3627" class="blob-num js-line-number" data-line-number="3627"></td>
<td id="LC3627" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|DOMElement}</span> <span class="pl-smi">options.browse_button</span> DOM Element to turn into file picker.</span></td>
</tr>
<tr>
<td id="L3628" class="blob-num js-line-number" data-line-number="3628"></td>
<td id="LC3628" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">[options.accept]</span> Array of mime types to accept. By default accepts all.</span></td>
</tr>
<tr>
<td id="L3629" class="blob-num js-line-number" data-line-number="3629"></td>
<td id="LC3629" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.multiple<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">false</span></span>]</span> Enable selection of multiple files.</span></td>
</tr>
<tr>
<td id="L3630" class="blob-num js-line-number" data-line-number="3630"></td>
<td id="LC3630" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.directory<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">false</span></span>]</span> Turn file input into the folder input (cannot be both at the same time).</span></td>
</tr>
<tr>
<td id="L3631" class="blob-num js-line-number" data-line-number="3631"></td>
<td id="LC3631" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|DOMElement}</span> <span class="pl-smi">[options.container]</span> DOM Element to use as a container for file-picker. Defaults to parentNode</span></td>
</tr>
<tr>
<td id="L3632" class="blob-num js-line-number" data-line-number="3632"></td>
<td id="LC3632" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> for _browse\_button_.</span></td>
</tr>
<tr>
<td id="L3633" class="blob-num js-line-number" data-line-number="3633"></td>
<td id="LC3633" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object|String}</span> <span class="pl-smi">[options.required_caps]</span> Set of required capabilities, that chosen runtime must support.</span></td>
</tr>
<tr>
<td id="L3634" class="blob-num js-line-number" data-line-number="3634"></td>
<td id="LC3634" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3635" class="blob-num js-line-number" data-line-number="3635"></td>
<td id="LC3635" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@example</span></span></td>
</tr>
<tr>
<td id="L3636" class="blob-num js-line-number" data-line-number="3636"></td>
<td id="LC3636" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>div id<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>container<span class="pl-pds">"</span></span><span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L3637" class="blob-num js-line-number" data-line-number="3637"></td>
<td id="LC3637" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>a id<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>file-picker<span class="pl-pds">"</span></span> href<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>javascript:;<span class="pl-pds">"</span></span><span class="pl-k">></span>Browse<span class="pl-k">...</span><span class="pl-k"><</span><span class="pl-k">/</span>a<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L3638" class="blob-num js-line-number" data-line-number="3638"></td>
<td id="LC3638" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span><span class="pl-k">/</span>div<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L3639" class="blob-num js-line-number" data-line-number="3639"></td>
<td id="LC3639" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3640" class="blob-num js-line-number" data-line-number="3640"></td>
<td id="LC3640" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>script<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L3641" class="blob-num js-line-number" data-line-number="3641"></td>
<td id="LC3641" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k">var</span> fileInput <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">moxie.file.FileInput</span>({</span></span></td>
</tr>
<tr>
<td id="L3642" class="blob-num js-line-number" data-line-number="3642"></td>
<td id="LC3642" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">browse_button<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>file-picker<span class="pl-pds">'</span></span>, <span class="pl-c"><span class="pl-c">//</span> or document.getElementById('file-picker')</span></span></span></td>
</tr>
<tr>
<td id="L3643" class="blob-num js-line-number" data-line-number="3643"></td>
<td id="LC3643" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">container<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>container<span class="pl-pds">'</span></span>,</span></span></td>
</tr>
<tr>
<td id="L3644" class="blob-num js-line-number" data-line-number="3644"></td>
<td id="LC3644" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">accept<span class="pl-k">:</span> [</span></span></td>
</tr>
<tr>
<td id="L3645" class="blob-num js-line-number" data-line-number="3645"></td>
<td id="LC3645" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">{title<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>Image files<span class="pl-pds">"</span></span>, extensions<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>jpg,gif,png<span class="pl-pds">"</span></span>} <span class="pl-c"><span class="pl-c">//</span> accept only images</span></span></span></td>
</tr>
<tr>
<td id="L3646" class="blob-num js-line-number" data-line-number="3646"></td>
<td id="LC3646" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">],</span></span></td>
</tr>
<tr>
<td id="L3647" class="blob-num js-line-number" data-line-number="3647"></td>
<td id="LC3647" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">multiple<span class="pl-k">:</span> <span class="pl-c1">true</span> <span class="pl-c"><span class="pl-c">//</span> allow multiple file selection</span></span></span></td>
</tr>
<tr>
<td id="L3648" class="blob-num js-line-number" data-line-number="3648"></td>
<td id="LC3648" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">});</span></span></td>
</tr>
<tr>
<td id="L3649" class="blob-num js-line-number" data-line-number="3649"></td>
<td id="LC3649" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3650" class="blob-num js-line-number" data-line-number="3650"></td>
<td id="LC3650" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">fileInput</span>.<span class="pl-en">onchange</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</span></span></td>
</tr>
<tr>
<td id="L3651" class="blob-num js-line-number" data-line-number="3651"></td>
<td id="LC3651" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> do something to files array</span></span></span></td>
</tr>
<tr>
<td id="L3652" class="blob-num js-line-number" data-line-number="3652"></td>
<td id="LC3652" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-en">console</span>.<span class="pl-c1">info</span>(<span class="pl-smi">e</span>.<span class="pl-c1">target</span>.<span class="pl-smi">files</span>); <span class="pl-c"><span class="pl-c">//</span> or this.files or fileInput.files</span></span></span></td>
</tr>
<tr>
<td id="L3653" class="blob-num js-line-number" data-line-number="3653"></td>
<td id="LC3653" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">};</span></span></td>
</tr>
<tr>
<td id="L3654" class="blob-num js-line-number" data-line-number="3654"></td>
<td id="LC3654" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3655" class="blob-num js-line-number" data-line-number="3655"></td>
<td id="LC3655" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">fileInput</span>.<span class="pl-en">init</span>(); <span class="pl-c"><span class="pl-c">//</span> initialize</span></span></span></td>
</tr>
<tr>
<td id="L3656" class="blob-num js-line-number" data-line-number="3656"></td>
<td id="LC3656" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span><span class="pl-k">/</span>script<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L3657" class="blob-num js-line-number" data-line-number="3657"></td>
<td id="LC3657" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3658" class="blob-num js-line-number" data-line-number="3658"></td>
<td id="LC3658" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dispatches <span class="pl-k">=</span> [</td>
</tr>
<tr>
<td id="L3659" class="blob-num js-line-number" data-line-number="3659"></td>
<td id="LC3659" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3660" class="blob-num js-line-number" data-line-number="3660"></td>
<td id="LC3660" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when runtime is connected and file-picker is ready to be used.</span></td>
</tr>
<tr>
<td id="L3661" class="blob-num js-line-number" data-line-number="3661"></td>
<td id="LC3661" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3662" class="blob-num js-line-number" data-line-number="3662"></td>
<td id="LC3662" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">ready</span></span></td>
</tr>
<tr>
<td id="L3663" class="blob-num js-line-number" data-line-number="3663"></td>
<td id="LC3663" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3664" class="blob-num js-line-number" data-line-number="3664"></td>
<td id="LC3664" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3665" class="blob-num js-line-number" data-line-number="3665"></td>
<td id="LC3665" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3666" class="blob-num js-line-number" data-line-number="3666"></td>
<td id="LC3666" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3667" class="blob-num js-line-number" data-line-number="3667"></td>
<td id="LC3667" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3668" class="blob-num js-line-number" data-line-number="3668"></td>
<td id="LC3668" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched right after [ready](#event_ready) event, and whenever [refresh()](#method_refresh) is invoked.</span></td>
</tr>
<tr>
<td id="L3669" class="blob-num js-line-number" data-line-number="3669"></td>
<td id="LC3669" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Check [corresponding documentation entry](#method_refresh) for more info.</span></td>
</tr>
<tr>
<td id="L3670" class="blob-num js-line-number" data-line-number="3670"></td>
<td id="LC3670" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3671" class="blob-num js-line-number" data-line-number="3671"></td>
<td id="LC3671" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">refresh</span></span></td>
</tr>
<tr>
<td id="L3672" class="blob-num js-line-number" data-line-number="3672"></td>
<td id="LC3672" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3673" class="blob-num js-line-number" data-line-number="3673"></td>
<td id="LC3673" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3674" class="blob-num js-line-number" data-line-number="3674"></td>
<td id="LC3674" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3675" class="blob-num js-line-number" data-line-number="3675"></td>
<td id="LC3675" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3676" class="blob-num js-line-number" data-line-number="3676"></td>
<td id="LC3676" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when selection of files in the dialog is complete.</span></td>
</tr>
<tr>
<td id="L3677" class="blob-num js-line-number" data-line-number="3677"></td>
<td id="LC3677" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3678" class="blob-num js-line-number" data-line-number="3678"></td>
<td id="LC3678" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">change</span></span></td>
</tr>
<tr>
<td id="L3679" class="blob-num js-line-number" data-line-number="3679"></td>
<td id="LC3679" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3680" class="blob-num js-line-number" data-line-number="3680"></td>
<td id="LC3680" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3681" class="blob-num js-line-number" data-line-number="3681"></td>
<td id="LC3681" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>change<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3682" class="blob-num js-line-number" data-line-number="3682"></td>
<td id="LC3682" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3683" class="blob-num js-line-number" data-line-number="3683"></td>
<td id="LC3683" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>cancel<span class="pl-pds">'</span></span>, <span class="pl-c"><span class="pl-c">//</span> TODO: might be useful</span></td>
</tr>
<tr>
<td id="L3684" class="blob-num js-line-number" data-line-number="3684"></td>
<td id="LC3684" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3685" class="blob-num js-line-number" data-line-number="3685"></td>
<td id="LC3685" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3686" class="blob-num js-line-number" data-line-number="3686"></td>
<td id="LC3686" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when mouse cursor enters file-picker area. Can be used to style element</span></td>
</tr>
<tr>
<td id="L3687" class="blob-num js-line-number" data-line-number="3687"></td>
<td id="LC3687" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> accordingly.</span></td>
</tr>
<tr>
<td id="L3688" class="blob-num js-line-number" data-line-number="3688"></td>
<td id="LC3688" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3689" class="blob-num js-line-number" data-line-number="3689"></td>
<td id="LC3689" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">mouseenter</span></span></td>
</tr>
<tr>
<td id="L3690" class="blob-num js-line-number" data-line-number="3690"></td>
<td id="LC3690" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3691" class="blob-num js-line-number" data-line-number="3691"></td>
<td id="LC3691" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3692" class="blob-num js-line-number" data-line-number="3692"></td>
<td id="LC3692" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>mouseenter<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3693" class="blob-num js-line-number" data-line-number="3693"></td>
<td id="LC3693" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3694" class="blob-num js-line-number" data-line-number="3694"></td>
<td id="LC3694" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3695" class="blob-num js-line-number" data-line-number="3695"></td>
<td id="LC3695" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when mouse cursor leaves file-picker area. Can be used to style element</span></td>
</tr>
<tr>
<td id="L3696" class="blob-num js-line-number" data-line-number="3696"></td>
<td id="LC3696" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> accordingly.</span></td>
</tr>
<tr>
<td id="L3697" class="blob-num js-line-number" data-line-number="3697"></td>
<td id="LC3697" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3698" class="blob-num js-line-number" data-line-number="3698"></td>
<td id="LC3698" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">mouseleave</span></span></td>
</tr>
<tr>
<td id="L3699" class="blob-num js-line-number" data-line-number="3699"></td>
<td id="LC3699" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3700" class="blob-num js-line-number" data-line-number="3700"></td>
<td id="LC3700" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3701" class="blob-num js-line-number" data-line-number="3701"></td>
<td id="LC3701" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>mouseleave<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3702" class="blob-num js-line-number" data-line-number="3702"></td>
<td id="LC3702" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3703" class="blob-num js-line-number" data-line-number="3703"></td>
<td id="LC3703" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3704" class="blob-num js-line-number" data-line-number="3704"></td>
<td id="LC3704" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when functional mouse button is pressed on top of file-picker area.</span></td>
</tr>
<tr>
<td id="L3705" class="blob-num js-line-number" data-line-number="3705"></td>
<td id="LC3705" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3706" class="blob-num js-line-number" data-line-number="3706"></td>
<td id="LC3706" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">mousedown</span></span></td>
</tr>
<tr>
<td id="L3707" class="blob-num js-line-number" data-line-number="3707"></td>
<td id="LC3707" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3708" class="blob-num js-line-number" data-line-number="3708"></td>
<td id="LC3708" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3709" class="blob-num js-line-number" data-line-number="3709"></td>
<td id="LC3709" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>mousedown<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3710" class="blob-num js-line-number" data-line-number="3710"></td>
<td id="LC3710" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3711" class="blob-num js-line-number" data-line-number="3711"></td>
<td id="LC3711" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3712" class="blob-num js-line-number" data-line-number="3712"></td>
<td id="LC3712" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when functional mouse button is released on top of file-picker area.</span></td>
</tr>
<tr>
<td id="L3713" class="blob-num js-line-number" data-line-number="3713"></td>
<td id="LC3713" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3714" class="blob-num js-line-number" data-line-number="3714"></td>
<td id="LC3714" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">mouseup</span></span></td>
</tr>
<tr>
<td id="L3715" class="blob-num js-line-number" data-line-number="3715"></td>
<td id="LC3715" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L3716" class="blob-num js-line-number" data-line-number="3716"></td>
<td id="LC3716" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3717" class="blob-num js-line-number" data-line-number="3717"></td>
<td id="LC3717" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>mouseup<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L3718" class="blob-num js-line-number" data-line-number="3718"></td>
<td id="LC3718" class="blob-code blob-code-inner js-file-line"> ];</td>
</tr>
<tr>
<td id="L3719" class="blob-num js-line-number" data-line-number="3719"></td>
<td id="LC3719" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3720" class="blob-num js-line-number" data-line-number="3720"></td>
<td id="LC3720" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileInput</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L3721" class="blob-num js-line-number" data-line-number="3721"></td>
<td id="LC3721" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span>) {</td>
</tr>
<tr>
<td id="L3722" class="blob-num js-line-number" data-line-number="3722"></td>
<td id="LC3722" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Instantiating FileInput...<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L3723" class="blob-num js-line-number" data-line-number="3723"></td>
<td id="LC3723" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3724" class="blob-num js-line-number" data-line-number="3724"></td>
<td id="LC3724" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3725" class="blob-num js-line-number" data-line-number="3725"></td>
<td id="LC3725" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> container, browseButton, defaults;</td>
</tr>
<tr>
<td id="L3726" class="blob-num js-line-number" data-line-number="3726"></td>
<td id="LC3726" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3727" class="blob-num js-line-number" data-line-number="3727"></td>
<td id="LC3727" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if flat argument passed it should be browse_button id</span></td>
</tr>
<tr>
<td id="L3728" class="blob-num js-line-number" data-line-number="3728"></td>
<td id="LC3728" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(options), [<span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>node<span class="pl-pds">'</span></span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L3729" class="blob-num js-line-number" data-line-number="3729"></td>
<td id="LC3729" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> { browse_button <span class="pl-k">:</span> options };</td>
</tr>
<tr>
<td id="L3730" class="blob-num js-line-number" data-line-number="3730"></td>
<td id="LC3730" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3731" class="blob-num js-line-number" data-line-number="3731"></td>
<td id="LC3731" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3732" class="blob-num js-line-number" data-line-number="3732"></td>
<td id="LC3732" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this will help us to find proper default container</span></td>
</tr>
<tr>
<td id="L3733" class="blob-num js-line-number" data-line-number="3733"></td>
<td id="LC3733" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L3734" class="blob-num js-line-number" data-line-number="3734"></td>
<td id="LC3734" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>browseButton) {</td>
</tr>
<tr>
<td id="L3735" class="blob-num js-line-number" data-line-number="3735"></td>
<td id="LC3735" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> browse button is required</span></td>
</tr>
<tr>
<td id="L3736" class="blob-num js-line-number" data-line-number="3736"></td>
<td id="LC3736" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">NOT_FOUND_ERR</span>);</td>
</tr>
<tr>
<td id="L3737" class="blob-num js-line-number" data-line-number="3737"></td>
<td id="LC3737" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3738" class="blob-num js-line-number" data-line-number="3738"></td>
<td id="LC3738" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3739" class="blob-num js-line-number" data-line-number="3739"></td>
<td id="LC3739" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> figure out the options</span></td>
</tr>
<tr>
<td id="L3740" class="blob-num js-line-number" data-line-number="3740"></td>
<td id="LC3740" class="blob-code blob-code-inner js-file-line"> defaults <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L3741" class="blob-num js-line-number" data-line-number="3741"></td>
<td id="LC3741" class="blob-code blob-code-inner js-file-line"> accept<span class="pl-k">:</span> [{</td>
</tr>
<tr>
<td id="L3742" class="blob-num js-line-number" data-line-number="3742"></td>
<td id="LC3742" class="blob-code blob-code-inner js-file-line"> title<span class="pl-k">:</span> <span class="pl-smi">I18n</span>.<span class="pl-en">translate</span>(<span class="pl-s"><span class="pl-pds">'</span>All Files<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L3743" class="blob-num js-line-number" data-line-number="3743"></td>
<td id="LC3743" class="blob-code blob-code-inner js-file-line"> extensions<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L3744" class="blob-num js-line-number" data-line-number="3744"></td>
<td id="LC3744" class="blob-code blob-code-inner js-file-line"> }],</td>
</tr>
<tr>
<td id="L3745" class="blob-num js-line-number" data-line-number="3745"></td>
<td id="LC3745" class="blob-code blob-code-inner js-file-line"> multiple<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L3746" class="blob-num js-line-number" data-line-number="3746"></td>
<td id="LC3746" class="blob-code blob-code-inner js-file-line"> required_caps<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L3747" class="blob-num js-line-number" data-line-number="3747"></td>
<td id="LC3747" class="blob-code blob-code-inner js-file-line"> container<span class="pl-k">:</span> <span class="pl-smi">browseButton</span>.<span class="pl-c1">parentNode</span> <span class="pl-k">||</span> <span class="pl-c1">document</span>.<span class="pl-c1">body</span></td>
</tr>
<tr>
<td id="L3748" class="blob-num js-line-number" data-line-number="3748"></td>
<td id="LC3748" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L3749" class="blob-num js-line-number" data-line-number="3749"></td>
<td id="LC3749" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3750" class="blob-num js-line-number" data-line-number="3750"></td>
<td id="LC3750" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, defaults, options);</td>
</tr>
<tr>
<td id="L3751" class="blob-num js-line-number" data-line-number="3751"></td>
<td id="LC3751" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3752" class="blob-num js-line-number" data-line-number="3752"></td>
<td id="LC3752" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> convert to object representation</span></td>
</tr>
<tr>
<td id="L3753" class="blob-num js-line-number" data-line-number="3753"></td>
<td id="LC3753" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3754" class="blob-num js-line-number" data-line-number="3754"></td>
<td id="LC3754" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span> <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">parseCaps</span>(<span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span>);</td>
</tr>
<tr>
<td id="L3755" class="blob-num js-line-number" data-line-number="3755"></td>
<td id="LC3755" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3756" class="blob-num js-line-number" data-line-number="3756"></td>
<td id="LC3756" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3757" class="blob-num js-line-number" data-line-number="3757"></td>
<td id="LC3757" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> normalize accept option (could be list of mime types or array of title/extensions pairs)</span></td>
</tr>
<tr>
<td id="L3758" class="blob-num js-line-number" data-line-number="3758"></td>
<td id="LC3758" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-smi">options</span>.<span class="pl-c1">accept</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3759" class="blob-num js-line-number" data-line-number="3759"></td>
<td id="LC3759" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-c1">accept</span> <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">mimes2extList</span>(<span class="pl-smi">options</span>.<span class="pl-c1">accept</span>);</td>
</tr>
<tr>
<td id="L3760" class="blob-num js-line-number" data-line-number="3760"></td>
<td id="LC3760" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3761" class="blob-num js-line-number" data-line-number="3761"></td>
<td id="LC3761" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3762" class="blob-num js-line-number" data-line-number="3762"></td>
<td id="LC3762" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">container</span>);</td>
</tr>
<tr>
<td id="L3763" class="blob-num js-line-number" data-line-number="3763"></td>
<td id="LC3763" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make sure we have container</span></td>
</tr>
<tr>
<td id="L3764" class="blob-num js-line-number" data-line-number="3764"></td>
<td id="LC3764" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>container) {</td>
</tr>
<tr>
<td id="L3765" class="blob-num js-line-number" data-line-number="3765"></td>
<td id="LC3765" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">body</span>;</td>
</tr>
<tr>
<td id="L3766" class="blob-num js-line-number" data-line-number="3766"></td>
<td id="LC3766" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3767" class="blob-num js-line-number" data-line-number="3767"></td>
<td id="LC3767" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3768" class="blob-num js-line-number" data-line-number="3768"></td>
<td id="LC3768" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make container relative, if it's not</span></td>
</tr>
<tr>
<td id="L3769" class="blob-num js-line-number" data-line-number="3769"></td>
<td id="LC3769" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(container, <span class="pl-s"><span class="pl-pds">'</span>position<span class="pl-pds">'</span></span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>static<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3770" class="blob-num js-line-number" data-line-number="3770"></td>
<td id="LC3770" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">container</span>.<span class="pl-c1">style</span>.<span class="pl-smi">position</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>relative<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L3771" class="blob-num js-line-number" data-line-number="3771"></td>
<td id="LC3771" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3772" class="blob-num js-line-number" data-line-number="3772"></td>
<td id="LC3772" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3773" class="blob-num js-line-number" data-line-number="3773"></td>
<td id="LC3773" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> browseButton <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> IE</span></td>
</tr>
<tr>
<td id="L3774" class="blob-num js-line-number" data-line-number="3774"></td>
<td id="LC3774" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3775" class="blob-num js-line-number" data-line-number="3775"></td>
<td id="LC3775" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L3776" class="blob-num js-line-number" data-line-number="3776"></td>
<td id="LC3776" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3777" class="blob-num js-line-number" data-line-number="3777"></td>
<td id="LC3777" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L3778" class="blob-num js-line-number" data-line-number="3778"></td>
<td id="LC3778" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3779" class="blob-num js-line-number" data-line-number="3779"></td>
<td id="LC3779" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the component</span></td>
</tr>
<tr>
<td id="L3780" class="blob-num js-line-number" data-line-number="3780"></td>
<td id="LC3780" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3781" class="blob-num js-line-number" data-line-number="3781"></td>
<td id="LC3781" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L3782" class="blob-num js-line-number" data-line-number="3782"></td>
<td id="LC3782" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L3783" class="blob-num js-line-number" data-line-number="3783"></td>
<td id="LC3783" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@readOnly</span></span></td>
</tr>
<tr>
<td id="L3784" class="blob-num js-line-number" data-line-number="3784"></td>
<td id="LC3784" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L3785" class="blob-num js-line-number" data-line-number="3785"></td>
<td id="LC3785" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">UID</span></span></td>
</tr>
<tr>
<td id="L3786" class="blob-num js-line-number" data-line-number="3786"></td>
<td id="LC3786" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3787" class="blob-num js-line-number" data-line-number="3787"></td>
<td id="LC3787" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L3788" class="blob-num js-line-number" data-line-number="3788"></td>
<td id="LC3788" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3789" class="blob-num js-line-number" data-line-number="3789"></td>
<td id="LC3789" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3790" class="blob-num js-line-number" data-line-number="3790"></td>
<td id="LC3790" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the connected runtime, if any.</span></td>
</tr>
<tr>
<td id="L3791" class="blob-num js-line-number" data-line-number="3791"></td>
<td id="LC3791" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3792" class="blob-num js-line-number" data-line-number="3792"></td>
<td id="LC3792" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> ruid</span></td>
</tr>
<tr>
<td id="L3793" class="blob-num js-line-number" data-line-number="3793"></td>
<td id="LC3793" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L3794" class="blob-num js-line-number" data-line-number="3794"></td>
<td id="LC3794" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L3795" class="blob-num js-line-number" data-line-number="3795"></td>
<td id="LC3795" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3796" class="blob-num js-line-number" data-line-number="3796"></td>
<td id="LC3796" class="blob-code blob-code-inner js-file-line"> ruid<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L3797" class="blob-num js-line-number" data-line-number="3797"></td>
<td id="LC3797" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3798" class="blob-num js-line-number" data-line-number="3798"></td>
<td id="LC3798" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3799" class="blob-num js-line-number" data-line-number="3799"></td>
<td id="LC3799" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the runtime container. Useful to get hold of it for various manipulations.</span></td>
</tr>
<tr>
<td id="L3800" class="blob-num js-line-number" data-line-number="3800"></td>
<td id="LC3800" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3801" class="blob-num js-line-number" data-line-number="3801"></td>
<td id="LC3801" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> shimid</span></td>
</tr>
<tr>
<td id="L3802" class="blob-num js-line-number" data-line-number="3802"></td>
<td id="LC3802" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L3803" class="blob-num js-line-number" data-line-number="3803"></td>
<td id="LC3803" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L3804" class="blob-num js-line-number" data-line-number="3804"></td>
<td id="LC3804" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3805" class="blob-num js-line-number" data-line-number="3805"></td>
<td id="LC3805" class="blob-code blob-code-inner js-file-line"> shimid<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L3806" class="blob-num js-line-number" data-line-number="3806"></td>
<td id="LC3806" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3807" class="blob-num js-line-number" data-line-number="3807"></td>
<td id="LC3807" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3808" class="blob-num js-line-number" data-line-number="3808"></td>
<td id="LC3808" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Array of selected moxie.file.File objects</span></td>
</tr>
<tr>
<td id="L3809" class="blob-num js-line-number" data-line-number="3809"></td>
<td id="LC3809" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3810" class="blob-num js-line-number" data-line-number="3810"></td>
<td id="LC3810" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> files</span></td>
</tr>
<tr>
<td id="L3811" class="blob-num js-line-number" data-line-number="3811"></td>
<td id="LC3811" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Array}</span></span></td>
</tr>
<tr>
<td id="L3812" class="blob-num js-line-number" data-line-number="3812"></td>
<td id="LC3812" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">null</span></span></td>
</tr>
<tr>
<td id="L3813" class="blob-num js-line-number" data-line-number="3813"></td>
<td id="LC3813" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3814" class="blob-num js-line-number" data-line-number="3814"></td>
<td id="LC3814" class="blob-code blob-code-inner js-file-line"> files<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L3815" class="blob-num js-line-number" data-line-number="3815"></td>
<td id="LC3815" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3816" class="blob-num js-line-number" data-line-number="3816"></td>
<td id="LC3816" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3817" class="blob-num js-line-number" data-line-number="3817"></td>
<td id="LC3817" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Initializes the file-picker, connects it to runtime and dispatches event ready when done.</span></td>
</tr>
<tr>
<td id="L3818" class="blob-num js-line-number" data-line-number="3818"></td>
<td id="LC3818" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3819" class="blob-num js-line-number" data-line-number="3819"></td>
<td id="LC3819" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">init</span></span></td>
</tr>
<tr>
<td id="L3820" class="blob-num js-line-number" data-line-number="3820"></td>
<td id="LC3820" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3821" class="blob-num js-line-number" data-line-number="3821"></td>
<td id="LC3821" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3822" class="blob-num js-line-number" data-line-number="3822"></td>
<td id="LC3822" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L3823" class="blob-num js-line-number" data-line-number="3823"></td>
<td id="LC3823" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3824" class="blob-num js-line-number" data-line-number="3824"></td>
<td id="LC3824" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeInit<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L3825" class="blob-num js-line-number" data-line-number="3825"></td>
<td id="LC3825" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L3826" class="blob-num js-line-number" data-line-number="3826"></td>
<td id="LC3826" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimid</span> <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">shimid</span>;</td>
</tr>
<tr>
<td id="L3827" class="blob-num js-line-number" data-line-number="3827"></td>
<td id="LC3827" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3828" class="blob-num js-line-number" data-line-number="3828"></td>
<td id="LC3828" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>Ready<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3829" class="blob-num js-line-number" data-line-number="3829"></td>
<td id="LC3829" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>Refresh<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L3830" class="blob-num js-line-number" data-line-number="3830"></td>
<td id="LC3830" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L3831" class="blob-num js-line-number" data-line-number="3831"></td>
<td id="LC3831" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3832" class="blob-num js-line-number" data-line-number="3832"></td>
<td id="LC3832" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> re-position and resize shim container</span></td>
</tr>
<tr>
<td id="L3833" class="blob-num js-line-number" data-line-number="3833"></td>
<td id="LC3833" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Refresh<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3834" class="blob-num js-line-number" data-line-number="3834"></td>
<td id="LC3834" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> pos, size, browseButton, shimContainer, zIndex;</td>
</tr>
<tr>
<td id="L3835" class="blob-num js-line-number" data-line-number="3835"></td>
<td id="LC3835" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3836" class="blob-num js-line-number" data-line-number="3836"></td>
<td id="LC3836" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L3837" class="blob-num js-line-number" data-line-number="3837"></td>
<td id="LC3837" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">runtime</span>.<span class="pl-smi">shimid</span>); <span class="pl-c"><span class="pl-c">//</span> do not use runtime.getShimContainer(), since it will create container if it doesn't exist</span></td>
</tr>
<tr>
<td id="L3838" class="blob-num js-line-number" data-line-number="3838"></td>
<td id="LC3838" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3839" class="blob-num js-line-number" data-line-number="3839"></td>
<td id="LC3839" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (browseButton) {</td>
</tr>
<tr>
<td id="L3840" class="blob-num js-line-number" data-line-number="3840"></td>
<td id="LC3840" class="blob-code blob-code-inner js-file-line"> pos <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-en">getPos</span>(browseButton, <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">container</span>));</td>
</tr>
<tr>
<td id="L3841" class="blob-num js-line-number" data-line-number="3841"></td>
<td id="LC3841" class="blob-code blob-code-inner js-file-line"> size <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-en">getSize</span>(browseButton);</td>
</tr>
<tr>
<td id="L3842" class="blob-num js-line-number" data-line-number="3842"></td>
<td id="LC3842" class="blob-code blob-code-inner js-file-line"> zIndex <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(<span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>z-index<span class="pl-pds">'</span></span>), <span class="pl-c1">10</span>) <span class="pl-k">||</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L3843" class="blob-num js-line-number" data-line-number="3843"></td>
<td id="LC3843" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3844" class="blob-num js-line-number" data-line-number="3844"></td>
<td id="LC3844" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (shimContainer) {</td>
</tr>
<tr>
<td id="L3845" class="blob-num js-line-number" data-line-number="3845"></td>
<td id="LC3845" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">shimContainer</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L3846" class="blob-num js-line-number" data-line-number="3846"></td>
<td id="LC3846" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-smi">pos</span>.<span class="pl-c1">y</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3847" class="blob-num js-line-number" data-line-number="3847"></td>
<td id="LC3847" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-smi">pos</span>.<span class="pl-c1">x</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3848" class="blob-num js-line-number" data-line-number="3848"></td>
<td id="LC3848" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">size</span>.<span class="pl-smi">w</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3849" class="blob-num js-line-number" data-line-number="3849"></td>
<td id="LC3849" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">size</span>.<span class="pl-smi">h</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3850" class="blob-num js-line-number" data-line-number="3850"></td>
<td id="LC3850" class="blob-code blob-code-inner js-file-line"> zIndex<span class="pl-k">:</span> zIndex <span class="pl-k">+</span> <span class="pl-c1">1</span></td>
</tr>
<tr>
<td id="L3851" class="blob-num js-line-number" data-line-number="3851"></td>
<td id="LC3851" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3852" class="blob-num js-line-number" data-line-number="3852"></td>
<td id="LC3852" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3853" class="blob-num js-line-number" data-line-number="3853"></td>
<td id="LC3853" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3854" class="blob-num js-line-number" data-line-number="3854"></td>
<td id="LC3854" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> browseButton <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L3855" class="blob-num js-line-number" data-line-number="3855"></td>
<td id="LC3855" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3856" class="blob-num js-line-number" data-line-number="3856"></td>
<td id="LC3856" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3857" class="blob-num js-line-number" data-line-number="3857"></td>
<td id="LC3857" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>init<span class="pl-pds">'</span></span>, options);</td>
</tr>
<tr>
<td id="L3858" class="blob-num js-line-number" data-line-number="3858"></td>
<td id="LC3858" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3859" class="blob-num js-line-number" data-line-number="3859"></td>
<td id="LC3859" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3860" class="blob-num js-line-number" data-line-number="3860"></td>
<td id="LC3860" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> runtime needs: options.required_features, options.runtime_order and options.container</span></td>
</tr>
<tr>
<td id="L3861" class="blob-num js-line-number" data-line-number="3861"></td>
<td id="LC3861" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, options, {</td>
</tr>
<tr>
<td id="L3862" class="blob-num js-line-number" data-line-number="3862"></td>
<td id="LC3862" class="blob-code blob-code-inner js-file-line"> required_caps<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L3863" class="blob-num js-line-number" data-line-number="3863"></td>
<td id="LC3863" class="blob-code blob-code-inner js-file-line"> select_file<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L3864" class="blob-num js-line-number" data-line-number="3864"></td>
<td id="LC3864" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3865" class="blob-num js-line-number" data-line-number="3865"></td>
<td id="LC3865" class="blob-code blob-code-inner js-file-line"> }));</td>
</tr>
<tr>
<td id="L3866" class="blob-num js-line-number" data-line-number="3866"></td>
<td id="LC3866" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3867" class="blob-num js-line-number" data-line-number="3867"></td>
<td id="LC3867" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3868" class="blob-num js-line-number" data-line-number="3868"></td>
<td id="LC3868" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3869" class="blob-num js-line-number" data-line-number="3869"></td>
<td id="LC3869" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3870" class="blob-num js-line-number" data-line-number="3870"></td>
<td id="LC3870" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Get current option value by its name</span></td>
</tr>
<tr>
<td id="L3871" class="blob-num js-line-number" data-line-number="3871"></td>
<td id="LC3871" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3872" class="blob-num js-line-number" data-line-number="3872"></td>
<td id="LC3872" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">getOption</span></span></td>
</tr>
<tr>
<td id="L3873" class="blob-num js-line-number" data-line-number="3873"></td>
<td id="LC3873" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-smi">name</span></span></td>
</tr>
<tr>
<td id="L3874" class="blob-num js-line-number" data-line-number="3874"></td>
<td id="LC3874" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{Mixed}</span></span></td>
</tr>
<tr>
<td id="L3875" class="blob-num js-line-number" data-line-number="3875"></td>
<td id="LC3875" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3876" class="blob-num js-line-number" data-line-number="3876"></td>
<td id="LC3876" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getOption</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L3877" class="blob-num js-line-number" data-line-number="3877"></td>
<td id="LC3877" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> options[name];</td>
</tr>
<tr>
<td id="L3878" class="blob-num js-line-number" data-line-number="3878"></td>
<td id="LC3878" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3879" class="blob-num js-line-number" data-line-number="3879"></td>
<td id="LC3879" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3880" class="blob-num js-line-number" data-line-number="3880"></td>
<td id="LC3880" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3881" class="blob-num js-line-number" data-line-number="3881"></td>
<td id="LC3881" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3882" class="blob-num js-line-number" data-line-number="3882"></td>
<td id="LC3882" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Sets a new value for the option specified by name</span></td>
</tr>
<tr>
<td id="L3883" class="blob-num js-line-number" data-line-number="3883"></td>
<td id="LC3883" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3884" class="blob-num js-line-number" data-line-number="3884"></td>
<td id="LC3884" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">setOption</span></span></td>
</tr>
<tr>
<td id="L3885" class="blob-num js-line-number" data-line-number="3885"></td>
<td id="LC3885" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-smi">name</span></span></td>
</tr>
<tr>
<td id="L3886" class="blob-num js-line-number" data-line-number="3886"></td>
<td id="LC3886" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-smi">value</span></span></td>
</tr>
<tr>
<td id="L3887" class="blob-num js-line-number" data-line-number="3887"></td>
<td id="LC3887" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3888" class="blob-num js-line-number" data-line-number="3888"></td>
<td id="LC3888" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setOption</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L3889" class="blob-num js-line-number" data-line-number="3889"></td>
<td id="LC3889" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">options</span>.<span class="pl-en">hasOwnProperty</span>(name)) {</td>
</tr>
<tr>
<td id="L3890" class="blob-num js-line-number" data-line-number="3890"></td>
<td id="LC3890" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L3891" class="blob-num js-line-number" data-line-number="3891"></td>
<td id="LC3891" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3892" class="blob-num js-line-number" data-line-number="3892"></td>
<td id="LC3892" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3893" class="blob-num js-line-number" data-line-number="3893"></td>
<td id="LC3893" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> oldValue <span class="pl-k">=</span> options[name];</td>
</tr>
<tr>
<td id="L3894" class="blob-num js-line-number" data-line-number="3894"></td>
<td id="LC3894" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3895" class="blob-num js-line-number" data-line-number="3895"></td>
<td id="LC3895" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (name) {</td>
</tr>
<tr>
<td id="L3896" class="blob-num js-line-number" data-line-number="3896"></td>
<td id="LC3896" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L3897" class="blob-num js-line-number" data-line-number="3897"></td>
<td id="LC3897" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(value) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3898" class="blob-num js-line-number" data-line-number="3898"></td>
<td id="LC3898" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">mimes2extList</span>(value);</td>
</tr>
<tr>
<td id="L3899" class="blob-num js-line-number" data-line-number="3899"></td>
<td id="LC3899" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3900" class="blob-num js-line-number" data-line-number="3900"></td>
<td id="LC3900" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L3901" class="blob-num js-line-number" data-line-number="3901"></td>
<td id="LC3901" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3902" class="blob-num js-line-number" data-line-number="3902"></td>
<td id="LC3902" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>container<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L3903" class="blob-num js-line-number" data-line-number="3903"></td>
<td id="LC3903" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>required_caps<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L3904" class="blob-num js-line-number" data-line-number="3904"></td>
<td id="LC3904" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.FileException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">FileException</span>.<span class="pl-c1">NO_MODIFICATION_ALLOWED_ERR</span>);</td>
</tr>
<tr>
<td id="L3905" class="blob-num js-line-number" data-line-number="3905"></td>
<td id="LC3905" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3906" class="blob-num js-line-number" data-line-number="3906"></td>
<td id="LC3906" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3907" class="blob-num js-line-number" data-line-number="3907"></td>
<td id="LC3907" class="blob-code blob-code-inner js-file-line"> options[name] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L3908" class="blob-num js-line-number" data-line-number="3908"></td>
<td id="LC3908" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>setOption<span class="pl-pds">'</span></span>, name, value);</td>
</tr>
<tr>
<td id="L3909" class="blob-num js-line-number" data-line-number="3909"></td>
<td id="LC3909" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3910" class="blob-num js-line-number" data-line-number="3910"></td>
<td id="LC3910" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>OptionChanged<span class="pl-pds">'</span></span>, name, value, oldValue);</td>
</tr>
<tr>
<td id="L3911" class="blob-num js-line-number" data-line-number="3911"></td>
<td id="LC3911" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3912" class="blob-num js-line-number" data-line-number="3912"></td>
<td id="LC3912" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3913" class="blob-num js-line-number" data-line-number="3913"></td>
<td id="LC3913" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3914" class="blob-num js-line-number" data-line-number="3914"></td>
<td id="LC3914" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Disables file-picker element, so that it doesn't react to mouse clicks.</span></td>
</tr>
<tr>
<td id="L3915" class="blob-num js-line-number" data-line-number="3915"></td>
<td id="LC3915" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3916" class="blob-num js-line-number" data-line-number="3916"></td>
<td id="LC3916" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">disable</span></span></td>
</tr>
<tr>
<td id="L3917" class="blob-num js-line-number" data-line-number="3917"></td>
<td id="LC3917" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[state<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> Disable component if - true, enable if - false</span></td>
</tr>
<tr>
<td id="L3918" class="blob-num js-line-number" data-line-number="3918"></td>
<td id="LC3918" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3919" class="blob-num js-line-number" data-line-number="3919"></td>
<td id="LC3919" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">disable</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">state</span>) {</td>
</tr>
<tr>
<td id="L3920" class="blob-num js-line-number" data-line-number="3920"></td>
<td id="LC3920" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L3921" class="blob-num js-line-number" data-line-number="3921"></td>
<td id="LC3921" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime) {</td>
</tr>
<tr>
<td id="L3922" class="blob-num js-line-number" data-line-number="3922"></td>
<td id="LC3922" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>disable<span class="pl-pds">'</span></span>, <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(state) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span> <span class="pl-k">?</span> <span class="pl-c1">true</span> <span class="pl-k">:</span> state);</td>
</tr>
<tr>
<td id="L3923" class="blob-num js-line-number" data-line-number="3923"></td>
<td id="LC3923" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3924" class="blob-num js-line-number" data-line-number="3924"></td>
<td id="LC3924" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3925" class="blob-num js-line-number" data-line-number="3925"></td>
<td id="LC3925" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3926" class="blob-num js-line-number" data-line-number="3926"></td>
<td id="LC3926" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3927" class="blob-num js-line-number" data-line-number="3927"></td>
<td id="LC3927" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3928" class="blob-num js-line-number" data-line-number="3928"></td>
<td id="LC3928" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Reposition and resize dialog trigger to match the position and size of browse_button element.</span></td>
</tr>
<tr>
<td id="L3929" class="blob-num js-line-number" data-line-number="3929"></td>
<td id="LC3929" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3930" class="blob-num js-line-number" data-line-number="3930"></td>
<td id="LC3930" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">refresh</span></span></td>
</tr>
<tr>
<td id="L3931" class="blob-num js-line-number" data-line-number="3931"></td>
<td id="LC3931" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3932" class="blob-num js-line-number" data-line-number="3932"></td>
<td id="LC3932" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">refresh</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3933" class="blob-num js-line-number" data-line-number="3933"></td>
<td id="LC3933" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>Refresh<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L3934" class="blob-num js-line-number" data-line-number="3934"></td>
<td id="LC3934" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L3935" class="blob-num js-line-number" data-line-number="3935"></td>
<td id="LC3935" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3936" class="blob-num js-line-number" data-line-number="3936"></td>
<td id="LC3936" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3937" class="blob-num js-line-number" data-line-number="3937"></td>
<td id="LC3937" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3938" class="blob-num js-line-number" data-line-number="3938"></td>
<td id="LC3938" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Destroy component.</span></td>
</tr>
<tr>
<td id="L3939" class="blob-num js-line-number" data-line-number="3939"></td>
<td id="LC3939" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L3940" class="blob-num js-line-number" data-line-number="3940"></td>
<td id="LC3940" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">destroy</span></span></td>
</tr>
<tr>
<td id="L3941" class="blob-num js-line-number" data-line-number="3941"></td>
<td id="LC3941" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3942" class="blob-num js-line-number" data-line-number="3942"></td>
<td id="LC3942" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L3943" class="blob-num js-line-number" data-line-number="3943"></td>
<td id="LC3943" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L3944" class="blob-num js-line-number" data-line-number="3944"></td>
<td id="LC3944" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime) {</td>
</tr>
<tr>
<td id="L3945" class="blob-num js-line-number" data-line-number="3945"></td>
<td id="LC3945" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>destroy<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L3946" class="blob-num js-line-number" data-line-number="3946"></td>
<td id="LC3946" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L3947" class="blob-num js-line-number" data-line-number="3947"></td>
<td id="LC3947" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3948" class="blob-num js-line-number" data-line-number="3948"></td>
<td id="LC3948" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3949" class="blob-num js-line-number" data-line-number="3949"></td>
<td id="LC3949" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-c1">this</span>.<span class="pl-smi">files</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L3950" class="blob-num js-line-number" data-line-number="3950"></td>
<td id="LC3950" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> no sense in leaving associated files behind</span></td>
</tr>
<tr>
<td id="L3951" class="blob-num js-line-number" data-line-number="3951"></td>
<td id="LC3951" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-c1">this</span>.<span class="pl-smi">files</span>, <span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L3952" class="blob-num js-line-number" data-line-number="3952"></td>
<td id="LC3952" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">file</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L3953" class="blob-num js-line-number" data-line-number="3953"></td>
<td id="LC3953" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3954" class="blob-num js-line-number" data-line-number="3954"></td>
<td id="LC3954" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3955" class="blob-num js-line-number" data-line-number="3955"></td>
<td id="LC3955" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L3956" class="blob-num js-line-number" data-line-number="3956"></td>
<td id="LC3956" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3957" class="blob-num js-line-number" data-line-number="3957"></td>
<td id="LC3957" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L3958" class="blob-num js-line-number" data-line-number="3958"></td>
<td id="LC3958" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3959" class="blob-num js-line-number" data-line-number="3959"></td>
<td id="LC3959" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L3960" class="blob-num js-line-number" data-line-number="3960"></td>
<td id="LC3960" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3961" class="blob-num js-line-number" data-line-number="3961"></td>
<td id="LC3961" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">handleEventProps</span>(dispatches);</td>
</tr>
<tr>
<td id="L3962" class="blob-num js-line-number" data-line-number="3962"></td>
<td id="LC3962" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3963" class="blob-num js-line-number" data-line-number="3963"></td>
<td id="LC3963" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3964" class="blob-num js-line-number" data-line-number="3964"></td>
<td id="LC3964" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">FileInput</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L3965" class="blob-num js-line-number" data-line-number="3965"></td>
<td id="LC3965" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3966" class="blob-num js-line-number" data-line-number="3966"></td>
<td id="LC3966" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> FileInput;</td>
</tr>
<tr>
<td id="L3967" class="blob-num js-line-number" data-line-number="3967"></td>
<td id="LC3967" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L3968" class="blob-num js-line-number" data-line-number="3968"></td>
<td id="LC3968" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3969" class="blob-num js-line-number" data-line-number="3969"></td>
<td id="LC3969" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/file/File.js</span></td>
</tr>
<tr>
<td id="L3970" class="blob-num js-line-number" data-line-number="3970"></td>
<td id="LC3970" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3971" class="blob-num js-line-number" data-line-number="3971"></td>
<td id="LC3971" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3972" class="blob-num js-line-number" data-line-number="3972"></td>
<td id="LC3972" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * File.js</span></td>
</tr>
<tr>
<td id="L3973" class="blob-num js-line-number" data-line-number="3973"></td>
<td id="LC3973" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3974" class="blob-num js-line-number" data-line-number="3974"></td>
<td id="LC3974" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L3975" class="blob-num js-line-number" data-line-number="3975"></td>
<td id="LC3975" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L3976" class="blob-num js-line-number" data-line-number="3976"></td>
<td id="LC3976" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L3977" class="blob-num js-line-number" data-line-number="3977"></td>
<td id="LC3977" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L3978" class="blob-num js-line-number" data-line-number="3978"></td>
<td id="LC3978" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L3979" class="blob-num js-line-number" data-line-number="3979"></td>
<td id="LC3979" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3980" class="blob-num js-line-number" data-line-number="3980"></td>
<td id="LC3980" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3981" class="blob-num js-line-number" data-line-number="3981"></td>
<td id="LC3981" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/file/File<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L3982" class="blob-num js-line-number" data-line-number="3982"></td>
<td id="LC3982" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3983" class="blob-num js-line-number" data-line-number="3983"></td>
<td id="LC3983" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Mime<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L3984" class="blob-num js-line-number" data-line-number="3984"></td>
<td id="LC3984" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/file/Blob<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L3985" class="blob-num js-line-number" data-line-number="3985"></td>
<td id="LC3985" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Mime</span>, <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L3986" class="blob-num js-line-number" data-line-number="3986"></td>
<td id="LC3986" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L3987" class="blob-num js-line-number" data-line-number="3987"></td>
<td id="LC3987" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/file/File</span></td>
</tr>
<tr>
<td id="L3988" class="blob-num js-line-number" data-line-number="3988"></td>
<td id="LC3988" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">Blob</span></span></td>
</tr>
<tr>
<td id="L3989" class="blob-num js-line-number" data-line-number="3989"></td>
<td id="LC3989" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L3990" class="blob-num js-line-number" data-line-number="3990"></td>
<td id="LC3990" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">ruid</span> Unique id of the runtime, to which this blob belongs to</span></td>
</tr>
<tr>
<td id="L3991" class="blob-num js-line-number" data-line-number="3991"></td>
<td id="LC3991" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">file</span> Object "Native" file object, as it is represented in the runtime</span></td>
</tr>
<tr>
<td id="L3992" class="blob-num js-line-number" data-line-number="3992"></td>
<td id="LC3992" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L3993" class="blob-num js-line-number" data-line-number="3993"></td>
<td id="LC3993" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">File</span>(<span class="pl-smi">ruid</span>, <span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L3994" class="blob-num js-line-number" data-line-number="3994"></td>
<td id="LC3994" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>file) { <span class="pl-c"><span class="pl-c">//</span> avoid extra errors in case we overlooked something</span></td>
</tr>
<tr>
<td id="L3995" class="blob-num js-line-number" data-line-number="3995"></td>
<td id="LC3995" class="blob-code blob-code-inner js-file-line"> file <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L3996" class="blob-num js-line-number" data-line-number="3996"></td>
<td id="LC3996" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L3997" class="blob-num js-line-number" data-line-number="3997"></td>
<td id="LC3997" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L3998" class="blob-num js-line-number" data-line-number="3998"></td>
<td id="LC3998" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">Blob</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L3999" class="blob-num js-line-number" data-line-number="3999"></td>
<td id="LC3999" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4000" class="blob-num js-line-number" data-line-number="4000"></td>
<td id="LC4000" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-c1">type</span>) {</td>
</tr>
<tr>
<td id="L4001" class="blob-num js-line-number" data-line-number="4001"></td>
<td id="LC4001" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">type</span> <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">getFileMime</span>(<span class="pl-smi">file</span>.<span class="pl-c1">name</span>);</td>
</tr>
<tr>
<td id="L4002" class="blob-num js-line-number" data-line-number="4002"></td>
<td id="LC4002" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4003" class="blob-num js-line-number" data-line-number="4003"></td>
<td id="LC4003" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4004" class="blob-num js-line-number" data-line-number="4004"></td>
<td id="LC4004" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> sanitize file name or generate new one</span></td>
</tr>
<tr>
<td id="L4005" class="blob-num js-line-number" data-line-number="4005"></td>
<td id="LC4005" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> name;</td>
</tr>
<tr>
<td id="L4006" class="blob-num js-line-number" data-line-number="4006"></td>
<td id="LC4006" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">file</span>.<span class="pl-c1">name</span>) {</td>
</tr>
<tr>
<td id="L4007" class="blob-num js-line-number" data-line-number="4007"></td>
<td id="LC4007" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">=</span> <span class="pl-smi">file</span>.<span class="pl-c1">name</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\\</span><span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4008" class="blob-num js-line-number" data-line-number="4008"></td>
<td id="LC4008" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">=</span> <span class="pl-smi">name</span>.<span class="pl-c1">substr</span>(<span class="pl-smi">name</span>.<span class="pl-c1">lastIndexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L4009" class="blob-num js-line-number" data-line-number="4009"></td>
<td id="LC4009" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-c1">type</span>) {</td>
</tr>
<tr>
<td id="L4010" class="blob-num js-line-number" data-line-number="4010"></td>
<td id="LC4010" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> prefix <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">type</span>.<span class="pl-c1">split</span>(<span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>)[<span class="pl-c1">0</span>];</td>
</tr>
<tr>
<td id="L4011" class="blob-num js-line-number" data-line-number="4011"></td>
<td id="LC4011" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>((prefix <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span> <span class="pl-k">?</span> prefix <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4012" class="blob-num js-line-number" data-line-number="4012"></td>
<td id="LC4012" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4013" class="blob-num js-line-number" data-line-number="4013"></td>
<td id="LC4013" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Mime</span>.<span class="pl-smi">extensions</span>[<span class="pl-c1">this</span>.<span class="pl-c1">type</span>]) {</td>
</tr>
<tr>
<td id="L4014" class="blob-num js-line-number" data-line-number="4014"></td>
<td id="LC4014" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Mime</span>.<span class="pl-smi">extensions</span>[<span class="pl-c1">this</span>.<span class="pl-c1">type</span>][<span class="pl-c1">0</span>]; <span class="pl-c"><span class="pl-c">//</span> append proper extension if possible</span></td>
</tr>
<tr>
<td id="L4015" class="blob-num js-line-number" data-line-number="4015"></td>
<td id="LC4015" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4016" class="blob-num js-line-number" data-line-number="4016"></td>
<td id="LC4016" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4017" class="blob-num js-line-number" data-line-number="4017"></td>
<td id="LC4017" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4018" class="blob-num js-line-number" data-line-number="4018"></td>
<td id="LC4018" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4019" class="blob-num js-line-number" data-line-number="4019"></td>
<td id="LC4019" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L4020" class="blob-num js-line-number" data-line-number="4020"></td>
<td id="LC4020" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4021" class="blob-num js-line-number" data-line-number="4021"></td>
<td id="LC4021" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> File name</span></td>
</tr>
<tr>
<td id="L4022" class="blob-num js-line-number" data-line-number="4022"></td>
<td id="LC4022" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4023" class="blob-num js-line-number" data-line-number="4023"></td>
<td id="LC4023" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> name</span></td>
</tr>
<tr>
<td id="L4024" class="blob-num js-line-number" data-line-number="4024"></td>
<td id="LC4024" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L4025" class="blob-num js-line-number" data-line-number="4025"></td>
<td id="LC4025" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">UID</span></span></td>
</tr>
<tr>
<td id="L4026" class="blob-num js-line-number" data-line-number="4026"></td>
<td id="LC4026" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4027" class="blob-num js-line-number" data-line-number="4027"></td>
<td id="LC4027" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> name <span class="pl-k">||</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>file_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L4028" class="blob-num js-line-number" data-line-number="4028"></td>
<td id="LC4028" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4029" class="blob-num js-line-number" data-line-number="4029"></td>
<td id="LC4029" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4030" class="blob-num js-line-number" data-line-number="4030"></td>
<td id="LC4030" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Relative path to the file inside a directory</span></td>
</tr>
<tr>
<td id="L4031" class="blob-num js-line-number" data-line-number="4031"></td>
<td id="LC4031" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4032" class="blob-num js-line-number" data-line-number="4032"></td>
<td id="LC4032" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> relativePath</span></td>
</tr>
<tr>
<td id="L4033" class="blob-num js-line-number" data-line-number="4033"></td>
<td id="LC4033" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L4034" class="blob-num js-line-number" data-line-number="4034"></td>
<td id="LC4034" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi"><span class="pl-pds">'</span><span class="pl-pds">'</span></span></span></td>
</tr>
<tr>
<td id="L4035" class="blob-num js-line-number" data-line-number="4035"></td>
<td id="LC4035" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4036" class="blob-num js-line-number" data-line-number="4036"></td>
<td id="LC4036" class="blob-code blob-code-inner js-file-line"> relativePath<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4037" class="blob-num js-line-number" data-line-number="4037"></td>
<td id="LC4037" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4038" class="blob-num js-line-number" data-line-number="4038"></td>
<td id="LC4038" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4039" class="blob-num js-line-number" data-line-number="4039"></td>
<td id="LC4039" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Date of last modification</span></td>
</tr>
<tr>
<td id="L4040" class="blob-num js-line-number" data-line-number="4040"></td>
<td id="LC4040" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4041" class="blob-num js-line-number" data-line-number="4041"></td>
<td id="LC4041" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> lastModifiedDate</span></td>
</tr>
<tr>
<td id="L4042" class="blob-num js-line-number" data-line-number="4042"></td>
<td id="LC4042" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L4043" class="blob-num js-line-number" data-line-number="4043"></td>
<td id="LC4043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">now</span></span></td>
</tr>
<tr>
<td id="L4044" class="blob-num js-line-number" data-line-number="4044"></td>
<td id="LC4044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4045" class="blob-num js-line-number" data-line-number="4045"></td>
<td id="LC4045" class="blob-code blob-code-inner js-file-line"> lastModifiedDate<span class="pl-k">:</span> <span class="pl-smi">file</span>.<span class="pl-c1">lastModified</span> <span class="pl-k">?</span> <span class="pl-k">new</span> <span class="pl-en">Date</span>(<span class="pl-smi">file</span>.<span class="pl-c1">lastModified</span>) <span class="pl-k">:</span> <span class="pl-smi">file</span>.<span class="pl-smi">lastModifiedDate</span> <span class="pl-k">||</span> (<span class="pl-k">new</span> <span class="pl-en">Date</span>()).<span class="pl-c1">toLocaleString</span>() <span class="pl-c"><span class="pl-c">//</span> Thu Aug 23 2012 19:40:00 GMT+0400 (GET)</span></td>
</tr>
<tr>
<td id="L4046" class="blob-num js-line-number" data-line-number="4046"></td>
<td id="LC4046" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4047" class="blob-num js-line-number" data-line-number="4047"></td>
<td id="LC4047" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4048" class="blob-num js-line-number" data-line-number="4048"></td>
<td id="LC4048" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4049" class="blob-num js-line-number" data-line-number="4049"></td>
<td id="LC4049" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">File</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">Blob</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L4050" class="blob-num js-line-number" data-line-number="4050"></td>
<td id="LC4050" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4051" class="blob-num js-line-number" data-line-number="4051"></td>
<td id="LC4051" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">File</span>;</td>
</tr>
<tr>
<td id="L4052" class="blob-num js-line-number" data-line-number="4052"></td>
<td id="LC4052" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4053" class="blob-num js-line-number" data-line-number="4053"></td>
<td id="LC4053" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4054" class="blob-num js-line-number" data-line-number="4054"></td>
<td id="LC4054" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/file/FileDrop.js</span></td>
</tr>
<tr>
<td id="L4055" class="blob-num js-line-number" data-line-number="4055"></td>
<td id="LC4055" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4056" class="blob-num js-line-number" data-line-number="4056"></td>
<td id="LC4056" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4057" class="blob-num js-line-number" data-line-number="4057"></td>
<td id="LC4057" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileDrop.js</span></td>
</tr>
<tr>
<td id="L4058" class="blob-num js-line-number" data-line-number="4058"></td>
<td id="LC4058" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4059" class="blob-num js-line-number" data-line-number="4059"></td>
<td id="LC4059" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4060" class="blob-num js-line-number" data-line-number="4060"></td>
<td id="LC4060" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4061" class="blob-num js-line-number" data-line-number="4061"></td>
<td id="LC4061" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4062" class="blob-num js-line-number" data-line-number="4062"></td>
<td id="LC4062" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4063" class="blob-num js-line-number" data-line-number="4063"></td>
<td id="LC4063" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4064" class="blob-num js-line-number" data-line-number="4064"></td>
<td id="LC4064" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4065" class="blob-num js-line-number" data-line-number="4065"></td>
<td id="LC4065" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4066" class="blob-num js-line-number" data-line-number="4066"></td>
<td id="LC4066" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/file/FileDrop<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L4067" class="blob-num js-line-number" data-line-number="4067"></td>
<td id="LC4067" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/I18n<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4068" class="blob-num js-line-number" data-line-number="4068"></td>
<td id="LC4068" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Dom<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4069" class="blob-num js-line-number" data-line-number="4069"></td>
<td id="LC4069" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/Exceptions<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4070" class="blob-num js-line-number" data-line-number="4070"></td>
<td id="LC4070" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4071" class="blob-num js-line-number" data-line-number="4071"></td>
<td id="LC4071" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Env<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4072" class="blob-num js-line-number" data-line-number="4072"></td>
<td id="LC4072" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/file/File<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4073" class="blob-num js-line-number" data-line-number="4073"></td>
<td id="LC4073" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeClient<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4074" class="blob-num js-line-number" data-line-number="4074"></td>
<td id="LC4074" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/EventTarget<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4075" class="blob-num js-line-number" data-line-number="4075"></td>
<td id="LC4075" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Mime<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4076" class="blob-num js-line-number" data-line-number="4076"></td>
<td id="LC4076" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">I18n</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Env</span>, <span class="pl-c1">File</span>, <span class="pl-smi">RuntimeClient</span>, <span class="pl-c1">EventTarget</span>, <span class="pl-smi">Mime</span>) {</td>
</tr>
<tr>
<td id="L4077" class="blob-num js-line-number" data-line-number="4077"></td>
<td id="LC4077" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4078" class="blob-num js-line-number" data-line-number="4078"></td>
<td id="LC4078" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Turn arbitrary DOM element to a drop zone accepting files. Converts selected files to _File_ objects, to be used </span></td>
</tr>
<tr>
<td id="L4079" class="blob-num js-line-number" data-line-number="4079"></td>
<td id="LC4079" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> in conjunction with _Image_, preloaded in memory with _FileReader_ or uploaded to a server through </span></td>
</tr>
<tr>
<td id="L4080" class="blob-num js-line-number" data-line-number="4080"></td>
<td id="LC4080" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> _XMLHttpRequest_.</span></td>
</tr>
<tr>
<td id="L4081" class="blob-num js-line-number" data-line-number="4081"></td>
<td id="LC4081" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4082" class="blob-num js-line-number" data-line-number="4082"></td>
<td id="LC4082" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@example</span></span></td>
</tr>
<tr>
<td id="L4083" class="blob-num js-line-number" data-line-number="4083"></td>
<td id="LC4083" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>div id<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>drop_zone<span class="pl-pds">"</span></span><span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L4084" class="blob-num js-line-number" data-line-number="4084"></td>
<td id="LC4084" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">Drop files here</span></span></td>
</tr>
<tr>
<td id="L4085" class="blob-num js-line-number" data-line-number="4085"></td>
<td id="LC4085" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span><span class="pl-k">/</span>div<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L4086" class="blob-num js-line-number" data-line-number="4086"></td>
<td id="LC4086" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>br <span class="pl-k">/</span><span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L4087" class="blob-num js-line-number" data-line-number="4087"></td>
<td id="LC4087" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>div id<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>filelist<span class="pl-pds">"</span></span><span class="pl-k">><</span><span class="pl-k">/</span>div<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L4088" class="blob-num js-line-number" data-line-number="4088"></td>
<td id="LC4088" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4089" class="blob-num js-line-number" data-line-number="4089"></td>
<td id="LC4089" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span>script type<span class="pl-k">=</span><span class="pl-s"><span class="pl-pds">"</span>text/javascript<span class="pl-pds">"</span></span><span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L4090" class="blob-num js-line-number" data-line-number="4090"></td>
<td id="LC4090" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k">var</span> fileDrop <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">moxie.file.FileDrop</span>(<span class="pl-s"><span class="pl-pds">'</span>drop_zone<span class="pl-pds">'</span></span>), fileList <span class="pl-k">=</span> <span class="pl-smi">moxie</span>.<span class="pl-smi">utils</span>.<span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-s"><span class="pl-pds">'</span>filelist<span class="pl-pds">'</span></span>);</span></span></td>
</tr>
<tr>
<td id="L4091" class="blob-num js-line-number" data-line-number="4091"></td>
<td id="LC4091" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4092" class="blob-num js-line-number" data-line-number="4092"></td>
<td id="LC4092" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">fileDrop</span>.<span class="pl-en">ondrop</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</span></span></td>
</tr>
<tr>
<td id="L4093" class="blob-num js-line-number" data-line-number="4093"></td>
<td id="LC4093" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">moxie</span>.<span class="pl-smi">utils</span>.<span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-c1">this</span>.<span class="pl-smi">files</span>, <span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</span></span></td>
</tr>
<tr>
<td id="L4094" class="blob-num js-line-number" data-line-number="4094"></td>
<td id="LC4094" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">fileList</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span><div><span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">file</span>.<span class="pl-c1">name</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span></div><span class="pl-pds">'</span></span>;</span></span></td>
</tr>
<tr>
<td id="L4095" class="blob-num js-line-number" data-line-number="4095"></td>
<td id="LC4095" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">});</span></span></td>
</tr>
<tr>
<td id="L4096" class="blob-num js-line-number" data-line-number="4096"></td>
<td id="LC4096" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">};</span></span></td>
</tr>
<tr>
<td id="L4097" class="blob-num js-line-number" data-line-number="4097"></td>
<td id="LC4097" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4098" class="blob-num js-line-number" data-line-number="4098"></td>
<td id="LC4098" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">fileDrop</span>.<span class="pl-en">init</span>();</span></span></td>
</tr>
<tr>
<td id="L4099" class="blob-num js-line-number" data-line-number="4099"></td>
<td id="LC4099" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k"><</span><span class="pl-k">/</span>script<span class="pl-k">></span></span></span></td>
</tr>
<tr>
<td id="L4100" class="blob-num js-line-number" data-line-number="4100"></td>
<td id="LC4100" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4101" class="blob-num js-line-number" data-line-number="4101"></td>
<td id="LC4101" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/file/FileDrop</span></td>
</tr>
<tr>
<td id="L4102" class="blob-num js-line-number" data-line-number="4102"></td>
<td id="LC4102" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L4103" class="blob-num js-line-number" data-line-number="4103"></td>
<td id="LC4103" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">EventTarget</span></span></td>
</tr>
<tr>
<td id="L4104" class="blob-num js-line-number" data-line-number="4104"></td>
<td id="LC4104" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@uses</span> <span class="pl-en">RuntimeClient</span></span></td>
</tr>
<tr>
<td id="L4105" class="blob-num js-line-number" data-line-number="4105"></td>
<td id="LC4105" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object|String}</span> <span class="pl-smi">options</span> If options has typeof string, argument is considered as options.drop_zone</span></td>
</tr>
<tr>
<td id="L4106" class="blob-num js-line-number" data-line-number="4106"></td>
<td id="LC4106" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|DOMElement}</span> <span class="pl-smi">options.drop_zone</span> DOM Element to turn into a drop zone</span></td>
</tr>
<tr>
<td id="L4107" class="blob-num js-line-number" data-line-number="4107"></td>
<td id="LC4107" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Array}</span> <span class="pl-smi">[options.accept]</span> Array of mime types to accept. By default accepts all</span></td>
</tr>
<tr>
<td id="L4108" class="blob-num js-line-number" data-line-number="4108"></td>
<td id="LC4108" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object|String}</span> <span class="pl-smi">[options.required_caps]</span> Set of required capabilities, that chosen runtime must support</span></td>
</tr>
<tr>
<td id="L4109" class="blob-num js-line-number" data-line-number="4109"></td>
<td id="LC4109" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4110" class="blob-num js-line-number" data-line-number="4110"></td>
<td id="LC4110" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dispatches <span class="pl-k">=</span> [</td>
</tr>
<tr>
<td id="L4111" class="blob-num js-line-number" data-line-number="4111"></td>
<td id="LC4111" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4112" class="blob-num js-line-number" data-line-number="4112"></td>
<td id="LC4112" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when runtime is connected and drop zone is ready to accept files.</span></td>
</tr>
<tr>
<td id="L4113" class="blob-num js-line-number" data-line-number="4113"></td>
<td id="LC4113" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4114" class="blob-num js-line-number" data-line-number="4114"></td>
<td id="LC4114" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">ready</span></span></td>
</tr>
<tr>
<td id="L4115" class="blob-num js-line-number" data-line-number="4115"></td>
<td id="LC4115" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4116" class="blob-num js-line-number" data-line-number="4116"></td>
<td id="LC4116" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4117" class="blob-num js-line-number" data-line-number="4117"></td>
<td id="LC4117" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4118" class="blob-num js-line-number" data-line-number="4118"></td>
<td id="LC4118" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4119" class="blob-num js-line-number" data-line-number="4119"></td>
<td id="LC4119" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4120" class="blob-num js-line-number" data-line-number="4120"></td>
<td id="LC4120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when dragging cursor enters the drop zone.</span></td>
</tr>
<tr>
<td id="L4121" class="blob-num js-line-number" data-line-number="4121"></td>
<td id="LC4121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4122" class="blob-num js-line-number" data-line-number="4122"></td>
<td id="LC4122" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">dragenter</span></span></td>
</tr>
<tr>
<td id="L4123" class="blob-num js-line-number" data-line-number="4123"></td>
<td id="LC4123" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4124" class="blob-num js-line-number" data-line-number="4124"></td>
<td id="LC4124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4125" class="blob-num js-line-number" data-line-number="4125"></td>
<td id="LC4125" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>dragenter<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4126" class="blob-num js-line-number" data-line-number="4126"></td>
<td id="LC4126" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4127" class="blob-num js-line-number" data-line-number="4127"></td>
<td id="LC4127" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4128" class="blob-num js-line-number" data-line-number="4128"></td>
<td id="LC4128" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when dragging cursor leaves the drop zone.</span></td>
</tr>
<tr>
<td id="L4129" class="blob-num js-line-number" data-line-number="4129"></td>
<td id="LC4129" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4130" class="blob-num js-line-number" data-line-number="4130"></td>
<td id="LC4130" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">dragleave</span></span></td>
</tr>
<tr>
<td id="L4131" class="blob-num js-line-number" data-line-number="4131"></td>
<td id="LC4131" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4132" class="blob-num js-line-number" data-line-number="4132"></td>
<td id="LC4132" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4133" class="blob-num js-line-number" data-line-number="4133"></td>
<td id="LC4133" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>dragleave<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4134" class="blob-num js-line-number" data-line-number="4134"></td>
<td id="LC4134" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4135" class="blob-num js-line-number" data-line-number="4135"></td>
<td id="LC4135" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4136" class="blob-num js-line-number" data-line-number="4136"></td>
<td id="LC4136" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when file is dropped onto the drop zone.</span></td>
</tr>
<tr>
<td id="L4137" class="blob-num js-line-number" data-line-number="4137"></td>
<td id="LC4137" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4138" class="blob-num js-line-number" data-line-number="4138"></td>
<td id="LC4138" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">drop</span></span></td>
</tr>
<tr>
<td id="L4139" class="blob-num js-line-number" data-line-number="4139"></td>
<td id="LC4139" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4140" class="blob-num js-line-number" data-line-number="4140"></td>
<td id="LC4140" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4141" class="blob-num js-line-number" data-line-number="4141"></td>
<td id="LC4141" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>drop<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4142" class="blob-num js-line-number" data-line-number="4142"></td>
<td id="LC4142" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4143" class="blob-num js-line-number" data-line-number="4143"></td>
<td id="LC4143" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4144" class="blob-num js-line-number" data-line-number="4144"></td>
<td id="LC4144" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched if error occurs.</span></td>
</tr>
<tr>
<td id="L4145" class="blob-num js-line-number" data-line-number="4145"></td>
<td id="LC4145" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4146" class="blob-num js-line-number" data-line-number="4146"></td>
<td id="LC4146" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">error</span></span></td>
</tr>
<tr>
<td id="L4147" class="blob-num js-line-number" data-line-number="4147"></td>
<td id="LC4147" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4148" class="blob-num js-line-number" data-line-number="4148"></td>
<td id="LC4148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4149" class="blob-num js-line-number" data-line-number="4149"></td>
<td id="LC4149" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4150" class="blob-num js-line-number" data-line-number="4150"></td>
<td id="LC4150" class="blob-code blob-code-inner js-file-line"> ];</td>
</tr>
<tr>
<td id="L4151" class="blob-num js-line-number" data-line-number="4151"></td>
<td id="LC4151" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4152" class="blob-num js-line-number" data-line-number="4152"></td>
<td id="LC4152" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileDrop</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L4153" class="blob-num js-line-number" data-line-number="4153"></td>
<td id="LC4153" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span>) {</td>
</tr>
<tr>
<td id="L4154" class="blob-num js-line-number" data-line-number="4154"></td>
<td id="LC4154" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span>Instantiating FileDrop...<span class="pl-pds">"</span></span>); </td>
</tr>
<tr>
<td id="L4155" class="blob-num js-line-number" data-line-number="4155"></td>
<td id="LC4155" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4156" class="blob-num js-line-number" data-line-number="4156"></td>
<td id="LC4156" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4157" class="blob-num js-line-number" data-line-number="4157"></td>
<td id="LC4157" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>, defaults;</td>
</tr>
<tr>
<td id="L4158" class="blob-num js-line-number" data-line-number="4158"></td>
<td id="LC4158" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4159" class="blob-num js-line-number" data-line-number="4159"></td>
<td id="LC4159" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if flat argument passed it should be drop_zone id</span></td>
</tr>
<tr>
<td id="L4160" class="blob-num js-line-number" data-line-number="4160"></td>
<td id="LC4160" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(options) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L4161" class="blob-num js-line-number" data-line-number="4161"></td>
<td id="LC4161" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> { drop_zone <span class="pl-k">:</span> options };</td>
</tr>
<tr>
<td id="L4162" class="blob-num js-line-number" data-line-number="4162"></td>
<td id="LC4162" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4163" class="blob-num js-line-number" data-line-number="4163"></td>
<td id="LC4163" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4164" class="blob-num js-line-number" data-line-number="4164"></td>
<td id="LC4164" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> figure out the options</span></td>
</tr>
<tr>
<td id="L4165" class="blob-num js-line-number" data-line-number="4165"></td>
<td id="LC4165" class="blob-code blob-code-inner js-file-line"> defaults <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L4166" class="blob-num js-line-number" data-line-number="4166"></td>
<td id="LC4166" class="blob-code blob-code-inner js-file-line"> accept<span class="pl-k">:</span> [{</td>
</tr>
<tr>
<td id="L4167" class="blob-num js-line-number" data-line-number="4167"></td>
<td id="LC4167" class="blob-code blob-code-inner js-file-line"> title<span class="pl-k">:</span> <span class="pl-smi">I18n</span>.<span class="pl-en">translate</span>(<span class="pl-s"><span class="pl-pds">'</span>All Files<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L4168" class="blob-num js-line-number" data-line-number="4168"></td>
<td id="LC4168" class="blob-code blob-code-inner js-file-line"> extensions<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4169" class="blob-num js-line-number" data-line-number="4169"></td>
<td id="LC4169" class="blob-code blob-code-inner js-file-line"> }],</td>
</tr>
<tr>
<td id="L4170" class="blob-num js-line-number" data-line-number="4170"></td>
<td id="LC4170" class="blob-code blob-code-inner js-file-line"> required_caps<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L4171" class="blob-num js-line-number" data-line-number="4171"></td>
<td id="LC4171" class="blob-code blob-code-inner js-file-line"> drag_and_drop<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L4172" class="blob-num js-line-number" data-line-number="4172"></td>
<td id="LC4172" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4173" class="blob-num js-line-number" data-line-number="4173"></td>
<td id="LC4173" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4174" class="blob-num js-line-number" data-line-number="4174"></td>
<td id="LC4174" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4175" class="blob-num js-line-number" data-line-number="4175"></td>
<td id="LC4175" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> <span class="pl-k">typeof</span>(options) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span> <span class="pl-k">?</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, defaults, options) <span class="pl-k">:</span> defaults;</td>
</tr>
<tr>
<td id="L4176" class="blob-num js-line-number" data-line-number="4176"></td>
<td id="LC4176" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4177" class="blob-num js-line-number" data-line-number="4177"></td>
<td id="LC4177" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this will help us to find proper default container</span></td>
</tr>
<tr>
<td id="L4178" class="blob-num js-line-number" data-line-number="4178"></td>
<td id="LC4178" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-smi">container</span> <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">drop_zone</span>) <span class="pl-k">||</span> <span class="pl-c1">document</span>.<span class="pl-c1">body</span>;</td>
</tr>
<tr>
<td id="L4179" class="blob-num js-line-number" data-line-number="4179"></td>
<td id="LC4179" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4180" class="blob-num js-line-number" data-line-number="4180"></td>
<td id="LC4180" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make container relative, if it is not</span></td>
</tr>
<tr>
<td id="L4181" class="blob-num js-line-number" data-line-number="4181"></td>
<td id="LC4181" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(<span class="pl-smi">options</span>.<span class="pl-smi">container</span>, <span class="pl-s"><span class="pl-pds">'</span>position<span class="pl-pds">'</span></span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>static<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L4182" class="blob-num js-line-number" data-line-number="4182"></td>
<td id="LC4182" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-smi">container</span>.<span class="pl-c1">style</span>.<span class="pl-smi">position</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>relative<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L4183" class="blob-num js-line-number" data-line-number="4183"></td>
<td id="LC4183" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4184" class="blob-num js-line-number" data-line-number="4184"></td>
<td id="LC4184" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4185" class="blob-num js-line-number" data-line-number="4185"></td>
<td id="LC4185" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> normalize accept option (could be list of mime types or array of title/extensions pairs)</span></td>
</tr>
<tr>
<td id="L4186" class="blob-num js-line-number" data-line-number="4186"></td>
<td id="LC4186" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-smi">options</span>.<span class="pl-c1">accept</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L4187" class="blob-num js-line-number" data-line-number="4187"></td>
<td id="LC4187" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-c1">accept</span> <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">mimes2extList</span>(<span class="pl-smi">options</span>.<span class="pl-c1">accept</span>);</td>
</tr>
<tr>
<td id="L4188" class="blob-num js-line-number" data-line-number="4188"></td>
<td id="LC4188" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4189" class="blob-num js-line-number" data-line-number="4189"></td>
<td id="LC4189" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4190" class="blob-num js-line-number" data-line-number="4190"></td>
<td id="LC4190" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(self);</td>
</tr>
<tr>
<td id="L4191" class="blob-num js-line-number" data-line-number="4191"></td>
<td id="LC4191" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4192" class="blob-num js-line-number" data-line-number="4192"></td>
<td id="LC4192" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(self, {</td>
</tr>
<tr>
<td id="L4193" class="blob-num js-line-number" data-line-number="4193"></td>
<td id="LC4193" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L4194" class="blob-num js-line-number" data-line-number="4194"></td>
<td id="LC4194" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4195" class="blob-num js-line-number" data-line-number="4195"></td>
<td id="LC4195" class="blob-code blob-code-inner js-file-line"> ruid<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L4196" class="blob-num js-line-number" data-line-number="4196"></td>
<td id="LC4196" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4197" class="blob-num js-line-number" data-line-number="4197"></td>
<td id="LC4197" class="blob-code blob-code-inner js-file-line"> files<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L4198" class="blob-num js-line-number" data-line-number="4198"></td>
<td id="LC4198" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4199" class="blob-num js-line-number" data-line-number="4199"></td>
<td id="LC4199" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>() { </td>
</tr>
<tr>
<td id="L4200" class="blob-num js-line-number" data-line-number="4200"></td>
<td id="LC4200" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeInit<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L4201" class="blob-num js-line-number" data-line-number="4201"></td>
<td id="LC4201" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L4202" class="blob-num js-line-number" data-line-number="4202"></td>
<td id="LC4202" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">'</span>FileDrop<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>init<span class="pl-pds">'</span></span>, options);</td>
</tr>
<tr>
<td id="L4203" class="blob-num js-line-number" data-line-number="4203"></td>
<td id="LC4203" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4204" class="blob-num js-line-number" data-line-number="4204"></td>
<td id="LC4204" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4205" class="blob-num js-line-number" data-line-number="4205"></td>
<td id="LC4205" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4206" class="blob-num js-line-number" data-line-number="4206"></td>
<td id="LC4206" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> runtime needs: options.required_features, options.runtime_order and options.container</span></td>
</tr>
<tr>
<td id="L4207" class="blob-num js-line-number" data-line-number="4207"></td>
<td id="LC4207" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">connectRuntime</span>(options); <span class="pl-c"><span class="pl-c">//</span> throws RuntimeError</span></td>
</tr>
<tr>
<td id="L4208" class="blob-num js-line-number" data-line-number="4208"></td>
<td id="LC4208" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4209" class="blob-num js-line-number" data-line-number="4209"></td>
<td id="LC4209" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4210" class="blob-num js-line-number" data-line-number="4210"></td>
<td id="LC4210" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4211" class="blob-num js-line-number" data-line-number="4211"></td>
<td id="LC4211" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L4212" class="blob-num js-line-number" data-line-number="4212"></td>
<td id="LC4212" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (runtime) {</td>
</tr>
<tr>
<td id="L4213" class="blob-num js-line-number" data-line-number="4213"></td>
<td id="LC4213" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileDrop<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>destroy<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4214" class="blob-num js-line-number" data-line-number="4214"></td>
<td id="LC4214" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L4215" class="blob-num js-line-number" data-line-number="4215"></td>
<td id="LC4215" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4216" class="blob-num js-line-number" data-line-number="4216"></td>
<td id="LC4216" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L4217" class="blob-num js-line-number" data-line-number="4217"></td>
<td id="LC4217" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4218" class="blob-num js-line-number" data-line-number="4218"></td>
<td id="LC4218" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L4219" class="blob-num js-line-number" data-line-number="4219"></td>
<td id="LC4219" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4220" class="blob-num js-line-number" data-line-number="4220"></td>
<td id="LC4220" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4221" class="blob-num js-line-number" data-line-number="4221"></td>
<td id="LC4221" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4222" class="blob-num js-line-number" data-line-number="4222"></td>
<td id="LC4222" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">handleEventProps</span>(dispatches);</td>
</tr>
<tr>
<td id="L4223" class="blob-num js-line-number" data-line-number="4223"></td>
<td id="LC4223" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4224" class="blob-num js-line-number" data-line-number="4224"></td>
<td id="LC4224" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4225" class="blob-num js-line-number" data-line-number="4225"></td>
<td id="LC4225" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">FileDrop</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L4226" class="blob-num js-line-number" data-line-number="4226"></td>
<td id="LC4226" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4227" class="blob-num js-line-number" data-line-number="4227"></td>
<td id="LC4227" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> FileDrop;</td>
</tr>
<tr>
<td id="L4228" class="blob-num js-line-number" data-line-number="4228"></td>
<td id="LC4228" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4229" class="blob-num js-line-number" data-line-number="4229"></td>
<td id="LC4229" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4230" class="blob-num js-line-number" data-line-number="4230"></td>
<td id="LC4230" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/file/FileReader.js</span></td>
</tr>
<tr>
<td id="L4231" class="blob-num js-line-number" data-line-number="4231"></td>
<td id="LC4231" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4232" class="blob-num js-line-number" data-line-number="4232"></td>
<td id="LC4232" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4233" class="blob-num js-line-number" data-line-number="4233"></td>
<td id="LC4233" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReader.js</span></td>
</tr>
<tr>
<td id="L4234" class="blob-num js-line-number" data-line-number="4234"></td>
<td id="LC4234" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4235" class="blob-num js-line-number" data-line-number="4235"></td>
<td id="LC4235" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4236" class="blob-num js-line-number" data-line-number="4236"></td>
<td id="LC4236" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4237" class="blob-num js-line-number" data-line-number="4237"></td>
<td id="LC4237" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4238" class="blob-num js-line-number" data-line-number="4238"></td>
<td id="LC4238" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4239" class="blob-num js-line-number" data-line-number="4239"></td>
<td id="LC4239" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4240" class="blob-num js-line-number" data-line-number="4240"></td>
<td id="LC4240" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4241" class="blob-num js-line-number" data-line-number="4241"></td>
<td id="LC4241" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4242" class="blob-num js-line-number" data-line-number="4242"></td>
<td id="LC4242" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/file/FileReader<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L4243" class="blob-num js-line-number" data-line-number="4243"></td>
<td id="LC4243" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4244" class="blob-num js-line-number" data-line-number="4244"></td>
<td id="LC4244" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Encode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4245" class="blob-num js-line-number" data-line-number="4245"></td>
<td id="LC4245" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/Exceptions<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4246" class="blob-num js-line-number" data-line-number="4246"></td>
<td id="LC4246" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/EventTarget<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4247" class="blob-num js-line-number" data-line-number="4247"></td>
<td id="LC4247" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/file/Blob<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4248" class="blob-num js-line-number" data-line-number="4248"></td>
<td id="LC4248" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeClient<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4249" class="blob-num js-line-number" data-line-number="4249"></td>
<td id="LC4249" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Encode</span>, <span class="pl-smi">x</span>, <span class="pl-c1">EventTarget</span>, <span class="pl-c1">Blob</span>, <span class="pl-smi">RuntimeClient</span>) {</td>
</tr>
<tr>
<td id="L4250" class="blob-num js-line-number" data-line-number="4250"></td>
<td id="LC4250" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4251" class="blob-num js-line-number" data-line-number="4251"></td>
<td id="LC4251" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Utility for preloading o.Blob/o.File objects in memory. By design closely follows [W3C FileReader](http://www.w3.org/TR/FileAPI/#dfn-filereader)</span></td>
</tr>
<tr>
<td id="L4252" class="blob-num js-line-number" data-line-number="4252"></td>
<td id="LC4252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> interface. Where possible uses native FileReader, where - not falls back to shims.</span></td>
</tr>
<tr>
<td id="L4253" class="blob-num js-line-number" data-line-number="4253"></td>
<td id="LC4253" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4254" class="blob-num js-line-number" data-line-number="4254"></td>
<td id="LC4254" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/file/FileReader</span></td>
</tr>
<tr>
<td id="L4255" class="blob-num js-line-number" data-line-number="4255"></td>
<td id="LC4255" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span> FileReader</span></td>
</tr>
<tr>
<td id="L4256" class="blob-num js-line-number" data-line-number="4256"></td>
<td id="LC4256" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">EventTarget</span></span></td>
</tr>
<tr>
<td id="L4257" class="blob-num js-line-number" data-line-number="4257"></td>
<td id="LC4257" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@uses</span> <span class="pl-en">RuntimeClient</span></span></td>
</tr>
<tr>
<td id="L4258" class="blob-num js-line-number" data-line-number="4258"></td>
<td id="LC4258" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4259" class="blob-num js-line-number" data-line-number="4259"></td>
<td id="LC4259" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dispatches <span class="pl-k">=</span> [</td>
</tr>
<tr>
<td id="L4260" class="blob-num js-line-number" data-line-number="4260"></td>
<td id="LC4260" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4261" class="blob-num js-line-number" data-line-number="4261"></td>
<td id="LC4261" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L4262" class="blob-num js-line-number" data-line-number="4262"></td>
<td id="LC4262" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when the read starts.</span></td>
</tr>
<tr>
<td id="L4263" class="blob-num js-line-number" data-line-number="4263"></td>
<td id="LC4263" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4264" class="blob-num js-line-number" data-line-number="4264"></td>
<td id="LC4264" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">loadstart</span></span></td>
</tr>
<tr>
<td id="L4265" class="blob-num js-line-number" data-line-number="4265"></td>
<td id="LC4265" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4266" class="blob-num js-line-number" data-line-number="4266"></td>
<td id="LC4266" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4267" class="blob-num js-line-number" data-line-number="4267"></td>
<td id="LC4267" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>loadstart<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4268" class="blob-num js-line-number" data-line-number="4268"></td>
<td id="LC4268" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4269" class="blob-num js-line-number" data-line-number="4269"></td>
<td id="LC4269" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L4270" class="blob-num js-line-number" data-line-number="4270"></td>
<td id="LC4270" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched while reading (and decoding) blob, and reporting partial Blob data (progess.loaded/progress.total).</span></td>
</tr>
<tr>
<td id="L4271" class="blob-num js-line-number" data-line-number="4271"></td>
<td id="LC4271" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4272" class="blob-num js-line-number" data-line-number="4272"></td>
<td id="LC4272" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">progress</span></span></td>
</tr>
<tr>
<td id="L4273" class="blob-num js-line-number" data-line-number="4273"></td>
<td id="LC4273" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4274" class="blob-num js-line-number" data-line-number="4274"></td>
<td id="LC4274" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4275" class="blob-num js-line-number" data-line-number="4275"></td>
<td id="LC4275" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4276" class="blob-num js-line-number" data-line-number="4276"></td>
<td id="LC4276" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4277" class="blob-num js-line-number" data-line-number="4277"></td>
<td id="LC4277" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L4278" class="blob-num js-line-number" data-line-number="4278"></td>
<td id="LC4278" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when the read has successfully completed.</span></td>
</tr>
<tr>
<td id="L4279" class="blob-num js-line-number" data-line-number="4279"></td>
<td id="LC4279" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4280" class="blob-num js-line-number" data-line-number="4280"></td>
<td id="LC4280" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">load</span></span></td>
</tr>
<tr>
<td id="L4281" class="blob-num js-line-number" data-line-number="4281"></td>
<td id="LC4281" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4282" class="blob-num js-line-number" data-line-number="4282"></td>
<td id="LC4282" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4283" class="blob-num js-line-number" data-line-number="4283"></td>
<td id="LC4283" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4284" class="blob-num js-line-number" data-line-number="4284"></td>
<td id="LC4284" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4285" class="blob-num js-line-number" data-line-number="4285"></td>
<td id="LC4285" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L4286" class="blob-num js-line-number" data-line-number="4286"></td>
<td id="LC4286" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when the read has been aborted. For instance, by invoking the abort() method.</span></td>
</tr>
<tr>
<td id="L4287" class="blob-num js-line-number" data-line-number="4287"></td>
<td id="LC4287" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4288" class="blob-num js-line-number" data-line-number="4288"></td>
<td id="LC4288" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">abort</span></span></td>
</tr>
<tr>
<td id="L4289" class="blob-num js-line-number" data-line-number="4289"></td>
<td id="LC4289" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4290" class="blob-num js-line-number" data-line-number="4290"></td>
<td id="LC4290" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4291" class="blob-num js-line-number" data-line-number="4291"></td>
<td id="LC4291" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4292" class="blob-num js-line-number" data-line-number="4292"></td>
<td id="LC4292" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4293" class="blob-num js-line-number" data-line-number="4293"></td>
<td id="LC4293" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L4294" class="blob-num js-line-number" data-line-number="4294"></td>
<td id="LC4294" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when the read has failed.</span></td>
</tr>
<tr>
<td id="L4295" class="blob-num js-line-number" data-line-number="4295"></td>
<td id="LC4295" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4296" class="blob-num js-line-number" data-line-number="4296"></td>
<td id="LC4296" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">error</span></span></td>
</tr>
<tr>
<td id="L4297" class="blob-num js-line-number" data-line-number="4297"></td>
<td id="LC4297" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4298" class="blob-num js-line-number" data-line-number="4298"></td>
<td id="LC4298" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4299" class="blob-num js-line-number" data-line-number="4299"></td>
<td id="LC4299" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, </td>
</tr>
<tr>
<td id="L4300" class="blob-num js-line-number" data-line-number="4300"></td>
<td id="LC4300" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4301" class="blob-num js-line-number" data-line-number="4301"></td>
<td id="LC4301" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span> </span></td>
</tr>
<tr>
<td id="L4302" class="blob-num js-line-number" data-line-number="4302"></td>
<td id="LC4302" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when the request has completed (either in success or failure).</span></td>
</tr>
<tr>
<td id="L4303" class="blob-num js-line-number" data-line-number="4303"></td>
<td id="LC4303" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4304" class="blob-num js-line-number" data-line-number="4304"></td>
<td id="LC4304" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">loadend</span></span></td>
</tr>
<tr>
<td id="L4305" class="blob-num js-line-number" data-line-number="4305"></td>
<td id="LC4305" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L4306" class="blob-num js-line-number" data-line-number="4306"></td>
<td id="LC4306" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4307" class="blob-num js-line-number" data-line-number="4307"></td>
<td id="LC4307" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4308" class="blob-num js-line-number" data-line-number="4308"></td>
<td id="LC4308" class="blob-code blob-code-inner js-file-line"> ];</td>
</tr>
<tr>
<td id="L4309" class="blob-num js-line-number" data-line-number="4309"></td>
<td id="LC4309" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4310" class="blob-num js-line-number" data-line-number="4310"></td>
<td id="LC4310" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileReader</span>() {</td>
</tr>
<tr>
<td id="L4311" class="blob-num js-line-number" data-line-number="4311"></td>
<td id="LC4311" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4312" class="blob-num js-line-number" data-line-number="4312"></td>
<td id="LC4312" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L4313" class="blob-num js-line-number" data-line-number="4313"></td>
<td id="LC4313" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4314" class="blob-num js-line-number" data-line-number="4314"></td>
<td id="LC4314" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L4315" class="blob-num js-line-number" data-line-number="4315"></td>
<td id="LC4315" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4316" class="blob-num js-line-number" data-line-number="4316"></td>
<td id="LC4316" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> UID of the component instance.</span></td>
</tr>
<tr>
<td id="L4317" class="blob-num js-line-number" data-line-number="4317"></td>
<td id="LC4317" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4318" class="blob-num js-line-number" data-line-number="4318"></td>
<td id="LC4318" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L4319" class="blob-num js-line-number" data-line-number="4319"></td>
<td id="LC4319" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L4320" class="blob-num js-line-number" data-line-number="4320"></td>
<td id="LC4320" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4321" class="blob-num js-line-number" data-line-number="4321"></td>
<td id="LC4321" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L4322" class="blob-num js-line-number" data-line-number="4322"></td>
<td id="LC4322" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4323" class="blob-num js-line-number" data-line-number="4323"></td>
<td id="LC4323" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4324" class="blob-num js-line-number" data-line-number="4324"></td>
<td id="LC4324" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Contains current state of FileReader object. Can take values of FileReader.EMPTY, FileReader.LOADING</span></td>
</tr>
<tr>
<td id="L4325" class="blob-num js-line-number" data-line-number="4325"></td>
<td id="LC4325" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and FileReader.DONE.</span></td>
</tr>
<tr>
<td id="L4326" class="blob-num js-line-number" data-line-number="4326"></td>
<td id="LC4326" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4327" class="blob-num js-line-number" data-line-number="4327"></td>
<td id="LC4327" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> readyState</span></td>
</tr>
<tr>
<td id="L4328" class="blob-num js-line-number" data-line-number="4328"></td>
<td id="LC4328" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L4329" class="blob-num js-line-number" data-line-number="4329"></td>
<td id="LC4329" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">FileReader.EMPTY</span></span></td>
</tr>
<tr>
<td id="L4330" class="blob-num js-line-number" data-line-number="4330"></td>
<td id="LC4330" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4331" class="blob-num js-line-number" data-line-number="4331"></td>
<td id="LC4331" class="blob-code blob-code-inner js-file-line"> readyState<span class="pl-k">:</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">EMPTY</span>,</td>
</tr>
<tr>
<td id="L4332" class="blob-num js-line-number" data-line-number="4332"></td>
<td id="LC4332" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4333" class="blob-num js-line-number" data-line-number="4333"></td>
<td id="LC4333" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4334" class="blob-num js-line-number" data-line-number="4334"></td>
<td id="LC4334" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Result of the successful read operation.</span></td>
</tr>
<tr>
<td id="L4335" class="blob-num js-line-number" data-line-number="4335"></td>
<td id="LC4335" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4336" class="blob-num js-line-number" data-line-number="4336"></td>
<td id="LC4336" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> result</span></td>
</tr>
<tr>
<td id="L4337" class="blob-num js-line-number" data-line-number="4337"></td>
<td id="LC4337" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L4338" class="blob-num js-line-number" data-line-number="4338"></td>
<td id="LC4338" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4339" class="blob-num js-line-number" data-line-number="4339"></td>
<td id="LC4339" class="blob-code blob-code-inner js-file-line"> result<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L4340" class="blob-num js-line-number" data-line-number="4340"></td>
<td id="LC4340" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4341" class="blob-num js-line-number" data-line-number="4341"></td>
<td id="LC4341" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4342" class="blob-num js-line-number" data-line-number="4342"></td>
<td id="LC4342" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Stores the error of failed asynchronous read operation.</span></td>
</tr>
<tr>
<td id="L4343" class="blob-num js-line-number" data-line-number="4343"></td>
<td id="LC4343" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4344" class="blob-num js-line-number" data-line-number="4344"></td>
<td id="LC4344" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> error</span></td>
</tr>
<tr>
<td id="L4345" class="blob-num js-line-number" data-line-number="4345"></td>
<td id="LC4345" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{DOMError}</span></span></td>
</tr>
<tr>
<td id="L4346" class="blob-num js-line-number" data-line-number="4346"></td>
<td id="LC4346" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4347" class="blob-num js-line-number" data-line-number="4347"></td>
<td id="LC4347" class="blob-code blob-code-inner js-file-line"> error<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L4348" class="blob-num js-line-number" data-line-number="4348"></td>
<td id="LC4348" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4349" class="blob-num js-line-number" data-line-number="4349"></td>
<td id="LC4349" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4350" class="blob-num js-line-number" data-line-number="4350"></td>
<td id="LC4350" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Initiates reading of File/Blob object contents to binary string.</span></td>
</tr>
<tr>
<td id="L4351" class="blob-num js-line-number" data-line-number="4351"></td>
<td id="LC4351" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4352" class="blob-num js-line-number" data-line-number="4352"></td>
<td id="LC4352" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">readAsBinaryString</span></span></td>
</tr>
<tr>
<td id="L4353" class="blob-num js-line-number" data-line-number="4353"></td>
<td id="LC4353" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Blob|File}</span> <span class="pl-smi">blob</span> Object to preload</span></td>
</tr>
<tr>
<td id="L4354" class="blob-num js-line-number" data-line-number="4354"></td>
<td id="LC4354" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4355" class="blob-num js-line-number" data-line-number="4355"></td>
<td id="LC4355" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readAsBinaryString</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4356" class="blob-num js-line-number" data-line-number="4356"></td>
<td id="LC4356" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_read</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L4357" class="blob-num js-line-number" data-line-number="4357"></td>
<td id="LC4357" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4358" class="blob-num js-line-number" data-line-number="4358"></td>
<td id="LC4358" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4359" class="blob-num js-line-number" data-line-number="4359"></td>
<td id="LC4359" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4360" class="blob-num js-line-number" data-line-number="4360"></td>
<td id="LC4360" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Initiates reading of File/Blob object contents to dataURL string.</span></td>
</tr>
<tr>
<td id="L4361" class="blob-num js-line-number" data-line-number="4361"></td>
<td id="LC4361" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4362" class="blob-num js-line-number" data-line-number="4362"></td>
<td id="LC4362" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">readAsDataURL</span></span></td>
</tr>
<tr>
<td id="L4363" class="blob-num js-line-number" data-line-number="4363"></td>
<td id="LC4363" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Blob|File}</span> <span class="pl-smi">blob</span> Object to preload</span></td>
</tr>
<tr>
<td id="L4364" class="blob-num js-line-number" data-line-number="4364"></td>
<td id="LC4364" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4365" class="blob-num js-line-number" data-line-number="4365"></td>
<td id="LC4365" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readAsDataURL</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4366" class="blob-num js-line-number" data-line-number="4366"></td>
<td id="LC4366" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_read</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L4367" class="blob-num js-line-number" data-line-number="4367"></td>
<td id="LC4367" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4368" class="blob-num js-line-number" data-line-number="4368"></td>
<td id="LC4368" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4369" class="blob-num js-line-number" data-line-number="4369"></td>
<td id="LC4369" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4370" class="blob-num js-line-number" data-line-number="4370"></td>
<td id="LC4370" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Initiates reading of File/Blob object contents to string.</span></td>
</tr>
<tr>
<td id="L4371" class="blob-num js-line-number" data-line-number="4371"></td>
<td id="LC4371" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4372" class="blob-num js-line-number" data-line-number="4372"></td>
<td id="LC4372" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">readAsText</span></span></td>
</tr>
<tr>
<td id="L4373" class="blob-num js-line-number" data-line-number="4373"></td>
<td id="LC4373" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Blob|File}</span> <span class="pl-smi">blob</span> Object to preload</span></td>
</tr>
<tr>
<td id="L4374" class="blob-num js-line-number" data-line-number="4374"></td>
<td id="LC4374" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4375" class="blob-num js-line-number" data-line-number="4375"></td>
<td id="LC4375" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readAsText</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4376" class="blob-num js-line-number" data-line-number="4376"></td>
<td id="LC4376" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_read</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>readAsText<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L4377" class="blob-num js-line-number" data-line-number="4377"></td>
<td id="LC4377" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4378" class="blob-num js-line-number" data-line-number="4378"></td>
<td id="LC4378" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4379" class="blob-num js-line-number" data-line-number="4379"></td>
<td id="LC4379" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4380" class="blob-num js-line-number" data-line-number="4380"></td>
<td id="LC4380" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Aborts preloading process.</span></td>
</tr>
<tr>
<td id="L4381" class="blob-num js-line-number" data-line-number="4381"></td>
<td id="LC4381" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4382" class="blob-num js-line-number" data-line-number="4382"></td>
<td id="LC4382" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">abort</span></span></td>
</tr>
<tr>
<td id="L4383" class="blob-num js-line-number" data-line-number="4383"></td>
<td id="LC4383" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4384" class="blob-num js-line-number" data-line-number="4384"></td>
<td id="LC4384" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4385" class="blob-num js-line-number" data-line-number="4385"></td>
<td id="LC4385" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L4386" class="blob-num js-line-number" data-line-number="4386"></td>
<td id="LC4386" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4387" class="blob-num js-line-number" data-line-number="4387"></td>
<td id="LC4387" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-c1">this</span>.<span class="pl-c1">readyState</span>, [<span class="pl-c1">FileReader</span>.<span class="pl-c1">EMPTY</span>, <span class="pl-c1">FileReader</span>.<span class="pl-c1">DONE</span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L4388" class="blob-num js-line-number" data-line-number="4388"></td>
<td id="LC4388" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L4389" class="blob-num js-line-number" data-line-number="4389"></td>
<td id="LC4389" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">===</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">LOADING</span>) {</td>
</tr>
<tr>
<td id="L4390" class="blob-num js-line-number" data-line-number="4390"></td>
<td id="LC4390" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">DONE</span>;</td>
</tr>
<tr>
<td id="L4391" class="blob-num js-line-number" data-line-number="4391"></td>
<td id="LC4391" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4392" class="blob-num js-line-number" data-line-number="4392"></td>
<td id="LC4392" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4393" class="blob-num js-line-number" data-line-number="4393"></td>
<td id="LC4393" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>FileReader<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4394" class="blob-num js-line-number" data-line-number="4394"></td>
<td id="LC4394" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4395" class="blob-num js-line-number" data-line-number="4395"></td>
<td id="LC4395" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4396" class="blob-num js-line-number" data-line-number="4396"></td>
<td id="LC4396" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4397" class="blob-num js-line-number" data-line-number="4397"></td>
<td id="LC4397" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4398" class="blob-num js-line-number" data-line-number="4398"></td>
<td id="LC4398" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4399" class="blob-num js-line-number" data-line-number="4399"></td>
<td id="LC4399" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4400" class="blob-num js-line-number" data-line-number="4400"></td>
<td id="LC4400" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Destroy component and release resources.</span></td>
</tr>
<tr>
<td id="L4401" class="blob-num js-line-number" data-line-number="4401"></td>
<td id="LC4401" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4402" class="blob-num js-line-number" data-line-number="4402"></td>
<td id="LC4402" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">destroy</span></span></td>
</tr>
<tr>
<td id="L4403" class="blob-num js-line-number" data-line-number="4403"></td>
<td id="LC4403" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4404" class="blob-num js-line-number" data-line-number="4404"></td>
<td id="LC4404" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4405" class="blob-num js-line-number" data-line-number="4405"></td>
<td id="LC4405" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">abort</span>();</td>
</tr>
<tr>
<td id="L4406" class="blob-num js-line-number" data-line-number="4406"></td>
<td id="LC4406" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>FileReader<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>destroy<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4407" class="blob-num js-line-number" data-line-number="4407"></td>
<td id="LC4407" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L4408" class="blob-num js-line-number" data-line-number="4408"></td>
<td id="LC4408" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L4409" class="blob-num js-line-number" data-line-number="4409"></td>
<td id="LC4409" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4410" class="blob-num js-line-number" data-line-number="4410"></td>
<td id="LC4410" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4411" class="blob-num js-line-number" data-line-number="4411"></td>
<td id="LC4411" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4412" class="blob-num js-line-number" data-line-number="4412"></td>
<td id="LC4412" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> uid must already be assigned</span></td>
</tr>
<tr>
<td id="L4413" class="blob-num js-line-number" data-line-number="4413"></td>
<td id="LC4413" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">handleEventProps</span>(dispatches);</td>
</tr>
<tr>
<td id="L4414" class="blob-num js-line-number" data-line-number="4414"></td>
<td id="LC4414" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4415" class="blob-num js-line-number" data-line-number="4415"></td>
<td id="LC4415" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Error<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">err</span>) {</td>
</tr>
<tr>
<td id="L4416" class="blob-num js-line-number" data-line-number="4416"></td>
<td id="LC4416" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">DONE</span>;</td>
</tr>
<tr>
<td id="L4417" class="blob-num js-line-number" data-line-number="4417"></td>
<td id="LC4417" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">error</span> <span class="pl-k">=</span> err;</td>
</tr>
<tr>
<td id="L4418" class="blob-num js-line-number" data-line-number="4418"></td>
<td id="LC4418" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L4419" class="blob-num js-line-number" data-line-number="4419"></td>
<td id="LC4419" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4420" class="blob-num js-line-number" data-line-number="4420"></td>
<td id="LC4420" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Load<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L4421" class="blob-num js-line-number" data-line-number="4421"></td>
<td id="LC4421" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">DONE</span>;</td>
</tr>
<tr>
<td id="L4422" class="blob-num js-line-number" data-line-number="4422"></td>
<td id="LC4422" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L4423" class="blob-num js-line-number" data-line-number="4423"></td>
<td id="LC4423" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4424" class="blob-num js-line-number" data-line-number="4424"></td>
<td id="LC4424" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4425" class="blob-num js-line-number" data-line-number="4425"></td>
<td id="LC4425" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_read</span>(<span class="pl-smi">op</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4426" class="blob-num js-line-number" data-line-number="4426"></td>
<td id="LC4426" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>; </td>
</tr>
<tr>
<td id="L4427" class="blob-num js-line-number" data-line-number="4427"></td>
<td id="LC4427" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4428" class="blob-num js-line-number" data-line-number="4428"></td>
<td id="LC4428" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadstart<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4429" class="blob-num js-line-number" data-line-number="4429"></td>
<td id="LC4429" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4430" class="blob-num js-line-number" data-line-number="4430"></td>
<td id="LC4430" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">===</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">LOADING</span>) {</td>
</tr>
<tr>
<td id="L4431" class="blob-num js-line-number" data-line-number="4431"></td>
<td id="LC4431" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>));</td>
</tr>
<tr>
<td id="L4432" class="blob-num js-line-number" data-line-number="4432"></td>
<td id="LC4432" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4433" class="blob-num js-line-number" data-line-number="4433"></td>
<td id="LC4433" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L4434" class="blob-num js-line-number" data-line-number="4434"></td>
<td id="LC4434" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4435" class="blob-num js-line-number" data-line-number="4435"></td>
<td id="LC4435" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4436" class="blob-num js-line-number" data-line-number="4436"></td>
<td id="LC4436" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if source is not o.Blob/o.File</span></td>
</tr>
<tr>
<td id="L4437" class="blob-num js-line-number" data-line-number="4437"></td>
<td id="LC4437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>(blob <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>)) {</td>
</tr>
<tr>
<td id="L4438" class="blob-num js-line-number" data-line-number="4438"></td>
<td id="LC4438" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">NOT_FOUND_ERR</span>));</td>
</tr>
<tr>
<td id="L4439" class="blob-num js-line-number" data-line-number="4439"></td>
<td id="LC4439" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4440" class="blob-num js-line-number" data-line-number="4440"></td>
<td id="LC4440" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L4441" class="blob-num js-line-number" data-line-number="4441"></td>
<td id="LC4441" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4442" class="blob-num js-line-number" data-line-number="4442"></td>
<td id="LC4442" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4443" class="blob-num js-line-number" data-line-number="4443"></td>
<td id="LC4443" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L4444" class="blob-num js-line-number" data-line-number="4444"></td>
<td id="LC4444" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">LOADING</span>;</td>
</tr>
<tr>
<td id="L4445" class="blob-num js-line-number" data-line-number="4445"></td>
<td id="LC4445" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4446" class="blob-num js-line-number" data-line-number="4446"></td>
<td id="LC4446" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L4447" class="blob-num js-line-number" data-line-number="4447"></td>
<td id="LC4447" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> src <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>();</td>
</tr>
<tr>
<td id="L4448" class="blob-num js-line-number" data-line-number="4448"></td>
<td id="LC4448" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (op) {</td>
</tr>
<tr>
<td id="L4449" class="blob-num js-line-number" data-line-number="4449"></td>
<td id="LC4449" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsText<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4450" class="blob-num js-line-number" data-line-number="4450"></td>
<td id="LC4450" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4451" class="blob-num js-line-number" data-line-number="4451"></td>
<td id="LC4451" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> src;</td>
</tr>
<tr>
<td id="L4452" class="blob-num js-line-number" data-line-number="4452"></td>
<td id="LC4452" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L4453" class="blob-num js-line-number" data-line-number="4453"></td>
<td id="LC4453" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4454" class="blob-num js-line-number" data-line-number="4454"></td>
<td id="LC4454" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">blob</span>.<span class="pl-c1">type</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">btoa</span>(src);</td>
</tr>
<tr>
<td id="L4455" class="blob-num js-line-number" data-line-number="4455"></td>
<td id="LC4455" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L4456" class="blob-num js-line-number" data-line-number="4456"></td>
<td id="LC4456" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4457" class="blob-num js-line-number" data-line-number="4457"></td>
<td id="LC4457" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>.<span class="pl-c1">DONE</span>;</td>
</tr>
<tr>
<td id="L4458" class="blob-num js-line-number" data-line-number="4458"></td>
<td id="LC4458" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4459" class="blob-num js-line-number" data-line-number="4459"></td>
<td id="LC4459" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4460" class="blob-num js-line-number" data-line-number="4460"></td>
<td id="LC4460" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L4461" class="blob-num js-line-number" data-line-number="4461"></td>
<td id="LC4461" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-smi">blob</span>.<span class="pl-smi">ruid</span>);</td>
</tr>
<tr>
<td id="L4462" class="blob-num js-line-number" data-line-number="4462"></td>
<td id="LC4462" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>FileReader<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>read<span class="pl-pds">'</span></span>, op, blob);</td>
</tr>
<tr>
<td id="L4463" class="blob-num js-line-number" data-line-number="4463"></td>
<td id="LC4463" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4464" class="blob-num js-line-number" data-line-number="4464"></td>
<td id="LC4464" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4465" class="blob-num js-line-number" data-line-number="4465"></td>
<td id="LC4465" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4466" class="blob-num js-line-number" data-line-number="4466"></td>
<td id="LC4466" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4467" class="blob-num js-line-number" data-line-number="4467"></td>
<td id="LC4467" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4468" class="blob-num js-line-number" data-line-number="4468"></td>
<td id="LC4468" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Initial FileReader state</span></td>
</tr>
<tr>
<td id="L4469" class="blob-num js-line-number" data-line-number="4469"></td>
<td id="LC4469" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4470" class="blob-num js-line-number" data-line-number="4470"></td>
<td id="LC4470" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> EMPTY</span></td>
</tr>
<tr>
<td id="L4471" class="blob-num js-line-number" data-line-number="4471"></td>
<td id="LC4471" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L4472" class="blob-num js-line-number" data-line-number="4472"></td>
<td id="LC4472" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@final</span></span></td>
</tr>
<tr>
<td id="L4473" class="blob-num js-line-number" data-line-number="4473"></td>
<td id="LC4473" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4474" class="blob-num js-line-number" data-line-number="4474"></td>
<td id="LC4474" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L4475" class="blob-num js-line-number" data-line-number="4475"></td>
<td id="LC4475" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4476" class="blob-num js-line-number" data-line-number="4476"></td>
<td id="LC4476" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FileReader</span>.<span class="pl-c1">EMPTY</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L4477" class="blob-num js-line-number" data-line-number="4477"></td>
<td id="LC4477" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4478" class="blob-num js-line-number" data-line-number="4478"></td>
<td id="LC4478" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4479" class="blob-num js-line-number" data-line-number="4479"></td>
<td id="LC4479" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> FileReader switches to this state when it is preloading the source</span></td>
</tr>
<tr>
<td id="L4480" class="blob-num js-line-number" data-line-number="4480"></td>
<td id="LC4480" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4481" class="blob-num js-line-number" data-line-number="4481"></td>
<td id="LC4481" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> LOADING</span></td>
</tr>
<tr>
<td id="L4482" class="blob-num js-line-number" data-line-number="4482"></td>
<td id="LC4482" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L4483" class="blob-num js-line-number" data-line-number="4483"></td>
<td id="LC4483" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@final</span></span></td>
</tr>
<tr>
<td id="L4484" class="blob-num js-line-number" data-line-number="4484"></td>
<td id="LC4484" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4485" class="blob-num js-line-number" data-line-number="4485"></td>
<td id="LC4485" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">1</span></span></td>
</tr>
<tr>
<td id="L4486" class="blob-num js-line-number" data-line-number="4486"></td>
<td id="LC4486" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4487" class="blob-num js-line-number" data-line-number="4487"></td>
<td id="LC4487" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FileReader</span>.<span class="pl-c1">LOADING</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L4488" class="blob-num js-line-number" data-line-number="4488"></td>
<td id="LC4488" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4489" class="blob-num js-line-number" data-line-number="4489"></td>
<td id="LC4489" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4490" class="blob-num js-line-number" data-line-number="4490"></td>
<td id="LC4490" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Preloading is complete, this is a final state</span></td>
</tr>
<tr>
<td id="L4491" class="blob-num js-line-number" data-line-number="4491"></td>
<td id="LC4491" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4492" class="blob-num js-line-number" data-line-number="4492"></td>
<td id="LC4492" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> DONE</span></td>
</tr>
<tr>
<td id="L4493" class="blob-num js-line-number" data-line-number="4493"></td>
<td id="LC4493" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L4494" class="blob-num js-line-number" data-line-number="4494"></td>
<td id="LC4494" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@final</span></span></td>
</tr>
<tr>
<td id="L4495" class="blob-num js-line-number" data-line-number="4495"></td>
<td id="LC4495" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4496" class="blob-num js-line-number" data-line-number="4496"></td>
<td id="LC4496" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">2</span></span></td>
</tr>
<tr>
<td id="L4497" class="blob-num js-line-number" data-line-number="4497"></td>
<td id="LC4497" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4498" class="blob-num js-line-number" data-line-number="4498"></td>
<td id="LC4498" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FileReader</span>.<span class="pl-c1">DONE</span> <span class="pl-k">=</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L4499" class="blob-num js-line-number" data-line-number="4499"></td>
<td id="LC4499" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4500" class="blob-num js-line-number" data-line-number="4500"></td>
<td id="LC4500" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">FileReader</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L4501" class="blob-num js-line-number" data-line-number="4501"></td>
<td id="LC4501" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4502" class="blob-num js-line-number" data-line-number="4502"></td>
<td id="LC4502" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">FileReader</span>;</td>
</tr>
<tr>
<td id="L4503" class="blob-num js-line-number" data-line-number="4503"></td>
<td id="LC4503" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4504" class="blob-num js-line-number" data-line-number="4504"></td>
<td id="LC4504" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4505" class="blob-num js-line-number" data-line-number="4505"></td>
<td id="LC4505" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Url.js</span></td>
</tr>
<tr>
<td id="L4506" class="blob-num js-line-number" data-line-number="4506"></td>
<td id="LC4506" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4507" class="blob-num js-line-number" data-line-number="4507"></td>
<td id="LC4507" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4508" class="blob-num js-line-number" data-line-number="4508"></td>
<td id="LC4508" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Url.js</span></td>
</tr>
<tr>
<td id="L4509" class="blob-num js-line-number" data-line-number="4509"></td>
<td id="LC4509" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4510" class="blob-num js-line-number" data-line-number="4510"></td>
<td id="LC4510" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4511" class="blob-num js-line-number" data-line-number="4511"></td>
<td id="LC4511" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4512" class="blob-num js-line-number" data-line-number="4512"></td>
<td id="LC4512" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4513" class="blob-num js-line-number" data-line-number="4513"></td>
<td id="LC4513" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4514" class="blob-num js-line-number" data-line-number="4514"></td>
<td id="LC4514" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4515" class="blob-num js-line-number" data-line-number="4515"></td>
<td id="LC4515" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4516" class="blob-num js-line-number" data-line-number="4516"></td>
<td id="LC4516" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4517" class="blob-num js-line-number" data-line-number="4517"></td>
<td id="LC4517" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4518" class="blob-num js-line-number" data-line-number="4518"></td>
<td id="LC4518" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Url</span></td>
</tr>
<tr>
<td id="L4519" class="blob-num js-line-number" data-line-number="4519"></td>
<td id="LC4519" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L4520" class="blob-num js-line-number" data-line-number="4520"></td>
<td id="LC4520" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4521" class="blob-num js-line-number" data-line-number="4521"></td>
<td id="LC4521" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4522" class="blob-num js-line-number" data-line-number="4522"></td>
<td id="LC4522" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4523" class="blob-num js-line-number" data-line-number="4523"></td>
<td id="LC4523" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Url<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L4524" class="blob-num js-line-number" data-line-number="4524"></td>
<td id="LC4524" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4525" class="blob-num js-line-number" data-line-number="4525"></td>
<td id="LC4525" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L4526" class="blob-num js-line-number" data-line-number="4526"></td>
<td id="LC4526" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4527" class="blob-num js-line-number" data-line-number="4527"></td>
<td id="LC4527" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Parse url into separate components and fill in absent parts with parts from current url,</span></td>
</tr>
<tr>
<td id="L4528" class="blob-num js-line-number" data-line-number="4528"></td>
<td id="LC4528" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> based on https://raw.github.com/kvz/phpjs/master/functions/url/parse_url.js</span></td>
</tr>
<tr>
<td id="L4529" class="blob-num js-line-number" data-line-number="4529"></td>
<td id="LC4529" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4530" class="blob-num js-line-number" data-line-number="4530"></td>
<td id="LC4530" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">parseUrl</span></span></td>
</tr>
<tr>
<td id="L4531" class="blob-num js-line-number" data-line-number="4531"></td>
<td id="LC4531" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4532" class="blob-num js-line-number" data-line-number="4532"></td>
<td id="LC4532" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">url</span> Url to parse (defaults to empty string if undefined)</span></td>
</tr>
<tr>
<td id="L4533" class="blob-num js-line-number" data-line-number="4533"></td>
<td id="LC4533" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Object}</span> Hash containing extracted uri components</span></td>
</tr>
<tr>
<td id="L4534" class="blob-num js-line-number" data-line-number="4534"></td>
<td id="LC4534" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4535" class="blob-num js-line-number" data-line-number="4535"></td>
<td id="LC4535" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">parseUrl</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">url</span>, <span class="pl-smi">currentUrl</span>) {</td>
</tr>
<tr>
<td id="L4536" class="blob-num js-line-number" data-line-number="4536"></td>
<td id="LC4536" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> key <span class="pl-k">=</span> [<span class="pl-s"><span class="pl-pds">'</span>source<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>scheme<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>authority<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>userInfo<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>user<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>pass<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>host<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>port<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>relative<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>path<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>directory<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>query<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>fragment<span class="pl-pds">'</span></span>]</td>
</tr>
<tr>
<td id="L4537" class="blob-num js-line-number" data-line-number="4537"></td>
<td id="LC4537" class="blob-code blob-code-inner js-file-line"> , i <span class="pl-k">=</span> <span class="pl-smi">key</span>.<span class="pl-c1">length</span></td>
</tr>
<tr>
<td id="L4538" class="blob-num js-line-number" data-line-number="4538"></td>
<td id="LC4538" class="blob-code blob-code-inner js-file-line"> , ports <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L4539" class="blob-num js-line-number" data-line-number="4539"></td>
<td id="LC4539" class="blob-code blob-code-inner js-file-line"> http<span class="pl-k">:</span> <span class="pl-c1">80</span>,</td>
</tr>
<tr>
<td id="L4540" class="blob-num js-line-number" data-line-number="4540"></td>
<td id="LC4540" class="blob-code blob-code-inner js-file-line"> https<span class="pl-k">:</span> <span class="pl-c1">443</span></td>
</tr>
<tr>
<td id="L4541" class="blob-num js-line-number" data-line-number="4541"></td>
<td id="LC4541" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4542" class="blob-num js-line-number" data-line-number="4542"></td>
<td id="LC4542" class="blob-code blob-code-inner js-file-line"> , uri <span class="pl-k">=</span> {}</td>
</tr>
<tr>
<td id="L4543" class="blob-num js-line-number" data-line-number="4543"></td>
<td id="LC4543" class="blob-code blob-code-inner js-file-line"> , regex <span class="pl-k">=</span><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-k">^</span>(?:(<span class="pl-c1">[<span class="pl-k">^</span>:<span class="pl-cce">\/</span>?#]</span><span class="pl-k">+</span>):)<span class="pl-k">?</span>(?:<span class="pl-cce">\/\/</span>()(?:(?:()(?:(<span class="pl-c1">[<span class="pl-k">^</span>:@<span class="pl-cce">\/</span>]</span><span class="pl-k">*</span>):<span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-k">^</span>:@<span class="pl-cce">\/</span>]</span><span class="pl-k">*</span>))<span class="pl-k">?</span>@)<span class="pl-k">?</span>(<span class="pl-cce">\[</span><span class="pl-c1">[<span class="pl-c1">\d</span><span class="pl-c1">a-fA-F</span>:]</span><span class="pl-k">+</span><span class="pl-cce">\]</span><span class="pl-k">|</span><span class="pl-c1">[<span class="pl-k">^</span>:<span class="pl-cce">\/</span>?#]</span><span class="pl-k">*</span>)(?::(<span class="pl-c1">\d</span><span class="pl-k">*</span>))<span class="pl-k">?</span>))<span class="pl-k">?</span>()(?:(()(?:(?:<span class="pl-c1">[<span class="pl-k">^</span>?#<span class="pl-cce">\/</span>]</span><span class="pl-k">*</span><span class="pl-cce">\/</span>)<span class="pl-k">*</span>)()(?:<span class="pl-c1">[<span class="pl-k">^</span>?#]</span><span class="pl-k">*</span>))(?:<span class="pl-cce">\\</span><span class="pl-k">?</span>(<span class="pl-c1">[<span class="pl-k">^</span>#]</span><span class="pl-k">*</span>))<span class="pl-k">?</span>(?:#(<span class="pl-c1">.</span><span class="pl-k">*</span>))<span class="pl-k">?</span>)<span class="pl-pds">/</span></span></td>
</tr>
<tr>
<td id="L4544" class="blob-num js-line-number" data-line-number="4544"></td>
<td id="LC4544" class="blob-code blob-code-inner js-file-line"> , m <span class="pl-k">=</span> <span class="pl-smi">regex</span>.<span class="pl-c1">exec</span>(url <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L4545" class="blob-num js-line-number" data-line-number="4545"></td>
<td id="LC4545" class="blob-code blob-code-inner js-file-line"> , isRelative</td>
</tr>
<tr>
<td id="L4546" class="blob-num js-line-number" data-line-number="4546"></td>
<td id="LC4546" class="blob-code blob-code-inner js-file-line"> , isSchemeLess <span class="pl-k">=</span><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-cce">\/\/</span><span class="pl-c1">\w</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(url)</td>
</tr>
<tr>
<td id="L4547" class="blob-num js-line-number" data-line-number="4547"></td>
<td id="LC4547" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L4548" class="blob-num js-line-number" data-line-number="4548"></td>
<td id="LC4548" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4549" class="blob-num js-line-number" data-line-number="4549"></td>
<td id="LC4549" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(currentUrl)) {</td>
</tr>
<tr>
<td id="L4550" class="blob-num js-line-number" data-line-number="4550"></td>
<td id="LC4550" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4551" class="blob-num js-line-number" data-line-number="4551"></td>
<td id="LC4551" class="blob-code blob-code-inner js-file-line"> currentUrl <span class="pl-k">=</span> <span class="pl-en">parseUrl</span>(<span class="pl-c1">document</span>.<span class="pl-c1">location</span>.<span class="pl-c1">href</span>, <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L4552" class="blob-num js-line-number" data-line-number="4552"></td>
<td id="LC4552" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L4553" class="blob-num js-line-number" data-line-number="4553"></td>
<td id="LC4553" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4554" class="blob-num js-line-number" data-line-number="4554"></td>
<td id="LC4554" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4555" class="blob-num js-line-number" data-line-number="4555"></td>
<td id="LC4555" class="blob-code blob-code-inner js-file-line"> currentUrl <span class="pl-k">=</span> <span class="pl-en">parseUrl</span>(currentUrl, <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L4556" class="blob-num js-line-number" data-line-number="4556"></td>
<td id="LC4556" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L4557" class="blob-num js-line-number" data-line-number="4557"></td>
<td id="LC4557" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4558" class="blob-num js-line-number" data-line-number="4558"></td>
<td id="LC4558" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4559" class="blob-num js-line-number" data-line-number="4559"></td>
<td id="LC4559" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (i<span class="pl-k">--</span>) {</td>
</tr>
<tr>
<td id="L4560" class="blob-num js-line-number" data-line-number="4560"></td>
<td id="LC4560" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (m[i]) {</td>
</tr>
<tr>
<td id="L4561" class="blob-num js-line-number" data-line-number="4561"></td>
<td id="LC4561" class="blob-code blob-code-inner js-file-line"> uri[key[i]] <span class="pl-k">=</span> m[i];</td>
</tr>
<tr>
<td id="L4562" class="blob-num js-line-number" data-line-number="4562"></td>
<td id="LC4562" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4563" class="blob-num js-line-number" data-line-number="4563"></td>
<td id="LC4563" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4564" class="blob-num js-line-number" data-line-number="4564"></td>
<td id="LC4564" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4565" class="blob-num js-line-number" data-line-number="4565"></td>
<td id="LC4565" class="blob-code blob-code-inner js-file-line"> isRelative <span class="pl-k">=</span> <span class="pl-k">!</span>isSchemeLess <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">uri</span>.<span class="pl-c1">scheme</span>;</td>
</tr>
<tr>
<td id="L4566" class="blob-num js-line-number" data-line-number="4566"></td>
<td id="LC4566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4567" class="blob-num js-line-number" data-line-number="4567"></td>
<td id="LC4567" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (isSchemeLess <span class="pl-k">||</span> isRelative) {</td>
</tr>
<tr>
<td id="L4568" class="blob-num js-line-number" data-line-number="4568"></td>
<td id="LC4568" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-c1">scheme</span> <span class="pl-k">=</span> <span class="pl-smi">currentUrl</span>.<span class="pl-c1">scheme</span>;</td>
</tr>
<tr>
<td id="L4569" class="blob-num js-line-number" data-line-number="4569"></td>
<td id="LC4569" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4570" class="blob-num js-line-number" data-line-number="4570"></td>
<td id="LC4570" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4571" class="blob-num js-line-number" data-line-number="4571"></td>
<td id="LC4571" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> when url is relative, we set the origin and the path ourselves</span></td>
</tr>
<tr>
<td id="L4572" class="blob-num js-line-number" data-line-number="4572"></td>
<td id="LC4572" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (isRelative) {</td>
</tr>
<tr>
<td id="L4573" class="blob-num js-line-number" data-line-number="4573"></td>
<td id="LC4573" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-c1">host</span> <span class="pl-k">=</span> <span class="pl-smi">currentUrl</span>.<span class="pl-c1">host</span>;</td>
</tr>
<tr>
<td id="L4574" class="blob-num js-line-number" data-line-number="4574"></td>
<td id="LC4574" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-c1">port</span> <span class="pl-k">=</span> <span class="pl-smi">currentUrl</span>.<span class="pl-c1">port</span>;</td>
</tr>
<tr>
<td id="L4575" class="blob-num js-line-number" data-line-number="4575"></td>
<td id="LC4575" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4576" class="blob-num js-line-number" data-line-number="4576"></td>
<td id="LC4576" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> path <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L4577" class="blob-num js-line-number" data-line-number="4577"></td>
<td id="LC4577" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for urls without trailing slash we need to figure out the path</span></td>
</tr>
<tr>
<td id="L4578" class="blob-num js-line-number" data-line-number="4578"></td>
<td id="LC4578" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\/</span>]</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(<span class="pl-smi">uri</span>.<span class="pl-smi">path</span>)) {</td>
</tr>
<tr>
<td id="L4579" class="blob-num js-line-number" data-line-number="4579"></td>
<td id="LC4579" class="blob-code blob-code-inner js-file-line"> path <span class="pl-k">=</span> <span class="pl-smi">currentUrl</span>.<span class="pl-smi">path</span>;</td>
</tr>
<tr>
<td id="L4580" class="blob-num js-line-number" data-line-number="4580"></td>
<td id="LC4580" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if path ends with a filename, strip it</span></td>
</tr>
<tr>
<td id="L4581" class="blob-num js-line-number" data-line-number="4581"></td>
<td id="LC4581" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\/</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\/</span>]</span><span class="pl-k">*</span><span class="pl-cce">\.</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\/</span>]</span><span class="pl-k">*</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(path)) {</td>
</tr>
<tr>
<td id="L4582" class="blob-num js-line-number" data-line-number="4582"></td>
<td id="LC4582" class="blob-code blob-code-inner js-file-line"> path <span class="pl-k">=</span> <span class="pl-smi">path</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\/</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\/</span>]</span><span class="pl-k">+</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4583" class="blob-num js-line-number" data-line-number="4583"></td>
<td id="LC4583" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L4584" class="blob-num js-line-number" data-line-number="4584"></td>
<td id="LC4584" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> avoid double slash at the end (see #127)</span></td>
</tr>
<tr>
<td id="L4585" class="blob-num js-line-number" data-line-number="4585"></td>
<td id="LC4585" class="blob-code blob-code-inner js-file-line"> path <span class="pl-k">=</span> <span class="pl-smi">path</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\/</span><span class="pl-k">?</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4586" class="blob-num js-line-number" data-line-number="4586"></td>
<td id="LC4586" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4587" class="blob-num js-line-number" data-line-number="4587"></td>
<td id="LC4587" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4588" class="blob-num js-line-number" data-line-number="4588"></td>
<td id="LC4588" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-smi">path</span> <span class="pl-k">=</span> path <span class="pl-k">+</span> (<span class="pl-smi">uri</span>.<span class="pl-smi">path</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>); <span class="pl-c"><span class="pl-c">//</span> site may reside at domain.com or domain.com/subdir</span></td>
</tr>
<tr>
<td id="L4589" class="blob-num js-line-number" data-line-number="4589"></td>
<td id="LC4589" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4590" class="blob-num js-line-number" data-line-number="4590"></td>
<td id="LC4590" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4591" class="blob-num js-line-number" data-line-number="4591"></td>
<td id="LC4591" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">uri</span>.<span class="pl-c1">port</span>) {</td>
</tr>
<tr>
<td id="L4592" class="blob-num js-line-number" data-line-number="4592"></td>
<td id="LC4592" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-c1">port</span> <span class="pl-k">=</span> ports[<span class="pl-smi">uri</span>.<span class="pl-c1">scheme</span>] <span class="pl-k">||</span> <span class="pl-c1">80</span>;</td>
</tr>
<tr>
<td id="L4593" class="blob-num js-line-number" data-line-number="4593"></td>
<td id="LC4593" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4594" class="blob-num js-line-number" data-line-number="4594"></td>
<td id="LC4594" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4595" class="blob-num js-line-number" data-line-number="4595"></td>
<td id="LC4595" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-c1">port</span> <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(<span class="pl-smi">uri</span>.<span class="pl-c1">port</span>, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L4596" class="blob-num js-line-number" data-line-number="4596"></td>
<td id="LC4596" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4597" class="blob-num js-line-number" data-line-number="4597"></td>
<td id="LC4597" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">uri</span>.<span class="pl-smi">path</span>) {</td>
</tr>
<tr>
<td id="L4598" class="blob-num js-line-number" data-line-number="4598"></td>
<td id="LC4598" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">uri</span>.<span class="pl-smi">path</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>/<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L4599" class="blob-num js-line-number" data-line-number="4599"></td>
<td id="LC4599" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4600" class="blob-num js-line-number" data-line-number="4600"></td>
<td id="LC4600" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4601" class="blob-num js-line-number" data-line-number="4601"></td>
<td id="LC4601" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> <span class="pl-smi">uri</span>.<span class="pl-c1">source</span>;</td>
</tr>
<tr>
<td id="L4602" class="blob-num js-line-number" data-line-number="4602"></td>
<td id="LC4602" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4603" class="blob-num js-line-number" data-line-number="4603"></td>
<td id="LC4603" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> uri;</td>
</tr>
<tr>
<td id="L4604" class="blob-num js-line-number" data-line-number="4604"></td>
<td id="LC4604" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4605" class="blob-num js-line-number" data-line-number="4605"></td>
<td id="LC4605" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4606" class="blob-num js-line-number" data-line-number="4606"></td>
<td id="LC4606" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4607" class="blob-num js-line-number" data-line-number="4607"></td>
<td id="LC4607" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Resolve url - among other things will turn relative url to absolute</span></td>
</tr>
<tr>
<td id="L4608" class="blob-num js-line-number" data-line-number="4608"></td>
<td id="LC4608" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4609" class="blob-num js-line-number" data-line-number="4609"></td>
<td id="LC4609" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">resolveUrl</span></span></td>
</tr>
<tr>
<td id="L4610" class="blob-num js-line-number" data-line-number="4610"></td>
<td id="LC4610" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4611" class="blob-num js-line-number" data-line-number="4611"></td>
<td id="LC4611" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Object}</span> <span class="pl-smi">url</span> Either absolute or relative, or a result of parseUrl call</span></td>
</tr>
<tr>
<td id="L4612" class="blob-num js-line-number" data-line-number="4612"></td>
<td id="LC4612" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Resolved, absolute url</span></td>
</tr>
<tr>
<td id="L4613" class="blob-num js-line-number" data-line-number="4613"></td>
<td id="LC4613" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4614" class="blob-num js-line-number" data-line-number="4614"></td>
<td id="LC4614" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">resolveUrl</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">url</span>) {</td>
</tr>
<tr>
<td id="L4615" class="blob-num js-line-number" data-line-number="4615"></td>
<td id="LC4615" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ports <span class="pl-k">=</span> { <span class="pl-c"><span class="pl-c">//</span> we ignore default ports</span></td>
</tr>
<tr>
<td id="L4616" class="blob-num js-line-number" data-line-number="4616"></td>
<td id="LC4616" class="blob-code blob-code-inner js-file-line"> http<span class="pl-k">:</span> <span class="pl-c1">80</span>,</td>
</tr>
<tr>
<td id="L4617" class="blob-num js-line-number" data-line-number="4617"></td>
<td id="LC4617" class="blob-code blob-code-inner js-file-line"> https<span class="pl-k">:</span> <span class="pl-c1">443</span></td>
</tr>
<tr>
<td id="L4618" class="blob-num js-line-number" data-line-number="4618"></td>
<td id="LC4618" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4619" class="blob-num js-line-number" data-line-number="4619"></td>
<td id="LC4619" class="blob-code blob-code-inner js-file-line"> , urlp <span class="pl-k">=</span> <span class="pl-k">typeof</span>(url) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span> <span class="pl-k">?</span> url <span class="pl-k">:</span> <span class="pl-en">parseUrl</span>(url);</td>
</tr>
<tr>
<td id="L4620" class="blob-num js-line-number" data-line-number="4620"></td>
<td id="LC4620" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L4621" class="blob-num js-line-number" data-line-number="4621"></td>
<td id="LC4621" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4622" class="blob-num js-line-number" data-line-number="4622"></td>
<td id="LC4622" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">urlp</span>.<span class="pl-c1">scheme</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>://<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">urlp</span>.<span class="pl-c1">host</span> <span class="pl-k">+</span> (<span class="pl-smi">urlp</span>.<span class="pl-c1">port</span> <span class="pl-k">!==</span> ports[<span class="pl-smi">urlp</span>.<span class="pl-c1">scheme</span>] <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">urlp</span>.<span class="pl-c1">port</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-smi">urlp</span>.<span class="pl-smi">path</span> <span class="pl-k">+</span> (<span class="pl-smi">urlp</span>.<span class="pl-smi">query</span> <span class="pl-k">?</span> <span class="pl-smi">urlp</span>.<span class="pl-smi">query</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4623" class="blob-num js-line-number" data-line-number="4623"></td>
<td id="LC4623" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4624" class="blob-num js-line-number" data-line-number="4624"></td>
<td id="LC4624" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4625" class="blob-num js-line-number" data-line-number="4625"></td>
<td id="LC4625" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4626" class="blob-num js-line-number" data-line-number="4626"></td>
<td id="LC4626" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Check if specified url has the same origin as the current document</span></td>
</tr>
<tr>
<td id="L4627" class="blob-num js-line-number" data-line-number="4627"></td>
<td id="LC4627" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4628" class="blob-num js-line-number" data-line-number="4628"></td>
<td id="LC4628" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">hasSameOrigin</span></span></td>
</tr>
<tr>
<td id="L4629" class="blob-num js-line-number" data-line-number="4629"></td>
<td id="LC4629" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L4630" class="blob-num js-line-number" data-line-number="4630"></td>
<td id="LC4630" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Object}</span> <span class="pl-smi">url</span></span></td>
</tr>
<tr>
<td id="L4631" class="blob-num js-line-number" data-line-number="4631"></td>
<td id="LC4631" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span></span></td>
</tr>
<tr>
<td id="L4632" class="blob-num js-line-number" data-line-number="4632"></td>
<td id="LC4632" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4633" class="blob-num js-line-number" data-line-number="4633"></td>
<td id="LC4633" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">hasSameOrigin</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">url</span>) {</td>
</tr>
<tr>
<td id="L4634" class="blob-num js-line-number" data-line-number="4634"></td>
<td id="LC4634" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">origin</span>(<span class="pl-smi">url</span>) {</td>
</tr>
<tr>
<td id="L4635" class="blob-num js-line-number" data-line-number="4635"></td>
<td id="LC4635" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> [<span class="pl-smi">url</span>.<span class="pl-c1">scheme</span>, <span class="pl-smi">url</span>.<span class="pl-c1">host</span>, <span class="pl-smi">url</span>.<span class="pl-c1">port</span>].<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4636" class="blob-num js-line-number" data-line-number="4636"></td>
<td id="LC4636" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4637" class="blob-num js-line-number" data-line-number="4637"></td>
<td id="LC4637" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4638" class="blob-num js-line-number" data-line-number="4638"></td>
<td id="LC4638" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> url <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L4639" class="blob-num js-line-number" data-line-number="4639"></td>
<td id="LC4639" class="blob-code blob-code-inner js-file-line"> url <span class="pl-k">=</span> <span class="pl-en">parseUrl</span>(url);</td>
</tr>
<tr>
<td id="L4640" class="blob-num js-line-number" data-line-number="4640"></td>
<td id="LC4640" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4641" class="blob-num js-line-number" data-line-number="4641"></td>
<td id="LC4641" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4642" class="blob-num js-line-number" data-line-number="4642"></td>
<td id="LC4642" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">origin</span>(<span class="pl-en">parseUrl</span>()) <span class="pl-k">===</span> <span class="pl-en">origin</span>(url);</td>
</tr>
<tr>
<td id="L4643" class="blob-num js-line-number" data-line-number="4643"></td>
<td id="LC4643" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4644" class="blob-num js-line-number" data-line-number="4644"></td>
<td id="LC4644" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4645" class="blob-num js-line-number" data-line-number="4645"></td>
<td id="LC4645" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L4646" class="blob-num js-line-number" data-line-number="4646"></td>
<td id="LC4646" class="blob-code blob-code-inner js-file-line"> parseUrl<span class="pl-k">:</span> parseUrl,</td>
</tr>
<tr>
<td id="L4647" class="blob-num js-line-number" data-line-number="4647"></td>
<td id="LC4647" class="blob-code blob-code-inner js-file-line"> resolveUrl<span class="pl-k">:</span> resolveUrl,</td>
</tr>
<tr>
<td id="L4648" class="blob-num js-line-number" data-line-number="4648"></td>
<td id="LC4648" class="blob-code blob-code-inner js-file-line"> hasSameOrigin<span class="pl-k">:</span> hasSameOrigin</td>
</tr>
<tr>
<td id="L4649" class="blob-num js-line-number" data-line-number="4649"></td>
<td id="LC4649" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4650" class="blob-num js-line-number" data-line-number="4650"></td>
<td id="LC4650" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4651" class="blob-num js-line-number" data-line-number="4651"></td>
<td id="LC4651" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4652" class="blob-num js-line-number" data-line-number="4652"></td>
<td id="LC4652" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/RuntimeTarget.js</span></td>
</tr>
<tr>
<td id="L4653" class="blob-num js-line-number" data-line-number="4653"></td>
<td id="LC4653" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4654" class="blob-num js-line-number" data-line-number="4654"></td>
<td id="LC4654" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4655" class="blob-num js-line-number" data-line-number="4655"></td>
<td id="LC4655" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * RuntimeTarget.js</span></td>
</tr>
<tr>
<td id="L4656" class="blob-num js-line-number" data-line-number="4656"></td>
<td id="LC4656" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4657" class="blob-num js-line-number" data-line-number="4657"></td>
<td id="LC4657" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4658" class="blob-num js-line-number" data-line-number="4658"></td>
<td id="LC4658" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4659" class="blob-num js-line-number" data-line-number="4659"></td>
<td id="LC4659" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4660" class="blob-num js-line-number" data-line-number="4660"></td>
<td id="LC4660" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4661" class="blob-num js-line-number" data-line-number="4661"></td>
<td id="LC4661" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4662" class="blob-num js-line-number" data-line-number="4662"></td>
<td id="LC4662" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4663" class="blob-num js-line-number" data-line-number="4663"></td>
<td id="LC4663" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4664" class="blob-num js-line-number" data-line-number="4664"></td>
<td id="LC4664" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeTarget<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L4665" class="blob-num js-line-number" data-line-number="4665"></td>
<td id="LC4665" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4666" class="blob-num js-line-number" data-line-number="4666"></td>
<td id="LC4666" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeClient<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4667" class="blob-num js-line-number" data-line-number="4667"></td>
<td id="LC4667" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/EventTarget<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L4668" class="blob-num js-line-number" data-line-number="4668"></td>
<td id="LC4668" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">RuntimeClient</span>, <span class="pl-c1">EventTarget</span>) {</td>
</tr>
<tr>
<td id="L4669" class="blob-num js-line-number" data-line-number="4669"></td>
<td id="LC4669" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4670" class="blob-num js-line-number" data-line-number="4670"></td>
<td id="LC4670" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Instance of this class can be used as a target for the events dispatched by shims,</span></td>
</tr>
<tr>
<td id="L4671" class="blob-num js-line-number" data-line-number="4671"></td>
<td id="LC4671" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> when allowing them onto components is for either reason inappropriate</span></td>
</tr>
<tr>
<td id="L4672" class="blob-num js-line-number" data-line-number="4672"></td>
<td id="LC4672" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4673" class="blob-num js-line-number" data-line-number="4673"></td>
<td id="LC4673" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/runtime/RuntimeTarget</span></td>
</tr>
<tr>
<td id="L4674" class="blob-num js-line-number" data-line-number="4674"></td>
<td id="LC4674" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L4675" class="blob-num js-line-number" data-line-number="4675"></td>
<td id="LC4675" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@protected</span></span></td>
</tr>
<tr>
<td id="L4676" class="blob-num js-line-number" data-line-number="4676"></td>
<td id="LC4676" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">EventTarget</span></span></td>
</tr>
<tr>
<td id="L4677" class="blob-num js-line-number" data-line-number="4677"></td>
<td id="LC4677" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4678" class="blob-num js-line-number" data-line-number="4678"></td>
<td id="LC4678" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">RuntimeTarget</span>() {</td>
</tr>
<tr>
<td id="L4679" class="blob-num js-line-number" data-line-number="4679"></td>
<td id="LC4679" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4680" class="blob-num js-line-number" data-line-number="4680"></td>
<td id="LC4680" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4681" class="blob-num js-line-number" data-line-number="4681"></td>
<td id="LC4681" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L4682" class="blob-num js-line-number" data-line-number="4682"></td>
<td id="LC4682" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4683" class="blob-num js-line-number" data-line-number="4683"></td>
<td id="LC4683" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">destroy</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4684" class="blob-num js-line-number" data-line-number="4684"></td>
<td id="LC4684" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L4685" class="blob-num js-line-number" data-line-number="4685"></td>
<td id="LC4685" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L4686" class="blob-num js-line-number" data-line-number="4686"></td>
<td id="LC4686" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4687" class="blob-num js-line-number" data-line-number="4687"></td>
<td id="LC4687" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4688" class="blob-num js-line-number" data-line-number="4688"></td>
<td id="LC4688" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4689" class="blob-num js-line-number" data-line-number="4689"></td>
<td id="LC4689" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeTarget</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L4690" class="blob-num js-line-number" data-line-number="4690"></td>
<td id="LC4690" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4691" class="blob-num js-line-number" data-line-number="4691"></td>
<td id="LC4691" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> RuntimeTarget;</td>
</tr>
<tr>
<td id="L4692" class="blob-num js-line-number" data-line-number="4692"></td>
<td id="LC4692" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4693" class="blob-num js-line-number" data-line-number="4693"></td>
<td id="LC4693" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4694" class="blob-num js-line-number" data-line-number="4694"></td>
<td id="LC4694" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/file/FileReaderSync.js</span></td>
</tr>
<tr>
<td id="L4695" class="blob-num js-line-number" data-line-number="4695"></td>
<td id="LC4695" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4696" class="blob-num js-line-number" data-line-number="4696"></td>
<td id="LC4696" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4697" class="blob-num js-line-number" data-line-number="4697"></td>
<td id="LC4697" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReaderSync.js</span></td>
</tr>
<tr>
<td id="L4698" class="blob-num js-line-number" data-line-number="4698"></td>
<td id="LC4698" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4699" class="blob-num js-line-number" data-line-number="4699"></td>
<td id="LC4699" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4700" class="blob-num js-line-number" data-line-number="4700"></td>
<td id="LC4700" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4701" class="blob-num js-line-number" data-line-number="4701"></td>
<td id="LC4701" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4702" class="blob-num js-line-number" data-line-number="4702"></td>
<td id="LC4702" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4703" class="blob-num js-line-number" data-line-number="4703"></td>
<td id="LC4703" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4704" class="blob-num js-line-number" data-line-number="4704"></td>
<td id="LC4704" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4705" class="blob-num js-line-number" data-line-number="4705"></td>
<td id="LC4705" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4706" class="blob-num js-line-number" data-line-number="4706"></td>
<td id="LC4706" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/file/FileReaderSync<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L4707" class="blob-num js-line-number" data-line-number="4707"></td>
<td id="LC4707" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4708" class="blob-num js-line-number" data-line-number="4708"></td>
<td id="LC4708" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/runtime/RuntimeClient<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4709" class="blob-num js-line-number" data-line-number="4709"></td>
<td id="LC4709" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Encode<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4710" class="blob-num js-line-number" data-line-number="4710"></td>
<td id="LC4710" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">RuntimeClient</span>, <span class="pl-smi">Encode</span>) {</td>
</tr>
<tr>
<td id="L4711" class="blob-num js-line-number" data-line-number="4711"></td>
<td id="LC4711" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4712" class="blob-num js-line-number" data-line-number="4712"></td>
<td id="LC4712" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Synchronous FileReader implementation. Something like this is available in WebWorkers environment, here</span></td>
</tr>
<tr>
<td id="L4713" class="blob-num js-line-number" data-line-number="4713"></td>
<td id="LC4713" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> it can be used to read only preloaded blobs/files and only below certain size (not yet sure what that'd be,</span></td>
</tr>
<tr>
<td id="L4714" class="blob-num js-line-number" data-line-number="4714"></td>
<td id="LC4714" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> but probably < 1mb). Not meant to be used directly by user.</span></td>
</tr>
<tr>
<td id="L4715" class="blob-num js-line-number" data-line-number="4715"></td>
<td id="LC4715" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4716" class="blob-num js-line-number" data-line-number="4716"></td>
<td id="LC4716" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/file/FileReaderSync</span></td>
</tr>
<tr>
<td id="L4717" class="blob-num js-line-number" data-line-number="4717"></td>
<td id="LC4717" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L4718" class="blob-num js-line-number" data-line-number="4718"></td>
<td id="LC4718" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L4719" class="blob-num js-line-number" data-line-number="4719"></td>
<td id="LC4719" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4720" class="blob-num js-line-number" data-line-number="4720"></td>
<td id="LC4720" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4721" class="blob-num js-line-number" data-line-number="4721"></td>
<td id="LC4721" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L4722" class="blob-num js-line-number" data-line-number="4722"></td>
<td id="LC4722" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4723" class="blob-num js-line-number" data-line-number="4723"></td>
<td id="LC4723" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L4724" class="blob-num js-line-number" data-line-number="4724"></td>
<td id="LC4724" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L4725" class="blob-num js-line-number" data-line-number="4725"></td>
<td id="LC4725" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4726" class="blob-num js-line-number" data-line-number="4726"></td>
<td id="LC4726" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readAsBinaryString</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4727" class="blob-num js-line-number" data-line-number="4727"></td>
<td id="LC4727" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_read</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L4728" class="blob-num js-line-number" data-line-number="4728"></td>
<td id="LC4728" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4729" class="blob-num js-line-number" data-line-number="4729"></td>
<td id="LC4729" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4730" class="blob-num js-line-number" data-line-number="4730"></td>
<td id="LC4730" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readAsDataURL</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4731" class="blob-num js-line-number" data-line-number="4731"></td>
<td id="LC4731" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_read</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L4732" class="blob-num js-line-number" data-line-number="4732"></td>
<td id="LC4732" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4733" class="blob-num js-line-number" data-line-number="4733"></td>
<td id="LC4733" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4734" class="blob-num js-line-number" data-line-number="4734"></td>
<td id="LC4734" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>readAsArrayBuffer: function(blob) {</span></td>
</tr>
<tr>
<td id="L4735" class="blob-num js-line-number" data-line-number="4735"></td>
<td id="LC4735" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _read.call(this, 'readAsArrayBuffer', blob);</span></td>
</tr>
<tr>
<td id="L4736" class="blob-num js-line-number" data-line-number="4736"></td>
<td id="LC4736" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> },<span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4737" class="blob-num js-line-number" data-line-number="4737"></td>
<td id="LC4737" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L4738" class="blob-num js-line-number" data-line-number="4738"></td>
<td id="LC4738" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readAsText</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4739" class="blob-num js-line-number" data-line-number="4739"></td>
<td id="LC4739" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_read</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>readAsText<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L4740" class="blob-num js-line-number" data-line-number="4740"></td>
<td id="LC4740" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4741" class="blob-num js-line-number" data-line-number="4741"></td>
<td id="LC4741" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4742" class="blob-num js-line-number" data-line-number="4742"></td>
<td id="LC4742" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4743" class="blob-num js-line-number" data-line-number="4743"></td>
<td id="LC4743" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_read</span>(<span class="pl-smi">op</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L4744" class="blob-num js-line-number" data-line-number="4744"></td>
<td id="LC4744" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L4745" class="blob-num js-line-number" data-line-number="4745"></td>
<td id="LC4745" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> src <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>();</td>
</tr>
<tr>
<td id="L4746" class="blob-num js-line-number" data-line-number="4746"></td>
<td id="LC4746" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (op) {</td>
</tr>
<tr>
<td id="L4747" class="blob-num js-line-number" data-line-number="4747"></td>
<td id="LC4747" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4748" class="blob-num js-line-number" data-line-number="4748"></td>
<td id="LC4748" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> src;</td>
</tr>
<tr>
<td id="L4749" class="blob-num js-line-number" data-line-number="4749"></td>
<td id="LC4749" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4750" class="blob-num js-line-number" data-line-number="4750"></td>
<td id="LC4750" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">blob</span>.<span class="pl-c1">type</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">btoa</span>(src);</td>
</tr>
<tr>
<td id="L4751" class="blob-num js-line-number" data-line-number="4751"></td>
<td id="LC4751" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsText<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L4752" class="blob-num js-line-number" data-line-number="4752"></td>
<td id="LC4752" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> txt <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L4753" class="blob-num js-line-number" data-line-number="4753"></td>
<td id="LC4753" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>, length <span class="pl-k">=</span> <span class="pl-smi">src</span>.<span class="pl-c1">length</span>; i <span class="pl-k"><</span> length; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L4754" class="blob-num js-line-number" data-line-number="4754"></td>
<td id="LC4754" class="blob-code blob-code-inner js-file-line"> txt <span class="pl-k">+=</span> <span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(src[i]);</td>
</tr>
<tr>
<td id="L4755" class="blob-num js-line-number" data-line-number="4755"></td>
<td id="LC4755" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4756" class="blob-num js-line-number" data-line-number="4756"></td>
<td id="LC4756" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> txt;</td>
</tr>
<tr>
<td id="L4757" class="blob-num js-line-number" data-line-number="4757"></td>
<td id="LC4757" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4758" class="blob-num js-line-number" data-line-number="4758"></td>
<td id="LC4758" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L4759" class="blob-num js-line-number" data-line-number="4759"></td>
<td id="LC4759" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> result <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-smi">blob</span>.<span class="pl-smi">ruid</span>).<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileReaderSync<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>read<span class="pl-pds">'</span></span>, op, blob);</td>
</tr>
<tr>
<td id="L4760" class="blob-num js-line-number" data-line-number="4760"></td>
<td id="LC4760" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L4761" class="blob-num js-line-number" data-line-number="4761"></td>
<td id="LC4761" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> result;</td>
</tr>
<tr>
<td id="L4762" class="blob-num js-line-number" data-line-number="4762"></td>
<td id="LC4762" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4763" class="blob-num js-line-number" data-line-number="4763"></td>
<td id="LC4763" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4764" class="blob-num js-line-number" data-line-number="4764"></td>
<td id="LC4764" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4765" class="blob-num js-line-number" data-line-number="4765"></td>
<td id="LC4765" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4766" class="blob-num js-line-number" data-line-number="4766"></td>
<td id="LC4766" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4767" class="blob-num js-line-number" data-line-number="4767"></td>
<td id="LC4767" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/xhr/FormData.js</span></td>
</tr>
<tr>
<td id="L4768" class="blob-num js-line-number" data-line-number="4768"></td>
<td id="LC4768" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4769" class="blob-num js-line-number" data-line-number="4769"></td>
<td id="LC4769" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4770" class="blob-num js-line-number" data-line-number="4770"></td>
<td id="LC4770" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FormData.js</span></td>
</tr>
<tr>
<td id="L4771" class="blob-num js-line-number" data-line-number="4771"></td>
<td id="LC4771" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4772" class="blob-num js-line-number" data-line-number="4772"></td>
<td id="LC4772" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4773" class="blob-num js-line-number" data-line-number="4773"></td>
<td id="LC4773" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4774" class="blob-num js-line-number" data-line-number="4774"></td>
<td id="LC4774" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4775" class="blob-num js-line-number" data-line-number="4775"></td>
<td id="LC4775" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4776" class="blob-num js-line-number" data-line-number="4776"></td>
<td id="LC4776" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4777" class="blob-num js-line-number" data-line-number="4777"></td>
<td id="LC4777" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4778" class="blob-num js-line-number" data-line-number="4778"></td>
<td id="LC4778" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4779" class="blob-num js-line-number" data-line-number="4779"></td>
<td id="LC4779" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/FormData<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L4780" class="blob-num js-line-number" data-line-number="4780"></td>
<td id="LC4780" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4781" class="blob-num js-line-number" data-line-number="4781"></td>
<td id="LC4781" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4782" class="blob-num js-line-number" data-line-number="4782"></td>
<td id="LC4782" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L4783" class="blob-num js-line-number" data-line-number="4783"></td>
<td id="LC4783" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">x</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L4784" class="blob-num js-line-number" data-line-number="4784"></td>
<td id="LC4784" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4785" class="blob-num js-line-number" data-line-number="4785"></td>
<td id="LC4785" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> FormData</span></td>
</tr>
<tr>
<td id="L4786" class="blob-num js-line-number" data-line-number="4786"></td>
<td id="LC4786" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4787" class="blob-num js-line-number" data-line-number="4787"></td>
<td id="LC4787" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/xhr/FormData</span></td>
</tr>
<tr>
<td id="L4788" class="blob-num js-line-number" data-line-number="4788"></td>
<td id="LC4788" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L4789" class="blob-num js-line-number" data-line-number="4789"></td>
<td id="LC4789" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4790" class="blob-num js-line-number" data-line-number="4790"></td>
<td id="LC4790" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FormData</span>() {</td>
</tr>
<tr>
<td id="L4791" class="blob-num js-line-number" data-line-number="4791"></td>
<td id="LC4791" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _blob, _fields <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L4792" class="blob-num js-line-number" data-line-number="4792"></td>
<td id="LC4792" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4793" class="blob-num js-line-number" data-line-number="4793"></td>
<td id="LC4793" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L4794" class="blob-num js-line-number" data-line-number="4794"></td>
<td id="LC4794" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4795" class="blob-num js-line-number" data-line-number="4795"></td>
<td id="LC4795" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Append another key-value pair to the FormData object</span></td>
</tr>
<tr>
<td id="L4796" class="blob-num js-line-number" data-line-number="4796"></td>
<td id="LC4796" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4797" class="blob-num js-line-number" data-line-number="4797"></td>
<td id="LC4797" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">append</span></span></td>
</tr>
<tr>
<td id="L4798" class="blob-num js-line-number" data-line-number="4798"></td>
<td id="LC4798" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Name for the new field</span></td>
</tr>
<tr>
<td id="L4799" class="blob-num js-line-number" data-line-number="4799"></td>
<td id="LC4799" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Blob|Array|Object}</span> <span class="pl-smi">value</span> Value for the field</span></td>
</tr>
<tr>
<td id="L4800" class="blob-num js-line-number" data-line-number="4800"></td>
<td id="LC4800" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4801" class="blob-num js-line-number" data-line-number="4801"></td>
<td id="LC4801" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">append</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L4802" class="blob-num js-line-number" data-line-number="4802"></td>
<td id="LC4802" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>, valueType <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(value);</td>
</tr>
<tr>
<td id="L4803" class="blob-num js-line-number" data-line-number="4803"></td>
<td id="LC4803" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4804" class="blob-num js-line-number" data-line-number="4804"></td>
<td id="LC4804" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> according to specs value might be either Blob or String</span></td>
</tr>
<tr>
<td id="L4805" class="blob-num js-line-number" data-line-number="4805"></td>
<td id="LC4805" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L4806" class="blob-num js-line-number" data-line-number="4806"></td>
<td id="LC4806" class="blob-code blob-code-inner js-file-line"> _blob <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L4807" class="blob-num js-line-number" data-line-number="4807"></td>
<td id="LC4807" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> name,</td>
</tr>
<tr>
<td id="L4808" class="blob-num js-line-number" data-line-number="4808"></td>
<td id="LC4808" class="blob-code blob-code-inner js-file-line"> value<span class="pl-k">:</span> value <span class="pl-c"><span class="pl-c">//</span> unfortunately we can only send single Blob in one FormData</span></td>
</tr>
<tr>
<td id="L4809" class="blob-num js-line-number" data-line-number="4809"></td>
<td id="LC4809" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4810" class="blob-num js-line-number" data-line-number="4810"></td>
<td id="LC4810" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span> <span class="pl-k">===</span> valueType) {</td>
</tr>
<tr>
<td id="L4811" class="blob-num js-line-number" data-line-number="4811"></td>
<td id="LC4811" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span>[]<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L4812" class="blob-num js-line-number" data-line-number="4812"></td>
<td id="LC4812" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4813" class="blob-num js-line-number" data-line-number="4813"></td>
<td id="LC4813" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(value, <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L4814" class="blob-num js-line-number" data-line-number="4814"></td>
<td id="LC4814" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">append</span>(name, value);</td>
</tr>
<tr>
<td id="L4815" class="blob-num js-line-number" data-line-number="4815"></td>
<td id="LC4815" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4816" class="blob-num js-line-number" data-line-number="4816"></td>
<td id="LC4816" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span> <span class="pl-k">===</span> valueType) {</td>
</tr>
<tr>
<td id="L4817" class="blob-num js-line-number" data-line-number="4817"></td>
<td id="LC4817" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(value, <span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">key</span>) {</td>
</tr>
<tr>
<td id="L4818" class="blob-num js-line-number" data-line-number="4818"></td>
<td id="LC4818" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">append</span>(name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>[<span class="pl-pds">'</span></span> <span class="pl-k">+</span> key <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>]<span class="pl-pds">'</span></span>, value);</td>
</tr>
<tr>
<td id="L4819" class="blob-num js-line-number" data-line-number="4819"></td>
<td id="LC4819" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4820" class="blob-num js-line-number" data-line-number="4820"></td>
<td id="LC4820" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>null<span class="pl-pds">'</span></span> <span class="pl-k">===</span> valueType <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span> <span class="pl-k">===</span> valueType <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>number<span class="pl-pds">'</span></span> <span class="pl-k">===</span> valueType <span class="pl-k">&&</span> <span class="pl-c1">isNaN</span>(value)) {</td>
</tr>
<tr>
<td id="L4821" class="blob-num js-line-number" data-line-number="4821"></td>
<td id="LC4821" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">append</span>(name, <span class="pl-s"><span class="pl-pds">"</span>false<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L4822" class="blob-num js-line-number" data-line-number="4822"></td>
<td id="LC4822" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L4823" class="blob-num js-line-number" data-line-number="4823"></td>
<td id="LC4823" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fields</span>.<span class="pl-c1">push</span>({</td>
</tr>
<tr>
<td id="L4824" class="blob-num js-line-number" data-line-number="4824"></td>
<td id="LC4824" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> name,</td>
</tr>
<tr>
<td id="L4825" class="blob-num js-line-number" data-line-number="4825"></td>
<td id="LC4825" class="blob-code blob-code-inner js-file-line"> value<span class="pl-k">:</span> <span class="pl-smi">value</span>.<span class="pl-c1">toString</span>()</td>
</tr>
<tr>
<td id="L4826" class="blob-num js-line-number" data-line-number="4826"></td>
<td id="LC4826" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4827" class="blob-num js-line-number" data-line-number="4827"></td>
<td id="LC4827" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4828" class="blob-num js-line-number" data-line-number="4828"></td>
<td id="LC4828" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4829" class="blob-num js-line-number" data-line-number="4829"></td>
<td id="LC4829" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4830" class="blob-num js-line-number" data-line-number="4830"></td>
<td id="LC4830" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4831" class="blob-num js-line-number" data-line-number="4831"></td>
<td id="LC4831" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Checks if FormData contains Blob.</span></td>
</tr>
<tr>
<td id="L4832" class="blob-num js-line-number" data-line-number="4832"></td>
<td id="LC4832" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4833" class="blob-num js-line-number" data-line-number="4833"></td>
<td id="LC4833" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">hasBlob</span></span></td>
</tr>
<tr>
<td id="L4834" class="blob-num js-line-number" data-line-number="4834"></td>
<td id="LC4834" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Boolean}</span></span></td>
</tr>
<tr>
<td id="L4835" class="blob-num js-line-number" data-line-number="4835"></td>
<td id="LC4835" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4836" class="blob-num js-line-number" data-line-number="4836"></td>
<td id="LC4836" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">hasBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4837" class="blob-num js-line-number" data-line-number="4837"></td>
<td id="LC4837" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span><span class="pl-c1">this</span>.<span class="pl-en">getBlob</span>();</td>
</tr>
<tr>
<td id="L4838" class="blob-num js-line-number" data-line-number="4838"></td>
<td id="LC4838" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4839" class="blob-num js-line-number" data-line-number="4839"></td>
<td id="LC4839" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4840" class="blob-num js-line-number" data-line-number="4840"></td>
<td id="LC4840" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4841" class="blob-num js-line-number" data-line-number="4841"></td>
<td id="LC4841" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Retrieves blob.</span></td>
</tr>
<tr>
<td id="L4842" class="blob-num js-line-number" data-line-number="4842"></td>
<td id="LC4842" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4843" class="blob-num js-line-number" data-line-number="4843"></td>
<td id="LC4843" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getBlob</span></span></td>
</tr>
<tr>
<td id="L4844" class="blob-num js-line-number" data-line-number="4844"></td>
<td id="LC4844" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Object}</span> Either Blob if found or null</span></td>
</tr>
<tr>
<td id="L4845" class="blob-num js-line-number" data-line-number="4845"></td>
<td id="LC4845" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4846" class="blob-num js-line-number" data-line-number="4846"></td>
<td id="LC4846" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4847" class="blob-num js-line-number" data-line-number="4847"></td>
<td id="LC4847" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _blob <span class="pl-k">&&</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">value</span> <span class="pl-k">||</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L4848" class="blob-num js-line-number" data-line-number="4848"></td>
<td id="LC4848" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4849" class="blob-num js-line-number" data-line-number="4849"></td>
<td id="LC4849" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4850" class="blob-num js-line-number" data-line-number="4850"></td>
<td id="LC4850" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4851" class="blob-num js-line-number" data-line-number="4851"></td>
<td id="LC4851" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Retrieves blob field name.</span></td>
</tr>
<tr>
<td id="L4852" class="blob-num js-line-number" data-line-number="4852"></td>
<td id="LC4852" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4853" class="blob-num js-line-number" data-line-number="4853"></td>
<td id="LC4853" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getBlobName</span></span></td>
</tr>
<tr>
<td id="L4854" class="blob-num js-line-number" data-line-number="4854"></td>
<td id="LC4854" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Either Blob field name or null</span></td>
</tr>
<tr>
<td id="L4855" class="blob-num js-line-number" data-line-number="4855"></td>
<td id="LC4855" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4856" class="blob-num js-line-number" data-line-number="4856"></td>
<td id="LC4856" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getBlobName</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4857" class="blob-num js-line-number" data-line-number="4857"></td>
<td id="LC4857" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _blob <span class="pl-k">&&</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">name</span> <span class="pl-k">||</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L4858" class="blob-num js-line-number" data-line-number="4858"></td>
<td id="LC4858" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4859" class="blob-num js-line-number" data-line-number="4859"></td>
<td id="LC4859" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4860" class="blob-num js-line-number" data-line-number="4860"></td>
<td id="LC4860" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4861" class="blob-num js-line-number" data-line-number="4861"></td>
<td id="LC4861" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Loop over the fields in FormData and invoke the callback for each of them.</span></td>
</tr>
<tr>
<td id="L4862" class="blob-num js-line-number" data-line-number="4862"></td>
<td id="LC4862" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4863" class="blob-num js-line-number" data-line-number="4863"></td>
<td id="LC4863" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">each</span></span></td>
</tr>
<tr>
<td id="L4864" class="blob-num js-line-number" data-line-number="4864"></td>
<td id="LC4864" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">cb</span> Callback to call for each field</span></td>
</tr>
<tr>
<td id="L4865" class="blob-num js-line-number" data-line-number="4865"></td>
<td id="LC4865" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4866" class="blob-num js-line-number" data-line-number="4866"></td>
<td id="LC4866" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">each</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L4867" class="blob-num js-line-number" data-line-number="4867"></td>
<td id="LC4867" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(_fields, <span class="pl-k">function</span>(<span class="pl-smi">field</span>) {</td>
</tr>
<tr>
<td id="L4868" class="blob-num js-line-number" data-line-number="4868"></td>
<td id="LC4868" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>(<span class="pl-smi">field</span>.<span class="pl-c1">value</span>, <span class="pl-smi">field</span>.<span class="pl-c1">name</span>);</td>
</tr>
<tr>
<td id="L4869" class="blob-num js-line-number" data-line-number="4869"></td>
<td id="LC4869" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4870" class="blob-num js-line-number" data-line-number="4870"></td>
<td id="LC4870" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4871" class="blob-num js-line-number" data-line-number="4871"></td>
<td id="LC4871" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_blob) {</td>
</tr>
<tr>
<td id="L4872" class="blob-num js-line-number" data-line-number="4872"></td>
<td id="LC4872" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>(<span class="pl-smi">_blob</span>.<span class="pl-c1">value</span>, <span class="pl-smi">_blob</span>.<span class="pl-c1">name</span>);</td>
</tr>
<tr>
<td id="L4873" class="blob-num js-line-number" data-line-number="4873"></td>
<td id="LC4873" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4874" class="blob-num js-line-number" data-line-number="4874"></td>
<td id="LC4874" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L4875" class="blob-num js-line-number" data-line-number="4875"></td>
<td id="LC4875" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4876" class="blob-num js-line-number" data-line-number="4876"></td>
<td id="LC4876" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L4877" class="blob-num js-line-number" data-line-number="4877"></td>
<td id="LC4877" class="blob-code blob-code-inner js-file-line"> _blob <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L4878" class="blob-num js-line-number" data-line-number="4878"></td>
<td id="LC4878" class="blob-code blob-code-inner js-file-line"> _fields <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L4879" class="blob-num js-line-number" data-line-number="4879"></td>
<td id="LC4879" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4880" class="blob-num js-line-number" data-line-number="4880"></td>
<td id="LC4880" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L4881" class="blob-num js-line-number" data-line-number="4881"></td>
<td id="LC4881" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4882" class="blob-num js-line-number" data-line-number="4882"></td>
<td id="LC4882" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4883" class="blob-num js-line-number" data-line-number="4883"></td>
<td id="LC4883" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">FormData</span>;</td>
</tr>
<tr>
<td id="L4884" class="blob-num js-line-number" data-line-number="4884"></td>
<td id="LC4884" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L4885" class="blob-num js-line-number" data-line-number="4885"></td>
<td id="LC4885" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4886" class="blob-num js-line-number" data-line-number="4886"></td>
<td id="LC4886" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/xhr/XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L4887" class="blob-num js-line-number" data-line-number="4887"></td>
<td id="LC4887" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4888" class="blob-num js-line-number" data-line-number="4888"></td>
<td id="LC4888" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4889" class="blob-num js-line-number" data-line-number="4889"></td>
<td id="LC4889" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L4890" class="blob-num js-line-number" data-line-number="4890"></td>
<td id="LC4890" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4891" class="blob-num js-line-number" data-line-number="4891"></td>
<td id="LC4891" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L4892" class="blob-num js-line-number" data-line-number="4892"></td>
<td id="LC4892" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L4893" class="blob-num js-line-number" data-line-number="4893"></td>
<td id="LC4893" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L4894" class="blob-num js-line-number" data-line-number="4894"></td>
<td id="LC4894" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L4895" class="blob-num js-line-number" data-line-number="4895"></td>
<td id="LC4895" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L4896" class="blob-num js-line-number" data-line-number="4896"></td>
<td id="LC4896" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4897" class="blob-num js-line-number" data-line-number="4897"></td>
<td id="LC4897" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4898" class="blob-num js-line-number" data-line-number="4898"></td>
<td id="LC4898" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L4899" class="blob-num js-line-number" data-line-number="4899"></td>
<td id="LC4899" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4900" class="blob-num js-line-number" data-line-number="4900"></td>
<td id="LC4900" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4901" class="blob-num js-line-number" data-line-number="4901"></td>
<td id="LC4901" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/EventTarget<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4902" class="blob-num js-line-number" data-line-number="4902"></td>
<td id="LC4902" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4903" class="blob-num js-line-number" data-line-number="4903"></td>
<td id="LC4903" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Url<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4904" class="blob-num js-line-number" data-line-number="4904"></td>
<td id="LC4904" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4905" class="blob-num js-line-number" data-line-number="4905"></td>
<td id="LC4905" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/RuntimeTarget<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4906" class="blob-num js-line-number" data-line-number="4906"></td>
<td id="LC4906" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4907" class="blob-num js-line-number" data-line-number="4907"></td>
<td id="LC4907" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileReaderSync<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4908" class="blob-num js-line-number" data-line-number="4908"></td>
<td id="LC4908" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/FormData<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4909" class="blob-num js-line-number" data-line-number="4909"></td>
<td id="LC4909" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L4910" class="blob-num js-line-number" data-line-number="4910"></td>
<td id="LC4910" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L4911" class="blob-num js-line-number" data-line-number="4911"></td>
<td id="LC4911" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">x</span>, <span class="pl-c1">EventTarget</span>, <span class="pl-smi">Encode</span>, <span class="pl-smi">Url</span>, <span class="pl-smi">Runtime</span>, <span class="pl-smi">RuntimeTarget</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">FileReaderSync</span>, <span class="pl-c1">FormData</span>, <span class="pl-smi">Env</span>, <span class="pl-smi">Mime</span>) {</td>
</tr>
<tr>
<td id="L4912" class="blob-num js-line-number" data-line-number="4912"></td>
<td id="LC4912" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4913" class="blob-num js-line-number" data-line-number="4913"></td>
<td id="LC4913" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> httpCode <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L4914" class="blob-num js-line-number" data-line-number="4914"></td>
<td id="LC4914" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">100</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Continue<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4915" class="blob-num js-line-number" data-line-number="4915"></td>
<td id="LC4915" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">101</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Switching Protocols<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4916" class="blob-num js-line-number" data-line-number="4916"></td>
<td id="LC4916" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">102</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Processing<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4917" class="blob-num js-line-number" data-line-number="4917"></td>
<td id="LC4917" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4918" class="blob-num js-line-number" data-line-number="4918"></td>
<td id="LC4918" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">200</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>OK<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4919" class="blob-num js-line-number" data-line-number="4919"></td>
<td id="LC4919" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">201</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Created<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4920" class="blob-num js-line-number" data-line-number="4920"></td>
<td id="LC4920" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">202</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Accepted<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4921" class="blob-num js-line-number" data-line-number="4921"></td>
<td id="LC4921" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">203</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Non-Authoritative Information<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4922" class="blob-num js-line-number" data-line-number="4922"></td>
<td id="LC4922" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">204</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>No Content<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4923" class="blob-num js-line-number" data-line-number="4923"></td>
<td id="LC4923" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">205</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Reset Content<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4924" class="blob-num js-line-number" data-line-number="4924"></td>
<td id="LC4924" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">206</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Partial Content<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4925" class="blob-num js-line-number" data-line-number="4925"></td>
<td id="LC4925" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">207</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Multi-Status<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4926" class="blob-num js-line-number" data-line-number="4926"></td>
<td id="LC4926" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">226</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>IM Used<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4927" class="blob-num js-line-number" data-line-number="4927"></td>
<td id="LC4927" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4928" class="blob-num js-line-number" data-line-number="4928"></td>
<td id="LC4928" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">300</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Multiple Choices<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4929" class="blob-num js-line-number" data-line-number="4929"></td>
<td id="LC4929" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">301</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Moved Permanently<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4930" class="blob-num js-line-number" data-line-number="4930"></td>
<td id="LC4930" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">302</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Found<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4931" class="blob-num js-line-number" data-line-number="4931"></td>
<td id="LC4931" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">303</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>See Other<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4932" class="blob-num js-line-number" data-line-number="4932"></td>
<td id="LC4932" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">304</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Not Modified<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4933" class="blob-num js-line-number" data-line-number="4933"></td>
<td id="LC4933" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">305</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Use Proxy<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4934" class="blob-num js-line-number" data-line-number="4934"></td>
<td id="LC4934" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">306</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Reserved<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4935" class="blob-num js-line-number" data-line-number="4935"></td>
<td id="LC4935" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">307</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Temporary Redirect<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4936" class="blob-num js-line-number" data-line-number="4936"></td>
<td id="LC4936" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4937" class="blob-num js-line-number" data-line-number="4937"></td>
<td id="LC4937" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">400</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Bad Request<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4938" class="blob-num js-line-number" data-line-number="4938"></td>
<td id="LC4938" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">401</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Unauthorized<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4939" class="blob-num js-line-number" data-line-number="4939"></td>
<td id="LC4939" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">402</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Payment Required<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4940" class="blob-num js-line-number" data-line-number="4940"></td>
<td id="LC4940" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">403</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Forbidden<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4941" class="blob-num js-line-number" data-line-number="4941"></td>
<td id="LC4941" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">404</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Not Found<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4942" class="blob-num js-line-number" data-line-number="4942"></td>
<td id="LC4942" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">405</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Method Not Allowed<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4943" class="blob-num js-line-number" data-line-number="4943"></td>
<td id="LC4943" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">406</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Not Acceptable<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4944" class="blob-num js-line-number" data-line-number="4944"></td>
<td id="LC4944" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">407</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Proxy Authentication Required<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4945" class="blob-num js-line-number" data-line-number="4945"></td>
<td id="LC4945" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">408</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Request Timeout<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4946" class="blob-num js-line-number" data-line-number="4946"></td>
<td id="LC4946" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">409</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Conflict<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4947" class="blob-num js-line-number" data-line-number="4947"></td>
<td id="LC4947" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">410</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Gone<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4948" class="blob-num js-line-number" data-line-number="4948"></td>
<td id="LC4948" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">411</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Length Required<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4949" class="blob-num js-line-number" data-line-number="4949"></td>
<td id="LC4949" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">412</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Precondition Failed<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4950" class="blob-num js-line-number" data-line-number="4950"></td>
<td id="LC4950" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">413</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Request Entity Too Large<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4951" class="blob-num js-line-number" data-line-number="4951"></td>
<td id="LC4951" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">414</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Request-URI Too Long<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4952" class="blob-num js-line-number" data-line-number="4952"></td>
<td id="LC4952" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">415</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Unsupported Media Type<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4953" class="blob-num js-line-number" data-line-number="4953"></td>
<td id="LC4953" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">416</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Requested Range Not Satisfiable<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4954" class="blob-num js-line-number" data-line-number="4954"></td>
<td id="LC4954" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">417</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Expectation Failed<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4955" class="blob-num js-line-number" data-line-number="4955"></td>
<td id="LC4955" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">422</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Unprocessable Entity<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4956" class="blob-num js-line-number" data-line-number="4956"></td>
<td id="LC4956" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">423</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Locked<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4957" class="blob-num js-line-number" data-line-number="4957"></td>
<td id="LC4957" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">424</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Failed Dependency<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4958" class="blob-num js-line-number" data-line-number="4958"></td>
<td id="LC4958" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">426</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Upgrade Required<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4959" class="blob-num js-line-number" data-line-number="4959"></td>
<td id="LC4959" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4960" class="blob-num js-line-number" data-line-number="4960"></td>
<td id="LC4960" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">500</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Internal Server Error<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4961" class="blob-num js-line-number" data-line-number="4961"></td>
<td id="LC4961" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">501</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Not Implemented<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4962" class="blob-num js-line-number" data-line-number="4962"></td>
<td id="LC4962" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">502</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Bad Gateway<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4963" class="blob-num js-line-number" data-line-number="4963"></td>
<td id="LC4963" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">503</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Service Unavailable<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4964" class="blob-num js-line-number" data-line-number="4964"></td>
<td id="LC4964" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">504</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Gateway Timeout<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4965" class="blob-num js-line-number" data-line-number="4965"></td>
<td id="LC4965" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">505</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>HTTP Version Not Supported<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4966" class="blob-num js-line-number" data-line-number="4966"></td>
<td id="LC4966" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">506</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Variant Also Negotiates<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4967" class="blob-num js-line-number" data-line-number="4967"></td>
<td id="LC4967" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">507</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Insufficient Storage<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4968" class="blob-num js-line-number" data-line-number="4968"></td>
<td id="LC4968" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">510</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Not Extended<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4969" class="blob-num js-line-number" data-line-number="4969"></td>
<td id="LC4969" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L4970" class="blob-num js-line-number" data-line-number="4970"></td>
<td id="LC4970" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4971" class="blob-num js-line-number" data-line-number="4971"></td>
<td id="LC4971" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">XMLHttpRequestUpload</span>() {</td>
</tr>
<tr>
<td id="L4972" class="blob-num js-line-number" data-line-number="4972"></td>
<td id="LC4972" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L4973" class="blob-num js-line-number" data-line-number="4973"></td>
<td id="LC4973" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L4974" class="blob-num js-line-number" data-line-number="4974"></td>
<td id="LC4974" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4975" class="blob-num js-line-number" data-line-number="4975"></td>
<td id="LC4975" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">XMLHttpRequestUpload</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L4976" class="blob-num js-line-number" data-line-number="4976"></td>
<td id="LC4976" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4977" class="blob-num js-line-number" data-line-number="4977"></td>
<td id="LC4977" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L4978" class="blob-num js-line-number" data-line-number="4978"></td>
<td id="LC4978" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Implementation of XMLHttpRequest</span></td>
</tr>
<tr>
<td id="L4979" class="blob-num js-line-number" data-line-number="4979"></td>
<td id="LC4979" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L4980" class="blob-num js-line-number" data-line-number="4980"></td>
<td id="LC4980" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/xhr/XMLHttpRequest</span></td>
</tr>
<tr>
<td id="L4981" class="blob-num js-line-number" data-line-number="4981"></td>
<td id="LC4981" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L4982" class="blob-num js-line-number" data-line-number="4982"></td>
<td id="LC4982" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@uses</span> <span class="pl-en">RuntimeClient</span></span></td>
</tr>
<tr>
<td id="L4983" class="blob-num js-line-number" data-line-number="4983"></td>
<td id="LC4983" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">EventTarget</span></span></td>
</tr>
<tr>
<td id="L4984" class="blob-num js-line-number" data-line-number="4984"></td>
<td id="LC4984" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L4985" class="blob-num js-line-number" data-line-number="4985"></td>
<td id="LC4985" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dispatches <span class="pl-k">=</span> [</td>
</tr>
<tr>
<td id="L4986" class="blob-num js-line-number" data-line-number="4986"></td>
<td id="LC4986" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>loadstart<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4987" class="blob-num js-line-number" data-line-number="4987"></td>
<td id="LC4987" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4988" class="blob-num js-line-number" data-line-number="4988"></td>
<td id="LC4988" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4989" class="blob-num js-line-number" data-line-number="4989"></td>
<td id="LC4989" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4990" class="blob-num js-line-number" data-line-number="4990"></td>
<td id="LC4990" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4991" class="blob-num js-line-number" data-line-number="4991"></td>
<td id="LC4991" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4992" class="blob-num js-line-number" data-line-number="4992"></td>
<td id="LC4992" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4993" class="blob-num js-line-number" data-line-number="4993"></td>
<td id="LC4993" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4994" class="blob-num js-line-number" data-line-number="4994"></td>
<td id="LC4994" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4995" class="blob-num js-line-number" data-line-number="4995"></td>
<td id="LC4995" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4996" class="blob-num js-line-number" data-line-number="4996"></td>
<td id="LC4996" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>timeout<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L4997" class="blob-num js-line-number" data-line-number="4997"></td>
<td id="LC4997" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4998" class="blob-num js-line-number" data-line-number="4998"></td>
<td id="LC4998" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L4999" class="blob-num js-line-number" data-line-number="4999"></td>
<td id="LC4999" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5000" class="blob-num js-line-number" data-line-number="5000"></td>
<td id="LC5000" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> readystatechange (for historical reasons)</span></td>
</tr>
<tr>
<td id="L5001" class="blob-num js-line-number" data-line-number="5001"></td>
<td id="LC5001" class="blob-code blob-code-inner js-file-line"> ];</td>
</tr>
<tr>
<td id="L5002" class="blob-num js-line-number" data-line-number="5002"></td>
<td id="LC5002" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5003" class="blob-num js-line-number" data-line-number="5003"></td>
<td id="LC5003" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">NATIVE</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>, <span class="pl-c1">RUNTIME</span> <span class="pl-k">=</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L5004" class="blob-num js-line-number" data-line-number="5004"></td>
<td id="LC5004" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5005" class="blob-num js-line-number" data-line-number="5005"></td>
<td id="LC5005" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">XMLHttpRequest</span>() {</td>
</tr>
<tr>
<td id="L5006" class="blob-num js-line-number" data-line-number="5006"></td>
<td id="LC5006" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>,</td>
</tr>
<tr>
<td id="L5007" class="blob-num js-line-number" data-line-number="5007"></td>
<td id="LC5007" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this (together with _p() @see below) is here to gracefully upgrade to setter/getter syntax where possible</span></td>
</tr>
<tr>
<td id="L5008" class="blob-num js-line-number" data-line-number="5008"></td>
<td id="LC5008" class="blob-code blob-code-inner js-file-line"> props <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L5009" class="blob-num js-line-number" data-line-number="5009"></td>
<td id="LC5009" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5010" class="blob-num js-line-number" data-line-number="5010"></td>
<td id="LC5010" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The amount of milliseconds a request can take before being terminated. Initially zero. Zero means there is no timeout.</span></td>
</tr>
<tr>
<td id="L5011" class="blob-num js-line-number" data-line-number="5011"></td>
<td id="LC5011" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5012" class="blob-num js-line-number" data-line-number="5012"></td>
<td id="LC5012" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> timeout</span></td>
</tr>
<tr>
<td id="L5013" class="blob-num js-line-number" data-line-number="5013"></td>
<td id="LC5013" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Number</span></td>
</tr>
<tr>
<td id="L5014" class="blob-num js-line-number" data-line-number="5014"></td>
<td id="LC5014" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L5015" class="blob-num js-line-number" data-line-number="5015"></td>
<td id="LC5015" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5016" class="blob-num js-line-number" data-line-number="5016"></td>
<td id="LC5016" class="blob-code blob-code-inner js-file-line"> timeout<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L5017" class="blob-num js-line-number" data-line-number="5017"></td>
<td id="LC5017" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5018" class="blob-num js-line-number" data-line-number="5018"></td>
<td id="LC5018" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5019" class="blob-num js-line-number" data-line-number="5019"></td>
<td id="LC5019" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Current state, can take following values:</span></td>
</tr>
<tr>
<td id="L5020" class="blob-num js-line-number" data-line-number="5020"></td>
<td id="LC5020" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> UNSENT (numeric value 0)</span></td>
</tr>
<tr>
<td id="L5021" class="blob-num js-line-number" data-line-number="5021"></td>
<td id="LC5021" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The object has been constructed.</span></td>
</tr>
<tr>
<td id="L5022" class="blob-num js-line-number" data-line-number="5022"></td>
<td id="LC5022" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5023" class="blob-num js-line-number" data-line-number="5023"></td>
<td id="LC5023" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> OPENED (numeric value 1)</span></td>
</tr>
<tr>
<td id="L5024" class="blob-num js-line-number" data-line-number="5024"></td>
<td id="LC5024" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The open() method has been successfully invoked. During this state request headers can be set using setRequestHeader() and the request can be made using the send() method.</span></td>
</tr>
<tr>
<td id="L5025" class="blob-num js-line-number" data-line-number="5025"></td>
<td id="LC5025" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5026" class="blob-num js-line-number" data-line-number="5026"></td>
<td id="LC5026" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> HEADERS_RECEIVED (numeric value 2)</span></td>
</tr>
<tr>
<td id="L5027" class="blob-num js-line-number" data-line-number="5027"></td>
<td id="LC5027" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> All redirects (if any) have been followed and all HTTP headers of the final response have been received. Several response members of the object are now available.</span></td>
</tr>
<tr>
<td id="L5028" class="blob-num js-line-number" data-line-number="5028"></td>
<td id="LC5028" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5029" class="blob-num js-line-number" data-line-number="5029"></td>
<td id="LC5029" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> LOADING (numeric value 3)</span></td>
</tr>
<tr>
<td id="L5030" class="blob-num js-line-number" data-line-number="5030"></td>
<td id="LC5030" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The response entity body is being received.</span></td>
</tr>
<tr>
<td id="L5031" class="blob-num js-line-number" data-line-number="5031"></td>
<td id="LC5031" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5032" class="blob-num js-line-number" data-line-number="5032"></td>
<td id="LC5032" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DONE (numeric value 4)</span></td>
</tr>
<tr>
<td id="L5033" class="blob-num js-line-number" data-line-number="5033"></td>
<td id="LC5033" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5034" class="blob-num js-line-number" data-line-number="5034"></td>
<td id="LC5034" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> readyState</span></td>
</tr>
<tr>
<td id="L5035" class="blob-num js-line-number" data-line-number="5035"></td>
<td id="LC5035" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Number</span></td>
</tr>
<tr>
<td id="L5036" class="blob-num js-line-number" data-line-number="5036"></td>
<td id="LC5036" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span> (UNSENT)</span></td>
</tr>
<tr>
<td id="L5037" class="blob-num js-line-number" data-line-number="5037"></td>
<td id="LC5037" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5038" class="blob-num js-line-number" data-line-number="5038"></td>
<td id="LC5038" class="blob-code blob-code-inner js-file-line"> readyState<span class="pl-k">:</span> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">UNSENT</span>,</td>
</tr>
<tr>
<td id="L5039" class="blob-num js-line-number" data-line-number="5039"></td>
<td id="LC5039" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5040" class="blob-num js-line-number" data-line-number="5040"></td>
<td id="LC5040" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5041" class="blob-num js-line-number" data-line-number="5041"></td>
<td id="LC5041" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> True when user credentials are to be included in a cross-origin request. False when they are to be excluded</span></td>
</tr>
<tr>
<td id="L5042" class="blob-num js-line-number" data-line-number="5042"></td>
<td id="LC5042" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> in a cross-origin request and when cookies are to be ignored in its response. Initially false.</span></td>
</tr>
<tr>
<td id="L5043" class="blob-num js-line-number" data-line-number="5043"></td>
<td id="LC5043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5044" class="blob-num js-line-number" data-line-number="5044"></td>
<td id="LC5044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> withCredentials</span></td>
</tr>
<tr>
<td id="L5045" class="blob-num js-line-number" data-line-number="5045"></td>
<td id="LC5045" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Boolean</span></td>
</tr>
<tr>
<td id="L5046" class="blob-num js-line-number" data-line-number="5046"></td>
<td id="LC5046" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">false</span></span></td>
</tr>
<tr>
<td id="L5047" class="blob-num js-line-number" data-line-number="5047"></td>
<td id="LC5047" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5048" class="blob-num js-line-number" data-line-number="5048"></td>
<td id="LC5048" class="blob-code blob-code-inner js-file-line"> withCredentials<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5049" class="blob-num js-line-number" data-line-number="5049"></td>
<td id="LC5049" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5050" class="blob-num js-line-number" data-line-number="5050"></td>
<td id="LC5050" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5051" class="blob-num js-line-number" data-line-number="5051"></td>
<td id="LC5051" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the HTTP status code.</span></td>
</tr>
<tr>
<td id="L5052" class="blob-num js-line-number" data-line-number="5052"></td>
<td id="LC5052" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5053" class="blob-num js-line-number" data-line-number="5053"></td>
<td id="LC5053" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> status</span></td>
</tr>
<tr>
<td id="L5054" class="blob-num js-line-number" data-line-number="5054"></td>
<td id="LC5054" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Number</span></td>
</tr>
<tr>
<td id="L5055" class="blob-num js-line-number" data-line-number="5055"></td>
<td id="LC5055" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L5056" class="blob-num js-line-number" data-line-number="5056"></td>
<td id="LC5056" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5057" class="blob-num js-line-number" data-line-number="5057"></td>
<td id="LC5057" class="blob-code blob-code-inner js-file-line"> status<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L5058" class="blob-num js-line-number" data-line-number="5058"></td>
<td id="LC5058" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5059" class="blob-num js-line-number" data-line-number="5059"></td>
<td id="LC5059" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5060" class="blob-num js-line-number" data-line-number="5060"></td>
<td id="LC5060" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the HTTP status text.</span></td>
</tr>
<tr>
<td id="L5061" class="blob-num js-line-number" data-line-number="5061"></td>
<td id="LC5061" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5062" class="blob-num js-line-number" data-line-number="5062"></td>
<td id="LC5062" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> statusText</span></td>
</tr>
<tr>
<td id="L5063" class="blob-num js-line-number" data-line-number="5063"></td>
<td id="LC5063" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> String</span></td>
</tr>
<tr>
<td id="L5064" class="blob-num js-line-number" data-line-number="5064"></td>
<td id="LC5064" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5065" class="blob-num js-line-number" data-line-number="5065"></td>
<td id="LC5065" class="blob-code blob-code-inner js-file-line"> statusText<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5066" class="blob-num js-line-number" data-line-number="5066"></td>
<td id="LC5066" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5067" class="blob-num js-line-number" data-line-number="5067"></td>
<td id="LC5067" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5068" class="blob-num js-line-number" data-line-number="5068"></td>
<td id="LC5068" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the response type. Can be set to change the response type. Values are:</span></td>
</tr>
<tr>
<td id="L5069" class="blob-num js-line-number" data-line-number="5069"></td>
<td id="LC5069" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> the empty string (default), "arraybuffer", "blob", "document", "json", and "text".</span></td>
</tr>
<tr>
<td id="L5070" class="blob-num js-line-number" data-line-number="5070"></td>
<td id="LC5070" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5071" class="blob-num js-line-number" data-line-number="5071"></td>
<td id="LC5071" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> responseType</span></td>
</tr>
<tr>
<td id="L5072" class="blob-num js-line-number" data-line-number="5072"></td>
<td id="LC5072" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> String</span></td>
</tr>
<tr>
<td id="L5073" class="blob-num js-line-number" data-line-number="5073"></td>
<td id="LC5073" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5074" class="blob-num js-line-number" data-line-number="5074"></td>
<td id="LC5074" class="blob-code blob-code-inner js-file-line"> responseType<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5075" class="blob-num js-line-number" data-line-number="5075"></td>
<td id="LC5075" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5076" class="blob-num js-line-number" data-line-number="5076"></td>
<td id="LC5076" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5077" class="blob-num js-line-number" data-line-number="5077"></td>
<td id="LC5077" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the document response entity body.</span></td>
</tr>
<tr>
<td id="L5078" class="blob-num js-line-number" data-line-number="5078"></td>
<td id="LC5078" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5079" class="blob-num js-line-number" data-line-number="5079"></td>
<td id="LC5079" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws an "InvalidStateError" exception if responseType is not the empty string or "document".</span></td>
</tr>
<tr>
<td id="L5080" class="blob-num js-line-number" data-line-number="5080"></td>
<td id="LC5080" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5081" class="blob-num js-line-number" data-line-number="5081"></td>
<td id="LC5081" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> responseXML</span></td>
</tr>
<tr>
<td id="L5082" class="blob-num js-line-number" data-line-number="5082"></td>
<td id="LC5082" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Document</span></td>
</tr>
<tr>
<td id="L5083" class="blob-num js-line-number" data-line-number="5083"></td>
<td id="LC5083" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5084" class="blob-num js-line-number" data-line-number="5084"></td>
<td id="LC5084" class="blob-code blob-code-inner js-file-line"> responseXML<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5085" class="blob-num js-line-number" data-line-number="5085"></td>
<td id="LC5085" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5086" class="blob-num js-line-number" data-line-number="5086"></td>
<td id="LC5086" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5087" class="blob-num js-line-number" data-line-number="5087"></td>
<td id="LC5087" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the text response entity body.</span></td>
</tr>
<tr>
<td id="L5088" class="blob-num js-line-number" data-line-number="5088"></td>
<td id="LC5088" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5089" class="blob-num js-line-number" data-line-number="5089"></td>
<td id="LC5089" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws an "InvalidStateError" exception if responseType is not the empty string or "text".</span></td>
</tr>
<tr>
<td id="L5090" class="blob-num js-line-number" data-line-number="5090"></td>
<td id="LC5090" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5091" class="blob-num js-line-number" data-line-number="5091"></td>
<td id="LC5091" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> responseText</span></td>
</tr>
<tr>
<td id="L5092" class="blob-num js-line-number" data-line-number="5092"></td>
<td id="LC5092" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> String</span></td>
</tr>
<tr>
<td id="L5093" class="blob-num js-line-number" data-line-number="5093"></td>
<td id="LC5093" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5094" class="blob-num js-line-number" data-line-number="5094"></td>
<td id="LC5094" class="blob-code blob-code-inner js-file-line"> responseText<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5095" class="blob-num js-line-number" data-line-number="5095"></td>
<td id="LC5095" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5096" class="blob-num js-line-number" data-line-number="5096"></td>
<td id="LC5096" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5097" class="blob-num js-line-number" data-line-number="5097"></td>
<td id="LC5097" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the response entity body (http://www.w3.org/TR/XMLHttpRequest/#response-entity-body).</span></td>
</tr>
<tr>
<td id="L5098" class="blob-num js-line-number" data-line-number="5098"></td>
<td id="LC5098" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Can become: ArrayBuffer, Blob, Document, JSON, Text</span></td>
</tr>
<tr>
<td id="L5099" class="blob-num js-line-number" data-line-number="5099"></td>
<td id="LC5099" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5100" class="blob-num js-line-number" data-line-number="5100"></td>
<td id="LC5100" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> response</span></td>
</tr>
<tr>
<td id="L5101" class="blob-num js-line-number" data-line-number="5101"></td>
<td id="LC5101" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> Mixed</span></td>
</tr>
<tr>
<td id="L5102" class="blob-num js-line-number" data-line-number="5102"></td>
<td id="LC5102" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5103" class="blob-num js-line-number" data-line-number="5103"></td>
<td id="LC5103" class="blob-code blob-code-inner js-file-line"> response<span class="pl-k">:</span> <span class="pl-c1">null</span></td>
</tr>
<tr>
<td id="L5104" class="blob-num js-line-number" data-line-number="5104"></td>
<td id="LC5104" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5105" class="blob-num js-line-number" data-line-number="5105"></td>
<td id="LC5105" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5106" class="blob-num js-line-number" data-line-number="5106"></td>
<td id="LC5106" class="blob-code blob-code-inner js-file-line"> _async <span class="pl-k">=</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L5107" class="blob-num js-line-number" data-line-number="5107"></td>
<td id="LC5107" class="blob-code blob-code-inner js-file-line"> _url,</td>
</tr>
<tr>
<td id="L5108" class="blob-num js-line-number" data-line-number="5108"></td>
<td id="LC5108" class="blob-code blob-code-inner js-file-line"> _method,</td>
</tr>
<tr>
<td id="L5109" class="blob-num js-line-number" data-line-number="5109"></td>
<td id="LC5109" class="blob-code blob-code-inner js-file-line"> _headers <span class="pl-k">=</span> {},</td>
</tr>
<tr>
<td id="L5110" class="blob-num js-line-number" data-line-number="5110"></td>
<td id="LC5110" class="blob-code blob-code-inner js-file-line"> _user,</td>
</tr>
<tr>
<td id="L5111" class="blob-num js-line-number" data-line-number="5111"></td>
<td id="LC5111" class="blob-code blob-code-inner js-file-line"> _password,</td>
</tr>
<tr>
<td id="L5112" class="blob-num js-line-number" data-line-number="5112"></td>
<td id="LC5112" class="blob-code blob-code-inner js-file-line"> _encoding <span class="pl-k">=</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5113" class="blob-num js-line-number" data-line-number="5113"></td>
<td id="LC5113" class="blob-code blob-code-inner js-file-line"> _mimeType <span class="pl-k">=</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5114" class="blob-num js-line-number" data-line-number="5114"></td>
<td id="LC5114" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5115" class="blob-num js-line-number" data-line-number="5115"></td>
<td id="LC5115" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> flags</span></td>
</tr>
<tr>
<td id="L5116" class="blob-num js-line-number" data-line-number="5116"></td>
<td id="LC5116" class="blob-code blob-code-inner js-file-line"> _sync_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5117" class="blob-num js-line-number" data-line-number="5117"></td>
<td id="LC5117" class="blob-code blob-code-inner js-file-line"> _send_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5118" class="blob-num js-line-number" data-line-number="5118"></td>
<td id="LC5118" class="blob-code blob-code-inner js-file-line"> _upload_events_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5119" class="blob-num js-line-number" data-line-number="5119"></td>
<td id="LC5119" class="blob-code blob-code-inner js-file-line"> _upload_complete_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5120" class="blob-num js-line-number" data-line-number="5120"></td>
<td id="LC5120" class="blob-code blob-code-inner js-file-line"> _error_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5121" class="blob-num js-line-number" data-line-number="5121"></td>
<td id="LC5121" class="blob-code blob-code-inner js-file-line"> _same_origin_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5122" class="blob-num js-line-number" data-line-number="5122"></td>
<td id="LC5122" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5123" class="blob-num js-line-number" data-line-number="5123"></td>
<td id="LC5123" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> times</span></td>
</tr>
<tr>
<td id="L5124" class="blob-num js-line-number" data-line-number="5124"></td>
<td id="LC5124" class="blob-code blob-code-inner js-file-line"> _start_time,</td>
</tr>
<tr>
<td id="L5125" class="blob-num js-line-number" data-line-number="5125"></td>
<td id="LC5125" class="blob-code blob-code-inner js-file-line"> _timeoutset_time,</td>
</tr>
<tr>
<td id="L5126" class="blob-num js-line-number" data-line-number="5126"></td>
<td id="LC5126" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5127" class="blob-num js-line-number" data-line-number="5127"></td>
<td id="LC5127" class="blob-code blob-code-inner js-file-line"> _finalMime <span class="pl-k">=</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5128" class="blob-num js-line-number" data-line-number="5128"></td>
<td id="LC5128" class="blob-code blob-code-inner js-file-line"> _finalCharset <span class="pl-k">=</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5129" class="blob-num js-line-number" data-line-number="5129"></td>
<td id="LC5129" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5130" class="blob-num js-line-number" data-line-number="5130"></td>
<td id="LC5130" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> {},</td>
</tr>
<tr>
<td id="L5131" class="blob-num js-line-number" data-line-number="5131"></td>
<td id="LC5131" class="blob-code blob-code-inner js-file-line"> _xhr,</td>
</tr>
<tr>
<td id="L5132" class="blob-num js-line-number" data-line-number="5132"></td>
<td id="LC5132" class="blob-code blob-code-inner js-file-line"> _responseHeaders <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L5133" class="blob-num js-line-number" data-line-number="5133"></td>
<td id="LC5133" class="blob-code blob-code-inner js-file-line"> _responseHeadersBag</td>
</tr>
<tr>
<td id="L5134" class="blob-num js-line-number" data-line-number="5134"></td>
<td id="LC5134" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L5135" class="blob-num js-line-number" data-line-number="5135"></td>
<td id="LC5135" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5136" class="blob-num js-line-number" data-line-number="5136"></td>
<td id="LC5136" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5137" class="blob-num js-line-number" data-line-number="5137"></td>
<td id="LC5137" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, props, {</td>
</tr>
<tr>
<td id="L5138" class="blob-num js-line-number" data-line-number="5138"></td>
<td id="LC5138" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5139" class="blob-num js-line-number" data-line-number="5139"></td>
<td id="LC5139" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the component</span></td>
</tr>
<tr>
<td id="L5140" class="blob-num js-line-number" data-line-number="5140"></td>
<td id="LC5140" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5141" class="blob-num js-line-number" data-line-number="5141"></td>
<td id="LC5141" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L5142" class="blob-num js-line-number" data-line-number="5142"></td>
<td id="LC5142" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> String</span></td>
</tr>
<tr>
<td id="L5143" class="blob-num js-line-number" data-line-number="5143"></td>
<td id="LC5143" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5144" class="blob-num js-line-number" data-line-number="5144"></td>
<td id="LC5144" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L5145" class="blob-num js-line-number" data-line-number="5145"></td>
<td id="LC5145" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5146" class="blob-num js-line-number" data-line-number="5146"></td>
<td id="LC5146" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5147" class="blob-num js-line-number" data-line-number="5147"></td>
<td id="LC5147" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Target for Upload events</span></td>
</tr>
<tr>
<td id="L5148" class="blob-num js-line-number" data-line-number="5148"></td>
<td id="LC5148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5149" class="blob-num js-line-number" data-line-number="5149"></td>
<td id="LC5149" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> upload</span></td>
</tr>
<tr>
<td id="L5150" class="blob-num js-line-number" data-line-number="5150"></td>
<td id="LC5150" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> XMLHttpRequestUpload</span></td>
</tr>
<tr>
<td id="L5151" class="blob-num js-line-number" data-line-number="5151"></td>
<td id="LC5151" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5152" class="blob-num js-line-number" data-line-number="5152"></td>
<td id="LC5152" class="blob-code blob-code-inner js-file-line"> upload<span class="pl-k">:</span> <span class="pl-k">new</span> <span class="pl-en">XMLHttpRequestUpload</span>(),</td>
</tr>
<tr>
<td id="L5153" class="blob-num js-line-number" data-line-number="5153"></td>
<td id="LC5153" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5154" class="blob-num js-line-number" data-line-number="5154"></td>
<td id="LC5154" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5155" class="blob-num js-line-number" data-line-number="5155"></td>
<td id="LC5155" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5156" class="blob-num js-line-number" data-line-number="5156"></td>
<td id="LC5156" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Sets the request method, request URL, synchronous flag, request username, and request password.</span></td>
</tr>
<tr>
<td id="L5157" class="blob-num js-line-number" data-line-number="5157"></td>
<td id="LC5157" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5158" class="blob-num js-line-number" data-line-number="5158"></td>
<td id="LC5158" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws a "SyntaxError" exception if one of the following is true:</span></td>
</tr>
<tr>
<td id="L5159" class="blob-num js-line-number" data-line-number="5159"></td>
<td id="LC5159" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5160" class="blob-num js-line-number" data-line-number="5160"></td>
<td id="LC5160" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> method is not a valid HTTP method.</span></td>
</tr>
<tr>
<td id="L5161" class="blob-num js-line-number" data-line-number="5161"></td>
<td id="LC5161" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> url cannot be resolved.</span></td>
</tr>
<tr>
<td id="L5162" class="blob-num js-line-number" data-line-number="5162"></td>
<td id="LC5162" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> url contains the "user:password" format in the userinfo production.</span></td>
</tr>
<tr>
<td id="L5163" class="blob-num js-line-number" data-line-number="5163"></td>
<td id="LC5163" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws a "SecurityError" exception if method is a case-insensitive match for CONNECT, TRACE or TRACK.</span></td>
</tr>
<tr>
<td id="L5164" class="blob-num js-line-number" data-line-number="5164"></td>
<td id="LC5164" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5165" class="blob-num js-line-number" data-line-number="5165"></td>
<td id="LC5165" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws an "InvalidAccessError" exception if one of the following is true:</span></td>
</tr>
<tr>
<td id="L5166" class="blob-num js-line-number" data-line-number="5166"></td>
<td id="LC5166" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5167" class="blob-num js-line-number" data-line-number="5167"></td>
<td id="LC5167" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Either user or password is passed as argument and the origin of url does not match the XMLHttpRequest origin.</span></td>
</tr>
<tr>
<td id="L5168" class="blob-num js-line-number" data-line-number="5168"></td>
<td id="LC5168" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> There is an associated XMLHttpRequest document and either the timeout attribute is not zero,</span></td>
</tr>
<tr>
<td id="L5169" class="blob-num js-line-number" data-line-number="5169"></td>
<td id="LC5169" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> the withCredentials attribute is true, or the responseType attribute is not the empty string.</span></td>
</tr>
<tr>
<td id="L5170" class="blob-num js-line-number" data-line-number="5170"></td>
<td id="LC5170" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5171" class="blob-num js-line-number" data-line-number="5171"></td>
<td id="LC5171" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5172" class="blob-num js-line-number" data-line-number="5172"></td>
<td id="LC5172" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">open</span></span></td>
</tr>
<tr>
<td id="L5173" class="blob-num js-line-number" data-line-number="5173"></td>
<td id="LC5173" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">method</span> HTTP method to use on request</span></td>
</tr>
<tr>
<td id="L5174" class="blob-num js-line-number" data-line-number="5174"></td>
<td id="LC5174" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">url</span> URL to request</span></td>
</tr>
<tr>
<td id="L5175" class="blob-num js-line-number" data-line-number="5175"></td>
<td id="LC5175" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[async<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> If false request will be done in synchronous manner. Asynchronous by default.</span></td>
</tr>
<tr>
<td id="L5176" class="blob-num js-line-number" data-line-number="5176"></td>
<td id="LC5176" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[user]</span> Username to use in HTTP authentication process on server-side</span></td>
</tr>
<tr>
<td id="L5177" class="blob-num js-line-number" data-line-number="5177"></td>
<td id="LC5177" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[password]</span> Password to use in HTTP authentication process on server-side</span></td>
</tr>
<tr>
<td id="L5178" class="blob-num js-line-number" data-line-number="5178"></td>
<td id="LC5178" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5179" class="blob-num js-line-number" data-line-number="5179"></td>
<td id="LC5179" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">open</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">method</span>, <span class="pl-smi">url</span>, <span class="pl-k">async</span>, <span class="pl-smi">user</span>, <span class="pl-smi">password</span>) {</td>
</tr>
<tr>
<td id="L5180" class="blob-num js-line-number" data-line-number="5180"></td>
<td id="LC5180" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> urlp;</td>
</tr>
<tr>
<td id="L5181" class="blob-num js-line-number" data-line-number="5181"></td>
<td id="LC5181" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5182" class="blob-num js-line-number" data-line-number="5182"></td>
<td id="LC5182" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> first two arguments are required</span></td>
</tr>
<tr>
<td id="L5183" class="blob-num js-line-number" data-line-number="5183"></td>
<td id="LC5183" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>method <span class="pl-k">||</span> <span class="pl-k">!</span>url) {</td>
</tr>
<tr>
<td id="L5184" class="blob-num js-line-number" data-line-number="5184"></td>
<td id="LC5184" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">SYNTAX_ERR</span>);</td>
</tr>
<tr>
<td id="L5185" class="blob-num js-line-number" data-line-number="5185"></td>
<td id="LC5185" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5186" class="blob-num js-line-number" data-line-number="5186"></td>
<td id="LC5186" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5187" class="blob-num js-line-number" data-line-number="5187"></td>
<td id="LC5187" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 2 - check if any code point in method is higher than U+00FF or after deflating method it does not match the method</span></td>
</tr>
<tr>
<td id="L5188" class="blob-num js-line-number" data-line-number="5188"></td>
<td id="LC5188" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">[<span class="pl-c1"><span class="pl-c1">\u0100</span>-<span class="pl-c1">\uffff</span></span>]</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(method) <span class="pl-k">||</span> <span class="pl-smi">Encode</span>.<span class="pl-en">utf8_encode</span>(method) <span class="pl-k">!==</span> method) {</td>
</tr>
<tr>
<td id="L5189" class="blob-num js-line-number" data-line-number="5189"></td>
<td id="LC5189" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">SYNTAX_ERR</span>);</td>
</tr>
<tr>
<td id="L5190" class="blob-num js-line-number" data-line-number="5190"></td>
<td id="LC5190" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5191" class="blob-num js-line-number" data-line-number="5191"></td>
<td id="LC5191" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5192" class="blob-num js-line-number" data-line-number="5192"></td>
<td id="LC5192" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 3</span></td>
</tr>
<tr>
<td id="L5193" class="blob-num js-line-number" data-line-number="5193"></td>
<td id="LC5193" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-smi">method</span>.<span class="pl-c1">toUpperCase</span>(), [<span class="pl-s"><span class="pl-pds">'</span>CONNECT<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>DELETE<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>HEAD<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>OPTIONS<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>POST<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>PUT<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>TRACE<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>TRACK<span class="pl-pds">'</span></span>])) {</td>
</tr>
<tr>
<td id="L5194" class="blob-num js-line-number" data-line-number="5194"></td>
<td id="LC5194" class="blob-code blob-code-inner js-file-line"> _method <span class="pl-k">=</span> <span class="pl-smi">method</span>.<span class="pl-c1">toUpperCase</span>();</td>
</tr>
<tr>
<td id="L5195" class="blob-num js-line-number" data-line-number="5195"></td>
<td id="LC5195" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5196" class="blob-num js-line-number" data-line-number="5196"></td>
<td id="LC5196" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5197" class="blob-num js-line-number" data-line-number="5197"></td>
<td id="LC5197" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5198" class="blob-num js-line-number" data-line-number="5198"></td>
<td id="LC5198" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 4 - allowing these methods poses a security risk</span></td>
</tr>
<tr>
<td id="L5199" class="blob-num js-line-number" data-line-number="5199"></td>
<td id="LC5199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(_method, [<span class="pl-s"><span class="pl-pds">'</span>CONNECT<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>TRACE<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>TRACK<span class="pl-pds">'</span></span>])) {</td>
</tr>
<tr>
<td id="L5200" class="blob-num js-line-number" data-line-number="5200"></td>
<td id="LC5200" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">SECURITY_ERR</span>);</td>
</tr>
<tr>
<td id="L5201" class="blob-num js-line-number" data-line-number="5201"></td>
<td id="LC5201" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5202" class="blob-num js-line-number" data-line-number="5202"></td>
<td id="LC5202" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5203" class="blob-num js-line-number" data-line-number="5203"></td>
<td id="LC5203" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 5</span></td>
</tr>
<tr>
<td id="L5204" class="blob-num js-line-number" data-line-number="5204"></td>
<td id="LC5204" class="blob-code blob-code-inner js-file-line"> url <span class="pl-k">=</span> <span class="pl-smi">Encode</span>.<span class="pl-en">utf8_encode</span>(url);</td>
</tr>
<tr>
<td id="L5205" class="blob-num js-line-number" data-line-number="5205"></td>
<td id="LC5205" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5206" class="blob-num js-line-number" data-line-number="5206"></td>
<td id="LC5206" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 6 - Resolve url relative to the XMLHttpRequest base URL. If the algorithm returns an error, throw a "SyntaxError".</span></td>
</tr>
<tr>
<td id="L5207" class="blob-num js-line-number" data-line-number="5207"></td>
<td id="LC5207" class="blob-code blob-code-inner js-file-line"> urlp <span class="pl-k">=</span> <span class="pl-smi">Url</span>.<span class="pl-en">parseUrl</span>(url);</td>
</tr>
<tr>
<td id="L5208" class="blob-num js-line-number" data-line-number="5208"></td>
<td id="LC5208" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5209" class="blob-num js-line-number" data-line-number="5209"></td>
<td id="LC5209" class="blob-code blob-code-inner js-file-line"> _same_origin_flag <span class="pl-k">=</span> <span class="pl-smi">Url</span>.<span class="pl-en">hasSameOrigin</span>(urlp);</td>
</tr>
<tr>
<td id="L5210" class="blob-num js-line-number" data-line-number="5210"></td>
<td id="LC5210" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5211" class="blob-num js-line-number" data-line-number="5211"></td>
<td id="LC5211" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 7 - manually build up absolute url</span></td>
</tr>
<tr>
<td id="L5212" class="blob-num js-line-number" data-line-number="5212"></td>
<td id="LC5212" class="blob-code blob-code-inner js-file-line"> _url <span class="pl-k">=</span> <span class="pl-smi">Url</span>.<span class="pl-en">resolveUrl</span>(url);</td>
</tr>
<tr>
<td id="L5213" class="blob-num js-line-number" data-line-number="5213"></td>
<td id="LC5213" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5214" class="blob-num js-line-number" data-line-number="5214"></td>
<td id="LC5214" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 9-10, 12-13</span></td>
</tr>
<tr>
<td id="L5215" class="blob-num js-line-number" data-line-number="5215"></td>
<td id="LC5215" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((user <span class="pl-k">||</span> password) <span class="pl-k">&&</span> <span class="pl-k">!</span>_same_origin_flag) {</td>
</tr>
<tr>
<td id="L5216" class="blob-num js-line-number" data-line-number="5216"></td>
<td id="LC5216" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_ACCESS_ERR</span>);</td>
</tr>
<tr>
<td id="L5217" class="blob-num js-line-number" data-line-number="5217"></td>
<td id="LC5217" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5218" class="blob-num js-line-number" data-line-number="5218"></td>
<td id="LC5218" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5219" class="blob-num js-line-number" data-line-number="5219"></td>
<td id="LC5219" class="blob-code blob-code-inner js-file-line"> _user <span class="pl-k">=</span> user <span class="pl-k">||</span> <span class="pl-smi">urlp</span>.<span class="pl-smi">user</span>;</td>
</tr>
<tr>
<td id="L5220" class="blob-num js-line-number" data-line-number="5220"></td>
<td id="LC5220" class="blob-code blob-code-inner js-file-line"> _password <span class="pl-k">=</span> password <span class="pl-k">||</span> <span class="pl-smi">urlp</span>.<span class="pl-smi">pass</span>;</td>
</tr>
<tr>
<td id="L5221" class="blob-num js-line-number" data-line-number="5221"></td>
<td id="LC5221" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5222" class="blob-num js-line-number" data-line-number="5222"></td>
<td id="LC5222" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 11</span></td>
</tr>
<tr>
<td id="L5223" class="blob-num js-line-number" data-line-number="5223"></td>
<td id="LC5223" class="blob-code blob-code-inner js-file-line"> _async <span class="pl-k">=</span> <span class="pl-k">async</span> <span class="pl-k">||</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5224" class="blob-num js-line-number" data-line-number="5224"></td>
<td id="LC5224" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5225" class="blob-num js-line-number" data-line-number="5225"></td>
<td id="LC5225" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_async <span class="pl-k">===</span> <span class="pl-c1">false</span> <span class="pl-k">&&</span> (<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>timeout<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>withCredentials<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseType<span class="pl-pds">'</span></span>) <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>)) {</td>
</tr>
<tr>
<td id="L5226" class="blob-num js-line-number" data-line-number="5226"></td>
<td id="LC5226" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_ACCESS_ERR</span>);</td>
</tr>
<tr>
<td id="L5227" class="blob-num js-line-number" data-line-number="5227"></td>
<td id="LC5227" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5228" class="blob-num js-line-number" data-line-number="5228"></td>
<td id="LC5228" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5229" class="blob-num js-line-number" data-line-number="5229"></td>
<td id="LC5229" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 14 - terminate abort()</span></td>
</tr>
<tr>
<td id="L5230" class="blob-num js-line-number" data-line-number="5230"></td>
<td id="LC5230" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5231" class="blob-num js-line-number" data-line-number="5231"></td>
<td id="LC5231" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 15 - terminate send()</span></td>
</tr>
<tr>
<td id="L5232" class="blob-num js-line-number" data-line-number="5232"></td>
<td id="LC5232" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5233" class="blob-num js-line-number" data-line-number="5233"></td>
<td id="LC5233" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 18</span></td>
</tr>
<tr>
<td id="L5234" class="blob-num js-line-number" data-line-number="5234"></td>
<td id="LC5234" class="blob-code blob-code-inner js-file-line"> _sync_flag <span class="pl-k">=</span> <span class="pl-k">!</span>_async;</td>
</tr>
<tr>
<td id="L5235" class="blob-num js-line-number" data-line-number="5235"></td>
<td id="LC5235" class="blob-code blob-code-inner js-file-line"> _send_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L5236" class="blob-num js-line-number" data-line-number="5236"></td>
<td id="LC5236" class="blob-code blob-code-inner js-file-line"> _headers <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L5237" class="blob-num js-line-number" data-line-number="5237"></td>
<td id="LC5237" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_reset</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L5238" class="blob-num js-line-number" data-line-number="5238"></td>
<td id="LC5238" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5239" class="blob-num js-line-number" data-line-number="5239"></td>
<td id="LC5239" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 19</span></td>
</tr>
<tr>
<td id="L5240" class="blob-num js-line-number" data-line-number="5240"></td>
<td id="LC5240" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">OPENED</span>);</td>
</tr>
<tr>
<td id="L5241" class="blob-num js-line-number" data-line-number="5241"></td>
<td id="LC5241" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5242" class="blob-num js-line-number" data-line-number="5242"></td>
<td id="LC5242" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 20</span></td>
</tr>
<tr>
<td id="L5243" class="blob-num js-line-number" data-line-number="5243"></td>
<td id="LC5243" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5244" class="blob-num js-line-number" data-line-number="5244"></td>
<td id="LC5244" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5245" class="blob-num js-line-number" data-line-number="5245"></td>
<td id="LC5245" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5246" class="blob-num js-line-number" data-line-number="5246"></td>
<td id="LC5246" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5247" class="blob-num js-line-number" data-line-number="5247"></td>
<td id="LC5247" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Appends an header to the list of author request headers, or if header is already</span></td>
</tr>
<tr>
<td id="L5248" class="blob-num js-line-number" data-line-number="5248"></td>
<td id="LC5248" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> in the list of author request headers, combines its value with value.</span></td>
</tr>
<tr>
<td id="L5249" class="blob-num js-line-number" data-line-number="5249"></td>
<td id="LC5249" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5250" class="blob-num js-line-number" data-line-number="5250"></td>
<td id="LC5250" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set.</span></td>
</tr>
<tr>
<td id="L5251" class="blob-num js-line-number" data-line-number="5251"></td>
<td id="LC5251" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws a "SyntaxError" exception if header is not a valid HTTP header field name or if value</span></td>
</tr>
<tr>
<td id="L5252" class="blob-num js-line-number" data-line-number="5252"></td>
<td id="LC5252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> is not a valid HTTP header field value.</span></td>
</tr>
<tr>
<td id="L5253" class="blob-num js-line-number" data-line-number="5253"></td>
<td id="LC5253" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5254" class="blob-num js-line-number" data-line-number="5254"></td>
<td id="LC5254" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">setRequestHeader</span></span></td>
</tr>
<tr>
<td id="L5255" class="blob-num js-line-number" data-line-number="5255"></td>
<td id="LC5255" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">header</span></span></td>
</tr>
<tr>
<td id="L5256" class="blob-num js-line-number" data-line-number="5256"></td>
<td id="LC5256" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String|Number}</span> <span class="pl-smi">value</span></span></td>
</tr>
<tr>
<td id="L5257" class="blob-num js-line-number" data-line-number="5257"></td>
<td id="LC5257" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5258" class="blob-num js-line-number" data-line-number="5258"></td>
<td id="LC5258" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setRequestHeader</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">header</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L5259" class="blob-num js-line-number" data-line-number="5259"></td>
<td id="LC5259" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> uaHeaders <span class="pl-k">=</span> [ <span class="pl-c"><span class="pl-c">//</span> these headers are controlled by the user agent</span></td>
</tr>
<tr>
<td id="L5260" class="blob-num js-line-number" data-line-number="5260"></td>
<td id="LC5260" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>accept-charset<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5261" class="blob-num js-line-number" data-line-number="5261"></td>
<td id="LC5261" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>accept-encoding<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5262" class="blob-num js-line-number" data-line-number="5262"></td>
<td id="LC5262" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>access-control-request-headers<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5263" class="blob-num js-line-number" data-line-number="5263"></td>
<td id="LC5263" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>access-control-request-method<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5264" class="blob-num js-line-number" data-line-number="5264"></td>
<td id="LC5264" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>connection<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5265" class="blob-num js-line-number" data-line-number="5265"></td>
<td id="LC5265" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>content-length<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5266" class="blob-num js-line-number" data-line-number="5266"></td>
<td id="LC5266" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>cookie<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5267" class="blob-num js-line-number" data-line-number="5267"></td>
<td id="LC5267" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>cookie2<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5268" class="blob-num js-line-number" data-line-number="5268"></td>
<td id="LC5268" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>content-transfer-encoding<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5269" class="blob-num js-line-number" data-line-number="5269"></td>
<td id="LC5269" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>date<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5270" class="blob-num js-line-number" data-line-number="5270"></td>
<td id="LC5270" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>expect<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5271" class="blob-num js-line-number" data-line-number="5271"></td>
<td id="LC5271" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>host<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5272" class="blob-num js-line-number" data-line-number="5272"></td>
<td id="LC5272" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>keep-alive<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5273" class="blob-num js-line-number" data-line-number="5273"></td>
<td id="LC5273" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>origin<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5274" class="blob-num js-line-number" data-line-number="5274"></td>
<td id="LC5274" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>referer<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5275" class="blob-num js-line-number" data-line-number="5275"></td>
<td id="LC5275" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>te<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5276" class="blob-num js-line-number" data-line-number="5276"></td>
<td id="LC5276" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>trailer<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5277" class="blob-num js-line-number" data-line-number="5277"></td>
<td id="LC5277" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>transfer-encoding<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5278" class="blob-num js-line-number" data-line-number="5278"></td>
<td id="LC5278" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>upgrade<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5279" class="blob-num js-line-number" data-line-number="5279"></td>
<td id="LC5279" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>user-agent<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5280" class="blob-num js-line-number" data-line-number="5280"></td>
<td id="LC5280" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>via<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L5281" class="blob-num js-line-number" data-line-number="5281"></td>
<td id="LC5281" class="blob-code blob-code-inner js-file-line"> ];</td>
</tr>
<tr>
<td id="L5282" class="blob-num js-line-number" data-line-number="5282"></td>
<td id="LC5282" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5283" class="blob-num js-line-number" data-line-number="5283"></td>
<td id="LC5283" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 1-2</span></td>
</tr>
<tr>
<td id="L5284" class="blob-num js-line-number" data-line-number="5284"></td>
<td id="LC5284" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>) <span class="pl-k">!==</span> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">OPENED</span> <span class="pl-k">||</span> _send_flag) {</td>
</tr>
<tr>
<td id="L5285" class="blob-num js-line-number" data-line-number="5285"></td>
<td id="LC5285" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L5286" class="blob-num js-line-number" data-line-number="5286"></td>
<td id="LC5286" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5287" class="blob-num js-line-number" data-line-number="5287"></td>
<td id="LC5287" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5288" class="blob-num js-line-number" data-line-number="5288"></td>
<td id="LC5288" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 3</span></td>
</tr>
<tr>
<td id="L5289" class="blob-num js-line-number" data-line-number="5289"></td>
<td id="LC5289" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">[<span class="pl-c1"><span class="pl-c1">\u0100</span>-<span class="pl-c1">\uffff</span></span>]</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(header) <span class="pl-k">||</span> <span class="pl-smi">Encode</span>.<span class="pl-en">utf8_encode</span>(header) <span class="pl-k">!==</span> header) {</td>
</tr>
<tr>
<td id="L5290" class="blob-num js-line-number" data-line-number="5290"></td>
<td id="LC5290" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">SYNTAX_ERR</span>);</td>
</tr>
<tr>
<td id="L5291" class="blob-num js-line-number" data-line-number="5291"></td>
<td id="LC5291" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5292" class="blob-num js-line-number" data-line-number="5292"></td>
<td id="LC5292" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5293" class="blob-num js-line-number" data-line-number="5293"></td>
<td id="LC5293" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 4</span></td>
</tr>
<tr>
<td id="L5294" class="blob-num js-line-number" data-line-number="5294"></td>
<td id="LC5294" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> this step is seemingly bypassed in browsers, probably to allow various unicode characters in header values</span></td>
</tr>
<tr>
<td id="L5295" class="blob-num js-line-number" data-line-number="5295"></td>
<td id="LC5295" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (/[\u0100-\uffff]/.test(value) || Encode.utf8_encode(value) !== value) {</span></td>
</tr>
<tr>
<td id="L5296" class="blob-num js-line-number" data-line-number="5296"></td>
<td id="LC5296" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.SYNTAX_ERR);</span></td>
</tr>
<tr>
<td id="L5297" class="blob-num js-line-number" data-line-number="5297"></td>
<td id="LC5297" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }<span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5298" class="blob-num js-line-number" data-line-number="5298"></td>
<td id="LC5298" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5299" class="blob-num js-line-number" data-line-number="5299"></td>
<td id="LC5299" class="blob-code blob-code-inner js-file-line"> header <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(header).<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L5300" class="blob-num js-line-number" data-line-number="5300"></td>
<td id="LC5300" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5301" class="blob-num js-line-number" data-line-number="5301"></td>
<td id="LC5301" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> setting of proxy-* and sec-* headers is prohibited by spec</span></td>
</tr>
<tr>
<td id="L5302" class="blob-num js-line-number" data-line-number="5302"></td>
<td id="LC5302" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(header, uaHeaders) <span class="pl-k">||</span><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-k">^</span>(proxy<span class="pl-cce">\-</span><span class="pl-k">|</span>sec<span class="pl-cce">\-</span>)<span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(header)) {</td>
</tr>
<tr>
<td id="L5303" class="blob-num js-line-number" data-line-number="5303"></td>
<td id="LC5303" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L5304" class="blob-num js-line-number" data-line-number="5304"></td>
<td id="LC5304" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5305" class="blob-num js-line-number" data-line-number="5305"></td>
<td id="LC5305" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5306" class="blob-num js-line-number" data-line-number="5306"></td>
<td id="LC5306" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> camelize</span></td>
</tr>
<tr>
<td id="L5307" class="blob-num js-line-number" data-line-number="5307"></td>
<td id="LC5307" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> browsers lowercase header names (at least for custom ones)</span></td>
</tr>
<tr>
<td id="L5308" class="blob-num js-line-number" data-line-number="5308"></td>
<td id="LC5308" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> header = header.replace(/\b\w/g, function($1) { return $1.toUpperCase(); });</span></td>
</tr>
<tr>
<td id="L5309" class="blob-num js-line-number" data-line-number="5309"></td>
<td id="LC5309" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5310" class="blob-num js-line-number" data-line-number="5310"></td>
<td id="LC5310" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_headers[header]) {</td>
</tr>
<tr>
<td id="L5311" class="blob-num js-line-number" data-line-number="5311"></td>
<td id="LC5311" class="blob-code blob-code-inner js-file-line"> _headers[header] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L5312" class="blob-num js-line-number" data-line-number="5312"></td>
<td id="LC5312" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5313" class="blob-num js-line-number" data-line-number="5313"></td>
<td id="LC5313" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> http://tools.ietf.org/html/rfc2616#section-4.2 (last paragraph)</span></td>
</tr>
<tr>
<td id="L5314" class="blob-num js-line-number" data-line-number="5314"></td>
<td id="LC5314" class="blob-code blob-code-inner js-file-line"> _headers[header] <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span>, <span class="pl-pds">'</span></span> <span class="pl-k">+</span> value;</td>
</tr>
<tr>
<td id="L5315" class="blob-num js-line-number" data-line-number="5315"></td>
<td id="LC5315" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5316" class="blob-num js-line-number" data-line-number="5316"></td>
<td id="LC5316" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5317" class="blob-num js-line-number" data-line-number="5317"></td>
<td id="LC5317" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5318" class="blob-num js-line-number" data-line-number="5318"></td>
<td id="LC5318" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5319" class="blob-num js-line-number" data-line-number="5319"></td>
<td id="LC5319" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5320" class="blob-num js-line-number" data-line-number="5320"></td>
<td id="LC5320" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Test if the specified header is already set on this request.</span></td>
</tr>
<tr>
<td id="L5321" class="blob-num js-line-number" data-line-number="5321"></td>
<td id="LC5321" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Returns a header value or boolean false if it's not yet set.</span></td>
</tr>
<tr>
<td id="L5322" class="blob-num js-line-number" data-line-number="5322"></td>
<td id="LC5322" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L5323" class="blob-num js-line-number" data-line-number="5323"></td>
<td id="LC5323" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@method</span> <span class="pl-en">hasRequestHeader</span></span></td>
</tr>
<tr>
<td id="L5324" class="blob-num js-line-number" data-line-number="5324"></td>
<td id="LC5324" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">header</span> Name of the header to test</span></td>
</tr>
<tr>
<td id="L5325" class="blob-num js-line-number" data-line-number="5325"></td>
<td id="LC5325" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@return</span> <span class="pl-en">{Boolean|String}</span></span></td>
</tr>
<tr>
<td id="L5326" class="blob-num js-line-number" data-line-number="5326"></td>
<td id="LC5326" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5327" class="blob-num js-line-number" data-line-number="5327"></td>
<td id="LC5327" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">hasRequestHeader</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">header</span>) {</td>
</tr>
<tr>
<td id="L5328" class="blob-num js-line-number" data-line-number="5328"></td>
<td id="LC5328" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> header <span class="pl-k">&&</span> _headers[<span class="pl-smi">header</span>.<span class="pl-c1">toLowerCase</span>()] <span class="pl-k">||</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L5329" class="blob-num js-line-number" data-line-number="5329"></td>
<td id="LC5329" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5330" class="blob-num js-line-number" data-line-number="5330"></td>
<td id="LC5330" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5331" class="blob-num js-line-number" data-line-number="5331"></td>
<td id="LC5331" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5332" class="blob-num js-line-number" data-line-number="5332"></td>
<td id="LC5332" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns all headers from the response, with the exception of those whose field name is Set-Cookie or Set-Cookie2.</span></td>
</tr>
<tr>
<td id="L5333" class="blob-num js-line-number" data-line-number="5333"></td>
<td id="LC5333" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5334" class="blob-num js-line-number" data-line-number="5334"></td>
<td id="LC5334" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getAllResponseHeaders</span></span></td>
</tr>
<tr>
<td id="L5335" class="blob-num js-line-number" data-line-number="5335"></td>
<td id="LC5335" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> reponse headers or empty string</span></td>
</tr>
<tr>
<td id="L5336" class="blob-num js-line-number" data-line-number="5336"></td>
<td id="LC5336" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5337" class="blob-num js-line-number" data-line-number="5337"></td>
<td id="LC5337" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAllResponseHeaders</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L5338" class="blob-num js-line-number" data-line-number="5338"></td>
<td id="LC5338" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _responseHeaders <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L5339" class="blob-num js-line-number" data-line-number="5339"></td>
<td id="LC5339" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5340" class="blob-num js-line-number" data-line-number="5340"></td>
<td id="LC5340" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5341" class="blob-num js-line-number" data-line-number="5341"></td>
<td id="LC5341" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5342" class="blob-num js-line-number" data-line-number="5342"></td>
<td id="LC5342" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Returns the header field value from the response of which the field name matches header,</span></td>
</tr>
<tr>
<td id="L5343" class="blob-num js-line-number" data-line-number="5343"></td>
<td id="LC5343" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> unless the field name is Set-Cookie or Set-Cookie2.</span></td>
</tr>
<tr>
<td id="L5344" class="blob-num js-line-number" data-line-number="5344"></td>
<td id="LC5344" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5345" class="blob-num js-line-number" data-line-number="5345"></td>
<td id="LC5345" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getResponseHeader</span></span></td>
</tr>
<tr>
<td id="L5346" class="blob-num js-line-number" data-line-number="5346"></td>
<td id="LC5346" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">header</span></span></td>
</tr>
<tr>
<td id="L5347" class="blob-num js-line-number" data-line-number="5347"></td>
<td id="LC5347" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> value(s) for the specified header or null</span></td>
</tr>
<tr>
<td id="L5348" class="blob-num js-line-number" data-line-number="5348"></td>
<td id="LC5348" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5349" class="blob-num js-line-number" data-line-number="5349"></td>
<td id="LC5349" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getResponseHeader</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">header</span>) {</td>
</tr>
<tr>
<td id="L5350" class="blob-num js-line-number" data-line-number="5350"></td>
<td id="LC5350" class="blob-code blob-code-inner js-file-line"> header <span class="pl-k">=</span> <span class="pl-smi">header</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L5351" class="blob-num js-line-number" data-line-number="5351"></td>
<td id="LC5351" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5352" class="blob-num js-line-number" data-line-number="5352"></td>
<td id="LC5352" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_error_flag <span class="pl-k">||</span> <span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(header, [<span class="pl-s"><span class="pl-pds">'</span>set-cookie<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>set-cookie2<span class="pl-pds">'</span></span>])) {</td>
</tr>
<tr>
<td id="L5353" class="blob-num js-line-number" data-line-number="5353"></td>
<td id="LC5353" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5354" class="blob-num js-line-number" data-line-number="5354"></td>
<td id="LC5354" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5355" class="blob-num js-line-number" data-line-number="5355"></td>
<td id="LC5355" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5356" class="blob-num js-line-number" data-line-number="5356"></td>
<td id="LC5356" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_responseHeaders <span class="pl-k">&&</span> _responseHeaders <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L5357" class="blob-num js-line-number" data-line-number="5357"></td>
<td id="LC5357" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if we didn't parse response headers until now, do it and keep for later</span></td>
</tr>
<tr>
<td id="L5358" class="blob-num js-line-number" data-line-number="5358"></td>
<td id="LC5358" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_responseHeadersBag) {</td>
</tr>
<tr>
<td id="L5359" class="blob-num js-line-number" data-line-number="5359"></td>
<td id="LC5359" class="blob-code blob-code-inner js-file-line"> _responseHeadersBag <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L5360" class="blob-num js-line-number" data-line-number="5360"></td>
<td id="LC5360" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">_responseHeaders</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\r\n</span><span class="pl-pds">/</span></span>), <span class="pl-k">function</span>(<span class="pl-smi">line</span>) {</td>
</tr>
<tr>
<td id="L5361" class="blob-num js-line-number" data-line-number="5361"></td>
<td id="LC5361" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> pair <span class="pl-k">=</span> <span class="pl-smi">line</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span>:<span class="pl-c1">\s</span><span class="pl-k">+</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L5362" class="blob-num js-line-number" data-line-number="5362"></td>
<td id="LC5362" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">pair</span>.<span class="pl-c1">length</span> <span class="pl-k">===</span> <span class="pl-c1">2</span>) { <span class="pl-c"><span class="pl-c">//</span> last line might be empty, omit</span></td>
</tr>
<tr>
<td id="L5363" class="blob-num js-line-number" data-line-number="5363"></td>
<td id="LC5363" class="blob-code blob-code-inner js-file-line"> pair[<span class="pl-c1">0</span>] <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(pair[<span class="pl-c1">0</span>]); <span class="pl-c"><span class="pl-c">//</span> just in case</span></td>
</tr>
<tr>
<td id="L5364" class="blob-num js-line-number" data-line-number="5364"></td>
<td id="LC5364" class="blob-code blob-code-inner js-file-line"> _responseHeadersBag[pair[<span class="pl-c1">0</span>].<span class="pl-c1">toLowerCase</span>()] <span class="pl-k">=</span> { <span class="pl-c"><span class="pl-c">//</span> simply to retain header name in original form</span></td>
</tr>
<tr>
<td id="L5365" class="blob-num js-line-number" data-line-number="5365"></td>
<td id="LC5365" class="blob-code blob-code-inner js-file-line"> header<span class="pl-k">:</span> pair[<span class="pl-c1">0</span>],</td>
</tr>
<tr>
<td id="L5366" class="blob-num js-line-number" data-line-number="5366"></td>
<td id="LC5366" class="blob-code blob-code-inner js-file-line"> value<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(pair[<span class="pl-c1">1</span>])</td>
</tr>
<tr>
<td id="L5367" class="blob-num js-line-number" data-line-number="5367"></td>
<td id="LC5367" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L5368" class="blob-num js-line-number" data-line-number="5368"></td>
<td id="LC5368" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5369" class="blob-num js-line-number" data-line-number="5369"></td>
<td id="LC5369" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5370" class="blob-num js-line-number" data-line-number="5370"></td>
<td id="LC5370" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5371" class="blob-num js-line-number" data-line-number="5371"></td>
<td id="LC5371" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_responseHeadersBag</span>.<span class="pl-en">hasOwnProperty</span>(header)) {</td>
</tr>
<tr>
<td id="L5372" class="blob-num js-line-number" data-line-number="5372"></td>
<td id="LC5372" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _responseHeadersBag[header].<span class="pl-smi">header</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>: <span class="pl-pds">'</span></span> <span class="pl-k">+</span> _responseHeadersBag[header].<span class="pl-c1">value</span>;</td>
</tr>
<tr>
<td id="L5373" class="blob-num js-line-number" data-line-number="5373"></td>
<td id="LC5373" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5374" class="blob-num js-line-number" data-line-number="5374"></td>
<td id="LC5374" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5375" class="blob-num js-line-number" data-line-number="5375"></td>
<td id="LC5375" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5376" class="blob-num js-line-number" data-line-number="5376"></td>
<td id="LC5376" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5377" class="blob-num js-line-number" data-line-number="5377"></td>
<td id="LC5377" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5378" class="blob-num js-line-number" data-line-number="5378"></td>
<td id="LC5378" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5379" class="blob-num js-line-number" data-line-number="5379"></td>
<td id="LC5379" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Sets the Content-Type header for the response to mime.</span></td>
</tr>
<tr>
<td id="L5380" class="blob-num js-line-number" data-line-number="5380"></td>
<td id="LC5380" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws an "InvalidStateError" exception if the state is LOADING or DONE.</span></td>
</tr>
<tr>
<td id="L5381" class="blob-num js-line-number" data-line-number="5381"></td>
<td id="LC5381" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws a "SyntaxError" exception if mime is not a valid media type.</span></td>
</tr>
<tr>
<td id="L5382" class="blob-num js-line-number" data-line-number="5382"></td>
<td id="LC5382" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5383" class="blob-num js-line-number" data-line-number="5383"></td>
<td id="LC5383" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">overrideMimeType</span></span></td>
</tr>
<tr>
<td id="L5384" class="blob-num js-line-number" data-line-number="5384"></td>
<td id="LC5384" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-smi">String</span> mime Mime type to set</span></td>
</tr>
<tr>
<td id="L5385" class="blob-num js-line-number" data-line-number="5385"></td>
<td id="LC5385" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5386" class="blob-num js-line-number" data-line-number="5386"></td>
<td id="LC5386" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">overrideMimeType</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">mime</span>) {</td>
</tr>
<tr>
<td id="L5387" class="blob-num js-line-number" data-line-number="5387"></td>
<td id="LC5387" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> matches, charset;</td>
</tr>
<tr>
<td id="L5388" class="blob-num js-line-number" data-line-number="5388"></td>
<td id="LC5388" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5389" class="blob-num js-line-number" data-line-number="5389"></td>
<td id="LC5389" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 1</span></td>
</tr>
<tr>
<td id="L5390" class="blob-num js-line-number" data-line-number="5390"></td>
<td id="LC5390" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>), [<span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">LOADING</span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">DONE</span>])) {</td>
</tr>
<tr>
<td id="L5391" class="blob-num js-line-number" data-line-number="5391"></td>
<td id="LC5391" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L5392" class="blob-num js-line-number" data-line-number="5392"></td>
<td id="LC5392" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5393" class="blob-num js-line-number" data-line-number="5393"></td>
<td id="LC5393" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5394" class="blob-num js-line-number" data-line-number="5394"></td>
<td id="LC5394" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 2</span></td>
</tr>
<tr>
<td id="L5395" class="blob-num js-line-number" data-line-number="5395"></td>
<td id="LC5395" class="blob-code blob-code-inner js-file-line"> mime <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(<span class="pl-smi">mime</span>.<span class="pl-c1">toLowerCase</span>());</td>
</tr>
<tr>
<td id="L5396" class="blob-num js-line-number" data-line-number="5396"></td>
<td id="LC5396" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5397" class="blob-num js-line-number" data-line-number="5397"></td>
<td id="LC5397" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span>;<span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(mime) <span class="pl-k">&&</span> (matches <span class="pl-k">=</span> <span class="pl-smi">mime</span>.<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>(<span class="pl-c1">[<span class="pl-k">^</span>;]</span><span class="pl-k">+</span>)(?:;<span class="pl-c1">\s</span>charset<span class="pl-cce">\=</span>)<span class="pl-k">?</span>(<span class="pl-c1">.</span><span class="pl-k">*</span>)<span class="pl-k">$</span><span class="pl-pds">/</span></span>))) {</td>
</tr>
<tr>
<td id="L5398" class="blob-num js-line-number" data-line-number="5398"></td>
<td id="LC5398" class="blob-code blob-code-inner js-file-line"> mime <span class="pl-k">=</span> matches[<span class="pl-c1">1</span>];</td>
</tr>
<tr>
<td id="L5399" class="blob-num js-line-number" data-line-number="5399"></td>
<td id="LC5399" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (matches[<span class="pl-c1">2</span>]) {</td>
</tr>
<tr>
<td id="L5400" class="blob-num js-line-number" data-line-number="5400"></td>
<td id="LC5400" class="blob-code blob-code-inner js-file-line"> charset <span class="pl-k">=</span> matches[<span class="pl-c1">2</span>];</td>
</tr>
<tr>
<td id="L5401" class="blob-num js-line-number" data-line-number="5401"></td>
<td id="LC5401" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5402" class="blob-num js-line-number" data-line-number="5402"></td>
<td id="LC5402" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5403" class="blob-num js-line-number" data-line-number="5403"></td>
<td id="LC5403" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5404" class="blob-num js-line-number" data-line-number="5404"></td>
<td id="LC5404" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">Mime</span>.<span class="pl-smi">mimes</span>[mime]) {</td>
</tr>
<tr>
<td id="L5405" class="blob-num js-line-number" data-line-number="5405"></td>
<td id="LC5405" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">SYNTAX_ERR</span>);</td>
</tr>
<tr>
<td id="L5406" class="blob-num js-line-number" data-line-number="5406"></td>
<td id="LC5406" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5407" class="blob-num js-line-number" data-line-number="5407"></td>
<td id="LC5407" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5408" class="blob-num js-line-number" data-line-number="5408"></td>
<td id="LC5408" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 3-4</span></td>
</tr>
<tr>
<td id="L5409" class="blob-num js-line-number" data-line-number="5409"></td>
<td id="LC5409" class="blob-code blob-code-inner js-file-line"> _finalMime <span class="pl-k">=</span> mime;</td>
</tr>
<tr>
<td id="L5410" class="blob-num js-line-number" data-line-number="5410"></td>
<td id="LC5410" class="blob-code blob-code-inner js-file-line"> _finalCharset <span class="pl-k">=</span> charset;</td>
</tr>
<tr>
<td id="L5411" class="blob-num js-line-number" data-line-number="5411"></td>
<td id="LC5411" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5412" class="blob-num js-line-number" data-line-number="5412"></td>
<td id="LC5412" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5413" class="blob-num js-line-number" data-line-number="5413"></td>
<td id="LC5413" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5414" class="blob-num js-line-number" data-line-number="5414"></td>
<td id="LC5414" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Initiates the request. The optional argument provides the request entity body.</span></td>
</tr>
<tr>
<td id="L5415" class="blob-num js-line-number" data-line-number="5415"></td>
<td id="LC5415" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The argument is ignored if request method is GET or HEAD.</span></td>
</tr>
<tr>
<td id="L5416" class="blob-num js-line-number" data-line-number="5416"></td>
<td id="LC5416" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5417" class="blob-num js-line-number" data-line-number="5417"></td>
<td id="LC5417" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Throws an "InvalidStateError" exception if the state is not OPENED or if the send() flag is set.</span></td>
</tr>
<tr>
<td id="L5418" class="blob-num js-line-number" data-line-number="5418"></td>
<td id="LC5418" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5419" class="blob-num js-line-number" data-line-number="5419"></td>
<td id="LC5419" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">send</span></span></td>
</tr>
<tr>
<td id="L5420" class="blob-num js-line-number" data-line-number="5420"></td>
<td id="LC5420" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Blob|Document|String|FormData}</span> <span class="pl-smi">[data]</span> Request entity body</span></td>
</tr>
<tr>
<td id="L5421" class="blob-num js-line-number" data-line-number="5421"></td>
<td id="LC5421" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[options]</span> Set of requirements and pre-requisities for runtime initialization</span></td>
</tr>
<tr>
<td id="L5422" class="blob-num js-line-number" data-line-number="5422"></td>
<td id="LC5422" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5423" class="blob-num js-line-number" data-line-number="5423"></td>
<td id="LC5423" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>, <span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L5424" class="blob-num js-line-number" data-line-number="5424"></td>
<td id="LC5424" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(options) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L5425" class="blob-num js-line-number" data-line-number="5425"></td>
<td id="LC5425" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> { ruid<span class="pl-k">:</span> options };</td>
</tr>
<tr>
<td id="L5426" class="blob-num js-line-number" data-line-number="5426"></td>
<td id="LC5426" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-k">!</span>options) {</td>
</tr>
<tr>
<td id="L5427" class="blob-num js-line-number" data-line-number="5427"></td>
<td id="LC5427" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L5428" class="blob-num js-line-number" data-line-number="5428"></td>
<td id="LC5428" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5429" class="blob-num js-line-number" data-line-number="5429"></td>
<td id="LC5429" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> options;</td>
</tr>
<tr>
<td id="L5430" class="blob-num js-line-number" data-line-number="5430"></td>
<td id="LC5430" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5431" class="blob-num js-line-number" data-line-number="5431"></td>
<td id="LC5431" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5432" class="blob-num js-line-number" data-line-number="5432"></td>
<td id="LC5432" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 1-2</span></td>
</tr>
<tr>
<td id="L5433" class="blob-num js-line-number" data-line-number="5433"></td>
<td id="LC5433" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-c1">readyState</span> <span class="pl-k">!==</span> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">OPENED</span> <span class="pl-k">||</span> _send_flag) {</td>
</tr>
<tr>
<td id="L5434" class="blob-num js-line-number" data-line-number="5434"></td>
<td id="LC5434" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L5435" class="blob-num js-line-number" data-line-number="5435"></td>
<td id="LC5435" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5436" class="blob-num js-line-number" data-line-number="5436"></td>
<td id="LC5436" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5437" class="blob-num js-line-number" data-line-number="5437"></td>
<td id="LC5437" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 3</span></td>
</tr>
<tr>
<td id="L5438" class="blob-num js-line-number" data-line-number="5438"></td>
<td id="LC5438" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> sending Blob</span></td>
</tr>
<tr>
<td id="L5439" class="blob-num js-line-number" data-line-number="5439"></td>
<td id="LC5439" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L5440" class="blob-num js-line-number" data-line-number="5440"></td>
<td id="LC5440" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-smi">ruid</span>;</td>
</tr>
<tr>
<td id="L5441" class="blob-num js-line-number" data-line-number="5441"></td>
<td id="LC5441" class="blob-code blob-code-inner js-file-line"> _mimeType <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>application/octet-stream<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L5442" class="blob-num js-line-number" data-line-number="5442"></td>
<td id="LC5442" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5443" class="blob-num js-line-number" data-line-number="5443"></td>
<td id="LC5443" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5444" class="blob-num js-line-number" data-line-number="5444"></td>
<td id="LC5444" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> FormData</span></td>
</tr>
<tr>
<td id="L5445" class="blob-num js-line-number" data-line-number="5445"></td>
<td id="LC5445" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span>) {</td>
</tr>
<tr>
<td id="L5446" class="blob-num js-line-number" data-line-number="5446"></td>
<td id="LC5446" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">data</span>.<span class="pl-en">hasBlob</span>()) {</td>
</tr>
<tr>
<td id="L5447" class="blob-num js-line-number" data-line-number="5447"></td>
<td id="LC5447" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> blob <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">getBlob</span>();</td>
</tr>
<tr>
<td id="L5448" class="blob-num js-line-number" data-line-number="5448"></td>
<td id="LC5448" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-smi">ruid</span>;</td>
</tr>
<tr>
<td id="L5449" class="blob-num js-line-number" data-line-number="5449"></td>
<td id="LC5449" class="blob-code blob-code-inner js-file-line"> _mimeType <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>application/octet-stream<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L5450" class="blob-num js-line-number" data-line-number="5450"></td>
<td id="LC5450" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5451" class="blob-num js-line-number" data-line-number="5451"></td>
<td id="LC5451" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5452" class="blob-num js-line-number" data-line-number="5452"></td>
<td id="LC5452" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5453" class="blob-num js-line-number" data-line-number="5453"></td>
<td id="LC5453" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> DOMString</span></td>
</tr>
<tr>
<td id="L5454" class="blob-num js-line-number" data-line-number="5454"></td>
<td id="LC5454" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> data <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L5455" class="blob-num js-line-number" data-line-number="5455"></td>
<td id="LC5455" class="blob-code blob-code-inner js-file-line"> _encoding <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>UTF-8<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L5456" class="blob-num js-line-number" data-line-number="5456"></td>
<td id="LC5456" class="blob-code blob-code-inner js-file-line"> _mimeType <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>text/plain;charset=UTF-8<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L5457" class="blob-num js-line-number" data-line-number="5457"></td>
<td id="LC5457" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5458" class="blob-num js-line-number" data-line-number="5458"></td>
<td id="LC5458" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> data should be converted to Unicode and encoded as UTF-8</span></td>
</tr>
<tr>
<td id="L5459" class="blob-num js-line-number" data-line-number="5459"></td>
<td id="LC5459" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">Encode</span>.<span class="pl-en">utf8_encode</span>(data);</td>
</tr>
<tr>
<td id="L5460" class="blob-num js-line-number" data-line-number="5460"></td>
<td id="LC5460" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5461" class="blob-num js-line-number" data-line-number="5461"></td>
<td id="LC5461" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5462" class="blob-num js-line-number" data-line-number="5462"></td>
<td id="LC5462" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if withCredentials not set, but requested, set it automatically</span></td>
</tr>
<tr>
<td id="L5463" class="blob-num js-line-number" data-line-number="5463"></td>
<td id="LC5463" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-smi">withCredentials</span>) {</td>
</tr>
<tr>
<td id="L5464" class="blob-num js-line-number" data-line-number="5464"></td>
<td id="LC5464" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">withCredentials</span> <span class="pl-k">=</span> (<span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span> <span class="pl-k">&&</span> <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>.<span class="pl-smi">send_browser_cookies</span>) <span class="pl-k">&&</span> <span class="pl-k">!</span>_same_origin_flag;</td>
</tr>
<tr>
<td id="L5465" class="blob-num js-line-number" data-line-number="5465"></td>
<td id="LC5465" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5466" class="blob-num js-line-number" data-line-number="5466"></td>
<td id="LC5466" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5467" class="blob-num js-line-number" data-line-number="5467"></td>
<td id="LC5467" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 4 - storage mutex</span></td>
</tr>
<tr>
<td id="L5468" class="blob-num js-line-number" data-line-number="5468"></td>
<td id="LC5468" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 5</span></td>
</tr>
<tr>
<td id="L5469" class="blob-num js-line-number" data-line-number="5469"></td>
<td id="LC5469" class="blob-code blob-code-inner js-file-line"> _upload_events_flag <span class="pl-k">=</span> (<span class="pl-k">!</span>_sync_flag <span class="pl-k">&&</span> <span class="pl-c1">this</span>.<span class="pl-smi">upload</span>.<span class="pl-en">hasEventListener</span>()); <span class="pl-c"><span class="pl-c">//</span> DSAP</span></td>
</tr>
<tr>
<td id="L5470" class="blob-num js-line-number" data-line-number="5470"></td>
<td id="LC5470" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 6</span></td>
</tr>
<tr>
<td id="L5471" class="blob-num js-line-number" data-line-number="5471"></td>
<td id="LC5471" class="blob-code blob-code-inner js-file-line"> _error_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L5472" class="blob-num js-line-number" data-line-number="5472"></td>
<td id="LC5472" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 7</span></td>
</tr>
<tr>
<td id="L5473" class="blob-num js-line-number" data-line-number="5473"></td>
<td id="LC5473" class="blob-code blob-code-inner js-file-line"> _upload_complete_flag <span class="pl-k">=</span> <span class="pl-k">!</span>data;</td>
</tr>
<tr>
<td id="L5474" class="blob-num js-line-number" data-line-number="5474"></td>
<td id="LC5474" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 8 - Asynchronous steps</span></td>
</tr>
<tr>
<td id="L5475" class="blob-num js-line-number" data-line-number="5475"></td>
<td id="LC5475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_sync_flag) {</td>
</tr>
<tr>
<td id="L5476" class="blob-num js-line-number" data-line-number="5476"></td>
<td id="LC5476" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 8.1</span></td>
</tr>
<tr>
<td id="L5477" class="blob-num js-line-number" data-line-number="5477"></td>
<td id="LC5477" class="blob-code blob-code-inner js-file-line"> _send_flag <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5478" class="blob-num js-line-number" data-line-number="5478"></td>
<td id="LC5478" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 8.2</span></td>
</tr>
<tr>
<td id="L5479" class="blob-num js-line-number" data-line-number="5479"></td>
<td id="LC5479" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this.dispatchEvent('loadstart'); // will be dispatched either by native or runtime xhr</span></td>
</tr>
<tr>
<td id="L5480" class="blob-num js-line-number" data-line-number="5480"></td>
<td id="LC5480" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 8.3</span></td>
</tr>
<tr>
<td id="L5481" class="blob-num js-line-number" data-line-number="5481"></td>
<td id="LC5481" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>if (!_upload_complete_flag) {</span></td>
</tr>
<tr>
<td id="L5482" class="blob-num js-line-number" data-line-number="5482"></td>
<td id="LC5482" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this.upload.dispatchEvent('loadstart'); // will be dispatched either by native or runtime xhr</span></td>
</tr>
<tr>
<td id="L5483" class="blob-num js-line-number" data-line-number="5483"></td>
<td id="LC5483" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>}</span></td>
</tr>
<tr>
<td id="L5484" class="blob-num js-line-number" data-line-number="5484"></td>
<td id="LC5484" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5485" class="blob-num js-line-number" data-line-number="5485"></td>
<td id="LC5485" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 8.5 - Return the send() method call, but continue running the steps in this algorithm.</span></td>
</tr>
<tr>
<td id="L5486" class="blob-num js-line-number" data-line-number="5486"></td>
<td id="LC5486" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_doXHR</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, data);</td>
</tr>
<tr>
<td id="L5487" class="blob-num js-line-number" data-line-number="5487"></td>
<td id="LC5487" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5488" class="blob-num js-line-number" data-line-number="5488"></td>
<td id="LC5488" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5489" class="blob-num js-line-number" data-line-number="5489"></td>
<td id="LC5489" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5490" class="blob-num js-line-number" data-line-number="5490"></td>
<td id="LC5490" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Cancels any network activity.</span></td>
</tr>
<tr>
<td id="L5491" class="blob-num js-line-number" data-line-number="5491"></td>
<td id="LC5491" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5492" class="blob-num js-line-number" data-line-number="5492"></td>
<td id="LC5492" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">abort</span></span></td>
</tr>
<tr>
<td id="L5493" class="blob-num js-line-number" data-line-number="5493"></td>
<td id="LC5493" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5494" class="blob-num js-line-number" data-line-number="5494"></td>
<td id="LC5494" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L5495" class="blob-num js-line-number" data-line-number="5495"></td>
<td id="LC5495" class="blob-code blob-code-inner js-file-line"> _error_flag <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5496" class="blob-num js-line-number" data-line-number="5496"></td>
<td id="LC5496" class="blob-code blob-code-inner js-file-line"> _sync_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L5497" class="blob-num js-line-number" data-line-number="5497"></td>
<td id="LC5497" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5498" class="blob-num js-line-number" data-line-number="5498"></td>
<td id="LC5498" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>), [<span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">UNSENT</span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">OPENED</span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">DONE</span>])) {</td>
</tr>
<tr>
<td id="L5499" class="blob-num js-line-number" data-line-number="5499"></td>
<td id="LC5499" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">DONE</span>);</td>
</tr>
<tr>
<td id="L5500" class="blob-num js-line-number" data-line-number="5500"></td>
<td id="LC5500" class="blob-code blob-code-inner js-file-line"> _send_flag <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L5501" class="blob-num js-line-number" data-line-number="5501"></td>
<td id="LC5501" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5502" class="blob-num js-line-number" data-line-number="5502"></td>
<td id="LC5502" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_xhr) {</td>
</tr>
<tr>
<td id="L5503" class="blob-num js-line-number" data-line-number="5503"></td>
<td id="LC5503" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(_xhr, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>, _upload_complete_flag);</td>
</tr>
<tr>
<td id="L5504" class="blob-num js-line-number" data-line-number="5504"></td>
<td id="LC5504" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5505" class="blob-num js-line-number" data-line-number="5505"></td>
<td id="LC5505" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L5506" class="blob-num js-line-number" data-line-number="5506"></td>
<td id="LC5506" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5507" class="blob-num js-line-number" data-line-number="5507"></td>
<td id="LC5507" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5508" class="blob-num js-line-number" data-line-number="5508"></td>
<td id="LC5508" class="blob-code blob-code-inner js-file-line"> _upload_complete_flag <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5509" class="blob-num js-line-number" data-line-number="5509"></td>
<td id="LC5509" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5510" class="blob-num js-line-number" data-line-number="5510"></td>
<td id="LC5510" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">UNSENT</span>);</td>
</tr>
<tr>
<td id="L5511" class="blob-num js-line-number" data-line-number="5511"></td>
<td id="LC5511" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5512" class="blob-num js-line-number" data-line-number="5512"></td>
<td id="LC5512" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5513" class="blob-num js-line-number" data-line-number="5513"></td>
<td id="LC5513" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5514" class="blob-num js-line-number" data-line-number="5514"></td>
<td id="LC5514" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L5515" class="blob-num js-line-number" data-line-number="5515"></td>
<td id="LC5515" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_xhr) {</td>
</tr>
<tr>
<td id="L5516" class="blob-num js-line-number" data-line-number="5516"></td>
<td id="LC5516" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-smi">_xhr</span>.<span class="pl-smi">destroy</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L5517" class="blob-num js-line-number" data-line-number="5517"></td>
<td id="LC5517" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L5518" class="blob-num js-line-number" data-line-number="5518"></td>
<td id="LC5518" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5519" class="blob-num js-line-number" data-line-number="5519"></td>
<td id="LC5519" class="blob-code blob-code-inner js-file-line"> _xhr <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5520" class="blob-num js-line-number" data-line-number="5520"></td>
<td id="LC5520" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5521" class="blob-num js-line-number" data-line-number="5521"></td>
<td id="LC5521" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5522" class="blob-num js-line-number" data-line-number="5522"></td>
<td id="LC5522" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L5523" class="blob-num js-line-number" data-line-number="5523"></td>
<td id="LC5523" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5524" class="blob-num js-line-number" data-line-number="5524"></td>
<td id="LC5524" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">upload</span>) {</td>
</tr>
<tr>
<td id="L5525" class="blob-num js-line-number" data-line-number="5525"></td>
<td id="LC5525" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">upload</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L5526" class="blob-num js-line-number" data-line-number="5526"></td>
<td id="LC5526" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">upload</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5527" class="blob-num js-line-number" data-line-number="5527"></td>
<td id="LC5527" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5528" class="blob-num js-line-number" data-line-number="5528"></td>
<td id="LC5528" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5529" class="blob-num js-line-number" data-line-number="5529"></td>
<td id="LC5529" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5530" class="blob-num js-line-number" data-line-number="5530"></td>
<td id="LC5530" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5531" class="blob-num js-line-number" data-line-number="5531"></td>
<td id="LC5531" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">handleEventProps</span>(<span class="pl-smi">dispatches</span>.<span class="pl-c1">concat</span>([<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>])); <span class="pl-c"><span class="pl-c">//</span> for historical reasons</span></td>
</tr>
<tr>
<td id="L5532" class="blob-num js-line-number" data-line-number="5532"></td>
<td id="LC5532" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">upload</span>.<span class="pl-en">handleEventProps</span>(dispatches);</td>
</tr>
<tr>
<td id="L5533" class="blob-num js-line-number" data-line-number="5533"></td>
<td id="LC5533" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5534" class="blob-num js-line-number" data-line-number="5534"></td>
<td id="LC5534" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> this is nice, but maybe too lengthy</span></td>
</tr>
<tr>
<td id="L5535" class="blob-num js-line-number" data-line-number="5535"></td>
<td id="LC5535" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5536" class="blob-num js-line-number" data-line-number="5536"></td>
<td id="LC5536" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // if supported by JS version, set getters/setters for specific properties</span></td>
</tr>
<tr>
<td id="L5537" class="blob-num js-line-number" data-line-number="5537"></td>
<td id="LC5537" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'readyState', {</span></td>
</tr>
<tr>
<td id="L5538" class="blob-num js-line-number" data-line-number="5538"></td>
<td id="LC5538" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5539" class="blob-num js-line-number" data-line-number="5539"></td>
<td id="LC5539" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5540" class="blob-num js-line-number" data-line-number="5540"></td>
<td id="LC5540" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5541" class="blob-num js-line-number" data-line-number="5541"></td>
<td id="LC5541" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('readyState');</span></td>
</tr>
<tr>
<td id="L5542" class="blob-num js-line-number" data-line-number="5542"></td>
<td id="LC5542" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5543" class="blob-num js-line-number" data-line-number="5543"></td>
<td id="LC5543" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5544" class="blob-num js-line-number" data-line-number="5544"></td>
<td id="LC5544" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5545" class="blob-num js-line-number" data-line-number="5545"></td>
<td id="LC5545" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'timeout', {</span></td>
</tr>
<tr>
<td id="L5546" class="blob-num js-line-number" data-line-number="5546"></td>
<td id="LC5546" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5547" class="blob-num js-line-number" data-line-number="5547"></td>
<td id="LC5547" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5548" class="blob-num js-line-number" data-line-number="5548"></td>
<td id="LC5548" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5549" class="blob-num js-line-number" data-line-number="5549"></td>
<td id="LC5549" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('timeout');</span></td>
</tr>
<tr>
<td id="L5550" class="blob-num js-line-number" data-line-number="5550"></td>
<td id="LC5550" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> },</span></td>
</tr>
<tr>
<td id="L5551" class="blob-num js-line-number" data-line-number="5551"></td>
<td id="LC5551" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5552" class="blob-num js-line-number" data-line-number="5552"></td>
<td id="LC5552" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> set: function(value) {</span></td>
</tr>
<tr>
<td id="L5553" class="blob-num js-line-number" data-line-number="5553"></td>
<td id="LC5553" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5554" class="blob-num js-line-number" data-line-number="5554"></td>
<td id="LC5554" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_sync_flag) {</span></td>
</tr>
<tr>
<td id="L5555" class="blob-num js-line-number" data-line-number="5555"></td>
<td id="LC5555" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);</span></td>
</tr>
<tr>
<td id="L5556" class="blob-num js-line-number" data-line-number="5556"></td>
<td id="LC5556" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5557" class="blob-num js-line-number" data-line-number="5557"></td>
<td id="LC5557" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5558" class="blob-num js-line-number" data-line-number="5558"></td>
<td id="LC5558" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // timeout still should be measured relative to the start time of request</span></td>
</tr>
<tr>
<td id="L5559" class="blob-num js-line-number" data-line-number="5559"></td>
<td id="LC5559" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> _timeoutset_time = (new Date).getTime();</span></td>
</tr>
<tr>
<td id="L5560" class="blob-num js-line-number" data-line-number="5560"></td>
<td id="LC5560" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5561" class="blob-num js-line-number" data-line-number="5561"></td>
<td id="LC5561" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> _p('timeout', value);</span></td>
</tr>
<tr>
<td id="L5562" class="blob-num js-line-number" data-line-number="5562"></td>
<td id="LC5562" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5563" class="blob-num js-line-number" data-line-number="5563"></td>
<td id="LC5563" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5564" class="blob-num js-line-number" data-line-number="5564"></td>
<td id="LC5564" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5565" class="blob-num js-line-number" data-line-number="5565"></td>
<td id="LC5565" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // the withCredentials attribute has no effect when fetching same-origin resources</span></td>
</tr>
<tr>
<td id="L5566" class="blob-num js-line-number" data-line-number="5566"></td>
<td id="LC5566" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'withCredentials', {</span></td>
</tr>
<tr>
<td id="L5567" class="blob-num js-line-number" data-line-number="5567"></td>
<td id="LC5567" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5568" class="blob-num js-line-number" data-line-number="5568"></td>
<td id="LC5568" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5569" class="blob-num js-line-number" data-line-number="5569"></td>
<td id="LC5569" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5570" class="blob-num js-line-number" data-line-number="5570"></td>
<td id="LC5570" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('withCredentials');</span></td>
</tr>
<tr>
<td id="L5571" class="blob-num js-line-number" data-line-number="5571"></td>
<td id="LC5571" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> },</span></td>
</tr>
<tr>
<td id="L5572" class="blob-num js-line-number" data-line-number="5572"></td>
<td id="LC5572" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5573" class="blob-num js-line-number" data-line-number="5573"></td>
<td id="LC5573" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> set: function(value) {</span></td>
</tr>
<tr>
<td id="L5574" class="blob-num js-line-number" data-line-number="5574"></td>
<td id="LC5574" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 1-2</span></td>
</tr>
<tr>
<td id="L5575" class="blob-num js-line-number" data-line-number="5575"></td>
<td id="LC5575" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (!~o.inArray(_p('readyState'), [XMLHttpRequest.UNSENT, XMLHttpRequest.OPENED]) || _send_flag) {</span></td>
</tr>
<tr>
<td id="L5576" class="blob-num js-line-number" data-line-number="5576"></td>
<td id="LC5576" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);</span></td>
</tr>
<tr>
<td id="L5577" class="blob-num js-line-number" data-line-number="5577"></td>
<td id="LC5577" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5578" class="blob-num js-line-number" data-line-number="5578"></td>
<td id="LC5578" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5579" class="blob-num js-line-number" data-line-number="5579"></td>
<td id="LC5579" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 3-4</span></td>
</tr>
<tr>
<td id="L5580" class="blob-num js-line-number" data-line-number="5580"></td>
<td id="LC5580" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_anonymous_flag || _sync_flag) {</span></td>
</tr>
<tr>
<td id="L5581" class="blob-num js-line-number" data-line-number="5581"></td>
<td id="LC5581" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);</span></td>
</tr>
<tr>
<td id="L5582" class="blob-num js-line-number" data-line-number="5582"></td>
<td id="LC5582" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5583" class="blob-num js-line-number" data-line-number="5583"></td>
<td id="LC5583" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5584" class="blob-num js-line-number" data-line-number="5584"></td>
<td id="LC5584" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 5</span></td>
</tr>
<tr>
<td id="L5585" class="blob-num js-line-number" data-line-number="5585"></td>
<td id="LC5585" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> _p('withCredentials', value);</span></td>
</tr>
<tr>
<td id="L5586" class="blob-num js-line-number" data-line-number="5586"></td>
<td id="LC5586" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5587" class="blob-num js-line-number" data-line-number="5587"></td>
<td id="LC5587" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5588" class="blob-num js-line-number" data-line-number="5588"></td>
<td id="LC5588" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5589" class="blob-num js-line-number" data-line-number="5589"></td>
<td id="LC5589" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'status', {</span></td>
</tr>
<tr>
<td id="L5590" class="blob-num js-line-number" data-line-number="5590"></td>
<td id="LC5590" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5591" class="blob-num js-line-number" data-line-number="5591"></td>
<td id="LC5591" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5592" class="blob-num js-line-number" data-line-number="5592"></td>
<td id="LC5592" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5593" class="blob-num js-line-number" data-line-number="5593"></td>
<td id="LC5593" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('status');</span></td>
</tr>
<tr>
<td id="L5594" class="blob-num js-line-number" data-line-number="5594"></td>
<td id="LC5594" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5595" class="blob-num js-line-number" data-line-number="5595"></td>
<td id="LC5595" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5596" class="blob-num js-line-number" data-line-number="5596"></td>
<td id="LC5596" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5597" class="blob-num js-line-number" data-line-number="5597"></td>
<td id="LC5597" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'statusText', {</span></td>
</tr>
<tr>
<td id="L5598" class="blob-num js-line-number" data-line-number="5598"></td>
<td id="LC5598" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5599" class="blob-num js-line-number" data-line-number="5599"></td>
<td id="LC5599" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5600" class="blob-num js-line-number" data-line-number="5600"></td>
<td id="LC5600" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5601" class="blob-num js-line-number" data-line-number="5601"></td>
<td id="LC5601" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('statusText');</span></td>
</tr>
<tr>
<td id="L5602" class="blob-num js-line-number" data-line-number="5602"></td>
<td id="LC5602" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5603" class="blob-num js-line-number" data-line-number="5603"></td>
<td id="LC5603" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5604" class="blob-num js-line-number" data-line-number="5604"></td>
<td id="LC5604" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5605" class="blob-num js-line-number" data-line-number="5605"></td>
<td id="LC5605" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'responseType', {</span></td>
</tr>
<tr>
<td id="L5606" class="blob-num js-line-number" data-line-number="5606"></td>
<td id="LC5606" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5607" class="blob-num js-line-number" data-line-number="5607"></td>
<td id="LC5607" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5608" class="blob-num js-line-number" data-line-number="5608"></td>
<td id="LC5608" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5609" class="blob-num js-line-number" data-line-number="5609"></td>
<td id="LC5609" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('responseType');</span></td>
</tr>
<tr>
<td id="L5610" class="blob-num js-line-number" data-line-number="5610"></td>
<td id="LC5610" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> },</span></td>
</tr>
<tr>
<td id="L5611" class="blob-num js-line-number" data-line-number="5611"></td>
<td id="LC5611" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5612" class="blob-num js-line-number" data-line-number="5612"></td>
<td id="LC5612" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> set: function(value) {</span></td>
</tr>
<tr>
<td id="L5613" class="blob-num js-line-number" data-line-number="5613"></td>
<td id="LC5613" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 1</span></td>
</tr>
<tr>
<td id="L5614" class="blob-num js-line-number" data-line-number="5614"></td>
<td id="LC5614" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (!!~o.inArray(_p('readyState'), [XMLHttpRequest.LOADING, XMLHttpRequest.DONE])) {</span></td>
</tr>
<tr>
<td id="L5615" class="blob-num js-line-number" data-line-number="5615"></td>
<td id="LC5615" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);</span></td>
</tr>
<tr>
<td id="L5616" class="blob-num js-line-number" data-line-number="5616"></td>
<td id="LC5616" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5617" class="blob-num js-line-number" data-line-number="5617"></td>
<td id="LC5617" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5618" class="blob-num js-line-number" data-line-number="5618"></td>
<td id="LC5618" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 2</span></td>
</tr>
<tr>
<td id="L5619" class="blob-num js-line-number" data-line-number="5619"></td>
<td id="LC5619" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_sync_flag) {</span></td>
</tr>
<tr>
<td id="L5620" class="blob-num js-line-number" data-line-number="5620"></td>
<td id="LC5620" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_ACCESS_ERR);</span></td>
</tr>
<tr>
<td id="L5621" class="blob-num js-line-number" data-line-number="5621"></td>
<td id="LC5621" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5622" class="blob-num js-line-number" data-line-number="5622"></td>
<td id="LC5622" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5623" class="blob-num js-line-number" data-line-number="5623"></td>
<td id="LC5623" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 3</span></td>
</tr>
<tr>
<td id="L5624" class="blob-num js-line-number" data-line-number="5624"></td>
<td id="LC5624" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> _p('responseType', value.toLowerCase());</span></td>
</tr>
<tr>
<td id="L5625" class="blob-num js-line-number" data-line-number="5625"></td>
<td id="LC5625" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5626" class="blob-num js-line-number" data-line-number="5626"></td>
<td id="LC5626" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5627" class="blob-num js-line-number" data-line-number="5627"></td>
<td id="LC5627" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5628" class="blob-num js-line-number" data-line-number="5628"></td>
<td id="LC5628" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'responseText', {</span></td>
</tr>
<tr>
<td id="L5629" class="blob-num js-line-number" data-line-number="5629"></td>
<td id="LC5629" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5630" class="blob-num js-line-number" data-line-number="5630"></td>
<td id="LC5630" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5631" class="blob-num js-line-number" data-line-number="5631"></td>
<td id="LC5631" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5632" class="blob-num js-line-number" data-line-number="5632"></td>
<td id="LC5632" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 1</span></td>
</tr>
<tr>
<td id="L5633" class="blob-num js-line-number" data-line-number="5633"></td>
<td id="LC5633" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (!~o.inArray(_p('responseType'), ['', 'text'])) {</span></td>
</tr>
<tr>
<td id="L5634" class="blob-num js-line-number" data-line-number="5634"></td>
<td id="LC5634" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);</span></td>
</tr>
<tr>
<td id="L5635" class="blob-num js-line-number" data-line-number="5635"></td>
<td id="LC5635" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5636" class="blob-num js-line-number" data-line-number="5636"></td>
<td id="LC5636" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5637" class="blob-num js-line-number" data-line-number="5637"></td>
<td id="LC5637" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 2-3</span></td>
</tr>
<tr>
<td id="L5638" class="blob-num js-line-number" data-line-number="5638"></td>
<td id="LC5638" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_p('readyState') !== XMLHttpRequest.DONE && _p('readyState') !== XMLHttpRequest.LOADING || _error_flag) {</span></td>
</tr>
<tr>
<td id="L5639" class="blob-num js-line-number" data-line-number="5639"></td>
<td id="LC5639" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);</span></td>
</tr>
<tr>
<td id="L5640" class="blob-num js-line-number" data-line-number="5640"></td>
<td id="LC5640" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5641" class="blob-num js-line-number" data-line-number="5641"></td>
<td id="LC5641" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5642" class="blob-num js-line-number" data-line-number="5642"></td>
<td id="LC5642" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('responseText');</span></td>
</tr>
<tr>
<td id="L5643" class="blob-num js-line-number" data-line-number="5643"></td>
<td id="LC5643" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5644" class="blob-num js-line-number" data-line-number="5644"></td>
<td id="LC5644" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5645" class="blob-num js-line-number" data-line-number="5645"></td>
<td id="LC5645" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5646" class="blob-num js-line-number" data-line-number="5646"></td>
<td id="LC5646" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'responseXML', {</span></td>
</tr>
<tr>
<td id="L5647" class="blob-num js-line-number" data-line-number="5647"></td>
<td id="LC5647" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5648" class="blob-num js-line-number" data-line-number="5648"></td>
<td id="LC5648" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5649" class="blob-num js-line-number" data-line-number="5649"></td>
<td id="LC5649" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5650" class="blob-num js-line-number" data-line-number="5650"></td>
<td id="LC5650" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 1</span></td>
</tr>
<tr>
<td id="L5651" class="blob-num js-line-number" data-line-number="5651"></td>
<td id="LC5651" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (!~o.inArray(_p('responseType'), ['', 'document'])) {</span></td>
</tr>
<tr>
<td id="L5652" class="blob-num js-line-number" data-line-number="5652"></td>
<td id="LC5652" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);</span></td>
</tr>
<tr>
<td id="L5653" class="blob-num js-line-number" data-line-number="5653"></td>
<td id="LC5653" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5654" class="blob-num js-line-number" data-line-number="5654"></td>
<td id="LC5654" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5655" class="blob-num js-line-number" data-line-number="5655"></td>
<td id="LC5655" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // 2-3</span></td>
</tr>
<tr>
<td id="L5656" class="blob-num js-line-number" data-line-number="5656"></td>
<td id="LC5656" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_p('readyState') !== XMLHttpRequest.DONE || _error_flag) {</span></td>
</tr>
<tr>
<td id="L5657" class="blob-num js-line-number" data-line-number="5657"></td>
<td id="LC5657" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> throw new x.DOMException(x.DOMException.INVALID_STATE_ERR);</span></td>
</tr>
<tr>
<td id="L5658" class="blob-num js-line-number" data-line-number="5658"></td>
<td id="LC5658" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5659" class="blob-num js-line-number" data-line-number="5659"></td>
<td id="LC5659" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5660" class="blob-num js-line-number" data-line-number="5660"></td>
<td id="LC5660" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('responseXML');</span></td>
</tr>
<tr>
<td id="L5661" class="blob-num js-line-number" data-line-number="5661"></td>
<td id="LC5661" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5662" class="blob-num js-line-number" data-line-number="5662"></td>
<td id="LC5662" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5663" class="blob-num js-line-number" data-line-number="5663"></td>
<td id="LC5663" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5664" class="blob-num js-line-number" data-line-number="5664"></td>
<td id="LC5664" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> o.defineProperty(this, 'response', {</span></td>
</tr>
<tr>
<td id="L5665" class="blob-num js-line-number" data-line-number="5665"></td>
<td id="LC5665" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> configurable: false,</span></td>
</tr>
<tr>
<td id="L5666" class="blob-num js-line-number" data-line-number="5666"></td>
<td id="LC5666" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5667" class="blob-num js-line-number" data-line-number="5667"></td>
<td id="LC5667" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> get: function() {</span></td>
</tr>
<tr>
<td id="L5668" class="blob-num js-line-number" data-line-number="5668"></td>
<td id="LC5668" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (!!~o.inArray(_p('responseType'), ['', 'text'])) {</span></td>
</tr>
<tr>
<td id="L5669" class="blob-num js-line-number" data-line-number="5669"></td>
<td id="LC5669" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_p('readyState') !== XMLHttpRequest.DONE && _p('readyState') !== XMLHttpRequest.LOADING || _error_flag) {</span></td>
</tr>
<tr>
<td id="L5670" class="blob-num js-line-number" data-line-number="5670"></td>
<td id="LC5670" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return '';</span></td>
</tr>
<tr>
<td id="L5671" class="blob-num js-line-number" data-line-number="5671"></td>
<td id="LC5671" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5672" class="blob-num js-line-number" data-line-number="5672"></td>
<td id="LC5672" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5673" class="blob-num js-line-number" data-line-number="5673"></td>
<td id="LC5673" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5674" class="blob-num js-line-number" data-line-number="5674"></td>
<td id="LC5674" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> if (_p('readyState') !== XMLHttpRequest.DONE || _error_flag) {</span></td>
</tr>
<tr>
<td id="L5675" class="blob-num js-line-number" data-line-number="5675"></td>
<td id="LC5675" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return null;</span></td>
</tr>
<tr>
<td id="L5676" class="blob-num js-line-number" data-line-number="5676"></td>
<td id="LC5676" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5677" class="blob-num js-line-number" data-line-number="5677"></td>
<td id="LC5677" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5678" class="blob-num js-line-number" data-line-number="5678"></td>
<td id="LC5678" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return _p('response');</span></td>
</tr>
<tr>
<td id="L5679" class="blob-num js-line-number" data-line-number="5679"></td>
<td id="LC5679" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5680" class="blob-num js-line-number" data-line-number="5680"></td>
<td id="LC5680" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });</span></td>
</tr>
<tr>
<td id="L5681" class="blob-num js-line-number" data-line-number="5681"></td>
<td id="LC5681" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L5682" class="blob-num js-line-number" data-line-number="5682"></td>
<td id="LC5682" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5683" class="blob-num js-line-number" data-line-number="5683"></td>
<td id="LC5683" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5684" class="blob-num js-line-number" data-line-number="5684"></td>
<td id="LC5684" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_p</span>(<span class="pl-smi">prop</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L5685" class="blob-num js-line-number" data-line-number="5685"></td>
<td id="LC5685" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">props</span>.<span class="pl-en">hasOwnProperty</span>(prop)) {</td>
</tr>
<tr>
<td id="L5686" class="blob-num js-line-number" data-line-number="5686"></td>
<td id="LC5686" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L5687" class="blob-num js-line-number" data-line-number="5687"></td>
<td id="LC5687" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5688" class="blob-num js-line-number" data-line-number="5688"></td>
<td id="LC5688" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">arguments</span>.<span class="pl-c1">length</span> <span class="pl-k">===</span> <span class="pl-c1">1</span>) { <span class="pl-c"><span class="pl-c">//</span> get</span></td>
</tr>
<tr>
<td id="L5689" class="blob-num js-line-number" data-line-number="5689"></td>
<td id="LC5689" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>define_property<span class="pl-pds">'</span></span>) <span class="pl-k">?</span> props[prop] <span class="pl-k">:</span> self[prop];</td>
</tr>
<tr>
<td id="L5690" class="blob-num js-line-number" data-line-number="5690"></td>
<td id="LC5690" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> { <span class="pl-c"><span class="pl-c">//</span> set</span></td>
</tr>
<tr>
<td id="L5691" class="blob-num js-line-number" data-line-number="5691"></td>
<td id="LC5691" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>define_property<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L5692" class="blob-num js-line-number" data-line-number="5692"></td>
<td id="LC5692" class="blob-code blob-code-inner js-file-line"> props[prop] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L5693" class="blob-num js-line-number" data-line-number="5693"></td>
<td id="LC5693" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5694" class="blob-num js-line-number" data-line-number="5694"></td>
<td id="LC5694" class="blob-code blob-code-inner js-file-line"> self[prop] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L5695" class="blob-num js-line-number" data-line-number="5695"></td>
<td id="LC5695" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5696" class="blob-num js-line-number" data-line-number="5696"></td>
<td id="LC5696" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5697" class="blob-num js-line-number" data-line-number="5697"></td>
<td id="LC5697" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5698" class="blob-num js-line-number" data-line-number="5698"></td>
<td id="LC5698" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5699" class="blob-num js-line-number" data-line-number="5699"></td>
<td id="LC5699" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span></span></td>
</tr>
<tr>
<td id="L5700" class="blob-num js-line-number" data-line-number="5700"></td>
<td id="LC5700" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> function _toASCII(str, AllowUnassigned, UseSTD3ASCIIRules) {</span></td>
</tr>
<tr>
<td id="L5701" class="blob-num js-line-number" data-line-number="5701"></td>
<td id="LC5701" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> // TODO: http://tools.ietf.org/html/rfc3490#section-4.1</span></td>
</tr>
<tr>
<td id="L5702" class="blob-num js-line-number" data-line-number="5702"></td>
<td id="LC5702" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> return str.toLowerCase();</span></td>
</tr>
<tr>
<td id="L5703" class="blob-num js-line-number" data-line-number="5703"></td>
<td id="LC5703" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> }</span></td>
</tr>
<tr>
<td id="L5704" class="blob-num js-line-number" data-line-number="5704"></td>
<td id="LC5704" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5705" class="blob-num js-line-number" data-line-number="5705"></td>
<td id="LC5705" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5706" class="blob-num js-line-number" data-line-number="5706"></td>
<td id="LC5706" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5707" class="blob-num js-line-number" data-line-number="5707"></td>
<td id="LC5707" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_doXHR</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L5708" class="blob-num js-line-number" data-line-number="5708"></td>
<td id="LC5708" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L5709" class="blob-num js-line-number" data-line-number="5709"></td>
<td id="LC5709" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5710" class="blob-num js-line-number" data-line-number="5710"></td>
<td id="LC5710" class="blob-code blob-code-inner js-file-line"> _start_time <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Date</span>().<span class="pl-c1">getTime</span>();</td>
</tr>
<tr>
<td id="L5711" class="blob-num js-line-number" data-line-number="5711"></td>
<td id="LC5711" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5712" class="blob-num js-line-number" data-line-number="5712"></td>
<td id="LC5712" class="blob-code blob-code-inner js-file-line"> _xhr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">RuntimeTarget</span>();</td>
</tr>
<tr>
<td id="L5713" class="blob-num js-line-number" data-line-number="5713"></td>
<td id="LC5713" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5714" class="blob-num js-line-number" data-line-number="5714"></td>
<td id="LC5714" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">loadEnd</span>() {</td>
</tr>
<tr>
<td id="L5715" class="blob-num js-line-number" data-line-number="5715"></td>
<td id="LC5715" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_xhr) { <span class="pl-c"><span class="pl-c">//</span> it could have been destroyed by now</span></td>
</tr>
<tr>
<td id="L5716" class="blob-num js-line-number" data-line-number="5716"></td>
<td id="LC5716" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L5717" class="blob-num js-line-number" data-line-number="5717"></td>
<td id="LC5717" class="blob-code blob-code-inner js-file-line"> _xhr <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5718" class="blob-num js-line-number" data-line-number="5718"></td>
<td id="LC5718" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5719" class="blob-num js-line-number" data-line-number="5719"></td>
<td id="LC5719" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5720" class="blob-num js-line-number" data-line-number="5720"></td>
<td id="LC5720" class="blob-code blob-code-inner js-file-line"> self <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5721" class="blob-num js-line-number" data-line-number="5721"></td>
<td id="LC5721" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5722" class="blob-num js-line-number" data-line-number="5722"></td>
<td id="LC5722" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5723" class="blob-num js-line-number" data-line-number="5723"></td>
<td id="LC5723" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">exec</span>(<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L5724" class="blob-num js-line-number" data-line-number="5724"></td>
<td id="LC5724" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>LoadStart<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5725" class="blob-num js-line-number" data-line-number="5725"></td>
<td id="LC5725" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">LOADING</span>);</td>
</tr>
<tr>
<td id="L5726" class="blob-num js-line-number" data-line-number="5726"></td>
<td id="LC5726" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5727" class="blob-num js-line-number" data-line-number="5727"></td>
<td id="LC5727" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5728" class="blob-num js-line-number" data-line-number="5728"></td>
<td id="LC5728" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5729" class="blob-num js-line-number" data-line-number="5729"></td>
<td id="LC5729" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5730" class="blob-num js-line-number" data-line-number="5730"></td>
<td id="LC5730" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_upload_events_flag) {</td>
</tr>
<tr>
<td id="L5731" class="blob-num js-line-number" data-line-number="5731"></td>
<td id="LC5731" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">upload</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5732" class="blob-num js-line-number" data-line-number="5732"></td>
<td id="LC5732" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5733" class="blob-num js-line-number" data-line-number="5733"></td>
<td id="LC5733" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5734" class="blob-num js-line-number" data-line-number="5734"></td>
<td id="LC5734" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5735" class="blob-num js-line-number" data-line-number="5735"></td>
<td id="LC5735" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Progress<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5736" class="blob-num js-line-number" data-line-number="5736"></td>
<td id="LC5736" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>) <span class="pl-k">!==</span> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">LOADING</span>) {</td>
</tr>
<tr>
<td id="L5737" class="blob-num js-line-number" data-line-number="5737"></td>
<td id="LC5737" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">LOADING</span>); <span class="pl-c"><span class="pl-c">//</span> LoadStart unreliable (in Flash for example)</span></td>
</tr>
<tr>
<td id="L5738" class="blob-num js-line-number" data-line-number="5738"></td>
<td id="LC5738" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5739" class="blob-num js-line-number" data-line-number="5739"></td>
<td id="LC5739" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5740" class="blob-num js-line-number" data-line-number="5740"></td>
<td id="LC5740" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5741" class="blob-num js-line-number" data-line-number="5741"></td>
<td id="LC5741" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5742" class="blob-num js-line-number" data-line-number="5742"></td>
<td id="LC5742" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5743" class="blob-num js-line-number" data-line-number="5743"></td>
<td id="LC5743" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>UploadProgress<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5744" class="blob-num js-line-number" data-line-number="5744"></td>
<td id="LC5744" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_upload_events_flag) {</td>
</tr>
<tr>
<td id="L5745" class="blob-num js-line-number" data-line-number="5745"></td>
<td id="LC5745" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">upload</span>.<span class="pl-c1">dispatchEvent</span>({</td>
</tr>
<tr>
<td id="L5746" class="blob-num js-line-number" data-line-number="5746"></td>
<td id="LC5746" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L5747" class="blob-num js-line-number" data-line-number="5747"></td>
<td id="LC5747" class="blob-code blob-code-inner js-file-line"> lengthComputable<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L5748" class="blob-num js-line-number" data-line-number="5748"></td>
<td id="LC5748" class="blob-code blob-code-inner js-file-line"> total<span class="pl-k">:</span> <span class="pl-smi">e</span>.<span class="pl-smi">total</span>,</td>
</tr>
<tr>
<td id="L5749" class="blob-num js-line-number" data-line-number="5749"></td>
<td id="LC5749" class="blob-code blob-code-inner js-file-line"> loaded<span class="pl-k">:</span> <span class="pl-smi">e</span>.<span class="pl-smi">loaded</span></td>
</tr>
<tr>
<td id="L5750" class="blob-num js-line-number" data-line-number="5750"></td>
<td id="LC5750" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5751" class="blob-num js-line-number" data-line-number="5751"></td>
<td id="LC5751" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5752" class="blob-num js-line-number" data-line-number="5752"></td>
<td id="LC5752" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5753" class="blob-num js-line-number" data-line-number="5753"></td>
<td id="LC5753" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5754" class="blob-num js-line-number" data-line-number="5754"></td>
<td id="LC5754" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Load<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5755" class="blob-num js-line-number" data-line-number="5755"></td>
<td id="LC5755" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">DONE</span>);</td>
</tr>
<tr>
<td id="L5756" class="blob-num js-line-number" data-line-number="5756"></td>
<td id="LC5756" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>status<span class="pl-pds">'</span></span>, <span class="pl-c1">Number</span>(<span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(_xhr, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getStatus<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-c1">0</span>));</td>
</tr>
<tr>
<td id="L5757" class="blob-num js-line-number" data-line-number="5757"></td>
<td id="LC5757" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>statusText<span class="pl-pds">'</span></span>, httpCode[<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>status<span class="pl-pds">'</span></span>)] <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L5758" class="blob-num js-line-number" data-line-number="5758"></td>
<td id="LC5758" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5759" class="blob-num js-line-number" data-line-number="5759"></td>
<td id="LC5759" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>response<span class="pl-pds">'</span></span>, <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(_xhr, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getResponse<span class="pl-pds">'</span></span>, <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseType<span class="pl-pds">'</span></span>)));</td>
</tr>
<tr>
<td id="L5760" class="blob-num js-line-number" data-line-number="5760"></td>
<td id="LC5760" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5761" class="blob-num js-line-number" data-line-number="5761"></td>
<td id="LC5761" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseType<span class="pl-pds">'</span></span>), [<span class="pl-s"><span class="pl-pds">'</span>text<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>])) {</td>
</tr>
<tr>
<td id="L5762" class="blob-num js-line-number" data-line-number="5762"></td>
<td id="LC5762" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseText<span class="pl-pds">'</span></span>, <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>response<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L5763" class="blob-num js-line-number" data-line-number="5763"></td>
<td id="LC5763" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseType<span class="pl-pds">'</span></span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L5764" class="blob-num js-line-number" data-line-number="5764"></td>
<td id="LC5764" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseXML<span class="pl-pds">'</span></span>, <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>response<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L5765" class="blob-num js-line-number" data-line-number="5765"></td>
<td id="LC5765" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5766" class="blob-num js-line-number" data-line-number="5766"></td>
<td id="LC5766" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5767" class="blob-num js-line-number" data-line-number="5767"></td>
<td id="LC5767" class="blob-code blob-code-inner js-file-line"> _responseHeaders <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(_xhr, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAllResponseHeaders<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5768" class="blob-num js-line-number" data-line-number="5768"></td>
<td id="LC5768" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5769" class="blob-num js-line-number" data-line-number="5769"></td>
<td id="LC5769" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5770" class="blob-num js-line-number" data-line-number="5770"></td>
<td id="LC5770" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5771" class="blob-num js-line-number" data-line-number="5771"></td>
<td id="LC5771" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>status<span class="pl-pds">'</span></span>) <span class="pl-k">></span> <span class="pl-c1">0</span>) { <span class="pl-c"><span class="pl-c">//</span> status 0 usually means that server is unreachable</span></td>
</tr>
<tr>
<td id="L5772" class="blob-num js-line-number" data-line-number="5772"></td>
<td id="LC5772" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_upload_events_flag) {</td>
</tr>
<tr>
<td id="L5773" class="blob-num js-line-number" data-line-number="5773"></td>
<td id="LC5773" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">upload</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5774" class="blob-num js-line-number" data-line-number="5774"></td>
<td id="LC5774" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5775" class="blob-num js-line-number" data-line-number="5775"></td>
<td id="LC5775" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5776" class="blob-num js-line-number" data-line-number="5776"></td>
<td id="LC5776" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5777" class="blob-num js-line-number" data-line-number="5777"></td>
<td id="LC5777" class="blob-code blob-code-inner js-file-line"> _error_flag <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5778" class="blob-num js-line-number" data-line-number="5778"></td>
<td id="LC5778" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5779" class="blob-num js-line-number" data-line-number="5779"></td>
<td id="LC5779" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5780" class="blob-num js-line-number" data-line-number="5780"></td>
<td id="LC5780" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadEnd</span>();</td>
</tr>
<tr>
<td id="L5781" class="blob-num js-line-number" data-line-number="5781"></td>
<td id="LC5781" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5782" class="blob-num js-line-number" data-line-number="5782"></td>
<td id="LC5782" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5783" class="blob-num js-line-number" data-line-number="5783"></td>
<td id="LC5783" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Abort<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5784" class="blob-num js-line-number" data-line-number="5784"></td>
<td id="LC5784" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5785" class="blob-num js-line-number" data-line-number="5785"></td>
<td id="LC5785" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadEnd</span>();</td>
</tr>
<tr>
<td id="L5786" class="blob-num js-line-number" data-line-number="5786"></td>
<td id="LC5786" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5787" class="blob-num js-line-number" data-line-number="5787"></td>
<td id="LC5787" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5788" class="blob-num js-line-number" data-line-number="5788"></td>
<td id="LC5788" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Error<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5789" class="blob-num js-line-number" data-line-number="5789"></td>
<td id="LC5789" class="blob-code blob-code-inner js-file-line"> _error_flag <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5790" class="blob-num js-line-number" data-line-number="5790"></td>
<td id="LC5790" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>readyState<span class="pl-pds">'</span></span>, <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">DONE</span>);</td>
</tr>
<tr>
<td id="L5791" class="blob-num js-line-number" data-line-number="5791"></td>
<td id="LC5791" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5792" class="blob-num js-line-number" data-line-number="5792"></td>
<td id="LC5792" class="blob-code blob-code-inner js-file-line"> _upload_complete_flag <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5793" class="blob-num js-line-number" data-line-number="5793"></td>
<td id="LC5793" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(e);</td>
</tr>
<tr>
<td id="L5794" class="blob-num js-line-number" data-line-number="5794"></td>
<td id="LC5794" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadEnd</span>();</td>
</tr>
<tr>
<td id="L5795" class="blob-num js-line-number" data-line-number="5795"></td>
<td id="LC5795" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5796" class="blob-num js-line-number" data-line-number="5796"></td>
<td id="LC5796" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5797" class="blob-num js-line-number" data-line-number="5797"></td>
<td id="LC5797" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(_xhr, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>send<span class="pl-pds">'</span></span>, {</td>
</tr>
<tr>
<td id="L5798" class="blob-num js-line-number" data-line-number="5798"></td>
<td id="LC5798" class="blob-code blob-code-inner js-file-line"> url<span class="pl-k">:</span> _url,</td>
</tr>
<tr>
<td id="L5799" class="blob-num js-line-number" data-line-number="5799"></td>
<td id="LC5799" class="blob-code blob-code-inner js-file-line"> method<span class="pl-k">:</span> _method,</td>
</tr>
<tr>
<td id="L5800" class="blob-num js-line-number" data-line-number="5800"></td>
<td id="LC5800" class="blob-code blob-code-inner js-file-line"> async<span class="pl-k">:</span> _async,</td>
</tr>
<tr>
<td id="L5801" class="blob-num js-line-number" data-line-number="5801"></td>
<td id="LC5801" class="blob-code blob-code-inner js-file-line"> user<span class="pl-k">:</span> _user,</td>
</tr>
<tr>
<td id="L5802" class="blob-num js-line-number" data-line-number="5802"></td>
<td id="LC5802" class="blob-code blob-code-inner js-file-line"> password<span class="pl-k">:</span> _password,</td>
</tr>
<tr>
<td id="L5803" class="blob-num js-line-number" data-line-number="5803"></td>
<td id="LC5803" class="blob-code blob-code-inner js-file-line"> headers<span class="pl-k">:</span> _headers,</td>
</tr>
<tr>
<td id="L5804" class="blob-num js-line-number" data-line-number="5804"></td>
<td id="LC5804" class="blob-code blob-code-inner js-file-line"> mimeType<span class="pl-k">:</span> _mimeType,</td>
</tr>
<tr>
<td id="L5805" class="blob-num js-line-number" data-line-number="5805"></td>
<td id="LC5805" class="blob-code blob-code-inner js-file-line"> encoding<span class="pl-k">:</span> _encoding,</td>
</tr>
<tr>
<td id="L5806" class="blob-num js-line-number" data-line-number="5806"></td>
<td id="LC5806" class="blob-code blob-code-inner js-file-line"> responseType<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-smi">responseType</span>,</td>
</tr>
<tr>
<td id="L5807" class="blob-num js-line-number" data-line-number="5807"></td>
<td id="LC5807" class="blob-code blob-code-inner js-file-line"> withCredentials<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-smi">withCredentials</span>,</td>
</tr>
<tr>
<td id="L5808" class="blob-num js-line-number" data-line-number="5808"></td>
<td id="LC5808" class="blob-code blob-code-inner js-file-line"> options<span class="pl-k">:</span> _options</td>
</tr>
<tr>
<td id="L5809" class="blob-num js-line-number" data-line-number="5809"></td>
<td id="LC5809" class="blob-code blob-code-inner js-file-line"> }, data);</td>
</tr>
<tr>
<td id="L5810" class="blob-num js-line-number" data-line-number="5810"></td>
<td id="LC5810" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5811" class="blob-num js-line-number" data-line-number="5811"></td>
<td id="LC5811" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5812" class="blob-num js-line-number" data-line-number="5812"></td>
<td id="LC5812" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> clarify our requirements</span></td>
</tr>
<tr>
<td id="L5813" class="blob-num js-line-number" data-line-number="5813"></td>
<td id="LC5813" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L5814" class="blob-num js-line-number" data-line-number="5814"></td>
<td id="LC5814" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span> <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">parseCaps</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>);</td>
</tr>
<tr>
<td id="L5815" class="blob-num js-line-number" data-line-number="5815"></td>
<td id="LC5815" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5816" class="blob-num js-line-number" data-line-number="5816"></td>
<td id="LC5816" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5817" class="blob-num js-line-number" data-line-number="5817"></td>
<td id="LC5817" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>, {</td>
</tr>
<tr>
<td id="L5818" class="blob-num js-line-number" data-line-number="5818"></td>
<td id="LC5818" class="blob-code blob-code-inner js-file-line"> return_response_type<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-smi">responseType</span></td>
</tr>
<tr>
<td id="L5819" class="blob-num js-line-number" data-line-number="5819"></td>
<td id="LC5819" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5820" class="blob-num js-line-number" data-line-number="5820"></td>
<td id="LC5820" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5821" class="blob-num js-line-number" data-line-number="5821"></td>
<td id="LC5821" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span>) {</td>
</tr>
<tr>
<td id="L5822" class="blob-num js-line-number" data-line-number="5822"></td>
<td id="LC5822" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>.<span class="pl-smi">send_multipart</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5823" class="blob-num js-line-number" data-line-number="5823"></td>
<td id="LC5823" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5824" class="blob-num js-line-number" data-line-number="5824"></td>
<td id="LC5824" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5825" class="blob-num js-line-number" data-line-number="5825"></td>
<td id="LC5825" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(_headers)) {</td>
</tr>
<tr>
<td id="L5826" class="blob-num js-line-number" data-line-number="5826"></td>
<td id="LC5826" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>.<span class="pl-smi">send_custom_headers</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5827" class="blob-num js-line-number" data-line-number="5827"></td>
<td id="LC5827" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5828" class="blob-num js-line-number" data-line-number="5828"></td>
<td id="LC5828" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5829" class="blob-num js-line-number" data-line-number="5829"></td>
<td id="LC5829" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_same_origin_flag) {</td>
</tr>
<tr>
<td id="L5830" class="blob-num js-line-number" data-line-number="5830"></td>
<td id="LC5830" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_options</span>.<span class="pl-smi">required_caps</span>.<span class="pl-smi">do_cors</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L5831" class="blob-num js-line-number" data-line-number="5831"></td>
<td id="LC5831" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5832" class="blob-num js-line-number" data-line-number="5832"></td>
<td id="LC5832" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5833" class="blob-num js-line-number" data-line-number="5833"></td>
<td id="LC5833" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5834" class="blob-num js-line-number" data-line-number="5834"></td>
<td id="LC5834" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_options</span>.<span class="pl-smi">ruid</span>) { <span class="pl-c"><span class="pl-c">//</span> we do not need to wait if we can connect directly</span></td>
</tr>
<tr>
<td id="L5835" class="blob-num js-line-number" data-line-number="5835"></td>
<td id="LC5835" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span>(<span class="pl-smi">_xhr</span>.<span class="pl-en">connectRuntime</span>(_options));</td>
</tr>
<tr>
<td id="L5836" class="blob-num js-line-number" data-line-number="5836"></td>
<td id="LC5836" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5837" class="blob-num js-line-number" data-line-number="5837"></td>
<td id="LC5837" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeInit<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L5838" class="blob-num js-line-number" data-line-number="5838"></td>
<td id="LC5838" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span>(runtime);</td>
</tr>
<tr>
<td id="L5839" class="blob-num js-line-number" data-line-number="5839"></td>
<td id="LC5839" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5840" class="blob-num js-line-number" data-line-number="5840"></td>
<td id="LC5840" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeError<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">err</span>) {</td>
</tr>
<tr>
<td id="L5841" class="blob-num js-line-number" data-line-number="5841"></td>
<td id="LC5841" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeError<span class="pl-pds">'</span></span>, err);</td>
</tr>
<tr>
<td id="L5842" class="blob-num js-line-number" data-line-number="5842"></td>
<td id="LC5842" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5843" class="blob-num js-line-number" data-line-number="5843"></td>
<td id="LC5843" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">connectRuntime</span>(_options);</td>
</tr>
<tr>
<td id="L5844" class="blob-num js-line-number" data-line-number="5844"></td>
<td id="LC5844" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5845" class="blob-num js-line-number" data-line-number="5845"></td>
<td id="LC5845" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5846" class="blob-num js-line-number" data-line-number="5846"></td>
<td id="LC5846" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5847" class="blob-num js-line-number" data-line-number="5847"></td>
<td id="LC5847" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5848" class="blob-num js-line-number" data-line-number="5848"></td>
<td id="LC5848" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_reset</span>() {</td>
</tr>
<tr>
<td id="L5849" class="blob-num js-line-number" data-line-number="5849"></td>
<td id="LC5849" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseText<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L5850" class="blob-num js-line-number" data-line-number="5850"></td>
<td id="LC5850" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>responseXML<span class="pl-pds">'</span></span>, <span class="pl-c1">null</span>);</td>
</tr>
<tr>
<td id="L5851" class="blob-num js-line-number" data-line-number="5851"></td>
<td id="LC5851" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>response<span class="pl-pds">'</span></span>, <span class="pl-c1">null</span>);</td>
</tr>
<tr>
<td id="L5852" class="blob-num js-line-number" data-line-number="5852"></td>
<td id="LC5852" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>status<span class="pl-pds">'</span></span>, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L5853" class="blob-num js-line-number" data-line-number="5853"></td>
<td id="LC5853" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_p</span>(<span class="pl-s"><span class="pl-pds">'</span>statusText<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L5854" class="blob-num js-line-number" data-line-number="5854"></td>
<td id="LC5854" class="blob-code blob-code-inner js-file-line"> _start_time <span class="pl-k">=</span> _timeoutset_time <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5855" class="blob-num js-line-number" data-line-number="5855"></td>
<td id="LC5855" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5856" class="blob-num js-line-number" data-line-number="5856"></td>
<td id="LC5856" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5857" class="blob-num js-line-number" data-line-number="5857"></td>
<td id="LC5857" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5858" class="blob-num js-line-number" data-line-number="5858"></td>
<td id="LC5858" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">UNSENT</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L5859" class="blob-num js-line-number" data-line-number="5859"></td>
<td id="LC5859" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">OPENED</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L5860" class="blob-num js-line-number" data-line-number="5860"></td>
<td id="LC5860" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">HEADERS_RECEIVED</span> <span class="pl-k">=</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L5861" class="blob-num js-line-number" data-line-number="5861"></td>
<td id="LC5861" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">LOADING</span> <span class="pl-k">=</span> <span class="pl-c1">3</span>;</td>
</tr>
<tr>
<td id="L5862" class="blob-num js-line-number" data-line-number="5862"></td>
<td id="LC5862" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">DONE</span> <span class="pl-k">=</span> <span class="pl-c1">4</span>;</td>
</tr>
<tr>
<td id="L5863" class="blob-num js-line-number" data-line-number="5863"></td>
<td id="LC5863" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5864" class="blob-num js-line-number" data-line-number="5864"></td>
<td id="LC5864" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">XMLHttpRequest</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L5865" class="blob-num js-line-number" data-line-number="5865"></td>
<td id="LC5865" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5866" class="blob-num js-line-number" data-line-number="5866"></td>
<td id="LC5866" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">XMLHttpRequest</span>;</td>
</tr>
<tr>
<td id="L5867" class="blob-num js-line-number" data-line-number="5867"></td>
<td id="LC5867" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L5868" class="blob-num js-line-number" data-line-number="5868"></td>
<td id="LC5868" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5869" class="blob-num js-line-number" data-line-number="5869"></td>
<td id="LC5869" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/Transporter.js</span></td>
</tr>
<tr>
<td id="L5870" class="blob-num js-line-number" data-line-number="5870"></td>
<td id="LC5870" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5871" class="blob-num js-line-number" data-line-number="5871"></td>
<td id="LC5871" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5872" class="blob-num js-line-number" data-line-number="5872"></td>
<td id="LC5872" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Transporter.js</span></td>
</tr>
<tr>
<td id="L5873" class="blob-num js-line-number" data-line-number="5873"></td>
<td id="LC5873" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L5874" class="blob-num js-line-number" data-line-number="5874"></td>
<td id="LC5874" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L5875" class="blob-num js-line-number" data-line-number="5875"></td>
<td id="LC5875" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L5876" class="blob-num js-line-number" data-line-number="5876"></td>
<td id="LC5876" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L5877" class="blob-num js-line-number" data-line-number="5877"></td>
<td id="LC5877" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L5878" class="blob-num js-line-number" data-line-number="5878"></td>
<td id="LC5878" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L5879" class="blob-num js-line-number" data-line-number="5879"></td>
<td id="LC5879" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5880" class="blob-num js-line-number" data-line-number="5880"></td>
<td id="LC5880" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5881" class="blob-num js-line-number" data-line-number="5881"></td>
<td id="LC5881" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Transporter<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L5882" class="blob-num js-line-number" data-line-number="5882"></td>
<td id="LC5882" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5883" class="blob-num js-line-number" data-line-number="5883"></td>
<td id="LC5883" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5884" class="blob-num js-line-number" data-line-number="5884"></td>
<td id="LC5884" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/RuntimeClient<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L5885" class="blob-num js-line-number" data-line-number="5885"></td>
<td id="LC5885" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/EventTarget<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L5886" class="blob-num js-line-number" data-line-number="5886"></td>
<td id="LC5886" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Encode</span>, <span class="pl-smi">RuntimeClient</span>, <span class="pl-c1">EventTarget</span>) {</td>
</tr>
<tr>
<td id="L5887" class="blob-num js-line-number" data-line-number="5887"></td>
<td id="LC5887" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5888" class="blob-num js-line-number" data-line-number="5888"></td>
<td id="LC5888" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L5889" class="blob-num js-line-number" data-line-number="5889"></td>
<td id="LC5889" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/runtime/Transporter</span></td>
</tr>
<tr>
<td id="L5890" class="blob-num js-line-number" data-line-number="5890"></td>
<td id="LC5890" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L5891" class="blob-num js-line-number" data-line-number="5891"></td>
<td id="LC5891" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L5892" class="blob-num js-line-number" data-line-number="5892"></td>
<td id="LC5892" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L5893" class="blob-num js-line-number" data-line-number="5893"></td>
<td id="LC5893" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">Transporter</span>() {</td>
</tr>
<tr>
<td id="L5894" class="blob-num js-line-number" data-line-number="5894"></td>
<td id="LC5894" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mod, _runtime, _data, _size, _pos, _chunk_size;</td>
</tr>
<tr>
<td id="L5895" class="blob-num js-line-number" data-line-number="5895"></td>
<td id="LC5895" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5896" class="blob-num js-line-number" data-line-number="5896"></td>
<td id="LC5896" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L5897" class="blob-num js-line-number" data-line-number="5897"></td>
<td id="LC5897" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5898" class="blob-num js-line-number" data-line-number="5898"></td>
<td id="LC5898" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L5899" class="blob-num js-line-number" data-line-number="5899"></td>
<td id="LC5899" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L5900" class="blob-num js-line-number" data-line-number="5900"></td>
<td id="LC5900" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5901" class="blob-num js-line-number" data-line-number="5901"></td>
<td id="LC5901" class="blob-code blob-code-inner js-file-line"> state<span class="pl-k">:</span> <span class="pl-smi">Transporter</span>.<span class="pl-c1">IDLE</span>,</td>
</tr>
<tr>
<td id="L5902" class="blob-num js-line-number" data-line-number="5902"></td>
<td id="LC5902" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5903" class="blob-num js-line-number" data-line-number="5903"></td>
<td id="LC5903" class="blob-code blob-code-inner js-file-line"> result<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L5904" class="blob-num js-line-number" data-line-number="5904"></td>
<td id="LC5904" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5905" class="blob-num js-line-number" data-line-number="5905"></td>
<td id="LC5905" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">transport</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>, <span class="pl-smi">type</span>, <span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L5906" class="blob-num js-line-number" data-line-number="5906"></td>
<td id="LC5906" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L5907" class="blob-num js-line-number" data-line-number="5907"></td>
<td id="LC5907" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5908" class="blob-num js-line-number" data-line-number="5908"></td>
<td id="LC5908" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({</td>
</tr>
<tr>
<td id="L5909" class="blob-num js-line-number" data-line-number="5909"></td>
<td id="LC5909" class="blob-code blob-code-inner js-file-line"> chunk_size<span class="pl-k">:</span> <span class="pl-c1">204798</span></td>
</tr>
<tr>
<td id="L5910" class="blob-num js-line-number" data-line-number="5910"></td>
<td id="LC5910" class="blob-code blob-code-inner js-file-line"> }, options);</td>
</tr>
<tr>
<td id="L5911" class="blob-num js-line-number" data-line-number="5911"></td>
<td id="LC5911" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5912" class="blob-num js-line-number" data-line-number="5912"></td>
<td id="LC5912" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> should divide by three, base64 requires this</span></td>
</tr>
<tr>
<td id="L5913" class="blob-num js-line-number" data-line-number="5913"></td>
<td id="LC5913" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((mod <span class="pl-k">=</span> <span class="pl-smi">options</span>.<span class="pl-smi">chunk_size</span> <span class="pl-k">%</span> <span class="pl-c1">3</span>)) {</td>
</tr>
<tr>
<td id="L5914" class="blob-num js-line-number" data-line-number="5914"></td>
<td id="LC5914" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-smi">chunk_size</span> <span class="pl-k">+=</span> <span class="pl-c1">3</span> <span class="pl-k">-</span> mod;</td>
</tr>
<tr>
<td id="L5915" class="blob-num js-line-number" data-line-number="5915"></td>
<td id="LC5915" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5916" class="blob-num js-line-number" data-line-number="5916"></td>
<td id="LC5916" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5917" class="blob-num js-line-number" data-line-number="5917"></td>
<td id="LC5917" class="blob-code blob-code-inner js-file-line"> _chunk_size <span class="pl-k">=</span> <span class="pl-smi">options</span>.<span class="pl-smi">chunk_size</span>;</td>
</tr>
<tr>
<td id="L5918" class="blob-num js-line-number" data-line-number="5918"></td>
<td id="LC5918" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5919" class="blob-num js-line-number" data-line-number="5919"></td>
<td id="LC5919" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_reset</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L5920" class="blob-num js-line-number" data-line-number="5920"></td>
<td id="LC5920" class="blob-code blob-code-inner js-file-line"> _data <span class="pl-k">=</span> data;</td>
</tr>
<tr>
<td id="L5921" class="blob-num js-line-number" data-line-number="5921"></td>
<td id="LC5921" class="blob-code blob-code-inner js-file-line"> _size <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L5922" class="blob-num js-line-number" data-line-number="5922"></td>
<td id="LC5922" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5923" class="blob-num js-line-number" data-line-number="5923"></td>
<td id="LC5923" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(options) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-smi">options</span>.<span class="pl-smi">ruid</span>) {</td>
</tr>
<tr>
<td id="L5924" class="blob-num js-line-number" data-line-number="5924"></td>
<td id="LC5924" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_run</span>.<span class="pl-c1">call</span>(self, type, <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(options));</td>
</tr>
<tr>
<td id="L5925" class="blob-num js-line-number" data-line-number="5925"></td>
<td id="LC5925" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L5926" class="blob-num js-line-number" data-line-number="5926"></td>
<td id="LC5926" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> we require this to run only once</span></td>
</tr>
<tr>
<td id="L5927" class="blob-num js-line-number" data-line-number="5927"></td>
<td id="LC5927" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">cb</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L5928" class="blob-num js-line-number" data-line-number="5928"></td>
<td id="LC5928" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">unbind</span>(<span class="pl-s"><span class="pl-pds">"</span>RuntimeInit<span class="pl-pds">"</span></span>, cb);</td>
</tr>
<tr>
<td id="L5929" class="blob-num js-line-number" data-line-number="5929"></td>
<td id="LC5929" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_run</span>.<span class="pl-c1">call</span>(self, type, runtime);</td>
</tr>
<tr>
<td id="L5930" class="blob-num js-line-number" data-line-number="5930"></td>
<td id="LC5930" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L5931" class="blob-num js-line-number" data-line-number="5931"></td>
<td id="LC5931" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>RuntimeInit<span class="pl-pds">"</span></span>, cb);</td>
</tr>
<tr>
<td id="L5932" class="blob-num js-line-number" data-line-number="5932"></td>
<td id="LC5932" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(options);</td>
</tr>
<tr>
<td id="L5933" class="blob-num js-line-number" data-line-number="5933"></td>
<td id="LC5933" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5934" class="blob-num js-line-number" data-line-number="5934"></td>
<td id="LC5934" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5935" class="blob-num js-line-number" data-line-number="5935"></td>
<td id="LC5935" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5936" class="blob-num js-line-number" data-line-number="5936"></td>
<td id="LC5936" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L5937" class="blob-num js-line-number" data-line-number="5937"></td>
<td id="LC5937" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L5938" class="blob-num js-line-number" data-line-number="5938"></td>
<td id="LC5938" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5939" class="blob-num js-line-number" data-line-number="5939"></td>
<td id="LC5939" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">state</span> <span class="pl-k">=</span> <span class="pl-smi">Transporter</span>.<span class="pl-c1">IDLE</span>;</td>
</tr>
<tr>
<td id="L5940" class="blob-num js-line-number" data-line-number="5940"></td>
<td id="LC5940" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_runtime) {</td>
</tr>
<tr>
<td id="L5941" class="blob-num js-line-number" data-line-number="5941"></td>
<td id="LC5941" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">'</span>Transporter<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>clear<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5942" class="blob-num js-line-number" data-line-number="5942"></td>
<td id="LC5942" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingAborted<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L5943" class="blob-num js-line-number" data-line-number="5943"></td>
<td id="LC5943" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5944" class="blob-num js-line-number" data-line-number="5944"></td>
<td id="LC5944" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5945" class="blob-num js-line-number" data-line-number="5945"></td>
<td id="LC5945" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_reset</span>.<span class="pl-c1">call</span>(self);</td>
</tr>
<tr>
<td id="L5946" class="blob-num js-line-number" data-line-number="5946"></td>
<td id="LC5946" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L5947" class="blob-num js-line-number" data-line-number="5947"></td>
<td id="LC5947" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5948" class="blob-num js-line-number" data-line-number="5948"></td>
<td id="LC5948" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5949" class="blob-num js-line-number" data-line-number="5949"></td>
<td id="LC5949" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L5950" class="blob-num js-line-number" data-line-number="5950"></td>
<td id="LC5950" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L5951" class="blob-num js-line-number" data-line-number="5951"></td>
<td id="LC5951" class="blob-code blob-code-inner js-file-line"> _runtime <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5952" class="blob-num js-line-number" data-line-number="5952"></td>
<td id="LC5952" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L5953" class="blob-num js-line-number" data-line-number="5953"></td>
<td id="LC5953" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_reset</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L5954" class="blob-num js-line-number" data-line-number="5954"></td>
<td id="LC5954" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5955" class="blob-num js-line-number" data-line-number="5955"></td>
<td id="LC5955" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L5956" class="blob-num js-line-number" data-line-number="5956"></td>
<td id="LC5956" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5957" class="blob-num js-line-number" data-line-number="5957"></td>
<td id="LC5957" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_reset</span>() {</td>
</tr>
<tr>
<td id="L5958" class="blob-num js-line-number" data-line-number="5958"></td>
<td id="LC5958" class="blob-code blob-code-inner js-file-line"> _size <span class="pl-k">=</span> _pos <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L5959" class="blob-num js-line-number" data-line-number="5959"></td>
<td id="LC5959" class="blob-code blob-code-inner js-file-line"> _data <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L5960" class="blob-num js-line-number" data-line-number="5960"></td>
<td id="LC5960" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5961" class="blob-num js-line-number" data-line-number="5961"></td>
<td id="LC5961" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5962" class="blob-num js-line-number" data-line-number="5962"></td>
<td id="LC5962" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_run</span>(<span class="pl-smi">type</span>, <span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L5963" class="blob-num js-line-number" data-line-number="5963"></td>
<td id="LC5963" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L5964" class="blob-num js-line-number" data-line-number="5964"></td>
<td id="LC5964" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5965" class="blob-num js-line-number" data-line-number="5965"></td>
<td id="LC5965" class="blob-code blob-code-inner js-file-line"> _runtime <span class="pl-k">=</span> runtime;</td>
</tr>
<tr>
<td id="L5966" class="blob-num js-line-number" data-line-number="5966"></td>
<td id="LC5966" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5967" class="blob-num js-line-number" data-line-number="5967"></td>
<td id="LC5967" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>self.unbind("RuntimeInit");</span></td>
</tr>
<tr>
<td id="L5968" class="blob-num js-line-number" data-line-number="5968"></td>
<td id="LC5968" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5969" class="blob-num js-line-number" data-line-number="5969"></td>
<td id="LC5969" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingProgress<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L5970" class="blob-num js-line-number" data-line-number="5970"></td>
<td id="LC5970" class="blob-code blob-code-inner js-file-line"> _pos <span class="pl-k">=</span> <span class="pl-smi">e</span>.<span class="pl-smi">loaded</span>;</td>
</tr>
<tr>
<td id="L5971" class="blob-num js-line-number" data-line-number="5971"></td>
<td id="LC5971" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5972" class="blob-num js-line-number" data-line-number="5972"></td>
<td id="LC5972" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_pos <span class="pl-k"><</span> _size <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-smi">self</span>.<span class="pl-smi">state</span>, [<span class="pl-smi">Transporter</span>.<span class="pl-c1">IDLE</span>, <span class="pl-smi">Transporter</span>.<span class="pl-c1">DONE</span>]) <span class="pl-k">===</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L5973" class="blob-num js-line-number" data-line-number="5973"></td>
<td id="LC5973" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_transport</span>.<span class="pl-c1">call</span>(self);</td>
</tr>
<tr>
<td id="L5974" class="blob-num js-line-number" data-line-number="5974"></td>
<td id="LC5974" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5975" class="blob-num js-line-number" data-line-number="5975"></td>
<td id="LC5975" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L5976" class="blob-num js-line-number" data-line-number="5976"></td>
<td id="LC5976" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5977" class="blob-num js-line-number" data-line-number="5977"></td>
<td id="LC5977" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingComplete<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L5978" class="blob-num js-line-number" data-line-number="5978"></td>
<td id="LC5978" class="blob-code blob-code-inner js-file-line"> _pos <span class="pl-k">=</span> _size;</td>
</tr>
<tr>
<td id="L5979" class="blob-num js-line-number" data-line-number="5979"></td>
<td id="LC5979" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">state</span> <span class="pl-k">=</span> <span class="pl-smi">Transporter</span>.<span class="pl-c1">DONE</span>;</td>
</tr>
<tr>
<td id="L5980" class="blob-num js-line-number" data-line-number="5980"></td>
<td id="LC5980" class="blob-code blob-code-inner js-file-line"> _data <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> clean a bit</span></td>
</tr>
<tr>
<td id="L5981" class="blob-num js-line-number" data-line-number="5981"></td>
<td id="LC5981" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-smi">_runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">'</span>Transporter<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAsBlob<span class="pl-pds">'</span></span>, type <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L5982" class="blob-num js-line-number" data-line-number="5982"></td>
<td id="LC5982" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L5983" class="blob-num js-line-number" data-line-number="5983"></td>
<td id="LC5983" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5984" class="blob-num js-line-number" data-line-number="5984"></td>
<td id="LC5984" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">state</span> <span class="pl-k">=</span> <span class="pl-smi">Transporter</span>.<span class="pl-c1">BUSY</span>;</td>
</tr>
<tr>
<td id="L5985" class="blob-num js-line-number" data-line-number="5985"></td>
<td id="LC5985" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingStarted<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L5986" class="blob-num js-line-number" data-line-number="5986"></td>
<td id="LC5986" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_transport</span>.<span class="pl-c1">call</span>(self);</td>
</tr>
<tr>
<td id="L5987" class="blob-num js-line-number" data-line-number="5987"></td>
<td id="LC5987" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5988" class="blob-num js-line-number" data-line-number="5988"></td>
<td id="LC5988" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5989" class="blob-num js-line-number" data-line-number="5989"></td>
<td id="LC5989" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_transport</span>() {</td>
</tr>
<tr>
<td id="L5990" class="blob-num js-line-number" data-line-number="5990"></td>
<td id="LC5990" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>,</td>
</tr>
<tr>
<td id="L5991" class="blob-num js-line-number" data-line-number="5991"></td>
<td id="LC5991" class="blob-code blob-code-inner js-file-line"> chunk,</td>
</tr>
<tr>
<td id="L5992" class="blob-num js-line-number" data-line-number="5992"></td>
<td id="LC5992" class="blob-code blob-code-inner js-file-line"> bytesLeft <span class="pl-k">=</span> _size <span class="pl-k">-</span> _pos;</td>
</tr>
<tr>
<td id="L5993" class="blob-num js-line-number" data-line-number="5993"></td>
<td id="LC5993" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5994" class="blob-num js-line-number" data-line-number="5994"></td>
<td id="LC5994" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_chunk_size <span class="pl-k">></span> bytesLeft) {</td>
</tr>
<tr>
<td id="L5995" class="blob-num js-line-number" data-line-number="5995"></td>
<td id="LC5995" class="blob-code blob-code-inner js-file-line"> _chunk_size <span class="pl-k">=</span> bytesLeft;</td>
</tr>
<tr>
<td id="L5996" class="blob-num js-line-number" data-line-number="5996"></td>
<td id="LC5996" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L5997" class="blob-num js-line-number" data-line-number="5997"></td>
<td id="LC5997" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L5998" class="blob-num js-line-number" data-line-number="5998"></td>
<td id="LC5998" class="blob-code blob-code-inner js-file-line"> chunk <span class="pl-k">=</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">btoa</span>(<span class="pl-smi">_data</span>.<span class="pl-c1">substr</span>(_pos, _chunk_size));</td>
</tr>
<tr>
<td id="L5999" class="blob-num js-line-number" data-line-number="5999"></td>
<td id="LC5999" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">'</span>Transporter<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>receive<span class="pl-pds">'</span></span>, chunk, _size);</td>
</tr>
<tr>
<td id="L6000" class="blob-num js-line-number" data-line-number="6000"></td>
<td id="LC6000" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6001" class="blob-num js-line-number" data-line-number="6001"></td>
<td id="LC6001" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6002" class="blob-num js-line-number" data-line-number="6002"></td>
<td id="LC6002" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6003" class="blob-num js-line-number" data-line-number="6003"></td>
<td id="LC6003" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Transporter</span>.<span class="pl-c1">IDLE</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6004" class="blob-num js-line-number" data-line-number="6004"></td>
<td id="LC6004" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Transporter</span>.<span class="pl-c1">BUSY</span> <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L6005" class="blob-num js-line-number" data-line-number="6005"></td>
<td id="LC6005" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Transporter</span>.<span class="pl-c1">DONE</span> <span class="pl-k">=</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L6006" class="blob-num js-line-number" data-line-number="6006"></td>
<td id="LC6006" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6007" class="blob-num js-line-number" data-line-number="6007"></td>
<td id="LC6007" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Transporter</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L6008" class="blob-num js-line-number" data-line-number="6008"></td>
<td id="LC6008" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6009" class="blob-num js-line-number" data-line-number="6009"></td>
<td id="LC6009" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> Transporter;</td>
</tr>
<tr>
<td id="L6010" class="blob-num js-line-number" data-line-number="6010"></td>
<td id="LC6010" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L6011" class="blob-num js-line-number" data-line-number="6011"></td>
<td id="LC6011" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6012" class="blob-num js-line-number" data-line-number="6012"></td>
<td id="LC6012" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/image/Image.js</span></td>
</tr>
<tr>
<td id="L6013" class="blob-num js-line-number" data-line-number="6013"></td>
<td id="LC6013" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6014" class="blob-num js-line-number" data-line-number="6014"></td>
<td id="LC6014" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6015" class="blob-num js-line-number" data-line-number="6015"></td>
<td id="LC6015" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Image.js</span></td>
</tr>
<tr>
<td id="L6016" class="blob-num js-line-number" data-line-number="6016"></td>
<td id="LC6016" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6017" class="blob-num js-line-number" data-line-number="6017"></td>
<td id="LC6017" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L6018" class="blob-num js-line-number" data-line-number="6018"></td>
<td id="LC6018" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L6019" class="blob-num js-line-number" data-line-number="6019"></td>
<td id="LC6019" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6020" class="blob-num js-line-number" data-line-number="6020"></td>
<td id="LC6020" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L6021" class="blob-num js-line-number" data-line-number="6021"></td>
<td id="LC6021" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L6022" class="blob-num js-line-number" data-line-number="6022"></td>
<td id="LC6022" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6023" class="blob-num js-line-number" data-line-number="6023"></td>
<td id="LC6023" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6024" class="blob-num js-line-number" data-line-number="6024"></td>
<td id="LC6024" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/image/Image<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L6025" class="blob-num js-line-number" data-line-number="6025"></td>
<td id="LC6025" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6026" class="blob-num js-line-number" data-line-number="6026"></td>
<td id="LC6026" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6027" class="blob-num js-line-number" data-line-number="6027"></td>
<td id="LC6027" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6028" class="blob-num js-line-number" data-line-number="6028"></td>
<td id="LC6028" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileReaderSync<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6029" class="blob-num js-line-number" data-line-number="6029"></td>
<td id="LC6029" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6030" class="blob-num js-line-number" data-line-number="6030"></td>
<td id="LC6030" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6031" class="blob-num js-line-number" data-line-number="6031"></td>
<td id="LC6031" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/RuntimeClient<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6032" class="blob-num js-line-number" data-line-number="6032"></td>
<td id="LC6032" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Transporter<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6033" class="blob-num js-line-number" data-line-number="6033"></td>
<td id="LC6033" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6034" class="blob-num js-line-number" data-line-number="6034"></td>
<td id="LC6034" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/EventTarget<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6035" class="blob-num js-line-number" data-line-number="6035"></td>
<td id="LC6035" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6036" class="blob-num js-line-number" data-line-number="6036"></td>
<td id="LC6036" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6037" class="blob-num js-line-number" data-line-number="6037"></td>
<td id="LC6037" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L6038" class="blob-num js-line-number" data-line-number="6038"></td>
<td id="LC6038" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">x</span>, <span class="pl-c1">FileReaderSync</span>, <span class="pl-c1">XMLHttpRequest</span>, <span class="pl-smi">Runtime</span>, <span class="pl-smi">RuntimeClient</span>, <span class="pl-smi">Transporter</span>, <span class="pl-smi">Env</span>, <span class="pl-c1">EventTarget</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">File</span>, <span class="pl-smi">Encode</span>) {</td>
</tr>
<tr>
<td id="L6039" class="blob-num js-line-number" data-line-number="6039"></td>
<td id="LC6039" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6040" class="blob-num js-line-number" data-line-number="6040"></td>
<td id="LC6040" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Image preloading and manipulation utility. Additionally it provides access to image meta info (Exif, GPS) and raw binary data.</span></td>
</tr>
<tr>
<td id="L6041" class="blob-num js-line-number" data-line-number="6041"></td>
<td id="LC6041" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6042" class="blob-num js-line-number" data-line-number="6042"></td>
<td id="LC6042" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@class</span> moxie/image/Image</span></td>
</tr>
<tr>
<td id="L6043" class="blob-num js-line-number" data-line-number="6043"></td>
<td id="LC6043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@constructor</span></span></td>
</tr>
<tr>
<td id="L6044" class="blob-num js-line-number" data-line-number="6044"></td>
<td id="LC6044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@extends</span> <span class="pl-en">EventTarget</span></span></td>
</tr>
<tr>
<td id="L6045" class="blob-num js-line-number" data-line-number="6045"></td>
<td id="LC6045" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6046" class="blob-num js-line-number" data-line-number="6046"></td>
<td id="LC6046" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dispatches <span class="pl-k">=</span> [</td>
</tr>
<tr>
<td id="L6047" class="blob-num js-line-number" data-line-number="6047"></td>
<td id="LC6047" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6048" class="blob-num js-line-number" data-line-number="6048"></td>
<td id="LC6048" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6049" class="blob-num js-line-number" data-line-number="6049"></td>
<td id="LC6049" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6050" class="blob-num js-line-number" data-line-number="6050"></td>
<td id="LC6050" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when loading is complete.</span></td>
</tr>
<tr>
<td id="L6051" class="blob-num js-line-number" data-line-number="6051"></td>
<td id="LC6051" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6052" class="blob-num js-line-number" data-line-number="6052"></td>
<td id="LC6052" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">load</span></span></td>
</tr>
<tr>
<td id="L6053" class="blob-num js-line-number" data-line-number="6053"></td>
<td id="LC6053" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L6054" class="blob-num js-line-number" data-line-number="6054"></td>
<td id="LC6054" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6055" class="blob-num js-line-number" data-line-number="6055"></td>
<td id="LC6055" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6056" class="blob-num js-line-number" data-line-number="6056"></td>
<td id="LC6056" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6057" class="blob-num js-line-number" data-line-number="6057"></td>
<td id="LC6057" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6058" class="blob-num js-line-number" data-line-number="6058"></td>
<td id="LC6058" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6059" class="blob-num js-line-number" data-line-number="6059"></td>
<td id="LC6059" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6060" class="blob-num js-line-number" data-line-number="6060"></td>
<td id="LC6060" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when resize operation is complete.</span></td>
</tr>
<tr>
<td id="L6061" class="blob-num js-line-number" data-line-number="6061"></td>
<td id="LC6061" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6062" class="blob-num js-line-number" data-line-number="6062"></td>
<td id="LC6062" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">resize</span></span></td>
</tr>
<tr>
<td id="L6063" class="blob-num js-line-number" data-line-number="6063"></td>
<td id="LC6063" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L6064" class="blob-num js-line-number" data-line-number="6064"></td>
<td id="LC6064" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6065" class="blob-num js-line-number" data-line-number="6065"></td>
<td id="LC6065" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>resize<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6066" class="blob-num js-line-number" data-line-number="6066"></td>
<td id="LC6066" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6067" class="blob-num js-line-number" data-line-number="6067"></td>
<td id="LC6067" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6068" class="blob-num js-line-number" data-line-number="6068"></td>
<td id="LC6068" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispatched when visual representation of the image is successfully embedded</span></td>
</tr>
<tr>
<td id="L6069" class="blob-num js-line-number" data-line-number="6069"></td>
<td id="LC6069" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> into the corresponsing container.</span></td>
</tr>
<tr>
<td id="L6070" class="blob-num js-line-number" data-line-number="6070"></td>
<td id="LC6070" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6071" class="blob-num js-line-number" data-line-number="6071"></td>
<td id="LC6071" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@event</span> <span class="pl-en">embedded</span></span></td>
</tr>
<tr>
<td id="L6072" class="blob-num js-line-number" data-line-number="6072"></td>
<td id="LC6072" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">event</span></span></td>
</tr>
<tr>
<td id="L6073" class="blob-num js-line-number" data-line-number="6073"></td>
<td id="LC6073" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6074" class="blob-num js-line-number" data-line-number="6074"></td>
<td id="LC6074" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>embedded<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L6075" class="blob-num js-line-number" data-line-number="6075"></td>
<td id="LC6075" class="blob-code blob-code-inner js-file-line"> ];</td>
</tr>
<tr>
<td id="L6076" class="blob-num js-line-number" data-line-number="6076"></td>
<td id="LC6076" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6077" class="blob-num js-line-number" data-line-number="6077"></td>
<td id="LC6077" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">Image</span>() {</td>
</tr>
<tr>
<td id="L6078" class="blob-num js-line-number" data-line-number="6078"></td>
<td id="LC6078" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6079" class="blob-num js-line-number" data-line-number="6079"></td>
<td id="LC6079" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">RuntimeClient</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L6080" class="blob-num js-line-number" data-line-number="6080"></td>
<td id="LC6080" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6081" class="blob-num js-line-number" data-line-number="6081"></td>
<td id="LC6081" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L6082" class="blob-num js-line-number" data-line-number="6082"></td>
<td id="LC6082" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6083" class="blob-num js-line-number" data-line-number="6083"></td>
<td id="LC6083" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the component</span></td>
</tr>
<tr>
<td id="L6084" class="blob-num js-line-number" data-line-number="6084"></td>
<td id="LC6084" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6085" class="blob-num js-line-number" data-line-number="6085"></td>
<td id="LC6085" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> uid</span></td>
</tr>
<tr>
<td id="L6086" class="blob-num js-line-number" data-line-number="6086"></td>
<td id="LC6086" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L6087" class="blob-num js-line-number" data-line-number="6087"></td>
<td id="LC6087" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6088" class="blob-num js-line-number" data-line-number="6088"></td>
<td id="LC6088" class="blob-code blob-code-inner js-file-line"> uid<span class="pl-k">:</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>),</td>
</tr>
<tr>
<td id="L6089" class="blob-num js-line-number" data-line-number="6089"></td>
<td id="LC6089" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6090" class="blob-num js-line-number" data-line-number="6090"></td>
<td id="LC6090" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6091" class="blob-num js-line-number" data-line-number="6091"></td>
<td id="LC6091" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Unique id of the connected runtime, if any.</span></td>
</tr>
<tr>
<td id="L6092" class="blob-num js-line-number" data-line-number="6092"></td>
<td id="LC6092" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6093" class="blob-num js-line-number" data-line-number="6093"></td>
<td id="LC6093" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> ruid</span></td>
</tr>
<tr>
<td id="L6094" class="blob-num js-line-number" data-line-number="6094"></td>
<td id="LC6094" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L6095" class="blob-num js-line-number" data-line-number="6095"></td>
<td id="LC6095" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6096" class="blob-num js-line-number" data-line-number="6096"></td>
<td id="LC6096" class="blob-code blob-code-inner js-file-line"> ruid<span class="pl-k">:</span> <span class="pl-c1">null</span>,</td>
</tr>
<tr>
<td id="L6097" class="blob-num js-line-number" data-line-number="6097"></td>
<td id="LC6097" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6098" class="blob-num js-line-number" data-line-number="6098"></td>
<td id="LC6098" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6099" class="blob-num js-line-number" data-line-number="6099"></td>
<td id="LC6099" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Name of the file, that was used to create an image, if available. If not equals to empty string.</span></td>
</tr>
<tr>
<td id="L6100" class="blob-num js-line-number" data-line-number="6100"></td>
<td id="LC6100" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6101" class="blob-num js-line-number" data-line-number="6101"></td>
<td id="LC6101" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> name</span></td>
</tr>
<tr>
<td id="L6102" class="blob-num js-line-number" data-line-number="6102"></td>
<td id="LC6102" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L6103" class="blob-num js-line-number" data-line-number="6103"></td>
<td id="LC6103" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi"><span class="pl-pds">"</span><span class="pl-pds">"</span></span></span></td>
</tr>
<tr>
<td id="L6104" class="blob-num js-line-number" data-line-number="6104"></td>
<td id="LC6104" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6105" class="blob-num js-line-number" data-line-number="6105"></td>
<td id="LC6105" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6106" class="blob-num js-line-number" data-line-number="6106"></td>
<td id="LC6106" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6107" class="blob-num js-line-number" data-line-number="6107"></td>
<td id="LC6107" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6108" class="blob-num js-line-number" data-line-number="6108"></td>
<td id="LC6108" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Size of the image in bytes. Actual value is set only after image is preloaded.</span></td>
</tr>
<tr>
<td id="L6109" class="blob-num js-line-number" data-line-number="6109"></td>
<td id="LC6109" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6110" class="blob-num js-line-number" data-line-number="6110"></td>
<td id="LC6110" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> size</span></td>
</tr>
<tr>
<td id="L6111" class="blob-num js-line-number" data-line-number="6111"></td>
<td id="LC6111" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L6112" class="blob-num js-line-number" data-line-number="6112"></td>
<td id="LC6112" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L6113" class="blob-num js-line-number" data-line-number="6113"></td>
<td id="LC6113" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6114" class="blob-num js-line-number" data-line-number="6114"></td>
<td id="LC6114" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L6115" class="blob-num js-line-number" data-line-number="6115"></td>
<td id="LC6115" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6116" class="blob-num js-line-number" data-line-number="6116"></td>
<td id="LC6116" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6117" class="blob-num js-line-number" data-line-number="6117"></td>
<td id="LC6117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Width of the image. Actual value is set only after image is preloaded.</span></td>
</tr>
<tr>
<td id="L6118" class="blob-num js-line-number" data-line-number="6118"></td>
<td id="LC6118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6119" class="blob-num js-line-number" data-line-number="6119"></td>
<td id="LC6119" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> width</span></td>
</tr>
<tr>
<td id="L6120" class="blob-num js-line-number" data-line-number="6120"></td>
<td id="LC6120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L6121" class="blob-num js-line-number" data-line-number="6121"></td>
<td id="LC6121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L6122" class="blob-num js-line-number" data-line-number="6122"></td>
<td id="LC6122" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6123" class="blob-num js-line-number" data-line-number="6123"></td>
<td id="LC6123" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L6124" class="blob-num js-line-number" data-line-number="6124"></td>
<td id="LC6124" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6125" class="blob-num js-line-number" data-line-number="6125"></td>
<td id="LC6125" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6126" class="blob-num js-line-number" data-line-number="6126"></td>
<td id="LC6126" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Height of the image. Actual value is set only after image is preloaded.</span></td>
</tr>
<tr>
<td id="L6127" class="blob-num js-line-number" data-line-number="6127"></td>
<td id="LC6127" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6128" class="blob-num js-line-number" data-line-number="6128"></td>
<td id="LC6128" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> height</span></td>
</tr>
<tr>
<td id="L6129" class="blob-num js-line-number" data-line-number="6129"></td>
<td id="LC6129" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L6130" class="blob-num js-line-number" data-line-number="6130"></td>
<td id="LC6130" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L6131" class="blob-num js-line-number" data-line-number="6131"></td>
<td id="LC6131" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6132" class="blob-num js-line-number" data-line-number="6132"></td>
<td id="LC6132" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L6133" class="blob-num js-line-number" data-line-number="6133"></td>
<td id="LC6133" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6134" class="blob-num js-line-number" data-line-number="6134"></td>
<td id="LC6134" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6135" class="blob-num js-line-number" data-line-number="6135"></td>
<td id="LC6135" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Mime type of the image. Currently only image/jpeg and image/png are supported. Actual value is set only after image is preloaded.</span></td>
</tr>
<tr>
<td id="L6136" class="blob-num js-line-number" data-line-number="6136"></td>
<td id="LC6136" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6137" class="blob-num js-line-number" data-line-number="6137"></td>
<td id="LC6137" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> type</span></td>
</tr>
<tr>
<td id="L6138" class="blob-num js-line-number" data-line-number="6138"></td>
<td id="LC6138" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L6139" class="blob-num js-line-number" data-line-number="6139"></td>
<td id="LC6139" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi"><span class="pl-pds">"</span><span class="pl-pds">"</span></span></span></td>
</tr>
<tr>
<td id="L6140" class="blob-num js-line-number" data-line-number="6140"></td>
<td id="LC6140" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6141" class="blob-num js-line-number" data-line-number="6141"></td>
<td id="LC6141" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6142" class="blob-num js-line-number" data-line-number="6142"></td>
<td id="LC6142" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6143" class="blob-num js-line-number" data-line-number="6143"></td>
<td id="LC6143" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6144" class="blob-num js-line-number" data-line-number="6144"></td>
<td id="LC6144" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Holds meta info (Exif, GPS). Is populated only for image/jpeg. Actual value is set only after image is preloaded.</span></td>
</tr>
<tr>
<td id="L6145" class="blob-num js-line-number" data-line-number="6145"></td>
<td id="LC6145" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6146" class="blob-num js-line-number" data-line-number="6146"></td>
<td id="LC6146" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> meta</span></td>
</tr>
<tr>
<td id="L6147" class="blob-num js-line-number" data-line-number="6147"></td>
<td id="LC6147" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Object}</span></span></td>
</tr>
<tr>
<td id="L6148" class="blob-num js-line-number" data-line-number="6148"></td>
<td id="LC6148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">{}</span></span></td>
</tr>
<tr>
<td id="L6149" class="blob-num js-line-number" data-line-number="6149"></td>
<td id="LC6149" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6150" class="blob-num js-line-number" data-line-number="6150"></td>
<td id="LC6150" class="blob-code blob-code-inner js-file-line"> meta<span class="pl-k">:</span> {},</td>
</tr>
<tr>
<td id="L6151" class="blob-num js-line-number" data-line-number="6151"></td>
<td id="LC6151" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6152" class="blob-num js-line-number" data-line-number="6152"></td>
<td id="LC6152" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6153" class="blob-num js-line-number" data-line-number="6153"></td>
<td id="LC6153" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Alias for load method, that takes another moxie.image.Image object as a source (see load).</span></td>
</tr>
<tr>
<td id="L6154" class="blob-num js-line-number" data-line-number="6154"></td>
<td id="LC6154" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6155" class="blob-num js-line-number" data-line-number="6155"></td>
<td id="LC6155" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">clone</span></span></td>
</tr>
<tr>
<td id="L6156" class="blob-num js-line-number" data-line-number="6156"></td>
<td id="LC6156" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Image}</span> <span class="pl-smi">src</span> Source for the image</span></td>
</tr>
<tr>
<td id="L6157" class="blob-num js-line-number" data-line-number="6157"></td>
<td id="LC6157" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[exact<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">false</span></span>]</span> Whether to activate in-depth clone mode</span></td>
</tr>
<tr>
<td id="L6158" class="blob-num js-line-number" data-line-number="6158"></td>
<td id="LC6158" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6159" class="blob-num js-line-number" data-line-number="6159"></td>
<td id="LC6159" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">clone</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6160" class="blob-num js-line-number" data-line-number="6160"></td>
<td id="LC6160" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">load</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L6161" class="blob-num js-line-number" data-line-number="6161"></td>
<td id="LC6161" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6162" class="blob-num js-line-number" data-line-number="6162"></td>
<td id="LC6162" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6163" class="blob-num js-line-number" data-line-number="6163"></td>
<td id="LC6163" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6164" class="blob-num js-line-number" data-line-number="6164"></td>
<td id="LC6164" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Loads image from various sources. Currently the source for new image can be: moxie.image.Image,</span></td>
</tr>
<tr>
<td id="L6165" class="blob-num js-line-number" data-line-number="6165"></td>
<td id="LC6165" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> moxie.file.Blob/moxie.file.File, native Blob/File, dataUrl or URL. Depending on the type of the</span></td>
</tr>
<tr>
<td id="L6166" class="blob-num js-line-number" data-line-number="6166"></td>
<td id="LC6166" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> source, arguments - differ. When source is URL, Image will be downloaded from remote destination</span></td>
</tr>
<tr>
<td id="L6167" class="blob-num js-line-number" data-line-number="6167"></td>
<td id="LC6167" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> and loaded in memory.</span></td>
</tr>
<tr>
<td id="L6168" class="blob-num js-line-number" data-line-number="6168"></td>
<td id="LC6168" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6169" class="blob-num js-line-number" data-line-number="6169"></td>
<td id="LC6169" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@example</span></span></td>
</tr>
<tr>
<td id="L6170" class="blob-num js-line-number" data-line-number="6170"></td>
<td id="LC6170" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k">var</span> img <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">moxie.image.Image</span>();</span></span></td>
</tr>
<tr>
<td id="L6171" class="blob-num js-line-number" data-line-number="6171"></td>
<td id="LC6171" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">img</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</span></span></td>
</tr>
<tr>
<td id="L6172" class="blob-num js-line-number" data-line-number="6172"></td>
<td id="LC6172" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k">var</span> blob <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-en">getAsBlob</span>();</span></span></td>
</tr>
<tr>
<td id="L6173" class="blob-num js-line-number" data-line-number="6173"></td>
<td id="LC6173" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6174" class="blob-num js-line-number" data-line-number="6174"></td>
<td id="LC6174" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k">var</span> formData <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">moxie.xhr.FormData</span>();</span></span></td>
</tr>
<tr>
<td id="L6175" class="blob-num js-line-number" data-line-number="6175"></td>
<td id="LC6175" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">formData</span>.<span class="pl-c1">append</span>(<span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>, blob);</span></span></td>
</tr>
<tr>
<td id="L6176" class="blob-num js-line-number" data-line-number="6176"></td>
<td id="LC6176" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6177" class="blob-num js-line-number" data-line-number="6177"></td>
<td id="LC6177" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-k">var</span> xhr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">moxie.xhr.XMLHttpRequest</span>();</span></span></td>
</tr>
<tr>
<td id="L6178" class="blob-num js-line-number" data-line-number="6178"></td>
<td id="LC6178" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">xhr</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</span></span></td>
</tr>
<tr>
<td id="L6179" class="blob-num js-line-number" data-line-number="6179"></td>
<td id="LC6179" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-c"><span class="pl-c">//</span> upload complete</span></span></span></td>
</tr>
<tr>
<td id="L6180" class="blob-num js-line-number" data-line-number="6180"></td>
<td id="LC6180" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">};</span></span></td>
</tr>
<tr>
<td id="L6181" class="blob-num js-line-number" data-line-number="6181"></td>
<td id="LC6181" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">xhr</span>.<span class="pl-c1">open</span>(<span class="pl-s"><span class="pl-pds">'</span>post<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>upload.php<span class="pl-pds">'</span></span>);</span></span></td>
</tr>
<tr>
<td id="L6182" class="blob-num js-line-number" data-line-number="6182"></td>
<td id="LC6182" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">xhr</span>.<span class="pl-c1">send</span>(formData);</span></span></td>
</tr>
<tr>
<td id="L6183" class="blob-num js-line-number" data-line-number="6183"></td>
<td id="LC6183" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1">};</span></span></td>
</tr>
<tr>
<td id="L6184" class="blob-num js-line-number" data-line-number="6184"></td>
<td id="LC6184" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-s1"><span class="pl-smi">img</span>.<span class="pl-c1">load</span>(<span class="pl-s"><span class="pl-pds">"</span>http://www.moxiecode.com/images/mox-logo.jpg<span class="pl-pds">"</span></span>); <span class="pl-c"><span class="pl-c">//</span> notice file extension (.jpg)</span></span></span></td>
</tr>
<tr>
<td id="L6185" class="blob-num js-line-number" data-line-number="6185"></td>
<td id="LC6185" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6186" class="blob-num js-line-number" data-line-number="6186"></td>
<td id="LC6186" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6187" class="blob-num js-line-number" data-line-number="6187"></td>
<td id="LC6187" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">load</span></span></td>
</tr>
<tr>
<td id="L6188" class="blob-num js-line-number" data-line-number="6188"></td>
<td id="LC6188" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Image|Blob|File|String}</span> <span class="pl-smi">src</span> Source for the image</span></td>
</tr>
<tr>
<td id="L6189" class="blob-num js-line-number" data-line-number="6189"></td>
<td id="LC6189" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean|Object}</span> <span class="pl-smi">[mixed]</span></span></td>
</tr>
<tr>
<td id="L6190" class="blob-num js-line-number" data-line-number="6190"></td>
<td id="LC6190" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6191" class="blob-num js-line-number" data-line-number="6191"></td>
<td id="LC6191" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">load</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6192" class="blob-num js-line-number" data-line-number="6192"></td>
<td id="LC6192" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_load</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L6193" class="blob-num js-line-number" data-line-number="6193"></td>
<td id="LC6193" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6194" class="blob-num js-line-number" data-line-number="6194"></td>
<td id="LC6194" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6195" class="blob-num js-line-number" data-line-number="6195"></td>
<td id="LC6195" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6196" class="blob-num js-line-number" data-line-number="6196"></td>
<td id="LC6196" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6197" class="blob-num js-line-number" data-line-number="6197"></td>
<td id="LC6197" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Resizes the image to fit the specified width/height. If crop is specified, image will also be</span></td>
</tr>
<tr>
<td id="L6198" class="blob-num js-line-number" data-line-number="6198"></td>
<td id="LC6198" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> cropped to the exact dimensions.</span></td>
</tr>
<tr>
<td id="L6199" class="blob-num js-line-number" data-line-number="6199"></td>
<td id="LC6199" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6200" class="blob-num js-line-number" data-line-number="6200"></td>
<td id="LC6200" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">resize</span></span></td>
</tr>
<tr>
<td id="L6201" class="blob-num js-line-number" data-line-number="6201"></td>
<td id="LC6201" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@since</span> 3.0</span></td>
</tr>
<tr>
<td id="L6202" class="blob-num js-line-number" data-line-number="6202"></td>
<td id="LC6202" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">options</span></span></td>
</tr>
<tr>
<td id="L6203" class="blob-num js-line-number" data-line-number="6203"></td>
<td id="LC6203" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">options.width</span> Resulting width</span></td>
</tr>
<tr>
<td id="L6204" class="blob-num js-line-number" data-line-number="6204"></td>
<td id="LC6204" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[options.height<span class="pl-k">=</span><span class="pl-s1">width</span>]</span> Resulting height (optional, if not supplied will default to width)</span></td>
</tr>
<tr>
<td id="L6205" class="blob-num js-line-number" data-line-number="6205"></td>
<td id="LC6205" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[options.type<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span></span>]</span> MIME type of the resulting image</span></td>
</tr>
<tr>
<td id="L6206" class="blob-num js-line-number" data-line-number="6206"></td>
<td id="LC6206" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[options.quality<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">90</span></span>]</span> In the case of JPEG, controls the quality of resulting image</span></td>
</tr>
<tr>
<td id="L6207" class="blob-num js-line-number" data-line-number="6207"></td>
<td id="LC6207" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.crop<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">'</span>cc<span class="pl-pds">'</span></span></span>]</span> If not falsy, image will be cropped, by default from center</span></td>
</tr>
<tr>
<td id="L6208" class="blob-num js-line-number" data-line-number="6208"></td>
<td id="LC6208" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.fit<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> Whether to upscale the image to fit the exact dimensions</span></td>
</tr>
<tr>
<td id="L6209" class="blob-num js-line-number" data-line-number="6209"></td>
<td id="LC6209" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.preserveHeaders<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> Whether to preserve meta headers (on JPEGs after resize)</span></td>
</tr>
<tr>
<td id="L6210" class="blob-num js-line-number" data-line-number="6210"></td>
<td id="LC6210" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[options.resample<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">'</span>default<span class="pl-pds">'</span></span></span>]</span> Resampling algorithm to use during resize</span></td>
</tr>
<tr>
<td id="L6211" class="blob-num js-line-number" data-line-number="6211"></td>
<td id="LC6211" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.multipass<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> Whether to scale the image in steps (results in better quality)</span></td>
</tr>
<tr>
<td id="L6212" class="blob-num js-line-number" data-line-number="6212"></td>
<td id="LC6212" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6213" class="blob-num js-line-number" data-line-number="6213"></td>
<td id="LC6213" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">resize</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L6214" class="blob-num js-line-number" data-line-number="6214"></td>
<td id="LC6214" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L6215" class="blob-num js-line-number" data-line-number="6215"></td>
<td id="LC6215" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> orientation;</td>
</tr>
<tr>
<td id="L6216" class="blob-num js-line-number" data-line-number="6216"></td>
<td id="LC6216" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> scale;</td>
</tr>
<tr>
<td id="L6217" class="blob-num js-line-number" data-line-number="6217"></td>
<td id="LC6217" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6218" class="blob-num js-line-number" data-line-number="6218"></td>
<td id="LC6218" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> srcRect <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L6219" class="blob-num js-line-number" data-line-number="6219"></td>
<td id="LC6219" class="blob-code blob-code-inner js-file-line"> x<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L6220" class="blob-num js-line-number" data-line-number="6220"></td>
<td id="LC6220" class="blob-code blob-code-inner js-file-line"> y<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L6221" class="blob-num js-line-number" data-line-number="6221"></td>
<td id="LC6221" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-c1">width</span>,</td>
</tr>
<tr>
<td id="L6222" class="blob-num js-line-number" data-line-number="6222"></td>
<td id="LC6222" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-c1">height</span></td>
</tr>
<tr>
<td id="L6223" class="blob-num js-line-number" data-line-number="6223"></td>
<td id="LC6223" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6224" class="blob-num js-line-number" data-line-number="6224"></td>
<td id="LC6224" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6225" class="blob-num js-line-number" data-line-number="6225"></td>
<td id="LC6225" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> opts <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extendIf</span>({</td>
</tr>
<tr>
<td id="L6226" class="blob-num js-line-number" data-line-number="6226"></td>
<td id="LC6226" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-c1">width</span>,</td>
</tr>
<tr>
<td id="L6227" class="blob-num js-line-number" data-line-number="6227"></td>
<td id="LC6227" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-c1">height</span>,</td>
</tr>
<tr>
<td id="L6228" class="blob-num js-line-number" data-line-number="6228"></td>
<td id="LC6228" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6229" class="blob-num js-line-number" data-line-number="6229"></td>
<td id="LC6229" class="blob-code blob-code-inner js-file-line"> quality<span class="pl-k">:</span> <span class="pl-c1">90</span>,</td>
</tr>
<tr>
<td id="L6230" class="blob-num js-line-number" data-line-number="6230"></td>
<td id="LC6230" class="blob-code blob-code-inner js-file-line"> crop<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L6231" class="blob-num js-line-number" data-line-number="6231"></td>
<td id="LC6231" class="blob-code blob-code-inner js-file-line"> fit<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L6232" class="blob-num js-line-number" data-line-number="6232"></td>
<td id="LC6232" class="blob-code blob-code-inner js-file-line"> preserveHeaders<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L6233" class="blob-num js-line-number" data-line-number="6233"></td>
<td id="LC6233" class="blob-code blob-code-inner js-file-line"> resample<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>default<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6234" class="blob-num js-line-number" data-line-number="6234"></td>
<td id="LC6234" class="blob-code blob-code-inner js-file-line"> multipass<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L6235" class="blob-num js-line-number" data-line-number="6235"></td>
<td id="LC6235" class="blob-code blob-code-inner js-file-line"> }, options);</td>
</tr>
<tr>
<td id="L6236" class="blob-num js-line-number" data-line-number="6236"></td>
<td id="LC6236" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6237" class="blob-num js-line-number" data-line-number="6237"></td>
<td id="LC6237" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L6238" class="blob-num js-line-number" data-line-number="6238"></td>
<td id="LC6238" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">self</span>.<span class="pl-c1">size</span>) { <span class="pl-c"><span class="pl-c">//</span> only preloaded image objects can be used as source</span></td>
</tr>
<tr>
<td id="L6239" class="blob-num js-line-number" data-line-number="6239"></td>
<td id="LC6239" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L6240" class="blob-num js-line-number" data-line-number="6240"></td>
<td id="LC6240" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6241" class="blob-num js-line-number" data-line-number="6241"></td>
<td id="LC6241" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6242" class="blob-num js-line-number" data-line-number="6242"></td>
<td id="LC6242" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> no way to reliably intercept the crash due to high resolution, so we simply avoid it</span></td>
</tr>
<tr>
<td id="L6243" class="blob-num js-line-number" data-line-number="6243"></td>
<td id="LC6243" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">></span> <span class="pl-smi">Image</span>.<span class="pl-c1">MAX_RESIZE_WIDTH</span> <span class="pl-k">||</span> <span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">></span> <span class="pl-smi">Image</span>.<span class="pl-c1">MAX_RESIZE_HEIGHT</span>) {</td>
</tr>
<tr>
<td id="L6244" class="blob-num js-line-number" data-line-number="6244"></td>
<td id="LC6244" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">MAX_RESOLUTION_ERR</span>);</td>
</tr>
<tr>
<td id="L6245" class="blob-num js-line-number" data-line-number="6245"></td>
<td id="LC6245" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6246" class="blob-num js-line-number" data-line-number="6246"></td>
<td id="LC6246" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6247" class="blob-num js-line-number" data-line-number="6247"></td>
<td id="LC6247" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> take into account orientation tag</span></td>
</tr>
<tr>
<td id="L6248" class="blob-num js-line-number" data-line-number="6248"></td>
<td id="LC6248" class="blob-code blob-code-inner js-file-line"> orientation <span class="pl-k">=</span> (<span class="pl-smi">self</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-smi">self</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">tiff</span> <span class="pl-k">&&</span> <span class="pl-smi">self</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">tiff</span>.<span class="pl-smi">Orientation</span>) <span class="pl-k">||</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L6249" class="blob-num js-line-number" data-line-number="6249"></td>
<td id="LC6249" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6250" class="blob-num js-line-number" data-line-number="6250"></td>
<td id="LC6250" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(orientation, [<span class="pl-c1">5</span>,<span class="pl-c1">6</span>,<span class="pl-c1">7</span>,<span class="pl-c1">8</span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) { <span class="pl-c"><span class="pl-c">//</span> values that require 90 degree rotation</span></td>
</tr>
<tr>
<td id="L6251" class="blob-num js-line-number" data-line-number="6251"></td>
<td id="LC6251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> tmp <span class="pl-k">=</span> <span class="pl-smi">opts</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L6252" class="blob-num js-line-number" data-line-number="6252"></td>
<td id="LC6252" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">opts</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-smi">opts</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L6253" class="blob-num js-line-number" data-line-number="6253"></td>
<td id="LC6253" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">opts</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> tmp;</td>
</tr>
<tr>
<td id="L6254" class="blob-num js-line-number" data-line-number="6254"></td>
<td id="LC6254" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6255" class="blob-num js-line-number" data-line-number="6255"></td>
<td id="LC6255" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6256" class="blob-num js-line-number" data-line-number="6256"></td>
<td id="LC6256" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">opts</span>.<span class="pl-smi">crop</span>) {</td>
</tr>
<tr>
<td id="L6257" class="blob-num js-line-number" data-line-number="6257"></td>
<td id="LC6257" class="blob-code blob-code-inner js-file-line"> scale <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">max</span>(<span class="pl-smi">opts</span>.<span class="pl-c1">width</span><span class="pl-k">/</span><span class="pl-smi">self</span>.<span class="pl-c1">width</span>, <span class="pl-smi">opts</span>.<span class="pl-c1">height</span><span class="pl-k">/</span><span class="pl-smi">self</span>.<span class="pl-c1">height</span>);</td>
</tr>
<tr>
<td id="L6258" class="blob-num js-line-number" data-line-number="6258"></td>
<td id="LC6258" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6259" class="blob-num js-line-number" data-line-number="6259"></td>
<td id="LC6259" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">options</span>.<span class="pl-smi">fit</span>) {</td>
</tr>
<tr>
<td id="L6260" class="blob-num js-line-number" data-line-number="6260"></td>
<td id="LC6260" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> first scale it up or down to fit the original image</span></td>
</tr>
<tr>
<td id="L6261" class="blob-num js-line-number" data-line-number="6261"></td>
<td id="LC6261" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(<span class="pl-c1">Math</span>.<span class="pl-c1">ceil</span>(<span class="pl-smi">opts</span>.<span class="pl-c1">width</span><span class="pl-k">/</span>scale), <span class="pl-smi">self</span>.<span class="pl-c1">width</span>);</td>
</tr>
<tr>
<td id="L6262" class="blob-num js-line-number" data-line-number="6262"></td>
<td id="LC6262" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(<span class="pl-c1">Math</span>.<span class="pl-c1">ceil</span>(<span class="pl-smi">opts</span>.<span class="pl-c1">height</span><span class="pl-k">/</span>scale), <span class="pl-smi">self</span>.<span class="pl-c1">height</span>);</td>
</tr>
<tr>
<td id="L6263" class="blob-num js-line-number" data-line-number="6263"></td>
<td id="LC6263" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6264" class="blob-num js-line-number" data-line-number="6264"></td>
<td id="LC6264" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> recalculate the scale for adapted dimensions</span></td>
</tr>
<tr>
<td id="L6265" class="blob-num js-line-number" data-line-number="6265"></td>
<td id="LC6265" class="blob-code blob-code-inner js-file-line"> scale <span class="pl-k">=</span> <span class="pl-smi">opts</span>.<span class="pl-c1">width</span><span class="pl-k">/</span><span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L6266" class="blob-num js-line-number" data-line-number="6266"></td>
<td id="LC6266" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6267" class="blob-num js-line-number" data-line-number="6267"></td>
<td id="LC6267" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(<span class="pl-smi">opts</span>.<span class="pl-c1">width</span>, <span class="pl-smi">self</span>.<span class="pl-c1">width</span>);</td>
</tr>
<tr>
<td id="L6268" class="blob-num js-line-number" data-line-number="6268"></td>
<td id="LC6268" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(<span class="pl-smi">opts</span>.<span class="pl-c1">height</span>, <span class="pl-smi">self</span>.<span class="pl-c1">height</span>);</td>
</tr>
<tr>
<td id="L6269" class="blob-num js-line-number" data-line-number="6269"></td>
<td id="LC6269" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6270" class="blob-num js-line-number" data-line-number="6270"></td>
<td id="LC6270" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> now we do not need to scale it any further</span></td>
</tr>
<tr>
<td id="L6271" class="blob-num js-line-number" data-line-number="6271"></td>
<td id="LC6271" class="blob-code blob-code-inner js-file-line"> scale <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L6272" class="blob-num js-line-number" data-line-number="6272"></td>
<td id="LC6272" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6273" class="blob-num js-line-number" data-line-number="6273"></td>
<td id="LC6273" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6274" class="blob-num js-line-number" data-line-number="6274"></td>
<td id="LC6274" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(<span class="pl-smi">opts</span>.<span class="pl-smi">crop</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>boolean<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6275" class="blob-num js-line-number" data-line-number="6275"></td>
<td id="LC6275" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">opts</span>.<span class="pl-smi">crop</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>cc<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L6276" class="blob-num js-line-number" data-line-number="6276"></td>
<td id="LC6276" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6277" class="blob-num js-line-number" data-line-number="6277"></td>
<td id="LC6277" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6278" class="blob-num js-line-number" data-line-number="6278"></td>
<td id="LC6278" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-smi">opts</span>.<span class="pl-smi">crop</span>.<span class="pl-c1">toLowerCase</span>().<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>_<span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span>-<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L6279" class="blob-num js-line-number" data-line-number="6279"></td>
<td id="LC6279" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>rb<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6280" class="blob-num js-line-number" data-line-number="6280"></td>
<td id="LC6280" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>right-bottom<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6281" class="blob-num js-line-number" data-line-number="6281"></td>
<td id="LC6281" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L6282" class="blob-num js-line-number" data-line-number="6282"></td>
<td id="LC6282" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L6283" class="blob-num js-line-number" data-line-number="6283"></td>
<td id="LC6283" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6284" class="blob-num js-line-number" data-line-number="6284"></td>
<td id="LC6284" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6285" class="blob-num js-line-number" data-line-number="6285"></td>
<td id="LC6285" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>cb<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6286" class="blob-num js-line-number" data-line-number="6286"></td>
<td id="LC6286" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>center-bottom<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6287" class="blob-num js-line-number" data-line-number="6287"></td>
<td id="LC6287" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>((<span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>) <span class="pl-k">/</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L6288" class="blob-num js-line-number" data-line-number="6288"></td>
<td id="LC6288" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L6289" class="blob-num js-line-number" data-line-number="6289"></td>
<td id="LC6289" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6290" class="blob-num js-line-number" data-line-number="6290"></td>
<td id="LC6290" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6291" class="blob-num js-line-number" data-line-number="6291"></td>
<td id="LC6291" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>lb<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6292" class="blob-num js-line-number" data-line-number="6292"></td>
<td id="LC6292" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>left-bottom<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6293" class="blob-num js-line-number" data-line-number="6293"></td>
<td id="LC6293" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6294" class="blob-num js-line-number" data-line-number="6294"></td>
<td id="LC6294" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L6295" class="blob-num js-line-number" data-line-number="6295"></td>
<td id="LC6295" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6296" class="blob-num js-line-number" data-line-number="6296"></td>
<td id="LC6296" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6297" class="blob-num js-line-number" data-line-number="6297"></td>
<td id="LC6297" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>lt<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6298" class="blob-num js-line-number" data-line-number="6298"></td>
<td id="LC6298" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>left-top<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6299" class="blob-num js-line-number" data-line-number="6299"></td>
<td id="LC6299" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6300" class="blob-num js-line-number" data-line-number="6300"></td>
<td id="LC6300" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6301" class="blob-num js-line-number" data-line-number="6301"></td>
<td id="LC6301" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6302" class="blob-num js-line-number" data-line-number="6302"></td>
<td id="LC6302" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6303" class="blob-num js-line-number" data-line-number="6303"></td>
<td id="LC6303" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>ct<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6304" class="blob-num js-line-number" data-line-number="6304"></td>
<td id="LC6304" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>center-top<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6305" class="blob-num js-line-number" data-line-number="6305"></td>
<td id="LC6305" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>((<span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>) <span class="pl-k">/</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L6306" class="blob-num js-line-number" data-line-number="6306"></td>
<td id="LC6306" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6307" class="blob-num js-line-number" data-line-number="6307"></td>
<td id="LC6307" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6308" class="blob-num js-line-number" data-line-number="6308"></td>
<td id="LC6308" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6309" class="blob-num js-line-number" data-line-number="6309"></td>
<td id="LC6309" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>rt<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6310" class="blob-num js-line-number" data-line-number="6310"></td>
<td id="LC6310" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>right-top<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6311" class="blob-num js-line-number" data-line-number="6311"></td>
<td id="LC6311" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L6312" class="blob-num js-line-number" data-line-number="6312"></td>
<td id="LC6312" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6313" class="blob-num js-line-number" data-line-number="6313"></td>
<td id="LC6313" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6314" class="blob-num js-line-number" data-line-number="6314"></td>
<td id="LC6314" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6315" class="blob-num js-line-number" data-line-number="6315"></td>
<td id="LC6315" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>rc<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6316" class="blob-num js-line-number" data-line-number="6316"></td>
<td id="LC6316" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>right-center<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6317" class="blob-num js-line-number" data-line-number="6317"></td>
<td id="LC6317" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>right-middle<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6318" class="blob-num js-line-number" data-line-number="6318"></td>
<td id="LC6318" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L6319" class="blob-num js-line-number" data-line-number="6319"></td>
<td id="LC6319" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>((<span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span>) <span class="pl-k">/</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L6320" class="blob-num js-line-number" data-line-number="6320"></td>
<td id="LC6320" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6321" class="blob-num js-line-number" data-line-number="6321"></td>
<td id="LC6321" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6322" class="blob-num js-line-number" data-line-number="6322"></td>
<td id="LC6322" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6323" class="blob-num js-line-number" data-line-number="6323"></td>
<td id="LC6323" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>lc<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6324" class="blob-num js-line-number" data-line-number="6324"></td>
<td id="LC6324" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>left-center<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6325" class="blob-num js-line-number" data-line-number="6325"></td>
<td id="LC6325" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>left-middle<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6326" class="blob-num js-line-number" data-line-number="6326"></td>
<td id="LC6326" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L6327" class="blob-num js-line-number" data-line-number="6327"></td>
<td id="LC6327" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>((<span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span>) <span class="pl-k">/</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L6328" class="blob-num js-line-number" data-line-number="6328"></td>
<td id="LC6328" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L6329" class="blob-num js-line-number" data-line-number="6329"></td>
<td id="LC6329" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6330" class="blob-num js-line-number" data-line-number="6330"></td>
<td id="LC6330" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>cc<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6331" class="blob-num js-line-number" data-line-number="6331"></td>
<td id="LC6331" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>center-center<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6332" class="blob-num js-line-number" data-line-number="6332"></td>
<td id="LC6332" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>center-middle<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L6333" class="blob-num js-line-number" data-line-number="6333"></td>
<td id="LC6333" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>:</td>
</tr>
<tr>
<td id="L6334" class="blob-num js-line-number" data-line-number="6334"></td>
<td id="LC6334" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>((<span class="pl-smi">self</span>.<span class="pl-c1">width</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">width</span>) <span class="pl-k">/</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L6335" class="blob-num js-line-number" data-line-number="6335"></td>
<td id="LC6335" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">floor</span>((<span class="pl-smi">self</span>.<span class="pl-c1">height</span> <span class="pl-k">-</span> <span class="pl-smi">srcRect</span>.<span class="pl-c1">height</span>) <span class="pl-k">/</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L6336" class="blob-num js-line-number" data-line-number="6336"></td>
<td id="LC6336" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6337" class="blob-num js-line-number" data-line-number="6337"></td>
<td id="LC6337" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6338" class="blob-num js-line-number" data-line-number="6338"></td>
<td id="LC6338" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> original image might be smaller than requested crop, so - avoid negative values</span></td>
</tr>
<tr>
<td id="L6339" class="blob-num js-line-number" data-line-number="6339"></td>
<td id="LC6339" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">max</span>(<span class="pl-smi">srcRect</span>.<span class="pl-c1">x</span>, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L6340" class="blob-num js-line-number" data-line-number="6340"></td>
<td id="LC6340" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">max</span>(<span class="pl-smi">srcRect</span>.<span class="pl-c1">y</span>, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L6341" class="blob-num js-line-number" data-line-number="6341"></td>
<td id="LC6341" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6342" class="blob-num js-line-number" data-line-number="6342"></td>
<td id="LC6342" class="blob-code blob-code-inner js-file-line"> scale <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(<span class="pl-smi">opts</span>.<span class="pl-c1">width</span><span class="pl-k">/</span><span class="pl-smi">self</span>.<span class="pl-c1">width</span>, <span class="pl-smi">opts</span>.<span class="pl-c1">height</span><span class="pl-k">/</span><span class="pl-smi">self</span>.<span class="pl-c1">height</span>);</td>
</tr>
<tr>
<td id="L6343" class="blob-num js-line-number" data-line-number="6343"></td>
<td id="LC6343" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6344" class="blob-num js-line-number" data-line-number="6344"></td>
<td id="LC6344" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> do not upscale if we were asked to not fit it</span></td>
</tr>
<tr>
<td id="L6345" class="blob-num js-line-number" data-line-number="6345"></td>
<td id="LC6345" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (scale <span class="pl-k">></span> <span class="pl-c1">1</span> <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">opts</span>.<span class="pl-smi">fit</span>) {</td>
</tr>
<tr>
<td id="L6346" class="blob-num js-line-number" data-line-number="6346"></td>
<td id="LC6346" class="blob-code blob-code-inner js-file-line"> scale <span class="pl-k">=</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L6347" class="blob-num js-line-number" data-line-number="6347"></td>
<td id="LC6347" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6348" class="blob-num js-line-number" data-line-number="6348"></td>
<td id="LC6348" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6349" class="blob-num js-line-number" data-line-number="6349"></td>
<td id="LC6349" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6350" class="blob-num js-line-number" data-line-number="6350"></td>
<td id="LC6350" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>resize<span class="pl-pds">'</span></span>, srcRect, scale, opts);</td>
</tr>
<tr>
<td id="L6351" class="blob-num js-line-number" data-line-number="6351"></td>
<td id="LC6351" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L6352" class="blob-num js-line-number" data-line-number="6352"></td>
<td id="LC6352" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for now simply trigger error event</span></td>
</tr>
<tr>
<td id="L6353" class="blob-num js-line-number" data-line-number="6353"></td>
<td id="LC6353" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-smi">ex</span>.<span class="pl-c1">code</span>);</td>
</tr>
<tr>
<td id="L6354" class="blob-num js-line-number" data-line-number="6354"></td>
<td id="LC6354" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6355" class="blob-num js-line-number" data-line-number="6355"></td>
<td id="LC6355" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6356" class="blob-num js-line-number" data-line-number="6356"></td>
<td id="LC6356" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6357" class="blob-num js-line-number" data-line-number="6357"></td>
<td id="LC6357" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6358" class="blob-num js-line-number" data-line-number="6358"></td>
<td id="LC6358" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Downsizes the image to fit the specified width/height. If crop is supplied, image will be cropped to exact dimensions.</span></td>
</tr>
<tr>
<td id="L6359" class="blob-num js-line-number" data-line-number="6359"></td>
<td id="LC6359" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6360" class="blob-num js-line-number" data-line-number="6360"></td>
<td id="LC6360" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">downsize</span></span></td>
</tr>
<tr>
<td id="L6361" class="blob-num js-line-number" data-line-number="6361"></td>
<td id="LC6361" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@deprecated</span> use resize()</span></td>
</tr>
<tr>
<td id="L6362" class="blob-num js-line-number" data-line-number="6362"></td>
<td id="LC6362" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6363" class="blob-num js-line-number" data-line-number="6363"></td>
<td id="LC6363" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">downsize</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L6364" class="blob-num js-line-number" data-line-number="6364"></td>
<td id="LC6364" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> defaults <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L6365" class="blob-num js-line-number" data-line-number="6365"></td>
<td id="LC6365" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">width</span>,</td>
</tr>
<tr>
<td id="L6366" class="blob-num js-line-number" data-line-number="6366"></td>
<td id="LC6366" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">height</span>,</td>
</tr>
<tr>
<td id="L6367" class="blob-num js-line-number" data-line-number="6367"></td>
<td id="LC6367" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6368" class="blob-num js-line-number" data-line-number="6368"></td>
<td id="LC6368" class="blob-code blob-code-inner js-file-line"> quality<span class="pl-k">:</span> <span class="pl-c1">90</span>,</td>
</tr>
<tr>
<td id="L6369" class="blob-num js-line-number" data-line-number="6369"></td>
<td id="LC6369" class="blob-code blob-code-inner js-file-line"> crop<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L6370" class="blob-num js-line-number" data-line-number="6370"></td>
<td id="LC6370" class="blob-code blob-code-inner js-file-line"> fit<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L6371" class="blob-num js-line-number" data-line-number="6371"></td>
<td id="LC6371" class="blob-code blob-code-inner js-file-line"> preserveHeaders<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L6372" class="blob-num js-line-number" data-line-number="6372"></td>
<td id="LC6372" class="blob-code blob-code-inner js-file-line"> resample<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>default<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L6373" class="blob-num js-line-number" data-line-number="6373"></td>
<td id="LC6373" class="blob-code blob-code-inner js-file-line"> }, opts;</td>
</tr>
<tr>
<td id="L6374" class="blob-num js-line-number" data-line-number="6374"></td>
<td id="LC6374" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6375" class="blob-num js-line-number" data-line-number="6375"></td>
<td id="LC6375" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(options) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6376" class="blob-num js-line-number" data-line-number="6376"></td>
<td id="LC6376" class="blob-code blob-code-inner js-file-line"> opts <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(defaults, options);</td>
</tr>
<tr>
<td id="L6377" class="blob-num js-line-number" data-line-number="6377"></td>
<td id="LC6377" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6378" class="blob-num js-line-number" data-line-number="6378"></td>
<td id="LC6378" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for backward compatibility</span></td>
</tr>
<tr>
<td id="L6379" class="blob-num js-line-number" data-line-number="6379"></td>
<td id="LC6379" class="blob-code blob-code-inner js-file-line"> opts <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(defaults, {</td>
</tr>
<tr>
<td id="L6380" class="blob-num js-line-number" data-line-number="6380"></td>
<td id="LC6380" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">0</span>],</td>
</tr>
<tr>
<td id="L6381" class="blob-num js-line-number" data-line-number="6381"></td>
<td id="LC6381" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>],</td>
</tr>
<tr>
<td id="L6382" class="blob-num js-line-number" data-line-number="6382"></td>
<td id="LC6382" class="blob-code blob-code-inner js-file-line"> crop<span class="pl-k">:</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">2</span>],</td>
</tr>
<tr>
<td id="L6383" class="blob-num js-line-number" data-line-number="6383"></td>
<td id="LC6383" class="blob-code blob-code-inner js-file-line"> preserveHeaders<span class="pl-k">:</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">3</span>]</td>
</tr>
<tr>
<td id="L6384" class="blob-num js-line-number" data-line-number="6384"></td>
<td id="LC6384" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6385" class="blob-num js-line-number" data-line-number="6385"></td>
<td id="LC6385" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6386" class="blob-num js-line-number" data-line-number="6386"></td>
<td id="LC6386" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6387" class="blob-num js-line-number" data-line-number="6387"></td>
<td id="LC6387" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">resize</span>(opts);</td>
</tr>
<tr>
<td id="L6388" class="blob-num js-line-number" data-line-number="6388"></td>
<td id="LC6388" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6389" class="blob-num js-line-number" data-line-number="6389"></td>
<td id="LC6389" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6390" class="blob-num js-line-number" data-line-number="6390"></td>
<td id="LC6390" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6391" class="blob-num js-line-number" data-line-number="6391"></td>
<td id="LC6391" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Alias for downsize(width, height, true). (see downsize)</span></td>
</tr>
<tr>
<td id="L6392" class="blob-num js-line-number" data-line-number="6392"></td>
<td id="LC6392" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6393" class="blob-num js-line-number" data-line-number="6393"></td>
<td id="LC6393" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">crop</span></span></td>
</tr>
<tr>
<td id="L6394" class="blob-num js-line-number" data-line-number="6394"></td>
<td id="LC6394" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">width</span> Resulting width</span></td>
</tr>
<tr>
<td id="L6395" class="blob-num js-line-number" data-line-number="6395"></td>
<td id="LC6395" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[height<span class="pl-k">=</span><span class="pl-s1">width</span>]</span> Resulting height (optional, if not supplied will default to width)</span></td>
</tr>
<tr>
<td id="L6396" class="blob-num js-line-number" data-line-number="6396"></td>
<td id="LC6396" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[preserveHeaders<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> Whether to preserve meta headers (on JPEGs after resize)</span></td>
</tr>
<tr>
<td id="L6397" class="blob-num js-line-number" data-line-number="6397"></td>
<td id="LC6397" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6398" class="blob-num js-line-number" data-line-number="6398"></td>
<td id="LC6398" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">crop</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">width</span>, <span class="pl-smi">height</span>, <span class="pl-smi">preserveHeaders</span>) {</td>
</tr>
<tr>
<td id="L6399" class="blob-num js-line-number" data-line-number="6399"></td>
<td id="LC6399" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">downsize</span>(width, height, <span class="pl-c1">true</span>, preserveHeaders);</td>
</tr>
<tr>
<td id="L6400" class="blob-num js-line-number" data-line-number="6400"></td>
<td id="LC6400" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6401" class="blob-num js-line-number" data-line-number="6401"></td>
<td id="LC6401" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6402" class="blob-num js-line-number" data-line-number="6402"></td>
<td id="LC6402" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsCanvas</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6403" class="blob-num js-line-number" data-line-number="6403"></td>
<td id="LC6403" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>create_canvas<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L6404" class="blob-num js-line-number" data-line-number="6404"></td>
<td id="LC6404" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_SUPPORTED_ERR</span>);</td>
</tr>
<tr>
<td id="L6405" class="blob-num js-line-number" data-line-number="6405"></td>
<td id="LC6405" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6406" class="blob-num js-line-number" data-line-number="6406"></td>
<td id="LC6406" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAsCanvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6407" class="blob-num js-line-number" data-line-number="6407"></td>
<td id="LC6407" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6408" class="blob-num js-line-number" data-line-number="6408"></td>
<td id="LC6408" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6409" class="blob-num js-line-number" data-line-number="6409"></td>
<td id="LC6409" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6410" class="blob-num js-line-number" data-line-number="6410"></td>
<td id="LC6410" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Retrieves image in it's current state as moxie.file.Blob object. Cannot be run on empty or image in progress (throws</span></td>
</tr>
<tr>
<td id="L6411" class="blob-num js-line-number" data-line-number="6411"></td>
<td id="LC6411" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DOMException.INVALID_STATE_ERR).</span></td>
</tr>
<tr>
<td id="L6412" class="blob-num js-line-number" data-line-number="6412"></td>
<td id="LC6412" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6413" class="blob-num js-line-number" data-line-number="6413"></td>
<td id="LC6413" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getAsBlob</span></span></td>
</tr>
<tr>
<td id="L6414" class="blob-num js-line-number" data-line-number="6414"></td>
<td id="LC6414" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[type<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">"</span>image/jpeg<span class="pl-pds">"</span></span></span>]</span> Mime type of resulting blob. Can either be image/jpeg or image/png</span></td>
</tr>
<tr>
<td id="L6415" class="blob-num js-line-number" data-line-number="6415"></td>
<td id="LC6415" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[quality<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">90</span></span>]</span> Applicable only together with mime type image/jpeg</span></td>
</tr>
<tr>
<td id="L6416" class="blob-num js-line-number" data-line-number="6416"></td>
<td id="LC6416" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Blob}</span> Image as Blob</span></td>
</tr>
<tr>
<td id="L6417" class="blob-num js-line-number" data-line-number="6417"></td>
<td id="LC6417" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6418" class="blob-num js-line-number" data-line-number="6418"></td>
<td id="LC6418" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L6419" class="blob-num js-line-number" data-line-number="6419"></td>
<td id="LC6419" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-c1">size</span>) {</td>
</tr>
<tr>
<td id="L6420" class="blob-num js-line-number" data-line-number="6420"></td>
<td id="LC6420" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L6421" class="blob-num js-line-number" data-line-number="6421"></td>
<td id="LC6421" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6422" class="blob-num js-line-number" data-line-number="6422"></td>
<td id="LC6422" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAsBlob<span class="pl-pds">'</span></span>, type <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>, quality <span class="pl-k">||</span> <span class="pl-c1">90</span>);</td>
</tr>
<tr>
<td id="L6423" class="blob-num js-line-number" data-line-number="6423"></td>
<td id="LC6423" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6424" class="blob-num js-line-number" data-line-number="6424"></td>
<td id="LC6424" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6425" class="blob-num js-line-number" data-line-number="6425"></td>
<td id="LC6425" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6426" class="blob-num js-line-number" data-line-number="6426"></td>
<td id="LC6426" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Retrieves image in it's current state as dataURL string. Cannot be run on empty or image in progress (throws</span></td>
</tr>
<tr>
<td id="L6427" class="blob-num js-line-number" data-line-number="6427"></td>
<td id="LC6427" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DOMException.INVALID_STATE_ERR).</span></td>
</tr>
<tr>
<td id="L6428" class="blob-num js-line-number" data-line-number="6428"></td>
<td id="LC6428" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6429" class="blob-num js-line-number" data-line-number="6429"></td>
<td id="LC6429" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getAsDataURL</span></span></td>
</tr>
<tr>
<td id="L6430" class="blob-num js-line-number" data-line-number="6430"></td>
<td id="LC6430" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[type<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">"</span>image/jpeg<span class="pl-pds">"</span></span></span>]</span> Mime type of resulting blob. Can either be image/jpeg or image/png</span></td>
</tr>
<tr>
<td id="L6431" class="blob-num js-line-number" data-line-number="6431"></td>
<td id="LC6431" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[quality<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">90</span></span>]</span> Applicable only together with mime type image/jpeg</span></td>
</tr>
<tr>
<td id="L6432" class="blob-num js-line-number" data-line-number="6432"></td>
<td id="LC6432" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Image as dataURL string</span></td>
</tr>
<tr>
<td id="L6433" class="blob-num js-line-number" data-line-number="6433"></td>
<td id="LC6433" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6434" class="blob-num js-line-number" data-line-number="6434"></td>
<td id="LC6434" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsDataURL</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L6435" class="blob-num js-line-number" data-line-number="6435"></td>
<td id="LC6435" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-c1">size</span>) {</td>
</tr>
<tr>
<td id="L6436" class="blob-num js-line-number" data-line-number="6436"></td>
<td id="LC6436" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L6437" class="blob-num js-line-number" data-line-number="6437"></td>
<td id="LC6437" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6438" class="blob-num js-line-number" data-line-number="6438"></td>
<td id="LC6438" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAsDataURL<span class="pl-pds">'</span></span>, type <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>, quality <span class="pl-k">||</span> <span class="pl-c1">90</span>);</td>
</tr>
<tr>
<td id="L6439" class="blob-num js-line-number" data-line-number="6439"></td>
<td id="LC6439" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6440" class="blob-num js-line-number" data-line-number="6440"></td>
<td id="LC6440" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6441" class="blob-num js-line-number" data-line-number="6441"></td>
<td id="LC6441" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6442" class="blob-num js-line-number" data-line-number="6442"></td>
<td id="LC6442" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Retrieves image in it's current state as binary string. Cannot be run on empty or image in progress (throws</span></td>
</tr>
<tr>
<td id="L6443" class="blob-num js-line-number" data-line-number="6443"></td>
<td id="LC6443" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> DOMException.INVALID_STATE_ERR).</span></td>
</tr>
<tr>
<td id="L6444" class="blob-num js-line-number" data-line-number="6444"></td>
<td id="LC6444" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6445" class="blob-num js-line-number" data-line-number="6445"></td>
<td id="LC6445" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getAsBinaryString</span></span></td>
</tr>
<tr>
<td id="L6446" class="blob-num js-line-number" data-line-number="6446"></td>
<td id="LC6446" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[type<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">"</span>image/jpeg<span class="pl-pds">"</span></span></span>]</span> Mime type of resulting blob. Can either be image/jpeg or image/png</span></td>
</tr>
<tr>
<td id="L6447" class="blob-num js-line-number" data-line-number="6447"></td>
<td id="LC6447" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[quality<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">90</span></span>]</span> Applicable only together with mime type image/jpeg</span></td>
</tr>
<tr>
<td id="L6448" class="blob-num js-line-number" data-line-number="6448"></td>
<td id="LC6448" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Image as binary string</span></td>
</tr>
<tr>
<td id="L6449" class="blob-num js-line-number" data-line-number="6449"></td>
<td id="LC6449" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6450" class="blob-num js-line-number" data-line-number="6450"></td>
<td id="LC6450" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsBinaryString</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L6451" class="blob-num js-line-number" data-line-number="6451"></td>
<td id="LC6451" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dataUrl <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getAsDataURL</span>(type, quality);</td>
</tr>
<tr>
<td id="L6452" class="blob-num js-line-number" data-line-number="6452"></td>
<td id="LC6452" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(<span class="pl-smi">dataUrl</span>.<span class="pl-c1">substring</span>(<span class="pl-smi">dataUrl</span>.<span class="pl-c1">indexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>base64,<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-c1">7</span>));</td>
</tr>
<tr>
<td id="L6453" class="blob-num js-line-number" data-line-number="6453"></td>
<td id="LC6453" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6454" class="blob-num js-line-number" data-line-number="6454"></td>
<td id="LC6454" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6455" class="blob-num js-line-number" data-line-number="6455"></td>
<td id="LC6455" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6456" class="blob-num js-line-number" data-line-number="6456"></td>
<td id="LC6456" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Embeds a visual representation of the image into the specified node. Depending on the runtime,</span></td>
</tr>
<tr>
<td id="L6457" class="blob-num js-line-number" data-line-number="6457"></td>
<td id="LC6457" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> it might be a canvas, an img node or a thrid party shim object (Flash or SilverLight - very rare,</span></td>
</tr>
<tr>
<td id="L6458" class="blob-num js-line-number" data-line-number="6458"></td>
<td id="LC6458" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> can be used in legacy browsers that do not have canvas or proper dataURI support).</span></td>
</tr>
<tr>
<td id="L6459" class="blob-num js-line-number" data-line-number="6459"></td>
<td id="LC6459" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6460" class="blob-num js-line-number" data-line-number="6460"></td>
<td id="LC6460" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">embed</span></span></td>
</tr>
<tr>
<td id="L6461" class="blob-num js-line-number" data-line-number="6461"></td>
<td id="LC6461" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{DOMElement}</span> <span class="pl-smi">el</span> DOM element to insert the image object into</span></td>
</tr>
<tr>
<td id="L6462" class="blob-num js-line-number" data-line-number="6462"></td>
<td id="LC6462" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">[options]</span></span></td>
</tr>
<tr>
<td id="L6463" class="blob-num js-line-number" data-line-number="6463"></td>
<td id="LC6463" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[options.width]</span> The width of an embed (defaults to the image width)</span></td>
</tr>
<tr>
<td id="L6464" class="blob-num js-line-number" data-line-number="6464"></td>
<td id="LC6464" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[options.height]</span> The height of an embed (defaults to the image height)</span></td>
</tr>
<tr>
<td id="L6465" class="blob-num js-line-number" data-line-number="6465"></td>
<td id="LC6465" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[options.type<span class="pl-k">=</span><span class="pl-s1"><span class="pl-s"><span class="pl-pds">"</span>image/jpeg<span class="pl-pds">"</span></span></span>]</span> Mime type</span></td>
</tr>
<tr>
<td id="L6466" class="blob-num js-line-number" data-line-number="6466"></td>
<td id="LC6466" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Number}</span> <span class="pl-smi">[options.quality<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">90</span></span>]</span> Quality of an embed, if mime type is image/jpeg</span></td>
</tr>
<tr>
<td id="L6467" class="blob-num js-line-number" data-line-number="6467"></td>
<td id="LC6467" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.crop<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">false</span></span>]</span> Whether to crop an embed to the specified dimensions</span></td>
</tr>
<tr>
<td id="L6468" class="blob-num js-line-number" data-line-number="6468"></td>
<td id="LC6468" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Boolean}</span> <span class="pl-smi">[options.fit<span class="pl-k">=</span><span class="pl-s1"><span class="pl-c1">true</span></span>]</span> By default thumbs will be up- or downscaled as necessary to fit the dimensions</span></td>
</tr>
<tr>
<td id="L6469" class="blob-num js-line-number" data-line-number="6469"></td>
<td id="LC6469" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6470" class="blob-num js-line-number" data-line-number="6470"></td>
<td id="LC6470" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">embed</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">el</span>, <span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L6471" class="blob-num js-line-number" data-line-number="6471"></td>
<td id="LC6471" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L6472" class="blob-num js-line-number" data-line-number="6472"></td>
<td id="LC6472" class="blob-code blob-code-inner js-file-line"> , runtime <span class="pl-c"><span class="pl-c">//</span> this has to be outside of all the closures to contain proper runtime</span></td>
</tr>
<tr>
<td id="L6473" class="blob-num js-line-number" data-line-number="6473"></td>
<td id="LC6473" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L6474" class="blob-num js-line-number" data-line-number="6474"></td>
<td id="LC6474" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6475" class="blob-num js-line-number" data-line-number="6475"></td>
<td id="LC6475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> opts <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({</td>
</tr>
<tr>
<td id="L6476" class="blob-num js-line-number" data-line-number="6476"></td>
<td id="LC6476" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">width</span>,</td>
</tr>
<tr>
<td id="L6477" class="blob-num js-line-number" data-line-number="6477"></td>
<td id="LC6477" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">height</span>,</td>
</tr>
<tr>
<td id="L6478" class="blob-num js-line-number" data-line-number="6478"></td>
<td id="LC6478" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6479" class="blob-num js-line-number" data-line-number="6479"></td>
<td id="LC6479" class="blob-code blob-code-inner js-file-line"> quality<span class="pl-k">:</span> <span class="pl-c1">90</span>,</td>
</tr>
<tr>
<td id="L6480" class="blob-num js-line-number" data-line-number="6480"></td>
<td id="LC6480" class="blob-code blob-code-inner js-file-line"> fit<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L6481" class="blob-num js-line-number" data-line-number="6481"></td>
<td id="LC6481" class="blob-code blob-code-inner js-file-line"> resample<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>nearest<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L6482" class="blob-num js-line-number" data-line-number="6482"></td>
<td id="LC6482" class="blob-code blob-code-inner js-file-line"> }, options);</td>
</tr>
<tr>
<td id="L6483" class="blob-num js-line-number" data-line-number="6483"></td>
<td id="LC6483" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6484" class="blob-num js-line-number" data-line-number="6484"></td>
<td id="LC6484" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6485" class="blob-num js-line-number" data-line-number="6485"></td>
<td id="LC6485" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">render</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L6486" class="blob-num js-line-number" data-line-number="6486"></td>
<td id="LC6486" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> img <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L6487" class="blob-num js-line-number" data-line-number="6487"></td>
<td id="LC6487" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6488" class="blob-num js-line-number" data-line-number="6488"></td>
<td id="LC6488" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if possible, embed a canvas element directly</span></td>
</tr>
<tr>
<td id="L6489" class="blob-num js-line-number" data-line-number="6489"></td>
<td id="LC6489" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>create_canvas<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L6490" class="blob-num js-line-number" data-line-number="6490"></td>
<td id="LC6490" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> canvas <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-en">getAsCanvas</span>();</td>
</tr>
<tr>
<td id="L6491" class="blob-num js-line-number" data-line-number="6491"></td>
<td id="LC6491" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (canvas) {</td>
</tr>
<tr>
<td id="L6492" class="blob-num js-line-number" data-line-number="6492"></td>
<td id="LC6492" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">el</span>.<span class="pl-c1">appendChild</span>(canvas);</td>
</tr>
<tr>
<td id="L6493" class="blob-num js-line-number" data-line-number="6493"></td>
<td id="LC6493" class="blob-code blob-code-inner js-file-line"> canvas <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L6494" class="blob-num js-line-number" data-line-number="6494"></td>
<td id="LC6494" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">img</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L6495" class="blob-num js-line-number" data-line-number="6495"></td>
<td id="LC6495" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>embedded<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6496" class="blob-num js-line-number" data-line-number="6496"></td>
<td id="LC6496" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L6497" class="blob-num js-line-number" data-line-number="6497"></td>
<td id="LC6497" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6498" class="blob-num js-line-number" data-line-number="6498"></td>
<td id="LC6498" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6499" class="blob-num js-line-number" data-line-number="6499"></td>
<td id="LC6499" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6500" class="blob-num js-line-number" data-line-number="6500"></td>
<td id="LC6500" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dataUrl <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-en">getAsDataURL</span>(type, quality);</td>
</tr>
<tr>
<td id="L6501" class="blob-num js-line-number" data-line-number="6501"></td>
<td id="LC6501" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>dataUrl) {</td>
</tr>
<tr>
<td id="L6502" class="blob-num js-line-number" data-line-number="6502"></td>
<td id="LC6502" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L6503" class="blob-num js-line-number" data-line-number="6503"></td>
<td id="LC6503" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6504" class="blob-num js-line-number" data-line-number="6504"></td>
<td id="LC6504" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6505" class="blob-num js-line-number" data-line-number="6505"></td>
<td id="LC6505" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>use_data_uri_of<span class="pl-pds">'</span></span>, <span class="pl-smi">dataUrl</span>.<span class="pl-c1">length</span>)) {</td>
</tr>
<tr>
<td id="L6506" class="blob-num js-line-number" data-line-number="6506"></td>
<td id="LC6506" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">el</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><img src="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> dataUrl <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" width="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">img</span>.<span class="pl-c1">width</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" height="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">img</span>.<span class="pl-c1">height</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" alt="" /><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L6507" class="blob-num js-line-number" data-line-number="6507"></td>
<td id="LC6507" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">img</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L6508" class="blob-num js-line-number" data-line-number="6508"></td>
<td id="LC6508" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>embedded<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6509" class="blob-num js-line-number" data-line-number="6509"></td>
<td id="LC6509" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6510" class="blob-num js-line-number" data-line-number="6510"></td>
<td id="LC6510" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> tr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Transporter</span>();</td>
</tr>
<tr>
<td id="L6511" class="blob-num js-line-number" data-line-number="6511"></td>
<td id="LC6511" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6512" class="blob-num js-line-number" data-line-number="6512"></td>
<td id="LC6512" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">tr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingComplete<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6513" class="blob-num js-line-number" data-line-number="6513"></td>
<td id="LC6513" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-c1">this</span>.<span class="pl-smi">result</span>.<span class="pl-smi">ruid</span>);</td>
</tr>
<tr>
<td id="L6514" class="blob-num js-line-number" data-line-number="6514"></td>
<td id="LC6514" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6515" class="blob-num js-line-number" data-line-number="6515"></td>
<td id="LC6515" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>Embedded<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6516" class="blob-num js-line-number" data-line-number="6516"></td>
<td id="LC6516" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> position and size properly</span></td>
</tr>
<tr>
<td id="L6517" class="blob-num js-line-number" data-line-number="6517"></td>
<td id="LC6517" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">runtime</span>.<span class="pl-en">getShimContainer</span>().<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L6518" class="blob-num js-line-number" data-line-number="6518"></td>
<td id="LC6518" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>position: 'relative',</span></td>
</tr>
<tr>
<td id="L6519" class="blob-num js-line-number" data-line-number="6519"></td>
<td id="LC6519" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>0px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6520" class="blob-num js-line-number" data-line-number="6520"></td>
<td id="LC6520" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>0px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6521" class="blob-num js-line-number" data-line-number="6521"></td>
<td id="LC6521" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">img</span>.<span class="pl-c1">width</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6522" class="blob-num js-line-number" data-line-number="6522"></td>
<td id="LC6522" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">img</span>.<span class="pl-c1">height</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>px<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L6523" class="blob-num js-line-number" data-line-number="6523"></td>
<td id="LC6523" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6524" class="blob-num js-line-number" data-line-number="6524"></td>
<td id="LC6524" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6525" class="blob-num js-line-number" data-line-number="6525"></td>
<td id="LC6525" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> some shims (Flash/SilverLight) reinitialize, if parent element is hidden, reordered or it's</span></td>
</tr>
<tr>
<td id="L6526" class="blob-num js-line-number" data-line-number="6526"></td>
<td id="LC6526" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> position type changes (in Gecko), but since we basically need this only in IEs 6/7 and</span></td>
</tr>
<tr>
<td id="L6527" class="blob-num js-line-number" data-line-number="6527"></td>
<td id="LC6527" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> sometimes 8 and they do not have this problem, we can comment this for now</span></td>
</tr>
<tr>
<td id="L6528" class="blob-num js-line-number" data-line-number="6528"></td>
<td id="LC6528" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span>tr.bind("RuntimeInit", function(e, runtime) {</span></td>
</tr>
<tr>
<td id="L6529" class="blob-num js-line-number" data-line-number="6529"></td>
<td id="LC6529" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> tr.destroy();</span></td>
</tr>
<tr>
<td id="L6530" class="blob-num js-line-number" data-line-number="6530"></td>
<td id="LC6530" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> runtime.destroy();</span></td>
</tr>
<tr>
<td id="L6531" class="blob-num js-line-number" data-line-number="6531"></td>
<td id="LC6531" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> onResize.call(self); // re-feed our image data</span></td>
</tr>
<tr>
<td id="L6532" class="blob-num js-line-number" data-line-number="6532"></td>
<td id="LC6532" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> });<span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6533" class="blob-num js-line-number" data-line-number="6533"></td>
<td id="LC6533" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6534" class="blob-num js-line-number" data-line-number="6534"></td>
<td id="LC6534" class="blob-code blob-code-inner js-file-line"> runtime <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> release</span></td>
</tr>
<tr>
<td id="L6535" class="blob-num js-line-number" data-line-number="6535"></td>
<td id="LC6535" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L6536" class="blob-num js-line-number" data-line-number="6536"></td>
<td id="LC6536" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6537" class="blob-num js-line-number" data-line-number="6537"></td>
<td id="LC6537" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">"</span>ImageView<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>display<span class="pl-pds">"</span></span>, <span class="pl-c1">this</span>.<span class="pl-smi">result</span>.<span class="pl-smi">uid</span>, width, height);</td>
</tr>
<tr>
<td id="L6538" class="blob-num js-line-number" data-line-number="6538"></td>
<td id="LC6538" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">img</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L6539" class="blob-num js-line-number" data-line-number="6539"></td>
<td id="LC6539" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6540" class="blob-num js-line-number" data-line-number="6540"></td>
<td id="LC6540" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6541" class="blob-num js-line-number" data-line-number="6541"></td>
<td id="LC6541" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">tr</span>.<span class="pl-en">transport</span>(<span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(<span class="pl-smi">dataUrl</span>.<span class="pl-c1">substring</span>(<span class="pl-smi">dataUrl</span>.<span class="pl-c1">indexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>base64,<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-c1">7</span>)), type, {</td>
</tr>
<tr>
<td id="L6542" class="blob-num js-line-number" data-line-number="6542"></td>
<td id="LC6542" class="blob-code blob-code-inner js-file-line"> required_caps<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L6543" class="blob-num js-line-number" data-line-number="6543"></td>
<td id="LC6543" class="blob-code blob-code-inner js-file-line"> display_media<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L6544" class="blob-num js-line-number" data-line-number="6544"></td>
<td id="LC6544" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6545" class="blob-num js-line-number" data-line-number="6545"></td>
<td id="LC6545" class="blob-code blob-code-inner js-file-line"> runtime_order<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>flash,silverlight<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L6546" class="blob-num js-line-number" data-line-number="6546"></td>
<td id="LC6546" class="blob-code blob-code-inner js-file-line"> container<span class="pl-k">:</span> el</td>
</tr>
<tr>
<td id="L6547" class="blob-num js-line-number" data-line-number="6547"></td>
<td id="LC6547" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6548" class="blob-num js-line-number" data-line-number="6548"></td>
<td id="LC6548" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6549" class="blob-num js-line-number" data-line-number="6549"></td>
<td id="LC6549" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6550" class="blob-num js-line-number" data-line-number="6550"></td>
<td id="LC6550" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6551" class="blob-num js-line-number" data-line-number="6551"></td>
<td id="LC6551" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L6552" class="blob-num js-line-number" data-line-number="6552"></td>
<td id="LC6552" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>(el <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(el))) {</td>
</tr>
<tr>
<td id="L6553" class="blob-num js-line-number" data-line-number="6553"></td>
<td id="LC6553" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_NODE_TYPE_ERR</span>);</td>
</tr>
<tr>
<td id="L6554" class="blob-num js-line-number" data-line-number="6554"></td>
<td id="LC6554" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6555" class="blob-num js-line-number" data-line-number="6555"></td>
<td id="LC6555" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6556" class="blob-num js-line-number" data-line-number="6556"></td>
<td id="LC6556" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-c1">size</span>) { <span class="pl-c"><span class="pl-c">//</span> only preloaded image objects can be used as source</span></td>
</tr>
<tr>
<td id="L6557" class="blob-num js-line-number" data-line-number="6557"></td>
<td id="LC6557" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L6558" class="blob-num js-line-number" data-line-number="6558"></td>
<td id="LC6558" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6559" class="blob-num js-line-number" data-line-number="6559"></td>
<td id="LC6559" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6560" class="blob-num js-line-number" data-line-number="6560"></td>
<td id="LC6560" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> high-resolution images cannot be consistently handled across the runtimes</span></td>
</tr>
<tr>
<td id="L6561" class="blob-num js-line-number" data-line-number="6561"></td>
<td id="LC6561" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-c1">width</span> <span class="pl-k">></span> <span class="pl-smi">Image</span>.<span class="pl-c1">MAX_RESIZE_WIDTH</span> <span class="pl-k">||</span> <span class="pl-c1">this</span>.<span class="pl-c1">height</span> <span class="pl-k">></span> <span class="pl-smi">Image</span>.<span class="pl-c1">MAX_RESIZE_HEIGHT</span>) {</td>
</tr>
<tr>
<td id="L6562" class="blob-num js-line-number" data-line-number="6562"></td>
<td id="LC6562" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR);</span></td>
</tr>
<tr>
<td id="L6563" class="blob-num js-line-number" data-line-number="6563"></td>
<td id="LC6563" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6564" class="blob-num js-line-number" data-line-number="6564"></td>
<td id="LC6564" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6565" class="blob-num js-line-number" data-line-number="6565"></td>
<td id="LC6565" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> imgCopy <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Image</span>();</td>
</tr>
<tr>
<td id="L6566" class="blob-num js-line-number" data-line-number="6566"></td>
<td id="LC6566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6567" class="blob-num js-line-number" data-line-number="6567"></td>
<td id="LC6567" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">imgCopy</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>Resize<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6568" class="blob-num js-line-number" data-line-number="6568"></td>
<td id="LC6568" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">render</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">opts</span>.<span class="pl-c1">type</span>, <span class="pl-smi">opts</span>.<span class="pl-smi">quality</span>);</td>
</tr>
<tr>
<td id="L6569" class="blob-num js-line-number" data-line-number="6569"></td>
<td id="LC6569" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6570" class="blob-num js-line-number" data-line-number="6570"></td>
<td id="LC6570" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6571" class="blob-num js-line-number" data-line-number="6571"></td>
<td id="LC6571" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">imgCopy</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>Load<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6572" class="blob-num js-line-number" data-line-number="6572"></td>
<td id="LC6572" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">downsize</span>(opts);</td>
</tr>
<tr>
<td id="L6573" class="blob-num js-line-number" data-line-number="6573"></td>
<td id="LC6573" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6574" class="blob-num js-line-number" data-line-number="6574"></td>
<td id="LC6574" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6575" class="blob-num js-line-number" data-line-number="6575"></td>
<td id="LC6575" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if embedded thumb data is available and dimensions are big enough, use it</span></td>
</tr>
<tr>
<td id="L6576" class="blob-num js-line-number" data-line-number="6576"></td>
<td id="LC6576" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span> <span class="pl-k">&&</span> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">width</span> <span class="pl-k">>=</span> <span class="pl-smi">opts</span>.<span class="pl-c1">width</span> <span class="pl-k">&&</span> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">height</span> <span class="pl-k">>=</span> <span class="pl-smi">opts</span>.<span class="pl-c1">height</span>) {</td>
</tr>
<tr>
<td id="L6577" class="blob-num js-line-number" data-line-number="6577"></td>
<td id="LC6577" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">imgCopy</span>.<span class="pl-c1">load</span>(<span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span>);</td>
</tr>
<tr>
<td id="L6578" class="blob-num js-line-number" data-line-number="6578"></td>
<td id="LC6578" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6579" class="blob-num js-line-number" data-line-number="6579"></td>
<td id="LC6579" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">imgCopy</span>.<span class="pl-en">clone</span>(<span class="pl-c1">this</span>, <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L6580" class="blob-num js-line-number" data-line-number="6580"></td>
<td id="LC6580" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6581" class="blob-num js-line-number" data-line-number="6581"></td>
<td id="LC6581" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6582" class="blob-num js-line-number" data-line-number="6582"></td>
<td id="LC6582" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> imgCopy;</td>
</tr>
<tr>
<td id="L6583" class="blob-num js-line-number" data-line-number="6583"></td>
<td id="LC6583" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L6584" class="blob-num js-line-number" data-line-number="6584"></td>
<td id="LC6584" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for now simply trigger error event</span></td>
</tr>
<tr>
<td id="L6585" class="blob-num js-line-number" data-line-number="6585"></td>
<td id="LC6585" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-smi">ex</span>.<span class="pl-c1">code</span>);</td>
</tr>
<tr>
<td id="L6586" class="blob-num js-line-number" data-line-number="6586"></td>
<td id="LC6586" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6587" class="blob-num js-line-number" data-line-number="6587"></td>
<td id="LC6587" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6588" class="blob-num js-line-number" data-line-number="6588"></td>
<td id="LC6588" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6589" class="blob-num js-line-number" data-line-number="6589"></td>
<td id="LC6589" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6590" class="blob-num js-line-number" data-line-number="6590"></td>
<td id="LC6590" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Properly destroys the image and frees resources in use. If any. Recommended way to dispose</span></td>
</tr>
<tr>
<td id="L6591" class="blob-num js-line-number" data-line-number="6591"></td>
<td id="LC6591" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> moxie.image.Image object.</span></td>
</tr>
<tr>
<td id="L6592" class="blob-num js-line-number" data-line-number="6592"></td>
<td id="LC6592" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6593" class="blob-num js-line-number" data-line-number="6593"></td>
<td id="LC6593" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">destroy</span></span></td>
</tr>
<tr>
<td id="L6594" class="blob-num js-line-number" data-line-number="6594"></td>
<td id="LC6594" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6595" class="blob-num js-line-number" data-line-number="6595"></td>
<td id="LC6595" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6596" class="blob-num js-line-number" data-line-number="6596"></td>
<td id="LC6596" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">ruid</span>) {</td>
</tr>
<tr>
<td id="L6597" class="blob-num js-line-number" data-line-number="6597"></td>
<td id="LC6597" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>destroy<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6598" class="blob-num js-line-number" data-line-number="6598"></td>
<td id="LC6598" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">disconnectRuntime</span>();</td>
</tr>
<tr>
<td id="L6599" class="blob-num js-line-number" data-line-number="6599"></td>
<td id="LC6599" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6600" class="blob-num js-line-number" data-line-number="6600"></td>
<td id="LC6600" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>) {</td>
</tr>
<tr>
<td id="L6601" class="blob-num js-line-number" data-line-number="6601"></td>
<td id="LC6601" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> thumb is blob, make sure we destroy it first</span></td>
</tr>
<tr>
<td id="L6602" class="blob-num js-line-number" data-line-number="6602"></td>
<td id="LC6602" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L6603" class="blob-num js-line-number" data-line-number="6603"></td>
<td id="LC6603" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6604" class="blob-num js-line-number" data-line-number="6604"></td>
<td id="LC6604" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">unbindAll</span>();</td>
</tr>
<tr>
<td id="L6605" class="blob-num js-line-number" data-line-number="6605"></td>
<td id="LC6605" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6606" class="blob-num js-line-number" data-line-number="6606"></td>
<td id="LC6606" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6607" class="blob-num js-line-number" data-line-number="6607"></td>
<td id="LC6607" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6608" class="blob-num js-line-number" data-line-number="6608"></td>
<td id="LC6608" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6609" class="blob-num js-line-number" data-line-number="6609"></td>
<td id="LC6609" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this is here, because in order to bind properly, we need uid, which is created above</span></td>
</tr>
<tr>
<td id="L6610" class="blob-num js-line-number" data-line-number="6610"></td>
<td id="LC6610" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">handleEventProps</span>(dispatches);</td>
</tr>
<tr>
<td id="L6611" class="blob-num js-line-number" data-line-number="6611"></td>
<td id="LC6611" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6612" class="blob-num js-line-number" data-line-number="6612"></td>
<td id="LC6612" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Load Resize<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6613" class="blob-num js-line-number" data-line-number="6613"></td>
<td id="LC6613" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_updateInfo</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>); <span class="pl-c"><span class="pl-c">//</span> if operation fails (e.g. image is neither PNG nor JPEG) cancel all pending events</span></td>
</tr>
<tr>
<td id="L6614" class="blob-num js-line-number" data-line-number="6614"></td>
<td id="LC6614" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L6615" class="blob-num js-line-number" data-line-number="6615"></td>
<td id="LC6615" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6616" class="blob-num js-line-number" data-line-number="6616"></td>
<td id="LC6616" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6617" class="blob-num js-line-number" data-line-number="6617"></td>
<td id="LC6617" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_updateInfo</span>(<span class="pl-smi">info</span>) {</td>
</tr>
<tr>
<td id="L6618" class="blob-num js-line-number" data-line-number="6618"></td>
<td id="LC6618" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L6619" class="blob-num js-line-number" data-line-number="6619"></td>
<td id="LC6619" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>info) {</td>
</tr>
<tr>
<td id="L6620" class="blob-num js-line-number" data-line-number="6620"></td>
<td id="LC6620" class="blob-code blob-code-inner js-file-line"> info <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">exec</span>(<span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getInfo<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6621" class="blob-num js-line-number" data-line-number="6621"></td>
<td id="LC6621" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6622" class="blob-num js-line-number" data-line-number="6622"></td>
<td id="LC6622" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6623" class="blob-num js-line-number" data-line-number="6623"></td>
<td id="LC6623" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">size</span> <span class="pl-k">=</span> <span class="pl-smi">info</span>.<span class="pl-c1">size</span>;</td>
</tr>
<tr>
<td id="L6624" class="blob-num js-line-number" data-line-number="6624"></td>
<td id="LC6624" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-smi">info</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L6625" class="blob-num js-line-number" data-line-number="6625"></td>
<td id="LC6625" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-smi">info</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L6626" class="blob-num js-line-number" data-line-number="6626"></td>
<td id="LC6626" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">type</span> <span class="pl-k">=</span> <span class="pl-smi">info</span>.<span class="pl-c1">type</span>;</td>
</tr>
<tr>
<td id="L6627" class="blob-num js-line-number" data-line-number="6627"></td>
<td id="LC6627" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span> <span class="pl-k">=</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>;</td>
</tr>
<tr>
<td id="L6628" class="blob-num js-line-number" data-line-number="6628"></td>
<td id="LC6628" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6629" class="blob-num js-line-number" data-line-number="6629"></td>
<td id="LC6629" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> update file name, only if empty</span></td>
</tr>
<tr>
<td id="L6630" class="blob-num js-line-number" data-line-number="6630"></td>
<td id="LC6630" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6631" class="blob-num js-line-number" data-line-number="6631"></td>
<td id="LC6631" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-smi">info</span>.<span class="pl-c1">name</span>;</td>
</tr>
<tr>
<td id="L6632" class="blob-num js-line-number" data-line-number="6632"></td>
<td id="LC6632" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6633" class="blob-num js-line-number" data-line-number="6633"></td>
<td id="LC6633" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6634" class="blob-num js-line-number" data-line-number="6634"></td>
<td id="LC6634" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L6635" class="blob-num js-line-number" data-line-number="6635"></td>
<td id="LC6635" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L6636" class="blob-num js-line-number" data-line-number="6636"></td>
<td id="LC6636" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-smi">ex</span>.<span class="pl-c1">code</span>);</td>
</tr>
<tr>
<td id="L6637" class="blob-num js-line-number" data-line-number="6637"></td>
<td id="LC6637" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L6638" class="blob-num js-line-number" data-line-number="6638"></td>
<td id="LC6638" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6639" class="blob-num js-line-number" data-line-number="6639"></td>
<td id="LC6639" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6640" class="blob-num js-line-number" data-line-number="6640"></td>
<td id="LC6640" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6641" class="blob-num js-line-number" data-line-number="6641"></td>
<td id="LC6641" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6642" class="blob-num js-line-number" data-line-number="6642"></td>
<td id="LC6642" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_load</span>(<span class="pl-smi">src</span>) {</td>
</tr>
<tr>
<td id="L6643" class="blob-num js-line-number" data-line-number="6643"></td>
<td id="LC6643" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> srcType <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(src);</td>
</tr>
<tr>
<td id="L6644" class="blob-num js-line-number" data-line-number="6644"></td>
<td id="LC6644" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6645" class="blob-num js-line-number" data-line-number="6645"></td>
<td id="LC6645" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L6646" class="blob-num js-line-number" data-line-number="6646"></td>
<td id="LC6646" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if source is Image</span></td>
</tr>
<tr>
<td id="L6647" class="blob-num js-line-number" data-line-number="6647"></td>
<td id="LC6647" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (src <span class="pl-k">instanceof</span> Image) {</td>
</tr>
<tr>
<td id="L6648" class="blob-num js-line-number" data-line-number="6648"></td>
<td id="LC6648" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">src</span>.<span class="pl-c1">size</span>) { <span class="pl-c"><span class="pl-c">//</span> only preloaded image objects can be used as source</span></td>
</tr>
<tr>
<td id="L6649" class="blob-num js-line-number" data-line-number="6649"></td>
<td id="LC6649" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L6650" class="blob-num js-line-number" data-line-number="6650"></td>
<td id="LC6650" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6651" class="blob-num js-line-number" data-line-number="6651"></td>
<td id="LC6651" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_loadFromImage</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L6652" class="blob-num js-line-number" data-line-number="6652"></td>
<td id="LC6652" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6653" class="blob-num js-line-number" data-line-number="6653"></td>
<td id="LC6653" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if source is o.Blob/o.File</span></td>
</tr>
<tr>
<td id="L6654" class="blob-num js-line-number" data-line-number="6654"></td>
<td id="LC6654" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> <span class="pl-k">if</span> (src <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L6655" class="blob-num js-line-number" data-line-number="6655"></td>
<td id="LC6655" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-smi">src</span>.<span class="pl-c1">type</span>, [<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>image/png<span class="pl-pds">'</span></span>])) {</td>
</tr>
<tr>
<td id="L6656" class="blob-num js-line-number" data-line-number="6656"></td>
<td id="LC6656" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L6657" class="blob-num js-line-number" data-line-number="6657"></td>
<td id="LC6657" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6658" class="blob-num js-line-number" data-line-number="6658"></td>
<td id="LC6658" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_loadFromBlob</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L6659" class="blob-num js-line-number" data-line-number="6659"></td>
<td id="LC6659" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6660" class="blob-num js-line-number" data-line-number="6660"></td>
<td id="LC6660" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if native blob/file</span></td>
</tr>
<tr>
<td id="L6661" class="blob-num js-line-number" data-line-number="6661"></td>
<td id="LC6661" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(srcType, [<span class="pl-s"><span class="pl-pds">'</span>blob<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>]) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L6662" class="blob-num js-line-number" data-line-number="6662"></td>
<td id="LC6662" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_load</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">null</span>, src), <span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>]);</td>
</tr>
<tr>
<td id="L6663" class="blob-num js-line-number" data-line-number="6663"></td>
<td id="LC6663" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6664" class="blob-num js-line-number" data-line-number="6664"></td>
<td id="LC6664" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if String</span></td>
</tr>
<tr>
<td id="L6665" class="blob-num js-line-number" data-line-number="6665"></td>
<td id="LC6665" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> <span class="pl-k">if</span> (srcType <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6666" class="blob-num js-line-number" data-line-number="6666"></td>
<td id="LC6666" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if dataUrl String</span></td>
</tr>
<tr>
<td id="L6667" class="blob-num js-line-number" data-line-number="6667"></td>
<td id="LC6667" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">src</span>.<span class="pl-c1">substr</span>(<span class="pl-c1">0</span>, <span class="pl-c1">5</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6668" class="blob-num js-line-number" data-line-number="6668"></td>
<td id="LC6668" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_load</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-c1">null</span>, { data<span class="pl-k">:</span> src }), <span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>]);</td>
</tr>
<tr>
<td id="L6669" class="blob-num js-line-number" data-line-number="6669"></td>
<td id="LC6669" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6670" class="blob-num js-line-number" data-line-number="6670"></td>
<td id="LC6670" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> else assume Url, either relative or absolute</span></td>
</tr>
<tr>
<td id="L6671" class="blob-num js-line-number" data-line-number="6671"></td>
<td id="LC6671" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6672" class="blob-num js-line-number" data-line-number="6672"></td>
<td id="LC6672" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_loadFromUrl</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L6673" class="blob-num js-line-number" data-line-number="6673"></td>
<td id="LC6673" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6674" class="blob-num js-line-number" data-line-number="6674"></td>
<td id="LC6674" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6675" class="blob-num js-line-number" data-line-number="6675"></td>
<td id="LC6675" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if source seems to be an img node</span></td>
</tr>
<tr>
<td id="L6676" class="blob-num js-line-number" data-line-number="6676"></td>
<td id="LC6676" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> <span class="pl-k">if</span> (srcType <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>node<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">src</span>.<span class="pl-c1">nodeName</span>.<span class="pl-c1">toLowerCase</span>() <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>img<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6677" class="blob-num js-line-number" data-line-number="6677"></td>
<td id="LC6677" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_load</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">src</span>.<span class="pl-smi">src</span>, <span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>]);</td>
</tr>
<tr>
<td id="L6678" class="blob-num js-line-number" data-line-number="6678"></td>
<td id="LC6678" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6679" class="blob-num js-line-number" data-line-number="6679"></td>
<td id="LC6679" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6680" class="blob-num js-line-number" data-line-number="6680"></td>
<td id="LC6680" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">TYPE_MISMATCH_ERR</span>);</td>
</tr>
<tr>
<td id="L6681" class="blob-num js-line-number" data-line-number="6681"></td>
<td id="LC6681" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6682" class="blob-num js-line-number" data-line-number="6682"></td>
<td id="LC6682" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L6683" class="blob-num js-line-number" data-line-number="6683"></td>
<td id="LC6683" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for now simply trigger error event</span></td>
</tr>
<tr>
<td id="L6684" class="blob-num js-line-number" data-line-number="6684"></td>
<td id="LC6684" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-smi">ex</span>.<span class="pl-c1">code</span>);</td>
</tr>
<tr>
<td id="L6685" class="blob-num js-line-number" data-line-number="6685"></td>
<td id="LC6685" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6686" class="blob-num js-line-number" data-line-number="6686"></td>
<td id="LC6686" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6687" class="blob-num js-line-number" data-line-number="6687"></td>
<td id="LC6687" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6688" class="blob-num js-line-number" data-line-number="6688"></td>
<td id="LC6688" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6689" class="blob-num js-line-number" data-line-number="6689"></td>
<td id="LC6689" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_loadFromImage</span>(<span class="pl-smi">img</span>, <span class="pl-smi">exact</span>) {</td>
</tr>
<tr>
<td id="L6690" class="blob-num js-line-number" data-line-number="6690"></td>
<td id="LC6690" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> runtime <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-smi">img</span>.<span class="pl-smi">ruid</span>);</td>
</tr>
<tr>
<td id="L6691" class="blob-num js-line-number" data-line-number="6691"></td>
<td id="LC6691" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L6692" class="blob-num js-line-number" data-line-number="6692"></td>
<td id="LC6692" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>loadFromImage<span class="pl-pds">'</span></span>, img, (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(exact) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>undefined<span class="pl-pds">'</span></span> <span class="pl-k">?</span> <span class="pl-c1">true</span> <span class="pl-k">:</span> exact));</td>
</tr>
<tr>
<td id="L6693" class="blob-num js-line-number" data-line-number="6693"></td>
<td id="LC6693" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6694" class="blob-num js-line-number" data-line-number="6694"></td>
<td id="LC6694" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6695" class="blob-num js-line-number" data-line-number="6695"></td>
<td id="LC6695" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6696" class="blob-num js-line-number" data-line-number="6696"></td>
<td id="LC6696" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_loadFromBlob</span>(<span class="pl-smi">blob</span>, <span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L6697" class="blob-num js-line-number" data-line-number="6697"></td>
<td id="LC6697" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L6698" class="blob-num js-line-number" data-line-number="6698"></td>
<td id="LC6698" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6699" class="blob-num js-line-number" data-line-number="6699"></td>
<td id="LC6699" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-c1">name</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L6700" class="blob-num js-line-number" data-line-number="6700"></td>
<td id="LC6700" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6701" class="blob-num js-line-number" data-line-number="6701"></td>
<td id="LC6701" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">exec</span>(<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L6702" class="blob-num js-line-number" data-line-number="6702"></td>
<td id="LC6702" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">ruid</span> <span class="pl-k">=</span> <span class="pl-smi">runtime</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L6703" class="blob-num js-line-number" data-line-number="6703"></td>
<td id="LC6703" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">runtime</span>.<span class="pl-smi">exec</span>.<span class="pl-c1">call</span>(self, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>loadFromBlob<span class="pl-pds">'</span></span>, blob);</td>
</tr>
<tr>
<td id="L6704" class="blob-num js-line-number" data-line-number="6704"></td>
<td id="LC6704" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6705" class="blob-num js-line-number" data-line-number="6705"></td>
<td id="LC6705" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6706" class="blob-num js-line-number" data-line-number="6706"></td>
<td id="LC6706" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L6707" class="blob-num js-line-number" data-line-number="6707"></td>
<td id="LC6707" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeInit<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L6708" class="blob-num js-line-number" data-line-number="6708"></td>
<td id="LC6708" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span>(runtime);</td>
</tr>
<tr>
<td id="L6709" class="blob-num js-line-number" data-line-number="6709"></td>
<td id="LC6709" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6710" class="blob-num js-line-number" data-line-number="6710"></td>
<td id="LC6710" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6711" class="blob-num js-line-number" data-line-number="6711"></td>
<td id="LC6711" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> convert to object representation</span></td>
</tr>
<tr>
<td id="L6712" class="blob-num js-line-number" data-line-number="6712"></td>
<td id="LC6712" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (options <span class="pl-k">&&</span> <span class="pl-k">typeof</span>(<span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L6713" class="blob-num js-line-number" data-line-number="6713"></td>
<td id="LC6713" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span> <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">parseCaps</span>(<span class="pl-smi">options</span>.<span class="pl-smi">required_caps</span>);</td>
</tr>
<tr>
<td id="L6714" class="blob-num js-line-number" data-line-number="6714"></td>
<td id="LC6714" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6715" class="blob-num js-line-number" data-line-number="6715"></td>
<td id="LC6715" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6716" class="blob-num js-line-number" data-line-number="6716"></td>
<td id="LC6716" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({</td>
</tr>
<tr>
<td id="L6717" class="blob-num js-line-number" data-line-number="6717"></td>
<td id="LC6717" class="blob-code blob-code-inner js-file-line"> required_caps<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L6718" class="blob-num js-line-number" data-line-number="6718"></td>
<td id="LC6718" class="blob-code blob-code-inner js-file-line"> access_image_binary<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L6719" class="blob-num js-line-number" data-line-number="6719"></td>
<td id="LC6719" class="blob-code blob-code-inner js-file-line"> resize_image<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L6720" class="blob-num js-line-number" data-line-number="6720"></td>
<td id="LC6720" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6721" class="blob-num js-line-number" data-line-number="6721"></td>
<td id="LC6721" class="blob-code blob-code-inner js-file-line"> }, options));</td>
</tr>
<tr>
<td id="L6722" class="blob-num js-line-number" data-line-number="6722"></td>
<td id="LC6722" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6723" class="blob-num js-line-number" data-line-number="6723"></td>
<td id="LC6723" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span>(<span class="pl-c1">this</span>.<span class="pl-en">connectRuntime</span>(<span class="pl-smi">blob</span>.<span class="pl-smi">ruid</span>));</td>
</tr>
<tr>
<td id="L6724" class="blob-num js-line-number" data-line-number="6724"></td>
<td id="LC6724" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6725" class="blob-num js-line-number" data-line-number="6725"></td>
<td id="LC6725" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6726" class="blob-num js-line-number" data-line-number="6726"></td>
<td id="LC6726" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6727" class="blob-num js-line-number" data-line-number="6727"></td>
<td id="LC6727" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6728" class="blob-num js-line-number" data-line-number="6728"></td>
<td id="LC6728" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_loadFromUrl</span>(<span class="pl-smi">url</span>, <span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L6729" class="blob-num js-line-number" data-line-number="6729"></td>
<td id="LC6729" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>, xhr;</td>
</tr>
<tr>
<td id="L6730" class="blob-num js-line-number" data-line-number="6730"></td>
<td id="LC6730" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6731" class="blob-num js-line-number" data-line-number="6731"></td>
<td id="LC6731" class="blob-code blob-code-inner js-file-line"> xhr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">XMLHttpRequest</span>();</td>
</tr>
<tr>
<td id="L6732" class="blob-num js-line-number" data-line-number="6732"></td>
<td id="LC6732" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6733" class="blob-num js-line-number" data-line-number="6733"></td>
<td id="LC6733" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-c1">open</span>(<span class="pl-s"><span class="pl-pds">'</span>get<span class="pl-pds">'</span></span>, url);</td>
</tr>
<tr>
<td id="L6734" class="blob-num js-line-number" data-line-number="6734"></td>
<td id="LC6734" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-smi">responseType</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>blob<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L6735" class="blob-num js-line-number" data-line-number="6735"></td>
<td id="LC6735" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6736" class="blob-num js-line-number" data-line-number="6736"></td>
<td id="LC6736" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-en">onprogress</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L6737" class="blob-num js-line-number" data-line-number="6737"></td>
<td id="LC6737" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L6738" class="blob-num js-line-number" data-line-number="6738"></td>
<td id="LC6738" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6739" class="blob-num js-line-number" data-line-number="6739"></td>
<td id="LC6739" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6740" class="blob-num js-line-number" data-line-number="6740"></td>
<td id="LC6740" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6741" class="blob-num js-line-number" data-line-number="6741"></td>
<td id="LC6741" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_loadFromBlob</span>.<span class="pl-c1">call</span>(self, <span class="pl-smi">xhr</span>.<span class="pl-smi">response</span>, <span class="pl-c1">true</span>);</td>
</tr>
<tr>
<td id="L6742" class="blob-num js-line-number" data-line-number="6742"></td>
<td id="LC6742" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6743" class="blob-num js-line-number" data-line-number="6743"></td>
<td id="LC6743" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6744" class="blob-num js-line-number" data-line-number="6744"></td>
<td id="LC6744" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-en">onerror</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L6745" class="blob-num js-line-number" data-line-number="6745"></td>
<td id="LC6745" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L6746" class="blob-num js-line-number" data-line-number="6746"></td>
<td id="LC6746" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6747" class="blob-num js-line-number" data-line-number="6747"></td>
<td id="LC6747" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6748" class="blob-num js-line-number" data-line-number="6748"></td>
<td id="LC6748" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-en">onloadend</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6749" class="blob-num js-line-number" data-line-number="6749"></td>
<td id="LC6749" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L6750" class="blob-num js-line-number" data-line-number="6750"></td>
<td id="LC6750" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6751" class="blob-num js-line-number" data-line-number="6751"></td>
<td id="LC6751" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6752" class="blob-num js-line-number" data-line-number="6752"></td>
<td id="LC6752" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeError<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">err</span>) {</td>
</tr>
<tr>
<td id="L6753" class="blob-num js-line-number" data-line-number="6753"></td>
<td id="LC6753" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>RuntimeError<span class="pl-pds">'</span></span>, err);</td>
</tr>
<tr>
<td id="L6754" class="blob-num js-line-number" data-line-number="6754"></td>
<td id="LC6754" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6755" class="blob-num js-line-number" data-line-number="6755"></td>
<td id="LC6755" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6756" class="blob-num js-line-number" data-line-number="6756"></td>
<td id="LC6756" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">xhr</span>.<span class="pl-c1">send</span>(<span class="pl-c1">null</span>, options);</td>
</tr>
<tr>
<td id="L6757" class="blob-num js-line-number" data-line-number="6757"></td>
<td id="LC6757" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6758" class="blob-num js-line-number" data-line-number="6758"></td>
<td id="LC6758" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6759" class="blob-num js-line-number" data-line-number="6759"></td>
<td id="LC6759" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6760" class="blob-num js-line-number" data-line-number="6760"></td>
<td id="LC6760" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> virtual world will crash on you if image has a resolution higher than this:</span></td>
</tr>
<tr>
<td id="L6761" class="blob-num js-line-number" data-line-number="6761"></td>
<td id="LC6761" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Image</span>.<span class="pl-c1">MAX_RESIZE_WIDTH</span> <span class="pl-k">=</span> <span class="pl-c1">8192</span>;</td>
</tr>
<tr>
<td id="L6762" class="blob-num js-line-number" data-line-number="6762"></td>
<td id="LC6762" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Image</span>.<span class="pl-c1">MAX_RESIZE_HEIGHT</span> <span class="pl-k">=</span> <span class="pl-c1">8192</span>;</td>
</tr>
<tr>
<td id="L6763" class="blob-num js-line-number" data-line-number="6763"></td>
<td id="LC6763" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6764" class="blob-num js-line-number" data-line-number="6764"></td>
<td id="LC6764" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Image</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-c1">EventTarget</span>.<span class="pl-smi">instance</span>;</td>
</tr>
<tr>
<td id="L6765" class="blob-num js-line-number" data-line-number="6765"></td>
<td id="LC6765" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6766" class="blob-num js-line-number" data-line-number="6766"></td>
<td id="LC6766" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> Image;</td>
</tr>
<tr>
<td id="L6767" class="blob-num js-line-number" data-line-number="6767"></td>
<td id="LC6767" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L6768" class="blob-num js-line-number" data-line-number="6768"></td>
<td id="LC6768" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6769" class="blob-num js-line-number" data-line-number="6769"></td>
<td id="LC6769" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/Runtime.js</span></td>
</tr>
<tr>
<td id="L6770" class="blob-num js-line-number" data-line-number="6770"></td>
<td id="LC6770" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6771" class="blob-num js-line-number" data-line-number="6771"></td>
<td id="LC6771" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6772" class="blob-num js-line-number" data-line-number="6772"></td>
<td id="LC6772" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Runtime.js</span></td>
</tr>
<tr>
<td id="L6773" class="blob-num js-line-number" data-line-number="6773"></td>
<td id="LC6773" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6774" class="blob-num js-line-number" data-line-number="6774"></td>
<td id="LC6774" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L6775" class="blob-num js-line-number" data-line-number="6775"></td>
<td id="LC6775" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L6776" class="blob-num js-line-number" data-line-number="6776"></td>
<td id="LC6776" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6777" class="blob-num js-line-number" data-line-number="6777"></td>
<td id="LC6777" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L6778" class="blob-num js-line-number" data-line-number="6778"></td>
<td id="LC6778" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L6779" class="blob-num js-line-number" data-line-number="6779"></td>
<td id="LC6779" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6780" class="blob-num js-line-number" data-line-number="6780"></td>
<td id="LC6780" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6781" class="blob-num js-line-number" data-line-number="6781"></td>
<td id="LC6781" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>global File:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6782" class="blob-num js-line-number" data-line-number="6782"></td>
<td id="LC6782" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6783" class="blob-num js-line-number" data-line-number="6783"></td>
<td id="LC6783" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6784" class="blob-num js-line-number" data-line-number="6784"></td>
<td id="LC6784" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Defines constructor for HTML5 runtime.</span></td>
</tr>
<tr>
<td id="L6785" class="blob-num js-line-number" data-line-number="6785"></td>
<td id="LC6785" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L6786" class="blob-num js-line-number" data-line-number="6786"></td>
<td id="LC6786" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/Runtime</span></td>
</tr>
<tr>
<td id="L6787" class="blob-num js-line-number" data-line-number="6787"></td>
<td id="LC6787" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L6788" class="blob-num js-line-number" data-line-number="6788"></td>
<td id="LC6788" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6789" class="blob-num js-line-number" data-line-number="6789"></td>
<td id="LC6789" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L6790" class="blob-num js-line-number" data-line-number="6790"></td>
<td id="LC6790" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6791" class="blob-num js-line-number" data-line-number="6791"></td>
<td id="LC6791" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6792" class="blob-num js-line-number" data-line-number="6792"></td>
<td id="LC6792" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6793" class="blob-num js-line-number" data-line-number="6793"></td>
<td id="LC6793" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L6794" class="blob-num js-line-number" data-line-number="6794"></td>
<td id="LC6794" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Runtime</span>, <span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L6795" class="blob-num js-line-number" data-line-number="6795"></td>
<td id="LC6795" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L6796" class="blob-num js-line-number" data-line-number="6796"></td>
<td id="LC6796" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>html5<span class="pl-pds">"</span></span>, extensions <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L6797" class="blob-num js-line-number" data-line-number="6797"></td>
<td id="LC6797" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L6798" class="blob-num js-line-number" data-line-number="6798"></td>
<td id="LC6798" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">Html5Runtime</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L6799" class="blob-num js-line-number" data-line-number="6799"></td>
<td id="LC6799" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L6800" class="blob-num js-line-number" data-line-number="6800"></td>
<td id="LC6800" class="blob-code blob-code-inner js-file-line"> , Test <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTest</span></td>
</tr>
<tr>
<td id="L6801" class="blob-num js-line-number" data-line-number="6801"></td>
<td id="LC6801" class="blob-code blob-code-inner js-file-line"> , True <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span></td>
</tr>
<tr>
<td id="L6802" class="blob-num js-line-number" data-line-number="6802"></td>
<td id="LC6802" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L6803" class="blob-num js-line-number" data-line-number="6803"></td>
<td id="LC6803" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6804" class="blob-num js-line-number" data-line-number="6804"></td>
<td id="LC6804" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> caps <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({</td>
</tr>
<tr>
<td id="L6805" class="blob-num js-line-number" data-line-number="6805"></td>
<td id="LC6805" class="blob-code blob-code-inner js-file-line"> access_binary<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">FileReader</span> <span class="pl-k">||</span> <span class="pl-c1">window</span>.<span class="pl-smi">File</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">File</span>.<span class="pl-smi">getAsDataURL</span>),</td>
</tr>
<tr>
<td id="L6806" class="blob-num js-line-number" data-line-number="6806"></td>
<td id="LC6806" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">access_image_binary</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6807" class="blob-num js-line-number" data-line-number="6807"></td>
<td id="LC6807" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>access_binary<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-smi">extensions</span>.<span class="pl-smi">Image</span>;</td>
</tr>
<tr>
<td id="L6808" class="blob-num js-line-number" data-line-number="6808"></td>
<td id="LC6808" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6809" class="blob-num js-line-number" data-line-number="6809"></td>
<td id="LC6809" class="blob-code blob-code-inner js-file-line"> display_media<span class="pl-k">:</span> <span class="pl-en">Test</span>(</td>
</tr>
<tr>
<td id="L6810" class="blob-num js-line-number" data-line-number="6810"></td>
<td id="LC6810" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>create_canvas<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>use_data_uri_over32kb<span class="pl-pds">'</span></span>)) <span class="pl-k">&&</span> </td>
</tr>
<tr>
<td id="L6811" class="blob-num js-line-number" data-line-number="6811"></td>
<td id="LC6811" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">defined</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/image/Image<span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L6812" class="blob-num js-line-number" data-line-number="6812"></td>
<td id="LC6812" class="blob-code blob-code-inner js-file-line"> ),</td>
</tr>
<tr>
<td id="L6813" class="blob-num js-line-number" data-line-number="6813"></td>
<td id="LC6813" class="blob-code blob-code-inner js-file-line"> do_cors<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">&&</span> <span class="pl-s"><span class="pl-pds">'</span>withCredentials<span class="pl-pds">'</span></span> <span class="pl-k">in</span> <span class="pl-k">new</span> <span class="pl-en">XMLHttpRequest</span>()),</td>
</tr>
<tr>
<td id="L6814" class="blob-num js-line-number" data-line-number="6814"></td>
<td id="LC6814" class="blob-code blob-code-inner js-file-line"> drag_and_drop<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6815" class="blob-num js-line-number" data-line-number="6815"></td>
<td id="LC6815" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this comes directly from Modernizr: http://www.modernizr.com/</span></td>
</tr>
<tr>
<td id="L6816" class="blob-num js-line-number" data-line-number="6816"></td>
<td id="LC6816" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> div <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>div<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6817" class="blob-num js-line-number" data-line-number="6817"></td>
<td id="LC6817" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> IE has support for drag and drop since version 5, but doesn't support dropping files from desktop</span></td>
</tr>
<tr>
<td id="L6818" class="blob-num js-line-number" data-line-number="6818"></td>
<td id="LC6818" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> ((<span class="pl-s"><span class="pl-pds">'</span>draggable<span class="pl-pds">'</span></span> <span class="pl-k">in</span> div) <span class="pl-k">||</span> (<span class="pl-s"><span class="pl-pds">'</span>ondragstart<span class="pl-pds">'</span></span> <span class="pl-k">in</span> div <span class="pl-k">&&</span> <span class="pl-s"><span class="pl-pds">'</span>ondrop<span class="pl-pds">'</span></span> <span class="pl-k">in</span> div)) <span class="pl-k">&&</span> </td>
</tr>
<tr>
<td id="L6819" class="blob-num js-line-number" data-line-number="6819"></td>
<td id="LC6819" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">9</span>, <span class="pl-s"><span class="pl-pds">'</span>><span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L6820" class="blob-num js-line-number" data-line-number="6820"></td>
<td id="LC6820" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L6821" class="blob-num js-line-number" data-line-number="6821"></td>
<td id="LC6821" class="blob-code blob-code-inner js-file-line"> filter_by_extension<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> if you know how to feature-detect this, please suggest</span></td>
</tr>
<tr>
<td id="L6822" class="blob-num js-line-number" data-line-number="6822"></td>
<td id="LC6822" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span>(</td>
</tr>
<tr>
<td id="L6823" class="blob-num js-line-number" data-line-number="6823"></td>
<td id="LC6823" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Chrome<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">28</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span> </td>
</tr>
<tr>
<td id="L6824" class="blob-num js-line-number" data-line-number="6824"></td>
<td id="LC6824" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">10</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span> </td>
</tr>
<tr>
<td id="L6825" class="blob-num js-line-number" data-line-number="6825"></td>
<td id="LC6825" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Safari<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">11</span>, <span class="pl-s"><span class="pl-pds">'</span><=<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L6826" class="blob-num js-line-number" data-line-number="6826"></td>
<td id="LC6826" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Firefox<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">37</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L6827" class="blob-num js-line-number" data-line-number="6827"></td>
<td id="LC6827" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">os</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>iOS<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-c"><span class="pl-c">//</span> as of iOS11, no extensions are supported in accept attribute</span></td>
</tr>
<tr>
<td id="L6828" class="blob-num js-line-number" data-line-number="6828"></td>
<td id="LC6828" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">os</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Android<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L6829" class="blob-num js-line-number" data-line-number="6829"></td>
<td id="LC6829" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L6830" class="blob-num js-line-number" data-line-number="6830"></td>
<td id="LC6830" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L6831" class="blob-num js-line-number" data-line-number="6831"></td>
<td id="LC6831" class="blob-code blob-code-inner js-file-line"> return_response_headers<span class="pl-k">:</span> True,</td>
</tr>
<tr>
<td id="L6832" class="blob-num js-line-number" data-line-number="6832"></td>
<td id="LC6832" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_type</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L6833" class="blob-num js-line-number" data-line-number="6833"></td>
<td id="LC6833" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (responseType <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span>) { <span class="pl-c"><span class="pl-c">//</span> we can fake this one even if it's not supported</span></td>
</tr>
<tr>
<td id="L6834" class="blob-num js-line-number" data-line-number="6834"></td>
<td id="LC6834" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L6835" class="blob-num js-line-number" data-line-number="6835"></td>
<td id="LC6835" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L6836" class="blob-num js-line-number" data-line-number="6836"></td>
<td id="LC6836" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>return_response_type<span class="pl-pds">'</span></span>, responseType);</td>
</tr>
<tr>
<td id="L6837" class="blob-num js-line-number" data-line-number="6837"></td>
<td id="LC6837" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6838" class="blob-num js-line-number" data-line-number="6838"></td>
<td id="LC6838" class="blob-code blob-code-inner js-file-line"> return_status_code<span class="pl-k">:</span> True,</td>
</tr>
<tr>
<td id="L6839" class="blob-num js-line-number" data-line-number="6839"></td>
<td id="LC6839" class="blob-code blob-code-inner js-file-line"> report_upload_progress<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">&&</span> <span class="pl-k">new</span> <span class="pl-en">XMLHttpRequest</span>().<span class="pl-smi">upload</span>),</td>
</tr>
<tr>
<td id="L6840" class="blob-num js-line-number" data-line-number="6840"></td>
<td id="LC6840" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">resize_image</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6841" class="blob-num js-line-number" data-line-number="6841"></td>
<td id="LC6841" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>access_binary<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>create_canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6842" class="blob-num js-line-number" data-line-number="6842"></td>
<td id="LC6842" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6843" class="blob-num js-line-number" data-line-number="6843"></td>
<td id="LC6843" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">select_file</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6844" class="blob-num js-line-number" data-line-number="6844"></td>
<td id="LC6844" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>use_fileinput<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">File</span>;</td>
</tr>
<tr>
<td id="L6845" class="blob-num js-line-number" data-line-number="6845"></td>
<td id="LC6845" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6846" class="blob-num js-line-number" data-line-number="6846"></td>
<td id="LC6846" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">select_folder</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6847" class="blob-num js-line-number" data-line-number="6847"></td>
<td id="LC6847" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_file<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> (</td>
</tr>
<tr>
<td id="L6848" class="blob-num js-line-number" data-line-number="6848"></td>
<td id="LC6848" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Chrome<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">21</span>, <span class="pl-s"><span class="pl-pds">'</span>>=<span class="pl-pds">'</span></span>) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L6849" class="blob-num js-line-number" data-line-number="6849"></td>
<td id="LC6849" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Firefox<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">42</span>, <span class="pl-s"><span class="pl-pds">'</span>>=<span class="pl-pds">'</span></span>) <span class="pl-c"><span class="pl-c">//</span> https://developer.mozilla.org/en-US/Firefox/Releases/42</span></td>
</tr>
<tr>
<td id="L6850" class="blob-num js-line-number" data-line-number="6850"></td>
<td id="LC6850" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L6851" class="blob-num js-line-number" data-line-number="6851"></td>
<td id="LC6851" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6852" class="blob-num js-line-number" data-line-number="6852"></td>
<td id="LC6852" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">select_multiple</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6853" class="blob-num js-line-number" data-line-number="6853"></td>
<td id="LC6853" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> it is buggy on Safari Windows and iOS</span></td>
</tr>
<tr>
<td id="L6854" class="blob-num js-line-number" data-line-number="6854"></td>
<td id="LC6854" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_file<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span></td>
</tr>
<tr>
<td id="L6855" class="blob-num js-line-number" data-line-number="6855"></td>
<td id="LC6855" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">!</span>(<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Safari<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">os</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Windows<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span></td>
</tr>
<tr>
<td id="L6856" class="blob-num js-line-number" data-line-number="6856"></td>
<td id="LC6856" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">!</span>(<span class="pl-smi">Env</span>.<span class="pl-smi">os</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>iOS<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-smi">osVersion</span>, <span class="pl-s"><span class="pl-pds">"</span>7.0.0<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">'</span>><span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-smi">osVersion</span>, <span class="pl-s"><span class="pl-pds">"</span>8.0.0<span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L6857" class="blob-num js-line-number" data-line-number="6857"></td>
<td id="LC6857" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6858" class="blob-num js-line-number" data-line-number="6858"></td>
<td id="LC6858" class="blob-code blob-code-inner js-file-line"> send_binary_string<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">&&</span> (<span class="pl-k">new</span> <span class="pl-en">XMLHttpRequest</span>().<span class="pl-smi">sendAsBinary</span> <span class="pl-k">||</span> (<span class="pl-c1">window</span>.<span class="pl-smi">Uint8Array</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">ArrayBuffer</span>))),</td>
</tr>
<tr>
<td id="L6859" class="blob-num js-line-number" data-line-number="6859"></td>
<td id="LC6859" class="blob-code blob-code-inner js-file-line"> send_custom_headers<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span>),</td>
</tr>
<tr>
<td id="L6860" class="blob-num js-line-number" data-line-number="6860"></td>
<td id="LC6860" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_multipart</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6861" class="blob-num js-line-number" data-line-number="6861"></td>
<td id="LC6861" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span>(<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">&&</span> <span class="pl-k">new</span> <span class="pl-en">XMLHttpRequest</span>().<span class="pl-smi">upload</span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">FormData</span>) <span class="pl-k">||</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>send_binary_string<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6862" class="blob-num js-line-number" data-line-number="6862"></td>
<td id="LC6862" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6863" class="blob-num js-line-number" data-line-number="6863"></td>
<td id="LC6863" class="blob-code blob-code-inner js-file-line"> slice_blob<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">File</span> <span class="pl-k">&&</span> (<span class="pl-c1">File</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">mozSlice</span> <span class="pl-k">||</span> <span class="pl-c1">File</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">webkitSlice</span> <span class="pl-k">||</span> <span class="pl-c1">File</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">slice</span>)),</td>
</tr>
<tr>
<td id="L6864" class="blob-num js-line-number" data-line-number="6864"></td>
<td id="LC6864" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">stream_upload</span><span class="pl-k">:</span> <span class="pl-k">function</span>(){</td>
</tr>
<tr>
<td id="L6865" class="blob-num js-line-number" data-line-number="6865"></td>
<td id="LC6865" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>slice_blob<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>send_multipart<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L6866" class="blob-num js-line-number" data-line-number="6866"></td>
<td id="LC6866" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6867" class="blob-num js-line-number" data-line-number="6867"></td>
<td id="LC6867" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">summon_file_dialog</span><span class="pl-k">:</span> <span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> yeah... some dirty sniffing here...</span></td>
</tr>
<tr>
<td id="L6868" class="blob-num js-line-number" data-line-number="6868"></td>
<td id="LC6868" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_file<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-k">!</span>(</td>
</tr>
<tr>
<td id="L6869" class="blob-num js-line-number" data-line-number="6869"></td>
<td id="LC6869" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Firefox<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">4</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L6870" class="blob-num js-line-number" data-line-number="6870"></td>
<td id="LC6870" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Opera<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">12</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L6871" class="blob-num js-line-number" data-line-number="6871"></td>
<td id="LC6871" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">10</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>))</td>
</tr>
<tr>
<td id="L6872" class="blob-num js-line-number" data-line-number="6872"></td>
<td id="LC6872" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L6873" class="blob-num js-line-number" data-line-number="6873"></td>
<td id="LC6873" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6874" class="blob-num js-line-number" data-line-number="6874"></td>
<td id="LC6874" class="blob-code blob-code-inner js-file-line"> upload_filesize<span class="pl-k">:</span> True,</td>
</tr>
<tr>
<td id="L6875" class="blob-num js-line-number" data-line-number="6875"></td>
<td id="LC6875" class="blob-code blob-code-inner js-file-line"> use_http_method<span class="pl-k">:</span> True</td>
</tr>
<tr>
<td id="L6876" class="blob-num js-line-number" data-line-number="6876"></td>
<td id="LC6876" class="blob-code blob-code-inner js-file-line"> }, </td>
</tr>
<tr>
<td id="L6877" class="blob-num js-line-number" data-line-number="6877"></td>
<td id="LC6877" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">arguments</span>[<span class="pl-c1">2</span>]</td>
</tr>
<tr>
<td id="L6878" class="blob-num js-line-number" data-line-number="6878"></td>
<td id="LC6878" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L6879" class="blob-num js-line-number" data-line-number="6879"></td>
<td id="LC6879" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6880" class="blob-num js-line-number" data-line-number="6880"></td>
<td id="LC6880" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, options, (<span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>] <span class="pl-k">||</span> type), caps);</td>
</tr>
<tr>
<td id="L6881" class="blob-num js-line-number" data-line-number="6881"></td>
<td id="LC6881" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6882" class="blob-num js-line-number" data-line-number="6882"></td>
<td id="LC6882" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6883" class="blob-num js-line-number" data-line-number="6883"></td>
<td id="LC6883" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L6884" class="blob-num js-line-number" data-line-number="6884"></td>
<td id="LC6884" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6885" class="blob-num js-line-number" data-line-number="6885"></td>
<td id="LC6885" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span> <span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6886" class="blob-num js-line-number" data-line-number="6886"></td>
<td id="LC6886" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>Init<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L6887" class="blob-num js-line-number" data-line-number="6887"></td>
<td id="LC6887" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L6888" class="blob-num js-line-number" data-line-number="6888"></td>
<td id="LC6888" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6889" class="blob-num js-line-number" data-line-number="6889"></td>
<td id="LC6889" class="blob-code blob-code-inner js-file-line"> destroy<span class="pl-k">:</span> (<span class="pl-k">function</span>(<span class="pl-smi">destroy</span>) { <span class="pl-c"><span class="pl-c">//</span> extend default destroy method</span></td>
</tr>
<tr>
<td id="L6890" class="blob-num js-line-number" data-line-number="6890"></td>
<td id="LC6890" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6891" class="blob-num js-line-number" data-line-number="6891"></td>
<td id="LC6891" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">destroy</span>.<span class="pl-c1">call</span>(<span class="pl-c1">I</span>);</td>
</tr>
<tr>
<td id="L6892" class="blob-num js-line-number" data-line-number="6892"></td>
<td id="LC6892" class="blob-code blob-code-inner js-file-line"> destroy <span class="pl-k">=</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L6893" class="blob-num js-line-number" data-line-number="6893"></td>
<td id="LC6893" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6894" class="blob-num js-line-number" data-line-number="6894"></td>
<td id="LC6894" class="blob-code blob-code-inner js-file-line"> }(<span class="pl-c1">this</span>.<span class="pl-smi">destroy</span>))</td>
</tr>
<tr>
<td id="L6895" class="blob-num js-line-number" data-line-number="6895"></td>
<td id="LC6895" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L6896" class="blob-num js-line-number" data-line-number="6896"></td>
<td id="LC6896" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6897" class="blob-num js-line-number" data-line-number="6897"></td>
<td id="LC6897" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>.<span class="pl-en">getShim</span>(), extensions);</td>
</tr>
<tr>
<td id="L6898" class="blob-num js-line-number" data-line-number="6898"></td>
<td id="LC6898" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6899" class="blob-num js-line-number" data-line-number="6899"></td>
<td id="LC6899" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6900" class="blob-num js-line-number" data-line-number="6900"></td>
<td id="LC6900" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">addConstructor</span>(type, Html5Runtime);</td>
</tr>
<tr>
<td id="L6901" class="blob-num js-line-number" data-line-number="6901"></td>
<td id="LC6901" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6902" class="blob-num js-line-number" data-line-number="6902"></td>
<td id="LC6902" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> extensions;</td>
</tr>
<tr>
<td id="L6903" class="blob-num js-line-number" data-line-number="6903"></td>
<td id="LC6903" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L6904" class="blob-num js-line-number" data-line-number="6904"></td>
<td id="LC6904" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6905" class="blob-num js-line-number" data-line-number="6905"></td>
<td id="LC6905" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/file/Blob.js</span></td>
</tr>
<tr>
<td id="L6906" class="blob-num js-line-number" data-line-number="6906"></td>
<td id="LC6906" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6907" class="blob-num js-line-number" data-line-number="6907"></td>
<td id="LC6907" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6908" class="blob-num js-line-number" data-line-number="6908"></td>
<td id="LC6908" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Blob.js</span></td>
</tr>
<tr>
<td id="L6909" class="blob-num js-line-number" data-line-number="6909"></td>
<td id="LC6909" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6910" class="blob-num js-line-number" data-line-number="6910"></td>
<td id="LC6910" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L6911" class="blob-num js-line-number" data-line-number="6911"></td>
<td id="LC6911" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L6912" class="blob-num js-line-number" data-line-number="6912"></td>
<td id="LC6912" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6913" class="blob-num js-line-number" data-line-number="6913"></td>
<td id="LC6913" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L6914" class="blob-num js-line-number" data-line-number="6914"></td>
<td id="LC6914" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L6915" class="blob-num js-line-number" data-line-number="6915"></td>
<td id="LC6915" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6916" class="blob-num js-line-number" data-line-number="6916"></td>
<td id="LC6916" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6917" class="blob-num js-line-number" data-line-number="6917"></td>
<td id="LC6917" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6918" class="blob-num js-line-number" data-line-number="6918"></td>
<td id="LC6918" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/file/Blob</span></td>
</tr>
<tr>
<td id="L6919" class="blob-num js-line-number" data-line-number="6919"></td>
<td id="LC6919" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L6920" class="blob-num js-line-number" data-line-number="6920"></td>
<td id="LC6920" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6921" class="blob-num js-line-number" data-line-number="6921"></td>
<td id="LC6921" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/file/Blob<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L6922" class="blob-num js-line-number" data-line-number="6922"></td>
<td id="LC6922" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L6923" class="blob-num js-line-number" data-line-number="6923"></td>
<td id="LC6923" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L6924" class="blob-num js-line-number" data-line-number="6924"></td>
<td id="LC6924" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L6925" class="blob-num js-line-number" data-line-number="6925"></td>
<td id="LC6925" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6926" class="blob-num js-line-number" data-line-number="6926"></td>
<td id="LC6926" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">HTML5Blob</span>() {</td>
</tr>
<tr>
<td id="L6927" class="blob-num js-line-number" data-line-number="6927"></td>
<td id="LC6927" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">w3cBlobSlice</span>(<span class="pl-smi">blob</span>, <span class="pl-smi">start</span>, <span class="pl-smi">end</span>) {</td>
</tr>
<tr>
<td id="L6928" class="blob-num js-line-number" data-line-number="6928"></td>
<td id="LC6928" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> blobSlice;</td>
</tr>
<tr>
<td id="L6929" class="blob-num js-line-number" data-line-number="6929"></td>
<td id="LC6929" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6930" class="blob-num js-line-number" data-line-number="6930"></td>
<td id="LC6930" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">window</span>.<span class="pl-smi">File</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">slice</span>) {</td>
</tr>
<tr>
<td id="L6931" class="blob-num js-line-number" data-line-number="6931"></td>
<td id="LC6931" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L6932" class="blob-num js-line-number" data-line-number="6932"></td>
<td id="LC6932" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">blob</span>.<span class="pl-c1">slice</span>(); <span class="pl-c"><span class="pl-c">//</span> depricated version will throw WRONG_ARGUMENTS_ERR exception</span></td>
</tr>
<tr>
<td id="L6933" class="blob-num js-line-number" data-line-number="6933"></td>
<td id="LC6933" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">blob</span>.<span class="pl-c1">slice</span>(start, end);</td>
</tr>
<tr>
<td id="L6934" class="blob-num js-line-number" data-line-number="6934"></td>
<td id="LC6934" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (e) {</td>
</tr>
<tr>
<td id="L6935" class="blob-num js-line-number" data-line-number="6935"></td>
<td id="LC6935" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> depricated slice method</span></td>
</tr>
<tr>
<td id="L6936" class="blob-num js-line-number" data-line-number="6936"></td>
<td id="LC6936" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">blob</span>.<span class="pl-c1">slice</span>(start, end <span class="pl-k">-</span> start);</td>
</tr>
<tr>
<td id="L6937" class="blob-num js-line-number" data-line-number="6937"></td>
<td id="LC6937" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6938" class="blob-num js-line-number" data-line-number="6938"></td>
<td id="LC6938" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> slice method got prefixed: https://bugzilla.mozilla.org/show_bug.cgi?id=649672</span></td>
</tr>
<tr>
<td id="L6939" class="blob-num js-line-number" data-line-number="6939"></td>
<td id="LC6939" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> ((blobSlice <span class="pl-k">=</span> <span class="pl-c1">window</span>.<span class="pl-smi">File</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">webkitSlice</span> <span class="pl-k">||</span> <span class="pl-c1">window</span>.<span class="pl-smi">File</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">mozSlice</span>)) {</td>
</tr>
<tr>
<td id="L6940" class="blob-num js-line-number" data-line-number="6940"></td>
<td id="LC6940" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">blobSlice</span>.<span class="pl-c1">call</span>(blob, start, end);</td>
</tr>
<tr>
<td id="L6941" class="blob-num js-line-number" data-line-number="6941"></td>
<td id="LC6941" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L6942" class="blob-num js-line-number" data-line-number="6942"></td>
<td id="LC6942" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> or throw some exception</span></td>
</tr>
<tr>
<td id="L6943" class="blob-num js-line-number" data-line-number="6943"></td>
<td id="LC6943" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6944" class="blob-num js-line-number" data-line-number="6944"></td>
<td id="LC6944" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6945" class="blob-num js-line-number" data-line-number="6945"></td>
<td id="LC6945" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6946" class="blob-num js-line-number" data-line-number="6946"></td>
<td id="LC6946" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">slice</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6947" class="blob-num js-line-number" data-line-number="6947"></td>
<td id="LC6947" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">uid</span>, <span class="pl-smi">w3cBlobSlice</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>));</td>
</tr>
<tr>
<td id="L6948" class="blob-num js-line-number" data-line-number="6948"></td>
<td id="LC6948" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6949" class="blob-num js-line-number" data-line-number="6949"></td>
<td id="LC6949" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6950" class="blob-num js-line-number" data-line-number="6950"></td>
<td id="LC6950" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">destroy</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L6951" class="blob-num js-line-number" data-line-number="6951"></td>
<td id="LC6951" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShim</span>().<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L6952" class="blob-num js-line-number" data-line-number="6952"></td>
<td id="LC6952" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L6953" class="blob-num js-line-number" data-line-number="6953"></td>
<td id="LC6953" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6954" class="blob-num js-line-number" data-line-number="6954"></td>
<td id="LC6954" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6955" class="blob-num js-line-number" data-line-number="6955"></td>
<td id="LC6955" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Blob</span> <span class="pl-k">=</span> HTML5Blob);</td>
</tr>
<tr>
<td id="L6956" class="blob-num js-line-number" data-line-number="6956"></td>
<td id="LC6956" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L6957" class="blob-num js-line-number" data-line-number="6957"></td>
<td id="LC6957" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6958" class="blob-num js-line-number" data-line-number="6958"></td>
<td id="LC6958" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/core/utils/Events.js</span></td>
</tr>
<tr>
<td id="L6959" class="blob-num js-line-number" data-line-number="6959"></td>
<td id="LC6959" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6960" class="blob-num js-line-number" data-line-number="6960"></td>
<td id="LC6960" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6961" class="blob-num js-line-number" data-line-number="6961"></td>
<td id="LC6961" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Events.js</span></td>
</tr>
<tr>
<td id="L6962" class="blob-num js-line-number" data-line-number="6962"></td>
<td id="LC6962" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6963" class="blob-num js-line-number" data-line-number="6963"></td>
<td id="LC6963" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L6964" class="blob-num js-line-number" data-line-number="6964"></td>
<td id="LC6964" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L6965" class="blob-num js-line-number" data-line-number="6965"></td>
<td id="LC6965" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L6966" class="blob-num js-line-number" data-line-number="6966"></td>
<td id="LC6966" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L6967" class="blob-num js-line-number" data-line-number="6967"></td>
<td id="LC6967" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L6968" class="blob-num js-line-number" data-line-number="6968"></td>
<td id="LC6968" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6969" class="blob-num js-line-number" data-line-number="6969"></td>
<td id="LC6969" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6970" class="blob-num js-line-number" data-line-number="6970"></td>
<td id="LC6970" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6971" class="blob-num js-line-number" data-line-number="6971"></td>
<td id="LC6971" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/core/utils/Events</span></td>
</tr>
<tr>
<td id="L6972" class="blob-num js-line-number" data-line-number="6972"></td>
<td id="LC6972" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@public</span></span></td>
</tr>
<tr>
<td id="L6973" class="blob-num js-line-number" data-line-number="6973"></td>
<td id="LC6973" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L6974" class="blob-num js-line-number" data-line-number="6974"></td>
<td id="LC6974" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L6975" class="blob-num js-line-number" data-line-number="6975"></td>
<td id="LC6975" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6976" class="blob-num js-line-number" data-line-number="6976"></td>
<td id="LC6976" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Events<span class="pl-pds">'</span></span>, [</td>
</tr>
<tr>
<td id="L6977" class="blob-num js-line-number" data-line-number="6977"></td>
<td id="LC6977" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/core/utils/Basic<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L6978" class="blob-num js-line-number" data-line-number="6978"></td>
<td id="LC6978" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L6979" class="blob-num js-line-number" data-line-number="6979"></td>
<td id="LC6979" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> eventhash <span class="pl-k">=</span> {}, uid <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>moxie_<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>();</td>
</tr>
<tr>
<td id="L6980" class="blob-num js-line-number" data-line-number="6980"></td>
<td id="LC6980" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L6981" class="blob-num js-line-number" data-line-number="6981"></td>
<td id="LC6981" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> IE W3C like event funcs</span></td>
</tr>
<tr>
<td id="L6982" class="blob-num js-line-number" data-line-number="6982"></td>
<td id="LC6982" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">preventDefault</span>() {</td>
</tr>
<tr>
<td id="L6983" class="blob-num js-line-number" data-line-number="6983"></td>
<td id="LC6983" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">returnValue</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L6984" class="blob-num js-line-number" data-line-number="6984"></td>
<td id="LC6984" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6985" class="blob-num js-line-number" data-line-number="6985"></td>
<td id="LC6985" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6986" class="blob-num js-line-number" data-line-number="6986"></td>
<td id="LC6986" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">stopPropagation</span>() {</td>
</tr>
<tr>
<td id="L6987" class="blob-num js-line-number" data-line-number="6987"></td>
<td id="LC6987" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">cancelBubble</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L6988" class="blob-num js-line-number" data-line-number="6988"></td>
<td id="LC6988" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L6989" class="blob-num js-line-number" data-line-number="6989"></td>
<td id="LC6989" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L6990" class="blob-num js-line-number" data-line-number="6990"></td>
<td id="LC6990" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L6991" class="blob-num js-line-number" data-line-number="6991"></td>
<td id="LC6991" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Adds an event handler to the specified object and store reference to the handler</span></td>
</tr>
<tr>
<td id="L6992" class="blob-num js-line-number" data-line-number="6992"></td>
<td id="LC6992" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> in objects internal Plupload registry (<span class="pl-k">@see</span> <span class="pl-en">removeEvent).</span></span></td>
</tr>
<tr>
<td id="L6993" class="blob-num js-line-number" data-line-number="6993"></td>
<td id="LC6993" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td>
</tr>
<tr>
<td id="L6994" class="blob-num js-line-number" data-line-number="6994"></td>
<td id="LC6994" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">addEvent</span></span></td>
</tr>
<tr>
<td id="L6995" class="blob-num js-line-number" data-line-number="6995"></td>
<td id="LC6995" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L6996" class="blob-num js-line-number" data-line-number="6996"></td>
<td id="LC6996" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element like object to add handler to.</span></td>
</tr>
<tr>
<td id="L6997" class="blob-num js-line-number" data-line-number="6997"></td>
<td id="LC6997" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Name to add event listener to.</span></td>
</tr>
<tr>
<td id="L6998" class="blob-num js-line-number" data-line-number="6998"></td>
<td id="LC6998" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function}</span> <span class="pl-smi">callback</span> Function to call when event occurs.</span></td>
</tr>
<tr>
<td id="L6999" class="blob-num js-line-number" data-line-number="6999"></td>
<td id="LC6999" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[key]</span> that might be used to add specifity to the event record.</span></td>
</tr>
<tr>
<td id="L7000" class="blob-num js-line-number" data-line-number="7000"></td>
<td id="LC7000" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7001" class="blob-num js-line-number" data-line-number="7001"></td>
<td id="LC7001" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">addEvent</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">name</span>, <span class="pl-smi">callback</span>, <span class="pl-smi">key</span>) {</td>
</tr>
<tr>
<td id="L7002" class="blob-num js-line-number" data-line-number="7002"></td>
<td id="LC7002" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> func, events;</td>
</tr>
<tr>
<td id="L7003" class="blob-num js-line-number" data-line-number="7003"></td>
<td id="LC7003" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7004" class="blob-num js-line-number" data-line-number="7004"></td>
<td id="LC7004" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">=</span> <span class="pl-smi">name</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L7005" class="blob-num js-line-number" data-line-number="7005"></td>
<td id="LC7005" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7006" class="blob-num js-line-number" data-line-number="7006"></td>
<td id="LC7006" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Add event listener</span></td>
</tr>
<tr>
<td id="L7007" class="blob-num js-line-number" data-line-number="7007"></td>
<td id="LC7007" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-smi">addEventListener</span>) {</td>
</tr>
<tr>
<td id="L7008" class="blob-num js-line-number" data-line-number="7008"></td>
<td id="LC7008" class="blob-code blob-code-inner js-file-line"> func <span class="pl-k">=</span> callback;</td>
</tr>
<tr>
<td id="L7009" class="blob-num js-line-number" data-line-number="7009"></td>
<td id="LC7009" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7010" class="blob-num js-line-number" data-line-number="7010"></td>
<td id="LC7010" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">addEventListener</span>(name, func, <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L7011" class="blob-num js-line-number" data-line-number="7011"></td>
<td id="LC7011" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-smi">attachEvent</span>) {</td>
</tr>
<tr>
<td id="L7012" class="blob-num js-line-number" data-line-number="7012"></td>
<td id="LC7012" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">func</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7013" class="blob-num js-line-number" data-line-number="7013"></td>
<td id="LC7013" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> evt <span class="pl-k">=</span> <span class="pl-c1">window</span>.<span class="pl-c1">event</span>;</td>
</tr>
<tr>
<td id="L7014" class="blob-num js-line-number" data-line-number="7014"></td>
<td id="LC7014" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7015" class="blob-num js-line-number" data-line-number="7015"></td>
<td id="LC7015" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">evt</span>.<span class="pl-c1">target</span>) {</td>
</tr>
<tr>
<td id="L7016" class="blob-num js-line-number" data-line-number="7016"></td>
<td id="LC7016" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-c1">target</span> <span class="pl-k">=</span> <span class="pl-smi">evt</span>.<span class="pl-smi">srcElement</span>;</td>
</tr>
<tr>
<td id="L7017" class="blob-num js-line-number" data-line-number="7017"></td>
<td id="LC7017" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7018" class="blob-num js-line-number" data-line-number="7018"></td>
<td id="LC7018" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7019" class="blob-num js-line-number" data-line-number="7019"></td>
<td id="LC7019" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-smi">preventDefault</span> <span class="pl-k">=</span> preventDefault;</td>
</tr>
<tr>
<td id="L7020" class="blob-num js-line-number" data-line-number="7020"></td>
<td id="LC7020" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">evt</span>.<span class="pl-smi">stopPropagation</span> <span class="pl-k">=</span> stopPropagation;</td>
</tr>
<tr>
<td id="L7021" class="blob-num js-line-number" data-line-number="7021"></td>
<td id="LC7021" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7022" class="blob-num js-line-number" data-line-number="7022"></td>
<td id="LC7022" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">callback</span>(evt);</td>
</tr>
<tr>
<td id="L7023" class="blob-num js-line-number" data-line-number="7023"></td>
<td id="LC7023" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7024" class="blob-num js-line-number" data-line-number="7024"></td>
<td id="LC7024" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7025" class="blob-num js-line-number" data-line-number="7025"></td>
<td id="LC7025" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">attachEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>on<span class="pl-pds">'</span></span> <span class="pl-k">+</span> name, func);</td>
</tr>
<tr>
<td id="L7026" class="blob-num js-line-number" data-line-number="7026"></td>
<td id="LC7026" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7027" class="blob-num js-line-number" data-line-number="7027"></td>
<td id="LC7027" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7028" class="blob-num js-line-number" data-line-number="7028"></td>
<td id="LC7028" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Log event handler to objects internal mOxie registry</span></td>
</tr>
<tr>
<td id="L7029" class="blob-num js-line-number" data-line-number="7029"></td>
<td id="LC7029" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>obj[uid]) {</td>
</tr>
<tr>
<td id="L7030" class="blob-num js-line-number" data-line-number="7030"></td>
<td id="LC7030" class="blob-code blob-code-inner js-file-line"> obj[uid] <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>();</td>
</tr>
<tr>
<td id="L7031" class="blob-num js-line-number" data-line-number="7031"></td>
<td id="LC7031" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7032" class="blob-num js-line-number" data-line-number="7032"></td>
<td id="LC7032" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7033" class="blob-num js-line-number" data-line-number="7033"></td>
<td id="LC7033" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">eventhash</span>.<span class="pl-en">hasOwnProperty</span>(obj[uid])) {</td>
</tr>
<tr>
<td id="L7034" class="blob-num js-line-number" data-line-number="7034"></td>
<td id="LC7034" class="blob-code blob-code-inner js-file-line"> eventhash[obj[uid]] <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L7035" class="blob-num js-line-number" data-line-number="7035"></td>
<td id="LC7035" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7036" class="blob-num js-line-number" data-line-number="7036"></td>
<td id="LC7036" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7037" class="blob-num js-line-number" data-line-number="7037"></td>
<td id="LC7037" class="blob-code blob-code-inner js-file-line"> events <span class="pl-k">=</span> eventhash[obj[uid]];</td>
</tr>
<tr>
<td id="L7038" class="blob-num js-line-number" data-line-number="7038"></td>
<td id="LC7038" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7039" class="blob-num js-line-number" data-line-number="7039"></td>
<td id="LC7039" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">events</span>.<span class="pl-en">hasOwnProperty</span>(name)) {</td>
</tr>
<tr>
<td id="L7040" class="blob-num js-line-number" data-line-number="7040"></td>
<td id="LC7040" class="blob-code blob-code-inner js-file-line"> events[name] <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L7041" class="blob-num js-line-number" data-line-number="7041"></td>
<td id="LC7041" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7042" class="blob-num js-line-number" data-line-number="7042"></td>
<td id="LC7042" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7043" class="blob-num js-line-number" data-line-number="7043"></td>
<td id="LC7043" class="blob-code blob-code-inner js-file-line"> events[name].<span class="pl-c1">push</span>({</td>
</tr>
<tr>
<td id="L7044" class="blob-num js-line-number" data-line-number="7044"></td>
<td id="LC7044" class="blob-code blob-code-inner js-file-line"> func<span class="pl-k">:</span> func,</td>
</tr>
<tr>
<td id="L7045" class="blob-num js-line-number" data-line-number="7045"></td>
<td id="LC7045" class="blob-code blob-code-inner js-file-line"> orig<span class="pl-k">:</span> callback, <span class="pl-c"><span class="pl-c">//</span> store original callback for IE</span></td>
</tr>
<tr>
<td id="L7046" class="blob-num js-line-number" data-line-number="7046"></td>
<td id="LC7046" class="blob-code blob-code-inner js-file-line"> key<span class="pl-k">:</span> key</td>
</tr>
<tr>
<td id="L7047" class="blob-num js-line-number" data-line-number="7047"></td>
<td id="LC7047" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7048" class="blob-num js-line-number" data-line-number="7048"></td>
<td id="LC7048" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7049" class="blob-num js-line-number" data-line-number="7049"></td>
<td id="LC7049" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7050" class="blob-num js-line-number" data-line-number="7050"></td>
<td id="LC7050" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7051" class="blob-num js-line-number" data-line-number="7051"></td>
<td id="LC7051" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7052" class="blob-num js-line-number" data-line-number="7052"></td>
<td id="LC7052" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Remove event handler from the specified object. If third argument (callback)</span></td>
</tr>
<tr>
<td id="L7053" class="blob-num js-line-number" data-line-number="7053"></td>
<td id="LC7053" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> is not specified remove all events with the specified name.</span></td>
</tr>
<tr>
<td id="L7054" class="blob-num js-line-number" data-line-number="7054"></td>
<td id="LC7054" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td>
</tr>
<tr>
<td id="L7055" class="blob-num js-line-number" data-line-number="7055"></td>
<td id="LC7055" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">removeEvent</span></span></td>
</tr>
<tr>
<td id="L7056" class="blob-num js-line-number" data-line-number="7056"></td>
<td id="LC7056" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L7057" class="blob-num js-line-number" data-line-number="7057"></td>
<td id="LC7057" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element to remove event listener(s) from.</span></td>
</tr>
<tr>
<td id="L7058" class="blob-num js-line-number" data-line-number="7058"></td>
<td id="LC7058" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">name</span> Name of event listener to remove.</span></td>
</tr>
<tr>
<td id="L7059" class="blob-num js-line-number" data-line-number="7059"></td>
<td id="LC7059" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Function|String}</span> <span class="pl-smi">[callback]</span> might be a callback or unique key to match.</span></td>
</tr>
<tr>
<td id="L7060" class="blob-num js-line-number" data-line-number="7060"></td>
<td id="LC7060" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7061" class="blob-num js-line-number" data-line-number="7061"></td>
<td id="LC7061" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">removeEvent</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">name</span>, <span class="pl-smi">callback</span>) {</td>
</tr>
<tr>
<td id="L7062" class="blob-num js-line-number" data-line-number="7062"></td>
<td id="LC7062" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> type, undef;</td>
</tr>
<tr>
<td id="L7063" class="blob-num js-line-number" data-line-number="7063"></td>
<td id="LC7063" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7064" class="blob-num js-line-number" data-line-number="7064"></td>
<td id="LC7064" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">=</span> <span class="pl-smi">name</span>.<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L7065" class="blob-num js-line-number" data-line-number="7065"></td>
<td id="LC7065" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7066" class="blob-num js-line-number" data-line-number="7066"></td>
<td id="LC7066" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (obj[uid] <span class="pl-k">&&</span> eventhash[obj[uid]] <span class="pl-k">&&</span> eventhash[obj[uid]][name]) {</td>
</tr>
<tr>
<td id="L7067" class="blob-num js-line-number" data-line-number="7067"></td>
<td id="LC7067" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> eventhash[obj[uid]][name];</td>
</tr>
<tr>
<td id="L7068" class="blob-num js-line-number" data-line-number="7068"></td>
<td id="LC7068" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7069" class="blob-num js-line-number" data-line-number="7069"></td>
<td id="LC7069" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L7070" class="blob-num js-line-number" data-line-number="7070"></td>
<td id="LC7070" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7071" class="blob-num js-line-number" data-line-number="7071"></td>
<td id="LC7071" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7072" class="blob-num js-line-number" data-line-number="7072"></td>
<td id="LC7072" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-smi">type</span>.<span class="pl-c1">length</span> <span class="pl-k">-</span> <span class="pl-c1">1</span>; i <span class="pl-k">>=</span> <span class="pl-c1">0</span>; i<span class="pl-k">--</span>) {</td>
</tr>
<tr>
<td id="L7073" class="blob-num js-line-number" data-line-number="7073"></td>
<td id="LC7073" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> undefined or not, key should match</span></td>
</tr>
<tr>
<td id="L7074" class="blob-num js-line-number" data-line-number="7074"></td>
<td id="LC7074" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (type[i].<span class="pl-smi">orig</span> <span class="pl-k">===</span> callback <span class="pl-k">||</span> type[i].<span class="pl-smi">key</span> <span class="pl-k">===</span> callback) {</td>
</tr>
<tr>
<td id="L7075" class="blob-num js-line-number" data-line-number="7075"></td>
<td id="LC7075" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-smi">removeEventListener</span>) {</td>
</tr>
<tr>
<td id="L7076" class="blob-num js-line-number" data-line-number="7076"></td>
<td id="LC7076" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">removeEventListener</span>(name, type[i].<span class="pl-smi">func</span>, <span class="pl-c1">false</span>);</td>
</tr>
<tr>
<td id="L7077" class="blob-num js-line-number" data-line-number="7077"></td>
<td id="LC7077" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-smi">detachEvent</span>) {</td>
</tr>
<tr>
<td id="L7078" class="blob-num js-line-number" data-line-number="7078"></td>
<td id="LC7078" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">detachEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>on<span class="pl-pds">'</span></span><span class="pl-k">+</span>name, type[i].<span class="pl-smi">func</span>);</td>
</tr>
<tr>
<td id="L7079" class="blob-num js-line-number" data-line-number="7079"></td>
<td id="LC7079" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7080" class="blob-num js-line-number" data-line-number="7080"></td>
<td id="LC7080" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7081" class="blob-num js-line-number" data-line-number="7081"></td>
<td id="LC7081" class="blob-code blob-code-inner js-file-line"> type[i].<span class="pl-smi">orig</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7082" class="blob-num js-line-number" data-line-number="7082"></td>
<td id="LC7082" class="blob-code blob-code-inner js-file-line"> type[i].<span class="pl-smi">func</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7083" class="blob-num js-line-number" data-line-number="7083"></td>
<td id="LC7083" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">type</span>.<span class="pl-c1">splice</span>(i, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L7084" class="blob-num js-line-number" data-line-number="7084"></td>
<td id="LC7084" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7085" class="blob-num js-line-number" data-line-number="7085"></td>
<td id="LC7085" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If callback was passed we are done here, otherwise proceed</span></td>
</tr>
<tr>
<td id="L7086" class="blob-num js-line-number" data-line-number="7086"></td>
<td id="LC7086" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (callback <span class="pl-k">!==</span> undef) {</td>
</tr>
<tr>
<td id="L7087" class="blob-num js-line-number" data-line-number="7087"></td>
<td id="LC7087" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7088" class="blob-num js-line-number" data-line-number="7088"></td>
<td id="LC7088" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7089" class="blob-num js-line-number" data-line-number="7089"></td>
<td id="LC7089" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7090" class="blob-num js-line-number" data-line-number="7090"></td>
<td id="LC7090" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7091" class="blob-num js-line-number" data-line-number="7091"></td>
<td id="LC7091" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7092" class="blob-num js-line-number" data-line-number="7092"></td>
<td id="LC7092" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If event array got empty, remove it</span></td>
</tr>
<tr>
<td id="L7093" class="blob-num js-line-number" data-line-number="7093"></td>
<td id="LC7093" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">type</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L7094" class="blob-num js-line-number" data-line-number="7094"></td>
<td id="LC7094" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> eventhash[obj[uid]][name];</td>
</tr>
<tr>
<td id="L7095" class="blob-num js-line-number" data-line-number="7095"></td>
<td id="LC7095" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7096" class="blob-num js-line-number" data-line-number="7096"></td>
<td id="LC7096" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7097" class="blob-num js-line-number" data-line-number="7097"></td>
<td id="LC7097" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If mOxie registry has become empty, remove it</span></td>
</tr>
<tr>
<td id="L7098" class="blob-num js-line-number" data-line-number="7098"></td>
<td id="LC7098" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(eventhash[obj[uid]])) {</td>
</tr>
<tr>
<td id="L7099" class="blob-num js-line-number" data-line-number="7099"></td>
<td id="LC7099" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> eventhash[obj[uid]];</td>
</tr>
<tr>
<td id="L7100" class="blob-num js-line-number" data-line-number="7100"></td>
<td id="LC7100" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7101" class="blob-num js-line-number" data-line-number="7101"></td>
<td id="LC7101" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> IE doesn't let you remove DOM object property with - delete</span></td>
</tr>
<tr>
<td id="L7102" class="blob-num js-line-number" data-line-number="7102"></td>
<td id="LC7102" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7103" class="blob-num js-line-number" data-line-number="7103"></td>
<td id="LC7103" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> obj[uid];</td>
</tr>
<tr>
<td id="L7104" class="blob-num js-line-number" data-line-number="7104"></td>
<td id="LC7104" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(e) {</td>
</tr>
<tr>
<td id="L7105" class="blob-num js-line-number" data-line-number="7105"></td>
<td id="LC7105" class="blob-code blob-code-inner js-file-line"> obj[uid] <span class="pl-k">=</span> undef;</td>
</tr>
<tr>
<td id="L7106" class="blob-num js-line-number" data-line-number="7106"></td>
<td id="LC7106" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7107" class="blob-num js-line-number" data-line-number="7107"></td>
<td id="LC7107" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7108" class="blob-num js-line-number" data-line-number="7108"></td>
<td id="LC7108" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7109" class="blob-num js-line-number" data-line-number="7109"></td>
<td id="LC7109" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7110" class="blob-num js-line-number" data-line-number="7110"></td>
<td id="LC7110" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7111" class="blob-num js-line-number" data-line-number="7111"></td>
<td id="LC7111" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7112" class="blob-num js-line-number" data-line-number="7112"></td>
<td id="LC7112" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Remove all kind of events from the specified object</span></td>
</tr>
<tr>
<td id="L7113" class="blob-num js-line-number" data-line-number="7113"></td>
<td id="LC7113" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> </span></td>
</tr>
<tr>
<td id="L7114" class="blob-num js-line-number" data-line-number="7114"></td>
<td id="LC7114" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">removeAllEvents</span></span></td>
</tr>
<tr>
<td id="L7115" class="blob-num js-line-number" data-line-number="7115"></td>
<td id="LC7115" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@static</span></span></td>
</tr>
<tr>
<td id="L7116" class="blob-num js-line-number" data-line-number="7116"></td>
<td id="LC7116" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Object}</span> <span class="pl-smi">obj</span> DOM element to remove event listeners from.</span></td>
</tr>
<tr>
<td id="L7117" class="blob-num js-line-number" data-line-number="7117"></td>
<td id="LC7117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">[key]</span> unique key to match, when removing events.</span></td>
</tr>
<tr>
<td id="L7118" class="blob-num js-line-number" data-line-number="7118"></td>
<td id="LC7118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7119" class="blob-num js-line-number" data-line-number="7119"></td>
<td id="LC7119" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-en">removeAllEvents</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">obj</span>, <span class="pl-smi">key</span>) { </td>
</tr>
<tr>
<td id="L7120" class="blob-num js-line-number" data-line-number="7120"></td>
<td id="LC7120" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>obj <span class="pl-k">||</span> <span class="pl-k">!</span>obj[uid]) {</td>
</tr>
<tr>
<td id="L7121" class="blob-num js-line-number" data-line-number="7121"></td>
<td id="LC7121" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L7122" class="blob-num js-line-number" data-line-number="7122"></td>
<td id="LC7122" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7123" class="blob-num js-line-number" data-line-number="7123"></td>
<td id="LC7123" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7124" class="blob-num js-line-number" data-line-number="7124"></td>
<td id="LC7124" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(eventhash[obj[uid]], <span class="pl-k">function</span>(<span class="pl-smi">events</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L7125" class="blob-num js-line-number" data-line-number="7125"></td>
<td id="LC7125" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeEvent</span>(obj, name, key);</td>
</tr>
<tr>
<td id="L7126" class="blob-num js-line-number" data-line-number="7126"></td>
<td id="LC7126" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7127" class="blob-num js-line-number" data-line-number="7127"></td>
<td id="LC7127" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7128" class="blob-num js-line-number" data-line-number="7128"></td>
<td id="LC7128" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7129" class="blob-num js-line-number" data-line-number="7129"></td>
<td id="LC7129" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L7130" class="blob-num js-line-number" data-line-number="7130"></td>
<td id="LC7130" class="blob-code blob-code-inner js-file-line"> addEvent<span class="pl-k">:</span> addEvent,</td>
</tr>
<tr>
<td id="L7131" class="blob-num js-line-number" data-line-number="7131"></td>
<td id="LC7131" class="blob-code blob-code-inner js-file-line"> removeEvent<span class="pl-k">:</span> removeEvent,</td>
</tr>
<tr>
<td id="L7132" class="blob-num js-line-number" data-line-number="7132"></td>
<td id="LC7132" class="blob-code blob-code-inner js-file-line"> removeAllEvents<span class="pl-k">:</span> removeAllEvents</td>
</tr>
<tr>
<td id="L7133" class="blob-num js-line-number" data-line-number="7133"></td>
<td id="LC7133" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7134" class="blob-num js-line-number" data-line-number="7134"></td>
<td id="LC7134" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L7135" class="blob-num js-line-number" data-line-number="7135"></td>
<td id="LC7135" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7136" class="blob-num js-line-number" data-line-number="7136"></td>
<td id="LC7136" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/file/FileInput.js</span></td>
</tr>
<tr>
<td id="L7137" class="blob-num js-line-number" data-line-number="7137"></td>
<td id="LC7137" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7138" class="blob-num js-line-number" data-line-number="7138"></td>
<td id="LC7138" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7139" class="blob-num js-line-number" data-line-number="7139"></td>
<td id="LC7139" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileInput.js</span></td>
</tr>
<tr>
<td id="L7140" class="blob-num js-line-number" data-line-number="7140"></td>
<td id="LC7140" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7141" class="blob-num js-line-number" data-line-number="7141"></td>
<td id="LC7141" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L7142" class="blob-num js-line-number" data-line-number="7142"></td>
<td id="LC7142" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L7143" class="blob-num js-line-number" data-line-number="7143"></td>
<td id="LC7143" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7144" class="blob-num js-line-number" data-line-number="7144"></td>
<td id="LC7144" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L7145" class="blob-num js-line-number" data-line-number="7145"></td>
<td id="LC7145" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L7146" class="blob-num js-line-number" data-line-number="7146"></td>
<td id="LC7146" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7147" class="blob-num js-line-number" data-line-number="7147"></td>
<td id="LC7147" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7148" class="blob-num js-line-number" data-line-number="7148"></td>
<td id="LC7148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7149" class="blob-num js-line-number" data-line-number="7149"></td>
<td id="LC7149" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/file/FileInput</span></td>
</tr>
<tr>
<td id="L7150" class="blob-num js-line-number" data-line-number="7150"></td>
<td id="LC7150" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L7151" class="blob-num js-line-number" data-line-number="7151"></td>
<td id="LC7151" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7152" class="blob-num js-line-number" data-line-number="7152"></td>
<td id="LC7152" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/file/FileInput<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L7153" class="blob-num js-line-number" data-line-number="7153"></td>
<td id="LC7153" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7154" class="blob-num js-line-number" data-line-number="7154"></td>
<td id="LC7154" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7155" class="blob-num js-line-number" data-line-number="7155"></td>
<td id="LC7155" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7156" class="blob-num js-line-number" data-line-number="7156"></td>
<td id="LC7156" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7157" class="blob-num js-line-number" data-line-number="7157"></td>
<td id="LC7157" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Events<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7158" class="blob-num js-line-number" data-line-number="7158"></td>
<td id="LC7158" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7159" class="blob-num js-line-number" data-line-number="7159"></td>
<td id="LC7159" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L7160" class="blob-num js-line-number" data-line-number="7160"></td>
<td id="LC7160" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">File</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Events</span>, <span class="pl-smi">Mime</span>, <span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L7161" class="blob-num js-line-number" data-line-number="7161"></td>
<td id="LC7161" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7162" class="blob-num js-line-number" data-line-number="7162"></td>
<td id="LC7162" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileInput</span>() {</td>
</tr>
<tr>
<td id="L7163" class="blob-num js-line-number" data-line-number="7163"></td>
<td id="LC7163" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _options, _browseBtnZIndex; <span class="pl-c"><span class="pl-c">//</span> save original z-index</span></td>
</tr>
<tr>
<td id="L7164" class="blob-num js-line-number" data-line-number="7164"></td>
<td id="LC7164" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7165" class="blob-num js-line-number" data-line-number="7165"></td>
<td id="LC7165" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L7166" class="blob-num js-line-number" data-line-number="7166"></td>
<td id="LC7166" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L7167" class="blob-num js-line-number" data-line-number="7167"></td>
<td id="LC7167" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-smi">comp</span>.<span class="pl-en">getRuntime</span>(), input, shimContainer, mimes, browseButton, zIndex, top;</td>
</tr>
<tr>
<td id="L7168" class="blob-num js-line-number" data-line-number="7168"></td>
<td id="LC7168" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7169" class="blob-num js-line-number" data-line-number="7169"></td>
<td id="LC7169" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> options;</td>
</tr>
<tr>
<td id="L7170" class="blob-num js-line-number" data-line-number="7170"></td>
<td id="LC7170" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7171" class="blob-num js-line-number" data-line-number="7171"></td>
<td id="LC7171" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> figure out accept string</span></td>
</tr>
<tr>
<td id="L7172" class="blob-num js-line-number" data-line-number="7172"></td>
<td id="LC7172" class="blob-code blob-code-inner js-file-line"> mimes <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">extList2mimes</span>(<span class="pl-smi">_options</span>.<span class="pl-c1">accept</span>, <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>filter_by_extension<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L7173" class="blob-num js-line-number" data-line-number="7173"></td>
<td id="LC7173" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7174" class="blob-num js-line-number" data-line-number="7174"></td>
<td id="LC7174" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>();</td>
</tr>
<tr>
<td id="L7175" class="blob-num js-line-number" data-line-number="7175"></td>
<td id="LC7175" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7176" class="blob-num js-line-number" data-line-number="7176"></td>
<td id="LC7176" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><input id="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">I</span>.<span class="pl-smi">uid</span> <span class="pl-k">+</span><span class="pl-s"><span class="pl-pds">'</span>" type="file" style="font-size:999px;opacity:0;"<span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L7177" class="blob-num js-line-number" data-line-number="7177"></td>
<td id="LC7177" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">_options</span>.<span class="pl-c1">multiple</span> <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_multiple<span class="pl-pds">'</span></span>) <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>multiple<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> </td>
</tr>
<tr>
<td id="L7178" class="blob-num js-line-number" data-line-number="7178"></td>
<td id="LC7178" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">_options</span>.<span class="pl-smi">directory</span> <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_folder<span class="pl-pds">'</span></span>) <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>webkitdirectory directory<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-c"><span class="pl-c">//</span> Chrome 11+</span></td>
</tr>
<tr>
<td id="L7179" class="blob-num js-line-number" data-line-number="7179"></td>
<td id="LC7179" class="blob-code blob-code-inner js-file-line"> (mimes <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span> accept="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">mimes</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>,<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>"<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span> /><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7180" class="blob-num js-line-number" data-line-number="7180"></td>
<td id="LC7180" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7181" class="blob-num js-line-number" data-line-number="7181"></td>
<td id="LC7181" class="blob-code blob-code-inner js-file-line"> input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7182" class="blob-num js-line-number" data-line-number="7182"></td>
<td id="LC7182" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7183" class="blob-num js-line-number" data-line-number="7183"></td>
<td id="LC7183" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> prepare file input to be placed underneath the browse_button element</span></td>
</tr>
<tr>
<td id="L7184" class="blob-num js-line-number" data-line-number="7184"></td>
<td id="LC7184" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">input</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L7185" class="blob-num js-line-number" data-line-number="7185"></td>
<td id="LC7185" class="blob-code blob-code-inner js-file-line"> position<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>absolute<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L7186" class="blob-num js-line-number" data-line-number="7186"></td>
<td id="LC7186" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L7187" class="blob-num js-line-number" data-line-number="7187"></td>
<td id="LC7187" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L7188" class="blob-num js-line-number" data-line-number="7188"></td>
<td id="LC7188" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L7189" class="blob-num js-line-number" data-line-number="7189"></td>
<td id="LC7189" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L7190" class="blob-num js-line-number" data-line-number="7190"></td>
<td id="LC7190" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7191" class="blob-num js-line-number" data-line-number="7191"></td>
<td id="LC7191" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7192" class="blob-num js-line-number" data-line-number="7192"></td>
<td id="LC7192" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7193" class="blob-num js-line-number" data-line-number="7193"></td>
<td id="LC7193" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L7194" class="blob-num js-line-number" data-line-number="7194"></td>
<td id="LC7194" class="blob-code blob-code-inner js-file-line"> _browseBtnZIndex <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>z-index<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>auto<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7195" class="blob-num js-line-number" data-line-number="7195"></td>
<td id="LC7195" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7196" class="blob-num js-line-number" data-line-number="7196"></td>
<td id="LC7196" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Route click event to the input[type=file] element for browsers that support such behavior</span></td>
</tr>
<tr>
<td id="L7197" class="blob-num js-line-number" data-line-number="7197"></td>
<td id="LC7197" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L7198" class="blob-num js-line-number" data-line-number="7198"></td>
<td id="LC7198" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>position<span class="pl-pds">'</span></span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>static<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L7199" class="blob-num js-line-number" data-line-number="7199"></td>
<td id="LC7199" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">style</span>.<span class="pl-smi">position</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>relative<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7200" class="blob-num js-line-number" data-line-number="7200"></td>
<td id="LC7200" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7201" class="blob-num js-line-number" data-line-number="7201"></td>
<td id="LC7201" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7202" class="blob-num js-line-number" data-line-number="7202"></td>
<td id="LC7202" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>click<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7203" class="blob-num js-line-number" data-line-number="7203"></td>
<td id="LC7203" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7204" class="blob-num js-line-number" data-line-number="7204"></td>
<td id="LC7204" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (input <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">input</span>.<span class="pl-c1">disabled</span>) { <span class="pl-c"><span class="pl-c">//</span> for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file]</span></td>
</tr>
<tr>
<td id="L7205" class="blob-num js-line-number" data-line-number="7205"></td>
<td id="LC7205" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">click</span>();</td>
</tr>
<tr>
<td id="L7206" class="blob-num js-line-number" data-line-number="7206"></td>
<td id="LC7206" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7207" class="blob-num js-line-number" data-line-number="7207"></td>
<td id="LC7207" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L7208" class="blob-num js-line-number" data-line-number="7208"></td>
<td id="LC7208" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7209" class="blob-num js-line-number" data-line-number="7209"></td>
<td id="LC7209" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7210" class="blob-num js-line-number" data-line-number="7210"></td>
<td id="LC7210" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Refresh<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7211" class="blob-num js-line-number" data-line-number="7211"></td>
<td id="LC7211" class="blob-code blob-code-inner js-file-line"> zIndex <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(_browseBtnZIndex, <span class="pl-c1">10</span>) <span class="pl-k">||</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L7212" class="blob-num js-line-number" data-line-number="7212"></td>
<td id="LC7212" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7213" class="blob-num js-line-number" data-line-number="7213"></td>
<td id="LC7213" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">browse_button</span>).<span class="pl-c1">style</span>.<span class="pl-c1">zIndex</span> <span class="pl-k">=</span> zIndex;</td>
</tr>
<tr>
<td id="L7214" class="blob-num js-line-number" data-line-number="7214"></td>
<td id="LC7214" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShimContainer</span>().<span class="pl-c1">style</span>.<span class="pl-c1">zIndex</span> <span class="pl-k">=</span> zIndex <span class="pl-k">-</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L7215" class="blob-num js-line-number" data-line-number="7215"></td>
<td id="LC7215" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7216" class="blob-num js-line-number" data-line-number="7216"></td>
<td id="LC7216" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7217" class="blob-num js-line-number" data-line-number="7217"></td>
<td id="LC7217" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7218" class="blob-num js-line-number" data-line-number="7218"></td>
<td id="LC7218" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> Since we have to place input[type=file] on top of the browse_button for some browsers,</span></td>
</tr>
<tr>
<td id="L7219" class="blob-num js-line-number" data-line-number="7219"></td>
<td id="LC7219" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> browse_button loses interactivity, so we restore it here <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7220" class="blob-num js-line-number" data-line-number="7220"></td>
<td id="LC7220" class="blob-code blob-code-inner js-file-line"> top <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>) <span class="pl-k">?</span> browseButton <span class="pl-k">:</span> shimContainer;</td>
</tr>
<tr>
<td id="L7221" class="blob-num js-line-number" data-line-number="7221"></td>
<td id="LC7221" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7222" class="blob-num js-line-number" data-line-number="7222"></td>
<td id="LC7222" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(top, <span class="pl-s"><span class="pl-pds">'</span>mouseover<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7223" class="blob-num js-line-number" data-line-number="7223"></td>
<td id="LC7223" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mouseenter<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7224" class="blob-num js-line-number" data-line-number="7224"></td>
<td id="LC7224" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7225" class="blob-num js-line-number" data-line-number="7225"></td>
<td id="LC7225" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7226" class="blob-num js-line-number" data-line-number="7226"></td>
<td id="LC7226" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(top, <span class="pl-s"><span class="pl-pds">'</span>mouseout<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7227" class="blob-num js-line-number" data-line-number="7227"></td>
<td id="LC7227" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mouseleave<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7228" class="blob-num js-line-number" data-line-number="7228"></td>
<td id="LC7228" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7229" class="blob-num js-line-number" data-line-number="7229"></td>
<td id="LC7229" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7230" class="blob-num js-line-number" data-line-number="7230"></td>
<td id="LC7230" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(top, <span class="pl-s"><span class="pl-pds">'</span>mousedown<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7231" class="blob-num js-line-number" data-line-number="7231"></td>
<td id="LC7231" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mousedown<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7232" class="blob-num js-line-number" data-line-number="7232"></td>
<td id="LC7232" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7233" class="blob-num js-line-number" data-line-number="7233"></td>
<td id="LC7233" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7234" class="blob-num js-line-number" data-line-number="7234"></td>
<td id="LC7234" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(<span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">container</span>), <span class="pl-s"><span class="pl-pds">'</span>mouseup<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7235" class="blob-num js-line-number" data-line-number="7235"></td>
<td id="LC7235" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mouseup<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7236" class="blob-num js-line-number" data-line-number="7236"></td>
<td id="LC7236" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7237" class="blob-num js-line-number" data-line-number="7237"></td>
<td id="LC7237" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7238" class="blob-num js-line-number" data-line-number="7238"></td>
<td id="LC7238" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> it shouldn't be possible to tab into the hidden element</span></td>
</tr>
<tr>
<td id="L7239" class="blob-num js-line-number" data-line-number="7239"></td>
<td id="LC7239" class="blob-code blob-code-inner js-file-line"> (<span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>) <span class="pl-k">?</span> input <span class="pl-k">:</span> browseButton).<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>tabindex<span class="pl-pds">'</span></span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L7240" class="blob-num js-line-number" data-line-number="7240"></td>
<td id="LC7240" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7241" class="blob-num js-line-number" data-line-number="7241"></td>
<td id="LC7241" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-en">onchange</span> <span class="pl-k">=</span> <span class="pl-k">function</span> <span class="pl-en">onChange</span>() { <span class="pl-c"><span class="pl-c">//</span> there should be only one handler for this</span></td>
</tr>
<tr>
<td id="L7242" class="blob-num js-line-number" data-line-number="7242"></td>
<td id="LC7242" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L7243" class="blob-num js-line-number" data-line-number="7243"></td>
<td id="LC7243" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7244" class="blob-num js-line-number" data-line-number="7244"></td>
<td id="LC7244" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-c1">this</span>.<span class="pl-smi">files</span>, <span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L7245" class="blob-num js-line-number" data-line-number="7245"></td>
<td id="LC7245" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> relativePath <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7246" class="blob-num js-line-number" data-line-number="7246"></td>
<td id="LC7246" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7247" class="blob-num js-line-number" data-line-number="7247"></td>
<td id="LC7247" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_options</span>.<span class="pl-smi">directory</span>) {</td>
</tr>
<tr>
<td id="L7248" class="blob-num js-line-number" data-line-number="7248"></td>
<td id="LC7248" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> folders are represented by dots, filter them out (Chrome 11+)</span></td>
</tr>
<tr>
<td id="L7249" class="blob-num js-line-number" data-line-number="7249"></td>
<td id="LC7249" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">file</span>.<span class="pl-c1">name</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">"</span>.<span class="pl-pds">"</span></span>) {</td>
</tr>
<tr>
<td id="L7250" class="blob-num js-line-number" data-line-number="7250"></td>
<td id="LC7250" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if it looks like a folder...</span></td>
</tr>
<tr>
<td id="L7251" class="blob-num js-line-number" data-line-number="7251"></td>
<td id="LC7251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L7252" class="blob-num js-line-number" data-line-number="7252"></td>
<td id="LC7252" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7253" class="blob-num js-line-number" data-line-number="7253"></td>
<td id="LC7253" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7254" class="blob-num js-line-number" data-line-number="7254"></td>
<td id="LC7254" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7255" class="blob-num js-line-number" data-line-number="7255"></td>
<td id="LC7255" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">file</span>.<span class="pl-smi">webkitRelativePath</span>) {</td>
</tr>
<tr>
<td id="L7256" class="blob-num js-line-number" data-line-number="7256"></td>
<td id="LC7256" class="blob-code blob-code-inner js-file-line"> relativePath <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>/<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">file</span>.<span class="pl-smi">webkitRelativePath</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-cce">\/</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7257" class="blob-num js-line-number" data-line-number="7257"></td>
<td id="LC7257" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7258" class="blob-num js-line-number" data-line-number="7258"></td>
<td id="LC7258" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7259" class="blob-num js-line-number" data-line-number="7259"></td>
<td id="LC7259" class="blob-code blob-code-inner js-file-line"> file <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>, file);</td>
</tr>
<tr>
<td id="L7260" class="blob-num js-line-number" data-line-number="7260"></td>
<td id="LC7260" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">file</span>.<span class="pl-smi">relativePath</span> <span class="pl-k">=</span> relativePath;</td>
</tr>
<tr>
<td id="L7261" class="blob-num js-line-number" data-line-number="7261"></td>
<td id="LC7261" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7262" class="blob-num js-line-number" data-line-number="7262"></td>
<td id="LC7262" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span>.<span class="pl-c1">push</span>(file);</td>
</tr>
<tr>
<td id="L7263" class="blob-num js-line-number" data-line-number="7263"></td>
<td id="LC7263" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7264" class="blob-num js-line-number" data-line-number="7264"></td>
<td id="LC7264" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7265" class="blob-num js-line-number" data-line-number="7265"></td>
<td id="LC7265" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> clearing the value enables the user to select the same file again if they want to</span></td>
</tr>
<tr>
<td id="L7266" class="blob-num js-line-number" data-line-number="7266"></td>
<td id="LC7266" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>IEMobile<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L7267" class="blob-num js-line-number" data-line-number="7267"></td>
<td id="LC7267" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">value</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7268" class="blob-num js-line-number" data-line-number="7268"></td>
<td id="LC7268" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7269" class="blob-num js-line-number" data-line-number="7269"></td>
<td id="LC7269" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> in IE input[type="file"] is read-only so the only way to reset it is to re-insert it</span></td>
</tr>
<tr>
<td id="L7270" class="blob-num js-line-number" data-line-number="7270"></td>
<td id="LC7270" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> clone <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-c1">cloneNode</span>(<span class="pl-c1">true</span>);</td>
</tr>
<tr>
<td id="L7271" class="blob-num js-line-number" data-line-number="7271"></td>
<td id="LC7271" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">replaceChild</span>(clone, <span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L7272" class="blob-num js-line-number" data-line-number="7272"></td>
<td id="LC7272" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">clone</span>.<span class="pl-smi">onchange</span> <span class="pl-k">=</span> onChange;</td>
</tr>
<tr>
<td id="L7273" class="blob-num js-line-number" data-line-number="7273"></td>
<td id="LC7273" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7274" class="blob-num js-line-number" data-line-number="7274"></td>
<td id="LC7274" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7275" class="blob-num js-line-number" data-line-number="7275"></td>
<td id="LC7275" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">comp</span>.<span class="pl-smi">files</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L7276" class="blob-num js-line-number" data-line-number="7276"></td>
<td id="LC7276" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>change<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7277" class="blob-num js-line-number" data-line-number="7277"></td>
<td id="LC7277" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7278" class="blob-num js-line-number" data-line-number="7278"></td>
<td id="LC7278" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7279" class="blob-num js-line-number" data-line-number="7279"></td>
<td id="LC7279" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7280" class="blob-num js-line-number" data-line-number="7280"></td>
<td id="LC7280" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> ready event is perfectly asynchronous</span></td>
</tr>
<tr>
<td id="L7281" class="blob-num js-line-number" data-line-number="7281"></td>
<td id="LC7281" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>({</td>
</tr>
<tr>
<td id="L7282" class="blob-num js-line-number" data-line-number="7282"></td>
<td id="LC7282" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L7283" class="blob-num js-line-number" data-line-number="7283"></td>
<td id="LC7283" class="blob-code blob-code-inner js-file-line"> async<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L7284" class="blob-num js-line-number" data-line-number="7284"></td>
<td id="LC7284" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7285" class="blob-num js-line-number" data-line-number="7285"></td>
<td id="LC7285" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7286" class="blob-num js-line-number" data-line-number="7286"></td>
<td id="LC7286" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7287" class="blob-num js-line-number" data-line-number="7287"></td>
<td id="LC7287" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7288" class="blob-num js-line-number" data-line-number="7288"></td>
<td id="LC7288" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7289" class="blob-num js-line-number" data-line-number="7289"></td>
<td id="LC7289" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7290" class="blob-num js-line-number" data-line-number="7290"></td>
<td id="LC7290" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setOption</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L7291" class="blob-num js-line-number" data-line-number="7291"></td>
<td id="LC7291" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L7292" class="blob-num js-line-number" data-line-number="7292"></td>
<td id="LC7292" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7293" class="blob-num js-line-number" data-line-number="7293"></td>
<td id="LC7293" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7294" class="blob-num js-line-number" data-line-number="7294"></td>
<td id="LC7294" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (name) {</td>
</tr>
<tr>
<td id="L7295" class="blob-num js-line-number" data-line-number="7295"></td>
<td id="LC7295" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L7296" class="blob-num js-line-number" data-line-number="7296"></td>
<td id="LC7296" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value) {</td>
</tr>
<tr>
<td id="L7297" class="blob-num js-line-number" data-line-number="7297"></td>
<td id="LC7297" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mimes <span class="pl-k">=</span> <span class="pl-smi">value</span>.<span class="pl-smi">mimes</span> <span class="pl-k">||</span> <span class="pl-smi">Mime</span>.<span class="pl-en">extList2mimes</span>(value, <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>filter_by_extension<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L7298" class="blob-num js-line-number" data-line-number="7298"></td>
<td id="LC7298" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>, <span class="pl-smi">mimes</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>,<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L7299" class="blob-num js-line-number" data-line-number="7299"></td>
<td id="LC7299" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7300" class="blob-num js-line-number" data-line-number="7300"></td>
<td id="LC7300" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">removeAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7301" class="blob-num js-line-number" data-line-number="7301"></td>
<td id="LC7301" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7302" class="blob-num js-line-number" data-line-number="7302"></td>
<td id="LC7302" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7303" class="blob-num js-line-number" data-line-number="7303"></td>
<td id="LC7303" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7304" class="blob-num js-line-number" data-line-number="7304"></td>
<td id="LC7304" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>directory<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L7305" class="blob-num js-line-number" data-line-number="7305"></td>
<td id="LC7305" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_folder<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L7306" class="blob-num js-line-number" data-line-number="7306"></td>
<td id="LC7306" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>directory<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7307" class="blob-num js-line-number" data-line-number="7307"></td>
<td id="LC7307" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>webkitdirectory<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7308" class="blob-num js-line-number" data-line-number="7308"></td>
<td id="LC7308" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7309" class="blob-num js-line-number" data-line-number="7309"></td>
<td id="LC7309" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">removeAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>directory<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7310" class="blob-num js-line-number" data-line-number="7310"></td>
<td id="LC7310" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">removeAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>webkitdirectory<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7311" class="blob-num js-line-number" data-line-number="7311"></td>
<td id="LC7311" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7312" class="blob-num js-line-number" data-line-number="7312"></td>
<td id="LC7312" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7313" class="blob-num js-line-number" data-line-number="7313"></td>
<td id="LC7313" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7314" class="blob-num js-line-number" data-line-number="7314"></td>
<td id="LC7314" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>multiple<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L7315" class="blob-num js-line-number" data-line-number="7315"></td>
<td id="LC7315" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_multiple<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L7316" class="blob-num js-line-number" data-line-number="7316"></td>
<td id="LC7316" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>multiple<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7317" class="blob-num js-line-number" data-line-number="7317"></td>
<td id="LC7317" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7318" class="blob-num js-line-number" data-line-number="7318"></td>
<td id="LC7318" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">removeAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>multiple<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7319" class="blob-num js-line-number" data-line-number="7319"></td>
<td id="LC7319" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7320" class="blob-num js-line-number" data-line-number="7320"></td>
<td id="LC7320" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7321" class="blob-num js-line-number" data-line-number="7321"></td>
<td id="LC7321" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7322" class="blob-num js-line-number" data-line-number="7322"></td>
<td id="LC7322" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7323" class="blob-num js-line-number" data-line-number="7323"></td>
<td id="LC7323" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7324" class="blob-num js-line-number" data-line-number="7324"></td>
<td id="LC7324" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7325" class="blob-num js-line-number" data-line-number="7325"></td>
<td id="LC7325" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">disable</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">state</span>) {</td>
</tr>
<tr>
<td id="L7326" class="blob-num js-line-number" data-line-number="7326"></td>
<td id="LC7326" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>(), input;</td>
</tr>
<tr>
<td id="L7327" class="blob-num js-line-number" data-line-number="7327"></td>
<td id="LC7327" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7328" class="blob-num js-line-number" data-line-number="7328"></td>
<td id="LC7328" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>))) {</td>
</tr>
<tr>
<td id="L7329" class="blob-num js-line-number" data-line-number="7329"></td>
<td id="LC7329" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">disabled</span> <span class="pl-k">=</span> <span class="pl-k">!!</span>state;</td>
</tr>
<tr>
<td id="L7330" class="blob-num js-line-number" data-line-number="7330"></td>
<td id="LC7330" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7331" class="blob-num js-line-number" data-line-number="7331"></td>
<td id="LC7331" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7332" class="blob-num js-line-number" data-line-number="7332"></td>
<td id="LC7332" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7333" class="blob-num js-line-number" data-line-number="7333"></td>
<td id="LC7333" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7334" class="blob-num js-line-number" data-line-number="7334"></td>
<td id="LC7334" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L7335" class="blob-num js-line-number" data-line-number="7335"></td>
<td id="LC7335" class="blob-code blob-code-inner js-file-line"> , shim <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShim</span>()</td>
</tr>
<tr>
<td id="L7336" class="blob-num js-line-number" data-line-number="7336"></td>
<td id="LC7336" class="blob-code blob-code-inner js-file-line"> , shimContainer <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>()</td>
</tr>
<tr>
<td id="L7337" class="blob-num js-line-number" data-line-number="7337"></td>
<td id="LC7337" class="blob-code blob-code-inner js-file-line"> , container <span class="pl-k">=</span> _options <span class="pl-k">&&</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">container</span>)</td>
</tr>
<tr>
<td id="L7338" class="blob-num js-line-number" data-line-number="7338"></td>
<td id="LC7338" class="blob-code blob-code-inner js-file-line"> , browseButton <span class="pl-k">=</span> _options <span class="pl-k">&&</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">browse_button</span>)</td>
</tr>
<tr>
<td id="L7339" class="blob-num js-line-number" data-line-number="7339"></td>
<td id="LC7339" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L7340" class="blob-num js-line-number" data-line-number="7340"></td>
<td id="LC7340" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7341" class="blob-num js-line-number" data-line-number="7341"></td>
<td id="LC7341" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (container) {</td>
</tr>
<tr>
<td id="L7342" class="blob-num js-line-number" data-line-number="7342"></td>
<td id="LC7342" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(container, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7343" class="blob-num js-line-number" data-line-number="7343"></td>
<td id="LC7343" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7344" class="blob-num js-line-number" data-line-number="7344"></td>
<td id="LC7344" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7345" class="blob-num js-line-number" data-line-number="7345"></td>
<td id="LC7345" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (browseButton) {</td>
</tr>
<tr>
<td id="L7346" class="blob-num js-line-number" data-line-number="7346"></td>
<td id="LC7346" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(browseButton, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7347" class="blob-num js-line-number" data-line-number="7347"></td>
<td id="LC7347" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">style</span>.<span class="pl-c1">zIndex</span> <span class="pl-k">=</span> _browseBtnZIndex; <span class="pl-c"><span class="pl-c">//</span> reset to original value</span></td>
</tr>
<tr>
<td id="L7348" class="blob-num js-line-number" data-line-number="7348"></td>
<td id="LC7348" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7349" class="blob-num js-line-number" data-line-number="7349"></td>
<td id="LC7349" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7350" class="blob-num js-line-number" data-line-number="7350"></td>
<td id="LC7350" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (shimContainer) {</td>
</tr>
<tr>
<td id="L7351" class="blob-num js-line-number" data-line-number="7351"></td>
<td id="LC7351" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(shimContainer, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7352" class="blob-num js-line-number" data-line-number="7352"></td>
<td id="LC7352" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7353" class="blob-num js-line-number" data-line-number="7353"></td>
<td id="LC7353" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7354" class="blob-num js-line-number" data-line-number="7354"></td>
<td id="LC7354" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7355" class="blob-num js-line-number" data-line-number="7355"></td>
<td id="LC7355" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shim</span>.<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7356" class="blob-num js-line-number" data-line-number="7356"></td>
<td id="LC7356" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7357" class="blob-num js-line-number" data-line-number="7357"></td>
<td id="LC7357" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> shimContainer <span class="pl-k">=</span> container <span class="pl-k">=</span> browseButton <span class="pl-k">=</span> shim <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7358" class="blob-num js-line-number" data-line-number="7358"></td>
<td id="LC7358" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7359" class="blob-num js-line-number" data-line-number="7359"></td>
<td id="LC7359" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7360" class="blob-num js-line-number" data-line-number="7360"></td>
<td id="LC7360" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7361" class="blob-num js-line-number" data-line-number="7361"></td>
<td id="LC7361" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7362" class="blob-num js-line-number" data-line-number="7362"></td>
<td id="LC7362" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileInput</span> <span class="pl-k">=</span> FileInput);</td>
</tr>
<tr>
<td id="L7363" class="blob-num js-line-number" data-line-number="7363"></td>
<td id="LC7363" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L7364" class="blob-num js-line-number" data-line-number="7364"></td>
<td id="LC7364" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7365" class="blob-num js-line-number" data-line-number="7365"></td>
<td id="LC7365" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/file/FileDrop.js</span></td>
</tr>
<tr>
<td id="L7366" class="blob-num js-line-number" data-line-number="7366"></td>
<td id="LC7366" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7367" class="blob-num js-line-number" data-line-number="7367"></td>
<td id="LC7367" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7368" class="blob-num js-line-number" data-line-number="7368"></td>
<td id="LC7368" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileDrop.js</span></td>
</tr>
<tr>
<td id="L7369" class="blob-num js-line-number" data-line-number="7369"></td>
<td id="LC7369" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7370" class="blob-num js-line-number" data-line-number="7370"></td>
<td id="LC7370" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L7371" class="blob-num js-line-number" data-line-number="7371"></td>
<td id="LC7371" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L7372" class="blob-num js-line-number" data-line-number="7372"></td>
<td id="LC7372" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7373" class="blob-num js-line-number" data-line-number="7373"></td>
<td id="LC7373" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L7374" class="blob-num js-line-number" data-line-number="7374"></td>
<td id="LC7374" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L7375" class="blob-num js-line-number" data-line-number="7375"></td>
<td id="LC7375" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7376" class="blob-num js-line-number" data-line-number="7376"></td>
<td id="LC7376" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7377" class="blob-num js-line-number" data-line-number="7377"></td>
<td id="LC7377" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7378" class="blob-num js-line-number" data-line-number="7378"></td>
<td id="LC7378" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/file/FileDrop</span></td>
</tr>
<tr>
<td id="L7379" class="blob-num js-line-number" data-line-number="7379"></td>
<td id="LC7379" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L7380" class="blob-num js-line-number" data-line-number="7380"></td>
<td id="LC7380" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7381" class="blob-num js-line-number" data-line-number="7381"></td>
<td id="LC7381" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/file/FileDrop<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L7382" class="blob-num js-line-number" data-line-number="7382"></td>
<td id="LC7382" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7383" class="blob-num js-line-number" data-line-number="7383"></td>
<td id="LC7383" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>moxie/file/File<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L7384" class="blob-num js-line-number" data-line-number="7384"></td>
<td id="LC7384" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7385" class="blob-num js-line-number" data-line-number="7385"></td>
<td id="LC7385" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7386" class="blob-num js-line-number" data-line-number="7386"></td>
<td id="LC7386" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Events<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7387" class="blob-num js-line-number" data-line-number="7387"></td>
<td id="LC7387" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L7388" class="blob-num js-line-number" data-line-number="7388"></td>
<td id="LC7388" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">File</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Events</span>, <span class="pl-smi">Mime</span>) {</td>
</tr>
<tr>
<td id="L7389" class="blob-num js-line-number" data-line-number="7389"></td>
<td id="LC7389" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7390" class="blob-num js-line-number" data-line-number="7390"></td>
<td id="LC7390" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileDrop</span>() {</td>
</tr>
<tr>
<td id="L7391" class="blob-num js-line-number" data-line-number="7391"></td>
<td id="LC7391" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _files <span class="pl-k">=</span> [], _allowedExts <span class="pl-k">=</span> [], _options, _ruid;</td>
</tr>
<tr>
<td id="L7392" class="blob-num js-line-number" data-line-number="7392"></td>
<td id="LC7392" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7393" class="blob-num js-line-number" data-line-number="7393"></td>
<td id="LC7393" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L7394" class="blob-num js-line-number" data-line-number="7394"></td>
<td id="LC7394" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L7395" class="blob-num js-line-number" data-line-number="7395"></td>
<td id="LC7395" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, dropZone;</td>
</tr>
<tr>
<td id="L7396" class="blob-num js-line-number" data-line-number="7396"></td>
<td id="LC7396" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7397" class="blob-num js-line-number" data-line-number="7397"></td>
<td id="LC7397" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> options;</td>
</tr>
<tr>
<td id="L7398" class="blob-num js-line-number" data-line-number="7398"></td>
<td id="LC7398" class="blob-code blob-code-inner js-file-line"> _ruid <span class="pl-k">=</span> <span class="pl-smi">comp</span>.<span class="pl-smi">ruid</span>; <span class="pl-c"><span class="pl-c">//</span> every dropped-in file should have a reference to the runtime</span></td>
</tr>
<tr>
<td id="L7399" class="blob-num js-line-number" data-line-number="7399"></td>
<td id="LC7399" class="blob-code blob-code-inner js-file-line"> _allowedExts <span class="pl-k">=</span> <span class="pl-en">_extractExts</span>(<span class="pl-smi">_options</span>.<span class="pl-c1">accept</span>);</td>
</tr>
<tr>
<td id="L7400" class="blob-num js-line-number" data-line-number="7400"></td>
<td id="LC7400" class="blob-code blob-code-inner js-file-line"> dropZone <span class="pl-k">=</span> <span class="pl-smi">_options</span>.<span class="pl-smi">container</span>;</td>
</tr>
<tr>
<td id="L7401" class="blob-num js-line-number" data-line-number="7401"></td>
<td id="LC7401" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7402" class="blob-num js-line-number" data-line-number="7402"></td>
<td id="LC7402" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>dragover<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7403" class="blob-num js-line-number" data-line-number="7403"></td>
<td id="LC7403" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-en">_hasFiles</span>(e)) {</td>
</tr>
<tr>
<td id="L7404" class="blob-num js-line-number" data-line-number="7404"></td>
<td id="LC7404" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L7405" class="blob-num js-line-number" data-line-number="7405"></td>
<td id="LC7405" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7406" class="blob-num js-line-number" data-line-number="7406"></td>
<td id="LC7406" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L7407" class="blob-num js-line-number" data-line-number="7407"></td>
<td id="LC7407" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">dropEffect</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>copy<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7408" class="blob-num js-line-number" data-line-number="7408"></td>
<td id="LC7408" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7409" class="blob-num js-line-number" data-line-number="7409"></td>
<td id="LC7409" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7410" class="blob-num js-line-number" data-line-number="7410"></td>
<td id="LC7410" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>drop<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7411" class="blob-num js-line-number" data-line-number="7411"></td>
<td id="LC7411" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-en">_hasFiles</span>(e)) {</td>
</tr>
<tr>
<td id="L7412" class="blob-num js-line-number" data-line-number="7412"></td>
<td id="LC7412" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L7413" class="blob-num js-line-number" data-line-number="7413"></td>
<td id="LC7413" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7414" class="blob-num js-line-number" data-line-number="7414"></td>
<td id="LC7414" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L7415" class="blob-num js-line-number" data-line-number="7415"></td>
<td id="LC7415" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7416" class="blob-num js-line-number" data-line-number="7416"></td>
<td id="LC7416" class="blob-code blob-code-inner js-file-line"> _files <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L7417" class="blob-num js-line-number" data-line-number="7417"></td>
<td id="LC7417" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7418" class="blob-num js-line-number" data-line-number="7418"></td>
<td id="LC7418" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Chrome 21+ accepts folders via Drag'n'Drop</span></td>
</tr>
<tr>
<td id="L7419" class="blob-num js-line-number" data-line-number="7419"></td>
<td id="LC7419" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">items</span> <span class="pl-k">&&</span> <span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">items</span>[<span class="pl-c1">0</span>].<span class="pl-smi">webkitGetAsEntry</span>) {</td>
</tr>
<tr>
<td id="L7420" class="blob-num js-line-number" data-line-number="7420"></td>
<td id="LC7420" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_readItems</span>(<span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">items</span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7421" class="blob-num js-line-number" data-line-number="7421"></td>
<td id="LC7421" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> _files;</td>
</tr>
<tr>
<td id="L7422" class="blob-num js-line-number" data-line-number="7422"></td>
<td id="LC7422" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>drop<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L7423" class="blob-num js-line-number" data-line-number="7423"></td>
<td id="LC7423" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7424" class="blob-num js-line-number" data-line-number="7424"></td>
<td id="LC7424" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7425" class="blob-num js-line-number" data-line-number="7425"></td>
<td id="LC7425" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">files</span>, <span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L7426" class="blob-num js-line-number" data-line-number="7426"></td>
<td id="LC7426" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_addFile</span>(file);</td>
</tr>
<tr>
<td id="L7427" class="blob-num js-line-number" data-line-number="7427"></td>
<td id="LC7427" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7428" class="blob-num js-line-number" data-line-number="7428"></td>
<td id="LC7428" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> _files;</td>
</tr>
<tr>
<td id="L7429" class="blob-num js-line-number" data-line-number="7429"></td>
<td id="LC7429" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>drop<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L7430" class="blob-num js-line-number" data-line-number="7430"></td>
<td id="LC7430" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7431" class="blob-num js-line-number" data-line-number="7431"></td>
<td id="LC7431" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7432" class="blob-num js-line-number" data-line-number="7432"></td>
<td id="LC7432" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7433" class="blob-num js-line-number" data-line-number="7433"></td>
<td id="LC7433" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>dragenter<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7434" class="blob-num js-line-number" data-line-number="7434"></td>
<td id="LC7434" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>dragenter<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L7435" class="blob-num js-line-number" data-line-number="7435"></td>
<td id="LC7435" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7436" class="blob-num js-line-number" data-line-number="7436"></td>
<td id="LC7436" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7437" class="blob-num js-line-number" data-line-number="7437"></td>
<td id="LC7437" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>dragleave<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7438" class="blob-num js-line-number" data-line-number="7438"></td>
<td id="LC7438" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>dragleave<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L7439" class="blob-num js-line-number" data-line-number="7439"></td>
<td id="LC7439" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7440" class="blob-num js-line-number" data-line-number="7440"></td>
<td id="LC7440" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7441" class="blob-num js-line-number" data-line-number="7441"></td>
<td id="LC7441" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7442" class="blob-num js-line-number" data-line-number="7442"></td>
<td id="LC7442" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7443" class="blob-num js-line-number" data-line-number="7443"></td>
<td id="LC7443" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(_options <span class="pl-k">&&</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">container</span>), <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7444" class="blob-num js-line-number" data-line-number="7444"></td>
<td id="LC7444" class="blob-code blob-code-inner js-file-line"> _ruid <span class="pl-k">=</span> _files <span class="pl-k">=</span> _allowedExts <span class="pl-k">=</span> _options <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7445" class="blob-num js-line-number" data-line-number="7445"></td>
<td id="LC7445" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShim</span>().<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7446" class="blob-num js-line-number" data-line-number="7446"></td>
<td id="LC7446" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7447" class="blob-num js-line-number" data-line-number="7447"></td>
<td id="LC7447" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7448" class="blob-num js-line-number" data-line-number="7448"></td>
<td id="LC7448" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7449" class="blob-num js-line-number" data-line-number="7449"></td>
<td id="LC7449" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7450" class="blob-num js-line-number" data-line-number="7450"></td>
<td id="LC7450" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_hasFiles</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7451" class="blob-num js-line-number" data-line-number="7451"></td>
<td id="LC7451" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span> <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">types</span>) { <span class="pl-c"><span class="pl-c">//</span> e.dataTransfer.files is not available in Gecko during dragover</span></td>
</tr>
<tr>
<td id="L7452" class="blob-num js-line-number" data-line-number="7452"></td>
<td id="LC7452" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L7453" class="blob-num js-line-number" data-line-number="7453"></td>
<td id="LC7453" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7454" class="blob-num js-line-number" data-line-number="7454"></td>
<td id="LC7454" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7455" class="blob-num js-line-number" data-line-number="7455"></td>
<td id="LC7455" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> types <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">toArray</span>(<span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">types</span> <span class="pl-k">||</span> []);</td>
</tr>
<tr>
<td id="L7456" class="blob-num js-line-number" data-line-number="7456"></td>
<td id="LC7456" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7457" class="blob-num js-line-number" data-line-number="7457"></td>
<td id="LC7457" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-s"><span class="pl-pds">"</span>Files<span class="pl-pds">"</span></span>, types) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span> <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L7458" class="blob-num js-line-number" data-line-number="7458"></td>
<td id="LC7458" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-s"><span class="pl-pds">"</span>public.file-url<span class="pl-pds">"</span></span>, types) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span> <span class="pl-k">||</span> <span class="pl-c"><span class="pl-c">//</span> Safari < 5</span></td>
</tr>
<tr>
<td id="L7459" class="blob-num js-line-number" data-line-number="7459"></td>
<td id="LC7459" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-s"><span class="pl-pds">"</span>application/x-moz-file<span class="pl-pds">"</span></span>, types) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span> <span class="pl-c"><span class="pl-c">//</span> Gecko < 1.9.2 (< Firefox 3.6)</span></td>
</tr>
<tr>
<td id="L7460" class="blob-num js-line-number" data-line-number="7460"></td>
<td id="LC7460" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L7461" class="blob-num js-line-number" data-line-number="7461"></td>
<td id="LC7461" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7462" class="blob-num js-line-number" data-line-number="7462"></td>
<td id="LC7462" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7463" class="blob-num js-line-number" data-line-number="7463"></td>
<td id="LC7463" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7464" class="blob-num js-line-number" data-line-number="7464"></td>
<td id="LC7464" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_addFile</span>(<span class="pl-smi">file</span>, <span class="pl-smi">relativePath</span>) {</td>
</tr>
<tr>
<td id="L7465" class="blob-num js-line-number" data-line-number="7465"></td>
<td id="LC7465" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">_isAcceptable</span>(file)) {</td>
</tr>
<tr>
<td id="L7466" class="blob-num js-line-number" data-line-number="7466"></td>
<td id="LC7466" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> fileObj <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(_ruid, file);</td>
</tr>
<tr>
<td id="L7467" class="blob-num js-line-number" data-line-number="7467"></td>
<td id="LC7467" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fileObj</span>.<span class="pl-smi">relativePath</span> <span class="pl-k">=</span> relativePath <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7468" class="blob-num js-line-number" data-line-number="7468"></td>
<td id="LC7468" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_files</span>.<span class="pl-c1">push</span>(fileObj);</td>
</tr>
<tr>
<td id="L7469" class="blob-num js-line-number" data-line-number="7469"></td>
<td id="LC7469" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7470" class="blob-num js-line-number" data-line-number="7470"></td>
<td id="LC7470" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7471" class="blob-num js-line-number" data-line-number="7471"></td>
<td id="LC7471" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7472" class="blob-num js-line-number" data-line-number="7472"></td>
<td id="LC7472" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7473" class="blob-num js-line-number" data-line-number="7473"></td>
<td id="LC7473" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_extractExts</span>(<span class="pl-smi">accept</span>) {</td>
</tr>
<tr>
<td id="L7474" class="blob-num js-line-number" data-line-number="7474"></td>
<td id="LC7474" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> exts <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L7475" class="blob-num js-line-number" data-line-number="7475"></td>
<td id="LC7475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">accept</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L7476" class="blob-num js-line-number" data-line-number="7476"></td>
<td id="LC7476" class="blob-code blob-code-inner js-file-line"> [].<span class="pl-smi">push</span>.<span class="pl-c1">apply</span>(exts, accept[i].<span class="pl-smi">extensions</span>.<span class="pl-c1">split</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\s</span><span class="pl-k">*</span>,<span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-pds">/</span></span>));</td>
</tr>
<tr>
<td id="L7477" class="blob-num js-line-number" data-line-number="7477"></td>
<td id="LC7477" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7478" class="blob-num js-line-number" data-line-number="7478"></td>
<td id="LC7478" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(<span class="pl-s"><span class="pl-pds">'</span>*<span class="pl-pds">'</span></span>, exts) <span class="pl-k">===</span> <span class="pl-k">-</span><span class="pl-c1">1</span> <span class="pl-k">?</span> exts <span class="pl-k">:</span> [];</td>
</tr>
<tr>
<td id="L7479" class="blob-num js-line-number" data-line-number="7479"></td>
<td id="LC7479" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7480" class="blob-num js-line-number" data-line-number="7480"></td>
<td id="LC7480" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7481" class="blob-num js-line-number" data-line-number="7481"></td>
<td id="LC7481" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7482" class="blob-num js-line-number" data-line-number="7482"></td>
<td id="LC7482" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_isAcceptable</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L7483" class="blob-num js-line-number" data-line-number="7483"></td>
<td id="LC7483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">_allowedExts</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L7484" class="blob-num js-line-number" data-line-number="7484"></td>
<td id="LC7484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L7485" class="blob-num js-line-number" data-line-number="7485"></td>
<td id="LC7485" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7486" class="blob-num js-line-number" data-line-number="7486"></td>
<td id="LC7486" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ext <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">getFileExtension</span>(<span class="pl-smi">file</span>.<span class="pl-c1">name</span>);</td>
</tr>
<tr>
<td id="L7487" class="blob-num js-line-number" data-line-number="7487"></td>
<td id="LC7487" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span>ext <span class="pl-k">||</span> <span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(ext, _allowedExts) <span class="pl-k">!==</span> <span class="pl-k">-</span><span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L7488" class="blob-num js-line-number" data-line-number="7488"></td>
<td id="LC7488" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7489" class="blob-num js-line-number" data-line-number="7489"></td>
<td id="LC7489" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7490" class="blob-num js-line-number" data-line-number="7490"></td>
<td id="LC7490" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7491" class="blob-num js-line-number" data-line-number="7491"></td>
<td id="LC7491" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_readItems</span>(<span class="pl-smi">items</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L7492" class="blob-num js-line-number" data-line-number="7492"></td>
<td id="LC7492" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> entries <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L7493" class="blob-num js-line-number" data-line-number="7493"></td>
<td id="LC7493" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(items, <span class="pl-k">function</span>(<span class="pl-smi">item</span>) {</td>
</tr>
<tr>
<td id="L7494" class="blob-num js-line-number" data-line-number="7494"></td>
<td id="LC7494" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> entry <span class="pl-k">=</span> <span class="pl-smi">item</span>.<span class="pl-en">webkitGetAsEntry</span>();</td>
</tr>
<tr>
<td id="L7495" class="blob-num js-line-number" data-line-number="7495"></td>
<td id="LC7495" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Address #998 (https://code.google.com/p/chromium/issues/detail?id=332579)</span></td>
</tr>
<tr>
<td id="L7496" class="blob-num js-line-number" data-line-number="7496"></td>
<td id="LC7496" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (entry) {</td>
</tr>
<tr>
<td id="L7497" class="blob-num js-line-number" data-line-number="7497"></td>
<td id="LC7497" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> file() fails on OSX when the filename contains a special character (e.g. umlaut): see #61</span></td>
</tr>
<tr>
<td id="L7498" class="blob-num js-line-number" data-line-number="7498"></td>
<td id="LC7498" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">entry</span>.<span class="pl-smi">isFile</span>) {</td>
</tr>
<tr>
<td id="L7499" class="blob-num js-line-number" data-line-number="7499"></td>
<td id="LC7499" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_addFile</span>(<span class="pl-smi">item</span>.<span class="pl-en">getAsFile</span>(), <span class="pl-smi">entry</span>.<span class="pl-smi">fullPath</span>);</td>
</tr>
<tr>
<td id="L7500" class="blob-num js-line-number" data-line-number="7500"></td>
<td id="LC7500" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7501" class="blob-num js-line-number" data-line-number="7501"></td>
<td id="LC7501" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">entries</span>.<span class="pl-c1">push</span>(entry);</td>
</tr>
<tr>
<td id="L7502" class="blob-num js-line-number" data-line-number="7502"></td>
<td id="LC7502" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7503" class="blob-num js-line-number" data-line-number="7503"></td>
<td id="LC7503" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7504" class="blob-num js-line-number" data-line-number="7504"></td>
<td id="LC7504" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7505" class="blob-num js-line-number" data-line-number="7505"></td>
<td id="LC7505" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7506" class="blob-num js-line-number" data-line-number="7506"></td>
<td id="LC7506" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">entries</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L7507" class="blob-num js-line-number" data-line-number="7507"></td>
<td id="LC7507" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_readEntries</span>(entries, cb);</td>
</tr>
<tr>
<td id="L7508" class="blob-num js-line-number" data-line-number="7508"></td>
<td id="LC7508" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7509" class="blob-num js-line-number" data-line-number="7509"></td>
<td id="LC7509" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>();</td>
</tr>
<tr>
<td id="L7510" class="blob-num js-line-number" data-line-number="7510"></td>
<td id="LC7510" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7511" class="blob-num js-line-number" data-line-number="7511"></td>
<td id="LC7511" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7512" class="blob-num js-line-number" data-line-number="7512"></td>
<td id="LC7512" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7513" class="blob-num js-line-number" data-line-number="7513"></td>
<td id="LC7513" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7514" class="blob-num js-line-number" data-line-number="7514"></td>
<td id="LC7514" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_readEntries</span>(<span class="pl-smi">entries</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L7515" class="blob-num js-line-number" data-line-number="7515"></td>
<td id="LC7515" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> queue <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L7516" class="blob-num js-line-number" data-line-number="7516"></td>
<td id="LC7516" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(entries, <span class="pl-k">function</span>(<span class="pl-smi">entry</span>) {</td>
</tr>
<tr>
<td id="L7517" class="blob-num js-line-number" data-line-number="7517"></td>
<td id="LC7517" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">queue</span>.<span class="pl-c1">push</span>(<span class="pl-k">function</span>(<span class="pl-smi">cbcb</span>) {</td>
</tr>
<tr>
<td id="L7518" class="blob-num js-line-number" data-line-number="7518"></td>
<td id="LC7518" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_readEntry</span>(entry, cbcb);</td>
</tr>
<tr>
<td id="L7519" class="blob-num js-line-number" data-line-number="7519"></td>
<td id="LC7519" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7520" class="blob-num js-line-number" data-line-number="7520"></td>
<td id="LC7520" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7521" class="blob-num js-line-number" data-line-number="7521"></td>
<td id="LC7521" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">inSeries</span>(queue, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7522" class="blob-num js-line-number" data-line-number="7522"></td>
<td id="LC7522" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>();</td>
</tr>
<tr>
<td id="L7523" class="blob-num js-line-number" data-line-number="7523"></td>
<td id="LC7523" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7524" class="blob-num js-line-number" data-line-number="7524"></td>
<td id="LC7524" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7525" class="blob-num js-line-number" data-line-number="7525"></td>
<td id="LC7525" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7526" class="blob-num js-line-number" data-line-number="7526"></td>
<td id="LC7526" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7527" class="blob-num js-line-number" data-line-number="7527"></td>
<td id="LC7527" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_readEntry</span>(<span class="pl-smi">entry</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L7528" class="blob-num js-line-number" data-line-number="7528"></td>
<td id="LC7528" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">entry</span>.<span class="pl-smi">isFile</span>) {</td>
</tr>
<tr>
<td id="L7529" class="blob-num js-line-number" data-line-number="7529"></td>
<td id="LC7529" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">entry</span>.<span class="pl-c1">file</span>(<span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L7530" class="blob-num js-line-number" data-line-number="7530"></td>
<td id="LC7530" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_addFile</span>(file, <span class="pl-smi">entry</span>.<span class="pl-smi">fullPath</span>);</td>
</tr>
<tr>
<td id="L7531" class="blob-num js-line-number" data-line-number="7531"></td>
<td id="LC7531" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>();</td>
</tr>
<tr>
<td id="L7532" class="blob-num js-line-number" data-line-number="7532"></td>
<td id="LC7532" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7533" class="blob-num js-line-number" data-line-number="7533"></td>
<td id="LC7533" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> fire an error event maybe</span></td>
</tr>
<tr>
<td id="L7534" class="blob-num js-line-number" data-line-number="7534"></td>
<td id="LC7534" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>();</td>
</tr>
<tr>
<td id="L7535" class="blob-num js-line-number" data-line-number="7535"></td>
<td id="LC7535" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7536" class="blob-num js-line-number" data-line-number="7536"></td>
<td id="LC7536" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">entry</span>.<span class="pl-smi">isDirectory</span>) {</td>
</tr>
<tr>
<td id="L7537" class="blob-num js-line-number" data-line-number="7537"></td>
<td id="LC7537" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_readDirEntry</span>(entry, cb);</td>
</tr>
<tr>
<td id="L7538" class="blob-num js-line-number" data-line-number="7538"></td>
<td id="LC7538" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7539" class="blob-num js-line-number" data-line-number="7539"></td>
<td id="LC7539" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>(); <span class="pl-c"><span class="pl-c">//</span> not file, not directory? what then?..</span></td>
</tr>
<tr>
<td id="L7540" class="blob-num js-line-number" data-line-number="7540"></td>
<td id="LC7540" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7541" class="blob-num js-line-number" data-line-number="7541"></td>
<td id="LC7541" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7542" class="blob-num js-line-number" data-line-number="7542"></td>
<td id="LC7542" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7543" class="blob-num js-line-number" data-line-number="7543"></td>
<td id="LC7543" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7544" class="blob-num js-line-number" data-line-number="7544"></td>
<td id="LC7544" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_readDirEntry</span>(<span class="pl-smi">dirEntry</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L7545" class="blob-num js-line-number" data-line-number="7545"></td>
<td id="LC7545" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> entries <span class="pl-k">=</span> [], dirReader <span class="pl-k">=</span> <span class="pl-smi">dirEntry</span>.<span class="pl-en">createReader</span>();</td>
</tr>
<tr>
<td id="L7546" class="blob-num js-line-number" data-line-number="7546"></td>
<td id="LC7546" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7547" class="blob-num js-line-number" data-line-number="7547"></td>
<td id="LC7547" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> keep quering recursively till no more entries</span></td>
</tr>
<tr>
<td id="L7548" class="blob-num js-line-number" data-line-number="7548"></td>
<td id="LC7548" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">getEntries</span>(<span class="pl-smi">cbcb</span>) {</td>
</tr>
<tr>
<td id="L7549" class="blob-num js-line-number" data-line-number="7549"></td>
<td id="LC7549" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">dirReader</span>.<span class="pl-en">readEntries</span>(<span class="pl-k">function</span>(<span class="pl-smi">moreEntries</span>) {</td>
</tr>
<tr>
<td id="L7550" class="blob-num js-line-number" data-line-number="7550"></td>
<td id="LC7550" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">moreEntries</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L7551" class="blob-num js-line-number" data-line-number="7551"></td>
<td id="LC7551" class="blob-code blob-code-inner js-file-line"> [].<span class="pl-smi">push</span>.<span class="pl-c1">apply</span>(entries, moreEntries);</td>
</tr>
<tr>
<td id="L7552" class="blob-num js-line-number" data-line-number="7552"></td>
<td id="LC7552" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getEntries</span>(cbcb);</td>
</tr>
<tr>
<td id="L7553" class="blob-num js-line-number" data-line-number="7553"></td>
<td id="LC7553" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7554" class="blob-num js-line-number" data-line-number="7554"></td>
<td id="LC7554" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cbcb</span>();</td>
</tr>
<tr>
<td id="L7555" class="blob-num js-line-number" data-line-number="7555"></td>
<td id="LC7555" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7556" class="blob-num js-line-number" data-line-number="7556"></td>
<td id="LC7556" class="blob-code blob-code-inner js-file-line"> }, cbcb);</td>
</tr>
<tr>
<td id="L7557" class="blob-num js-line-number" data-line-number="7557"></td>
<td id="LC7557" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7558" class="blob-num js-line-number" data-line-number="7558"></td>
<td id="LC7558" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7559" class="blob-num js-line-number" data-line-number="7559"></td>
<td id="LC7559" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> ...and you thought FileReader was crazy...</span></td>
</tr>
<tr>
<td id="L7560" class="blob-num js-line-number" data-line-number="7560"></td>
<td id="LC7560" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getEntries</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7561" class="blob-num js-line-number" data-line-number="7561"></td>
<td id="LC7561" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_readEntries</span>(entries, cb);</td>
</tr>
<tr>
<td id="L7562" class="blob-num js-line-number" data-line-number="7562"></td>
<td id="LC7562" class="blob-code blob-code-inner js-file-line"> }); </td>
</tr>
<tr>
<td id="L7563" class="blob-num js-line-number" data-line-number="7563"></td>
<td id="LC7563" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7564" class="blob-num js-line-number" data-line-number="7564"></td>
<td id="LC7564" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7565" class="blob-num js-line-number" data-line-number="7565"></td>
<td id="LC7565" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7566" class="blob-num js-line-number" data-line-number="7566"></td>
<td id="LC7566" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileDrop</span> <span class="pl-k">=</span> FileDrop);</td>
</tr>
<tr>
<td id="L7567" class="blob-num js-line-number" data-line-number="7567"></td>
<td id="LC7567" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L7568" class="blob-num js-line-number" data-line-number="7568"></td>
<td id="LC7568" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7569" class="blob-num js-line-number" data-line-number="7569"></td>
<td id="LC7569" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/file/FileReader.js</span></td>
</tr>
<tr>
<td id="L7570" class="blob-num js-line-number" data-line-number="7570"></td>
<td id="LC7570" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7571" class="blob-num js-line-number" data-line-number="7571"></td>
<td id="LC7571" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7572" class="blob-num js-line-number" data-line-number="7572"></td>
<td id="LC7572" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReader.js</span></td>
</tr>
<tr>
<td id="L7573" class="blob-num js-line-number" data-line-number="7573"></td>
<td id="LC7573" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7574" class="blob-num js-line-number" data-line-number="7574"></td>
<td id="LC7574" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L7575" class="blob-num js-line-number" data-line-number="7575"></td>
<td id="LC7575" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L7576" class="blob-num js-line-number" data-line-number="7576"></td>
<td id="LC7576" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7577" class="blob-num js-line-number" data-line-number="7577"></td>
<td id="LC7577" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L7578" class="blob-num js-line-number" data-line-number="7578"></td>
<td id="LC7578" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L7579" class="blob-num js-line-number" data-line-number="7579"></td>
<td id="LC7579" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7580" class="blob-num js-line-number" data-line-number="7580"></td>
<td id="LC7580" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7581" class="blob-num js-line-number" data-line-number="7581"></td>
<td id="LC7581" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7582" class="blob-num js-line-number" data-line-number="7582"></td>
<td id="LC7582" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/file/FileReader</span></td>
</tr>
<tr>
<td id="L7583" class="blob-num js-line-number" data-line-number="7583"></td>
<td id="LC7583" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L7584" class="blob-num js-line-number" data-line-number="7584"></td>
<td id="LC7584" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7585" class="blob-num js-line-number" data-line-number="7585"></td>
<td id="LC7585" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/file/FileReader<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L7586" class="blob-num js-line-number" data-line-number="7586"></td>
<td id="LC7586" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7587" class="blob-num js-line-number" data-line-number="7587"></td>
<td id="LC7587" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7588" class="blob-num js-line-number" data-line-number="7588"></td>
<td id="LC7588" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L7589" class="blob-num js-line-number" data-line-number="7589"></td>
<td id="LC7589" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Encode</span>, <span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L7590" class="blob-num js-line-number" data-line-number="7590"></td>
<td id="LC7590" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7591" class="blob-num js-line-number" data-line-number="7591"></td>
<td id="LC7591" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileReader</span>() {</td>
</tr>
<tr>
<td id="L7592" class="blob-num js-line-number" data-line-number="7592"></td>
<td id="LC7592" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _fr, _convertToBinary <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L7593" class="blob-num js-line-number" data-line-number="7593"></td>
<td id="LC7593" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7594" class="blob-num js-line-number" data-line-number="7594"></td>
<td id="LC7594" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L7595" class="blob-num js-line-number" data-line-number="7595"></td>
<td id="LC7595" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7596" class="blob-num js-line-number" data-line-number="7596"></td>
<td id="LC7596" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">read</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">op</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L7597" class="blob-num js-line-number" data-line-number="7597"></td>
<td id="LC7597" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L7598" class="blob-num js-line-number" data-line-number="7598"></td>
<td id="LC7598" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7599" class="blob-num js-line-number" data-line-number="7599"></td>
<td id="LC7599" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7600" class="blob-num js-line-number" data-line-number="7600"></td>
<td id="LC7600" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7601" class="blob-num js-line-number" data-line-number="7601"></td>
<td id="LC7601" class="blob-code blob-code-inner js-file-line"> _fr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">window.FileReader</span>();</td>
</tr>
<tr>
<td id="L7602" class="blob-num js-line-number" data-line-number="7602"></td>
<td id="LC7602" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7603" class="blob-num js-line-number" data-line-number="7603"></td>
<td id="LC7603" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7604" class="blob-num js-line-number" data-line-number="7604"></td>
<td id="LC7604" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L7605" class="blob-num js-line-number" data-line-number="7605"></td>
<td id="LC7605" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7606" class="blob-num js-line-number" data-line-number="7606"></td>
<td id="LC7606" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7607" class="blob-num js-line-number" data-line-number="7607"></td>
<td id="LC7607" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7608" class="blob-num js-line-number" data-line-number="7608"></td>
<td id="LC7608" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> _convertToBinary <span class="pl-k">?</span> <span class="pl-en">_toBinary</span>(<span class="pl-smi">_fr</span>.<span class="pl-smi">result</span>) <span class="pl-k">:</span> <span class="pl-smi">_fr</span>.<span class="pl-smi">result</span>;</td>
</tr>
<tr>
<td id="L7609" class="blob-num js-line-number" data-line-number="7609"></td>
<td id="LC7609" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L7610" class="blob-num js-line-number" data-line-number="7610"></td>
<td id="LC7610" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7611" class="blob-num js-line-number" data-line-number="7611"></td>
<td id="LC7611" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7612" class="blob-num js-line-number" data-line-number="7612"></td>
<td id="LC7612" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7613" class="blob-num js-line-number" data-line-number="7613"></td>
<td id="LC7613" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(e, <span class="pl-smi">_fr</span>.<span class="pl-smi">error</span>);</td>
</tr>
<tr>
<td id="L7614" class="blob-num js-line-number" data-line-number="7614"></td>
<td id="LC7614" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7615" class="blob-num js-line-number" data-line-number="7615"></td>
<td id="LC7615" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7616" class="blob-num js-line-number" data-line-number="7616"></td>
<td id="LC7616" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>loadend<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7617" class="blob-num js-line-number" data-line-number="7617"></td>
<td id="LC7617" class="blob-code blob-code-inner js-file-line"> _fr <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7618" class="blob-num js-line-number" data-line-number="7618"></td>
<td id="LC7618" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L7619" class="blob-num js-line-number" data-line-number="7619"></td>
<td id="LC7619" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7620" class="blob-num js-line-number" data-line-number="7620"></td>
<td id="LC7620" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7621" class="blob-num js-line-number" data-line-number="7621"></td>
<td id="LC7621" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(_fr[op]) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L7622" class="blob-num js-line-number" data-line-number="7622"></td>
<td id="LC7622" class="blob-code blob-code-inner js-file-line"> _convertToBinary <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L7623" class="blob-num js-line-number" data-line-number="7623"></td>
<td id="LC7623" class="blob-code blob-code-inner js-file-line"> _fr[op](<span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>());</td>
</tr>
<tr>
<td id="L7624" class="blob-num js-line-number" data-line-number="7624"></td>
<td id="LC7624" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (op <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>) { <span class="pl-c"><span class="pl-c">//</span> readAsBinaryString is depricated in general and never existed in IE10+</span></td>
</tr>
<tr>
<td id="L7625" class="blob-num js-line-number" data-line-number="7625"></td>
<td id="LC7625" class="blob-code blob-code-inner js-file-line"> _convertToBinary <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L7626" class="blob-num js-line-number" data-line-number="7626"></td>
<td id="LC7626" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fr</span>.<span class="pl-en">readAsDataURL</span>(<span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>());</td>
</tr>
<tr>
<td id="L7627" class="blob-num js-line-number" data-line-number="7627"></td>
<td id="LC7627" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7628" class="blob-num js-line-number" data-line-number="7628"></td>
<td id="LC7628" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7629" class="blob-num js-line-number" data-line-number="7629"></td>
<td id="LC7629" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7630" class="blob-num js-line-number" data-line-number="7630"></td>
<td id="LC7630" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7631" class="blob-num js-line-number" data-line-number="7631"></td>
<td id="LC7631" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_fr) {</td>
</tr>
<tr>
<td id="L7632" class="blob-num js-line-number" data-line-number="7632"></td>
<td id="LC7632" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_fr</span>.<span class="pl-c1">abort</span>();</td>
</tr>
<tr>
<td id="L7633" class="blob-num js-line-number" data-line-number="7633"></td>
<td id="LC7633" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7634" class="blob-num js-line-number" data-line-number="7634"></td>
<td id="LC7634" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7635" class="blob-num js-line-number" data-line-number="7635"></td>
<td id="LC7635" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7636" class="blob-num js-line-number" data-line-number="7636"></td>
<td id="LC7636" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7637" class="blob-num js-line-number" data-line-number="7637"></td>
<td id="LC7637" class="blob-code blob-code-inner js-file-line"> _fr <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7638" class="blob-num js-line-number" data-line-number="7638"></td>
<td id="LC7638" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShim</span>().<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7639" class="blob-num js-line-number" data-line-number="7639"></td>
<td id="LC7639" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7640" class="blob-num js-line-number" data-line-number="7640"></td>
<td id="LC7640" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7641" class="blob-num js-line-number" data-line-number="7641"></td>
<td id="LC7641" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7642" class="blob-num js-line-number" data-line-number="7642"></td>
<td id="LC7642" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_toBinary</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L7643" class="blob-num js-line-number" data-line-number="7643"></td>
<td id="LC7643" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(<span class="pl-smi">str</span>.<span class="pl-c1">substring</span>(<span class="pl-smi">str</span>.<span class="pl-c1">indexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>base64,<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-c1">7</span>));</td>
</tr>
<tr>
<td id="L7644" class="blob-num js-line-number" data-line-number="7644"></td>
<td id="LC7644" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7645" class="blob-num js-line-number" data-line-number="7645"></td>
<td id="LC7645" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7646" class="blob-num js-line-number" data-line-number="7646"></td>
<td id="LC7646" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7647" class="blob-num js-line-number" data-line-number="7647"></td>
<td id="LC7647" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileReader</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>);</td>
</tr>
<tr>
<td id="L7648" class="blob-num js-line-number" data-line-number="7648"></td>
<td id="LC7648" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L7649" class="blob-num js-line-number" data-line-number="7649"></td>
<td id="LC7649" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7650" class="blob-num js-line-number" data-line-number="7650"></td>
<td id="LC7650" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/xhr/XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L7651" class="blob-num js-line-number" data-line-number="7651"></td>
<td id="LC7651" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7652" class="blob-num js-line-number" data-line-number="7652"></td>
<td id="LC7652" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7653" class="blob-num js-line-number" data-line-number="7653"></td>
<td id="LC7653" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L7654" class="blob-num js-line-number" data-line-number="7654"></td>
<td id="LC7654" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7655" class="blob-num js-line-number" data-line-number="7655"></td>
<td id="LC7655" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L7656" class="blob-num js-line-number" data-line-number="7656"></td>
<td id="LC7656" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L7657" class="blob-num js-line-number" data-line-number="7657"></td>
<td id="LC7657" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L7658" class="blob-num js-line-number" data-line-number="7658"></td>
<td id="LC7658" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L7659" class="blob-num js-line-number" data-line-number="7659"></td>
<td id="LC7659" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L7660" class="blob-num js-line-number" data-line-number="7660"></td>
<td id="LC7660" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7661" class="blob-num js-line-number" data-line-number="7661"></td>
<td id="LC7661" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7662" class="blob-num js-line-number" data-line-number="7662"></td>
<td id="LC7662" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>global ActiveXObject:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7663" class="blob-num js-line-number" data-line-number="7663"></td>
<td id="LC7663" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7664" class="blob-num js-line-number" data-line-number="7664"></td>
<td id="LC7664" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L7665" class="blob-num js-line-number" data-line-number="7665"></td>
<td id="LC7665" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/xhr/XMLHttpRequest</span></td>
</tr>
<tr>
<td id="L7666" class="blob-num js-line-number" data-line-number="7666"></td>
<td id="LC7666" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L7667" class="blob-num js-line-number" data-line-number="7667"></td>
<td id="LC7667" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L7668" class="blob-num js-line-number" data-line-number="7668"></td>
<td id="LC7668" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L7669" class="blob-num js-line-number" data-line-number="7669"></td>
<td id="LC7669" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7670" class="blob-num js-line-number" data-line-number="7670"></td>
<td id="LC7670" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7671" class="blob-num js-line-number" data-line-number="7671"></td>
<td id="LC7671" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7672" class="blob-num js-line-number" data-line-number="7672"></td>
<td id="LC7672" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Url<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7673" class="blob-num js-line-number" data-line-number="7673"></td>
<td id="LC7673" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7674" class="blob-num js-line-number" data-line-number="7674"></td>
<td id="LC7674" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7675" class="blob-num js-line-number" data-line-number="7675"></td>
<td id="LC7675" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/FormData<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7676" class="blob-num js-line-number" data-line-number="7676"></td>
<td id="LC7676" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L7677" class="blob-num js-line-number" data-line-number="7677"></td>
<td id="LC7677" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L7678" class="blob-num js-line-number" data-line-number="7678"></td>
<td id="LC7678" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Mime</span>, <span class="pl-smi">Url</span>, <span class="pl-c1">File</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">FormData</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L7679" class="blob-num js-line-number" data-line-number="7679"></td>
<td id="LC7679" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7680" class="blob-num js-line-number" data-line-number="7680"></td>
<td id="LC7680" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">XMLHttpRequest</span>() {</td>
</tr>
<tr>
<td id="L7681" class="blob-num js-line-number" data-line-number="7681"></td>
<td id="LC7681" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L7682" class="blob-num js-line-number" data-line-number="7682"></td>
<td id="LC7682" class="blob-code blob-code-inner js-file-line"> , _xhr</td>
</tr>
<tr>
<td id="L7683" class="blob-num js-line-number" data-line-number="7683"></td>
<td id="LC7683" class="blob-code blob-code-inner js-file-line"> , _filename</td>
</tr>
<tr>
<td id="L7684" class="blob-num js-line-number" data-line-number="7684"></td>
<td id="LC7684" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L7685" class="blob-num js-line-number" data-line-number="7685"></td>
<td id="LC7685" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7686" class="blob-num js-line-number" data-line-number="7686"></td>
<td id="LC7686" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L7687" class="blob-num js-line-number" data-line-number="7687"></td>
<td id="LC7687" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">meta</span>, <span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L7688" class="blob-num js-line-number" data-line-number="7688"></td>
<td id="LC7688" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L7689" class="blob-num js-line-number" data-line-number="7689"></td>
<td id="LC7689" class="blob-code blob-code-inner js-file-line"> , isGecko2_5_6 <span class="pl-k">=</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Mozilla<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">4</span>, <span class="pl-s"><span class="pl-pds">'</span>>=<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">7</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>))</td>
</tr>
<tr>
<td id="L7690" class="blob-num js-line-number" data-line-number="7690"></td>
<td id="LC7690" class="blob-code blob-code-inner js-file-line"> , isAndroidBrowser <span class="pl-k">=</span> <span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Android Browser<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L7691" class="blob-num js-line-number" data-line-number="7691"></td>
<td id="LC7691" class="blob-code blob-code-inner js-file-line"> , mustSendAsBinary <span class="pl-k">=</span> <span class="pl-c1">false</span></td>
</tr>
<tr>
<td id="L7692" class="blob-num js-line-number" data-line-number="7692"></td>
<td id="LC7692" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L7693" class="blob-num js-line-number" data-line-number="7693"></td>
<td id="LC7693" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7694" class="blob-num js-line-number" data-line-number="7694"></td>
<td id="LC7694" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> extract file name</span></td>
</tr>
<tr>
<td id="L7695" class="blob-num js-line-number" data-line-number="7695"></td>
<td id="LC7695" class="blob-code blob-code-inner js-file-line"> _filename <span class="pl-k">=</span> <span class="pl-smi">meta</span>.<span class="pl-smi">url</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-c1">.</span><span class="pl-k">+?</span><span class="pl-cce">\/</span>(<span class="pl-c1">[<span class="pl-c1">\w</span><span class="pl-c1">\-<span class="pl-cce">\.</span></span>]</span><span class="pl-k">+</span>)<span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span>$1<span class="pl-pds">'</span></span>).<span class="pl-c1">toLowerCase</span>();</td>
</tr>
<tr>
<td id="L7696" class="blob-num js-line-number" data-line-number="7696"></td>
<td id="LC7696" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7697" class="blob-num js-line-number" data-line-number="7697"></td>
<td id="LC7697" class="blob-code blob-code-inner js-file-line"> _xhr <span class="pl-k">=</span> <span class="pl-en">_getNativeXHR</span>();</td>
</tr>
<tr>
<td id="L7698" class="blob-num js-line-number" data-line-number="7698"></td>
<td id="LC7698" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">open</span>(<span class="pl-smi">meta</span>.<span class="pl-c1">method</span>, <span class="pl-smi">meta</span>.<span class="pl-smi">url</span>, <span class="pl-smi">meta</span>.<span class="pl-smi">async</span>, <span class="pl-smi">meta</span>.<span class="pl-smi">user</span>, <span class="pl-smi">meta</span>.<span class="pl-smi">password</span>);</td>
</tr>
<tr>
<td id="L7699" class="blob-num js-line-number" data-line-number="7699"></td>
<td id="LC7699" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7700" class="blob-num js-line-number" data-line-number="7700"></td>
<td id="LC7700" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7701" class="blob-num js-line-number" data-line-number="7701"></td>
<td id="LC7701" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> prepare data to be sent</span></td>
</tr>
<tr>
<td id="L7702" class="blob-num js-line-number" data-line-number="7702"></td>
<td id="LC7702" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L7703" class="blob-num js-line-number" data-line-number="7703"></td>
<td id="LC7703" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">data</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L7704" class="blob-num js-line-number" data-line-number="7704"></td>
<td id="LC7704" class="blob-code blob-code-inner js-file-line"> mustSendAsBinary <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L7705" class="blob-num js-line-number" data-line-number="7705"></td>
<td id="LC7705" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7706" class="blob-num js-line-number" data-line-number="7706"></td>
<td id="LC7706" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">getSource</span>();</td>
</tr>
<tr>
<td id="L7707" class="blob-num js-line-number" data-line-number="7707"></td>
<td id="LC7707" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span>) {</td>
</tr>
<tr>
<td id="L7708" class="blob-num js-line-number" data-line-number="7708"></td>
<td id="LC7708" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7709" class="blob-num js-line-number" data-line-number="7709"></td>
<td id="LC7709" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">data</span>.<span class="pl-en">hasBlob</span>()) {</td>
</tr>
<tr>
<td id="L7710" class="blob-num js-line-number" data-line-number="7710"></td>
<td id="LC7710" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">data</span>.<span class="pl-en">getBlob</span>().<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L7711" class="blob-num js-line-number" data-line-number="7711"></td>
<td id="LC7711" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">_prepareMultipart</span>.<span class="pl-c1">call</span>(target, data); <span class="pl-c"><span class="pl-c">//</span> _xhr must be instantiated and be in OPENED state</span></td>
</tr>
<tr>
<td id="L7712" class="blob-num js-line-number" data-line-number="7712"></td>
<td id="LC7712" class="blob-code blob-code-inner js-file-line"> mustSendAsBinary <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L7713" class="blob-num js-line-number" data-line-number="7713"></td>
<td id="LC7713" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> ((isGecko2_5_6 <span class="pl-k">||</span> isAndroidBrowser) <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-smi">data</span>.<span class="pl-en">getBlob</span>().<span class="pl-en">getSource</span>()) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>blob<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-c1">window</span>.<span class="pl-smi">FileReader</span>) {</td>
</tr>
<tr>
<td id="L7714" class="blob-num js-line-number" data-line-number="7714"></td>
<td id="LC7714" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Gecko 2/5/6 can't send blob in FormData: https://bugzilla.mozilla.org/show_bug.cgi?id=649150</span></td>
</tr>
<tr>
<td id="L7715" class="blob-num js-line-number" data-line-number="7715"></td>
<td id="LC7715" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Android browsers (default one and Dolphin) seem to have the same issue, see: #613</span></td>
</tr>
<tr>
<td id="L7716" class="blob-num js-line-number" data-line-number="7716"></td>
<td id="LC7716" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_preloadAndSend</span>.<span class="pl-c1">call</span>(target, meta, data);</td>
</tr>
<tr>
<td id="L7717" class="blob-num js-line-number" data-line-number="7717"></td>
<td id="LC7717" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>; <span class="pl-c"><span class="pl-c">//</span> _preloadAndSend will reinvoke send() with transmutated FormData =%D</span></td>
</tr>
<tr>
<td id="L7718" class="blob-num js-line-number" data-line-number="7718"></td>
<td id="LC7718" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L7719" class="blob-num js-line-number" data-line-number="7719"></td>
<td id="LC7719" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7720" class="blob-num js-line-number" data-line-number="7720"></td>
<td id="LC7720" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7721" class="blob-num js-line-number" data-line-number="7721"></td>
<td id="LC7721" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> transfer fields to real FormData</span></td>
</tr>
<tr>
<td id="L7722" class="blob-num js-line-number" data-line-number="7722"></td>
<td id="LC7722" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span>) { <span class="pl-c"><span class="pl-c">//</span> if still a FormData, e.g. not mangled by _prepareMultipart()</span></td>
</tr>
<tr>
<td id="L7723" class="blob-num js-line-number" data-line-number="7723"></td>
<td id="LC7723" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> fd <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">window.FormData</span>();</td>
</tr>
<tr>
<td id="L7724" class="blob-num js-line-number" data-line-number="7724"></td>
<td id="LC7724" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">data</span>.<span class="pl-en">each</span>(<span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L7725" class="blob-num js-line-number" data-line-number="7725"></td>
<td id="LC7725" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L7726" class="blob-num js-line-number" data-line-number="7726"></td>
<td id="LC7726" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fd</span>.<span class="pl-c1">append</span>(name, <span class="pl-smi">value</span>.<span class="pl-en">getSource</span>());</td>
</tr>
<tr>
<td id="L7727" class="blob-num js-line-number" data-line-number="7727"></td>
<td id="LC7727" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7728" class="blob-num js-line-number" data-line-number="7728"></td>
<td id="LC7728" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fd</span>.<span class="pl-c1">append</span>(name, value);</td>
</tr>
<tr>
<td id="L7729" class="blob-num js-line-number" data-line-number="7729"></td>
<td id="LC7729" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7730" class="blob-num js-line-number" data-line-number="7730"></td>
<td id="LC7730" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7731" class="blob-num js-line-number" data-line-number="7731"></td>
<td id="LC7731" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> fd;</td>
</tr>
<tr>
<td id="L7732" class="blob-num js-line-number" data-line-number="7732"></td>
<td id="LC7732" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7733" class="blob-num js-line-number" data-line-number="7733"></td>
<td id="LC7733" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7734" class="blob-num js-line-number" data-line-number="7734"></td>
<td id="LC7734" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7735" class="blob-num js-line-number" data-line-number="7735"></td>
<td id="LC7735" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7736" class="blob-num js-line-number" data-line-number="7736"></td>
<td id="LC7736" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if XHR L2</span></td>
</tr>
<tr>
<td id="L7737" class="blob-num js-line-number" data-line-number="7737"></td>
<td id="LC7737" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_xhr</span>.<span class="pl-smi">upload</span>) {</td>
</tr>
<tr>
<td id="L7738" class="blob-num js-line-number" data-line-number="7738"></td>
<td id="LC7738" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">meta</span>.<span class="pl-smi">withCredentials</span>) {</td>
</tr>
<tr>
<td id="L7739" class="blob-num js-line-number" data-line-number="7739"></td>
<td id="LC7739" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-smi">withCredentials</span> <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L7740" class="blob-num js-line-number" data-line-number="7740"></td>
<td id="LC7740" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7741" class="blob-num js-line-number" data-line-number="7741"></td>
<td id="LC7741" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7742" class="blob-num js-line-number" data-line-number="7742"></td>
<td id="LC7742" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7743" class="blob-num js-line-number" data-line-number="7743"></td>
<td id="LC7743" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L7744" class="blob-num js-line-number" data-line-number="7744"></td>
<td id="LC7744" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7745" class="blob-num js-line-number" data-line-number="7745"></td>
<td id="LC7745" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7746" class="blob-num js-line-number" data-line-number="7746"></td>
<td id="LC7746" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7747" class="blob-num js-line-number" data-line-number="7747"></td>
<td id="LC7747" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L7748" class="blob-num js-line-number" data-line-number="7748"></td>
<td id="LC7748" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7749" class="blob-num js-line-number" data-line-number="7749"></td>
<td id="LC7749" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7750" class="blob-num js-line-number" data-line-number="7750"></td>
<td id="LC7750" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> additionally listen to progress events</span></td>
</tr>
<tr>
<td id="L7751" class="blob-num js-line-number" data-line-number="7751"></td>
<td id="LC7751" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7752" class="blob-num js-line-number" data-line-number="7752"></td>
<td id="LC7752" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(e);</td>
</tr>
<tr>
<td id="L7753" class="blob-num js-line-number" data-line-number="7753"></td>
<td id="LC7753" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7754" class="blob-num js-line-number" data-line-number="7754"></td>
<td id="LC7754" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7755" class="blob-num js-line-number" data-line-number="7755"></td>
<td id="LC7755" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-smi">upload</span>.<span class="pl-c1">addEventListener</span>(<span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L7756" class="blob-num js-line-number" data-line-number="7756"></td>
<td id="LC7756" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>({</td>
</tr>
<tr>
<td id="L7757" class="blob-num js-line-number" data-line-number="7757"></td>
<td id="LC7757" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>UploadProgress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L7758" class="blob-num js-line-number" data-line-number="7758"></td>
<td id="LC7758" class="blob-code blob-code-inner js-file-line"> loaded<span class="pl-k">:</span> <span class="pl-smi">e</span>.<span class="pl-smi">loaded</span>,</td>
</tr>
<tr>
<td id="L7759" class="blob-num js-line-number" data-line-number="7759"></td>
<td id="LC7759" class="blob-code blob-code-inner js-file-line"> total<span class="pl-k">:</span> <span class="pl-smi">e</span>.<span class="pl-smi">total</span></td>
</tr>
<tr>
<td id="L7760" class="blob-num js-line-number" data-line-number="7760"></td>
<td id="LC7760" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7761" class="blob-num js-line-number" data-line-number="7761"></td>
<td id="LC7761" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7762" class="blob-num js-line-number" data-line-number="7762"></td>
<td id="LC7762" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> ... otherwise simulate XHR L2</span></td>
</tr>
<tr>
<td id="L7763" class="blob-num js-line-number" data-line-number="7763"></td>
<td id="LC7763" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7764" class="blob-num js-line-number" data-line-number="7764"></td>
<td id="LC7764" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">onreadystatechange</span> <span class="pl-k">=</span> <span class="pl-k">function</span> <span class="pl-en">onReadyStateChange</span>() {</td>
</tr>
<tr>
<td id="L7765" class="blob-num js-line-number" data-line-number="7765"></td>
<td id="LC7765" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7766" class="blob-num js-line-number" data-line-number="7766"></td>
<td id="LC7766" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> fake Level 2 events</span></td>
</tr>
<tr>
<td id="L7767" class="blob-num js-line-number" data-line-number="7767"></td>
<td id="LC7767" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-smi">_xhr</span>.<span class="pl-c1">readyState</span>) {</td>
</tr>
<tr>
<td id="L7768" class="blob-num js-line-number" data-line-number="7768"></td>
<td id="LC7768" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7769" class="blob-num js-line-number" data-line-number="7769"></td>
<td id="LC7769" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">1</span>: <span class="pl-c"><span class="pl-c">//</span> XMLHttpRequest.OPENED</span></td>
</tr>
<tr>
<td id="L7770" class="blob-num js-line-number" data-line-number="7770"></td>
<td id="LC7770" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> readystatechanged is fired twice for OPENED state (in IE and Mozilla) - neu</span></td>
</tr>
<tr>
<td id="L7771" class="blob-num js-line-number" data-line-number="7771"></td>
<td id="LC7771" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7772" class="blob-num js-line-number" data-line-number="7772"></td>
<td id="LC7772" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7773" class="blob-num js-line-number" data-line-number="7773"></td>
<td id="LC7773" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> looks like HEADERS_RECEIVED (state 2) is not reported in Opera (or it's old versions) - neu</span></td>
</tr>
<tr>
<td id="L7774" class="blob-num js-line-number" data-line-number="7774"></td>
<td id="LC7774" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">2</span>: <span class="pl-c"><span class="pl-c">//</span> XMLHttpRequest.HEADERS_RECEIVED</span></td>
</tr>
<tr>
<td id="L7775" class="blob-num js-line-number" data-line-number="7775"></td>
<td id="LC7775" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7776" class="blob-num js-line-number" data-line-number="7776"></td>
<td id="LC7776" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7777" class="blob-num js-line-number" data-line-number="7777"></td>
<td id="LC7777" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">3</span>: <span class="pl-c"><span class="pl-c">//</span> XMLHttpRequest.LOADING </span></td>
</tr>
<tr>
<td id="L7778" class="blob-num js-line-number" data-line-number="7778"></td>
<td id="LC7778" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> try to fire progress event for not XHR L2</span></td>
</tr>
<tr>
<td id="L7779" class="blob-num js-line-number" data-line-number="7779"></td>
<td id="LC7779" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> total, loaded;</td>
</tr>
<tr>
<td id="L7780" class="blob-num js-line-number" data-line-number="7780"></td>
<td id="LC7780" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7781" class="blob-num js-line-number" data-line-number="7781"></td>
<td id="LC7781" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7782" class="blob-num js-line-number" data-line-number="7782"></td>
<td id="LC7782" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Url</span>.<span class="pl-en">hasSameOrigin</span>(<span class="pl-smi">meta</span>.<span class="pl-smi">url</span>)) { <span class="pl-c"><span class="pl-c">//</span> Content-Length not accessible for cross-domain on some browsers</span></td>
</tr>
<tr>
<td id="L7783" class="blob-num js-line-number" data-line-number="7783"></td>
<td id="LC7783" class="blob-code blob-code-inner js-file-line"> total <span class="pl-k">=</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">getResponseHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Content-Length<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-c1">0</span>; <span class="pl-c"><span class="pl-c">//</span> old Safari throws an exception here</span></td>
</tr>
<tr>
<td id="L7784" class="blob-num js-line-number" data-line-number="7784"></td>
<td id="LC7784" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7785" class="blob-num js-line-number" data-line-number="7785"></td>
<td id="LC7785" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7786" class="blob-num js-line-number" data-line-number="7786"></td>
<td id="LC7786" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_xhr</span>.<span class="pl-c1">responseText</span>) { <span class="pl-c"><span class="pl-c">//</span> responseText was introduced in IE7</span></td>
</tr>
<tr>
<td id="L7787" class="blob-num js-line-number" data-line-number="7787"></td>
<td id="LC7787" class="blob-code blob-code-inner js-file-line"> loaded <span class="pl-k">=</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">responseText</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L7788" class="blob-num js-line-number" data-line-number="7788"></td>
<td id="LC7788" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7789" class="blob-num js-line-number" data-line-number="7789"></td>
<td id="LC7789" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L7790" class="blob-num js-line-number" data-line-number="7790"></td>
<td id="LC7790" class="blob-code blob-code-inner js-file-line"> total <span class="pl-k">=</span> loaded <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L7791" class="blob-num js-line-number" data-line-number="7791"></td>
<td id="LC7791" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7792" class="blob-num js-line-number" data-line-number="7792"></td>
<td id="LC7792" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7793" class="blob-num js-line-number" data-line-number="7793"></td>
<td id="LC7793" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>({</td>
</tr>
<tr>
<td id="L7794" class="blob-num js-line-number" data-line-number="7794"></td>
<td id="LC7794" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L7795" class="blob-num js-line-number" data-line-number="7795"></td>
<td id="LC7795" class="blob-code blob-code-inner js-file-line"> lengthComputable<span class="pl-k">:</span> <span class="pl-k">!!</span>total,</td>
</tr>
<tr>
<td id="L7796" class="blob-num js-line-number" data-line-number="7796"></td>
<td id="LC7796" class="blob-code blob-code-inner js-file-line"> total<span class="pl-k">:</span> <span class="pl-c1">parseInt</span>(total, <span class="pl-c1">10</span>),</td>
</tr>
<tr>
<td id="L7797" class="blob-num js-line-number" data-line-number="7797"></td>
<td id="LC7797" class="blob-code blob-code-inner js-file-line"> loaded<span class="pl-k">:</span> loaded</td>
</tr>
<tr>
<td id="L7798" class="blob-num js-line-number" data-line-number="7798"></td>
<td id="LC7798" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7799" class="blob-num js-line-number" data-line-number="7799"></td>
<td id="LC7799" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7800" class="blob-num js-line-number" data-line-number="7800"></td>
<td id="LC7800" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7801" class="blob-num js-line-number" data-line-number="7801"></td>
<td id="LC7801" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">4</span>: <span class="pl-c"><span class="pl-c">//</span> XMLHttpRequest.DONE</span></td>
</tr>
<tr>
<td id="L7802" class="blob-num js-line-number" data-line-number="7802"></td>
<td id="LC7802" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> release readystatechange handler (mostly for IE)</span></td>
</tr>
<tr>
<td id="L7803" class="blob-num js-line-number" data-line-number="7803"></td>
<td id="LC7803" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">onreadystatechange</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {};</td>
</tr>
<tr>
<td id="L7804" class="blob-num js-line-number" data-line-number="7804"></td>
<td id="LC7804" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7805" class="blob-num js-line-number" data-line-number="7805"></td>
<td id="LC7805" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> usually status 0 is returned when server is unreachable, but FF also fails to status 0 for 408 timeout</span></td>
</tr>
<tr>
<td id="L7806" class="blob-num js-line-number" data-line-number="7806"></td>
<td id="LC7806" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7807" class="blob-num js-line-number" data-line-number="7807"></td>
<td id="LC7807" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_xhr</span>.<span class="pl-c1">status</span> <span class="pl-k">>=</span> <span class="pl-c1">200</span> <span class="pl-k">&&</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">status</span> <span class="pl-k"><</span> <span class="pl-c1">400</span>) {</td>
</tr>
<tr>
<td id="L7808" class="blob-num js-line-number" data-line-number="7808"></td>
<td id="LC7808" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7809" class="blob-num js-line-number" data-line-number="7809"></td>
<td id="LC7809" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7810" class="blob-num js-line-number" data-line-number="7810"></td>
<td id="LC7810" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7811" class="blob-num js-line-number" data-line-number="7811"></td>
<td id="LC7811" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {}</td>
</tr>
<tr>
<td id="L7812" class="blob-num js-line-number" data-line-number="7812"></td>
<td id="LC7812" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7813" class="blob-num js-line-number" data-line-number="7813"></td>
<td id="LC7813" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7814" class="blob-num js-line-number" data-line-number="7814"></td>
<td id="LC7814" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L7815" class="blob-num js-line-number" data-line-number="7815"></td>
<td id="LC7815" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7816" class="blob-num js-line-number" data-line-number="7816"></td>
<td id="LC7816" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7817" class="blob-num js-line-number" data-line-number="7817"></td>
<td id="LC7817" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7818" class="blob-num js-line-number" data-line-number="7818"></td>
<td id="LC7818" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7819" class="blob-num js-line-number" data-line-number="7819"></td>
<td id="LC7819" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7820" class="blob-num js-line-number" data-line-number="7820"></td>
<td id="LC7820" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> set request headers</span></td>
</tr>
<tr>
<td id="L7821" class="blob-num js-line-number" data-line-number="7821"></td>
<td id="LC7821" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(<span class="pl-smi">meta</span>.<span class="pl-c1">headers</span>)) {</td>
</tr>
<tr>
<td id="L7822" class="blob-num js-line-number" data-line-number="7822"></td>
<td id="LC7822" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">meta</span>.<span class="pl-c1">headers</span>, <span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">header</span>) {</td>
</tr>
<tr>
<td id="L7823" class="blob-num js-line-number" data-line-number="7823"></td>
<td id="LC7823" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">setRequestHeader</span>(header, value);</td>
</tr>
<tr>
<td id="L7824" class="blob-num js-line-number" data-line-number="7824"></td>
<td id="LC7824" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7825" class="blob-num js-line-number" data-line-number="7825"></td>
<td id="LC7825" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7826" class="blob-num js-line-number" data-line-number="7826"></td>
<td id="LC7826" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7827" class="blob-num js-line-number" data-line-number="7827"></td>
<td id="LC7827" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> request response type</span></td>
</tr>
<tr>
<td id="L7828" class="blob-num js-line-number" data-line-number="7828"></td>
<td id="LC7828" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span> <span class="pl-k">!==</span> <span class="pl-smi">meta</span>.<span class="pl-smi">responseType</span> <span class="pl-k">&&</span> <span class="pl-s"><span class="pl-pds">'</span>responseType<span class="pl-pds">'</span></span> <span class="pl-k">in</span> _xhr) {</td>
</tr>
<tr>
<td id="L7829" class="blob-num js-line-number" data-line-number="7829"></td>
<td id="LC7829" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span> <span class="pl-k">===</span> <span class="pl-smi">meta</span>.<span class="pl-smi">responseType</span> <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>return_response_type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span>)) { <span class="pl-c"><span class="pl-c">//</span> we can fake this one</span></td>
</tr>
<tr>
<td id="L7830" class="blob-num js-line-number" data-line-number="7830"></td>
<td id="LC7830" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-smi">responseType</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>text<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7831" class="blob-num js-line-number" data-line-number="7831"></td>
<td id="LC7831" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7832" class="blob-num js-line-number" data-line-number="7832"></td>
<td id="LC7832" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-smi">responseType</span> <span class="pl-k">=</span> <span class="pl-smi">meta</span>.<span class="pl-smi">responseType</span>;</td>
</tr>
<tr>
<td id="L7833" class="blob-num js-line-number" data-line-number="7833"></td>
<td id="LC7833" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7834" class="blob-num js-line-number" data-line-number="7834"></td>
<td id="LC7834" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7835" class="blob-num js-line-number" data-line-number="7835"></td>
<td id="LC7835" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7836" class="blob-num js-line-number" data-line-number="7836"></td>
<td id="LC7836" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> send ...</span></td>
</tr>
<tr>
<td id="L7837" class="blob-num js-line-number" data-line-number="7837"></td>
<td id="LC7837" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>mustSendAsBinary) {</td>
</tr>
<tr>
<td id="L7838" class="blob-num js-line-number" data-line-number="7838"></td>
<td id="LC7838" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">send</span>(data);</td>
</tr>
<tr>
<td id="L7839" class="blob-num js-line-number" data-line-number="7839"></td>
<td id="LC7839" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7840" class="blob-num js-line-number" data-line-number="7840"></td>
<td id="LC7840" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_xhr</span>.<span class="pl-smi">sendAsBinary</span>) { <span class="pl-c"><span class="pl-c">//</span> Gecko</span></td>
</tr>
<tr>
<td id="L7841" class="blob-num js-line-number" data-line-number="7841"></td>
<td id="LC7841" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-en">sendAsBinary</span>(data);</td>
</tr>
<tr>
<td id="L7842" class="blob-num js-line-number" data-line-number="7842"></td>
<td id="LC7842" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> { <span class="pl-c"><span class="pl-c">//</span> other browsers having support for typed arrays</span></td>
</tr>
<tr>
<td id="L7843" class="blob-num js-line-number" data-line-number="7843"></td>
<td id="LC7843" class="blob-code blob-code-inner js-file-line"> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7844" class="blob-num js-line-number" data-line-number="7844"></td>
<td id="LC7844" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> mimic Gecko's sendAsBinary</span></td>
</tr>
<tr>
<td id="L7845" class="blob-num js-line-number" data-line-number="7845"></td>
<td id="LC7845" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ui8a <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Uint8Array</span>(<span class="pl-smi">data</span>.<span class="pl-c1">length</span>);</td>
</tr>
<tr>
<td id="L7846" class="blob-num js-line-number" data-line-number="7846"></td>
<td id="LC7846" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L7847" class="blob-num js-line-number" data-line-number="7847"></td>
<td id="LC7847" class="blob-code blob-code-inner js-file-line"> ui8a[i] <span class="pl-k">=</span> (<span class="pl-smi">data</span>.<span class="pl-c1">charCodeAt</span>(i) <span class="pl-k">&</span> <span class="pl-c1">0xff</span>);</td>
</tr>
<tr>
<td id="L7848" class="blob-num js-line-number" data-line-number="7848"></td>
<td id="LC7848" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7849" class="blob-num js-line-number" data-line-number="7849"></td>
<td id="LC7849" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">send</span>(<span class="pl-smi">ui8a</span>.<span class="pl-smi">buffer</span>);</td>
</tr>
<tr>
<td id="L7850" class="blob-num js-line-number" data-line-number="7850"></td>
<td id="LC7850" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L7851" class="blob-num js-line-number" data-line-number="7851"></td>
<td id="LC7851" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7852" class="blob-num js-line-number" data-line-number="7852"></td>
<td id="LC7852" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7853" class="blob-num js-line-number" data-line-number="7853"></td>
<td id="LC7853" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7854" class="blob-num js-line-number" data-line-number="7854"></td>
<td id="LC7854" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadstart<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7855" class="blob-num js-line-number" data-line-number="7855"></td>
<td id="LC7855" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7856" class="blob-num js-line-number" data-line-number="7856"></td>
<td id="LC7856" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7857" class="blob-num js-line-number" data-line-number="7857"></td>
<td id="LC7857" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getStatus</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7858" class="blob-num js-line-number" data-line-number="7858"></td>
<td id="LC7858" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> according to W3C spec it should return 0 for readyState < 3, but instead it throws an exception</span></td>
</tr>
<tr>
<td id="L7859" class="blob-num js-line-number" data-line-number="7859"></td>
<td id="LC7859" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7860" class="blob-num js-line-number" data-line-number="7860"></td>
<td id="LC7860" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_xhr) {</td>
</tr>
<tr>
<td id="L7861" class="blob-num js-line-number" data-line-number="7861"></td>
<td id="LC7861" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">status</span>;</td>
</tr>
<tr>
<td id="L7862" class="blob-num js-line-number" data-line-number="7862"></td>
<td id="LC7862" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7863" class="blob-num js-line-number" data-line-number="7863"></td>
<td id="LC7863" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {}</td>
</tr>
<tr>
<td id="L7864" class="blob-num js-line-number" data-line-number="7864"></td>
<td id="LC7864" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L7865" class="blob-num js-line-number" data-line-number="7865"></td>
<td id="LC7865" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7866" class="blob-num js-line-number" data-line-number="7866"></td>
<td id="LC7866" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7867" class="blob-num js-line-number" data-line-number="7867"></td>
<td id="LC7867" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getResponse</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L7868" class="blob-num js-line-number" data-line-number="7868"></td>
<td id="LC7868" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L7869" class="blob-num js-line-number" data-line-number="7869"></td>
<td id="LC7869" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7870" class="blob-num js-line-number" data-line-number="7870"></td>
<td id="LC7870" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7871" class="blob-num js-line-number" data-line-number="7871"></td>
<td id="LC7871" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (responseType) {</td>
</tr>
<tr>
<td id="L7872" class="blob-num js-line-number" data-line-number="7872"></td>
<td id="LC7872" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>blob<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L7873" class="blob-num js-line-number" data-line-number="7873"></td>
<td id="LC7873" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> file <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>, <span class="pl-smi">_xhr</span>.<span class="pl-smi">response</span>);</td>
</tr>
<tr>
<td id="L7874" class="blob-num js-line-number" data-line-number="7874"></td>
<td id="LC7874" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7875" class="blob-num js-line-number" data-line-number="7875"></td>
<td id="LC7875" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> try to extract file name from content-disposition if possible (might be - not, if CORS for example) </span></td>
</tr>
<tr>
<td id="L7876" class="blob-num js-line-number" data-line-number="7876"></td>
<td id="LC7876" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> disposition <span class="pl-k">=</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">getResponseHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Content-Disposition<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L7877" class="blob-num js-line-number" data-line-number="7877"></td>
<td id="LC7877" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (disposition) {</td>
</tr>
<tr>
<td id="L7878" class="blob-num js-line-number" data-line-number="7878"></td>
<td id="LC7878" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> extract filename from response header if available</span></td>
</tr>
<tr>
<td id="L7879" class="blob-num js-line-number" data-line-number="7879"></td>
<td id="LC7879" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> match <span class="pl-k">=</span> <span class="pl-smi">disposition</span>.<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span>filename=(<span class="pl-c1">[<span class="pl-cce">\'\"</span>']</span>)(<span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\1</span>]</span><span class="pl-k">+</span>)<span class="pl-k">\1</span><span class="pl-pds">/</span></span>);</td>
</tr>
<tr>
<td id="L7880" class="blob-num js-line-number" data-line-number="7880"></td>
<td id="LC7880" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (match) {</td>
</tr>
<tr>
<td id="L7881" class="blob-num js-line-number" data-line-number="7881"></td>
<td id="LC7881" class="blob-code blob-code-inner js-file-line"> _filename <span class="pl-k">=</span> match[<span class="pl-c1">2</span>];</td>
</tr>
<tr>
<td id="L7882" class="blob-num js-line-number" data-line-number="7882"></td>
<td id="LC7882" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7883" class="blob-num js-line-number" data-line-number="7883"></td>
<td id="LC7883" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7884" class="blob-num js-line-number" data-line-number="7884"></td>
<td id="LC7884" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">file</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> _filename;</td>
</tr>
<tr>
<td id="L7885" class="blob-num js-line-number" data-line-number="7885"></td>
<td id="LC7885" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7886" class="blob-num js-line-number" data-line-number="7886"></td>
<td id="LC7886" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> pre-webkit Opera doesn't set type property on the blob response</span></td>
</tr>
<tr>
<td id="L7887" class="blob-num js-line-number" data-line-number="7887"></td>
<td id="LC7887" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">file</span>.<span class="pl-c1">type</span>) {</td>
</tr>
<tr>
<td id="L7888" class="blob-num js-line-number" data-line-number="7888"></td>
<td id="LC7888" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">file</span>.<span class="pl-c1">type</span> <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">getFileMime</span>(_filename);</td>
</tr>
<tr>
<td id="L7889" class="blob-num js-line-number" data-line-number="7889"></td>
<td id="LC7889" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7890" class="blob-num js-line-number" data-line-number="7890"></td>
<td id="LC7890" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> file;</td>
</tr>
<tr>
<td id="L7891" class="blob-num js-line-number" data-line-number="7891"></td>
<td id="LC7891" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7892" class="blob-num js-line-number" data-line-number="7892"></td>
<td id="LC7892" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L7893" class="blob-num js-line-number" data-line-number="7893"></td>
<td id="LC7893" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>return_response_type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L7894" class="blob-num js-line-number" data-line-number="7894"></td>
<td id="LC7894" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">status</span> <span class="pl-k">===</span> <span class="pl-c1">200</span> <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span> <span class="pl-k">?</span> <span class="pl-c1">JSON</span>.<span class="pl-c1">parse</span>(<span class="pl-smi">_xhr</span>.<span class="pl-c1">responseText</span>) <span class="pl-k">:</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7895" class="blob-num js-line-number" data-line-number="7895"></td>
<td id="LC7895" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7896" class="blob-num js-line-number" data-line-number="7896"></td>
<td id="LC7896" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_xhr</span>.<span class="pl-smi">response</span>;</td>
</tr>
<tr>
<td id="L7897" class="blob-num js-line-number" data-line-number="7897"></td>
<td id="LC7897" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7898" class="blob-num js-line-number" data-line-number="7898"></td>
<td id="LC7898" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L7899" class="blob-num js-line-number" data-line-number="7899"></td>
<td id="LC7899" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">_getDocument</span>(_xhr);</td>
</tr>
<tr>
<td id="L7900" class="blob-num js-line-number" data-line-number="7900"></td>
<td id="LC7900" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7901" class="blob-num js-line-number" data-line-number="7901"></td>
<td id="LC7901" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>:</td>
</tr>
<tr>
<td id="L7902" class="blob-num js-line-number" data-line-number="7902"></td>
<td id="LC7902" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">responseText</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span> <span class="pl-k">?</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">responseText</span> <span class="pl-k">:</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> against the specs, but for consistency across the runtimes</span></td>
</tr>
<tr>
<td id="L7903" class="blob-num js-line-number" data-line-number="7903"></td>
<td id="LC7903" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7904" class="blob-num js-line-number" data-line-number="7904"></td>
<td id="LC7904" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L7905" class="blob-num js-line-number" data-line-number="7905"></td>
<td id="LC7905" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7906" class="blob-num js-line-number" data-line-number="7906"></td>
<td id="LC7906" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L7907" class="blob-num js-line-number" data-line-number="7907"></td>
<td id="LC7907" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7908" class="blob-num js-line-number" data-line-number="7908"></td>
<td id="LC7908" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7909" class="blob-num js-line-number" data-line-number="7909"></td>
<td id="LC7909" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAllResponseHeaders</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7910" class="blob-num js-line-number" data-line-number="7910"></td>
<td id="LC7910" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7911" class="blob-num js-line-number" data-line-number="7911"></td>
<td id="LC7911" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_xhr</span>.<span class="pl-c1">getAllResponseHeaders</span>();</td>
</tr>
<tr>
<td id="L7912" class="blob-num js-line-number" data-line-number="7912"></td>
<td id="LC7912" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {}</td>
</tr>
<tr>
<td id="L7913" class="blob-num js-line-number" data-line-number="7913"></td>
<td id="LC7913" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L7914" class="blob-num js-line-number" data-line-number="7914"></td>
<td id="LC7914" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7915" class="blob-num js-line-number" data-line-number="7915"></td>
<td id="LC7915" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7916" class="blob-num js-line-number" data-line-number="7916"></td>
<td id="LC7916" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7917" class="blob-num js-line-number" data-line-number="7917"></td>
<td id="LC7917" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_xhr) {</td>
</tr>
<tr>
<td id="L7918" class="blob-num js-line-number" data-line-number="7918"></td>
<td id="LC7918" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">abort</span>();</td>
</tr>
<tr>
<td id="L7919" class="blob-num js-line-number" data-line-number="7919"></td>
<td id="LC7919" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7920" class="blob-num js-line-number" data-line-number="7920"></td>
<td id="LC7920" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L7921" class="blob-num js-line-number" data-line-number="7921"></td>
<td id="LC7921" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7922" class="blob-num js-line-number" data-line-number="7922"></td>
<td id="LC7922" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7923" class="blob-num js-line-number" data-line-number="7923"></td>
<td id="LC7923" class="blob-code blob-code-inner js-file-line"> self <span class="pl-k">=</span> _filename <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7924" class="blob-num js-line-number" data-line-number="7924"></td>
<td id="LC7924" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShim</span>().<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L7925" class="blob-num js-line-number" data-line-number="7925"></td>
<td id="LC7925" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7926" class="blob-num js-line-number" data-line-number="7926"></td>
<td id="LC7926" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L7927" class="blob-num js-line-number" data-line-number="7927"></td>
<td id="LC7927" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7928" class="blob-num js-line-number" data-line-number="7928"></td>
<td id="LC7928" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7929" class="blob-num js-line-number" data-line-number="7929"></td>
<td id="LC7929" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> here we go... ugly fix for ugly bug</span></td>
</tr>
<tr>
<td id="L7930" class="blob-num js-line-number" data-line-number="7930"></td>
<td id="LC7930" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_preloadAndSend</span>(<span class="pl-smi">meta</span>, <span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L7931" class="blob-num js-line-number" data-line-number="7931"></td>
<td id="LC7931" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">this</span>, blob, fr;</td>
</tr>
<tr>
<td id="L7932" class="blob-num js-line-number" data-line-number="7932"></td>
<td id="LC7932" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7933" class="blob-num js-line-number" data-line-number="7933"></td>
<td id="LC7933" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> get original blob</span></td>
</tr>
<tr>
<td id="L7934" class="blob-num js-line-number" data-line-number="7934"></td>
<td id="LC7934" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">getBlob</span>().<span class="pl-en">getSource</span>();</td>
</tr>
<tr>
<td id="L7935" class="blob-num js-line-number" data-line-number="7935"></td>
<td id="LC7935" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7936" class="blob-num js-line-number" data-line-number="7936"></td>
<td id="LC7936" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> preload blob in memory to be sent as binary string</span></td>
</tr>
<tr>
<td id="L7937" class="blob-num js-line-number" data-line-number="7937"></td>
<td id="LC7937" class="blob-code blob-code-inner js-file-line"> fr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">window.FileReader</span>();</td>
</tr>
<tr>
<td id="L7938" class="blob-num js-line-number" data-line-number="7938"></td>
<td id="LC7938" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fr</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7939" class="blob-num js-line-number" data-line-number="7939"></td>
<td id="LC7939" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> overwrite original blob</span></td>
</tr>
<tr>
<td id="L7940" class="blob-num js-line-number" data-line-number="7940"></td>
<td id="LC7940" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">data</span>.<span class="pl-c1">append</span>(<span class="pl-smi">data</span>.<span class="pl-en">getBlobName</span>(), <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-c1">null</span>, {</td>
</tr>
<tr>
<td id="L7941" class="blob-num js-line-number" data-line-number="7941"></td>
<td id="LC7941" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-smi">blob</span>.<span class="pl-c1">type</span>,</td>
</tr>
<tr>
<td id="L7942" class="blob-num js-line-number" data-line-number="7942"></td>
<td id="LC7942" class="blob-code blob-code-inner js-file-line"> data<span class="pl-k">:</span> <span class="pl-smi">fr</span>.<span class="pl-smi">result</span></td>
</tr>
<tr>
<td id="L7943" class="blob-num js-line-number" data-line-number="7943"></td>
<td id="LC7943" class="blob-code blob-code-inner js-file-line"> }));</td>
</tr>
<tr>
<td id="L7944" class="blob-num js-line-number" data-line-number="7944"></td>
<td id="LC7944" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> invoke send operation again</span></td>
</tr>
<tr>
<td id="L7945" class="blob-num js-line-number" data-line-number="7945"></td>
<td id="LC7945" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">send</span>.<span class="pl-c1">call</span>(target, meta, data);</td>
</tr>
<tr>
<td id="L7946" class="blob-num js-line-number" data-line-number="7946"></td>
<td id="LC7946" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L7947" class="blob-num js-line-number" data-line-number="7947"></td>
<td id="LC7947" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fr</span>.<span class="pl-en">readAsBinaryString</span>(blob);</td>
</tr>
<tr>
<td id="L7948" class="blob-num js-line-number" data-line-number="7948"></td>
<td id="LC7948" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7949" class="blob-num js-line-number" data-line-number="7949"></td>
<td id="LC7949" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7950" class="blob-num js-line-number" data-line-number="7950"></td>
<td id="LC7950" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7951" class="blob-num js-line-number" data-line-number="7951"></td>
<td id="LC7951" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getNativeXHR</span>() {</td>
</tr>
<tr>
<td id="L7952" class="blob-num js-line-number" data-line-number="7952"></td>
<td id="LC7952" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">window</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">&&</span> <span class="pl-k">!</span>(<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">8</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>))) { <span class="pl-c"><span class="pl-c">//</span> IE7 has native XHR but it's buggy</span></td>
</tr>
<tr>
<td id="L7953" class="blob-num js-line-number" data-line-number="7953"></td>
<td id="LC7953" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">window.XMLHttpRequest</span>();</td>
</tr>
<tr>
<td id="L7954" class="blob-num js-line-number" data-line-number="7954"></td>
<td id="LC7954" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L7955" class="blob-num js-line-number" data-line-number="7955"></td>
<td id="LC7955" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L7956" class="blob-num js-line-number" data-line-number="7956"></td>
<td id="LC7956" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> progIDs <span class="pl-k">=</span> [<span class="pl-s"><span class="pl-pds">'</span>Msxml2.XMLHTTP.6.0<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>Microsoft.XMLHTTP<span class="pl-pds">'</span></span>]; <span class="pl-c"><span class="pl-c">//</span> if 6.0 available, use it, otherwise failback to default 3.0</span></td>
</tr>
<tr>
<td id="L7957" class="blob-num js-line-number" data-line-number="7957"></td>
<td id="LC7957" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">progIDs</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L7958" class="blob-num js-line-number" data-line-number="7958"></td>
<td id="LC7958" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L7959" class="blob-num js-line-number" data-line-number="7959"></td>
<td id="LC7959" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">ActiveXObject</span>(progIDs[i]);</td>
</tr>
<tr>
<td id="L7960" class="blob-num js-line-number" data-line-number="7960"></td>
<td id="LC7960" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {}</td>
</tr>
<tr>
<td id="L7961" class="blob-num js-line-number" data-line-number="7961"></td>
<td id="LC7961" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7962" class="blob-num js-line-number" data-line-number="7962"></td>
<td id="LC7962" class="blob-code blob-code-inner js-file-line"> })();</td>
</tr>
<tr>
<td id="L7963" class="blob-num js-line-number" data-line-number="7963"></td>
<td id="LC7963" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7964" class="blob-num js-line-number" data-line-number="7964"></td>
<td id="LC7964" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7965" class="blob-num js-line-number" data-line-number="7965"></td>
<td id="LC7965" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7966" class="blob-num js-line-number" data-line-number="7966"></td>
<td id="LC7966" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> @credits Sergey Ilinsky (http://www.ilinsky.com/)</span></td>
</tr>
<tr>
<td id="L7967" class="blob-num js-line-number" data-line-number="7967"></td>
<td id="LC7967" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getDocument</span>(<span class="pl-smi">xhr</span>) {</td>
</tr>
<tr>
<td id="L7968" class="blob-num js-line-number" data-line-number="7968"></td>
<td id="LC7968" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> rXML <span class="pl-k">=</span> <span class="pl-smi">xhr</span>.<span class="pl-c1">responseXML</span>;</td>
</tr>
<tr>
<td id="L7969" class="blob-num js-line-number" data-line-number="7969"></td>
<td id="LC7969" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> rText <span class="pl-k">=</span> <span class="pl-smi">xhr</span>.<span class="pl-c1">responseText</span>;</td>
</tr>
<tr>
<td id="L7970" class="blob-num js-line-number" data-line-number="7970"></td>
<td id="LC7970" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7971" class="blob-num js-line-number" data-line-number="7971"></td>
<td id="LC7971" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Try parsing responseText (@see: http://www.ilinsky.com/articles/XMLHttpRequest/#bugs-ie-responseXML-content-type)</span></td>
</tr>
<tr>
<td id="L7972" class="blob-num js-line-number" data-line-number="7972"></td>
<td id="LC7972" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> rText <span class="pl-k">&&</span> rXML <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">rXML</span>.<span class="pl-c1">documentElement</span> <span class="pl-k">&&</span><span class="pl-sr"> <span class="pl-pds">/</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\/</span>]</span><span class="pl-k">+</span><span class="pl-cce">\/</span><span class="pl-c1">[<span class="pl-k">^</span><span class="pl-cce">\+</span>]</span><span class="pl-k">+</span><span class="pl-cce">\+</span>xml<span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(<span class="pl-smi">xhr</span>.<span class="pl-c1">getResponseHeader</span>(<span class="pl-s"><span class="pl-pds">"</span>Content-Type<span class="pl-pds">"</span></span>))) {</td>
</tr>
<tr>
<td id="L7973" class="blob-num js-line-number" data-line-number="7973"></td>
<td id="LC7973" class="blob-code blob-code-inner js-file-line"> rXML <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">window.ActiveXObject</span>(<span class="pl-s"><span class="pl-pds">"</span>Microsoft.XMLDOM<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L7974" class="blob-num js-line-number" data-line-number="7974"></td>
<td id="LC7974" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">rXML</span>.<span class="pl-smi">async</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L7975" class="blob-num js-line-number" data-line-number="7975"></td>
<td id="LC7975" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">rXML</span>.<span class="pl-smi">validateOnParse</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L7976" class="blob-num js-line-number" data-line-number="7976"></td>
<td id="LC7976" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">rXML</span>.<span class="pl-en">loadXML</span>(rText);</td>
</tr>
<tr>
<td id="L7977" class="blob-num js-line-number" data-line-number="7977"></td>
<td id="LC7977" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7978" class="blob-num js-line-number" data-line-number="7978"></td>
<td id="LC7978" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L7979" class="blob-num js-line-number" data-line-number="7979"></td>
<td id="LC7979" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Check if there is no error in document</span></td>
</tr>
<tr>
<td id="L7980" class="blob-num js-line-number" data-line-number="7980"></td>
<td id="LC7980" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (rXML) {</td>
</tr>
<tr>
<td id="L7981" class="blob-num js-line-number" data-line-number="7981"></td>
<td id="LC7981" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">rXML</span>.<span class="pl-smi">parseError</span> <span class="pl-k">!==</span> <span class="pl-c1">0</span>) <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">rXML</span>.<span class="pl-c1">documentElement</span> <span class="pl-k">||</span> <span class="pl-smi">rXML</span>.<span class="pl-c1">documentElement</span>.<span class="pl-c1">tagName</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">"</span>parsererror<span class="pl-pds">"</span></span>) {</td>
</tr>
<tr>
<td id="L7982" class="blob-num js-line-number" data-line-number="7982"></td>
<td id="LC7982" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L7983" class="blob-num js-line-number" data-line-number="7983"></td>
<td id="LC7983" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7984" class="blob-num js-line-number" data-line-number="7984"></td>
<td id="LC7984" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7985" class="blob-num js-line-number" data-line-number="7985"></td>
<td id="LC7985" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> rXML;</td>
</tr>
<tr>
<td id="L7986" class="blob-num js-line-number" data-line-number="7986"></td>
<td id="LC7986" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L7987" class="blob-num js-line-number" data-line-number="7987"></td>
<td id="LC7987" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7988" class="blob-num js-line-number" data-line-number="7988"></td>
<td id="LC7988" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7989" class="blob-num js-line-number" data-line-number="7989"></td>
<td id="LC7989" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_prepareMultipart</span>(<span class="pl-smi">fd</span>) {</td>
</tr>
<tr>
<td id="L7990" class="blob-num js-line-number" data-line-number="7990"></td>
<td id="LC7990" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> boundary <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>----moxieboundary<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-k">new</span> <span class="pl-en">Date</span>().<span class="pl-c1">getTime</span>()</td>
</tr>
<tr>
<td id="L7991" class="blob-num js-line-number" data-line-number="7991"></td>
<td id="LC7991" class="blob-code blob-code-inner js-file-line"> , dashdash <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>--<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L7992" class="blob-num js-line-number" data-line-number="7992"></td>
<td id="LC7992" class="blob-code blob-code-inner js-file-line"> , crlf <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-cce">\r\n</span><span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L7993" class="blob-num js-line-number" data-line-number="7993"></td>
<td id="LC7993" class="blob-code blob-code-inner js-file-line"> , multipart <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L7994" class="blob-num js-line-number" data-line-number="7994"></td>
<td id="LC7994" class="blob-code blob-code-inner js-file-line"> , <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L7995" class="blob-num js-line-number" data-line-number="7995"></td>
<td id="LC7995" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L7996" class="blob-num js-line-number" data-line-number="7996"></td>
<td id="LC7996" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L7997" class="blob-num js-line-number" data-line-number="7997"></td>
<td id="LC7997" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>send_binary_string<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L7998" class="blob-num js-line-number" data-line-number="7998"></td>
<td id="LC7998" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_SUPPORTED_ERR</span>);</td>
</tr>
<tr>
<td id="L7999" class="blob-num js-line-number" data-line-number="7999"></td>
<td id="LC7999" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8000" class="blob-num js-line-number" data-line-number="8000"></td>
<td id="LC8000" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8001" class="blob-num js-line-number" data-line-number="8001"></td>
<td id="LC8001" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_xhr</span>.<span class="pl-c1">setRequestHeader</span>(<span class="pl-s"><span class="pl-pds">'</span>Content-Type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>multipart/form-data; boundary=<span class="pl-pds">'</span></span> <span class="pl-k">+</span> boundary);</td>
</tr>
<tr>
<td id="L8002" class="blob-num js-line-number" data-line-number="8002"></td>
<td id="LC8002" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8003" class="blob-num js-line-number" data-line-number="8003"></td>
<td id="LC8003" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> append multipart parameters</span></td>
</tr>
<tr>
<td id="L8004" class="blob-num js-line-number" data-line-number="8004"></td>
<td id="LC8004" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fd</span>.<span class="pl-en">each</span>(<span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L8005" class="blob-num js-line-number" data-line-number="8005"></td>
<td id="LC8005" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Firefox 3.6 failed to convert multibyte characters to UTF-8 in sendAsBinary(), </span></td>
</tr>
<tr>
<td id="L8006" class="blob-num js-line-number" data-line-number="8006"></td>
<td id="LC8006" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> so we try it here ourselves with: unescape(encodeURIComponent(value))</span></td>
</tr>
<tr>
<td id="L8007" class="blob-num js-line-number" data-line-number="8007"></td>
<td id="LC8007" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L8008" class="blob-num js-line-number" data-line-number="8008"></td>
<td id="LC8008" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Build RFC2388 blob</span></td>
</tr>
<tr>
<td id="L8009" class="blob-num js-line-number" data-line-number="8009"></td>
<td id="LC8009" class="blob-code blob-code-inner js-file-line"> multipart <span class="pl-k">+=</span> dashdash <span class="pl-k">+</span> boundary <span class="pl-k">+</span> crlf <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L8010" class="blob-num js-line-number" data-line-number="8010"></td>
<td id="LC8010" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Content-Disposition: form-data; name="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>"; filename="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">unescape</span>(<span class="pl-c1">encodeURIComponent</span>(<span class="pl-smi">value</span>.<span class="pl-c1">name</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>blob<span class="pl-pds">'</span></span>)) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>"<span class="pl-pds">'</span></span> <span class="pl-k">+</span> crlf <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L8011" class="blob-num js-line-number" data-line-number="8011"></td>
<td id="LC8011" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Content-Type: <span class="pl-pds">'</span></span> <span class="pl-k">+</span> (<span class="pl-smi">value</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>application/octet-stream<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> crlf <span class="pl-k">+</span> crlf <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L8012" class="blob-num js-line-number" data-line-number="8012"></td>
<td id="LC8012" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">value</span>.<span class="pl-en">getSource</span>() <span class="pl-k">+</span> crlf;</td>
</tr>
<tr>
<td id="L8013" class="blob-num js-line-number" data-line-number="8013"></td>
<td id="LC8013" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L8014" class="blob-num js-line-number" data-line-number="8014"></td>
<td id="LC8014" class="blob-code blob-code-inner js-file-line"> multipart <span class="pl-k">+=</span> dashdash <span class="pl-k">+</span> boundary <span class="pl-k">+</span> crlf <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L8015" class="blob-num js-line-number" data-line-number="8015"></td>
<td id="LC8015" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Content-Disposition: form-data; name="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> name <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>"<span class="pl-pds">'</span></span> <span class="pl-k">+</span> crlf <span class="pl-k">+</span> crlf <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L8016" class="blob-num js-line-number" data-line-number="8016"></td>
<td id="LC8016" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">unescape</span>(<span class="pl-c1">encodeURIComponent</span>(value)) <span class="pl-k">+</span> crlf;</td>
</tr>
<tr>
<td id="L8017" class="blob-num js-line-number" data-line-number="8017"></td>
<td id="LC8017" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8018" class="blob-num js-line-number" data-line-number="8018"></td>
<td id="LC8018" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8019" class="blob-num js-line-number" data-line-number="8019"></td>
<td id="LC8019" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8020" class="blob-num js-line-number" data-line-number="8020"></td>
<td id="LC8020" class="blob-code blob-code-inner js-file-line"> multipart <span class="pl-k">+=</span> dashdash <span class="pl-k">+</span> boundary <span class="pl-k">+</span> dashdash <span class="pl-k">+</span> crlf;</td>
</tr>
<tr>
<td id="L8021" class="blob-num js-line-number" data-line-number="8021"></td>
<td id="LC8021" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8022" class="blob-num js-line-number" data-line-number="8022"></td>
<td id="LC8022" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> multipart;</td>
</tr>
<tr>
<td id="L8023" class="blob-num js-line-number" data-line-number="8023"></td>
<td id="LC8023" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8024" class="blob-num js-line-number" data-line-number="8024"></td>
<td id="LC8024" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8025" class="blob-num js-line-number" data-line-number="8025"></td>
<td id="LC8025" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8026" class="blob-num js-line-number" data-line-number="8026"></td>
<td id="LC8026" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">=</span> <span class="pl-c1">XMLHttpRequest</span>);</td>
</tr>
<tr>
<td id="L8027" class="blob-num js-line-number" data-line-number="8027"></td>
<td id="LC8027" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L8028" class="blob-num js-line-number" data-line-number="8028"></td>
<td id="LC8028" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8029" class="blob-num js-line-number" data-line-number="8029"></td>
<td id="LC8029" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/utils/BinaryReader.js</span></td>
</tr>
<tr>
<td id="L8030" class="blob-num js-line-number" data-line-number="8030"></td>
<td id="LC8030" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8031" class="blob-num js-line-number" data-line-number="8031"></td>
<td id="LC8031" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8032" class="blob-num js-line-number" data-line-number="8032"></td>
<td id="LC8032" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * BinaryReader.js</span></td>
</tr>
<tr>
<td id="L8033" class="blob-num js-line-number" data-line-number="8033"></td>
<td id="LC8033" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8034" class="blob-num js-line-number" data-line-number="8034"></td>
<td id="LC8034" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L8035" class="blob-num js-line-number" data-line-number="8035"></td>
<td id="LC8035" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L8036" class="blob-num js-line-number" data-line-number="8036"></td>
<td id="LC8036" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8037" class="blob-num js-line-number" data-line-number="8037"></td>
<td id="LC8037" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L8038" class="blob-num js-line-number" data-line-number="8038"></td>
<td id="LC8038" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L8039" class="blob-num js-line-number" data-line-number="8039"></td>
<td id="LC8039" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8040" class="blob-num js-line-number" data-line-number="8040"></td>
<td id="LC8040" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8041" class="blob-num js-line-number" data-line-number="8041"></td>
<td id="LC8041" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8042" class="blob-num js-line-number" data-line-number="8042"></td>
<td id="LC8042" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/utils/BinaryReader</span></td>
</tr>
<tr>
<td id="L8043" class="blob-num js-line-number" data-line-number="8043"></td>
<td id="LC8043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L8044" class="blob-num js-line-number" data-line-number="8044"></td>
<td id="LC8044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8045" class="blob-num js-line-number" data-line-number="8045"></td>
<td id="LC8045" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/utils/BinaryReader<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L8046" class="blob-num js-line-number" data-line-number="8046"></td>
<td id="LC8046" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L8047" class="blob-num js-line-number" data-line-number="8047"></td>
<td id="LC8047" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L8048" class="blob-num js-line-number" data-line-number="8048"></td>
<td id="LC8048" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8049" class="blob-num js-line-number" data-line-number="8049"></td>
<td id="LC8049" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8050" class="blob-num js-line-number" data-line-number="8050"></td>
<td id="LC8050" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">BinaryReader</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8051" class="blob-num js-line-number" data-line-number="8051"></td>
<td id="LC8051" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">ArrayBuffer</span>) {</td>
</tr>
<tr>
<td id="L8052" class="blob-num js-line-number" data-line-number="8052"></td>
<td id="LC8052" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ArrayBufferReader</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L8053" class="blob-num js-line-number" data-line-number="8053"></td>
<td id="LC8053" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L8054" class="blob-num js-line-number" data-line-number="8054"></td>
<td id="LC8054" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">UTF16StringReader</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L8055" class="blob-num js-line-number" data-line-number="8055"></td>
<td id="LC8055" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8056" class="blob-num js-line-number" data-line-number="8056"></td>
<td id="LC8056" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8057" class="blob-num js-line-number" data-line-number="8057"></td>
<td id="LC8057" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8058" class="blob-num js-line-number" data-line-number="8058"></td>
<td id="LC8058" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">BinaryReader</span>.<span class="pl-c1">prototype</span>, {</td>
</tr>
<tr>
<td id="L8059" class="blob-num js-line-number" data-line-number="8059"></td>
<td id="LC8059" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8060" class="blob-num js-line-number" data-line-number="8060"></td>
<td id="LC8060" class="blob-code blob-code-inner js-file-line"> littleEndian<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L8061" class="blob-num js-line-number" data-line-number="8061"></td>
<td id="LC8061" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8062" class="blob-num js-line-number" data-line-number="8062"></td>
<td id="LC8062" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8063" class="blob-num js-line-number" data-line-number="8063"></td>
<td id="LC8063" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">read</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">size</span>) {</td>
</tr>
<tr>
<td id="L8064" class="blob-num js-line-number" data-line-number="8064"></td>
<td id="LC8064" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> sum, mv, i;</td>
</tr>
<tr>
<td id="L8065" class="blob-num js-line-number" data-line-number="8065"></td>
<td id="LC8065" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8066" class="blob-num js-line-number" data-line-number="8066"></td>
<td id="LC8066" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (idx <span class="pl-k">+</span> size <span class="pl-k">></span> <span class="pl-c1">this</span>.<span class="pl-c1">length</span>()) {</td>
</tr>
<tr>
<td id="L8067" class="blob-num js-line-number" data-line-number="8067"></td>
<td id="LC8067" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">Error</span>(<span class="pl-s"><span class="pl-pds">"</span>You are trying to read outside the source boundaries.<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L8068" class="blob-num js-line-number" data-line-number="8068"></td>
<td id="LC8068" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8069" class="blob-num js-line-number" data-line-number="8069"></td>
<td id="LC8069" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8070" class="blob-num js-line-number" data-line-number="8070"></td>
<td id="LC8070" class="blob-code blob-code-inner js-file-line"> mv <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">littleEndian</span> </td>
</tr>
<tr>
<td id="L8071" class="blob-num js-line-number" data-line-number="8071"></td>
<td id="LC8071" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">?</span> <span class="pl-c1">0</span> </td>
</tr>
<tr>
<td id="L8072" class="blob-num js-line-number" data-line-number="8072"></td>
<td id="LC8072" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">8</span> <span class="pl-k">*</span> (size <span class="pl-k">-</span> <span class="pl-c1">1</span>)</td>
</tr>
<tr>
<td id="L8073" class="blob-num js-line-number" data-line-number="8073"></td>
<td id="LC8073" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L8074" class="blob-num js-line-number" data-line-number="8074"></td>
<td id="LC8074" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8075" class="blob-num js-line-number" data-line-number="8075"></td>
<td id="LC8075" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>, sum <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> size; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8076" class="blob-num js-line-number" data-line-number="8076"></td>
<td id="LC8076" class="blob-code blob-code-inner js-file-line"> sum <span class="pl-k">|=</span> (<span class="pl-c1">this</span>.<span class="pl-en">readByteAt</span>(idx <span class="pl-k">+</span> i) <span class="pl-k"><<</span> <span class="pl-c1">Math</span>.<span class="pl-c1">abs</span>(mv <span class="pl-k">+</span> i<span class="pl-k">*</span><span class="pl-c1">8</span>));</td>
</tr>
<tr>
<td id="L8077" class="blob-num js-line-number" data-line-number="8077"></td>
<td id="LC8077" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8078" class="blob-num js-line-number" data-line-number="8078"></td>
<td id="LC8078" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> sum;</td>
</tr>
<tr>
<td id="L8079" class="blob-num js-line-number" data-line-number="8079"></td>
<td id="LC8079" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8080" class="blob-num js-line-number" data-line-number="8080"></td>
<td id="LC8080" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8081" class="blob-num js-line-number" data-line-number="8081"></td>
<td id="LC8081" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8082" class="blob-num js-line-number" data-line-number="8082"></td>
<td id="LC8082" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">write</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">num</span>, <span class="pl-smi">size</span>) {</td>
</tr>
<tr>
<td id="L8083" class="blob-num js-line-number" data-line-number="8083"></td>
<td id="LC8083" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> mv, i, str <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L8084" class="blob-num js-line-number" data-line-number="8084"></td>
<td id="LC8084" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8085" class="blob-num js-line-number" data-line-number="8085"></td>
<td id="LC8085" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (idx <span class="pl-k">></span> <span class="pl-c1">this</span>.<span class="pl-c1">length</span>()) {</td>
</tr>
<tr>
<td id="L8086" class="blob-num js-line-number" data-line-number="8086"></td>
<td id="LC8086" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">Error</span>(<span class="pl-s"><span class="pl-pds">"</span>You are trying to write outside the source boundaries.<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L8087" class="blob-num js-line-number" data-line-number="8087"></td>
<td id="LC8087" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8088" class="blob-num js-line-number" data-line-number="8088"></td>
<td id="LC8088" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8089" class="blob-num js-line-number" data-line-number="8089"></td>
<td id="LC8089" class="blob-code blob-code-inner js-file-line"> mv <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">littleEndian</span> </td>
</tr>
<tr>
<td id="L8090" class="blob-num js-line-number" data-line-number="8090"></td>
<td id="LC8090" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">?</span> <span class="pl-c1">0</span> </td>
</tr>
<tr>
<td id="L8091" class="blob-num js-line-number" data-line-number="8091"></td>
<td id="LC8091" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">:</span> <span class="pl-k">-</span><span class="pl-c1">8</span> <span class="pl-k">*</span> (size <span class="pl-k">-</span> <span class="pl-c1">1</span>)</td>
</tr>
<tr>
<td id="L8092" class="blob-num js-line-number" data-line-number="8092"></td>
<td id="LC8092" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L8093" class="blob-num js-line-number" data-line-number="8093"></td>
<td id="LC8093" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8094" class="blob-num js-line-number" data-line-number="8094"></td>
<td id="LC8094" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> size; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8095" class="blob-num js-line-number" data-line-number="8095"></td>
<td id="LC8095" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">writeByteAt</span>(idx <span class="pl-k">+</span> i, (num <span class="pl-k">>></span> <span class="pl-c1">Math</span>.<span class="pl-c1">abs</span>(mv <span class="pl-k">+</span> i<span class="pl-k">*</span><span class="pl-c1">8</span>)) <span class="pl-k">&</span> <span class="pl-c1">255</span>);</td>
</tr>
<tr>
<td id="L8096" class="blob-num js-line-number" data-line-number="8096"></td>
<td id="LC8096" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8097" class="blob-num js-line-number" data-line-number="8097"></td>
<td id="LC8097" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8098" class="blob-num js-line-number" data-line-number="8098"></td>
<td id="LC8098" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8099" class="blob-num js-line-number" data-line-number="8099"></td>
<td id="LC8099" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8100" class="blob-num js-line-number" data-line-number="8100"></td>
<td id="LC8100" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">BYTE</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8101" class="blob-num js-line-number" data-line-number="8101"></td>
<td id="LC8101" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">read</span>(idx, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L8102" class="blob-num js-line-number" data-line-number="8102"></td>
<td id="LC8102" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8103" class="blob-num js-line-number" data-line-number="8103"></td>
<td id="LC8103" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8104" class="blob-num js-line-number" data-line-number="8104"></td>
<td id="LC8104" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8105" class="blob-num js-line-number" data-line-number="8105"></td>
<td id="LC8105" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">SHORT</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8106" class="blob-num js-line-number" data-line-number="8106"></td>
<td id="LC8106" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">read</span>(idx, <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L8107" class="blob-num js-line-number" data-line-number="8107"></td>
<td id="LC8107" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8108" class="blob-num js-line-number" data-line-number="8108"></td>
<td id="LC8108" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8109" class="blob-num js-line-number" data-line-number="8109"></td>
<td id="LC8109" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8110" class="blob-num js-line-number" data-line-number="8110"></td>
<td id="LC8110" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">LONG</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8111" class="blob-num js-line-number" data-line-number="8111"></td>
<td id="LC8111" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">read</span>(idx, <span class="pl-c1">4</span>);</td>
</tr>
<tr>
<td id="L8112" class="blob-num js-line-number" data-line-number="8112"></td>
<td id="LC8112" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8113" class="blob-num js-line-number" data-line-number="8113"></td>
<td id="LC8113" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8114" class="blob-num js-line-number" data-line-number="8114"></td>
<td id="LC8114" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8115" class="blob-num js-line-number" data-line-number="8115"></td>
<td id="LC8115" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">SLONG</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) { <span class="pl-c"><span class="pl-c">//</span> 2's complement notation</span></td>
</tr>
<tr>
<td id="L8116" class="blob-num js-line-number" data-line-number="8116"></td>
<td id="LC8116" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> num <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">read</span>(idx, <span class="pl-c1">4</span>);</td>
</tr>
<tr>
<td id="L8117" class="blob-num js-line-number" data-line-number="8117"></td>
<td id="LC8117" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (num <span class="pl-k">></span> <span class="pl-c1">2147483647</span> <span class="pl-k">?</span> num <span class="pl-k">-</span> <span class="pl-c1">4294967296</span> <span class="pl-k">:</span> num);</td>
</tr>
<tr>
<td id="L8118" class="blob-num js-line-number" data-line-number="8118"></td>
<td id="LC8118" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8119" class="blob-num js-line-number" data-line-number="8119"></td>
<td id="LC8119" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8120" class="blob-num js-line-number" data-line-number="8120"></td>
<td id="LC8120" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8121" class="blob-num js-line-number" data-line-number="8121"></td>
<td id="LC8121" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">CHAR</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8122" class="blob-num js-line-number" data-line-number="8122"></td>
<td id="LC8122" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(<span class="pl-c1">this</span>.<span class="pl-en">read</span>(idx, <span class="pl-c1">1</span>));</td>
</tr>
<tr>
<td id="L8123" class="blob-num js-line-number" data-line-number="8123"></td>
<td id="LC8123" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8124" class="blob-num js-line-number" data-line-number="8124"></td>
<td id="LC8124" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8125" class="blob-num js-line-number" data-line-number="8125"></td>
<td id="LC8125" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8126" class="blob-num js-line-number" data-line-number="8126"></td>
<td id="LC8126" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">STRING</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">count</span>) {</td>
</tr>
<tr>
<td id="L8127" class="blob-num js-line-number" data-line-number="8127"></td>
<td id="LC8127" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">asArray</span>(<span class="pl-s"><span class="pl-pds">'</span>CHAR<span class="pl-pds">'</span></span>, idx, count).<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L8128" class="blob-num js-line-number" data-line-number="8128"></td>
<td id="LC8128" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8129" class="blob-num js-line-number" data-line-number="8129"></td>
<td id="LC8129" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8130" class="blob-num js-line-number" data-line-number="8130"></td>
<td id="LC8130" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8131" class="blob-num js-line-number" data-line-number="8131"></td>
<td id="LC8131" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">asArray</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">idx</span>, <span class="pl-smi">count</span>) {</td>
</tr>
<tr>
<td id="L8132" class="blob-num js-line-number" data-line-number="8132"></td>
<td id="LC8132" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> values <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L8133" class="blob-num js-line-number" data-line-number="8133"></td>
<td id="LC8133" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8134" class="blob-num js-line-number" data-line-number="8134"></td>
<td id="LC8134" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> count; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8135" class="blob-num js-line-number" data-line-number="8135"></td>
<td id="LC8135" class="blob-code blob-code-inner js-file-line"> values[i] <span class="pl-k">=</span> <span class="pl-c1">this</span>[type](idx <span class="pl-k">+</span> i);</td>
</tr>
<tr>
<td id="L8136" class="blob-num js-line-number" data-line-number="8136"></td>
<td id="LC8136" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8137" class="blob-num js-line-number" data-line-number="8137"></td>
<td id="LC8137" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> values;</td>
</tr>
<tr>
<td id="L8138" class="blob-num js-line-number" data-line-number="8138"></td>
<td id="LC8138" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8139" class="blob-num js-line-number" data-line-number="8139"></td>
<td id="LC8139" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8140" class="blob-num js-line-number" data-line-number="8140"></td>
<td id="LC8140" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8141" class="blob-num js-line-number" data-line-number="8141"></td>
<td id="LC8141" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8142" class="blob-num js-line-number" data-line-number="8142"></td>
<td id="LC8142" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">ArrayBufferReader</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8143" class="blob-num js-line-number" data-line-number="8143"></td>
<td id="LC8143" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _dv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">DataView</span>(data);</td>
</tr>
<tr>
<td id="L8144" class="blob-num js-line-number" data-line-number="8144"></td>
<td id="LC8144" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8145" class="blob-num js-line-number" data-line-number="8145"></td>
<td id="LC8145" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L8146" class="blob-num js-line-number" data-line-number="8146"></td>
<td id="LC8146" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8147" class="blob-num js-line-number" data-line-number="8147"></td>
<td id="LC8147" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readByteAt</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8148" class="blob-num js-line-number" data-line-number="8148"></td>
<td id="LC8148" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_dv</span>.<span class="pl-en">getUint8</span>(idx);</td>
</tr>
<tr>
<td id="L8149" class="blob-num js-line-number" data-line-number="8149"></td>
<td id="LC8149" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8150" class="blob-num js-line-number" data-line-number="8150"></td>
<td id="LC8150" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8151" class="blob-num js-line-number" data-line-number="8151"></td>
<td id="LC8151" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8152" class="blob-num js-line-number" data-line-number="8152"></td>
<td id="LC8152" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">writeByteAt</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L8153" class="blob-num js-line-number" data-line-number="8153"></td>
<td id="LC8153" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_dv</span>.<span class="pl-en">setUint8</span>(idx, value);</td>
</tr>
<tr>
<td id="L8154" class="blob-num js-line-number" data-line-number="8154"></td>
<td id="LC8154" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8155" class="blob-num js-line-number" data-line-number="8155"></td>
<td id="LC8155" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8156" class="blob-num js-line-number" data-line-number="8156"></td>
<td id="LC8156" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8157" class="blob-num js-line-number" data-line-number="8157"></td>
<td id="LC8157" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">SEGMENT</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">size</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L8158" class="blob-num js-line-number" data-line-number="8158"></td>
<td id="LC8158" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-c1">arguments</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L8159" class="blob-num js-line-number" data-line-number="8159"></td>
<td id="LC8159" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">2</span>:</td>
</tr>
<tr>
<td id="L8160" class="blob-num js-line-number" data-line-number="8160"></td>
<td id="LC8160" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">data</span>.<span class="pl-c1">slice</span>(idx, idx <span class="pl-k">+</span> size);</td>
</tr>
<tr>
<td id="L8161" class="blob-num js-line-number" data-line-number="8161"></td>
<td id="LC8161" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8162" class="blob-num js-line-number" data-line-number="8162"></td>
<td id="LC8162" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">1</span>:</td>
</tr>
<tr>
<td id="L8163" class="blob-num js-line-number" data-line-number="8163"></td>
<td id="LC8163" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">data</span>.<span class="pl-c1">slice</span>(idx);</td>
</tr>
<tr>
<td id="L8164" class="blob-num js-line-number" data-line-number="8164"></td>
<td id="LC8164" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8165" class="blob-num js-line-number" data-line-number="8165"></td>
<td id="LC8165" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">3</span>:</td>
</tr>
<tr>
<td id="L8166" class="blob-num js-line-number" data-line-number="8166"></td>
<td id="LC8166" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">===</span> <span class="pl-c1">null</span>) {</td>
</tr>
<tr>
<td id="L8167" class="blob-num js-line-number" data-line-number="8167"></td>
<td id="LC8167" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">ArrayBuffer</span>();</td>
</tr>
<tr>
<td id="L8168" class="blob-num js-line-number" data-line-number="8168"></td>
<td id="LC8168" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8169" class="blob-num js-line-number" data-line-number="8169"></td>
<td id="LC8169" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8170" class="blob-num js-line-number" data-line-number="8170"></td>
<td id="LC8170" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">instanceof</span> <span class="pl-c1">ArrayBuffer</span>) { </td>
</tr>
<tr>
<td id="L8171" class="blob-num js-line-number" data-line-number="8171"></td>
<td id="LC8171" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> arr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Uint8Array</span>(<span class="pl-c1">this</span>.<span class="pl-c1">length</span>() <span class="pl-k">-</span> size <span class="pl-k">+</span> <span class="pl-smi">value</span>.<span class="pl-smi">byteLength</span>);</td>
</tr>
<tr>
<td id="L8172" class="blob-num js-line-number" data-line-number="8172"></td>
<td id="LC8172" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (idx <span class="pl-k">></span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L8173" class="blob-num js-line-number" data-line-number="8173"></td>
<td id="LC8173" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">arr</span>.<span class="pl-c1">set</span>(<span class="pl-k">new</span> <span class="pl-en">Uint8Array</span>(<span class="pl-smi">data</span>.<span class="pl-c1">slice</span>(<span class="pl-c1">0</span>, idx)), <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L8174" class="blob-num js-line-number" data-line-number="8174"></td>
<td id="LC8174" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8175" class="blob-num js-line-number" data-line-number="8175"></td>
<td id="LC8175" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">arr</span>.<span class="pl-c1">set</span>(<span class="pl-k">new</span> <span class="pl-en">Uint8Array</span>(value), idx);</td>
</tr>
<tr>
<td id="L8176" class="blob-num js-line-number" data-line-number="8176"></td>
<td id="LC8176" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">arr</span>.<span class="pl-c1">set</span>(<span class="pl-k">new</span> <span class="pl-en">Uint8Array</span>(<span class="pl-smi">data</span>.<span class="pl-c1">slice</span>(idx <span class="pl-k">+</span> size)), idx <span class="pl-k">+</span> <span class="pl-smi">value</span>.<span class="pl-smi">byteLength</span>);</td>
</tr>
<tr>
<td id="L8177" class="blob-num js-line-number" data-line-number="8177"></td>
<td id="LC8177" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8178" class="blob-num js-line-number" data-line-number="8178"></td>
<td id="LC8178" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L8179" class="blob-num js-line-number" data-line-number="8179"></td>
<td id="LC8179" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">arr</span>.<span class="pl-smi">buffer</span>;</td>
</tr>
<tr>
<td id="L8180" class="blob-num js-line-number" data-line-number="8180"></td>
<td id="LC8180" class="blob-code blob-code-inner js-file-line"> _dv <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">DataView</span>(data);</td>
</tr>
<tr>
<td id="L8181" class="blob-num js-line-number" data-line-number="8181"></td>
<td id="LC8181" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L8182" class="blob-num js-line-number" data-line-number="8182"></td>
<td id="LC8182" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8183" class="blob-num js-line-number" data-line-number="8183"></td>
<td id="LC8183" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8184" class="blob-num js-line-number" data-line-number="8184"></td>
<td id="LC8184" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>: <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L8185" class="blob-num js-line-number" data-line-number="8185"></td>
<td id="LC8185" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8186" class="blob-num js-line-number" data-line-number="8186"></td>
<td id="LC8186" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8187" class="blob-num js-line-number" data-line-number="8187"></td>
<td id="LC8187" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8188" class="blob-num js-line-number" data-line-number="8188"></td>
<td id="LC8188" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8189" class="blob-num js-line-number" data-line-number="8189"></td>
<td id="LC8189" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">length</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8190" class="blob-num js-line-number" data-line-number="8190"></td>
<td id="LC8190" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data <span class="pl-k">?</span> <span class="pl-smi">data</span>.<span class="pl-smi">byteLength</span> <span class="pl-k">:</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L8191" class="blob-num js-line-number" data-line-number="8191"></td>
<td id="LC8191" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8192" class="blob-num js-line-number" data-line-number="8192"></td>
<td id="LC8192" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8193" class="blob-num js-line-number" data-line-number="8193"></td>
<td id="LC8193" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8194" class="blob-num js-line-number" data-line-number="8194"></td>
<td id="LC8194" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">clear</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8195" class="blob-num js-line-number" data-line-number="8195"></td>
<td id="LC8195" class="blob-code blob-code-inner js-file-line"> _dv <span class="pl-k">=</span> data <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8196" class="blob-num js-line-number" data-line-number="8196"></td>
<td id="LC8196" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8197" class="blob-num js-line-number" data-line-number="8197"></td>
<td id="LC8197" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8198" class="blob-num js-line-number" data-line-number="8198"></td>
<td id="LC8198" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8199" class="blob-num js-line-number" data-line-number="8199"></td>
<td id="LC8199" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8200" class="blob-num js-line-number" data-line-number="8200"></td>
<td id="LC8200" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8201" class="blob-num js-line-number" data-line-number="8201"></td>
<td id="LC8201" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">UTF16StringReader</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8202" class="blob-num js-line-number" data-line-number="8202"></td>
<td id="LC8202" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L8203" class="blob-num js-line-number" data-line-number="8203"></td>
<td id="LC8203" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8204" class="blob-num js-line-number" data-line-number="8204"></td>
<td id="LC8204" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">readByteAt</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8205" class="blob-num js-line-number" data-line-number="8205"></td>
<td id="LC8205" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">data</span>.<span class="pl-c1">charCodeAt</span>(idx);</td>
</tr>
<tr>
<td id="L8206" class="blob-num js-line-number" data-line-number="8206"></td>
<td id="LC8206" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8207" class="blob-num js-line-number" data-line-number="8207"></td>
<td id="LC8207" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8208" class="blob-num js-line-number" data-line-number="8208"></td>
<td id="LC8208" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8209" class="blob-num js-line-number" data-line-number="8209"></td>
<td id="LC8209" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">writeByteAt</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L8210" class="blob-num js-line-number" data-line-number="8210"></td>
<td id="LC8210" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">putstr</span>(<span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(value), idx, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L8211" class="blob-num js-line-number" data-line-number="8211"></td>
<td id="LC8211" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8212" class="blob-num js-line-number" data-line-number="8212"></td>
<td id="LC8212" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8213" class="blob-num js-line-number" data-line-number="8213"></td>
<td id="LC8213" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8214" class="blob-num js-line-number" data-line-number="8214"></td>
<td id="LC8214" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">SEGMENT</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>, <span class="pl-smi">length</span>, <span class="pl-smi">segment</span>) {</td>
</tr>
<tr>
<td id="L8215" class="blob-num js-line-number" data-line-number="8215"></td>
<td id="LC8215" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (<span class="pl-c1">arguments</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L8216" class="blob-num js-line-number" data-line-number="8216"></td>
<td id="LC8216" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">1</span>:</td>
</tr>
<tr>
<td id="L8217" class="blob-num js-line-number" data-line-number="8217"></td>
<td id="LC8217" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">data</span>.<span class="pl-c1">substr</span>(idx);</td>
</tr>
<tr>
<td id="L8218" class="blob-num js-line-number" data-line-number="8218"></td>
<td id="LC8218" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">2</span>:</td>
</tr>
<tr>
<td id="L8219" class="blob-num js-line-number" data-line-number="8219"></td>
<td id="LC8219" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">data</span>.<span class="pl-c1">substr</span>(idx, length);</td>
</tr>
<tr>
<td id="L8220" class="blob-num js-line-number" data-line-number="8220"></td>
<td id="LC8220" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">3</span>:</td>
</tr>
<tr>
<td id="L8221" class="blob-num js-line-number" data-line-number="8221"></td>
<td id="LC8221" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">putstr</span>(segment <span class="pl-k">!==</span> <span class="pl-c1">null</span> <span class="pl-k">?</span> segment <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>, idx, length);</td>
</tr>
<tr>
<td id="L8222" class="blob-num js-line-number" data-line-number="8222"></td>
<td id="LC8222" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L8223" class="blob-num js-line-number" data-line-number="8223"></td>
<td id="LC8223" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">default</span>: <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L8224" class="blob-num js-line-number" data-line-number="8224"></td>
<td id="LC8224" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8225" class="blob-num js-line-number" data-line-number="8225"></td>
<td id="LC8225" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8226" class="blob-num js-line-number" data-line-number="8226"></td>
<td id="LC8226" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8227" class="blob-num js-line-number" data-line-number="8227"></td>
<td id="LC8227" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8228" class="blob-num js-line-number" data-line-number="8228"></td>
<td id="LC8228" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">length</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8229" class="blob-num js-line-number" data-line-number="8229"></td>
<td id="LC8229" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data <span class="pl-k">?</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span> <span class="pl-k">:</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L8230" class="blob-num js-line-number" data-line-number="8230"></td>
<td id="LC8230" class="blob-code blob-code-inner js-file-line"> }, </td>
</tr>
<tr>
<td id="L8231" class="blob-num js-line-number" data-line-number="8231"></td>
<td id="LC8231" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8232" class="blob-num js-line-number" data-line-number="8232"></td>
<td id="LC8232" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">clear</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8233" class="blob-num js-line-number" data-line-number="8233"></td>
<td id="LC8233" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8234" class="blob-num js-line-number" data-line-number="8234"></td>
<td id="LC8234" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8235" class="blob-num js-line-number" data-line-number="8235"></td>
<td id="LC8235" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8236" class="blob-num js-line-number" data-line-number="8236"></td>
<td id="LC8236" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8237" class="blob-num js-line-number" data-line-number="8237"></td>
<td id="LC8237" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8238" class="blob-num js-line-number" data-line-number="8238"></td>
<td id="LC8238" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">putstr</span>(<span class="pl-smi">segment</span>, <span class="pl-smi">idx</span>, <span class="pl-smi">length</span>) {</td>
</tr>
<tr>
<td id="L8239" class="blob-num js-line-number" data-line-number="8239"></td>
<td id="LC8239" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-c1">arguments</span>.<span class="pl-c1">length</span> <span class="pl-k">===</span> <span class="pl-c1">3</span> <span class="pl-k">?</span> length <span class="pl-k">:</span> <span class="pl-smi">data</span>.<span class="pl-c1">length</span> <span class="pl-k">-</span> idx <span class="pl-k">-</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L8240" class="blob-num js-line-number" data-line-number="8240"></td>
<td id="LC8240" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-c1">substr</span>(<span class="pl-c1">0</span>, idx) <span class="pl-k">+</span> segment <span class="pl-k">+</span> <span class="pl-smi">data</span>.<span class="pl-c1">substr</span>(length <span class="pl-k">+</span> idx);</td>
</tr>
<tr>
<td id="L8241" class="blob-num js-line-number" data-line-number="8241"></td>
<td id="LC8241" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8242" class="blob-num js-line-number" data-line-number="8242"></td>
<td id="LC8242" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8243" class="blob-num js-line-number" data-line-number="8243"></td>
<td id="LC8243" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8244" class="blob-num js-line-number" data-line-number="8244"></td>
<td id="LC8244" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8245" class="blob-num js-line-number" data-line-number="8245"></td>
<td id="LC8245" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> BinaryReader;</td>
</tr>
<tr>
<td id="L8246" class="blob-num js-line-number" data-line-number="8246"></td>
<td id="LC8246" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L8247" class="blob-num js-line-number" data-line-number="8247"></td>
<td id="LC8247" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8248" class="blob-num js-line-number" data-line-number="8248"></td>
<td id="LC8248" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/JPEGHeaders.js</span></td>
</tr>
<tr>
<td id="L8249" class="blob-num js-line-number" data-line-number="8249"></td>
<td id="LC8249" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8250" class="blob-num js-line-number" data-line-number="8250"></td>
<td id="LC8250" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8251" class="blob-num js-line-number" data-line-number="8251"></td>
<td id="LC8251" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * JPEGHeaders.js</span></td>
</tr>
<tr>
<td id="L8252" class="blob-num js-line-number" data-line-number="8252"></td>
<td id="LC8252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8253" class="blob-num js-line-number" data-line-number="8253"></td>
<td id="LC8253" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L8254" class="blob-num js-line-number" data-line-number="8254"></td>
<td id="LC8254" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L8255" class="blob-num js-line-number" data-line-number="8255"></td>
<td id="LC8255" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8256" class="blob-num js-line-number" data-line-number="8256"></td>
<td id="LC8256" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L8257" class="blob-num js-line-number" data-line-number="8257"></td>
<td id="LC8257" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L8258" class="blob-num js-line-number" data-line-number="8258"></td>
<td id="LC8258" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8259" class="blob-num js-line-number" data-line-number="8259"></td>
<td id="LC8259" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8260" class="blob-num js-line-number" data-line-number="8260"></td>
<td id="LC8260" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8261" class="blob-num js-line-number" data-line-number="8261"></td>
<td id="LC8261" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/image/JPEGHeaders</span></td>
</tr>
<tr>
<td id="L8262" class="blob-num js-line-number" data-line-number="8262"></td>
<td id="LC8262" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L8263" class="blob-num js-line-number" data-line-number="8263"></td>
<td id="LC8263" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8264" class="blob-num js-line-number" data-line-number="8264"></td>
<td id="LC8264" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/JPEGHeaders<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L8265" class="blob-num js-line-number" data-line-number="8265"></td>
<td id="LC8265" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/utils/BinaryReader<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8266" class="blob-num js-line-number" data-line-number="8266"></td>
<td id="LC8266" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L8267" class="blob-num js-line-number" data-line-number="8267"></td>
<td id="LC8267" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">BinaryReader</span>, <span class="pl-smi">x</span>) {</td>
</tr>
<tr>
<td id="L8268" class="blob-num js-line-number" data-line-number="8268"></td>
<td id="LC8268" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8269" class="blob-num js-line-number" data-line-number="8269"></td>
<td id="LC8269" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span> <span class="pl-en">JPEGHeaders</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8270" class="blob-num js-line-number" data-line-number="8270"></td>
<td id="LC8270" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> headers <span class="pl-k">=</span> [], _br, idx, marker, length <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L8271" class="blob-num js-line-number" data-line-number="8271"></td>
<td id="LC8271" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8272" class="blob-num js-line-number" data-line-number="8272"></td>
<td id="LC8272" class="blob-code blob-code-inner js-file-line"> _br <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">BinaryReader</span>(data);</td>
</tr>
<tr>
<td id="L8273" class="blob-num js-line-number" data-line-number="8273"></td>
<td id="LC8273" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8274" class="blob-num js-line-number" data-line-number="8274"></td>
<td id="LC8274" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Check if data is jpeg</span></td>
</tr>
<tr>
<td id="L8275" class="blob-num js-line-number" data-line-number="8275"></td>
<td id="LC8275" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_br</span>.<span class="pl-en">SHORT</span>(<span class="pl-c1">0</span>) <span class="pl-k">!==</span> <span class="pl-c1">0xFFD8</span>) {</td>
</tr>
<tr>
<td id="L8276" class="blob-num js-line-number" data-line-number="8276"></td>
<td id="LC8276" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L8277" class="blob-num js-line-number" data-line-number="8277"></td>
<td id="LC8277" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L8278" class="blob-num js-line-number" data-line-number="8278"></td>
<td id="LC8278" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8279" class="blob-num js-line-number" data-line-number="8279"></td>
<td id="LC8279" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8280" class="blob-num js-line-number" data-line-number="8280"></td>
<td id="LC8280" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">=</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L8281" class="blob-num js-line-number" data-line-number="8281"></td>
<td id="LC8281" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8282" class="blob-num js-line-number" data-line-number="8282"></td>
<td id="LC8282" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (idx <span class="pl-k"><=</span> <span class="pl-smi">_br</span>.<span class="pl-c1">length</span>()) {</td>
</tr>
<tr>
<td id="L8283" class="blob-num js-line-number" data-line-number="8283"></td>
<td id="LC8283" class="blob-code blob-code-inner js-file-line"> marker <span class="pl-k">=</span> <span class="pl-smi">_br</span>.<span class="pl-en">SHORT</span>(idx);</td>
</tr>
<tr>
<td id="L8284" class="blob-num js-line-number" data-line-number="8284"></td>
<td id="LC8284" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8285" class="blob-num js-line-number" data-line-number="8285"></td>
<td id="LC8285" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> omit RST (restart) markers</span></td>
</tr>
<tr>
<td id="L8286" class="blob-num js-line-number" data-line-number="8286"></td>
<td id="LC8286" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (marker <span class="pl-k">>=</span> <span class="pl-c1">0xFFD0</span> <span class="pl-k">&&</span> marker <span class="pl-k"><=</span> <span class="pl-c1">0xFFD7</span>) {</td>
</tr>
<tr>
<td id="L8287" class="blob-num js-line-number" data-line-number="8287"></td>
<td id="LC8287" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">+=</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L8288" class="blob-num js-line-number" data-line-number="8288"></td>
<td id="LC8288" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">continue</span>;</td>
</tr>
<tr>
<td id="L8289" class="blob-num js-line-number" data-line-number="8289"></td>
<td id="LC8289" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8290" class="blob-num js-line-number" data-line-number="8290"></td>
<td id="LC8290" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8291" class="blob-num js-line-number" data-line-number="8291"></td>
<td id="LC8291" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> no headers allowed after SOS marker</span></td>
</tr>
<tr>
<td id="L8292" class="blob-num js-line-number" data-line-number="8292"></td>
<td id="LC8292" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (marker <span class="pl-k">===</span> <span class="pl-c1">0xFFDA</span> <span class="pl-k">||</span> marker <span class="pl-k">===</span> <span class="pl-c1">0xFFD9</span>) {</td>
</tr>
<tr>
<td id="L8293" class="blob-num js-line-number" data-line-number="8293"></td>
<td id="LC8293" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L8294" class="blob-num js-line-number" data-line-number="8294"></td>
<td id="LC8294" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8295" class="blob-num js-line-number" data-line-number="8295"></td>
<td id="LC8295" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8296" class="blob-num js-line-number" data-line-number="8296"></td>
<td id="LC8296" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-smi">_br</span>.<span class="pl-en">SHORT</span>(idx <span class="pl-k">+</span> <span class="pl-c1">2</span>) <span class="pl-k">+</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L8297" class="blob-num js-line-number" data-line-number="8297"></td>
<td id="LC8297" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8298" class="blob-num js-line-number" data-line-number="8298"></td>
<td id="LC8298" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> APPn marker detected</span></td>
</tr>
<tr>
<td id="L8299" class="blob-num js-line-number" data-line-number="8299"></td>
<td id="LC8299" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (marker <span class="pl-k">>=</span> <span class="pl-c1">0xFFE1</span> <span class="pl-k">&&</span> marker <span class="pl-k"><=</span> <span class="pl-c1">0xFFEF</span>) {</td>
</tr>
<tr>
<td id="L8300" class="blob-num js-line-number" data-line-number="8300"></td>
<td id="LC8300" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">headers</span>.<span class="pl-c1">push</span>({</td>
</tr>
<tr>
<td id="L8301" class="blob-num js-line-number" data-line-number="8301"></td>
<td id="LC8301" class="blob-code blob-code-inner js-file-line"> hex<span class="pl-k">:</span> marker,</td>
</tr>
<tr>
<td id="L8302" class="blob-num js-line-number" data-line-number="8302"></td>
<td id="LC8302" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>APP<span class="pl-pds">'</span></span> <span class="pl-k">+</span> (marker <span class="pl-k">&</span> <span class="pl-c1">0x000F</span>),</td>
</tr>
<tr>
<td id="L8303" class="blob-num js-line-number" data-line-number="8303"></td>
<td id="LC8303" class="blob-code blob-code-inner js-file-line"> start<span class="pl-k">:</span> idx,</td>
</tr>
<tr>
<td id="L8304" class="blob-num js-line-number" data-line-number="8304"></td>
<td id="LC8304" class="blob-code blob-code-inner js-file-line"> length<span class="pl-k">:</span> length,</td>
</tr>
<tr>
<td id="L8305" class="blob-num js-line-number" data-line-number="8305"></td>
<td id="LC8305" class="blob-code blob-code-inner js-file-line"> segment<span class="pl-k">:</span> <span class="pl-smi">_br</span>.<span class="pl-en">SEGMENT</span>(idx, length)</td>
</tr>
<tr>
<td id="L8306" class="blob-num js-line-number" data-line-number="8306"></td>
<td id="LC8306" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8307" class="blob-num js-line-number" data-line-number="8307"></td>
<td id="LC8307" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8308" class="blob-num js-line-number" data-line-number="8308"></td>
<td id="LC8308" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8309" class="blob-num js-line-number" data-line-number="8309"></td>
<td id="LC8309" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">+=</span> length;</td>
</tr>
<tr>
<td id="L8310" class="blob-num js-line-number" data-line-number="8310"></td>
<td id="LC8310" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8311" class="blob-num js-line-number" data-line-number="8311"></td>
<td id="LC8311" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8312" class="blob-num js-line-number" data-line-number="8312"></td>
<td id="LC8312" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L8313" class="blob-num js-line-number" data-line-number="8313"></td>
<td id="LC8313" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8314" class="blob-num js-line-number" data-line-number="8314"></td>
<td id="LC8314" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L8315" class="blob-num js-line-number" data-line-number="8315"></td>
<td id="LC8315" class="blob-code blob-code-inner js-file-line"> headers<span class="pl-k">:</span> headers,</td>
</tr>
<tr>
<td id="L8316" class="blob-num js-line-number" data-line-number="8316"></td>
<td id="LC8316" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8317" class="blob-num js-line-number" data-line-number="8317"></td>
<td id="LC8317" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">restore</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8318" class="blob-num js-line-number" data-line-number="8318"></td>
<td id="LC8318" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> max, i, br;</td>
</tr>
<tr>
<td id="L8319" class="blob-num js-line-number" data-line-number="8319"></td>
<td id="LC8319" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8320" class="blob-num js-line-number" data-line-number="8320"></td>
<td id="LC8320" class="blob-code blob-code-inner js-file-line"> br <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">BinaryReader</span>(data);</td>
</tr>
<tr>
<td id="L8321" class="blob-num js-line-number" data-line-number="8321"></td>
<td id="LC8321" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8322" class="blob-num js-line-number" data-line-number="8322"></td>
<td id="LC8322" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">=</span> <span class="pl-smi">br</span>.<span class="pl-en">SHORT</span>(<span class="pl-c1">2</span>) <span class="pl-k">==</span> <span class="pl-c1">0xFFE0</span> <span class="pl-k">?</span> <span class="pl-c1">4</span> <span class="pl-k">+</span> <span class="pl-smi">br</span>.<span class="pl-en">SHORT</span>(<span class="pl-c1">4</span>) <span class="pl-k">:</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L8323" class="blob-num js-line-number" data-line-number="8323"></td>
<td id="LC8323" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8324" class="blob-num js-line-number" data-line-number="8324"></td>
<td id="LC8324" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>, max <span class="pl-k">=</span> <span class="pl-smi">headers</span>.<span class="pl-c1">length</span>; i <span class="pl-k"><</span> max; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8325" class="blob-num js-line-number" data-line-number="8325"></td>
<td id="LC8325" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">br</span>.<span class="pl-en">SEGMENT</span>(idx, <span class="pl-c1">0</span>, headers[i].<span class="pl-smi">segment</span>);</td>
</tr>
<tr>
<td id="L8326" class="blob-num js-line-number" data-line-number="8326"></td>
<td id="LC8326" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">+=</span> headers[i].<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L8327" class="blob-num js-line-number" data-line-number="8327"></td>
<td id="LC8327" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8328" class="blob-num js-line-number" data-line-number="8328"></td>
<td id="LC8328" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8329" class="blob-num js-line-number" data-line-number="8329"></td>
<td id="LC8329" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">br</span>.<span class="pl-en">SEGMENT</span>();</td>
</tr>
<tr>
<td id="L8330" class="blob-num js-line-number" data-line-number="8330"></td>
<td id="LC8330" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L8331" class="blob-num js-line-number" data-line-number="8331"></td>
<td id="LC8331" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L8332" class="blob-num js-line-number" data-line-number="8332"></td>
<td id="LC8332" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8333" class="blob-num js-line-number" data-line-number="8333"></td>
<td id="LC8333" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8334" class="blob-num js-line-number" data-line-number="8334"></td>
<td id="LC8334" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">strip</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8335" class="blob-num js-line-number" data-line-number="8335"></td>
<td id="LC8335" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> br, headers, jpegHeaders, i;</td>
</tr>
<tr>
<td id="L8336" class="blob-num js-line-number" data-line-number="8336"></td>
<td id="LC8336" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8337" class="blob-num js-line-number" data-line-number="8337"></td>
<td id="LC8337" class="blob-code blob-code-inner js-file-line"> jpegHeaders <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">JPEGHeaders</span>(data);</td>
</tr>
<tr>
<td id="L8338" class="blob-num js-line-number" data-line-number="8338"></td>
<td id="LC8338" class="blob-code blob-code-inner js-file-line"> headers <span class="pl-k">=</span> <span class="pl-smi">jpegHeaders</span>.<span class="pl-c1">headers</span>;</td>
</tr>
<tr>
<td id="L8339" class="blob-num js-line-number" data-line-number="8339"></td>
<td id="LC8339" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">jpegHeaders</span>.<span class="pl-en">purge</span>();</td>
</tr>
<tr>
<td id="L8340" class="blob-num js-line-number" data-line-number="8340"></td>
<td id="LC8340" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8341" class="blob-num js-line-number" data-line-number="8341"></td>
<td id="LC8341" class="blob-code blob-code-inner js-file-line"> br <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">BinaryReader</span>(data);</td>
</tr>
<tr>
<td id="L8342" class="blob-num js-line-number" data-line-number="8342"></td>
<td id="LC8342" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8343" class="blob-num js-line-number" data-line-number="8343"></td>
<td id="LC8343" class="blob-code blob-code-inner js-file-line"> i <span class="pl-k">=</span> <span class="pl-smi">headers</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L8344" class="blob-num js-line-number" data-line-number="8344"></td>
<td id="LC8344" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (i<span class="pl-k">--</span>) {</td>
</tr>
<tr>
<td id="L8345" class="blob-num js-line-number" data-line-number="8345"></td>
<td id="LC8345" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">br</span>.<span class="pl-en">SEGMENT</span>(headers[i].<span class="pl-c1">start</span>, headers[i].<span class="pl-c1">length</span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L8346" class="blob-num js-line-number" data-line-number="8346"></td>
<td id="LC8346" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8347" class="blob-num js-line-number" data-line-number="8347"></td>
<td id="LC8347" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8348" class="blob-num js-line-number" data-line-number="8348"></td>
<td id="LC8348" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">br</span>.<span class="pl-en">SEGMENT</span>();</td>
</tr>
<tr>
<td id="L8349" class="blob-num js-line-number" data-line-number="8349"></td>
<td id="LC8349" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L8350" class="blob-num js-line-number" data-line-number="8350"></td>
<td id="LC8350" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L8351" class="blob-num js-line-number" data-line-number="8351"></td>
<td id="LC8351" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8352" class="blob-num js-line-number" data-line-number="8352"></td>
<td id="LC8352" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8353" class="blob-num js-line-number" data-line-number="8353"></td>
<td id="LC8353" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">get</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L8354" class="blob-num js-line-number" data-line-number="8354"></td>
<td id="LC8354" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> array <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L8355" class="blob-num js-line-number" data-line-number="8355"></td>
<td id="LC8355" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8356" class="blob-num js-line-number" data-line-number="8356"></td>
<td id="LC8356" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>, max <span class="pl-k">=</span> <span class="pl-smi">headers</span>.<span class="pl-c1">length</span>; i <span class="pl-k"><</span> max; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8357" class="blob-num js-line-number" data-line-number="8357"></td>
<td id="LC8357" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (headers[i].<span class="pl-c1">name</span> <span class="pl-k">===</span> <span class="pl-smi">name</span>.<span class="pl-c1">toUpperCase</span>()) {</td>
</tr>
<tr>
<td id="L8358" class="blob-num js-line-number" data-line-number="8358"></td>
<td id="LC8358" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">array</span>.<span class="pl-c1">push</span>(headers[i].<span class="pl-smi">segment</span>);</td>
</tr>
<tr>
<td id="L8359" class="blob-num js-line-number" data-line-number="8359"></td>
<td id="LC8359" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8360" class="blob-num js-line-number" data-line-number="8360"></td>
<td id="LC8360" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8361" class="blob-num js-line-number" data-line-number="8361"></td>
<td id="LC8361" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> array;</td>
</tr>
<tr>
<td id="L8362" class="blob-num js-line-number" data-line-number="8362"></td>
<td id="LC8362" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8363" class="blob-num js-line-number" data-line-number="8363"></td>
<td id="LC8363" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8364" class="blob-num js-line-number" data-line-number="8364"></td>
<td id="LC8364" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">set</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>, <span class="pl-smi">segment</span>) {</td>
</tr>
<tr>
<td id="L8365" class="blob-num js-line-number" data-line-number="8365"></td>
<td id="LC8365" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> array <span class="pl-k">=</span> [], i, ii, max;</td>
</tr>
<tr>
<td id="L8366" class="blob-num js-line-number" data-line-number="8366"></td>
<td id="LC8366" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8367" class="blob-num js-line-number" data-line-number="8367"></td>
<td id="LC8367" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(segment) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8368" class="blob-num js-line-number" data-line-number="8368"></td>
<td id="LC8368" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">array</span>.<span class="pl-c1">push</span>(segment);</td>
</tr>
<tr>
<td id="L8369" class="blob-num js-line-number" data-line-number="8369"></td>
<td id="LC8369" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L8370" class="blob-num js-line-number" data-line-number="8370"></td>
<td id="LC8370" class="blob-code blob-code-inner js-file-line"> array <span class="pl-k">=</span> segment;</td>
</tr>
<tr>
<td id="L8371" class="blob-num js-line-number" data-line-number="8371"></td>
<td id="LC8371" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8372" class="blob-num js-line-number" data-line-number="8372"></td>
<td id="LC8372" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8373" class="blob-num js-line-number" data-line-number="8373"></td>
<td id="LC8373" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> ii <span class="pl-k">=</span> <span class="pl-c1">0</span>, max <span class="pl-k">=</span> <span class="pl-smi">headers</span>.<span class="pl-c1">length</span>; i <span class="pl-k"><</span> max; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8374" class="blob-num js-line-number" data-line-number="8374"></td>
<td id="LC8374" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (headers[i].<span class="pl-c1">name</span> <span class="pl-k">===</span> <span class="pl-smi">name</span>.<span class="pl-c1">toUpperCase</span>()) {</td>
</tr>
<tr>
<td id="L8375" class="blob-num js-line-number" data-line-number="8375"></td>
<td id="LC8375" class="blob-code blob-code-inner js-file-line"> headers[i].<span class="pl-smi">segment</span> <span class="pl-k">=</span> array[ii];</td>
</tr>
<tr>
<td id="L8376" class="blob-num js-line-number" data-line-number="8376"></td>
<td id="LC8376" class="blob-code blob-code-inner js-file-line"> headers[i].<span class="pl-c1">length</span> <span class="pl-k">=</span> array[ii].<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L8377" class="blob-num js-line-number" data-line-number="8377"></td>
<td id="LC8377" class="blob-code blob-code-inner js-file-line"> ii<span class="pl-k">++</span>;</td>
</tr>
<tr>
<td id="L8378" class="blob-num js-line-number" data-line-number="8378"></td>
<td id="LC8378" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8379" class="blob-num js-line-number" data-line-number="8379"></td>
<td id="LC8379" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (ii <span class="pl-k">>=</span> <span class="pl-smi">array</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L8380" class="blob-num js-line-number" data-line-number="8380"></td>
<td id="LC8380" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L8381" class="blob-num js-line-number" data-line-number="8381"></td>
<td id="LC8381" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8382" class="blob-num js-line-number" data-line-number="8382"></td>
<td id="LC8382" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8383" class="blob-num js-line-number" data-line-number="8383"></td>
<td id="LC8383" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8384" class="blob-num js-line-number" data-line-number="8384"></td>
<td id="LC8384" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8385" class="blob-num js-line-number" data-line-number="8385"></td>
<td id="LC8385" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">purge</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8386" class="blob-num js-line-number" data-line-number="8386"></td>
<td id="LC8386" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">headers</span> <span class="pl-k">=</span> headers <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L8387" class="blob-num js-line-number" data-line-number="8387"></td>
<td id="LC8387" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8388" class="blob-num js-line-number" data-line-number="8388"></td>
<td id="LC8388" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8389" class="blob-num js-line-number" data-line-number="8389"></td>
<td id="LC8389" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8390" class="blob-num js-line-number" data-line-number="8390"></td>
<td id="LC8390" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L8391" class="blob-num js-line-number" data-line-number="8391"></td>
<td id="LC8391" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8392" class="blob-num js-line-number" data-line-number="8392"></td>
<td id="LC8392" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/ExifParser.js</span></td>
</tr>
<tr>
<td id="L8393" class="blob-num js-line-number" data-line-number="8393"></td>
<td id="LC8393" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8394" class="blob-num js-line-number" data-line-number="8394"></td>
<td id="LC8394" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8395" class="blob-num js-line-number" data-line-number="8395"></td>
<td id="LC8395" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * ExifParser.js</span></td>
</tr>
<tr>
<td id="L8396" class="blob-num js-line-number" data-line-number="8396"></td>
<td id="LC8396" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8397" class="blob-num js-line-number" data-line-number="8397"></td>
<td id="LC8397" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L8398" class="blob-num js-line-number" data-line-number="8398"></td>
<td id="LC8398" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L8399" class="blob-num js-line-number" data-line-number="8399"></td>
<td id="LC8399" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8400" class="blob-num js-line-number" data-line-number="8400"></td>
<td id="LC8400" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L8401" class="blob-num js-line-number" data-line-number="8401"></td>
<td id="LC8401" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L8402" class="blob-num js-line-number" data-line-number="8402"></td>
<td id="LC8402" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8403" class="blob-num js-line-number" data-line-number="8403"></td>
<td id="LC8403" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8404" class="blob-num js-line-number" data-line-number="8404"></td>
<td id="LC8404" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8405" class="blob-num js-line-number" data-line-number="8405"></td>
<td id="LC8405" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/image/ExifParser</span></td>
</tr>
<tr>
<td id="L8406" class="blob-num js-line-number" data-line-number="8406"></td>
<td id="LC8406" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L8407" class="blob-num js-line-number" data-line-number="8407"></td>
<td id="LC8407" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8408" class="blob-num js-line-number" data-line-number="8408"></td>
<td id="LC8408" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ExifParser<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L8409" class="blob-num js-line-number" data-line-number="8409"></td>
<td id="LC8409" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8410" class="blob-num js-line-number" data-line-number="8410"></td>
<td id="LC8410" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/utils/BinaryReader<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8411" class="blob-num js-line-number" data-line-number="8411"></td>
<td id="LC8411" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L8412" class="blob-num js-line-number" data-line-number="8412"></td>
<td id="LC8412" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">BinaryReader</span>, <span class="pl-smi">x</span>) {</td>
</tr>
<tr>
<td id="L8413" class="blob-num js-line-number" data-line-number="8413"></td>
<td id="LC8413" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8414" class="blob-num js-line-number" data-line-number="8414"></td>
<td id="LC8414" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">ExifParser</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8415" class="blob-num js-line-number" data-line-number="8415"></td>
<td id="LC8415" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> __super__, tags, tagDescs, offsets, idx, Tiff;</td>
</tr>
<tr>
<td id="L8416" class="blob-num js-line-number" data-line-number="8416"></td>
<td id="LC8416" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8417" class="blob-num js-line-number" data-line-number="8417"></td>
<td id="LC8417" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">BinaryReader</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, data);</td>
</tr>
<tr>
<td id="L8418" class="blob-num js-line-number" data-line-number="8418"></td>
<td id="LC8418" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8419" class="blob-num js-line-number" data-line-number="8419"></td>
<td id="LC8419" class="blob-code blob-code-inner js-file-line"> tags <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8420" class="blob-num js-line-number" data-line-number="8420"></td>
<td id="LC8420" class="blob-code blob-code-inner js-file-line"> tiff<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8421" class="blob-num js-line-number" data-line-number="8421"></td>
<td id="LC8421" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span></span></td>
</tr>
<tr>
<td id="L8422" class="blob-num js-line-number" data-line-number="8422"></td>
<td id="LC8422" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> The image orientation viewed in terms of rows and columns.</span></td>
</tr>
<tr>
<td id="L8423" class="blob-num js-line-number" data-line-number="8423"></td>
<td id="LC8423" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L8424" class="blob-num js-line-number" data-line-number="8424"></td>
<td id="LC8424" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.</span></td>
</tr>
<tr>
<td id="L8425" class="blob-num js-line-number" data-line-number="8425"></td>
<td id="LC8425" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.</span></td>
</tr>
<tr>
<td id="L8426" class="blob-num js-line-number" data-line-number="8426"></td>
<td id="LC8426" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.</span></td>
</tr>
<tr>
<td id="L8427" class="blob-num js-line-number" data-line-number="8427"></td>
<td id="LC8427" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side.</span></td>
</tr>
<tr>
<td id="L8428" class="blob-num js-line-number" data-line-number="8428"></td>
<td id="LC8428" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top.</span></td>
</tr>
<tr>
<td id="L8429" class="blob-num js-line-number" data-line-number="8429"></td>
<td id="LC8429" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.</span></td>
</tr>
<tr>
<td id="L8430" class="blob-num js-line-number" data-line-number="8430"></td>
<td id="LC8430" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom.</span></td>
</tr>
<tr>
<td id="L8431" class="blob-num js-line-number" data-line-number="8431"></td>
<td id="LC8431" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.</span></td>
</tr>
<tr>
<td id="L8432" class="blob-num js-line-number" data-line-number="8432"></td>
<td id="LC8432" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8433" class="blob-num js-line-number" data-line-number="8433"></td>
<td id="LC8433" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0112</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Orientation<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8434" class="blob-num js-line-number" data-line-number="8434"></td>
<td id="LC8434" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x010E</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ImageDescription<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8435" class="blob-num js-line-number" data-line-number="8435"></td>
<td id="LC8435" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x010F</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Make<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8436" class="blob-num js-line-number" data-line-number="8436"></td>
<td id="LC8436" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0110</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Model<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8437" class="blob-num js-line-number" data-line-number="8437"></td>
<td id="LC8437" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0131</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Software<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8438" class="blob-num js-line-number" data-line-number="8438"></td>
<td id="LC8438" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x8769</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ExifIFDPointer<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8439" class="blob-num js-line-number" data-line-number="8439"></td>
<td id="LC8439" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x8825</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GPSInfoIFDPointer<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8440" class="blob-num js-line-number" data-line-number="8440"></td>
<td id="LC8440" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8441" class="blob-num js-line-number" data-line-number="8441"></td>
<td id="LC8441" class="blob-code blob-code-inner js-file-line"> exif<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8442" class="blob-num js-line-number" data-line-number="8442"></td>
<td id="LC8442" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9000</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ExifVersion<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8443" class="blob-num js-line-number" data-line-number="8443"></td>
<td id="LC8443" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA001</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ColorSpace<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8444" class="blob-num js-line-number" data-line-number="8444"></td>
<td id="LC8444" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA002</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PixelXDimension<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8445" class="blob-num js-line-number" data-line-number="8445"></td>
<td id="LC8445" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA003</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>PixelYDimension<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8446" class="blob-num js-line-number" data-line-number="8446"></td>
<td id="LC8446" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9003</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>DateTimeOriginal<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8447" class="blob-num js-line-number" data-line-number="8447"></td>
<td id="LC8447" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x829A</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ExposureTime<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8448" class="blob-num js-line-number" data-line-number="8448"></td>
<td id="LC8448" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x829D</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>FNumber<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8449" class="blob-num js-line-number" data-line-number="8449"></td>
<td id="LC8449" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x8827</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ISOSpeedRatings<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8450" class="blob-num js-line-number" data-line-number="8450"></td>
<td id="LC8450" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9201</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ShutterSpeedValue<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8451" class="blob-num js-line-number" data-line-number="8451"></td>
<td id="LC8451" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9202</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ApertureValue<span class="pl-pds">'</span></span> ,</td>
</tr>
<tr>
<td id="L8452" class="blob-num js-line-number" data-line-number="8452"></td>
<td id="LC8452" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9207</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>MeteringMode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8453" class="blob-num js-line-number" data-line-number="8453"></td>
<td id="LC8453" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9208</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>LightSource<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8454" class="blob-num js-line-number" data-line-number="8454"></td>
<td id="LC8454" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x9209</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8455" class="blob-num js-line-number" data-line-number="8455"></td>
<td id="LC8455" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x920A</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>FocalLength<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8456" class="blob-num js-line-number" data-line-number="8456"></td>
<td id="LC8456" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA402</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ExposureMode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8457" class="blob-num js-line-number" data-line-number="8457"></td>
<td id="LC8457" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA403</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>WhiteBalance<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8458" class="blob-num js-line-number" data-line-number="8458"></td>
<td id="LC8458" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA406</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>SceneCaptureType<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8459" class="blob-num js-line-number" data-line-number="8459"></td>
<td id="LC8459" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA404</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>DigitalZoomRatio<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8460" class="blob-num js-line-number" data-line-number="8460"></td>
<td id="LC8460" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA408</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Contrast<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8461" class="blob-num js-line-number" data-line-number="8461"></td>
<td id="LC8461" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA409</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Saturation<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8462" class="blob-num js-line-number" data-line-number="8462"></td>
<td id="LC8462" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0xA40A</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Sharpness<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8463" class="blob-num js-line-number" data-line-number="8463"></td>
<td id="LC8463" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8464" class="blob-num js-line-number" data-line-number="8464"></td>
<td id="LC8464" class="blob-code blob-code-inner js-file-line"> gps<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8465" class="blob-num js-line-number" data-line-number="8465"></td>
<td id="LC8465" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0000</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GPSVersionID<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8466" class="blob-num js-line-number" data-line-number="8466"></td>
<td id="LC8466" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0001</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GPSLatitudeRef<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8467" class="blob-num js-line-number" data-line-number="8467"></td>
<td id="LC8467" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0002</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GPSLatitude<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8468" class="blob-num js-line-number" data-line-number="8468"></td>
<td id="LC8468" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0003</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GPSLongitudeRef<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8469" class="blob-num js-line-number" data-line-number="8469"></td>
<td id="LC8469" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0004</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>GPSLongitude<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8470" class="blob-num js-line-number" data-line-number="8470"></td>
<td id="LC8470" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8471" class="blob-num js-line-number" data-line-number="8471"></td>
<td id="LC8471" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8472" class="blob-num js-line-number" data-line-number="8472"></td>
<td id="LC8472" class="blob-code blob-code-inner js-file-line"> thumb<span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8473" class="blob-num js-line-number" data-line-number="8473"></td>
<td id="LC8473" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0201</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>JPEGInterchangeFormat<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8474" class="blob-num js-line-number" data-line-number="8474"></td>
<td id="LC8474" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0202</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>JPEGInterchangeFormatLength<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8475" class="blob-num js-line-number" data-line-number="8475"></td>
<td id="LC8475" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8476" class="blob-num js-line-number" data-line-number="8476"></td>
<td id="LC8476" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8477" class="blob-num js-line-number" data-line-number="8477"></td>
<td id="LC8477" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8478" class="blob-num js-line-number" data-line-number="8478"></td>
<td id="LC8478" class="blob-code blob-code-inner js-file-line"> tagDescs <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8479" class="blob-num js-line-number" data-line-number="8479"></td>
<td id="LC8479" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>ColorSpace<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8480" class="blob-num js-line-number" data-line-number="8480"></td>
<td id="LC8480" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>sRGB<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8481" class="blob-num js-line-number" data-line-number="8481"></td>
<td id="LC8481" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Uncalibrated<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8482" class="blob-num js-line-number" data-line-number="8482"></td>
<td id="LC8482" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8483" class="blob-num js-line-number" data-line-number="8483"></td>
<td id="LC8483" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8484" class="blob-num js-line-number" data-line-number="8484"></td>
<td id="LC8484" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>MeteringMode<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8485" class="blob-num js-line-number" data-line-number="8485"></td>
<td id="LC8485" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Unknown<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8486" class="blob-num js-line-number" data-line-number="8486"></td>
<td id="LC8486" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Average<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8487" class="blob-num js-line-number" data-line-number="8487"></td>
<td id="LC8487" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>CenterWeightedAverage<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8488" class="blob-num js-line-number" data-line-number="8488"></td>
<td id="LC8488" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">3</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Spot<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8489" class="blob-num js-line-number" data-line-number="8489"></td>
<td id="LC8489" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">4</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>MultiSpot<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8490" class="blob-num js-line-number" data-line-number="8490"></td>
<td id="LC8490" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">5</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Pattern<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8491" class="blob-num js-line-number" data-line-number="8491"></td>
<td id="LC8491" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">6</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Partial<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8492" class="blob-num js-line-number" data-line-number="8492"></td>
<td id="LC8492" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">255</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Other<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8493" class="blob-num js-line-number" data-line-number="8493"></td>
<td id="LC8493" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8494" class="blob-num js-line-number" data-line-number="8494"></td>
<td id="LC8494" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8495" class="blob-num js-line-number" data-line-number="8495"></td>
<td id="LC8495" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>LightSource<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8496" class="blob-num js-line-number" data-line-number="8496"></td>
<td id="LC8496" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Daylight<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8497" class="blob-num js-line-number" data-line-number="8497"></td>
<td id="LC8497" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Fliorescent<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8498" class="blob-num js-line-number" data-line-number="8498"></td>
<td id="LC8498" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">3</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Tungsten<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8499" class="blob-num js-line-number" data-line-number="8499"></td>
<td id="LC8499" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">4</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8500" class="blob-num js-line-number" data-line-number="8500"></td>
<td id="LC8500" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">9</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Fine weather<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8501" class="blob-num js-line-number" data-line-number="8501"></td>
<td id="LC8501" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">10</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Cloudy weather<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8502" class="blob-num js-line-number" data-line-number="8502"></td>
<td id="LC8502" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">11</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Shade<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8503" class="blob-num js-line-number" data-line-number="8503"></td>
<td id="LC8503" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">12</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Daylight fluorescent (D 5700 - 7100K)<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8504" class="blob-num js-line-number" data-line-number="8504"></td>
<td id="LC8504" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">13</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Day white fluorescent (N 4600 -5400K)<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8505" class="blob-num js-line-number" data-line-number="8505"></td>
<td id="LC8505" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">14</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Cool white fluorescent (W 3900 - 4500K)<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8506" class="blob-num js-line-number" data-line-number="8506"></td>
<td id="LC8506" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">15</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>White fluorescent (WW 3200 - 3700K)<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8507" class="blob-num js-line-number" data-line-number="8507"></td>
<td id="LC8507" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">17</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Standard light A<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8508" class="blob-num js-line-number" data-line-number="8508"></td>
<td id="LC8508" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">18</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Standard light B<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8509" class="blob-num js-line-number" data-line-number="8509"></td>
<td id="LC8509" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">19</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Standard light C<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8510" class="blob-num js-line-number" data-line-number="8510"></td>
<td id="LC8510" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">20</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>D55<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8511" class="blob-num js-line-number" data-line-number="8511"></td>
<td id="LC8511" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">21</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>D65<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8512" class="blob-num js-line-number" data-line-number="8512"></td>
<td id="LC8512" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">22</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>D75<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8513" class="blob-num js-line-number" data-line-number="8513"></td>
<td id="LC8513" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">23</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>D50<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8514" class="blob-num js-line-number" data-line-number="8514"></td>
<td id="LC8514" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">24</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ISO studio tungsten<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8515" class="blob-num js-line-number" data-line-number="8515"></td>
<td id="LC8515" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">255</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Other<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8516" class="blob-num js-line-number" data-line-number="8516"></td>
<td id="LC8516" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8517" class="blob-num js-line-number" data-line-number="8517"></td>
<td id="LC8517" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8518" class="blob-num js-line-number" data-line-number="8518"></td>
<td id="LC8518" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Flash<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8519" class="blob-num js-line-number" data-line-number="8519"></td>
<td id="LC8519" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0000</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash did not fire<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8520" class="blob-num js-line-number" data-line-number="8520"></td>
<td id="LC8520" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0001</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8521" class="blob-num js-line-number" data-line-number="8521"></td>
<td id="LC8521" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0005</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Strobe return light not detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8522" class="blob-num js-line-number" data-line-number="8522"></td>
<td id="LC8522" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0007</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Strobe return light detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8523" class="blob-num js-line-number" data-line-number="8523"></td>
<td id="LC8523" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0009</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, compulsory flash mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8524" class="blob-num js-line-number" data-line-number="8524"></td>
<td id="LC8524" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x000D</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, compulsory flash mode, return light not detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8525" class="blob-num js-line-number" data-line-number="8525"></td>
<td id="LC8525" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x000F</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, compulsory flash mode, return light detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8526" class="blob-num js-line-number" data-line-number="8526"></td>
<td id="LC8526" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0010</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash did not fire, compulsory flash mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8527" class="blob-num js-line-number" data-line-number="8527"></td>
<td id="LC8527" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0018</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash did not fire, auto mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8528" class="blob-num js-line-number" data-line-number="8528"></td>
<td id="LC8528" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0019</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, auto mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8529" class="blob-num js-line-number" data-line-number="8529"></td>
<td id="LC8529" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x001D</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, auto mode, return light not detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8530" class="blob-num js-line-number" data-line-number="8530"></td>
<td id="LC8530" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x001F</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, auto mode, return light detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8531" class="blob-num js-line-number" data-line-number="8531"></td>
<td id="LC8531" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0020</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>No flash function<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8532" class="blob-num js-line-number" data-line-number="8532"></td>
<td id="LC8532" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0041</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, red-eye reduction mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8533" class="blob-num js-line-number" data-line-number="8533"></td>
<td id="LC8533" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0045</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, red-eye reduction mode, return light not detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8534" class="blob-num js-line-number" data-line-number="8534"></td>
<td id="LC8534" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0047</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, red-eye reduction mode, return light detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8535" class="blob-num js-line-number" data-line-number="8535"></td>
<td id="LC8535" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0049</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, compulsory flash mode, red-eye reduction mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8536" class="blob-num js-line-number" data-line-number="8536"></td>
<td id="LC8536" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x004D</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8537" class="blob-num js-line-number" data-line-number="8537"></td>
<td id="LC8537" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x004F</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, compulsory flash mode, red-eye reduction mode, return light detected<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8538" class="blob-num js-line-number" data-line-number="8538"></td>
<td id="LC8538" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x0059</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, auto mode, red-eye reduction mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8539" class="blob-num js-line-number" data-line-number="8539"></td>
<td id="LC8539" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x005D</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, auto mode, return light not detected, red-eye reduction mode<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8540" class="blob-num js-line-number" data-line-number="8540"></td>
<td id="LC8540" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0x005F</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Flash fired, auto mode, return light detected, red-eye reduction mode<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8541" class="blob-num js-line-number" data-line-number="8541"></td>
<td id="LC8541" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8542" class="blob-num js-line-number" data-line-number="8542"></td>
<td id="LC8542" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8543" class="blob-num js-line-number" data-line-number="8543"></td>
<td id="LC8543" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>ExposureMode<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8544" class="blob-num js-line-number" data-line-number="8544"></td>
<td id="LC8544" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Auto exposure<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8545" class="blob-num js-line-number" data-line-number="8545"></td>
<td id="LC8545" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Manual exposure<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8546" class="blob-num js-line-number" data-line-number="8546"></td>
<td id="LC8546" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Auto bracket<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8547" class="blob-num js-line-number" data-line-number="8547"></td>
<td id="LC8547" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8548" class="blob-num js-line-number" data-line-number="8548"></td>
<td id="LC8548" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8549" class="blob-num js-line-number" data-line-number="8549"></td>
<td id="LC8549" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>WhiteBalance<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8550" class="blob-num js-line-number" data-line-number="8550"></td>
<td id="LC8550" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Auto white balance<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8551" class="blob-num js-line-number" data-line-number="8551"></td>
<td id="LC8551" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Manual white balance<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8552" class="blob-num js-line-number" data-line-number="8552"></td>
<td id="LC8552" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8553" class="blob-num js-line-number" data-line-number="8553"></td>
<td id="LC8553" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8554" class="blob-num js-line-number" data-line-number="8554"></td>
<td id="LC8554" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>SceneCaptureType<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8555" class="blob-num js-line-number" data-line-number="8555"></td>
<td id="LC8555" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Standard<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8556" class="blob-num js-line-number" data-line-number="8556"></td>
<td id="LC8556" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Landscape<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8557" class="blob-num js-line-number" data-line-number="8557"></td>
<td id="LC8557" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Portrait<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8558" class="blob-num js-line-number" data-line-number="8558"></td>
<td id="LC8558" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">3</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Night scene<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8559" class="blob-num js-line-number" data-line-number="8559"></td>
<td id="LC8559" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8560" class="blob-num js-line-number" data-line-number="8560"></td>
<td id="LC8560" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8561" class="blob-num js-line-number" data-line-number="8561"></td>
<td id="LC8561" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Contrast<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8562" class="blob-num js-line-number" data-line-number="8562"></td>
<td id="LC8562" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Normal<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8563" class="blob-num js-line-number" data-line-number="8563"></td>
<td id="LC8563" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Soft<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8564" class="blob-num js-line-number" data-line-number="8564"></td>
<td id="LC8564" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Hard<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8565" class="blob-num js-line-number" data-line-number="8565"></td>
<td id="LC8565" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8566" class="blob-num js-line-number" data-line-number="8566"></td>
<td id="LC8566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8567" class="blob-num js-line-number" data-line-number="8567"></td>
<td id="LC8567" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Saturation<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8568" class="blob-num js-line-number" data-line-number="8568"></td>
<td id="LC8568" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Normal<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8569" class="blob-num js-line-number" data-line-number="8569"></td>
<td id="LC8569" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Low saturation<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8570" class="blob-num js-line-number" data-line-number="8570"></td>
<td id="LC8570" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>High saturation<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8571" class="blob-num js-line-number" data-line-number="8571"></td>
<td id="LC8571" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8572" class="blob-num js-line-number" data-line-number="8572"></td>
<td id="LC8572" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8573" class="blob-num js-line-number" data-line-number="8573"></td>
<td id="LC8573" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>Sharpness<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8574" class="blob-num js-line-number" data-line-number="8574"></td>
<td id="LC8574" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">0</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Normal<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8575" class="blob-num js-line-number" data-line-number="8575"></td>
<td id="LC8575" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Soft<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8576" class="blob-num js-line-number" data-line-number="8576"></td>
<td id="LC8576" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>Hard<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8577" class="blob-num js-line-number" data-line-number="8577"></td>
<td id="LC8577" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8578" class="blob-num js-line-number" data-line-number="8578"></td>
<td id="LC8578" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8579" class="blob-num js-line-number" data-line-number="8579"></td>
<td id="LC8579" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> GPS related</span></td>
</tr>
<tr>
<td id="L8580" class="blob-num js-line-number" data-line-number="8580"></td>
<td id="LC8580" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>GPSLatitudeRef<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8581" class="blob-num js-line-number" data-line-number="8581"></td>
<td id="LC8581" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">N</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>North latitude<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8582" class="blob-num js-line-number" data-line-number="8582"></td>
<td id="LC8582" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">S</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>South latitude<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8583" class="blob-num js-line-number" data-line-number="8583"></td>
<td id="LC8583" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8584" class="blob-num js-line-number" data-line-number="8584"></td>
<td id="LC8584" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8585" class="blob-num js-line-number" data-line-number="8585"></td>
<td id="LC8585" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>GPSLongitudeRef<span class="pl-pds">'</span></span><span class="pl-k">:</span> {</td>
</tr>
<tr>
<td id="L8586" class="blob-num js-line-number" data-line-number="8586"></td>
<td id="LC8586" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">E</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>East longitude<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8587" class="blob-num js-line-number" data-line-number="8587"></td>
<td id="LC8587" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">W</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>West longitude<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8588" class="blob-num js-line-number" data-line-number="8588"></td>
<td id="LC8588" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8589" class="blob-num js-line-number" data-line-number="8589"></td>
<td id="LC8589" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8590" class="blob-num js-line-number" data-line-number="8590"></td>
<td id="LC8590" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8591" class="blob-num js-line-number" data-line-number="8591"></td>
<td id="LC8591" class="blob-code blob-code-inner js-file-line"> offsets <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8592" class="blob-num js-line-number" data-line-number="8592"></td>
<td id="LC8592" class="blob-code blob-code-inner js-file-line"> tiffHeader<span class="pl-k">:</span> <span class="pl-c1">10</span></td>
</tr>
<tr>
<td id="L8593" class="blob-num js-line-number" data-line-number="8593"></td>
<td id="LC8593" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8594" class="blob-num js-line-number" data-line-number="8594"></td>
<td id="LC8594" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8595" class="blob-num js-line-number" data-line-number="8595"></td>
<td id="LC8595" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">=</span> <span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span>;</td>
</tr>
<tr>
<td id="L8596" class="blob-num js-line-number" data-line-number="8596"></td>
<td id="LC8596" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8597" class="blob-num js-line-number" data-line-number="8597"></td>
<td id="LC8597" class="blob-code blob-code-inner js-file-line"> __super__ <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8598" class="blob-num js-line-number" data-line-number="8598"></td>
<td id="LC8598" class="blob-code blob-code-inner js-file-line"> clear<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">clear</span></td>
</tr>
<tr>
<td id="L8599" class="blob-num js-line-number" data-line-number="8599"></td>
<td id="LC8599" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8600" class="blob-num js-line-number" data-line-number="8600"></td>
<td id="LC8600" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8601" class="blob-num js-line-number" data-line-number="8601"></td>
<td id="LC8601" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Public functions</span></td>
</tr>
<tr>
<td id="L8602" class="blob-num js-line-number" data-line-number="8602"></td>
<td id="LC8602" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L8603" class="blob-num js-line-number" data-line-number="8603"></td>
<td id="LC8603" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8604" class="blob-num js-line-number" data-line-number="8604"></td>
<td id="LC8604" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">read</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8605" class="blob-num js-line-number" data-line-number="8605"></td>
<td id="LC8605" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8606" class="blob-num js-line-number" data-line-number="8606"></td>
<td id="LC8606" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">ExifParser</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">read</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L8607" class="blob-num js-line-number" data-line-number="8607"></td>
<td id="LC8607" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L8608" class="blob-num js-line-number" data-line-number="8608"></td>
<td id="LC8608" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">INVALID_META_ERR</span>);</td>
</tr>
<tr>
<td id="L8609" class="blob-num js-line-number" data-line-number="8609"></td>
<td id="LC8609" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8610" class="blob-num js-line-number" data-line-number="8610"></td>
<td id="LC8610" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8611" class="blob-num js-line-number" data-line-number="8611"></td>
<td id="LC8611" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8612" class="blob-num js-line-number" data-line-number="8612"></td>
<td id="LC8612" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8613" class="blob-num js-line-number" data-line-number="8613"></td>
<td id="LC8613" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">write</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8614" class="blob-num js-line-number" data-line-number="8614"></td>
<td id="LC8614" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8615" class="blob-num js-line-number" data-line-number="8615"></td>
<td id="LC8615" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">ExifParser</span>.<span class="pl-c1">prototype</span>.<span class="pl-smi">write</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L8616" class="blob-num js-line-number" data-line-number="8616"></td>
<td id="LC8616" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L8617" class="blob-num js-line-number" data-line-number="8617"></td>
<td id="LC8617" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">INVALID_META_ERR</span>);</td>
</tr>
<tr>
<td id="L8618" class="blob-num js-line-number" data-line-number="8618"></td>
<td id="LC8618" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8619" class="blob-num js-line-number" data-line-number="8619"></td>
<td id="LC8619" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8620" class="blob-num js-line-number" data-line-number="8620"></td>
<td id="LC8620" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8621" class="blob-num js-line-number" data-line-number="8621"></td>
<td id="LC8621" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8622" class="blob-num js-line-number" data-line-number="8622"></td>
<td id="LC8622" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">UNDEFINED</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8623" class="blob-num js-line-number" data-line-number="8623"></td>
<td id="LC8623" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-c1">BYTE</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>);</td>
</tr>
<tr>
<td id="L8624" class="blob-num js-line-number" data-line-number="8624"></td>
<td id="LC8624" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8625" class="blob-num js-line-number" data-line-number="8625"></td>
<td id="LC8625" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8626" class="blob-num js-line-number" data-line-number="8626"></td>
<td id="LC8626" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8627" class="blob-num js-line-number" data-line-number="8627"></td>
<td id="LC8627" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">RATIONAL</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8628" class="blob-num js-line-number" data-line-number="8628"></td>
<td id="LC8628" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">LONG</span>(idx) <span class="pl-k">/</span> <span class="pl-c1">this</span>.<span class="pl-en">LONG</span>(idx <span class="pl-k">+</span> <span class="pl-c1">4</span>)</td>
</tr>
<tr>
<td id="L8629" class="blob-num js-line-number" data-line-number="8629"></td>
<td id="LC8629" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8630" class="blob-num js-line-number" data-line-number="8630"></td>
<td id="LC8630" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8631" class="blob-num js-line-number" data-line-number="8631"></td>
<td id="LC8631" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8632" class="blob-num js-line-number" data-line-number="8632"></td>
<td id="LC8632" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">SRATIONAL</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8633" class="blob-num js-line-number" data-line-number="8633"></td>
<td id="LC8633" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">SLONG</span>(idx) <span class="pl-k">/</span> <span class="pl-c1">this</span>.<span class="pl-en">SLONG</span>(idx <span class="pl-k">+</span> <span class="pl-c1">4</span>)</td>
</tr>
<tr>
<td id="L8634" class="blob-num js-line-number" data-line-number="8634"></td>
<td id="LC8634" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8635" class="blob-num js-line-number" data-line-number="8635"></td>
<td id="LC8635" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8636" class="blob-num js-line-number" data-line-number="8636"></td>
<td id="LC8636" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">ASCII</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L8637" class="blob-num js-line-number" data-line-number="8637"></td>
<td id="LC8637" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">CHAR</span>(idx);</td>
</tr>
<tr>
<td id="L8638" class="blob-num js-line-number" data-line-number="8638"></td>
<td id="LC8638" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8639" class="blob-num js-line-number" data-line-number="8639"></td>
<td id="LC8639" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8640" class="blob-num js-line-number" data-line-number="8640"></td>
<td id="LC8640" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">TIFF</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8641" class="blob-num js-line-number" data-line-number="8641"></td>
<td id="LC8641" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> Tiff <span class="pl-k">||</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8642" class="blob-num js-line-number" data-line-number="8642"></td>
<td id="LC8642" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8643" class="blob-num js-line-number" data-line-number="8643"></td>
<td id="LC8643" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8644" class="blob-num js-line-number" data-line-number="8644"></td>
<td id="LC8644" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8645" class="blob-num js-line-number" data-line-number="8645"></td>
<td id="LC8645" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">EXIF</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8646" class="blob-num js-line-number" data-line-number="8646"></td>
<td id="LC8646" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> Exif <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8647" class="blob-num js-line-number" data-line-number="8647"></td>
<td id="LC8647" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8648" class="blob-num js-line-number" data-line-number="8648"></td>
<td id="LC8648" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">offsets</span>.<span class="pl-smi">exifIFD</span>) {</td>
</tr>
<tr>
<td id="L8649" class="blob-num js-line-number" data-line-number="8649"></td>
<td id="LC8649" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8650" class="blob-num js-line-number" data-line-number="8650"></td>
<td id="LC8650" class="blob-code blob-code-inner js-file-line"> Exif <span class="pl-k">=</span> <span class="pl-smi">extractTags</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">offsets</span>.<span class="pl-smi">exifIFD</span>, <span class="pl-smi">tags</span>.<span class="pl-smi">exif</span>);</td>
</tr>
<tr>
<td id="L8651" class="blob-num js-line-number" data-line-number="8651"></td>
<td id="LC8651" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L8652" class="blob-num js-line-number" data-line-number="8652"></td>
<td id="LC8652" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8653" class="blob-num js-line-number" data-line-number="8653"></td>
<td id="LC8653" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8654" class="blob-num js-line-number" data-line-number="8654"></td>
<td id="LC8654" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8655" class="blob-num js-line-number" data-line-number="8655"></td>
<td id="LC8655" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Fix formatting of some tags</span></td>
</tr>
<tr>
<td id="L8656" class="blob-num js-line-number" data-line-number="8656"></td>
<td id="LC8656" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Exif</span>.<span class="pl-smi">ExifVersion</span> <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-smi">Exif</span>.<span class="pl-smi">ExifVersion</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8657" class="blob-num js-line-number" data-line-number="8657"></td>
<td id="LC8657" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>, exifVersion <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>; i <span class="pl-k"><</span> <span class="pl-smi">Exif</span>.<span class="pl-smi">ExifVersion</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8658" class="blob-num js-line-number" data-line-number="8658"></td>
<td id="LC8658" class="blob-code blob-code-inner js-file-line"> exifVersion <span class="pl-k">+=</span> <span class="pl-c1">String</span>.<span class="pl-c1">fromCharCode</span>(<span class="pl-smi">Exif</span>.<span class="pl-smi">ExifVersion</span>[i]);</td>
</tr>
<tr>
<td id="L8659" class="blob-num js-line-number" data-line-number="8659"></td>
<td id="LC8659" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8660" class="blob-num js-line-number" data-line-number="8660"></td>
<td id="LC8660" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Exif</span>.<span class="pl-smi">ExifVersion</span> <span class="pl-k">=</span> exifVersion;</td>
</tr>
<tr>
<td id="L8661" class="blob-num js-line-number" data-line-number="8661"></td>
<td id="LC8661" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8662" class="blob-num js-line-number" data-line-number="8662"></td>
<td id="LC8662" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8663" class="blob-num js-line-number" data-line-number="8663"></td>
<td id="LC8663" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8664" class="blob-num js-line-number" data-line-number="8664"></td>
<td id="LC8664" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> Exif;</td>
</tr>
<tr>
<td id="L8665" class="blob-num js-line-number" data-line-number="8665"></td>
<td id="LC8665" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8666" class="blob-num js-line-number" data-line-number="8666"></td>
<td id="LC8666" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8667" class="blob-num js-line-number" data-line-number="8667"></td>
<td id="LC8667" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8668" class="blob-num js-line-number" data-line-number="8668"></td>
<td id="LC8668" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">GPS</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8669" class="blob-num js-line-number" data-line-number="8669"></td>
<td id="LC8669" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">GPS</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8670" class="blob-num js-line-number" data-line-number="8670"></td>
<td id="LC8670" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8671" class="blob-num js-line-number" data-line-number="8671"></td>
<td id="LC8671" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">offsets</span>.<span class="pl-smi">gpsIFD</span>) {</td>
</tr>
<tr>
<td id="L8672" class="blob-num js-line-number" data-line-number="8672"></td>
<td id="LC8672" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8673" class="blob-num js-line-number" data-line-number="8673"></td>
<td id="LC8673" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">GPS</span> <span class="pl-k">=</span> <span class="pl-smi">extractTags</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">offsets</span>.<span class="pl-smi">gpsIFD</span>, <span class="pl-smi">tags</span>.<span class="pl-smi">gps</span>);</td>
</tr>
<tr>
<td id="L8674" class="blob-num js-line-number" data-line-number="8674"></td>
<td id="LC8674" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L8675" class="blob-num js-line-number" data-line-number="8675"></td>
<td id="LC8675" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8676" class="blob-num js-line-number" data-line-number="8676"></td>
<td id="LC8676" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8677" class="blob-num js-line-number" data-line-number="8677"></td>
<td id="LC8677" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8678" class="blob-num js-line-number" data-line-number="8678"></td>
<td id="LC8678" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> iOS devices (and probably some others) do not put in GPSVersionID tag (why?..)</span></td>
</tr>
<tr>
<td id="L8679" class="blob-num js-line-number" data-line-number="8679"></td>
<td id="LC8679" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">GPS</span>.<span class="pl-smi">GPSVersionID</span> <span class="pl-k">&&</span> <span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(<span class="pl-c1">GPS</span>.<span class="pl-smi">GPSVersionID</span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>array<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8680" class="blob-num js-line-number" data-line-number="8680"></td>
<td id="LC8680" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">GPS</span>.<span class="pl-smi">GPSVersionID</span> <span class="pl-k">=</span> <span class="pl-c1">GPS</span>.<span class="pl-smi">GPSVersionID</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L8681" class="blob-num js-line-number" data-line-number="8681"></td>
<td id="LC8681" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8682" class="blob-num js-line-number" data-line-number="8682"></td>
<td id="LC8682" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8683" class="blob-num js-line-number" data-line-number="8683"></td>
<td id="LC8683" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8684" class="blob-num js-line-number" data-line-number="8684"></td>
<td id="LC8684" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">GPS</span>;</td>
</tr>
<tr>
<td id="L8685" class="blob-num js-line-number" data-line-number="8685"></td>
<td id="LC8685" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8686" class="blob-num js-line-number" data-line-number="8686"></td>
<td id="LC8686" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8687" class="blob-num js-line-number" data-line-number="8687"></td>
<td id="LC8687" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8688" class="blob-num js-line-number" data-line-number="8688"></td>
<td id="LC8688" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">thumb</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8689" class="blob-num js-line-number" data-line-number="8689"></td>
<td id="LC8689" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">offsets</span>.<span class="pl-c1">IFD1</span>) {</td>
</tr>
<tr>
<td id="L8690" class="blob-num js-line-number" data-line-number="8690"></td>
<td id="LC8690" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8691" class="blob-num js-line-number" data-line-number="8691"></td>
<td id="LC8691" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> IFD1Tags <span class="pl-k">=</span> <span class="pl-smi">extractTags</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">offsets</span>.<span class="pl-c1">IFD1</span>, <span class="pl-smi">tags</span>.<span class="pl-smi">thumb</span>);</td>
</tr>
<tr>
<td id="L8692" class="blob-num js-line-number" data-line-number="8692"></td>
<td id="LC8692" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8693" class="blob-num js-line-number" data-line-number="8693"></td>
<td id="LC8693" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>JPEGInterchangeFormat<span class="pl-pds">'</span></span> <span class="pl-k">in</span> IFD1Tags) {</td>
</tr>
<tr>
<td id="L8694" class="blob-num js-line-number" data-line-number="8694"></td>
<td id="LC8694" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">this</span>.<span class="pl-en">SEGMENT</span>(<span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span> <span class="pl-k">+</span> <span class="pl-smi">IFD1Tags</span>.<span class="pl-smi">JPEGInterchangeFormat</span>, <span class="pl-smi">IFD1Tags</span>.<span class="pl-smi">JPEGInterchangeFormatLength</span>);</td>
</tr>
<tr>
<td id="L8695" class="blob-num js-line-number" data-line-number="8695"></td>
<td id="LC8695" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8696" class="blob-num js-line-number" data-line-number="8696"></td>
<td id="LC8696" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {}</td>
</tr>
<tr>
<td id="L8697" class="blob-num js-line-number" data-line-number="8697"></td>
<td id="LC8697" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8698" class="blob-num js-line-number" data-line-number="8698"></td>
<td id="LC8698" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8699" class="blob-num js-line-number" data-line-number="8699"></td>
<td id="LC8699" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8700" class="blob-num js-line-number" data-line-number="8700"></td>
<td id="LC8700" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8701" class="blob-num js-line-number" data-line-number="8701"></td>
<td id="LC8701" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8702" class="blob-num js-line-number" data-line-number="8702"></td>
<td id="LC8702" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setExif</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">tag</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L8703" class="blob-num js-line-number" data-line-number="8703"></td>
<td id="LC8703" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Right now only setting of width/height is possible</span></td>
</tr>
<tr>
<td id="L8704" class="blob-num js-line-number" data-line-number="8704"></td>
<td id="LC8704" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (tag <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>PixelXDimension<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> tag <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>PixelYDimension<span class="pl-pds">'</span></span>) { <span class="pl-k">return</span> <span class="pl-c1">false</span>; }</td>
</tr>
<tr>
<td id="L8705" class="blob-num js-line-number" data-line-number="8705"></td>
<td id="LC8705" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8706" class="blob-num js-line-number" data-line-number="8706"></td>
<td id="LC8706" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">setTag</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>exif<span class="pl-pds">'</span></span>, tag, value);</td>
</tr>
<tr>
<td id="L8707" class="blob-num js-line-number" data-line-number="8707"></td>
<td id="LC8707" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8708" class="blob-num js-line-number" data-line-number="8708"></td>
<td id="LC8708" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8709" class="blob-num js-line-number" data-line-number="8709"></td>
<td id="LC8709" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8710" class="blob-num js-line-number" data-line-number="8710"></td>
<td id="LC8710" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">clear</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8711" class="blob-num js-line-number" data-line-number="8711"></td>
<td id="LC8711" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">__super__</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L8712" class="blob-num js-line-number" data-line-number="8712"></td>
<td id="LC8712" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> tags <span class="pl-k">=</span> tagDescs <span class="pl-k">=</span> Tiff <span class="pl-k">=</span> offsets <span class="pl-k">=</span> __super__ <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8713" class="blob-num js-line-number" data-line-number="8713"></td>
<td id="LC8713" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8714" class="blob-num js-line-number" data-line-number="8714"></td>
<td id="LC8714" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8715" class="blob-num js-line-number" data-line-number="8715"></td>
<td id="LC8715" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8716" class="blob-num js-line-number" data-line-number="8716"></td>
<td id="LC8716" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8717" class="blob-num js-line-number" data-line-number="8717"></td>
<td id="LC8717" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Check if that's APP1 and that it has EXIF</span></td>
</tr>
<tr>
<td id="L8718" class="blob-num js-line-number" data-line-number="8718"></td>
<td id="LC8718" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-en">SHORT</span>(<span class="pl-c1">0</span>) <span class="pl-k">!==</span> <span class="pl-c1">0xFFE1</span> <span class="pl-k">||</span> <span class="pl-c1">this</span>.<span class="pl-en">STRING</span>(<span class="pl-c1">4</span>, <span class="pl-c1">5</span>).<span class="pl-c1">toUpperCase</span>() <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">"</span>EXIF<span class="pl-cce">\0</span><span class="pl-pds">"</span></span>) {</td>
</tr>
<tr>
<td id="L8719" class="blob-num js-line-number" data-line-number="8719"></td>
<td id="LC8719" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">INVALID_META_ERR</span>);</td>
</tr>
<tr>
<td id="L8720" class="blob-num js-line-number" data-line-number="8720"></td>
<td id="LC8720" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8721" class="blob-num js-line-number" data-line-number="8721"></td>
<td id="LC8721" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8722" class="blob-num js-line-number" data-line-number="8722"></td>
<td id="LC8722" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Set read order of multi-byte data</span></td>
</tr>
<tr>
<td id="L8723" class="blob-num js-line-number" data-line-number="8723"></td>
<td id="LC8723" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">littleEndian</span> <span class="pl-k">=</span> (<span class="pl-c1">this</span>.<span class="pl-en">SHORT</span>(idx) <span class="pl-k">==</span> <span class="pl-c1">0x4949</span>);</td>
</tr>
<tr>
<td id="L8724" class="blob-num js-line-number" data-line-number="8724"></td>
<td id="LC8724" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8725" class="blob-num js-line-number" data-line-number="8725"></td>
<td id="LC8725" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Check if always present bytes are indeed present</span></td>
</tr>
<tr>
<td id="L8726" class="blob-num js-line-number" data-line-number="8726"></td>
<td id="LC8726" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-en">SHORT</span>(idx<span class="pl-k">+=</span><span class="pl-c1">2</span>) <span class="pl-k">!==</span> <span class="pl-c1">0x002A</span>) {</td>
</tr>
<tr>
<td id="L8727" class="blob-num js-line-number" data-line-number="8727"></td>
<td id="LC8727" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">INVALID_META_ERR</span>);</td>
</tr>
<tr>
<td id="L8728" class="blob-num js-line-number" data-line-number="8728"></td>
<td id="LC8728" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8729" class="blob-num js-line-number" data-line-number="8729"></td>
<td id="LC8729" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8730" class="blob-num js-line-number" data-line-number="8730"></td>
<td id="LC8730" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">offsets</span>.<span class="pl-c1">IFD0</span> <span class="pl-k">=</span> <span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-en">LONG</span>(idx <span class="pl-k">+=</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L8731" class="blob-num js-line-number" data-line-number="8731"></td>
<td id="LC8731" class="blob-code blob-code-inner js-file-line"> Tiff <span class="pl-k">=</span> <span class="pl-smi">extractTags</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">offsets</span>.<span class="pl-c1">IFD0</span>, <span class="pl-smi">tags</span>.<span class="pl-smi">tiff</span>);</td>
</tr>
<tr>
<td id="L8732" class="blob-num js-line-number" data-line-number="8732"></td>
<td id="LC8732" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8733" class="blob-num js-line-number" data-line-number="8733"></td>
<td id="LC8733" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>ExifIFDPointer<span class="pl-pds">'</span></span> <span class="pl-k">in</span> Tiff) {</td>
</tr>
<tr>
<td id="L8734" class="blob-num js-line-number" data-line-number="8734"></td>
<td id="LC8734" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">offsets</span>.<span class="pl-smi">exifIFD</span> <span class="pl-k">=</span> <span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span> <span class="pl-k">+</span> <span class="pl-smi">Tiff</span>.<span class="pl-smi">ExifIFDPointer</span>;</td>
</tr>
<tr>
<td id="L8735" class="blob-num js-line-number" data-line-number="8735"></td>
<td id="LC8735" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> <span class="pl-smi">Tiff</span>.<span class="pl-smi">ExifIFDPointer</span>;</td>
</tr>
<tr>
<td id="L8736" class="blob-num js-line-number" data-line-number="8736"></td>
<td id="LC8736" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8737" class="blob-num js-line-number" data-line-number="8737"></td>
<td id="LC8737" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8738" class="blob-num js-line-number" data-line-number="8738"></td>
<td id="LC8738" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>GPSInfoIFDPointer<span class="pl-pds">'</span></span> <span class="pl-k">in</span> Tiff) {</td>
</tr>
<tr>
<td id="L8739" class="blob-num js-line-number" data-line-number="8739"></td>
<td id="LC8739" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">offsets</span>.<span class="pl-smi">gpsIFD</span> <span class="pl-k">=</span> <span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span> <span class="pl-k">+</span> <span class="pl-smi">Tiff</span>.<span class="pl-smi">GPSInfoIFDPointer</span>;</td>
</tr>
<tr>
<td id="L8740" class="blob-num js-line-number" data-line-number="8740"></td>
<td id="LC8740" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">delete</span> <span class="pl-smi">Tiff</span>.<span class="pl-smi">GPSInfoIFDPointer</span>;</td>
</tr>
<tr>
<td id="L8741" class="blob-num js-line-number" data-line-number="8741"></td>
<td id="LC8741" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8742" class="blob-num js-line-number" data-line-number="8742"></td>
<td id="LC8742" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8743" class="blob-num js-line-number" data-line-number="8743"></td>
<td id="LC8743" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(Tiff)) {</td>
</tr>
<tr>
<td id="L8744" class="blob-num js-line-number" data-line-number="8744"></td>
<td id="LC8744" class="blob-code blob-code-inner js-file-line"> Tiff <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L8745" class="blob-num js-line-number" data-line-number="8745"></td>
<td id="LC8745" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8746" class="blob-num js-line-number" data-line-number="8746"></td>
<td id="LC8746" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8747" class="blob-num js-line-number" data-line-number="8747"></td>
<td id="LC8747" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if we have a thumb as well</span></td>
</tr>
<tr>
<td id="L8748" class="blob-num js-line-number" data-line-number="8748"></td>
<td id="LC8748" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> IFD1Offset <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">LONG</span>(<span class="pl-smi">offsets</span>.<span class="pl-c1">IFD0</span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-en">SHORT</span>(<span class="pl-smi">offsets</span>.<span class="pl-c1">IFD0</span>) <span class="pl-k">*</span> <span class="pl-c1">12</span> <span class="pl-k">+</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L8749" class="blob-num js-line-number" data-line-number="8749"></td>
<td id="LC8749" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (IFD1Offset) {</td>
</tr>
<tr>
<td id="L8750" class="blob-num js-line-number" data-line-number="8750"></td>
<td id="LC8750" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">offsets</span>.<span class="pl-c1">IFD1</span> <span class="pl-k">=</span> <span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span> <span class="pl-k">+</span> IFD1Offset;</td>
</tr>
<tr>
<td id="L8751" class="blob-num js-line-number" data-line-number="8751"></td>
<td id="LC8751" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8752" class="blob-num js-line-number" data-line-number="8752"></td>
<td id="LC8752" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8753" class="blob-num js-line-number" data-line-number="8753"></td>
<td id="LC8753" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8754" class="blob-num js-line-number" data-line-number="8754"></td>
<td id="LC8754" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">extractTags</span>(<span class="pl-smi">IFD_offset</span>, <span class="pl-smi">tags2extract</span>) {</td>
</tr>
<tr>
<td id="L8755" class="blob-num js-line-number" data-line-number="8755"></td>
<td id="LC8755" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> data <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L8756" class="blob-num js-line-number" data-line-number="8756"></td>
<td id="LC8756" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> length, i, tag, type, count, size, offset, value, values <span class="pl-k">=</span> [], hash <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L8757" class="blob-num js-line-number" data-line-number="8757"></td>
<td id="LC8757" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8758" class="blob-num js-line-number" data-line-number="8758"></td>
<td id="LC8758" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> types <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8759" class="blob-num js-line-number" data-line-number="8759"></td>
<td id="LC8759" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">1</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>BYTE<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8760" class="blob-num js-line-number" data-line-number="8760"></td>
<td id="LC8760" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">7</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>UNDEFINED<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8761" class="blob-num js-line-number" data-line-number="8761"></td>
<td id="LC8761" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">2</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ASCII<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8762" class="blob-num js-line-number" data-line-number="8762"></td>
<td id="LC8762" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">3</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>SHORT<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8763" class="blob-num js-line-number" data-line-number="8763"></td>
<td id="LC8763" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">4</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>LONG<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8764" class="blob-num js-line-number" data-line-number="8764"></td>
<td id="LC8764" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">5</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>RATIONAL<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8765" class="blob-num js-line-number" data-line-number="8765"></td>
<td id="LC8765" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">9</span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>SLONG<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8766" class="blob-num js-line-number" data-line-number="8766"></td>
<td id="LC8766" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">10</span><span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>SRATIONAL<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L8767" class="blob-num js-line-number" data-line-number="8767"></td>
<td id="LC8767" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8768" class="blob-num js-line-number" data-line-number="8768"></td>
<td id="LC8768" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8769" class="blob-num js-line-number" data-line-number="8769"></td>
<td id="LC8769" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> sizes <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8770" class="blob-num js-line-number" data-line-number="8770"></td>
<td id="LC8770" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>BYTE<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L8771" class="blob-num js-line-number" data-line-number="8771"></td>
<td id="LC8771" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>UNDEFINED<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L8772" class="blob-num js-line-number" data-line-number="8772"></td>
<td id="LC8772" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>ASCII<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">1</span>,</td>
</tr>
<tr>
<td id="L8773" class="blob-num js-line-number" data-line-number="8773"></td>
<td id="LC8773" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>SHORT<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">2</span>,</td>
</tr>
<tr>
<td id="L8774" class="blob-num js-line-number" data-line-number="8774"></td>
<td id="LC8774" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>LONG<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">4</span>,</td>
</tr>
<tr>
<td id="L8775" class="blob-num js-line-number" data-line-number="8775"></td>
<td id="LC8775" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>RATIONAL<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">8</span>,</td>
</tr>
<tr>
<td id="L8776" class="blob-num js-line-number" data-line-number="8776"></td>
<td id="LC8776" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>SLONG<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">4</span>,</td>
</tr>
<tr>
<td id="L8777" class="blob-num js-line-number" data-line-number="8777"></td>
<td id="LC8777" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span>SRATIONAL<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-c1">8</span></td>
</tr>
<tr>
<td id="L8778" class="blob-num js-line-number" data-line-number="8778"></td>
<td id="LC8778" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8779" class="blob-num js-line-number" data-line-number="8779"></td>
<td id="LC8779" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8780" class="blob-num js-line-number" data-line-number="8780"></td>
<td id="LC8780" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">SHORT</span>(IFD_offset);</td>
</tr>
<tr>
<td id="L8781" class="blob-num js-line-number" data-line-number="8781"></td>
<td id="LC8781" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8782" class="blob-num js-line-number" data-line-number="8782"></td>
<td id="LC8782" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> The size of APP1 including all these elements shall not exceed the 64 Kbytes specified in the JPEG standard.</span></td>
</tr>
<tr>
<td id="L8783" class="blob-num js-line-number" data-line-number="8783"></td>
<td id="LC8783" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8784" class="blob-num js-line-number" data-line-number="8784"></td>
<td id="LC8784" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> length; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8785" class="blob-num js-line-number" data-line-number="8785"></td>
<td id="LC8785" class="blob-code blob-code-inner js-file-line"> values <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L8786" class="blob-num js-line-number" data-line-number="8786"></td>
<td id="LC8786" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8787" class="blob-num js-line-number" data-line-number="8787"></td>
<td id="LC8787" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Set binary reader pointer to beginning of the next tag</span></td>
</tr>
<tr>
<td id="L8788" class="blob-num js-line-number" data-line-number="8788"></td>
<td id="LC8788" class="blob-code blob-code-inner js-file-line"> offset <span class="pl-k">=</span> IFD_offset <span class="pl-k">+</span> <span class="pl-c1">2</span> <span class="pl-k">+</span> i<span class="pl-k">*</span><span class="pl-c1">12</span>;</td>
</tr>
<tr>
<td id="L8789" class="blob-num js-line-number" data-line-number="8789"></td>
<td id="LC8789" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8790" class="blob-num js-line-number" data-line-number="8790"></td>
<td id="LC8790" class="blob-code blob-code-inner js-file-line"> tag <span class="pl-k">=</span> tags2extract[<span class="pl-smi">data</span>.<span class="pl-en">SHORT</span>(offset)];</td>
</tr>
<tr>
<td id="L8791" class="blob-num js-line-number" data-line-number="8791"></td>
<td id="LC8791" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8792" class="blob-num js-line-number" data-line-number="8792"></td>
<td id="LC8792" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (tag <span class="pl-k">===</span> <span class="pl-c1">undefined</span>) {</td>
</tr>
<tr>
<td id="L8793" class="blob-num js-line-number" data-line-number="8793"></td>
<td id="LC8793" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">continue</span>; <span class="pl-c"><span class="pl-c">//</span> Not the tag we requested</span></td>
</tr>
<tr>
<td id="L8794" class="blob-num js-line-number" data-line-number="8794"></td>
<td id="LC8794" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8795" class="blob-num js-line-number" data-line-number="8795"></td>
<td id="LC8795" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8796" class="blob-num js-line-number" data-line-number="8796"></td>
<td id="LC8796" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> types[<span class="pl-smi">data</span>.<span class="pl-en">SHORT</span>(offset<span class="pl-k">+=</span><span class="pl-c1">2</span>)];</td>
</tr>
<tr>
<td id="L8797" class="blob-num js-line-number" data-line-number="8797"></td>
<td id="LC8797" class="blob-code blob-code-inner js-file-line"> count <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">LONG</span>(offset<span class="pl-k">+=</span><span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L8798" class="blob-num js-line-number" data-line-number="8798"></td>
<td id="LC8798" class="blob-code blob-code-inner js-file-line"> size <span class="pl-k">=</span> sizes[type];</td>
</tr>
<tr>
<td id="L8799" class="blob-num js-line-number" data-line-number="8799"></td>
<td id="LC8799" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8800" class="blob-num js-line-number" data-line-number="8800"></td>
<td id="LC8800" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>size) {</td>
</tr>
<tr>
<td id="L8801" class="blob-num js-line-number" data-line-number="8801"></td>
<td id="LC8801" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">INVALID_META_ERR</span>);</td>
</tr>
<tr>
<td id="L8802" class="blob-num js-line-number" data-line-number="8802"></td>
<td id="LC8802" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8803" class="blob-num js-line-number" data-line-number="8803"></td>
<td id="LC8803" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8804" class="blob-num js-line-number" data-line-number="8804"></td>
<td id="LC8804" class="blob-code blob-code-inner js-file-line"> offset <span class="pl-k">+=</span> <span class="pl-c1">4</span>;</td>
</tr>
<tr>
<td id="L8805" class="blob-num js-line-number" data-line-number="8805"></td>
<td id="LC8805" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8806" class="blob-num js-line-number" data-line-number="8806"></td>
<td id="LC8806" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> tag can only fit 4 bytes of data, if data is larger we should look outside</span></td>
</tr>
<tr>
<td id="L8807" class="blob-num js-line-number" data-line-number="8807"></td>
<td id="LC8807" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (size <span class="pl-k">*</span> count <span class="pl-k">></span> <span class="pl-c1">4</span>) {</td>
</tr>
<tr>
<td id="L8808" class="blob-num js-line-number" data-line-number="8808"></td>
<td id="LC8808" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> instead of data tag contains an offset of the data</span></td>
</tr>
<tr>
<td id="L8809" class="blob-num js-line-number" data-line-number="8809"></td>
<td id="LC8809" class="blob-code blob-code-inner js-file-line"> offset <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">LONG</span>(offset) <span class="pl-k">+</span> <span class="pl-smi">offsets</span>.<span class="pl-smi">tiffHeader</span>;</td>
</tr>
<tr>
<td id="L8810" class="blob-num js-line-number" data-line-number="8810"></td>
<td id="LC8810" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8811" class="blob-num js-line-number" data-line-number="8811"></td>
<td id="LC8811" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8812" class="blob-num js-line-number" data-line-number="8812"></td>
<td id="LC8812" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> in case we left the boundaries of data throw an early exception</span></td>
</tr>
<tr>
<td id="L8813" class="blob-num js-line-number" data-line-number="8813"></td>
<td id="LC8813" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (offset <span class="pl-k">+</span> size <span class="pl-k">*</span> count <span class="pl-k">>=</span> <span class="pl-c1">this</span>.<span class="pl-c1">length</span>()) {</td>
</tr>
<tr>
<td id="L8814" class="blob-num js-line-number" data-line-number="8814"></td>
<td id="LC8814" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">INVALID_META_ERR</span>);</td>
</tr>
<tr>
<td id="L8815" class="blob-num js-line-number" data-line-number="8815"></td>
<td id="LC8815" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L8816" class="blob-num js-line-number" data-line-number="8816"></td>
<td id="LC8816" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8817" class="blob-num js-line-number" data-line-number="8817"></td>
<td id="LC8817" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> special care for the string</span></td>
</tr>
<tr>
<td id="L8818" class="blob-num js-line-number" data-line-number="8818"></td>
<td id="LC8818" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (type <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>ASCII<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8819" class="blob-num js-line-number" data-line-number="8819"></td>
<td id="LC8819" class="blob-code blob-code-inner js-file-line"> hash[tag] <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(<span class="pl-smi">data</span>.<span class="pl-en">STRING</span>(offset, count).<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-cce">\0</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>)); <span class="pl-c"><span class="pl-c">//</span> strip trailing NULL</span></td>
</tr>
<tr>
<td id="L8820" class="blob-num js-line-number" data-line-number="8820"></td>
<td id="LC8820" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">continue</span>;</td>
</tr>
<tr>
<td id="L8821" class="blob-num js-line-number" data-line-number="8821"></td>
<td id="LC8821" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L8822" class="blob-num js-line-number" data-line-number="8822"></td>
<td id="LC8822" class="blob-code blob-code-inner js-file-line"> values <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">asArray</span>(type, offset, count);</td>
</tr>
<tr>
<td id="L8823" class="blob-num js-line-number" data-line-number="8823"></td>
<td id="LC8823" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> (count <span class="pl-k">==</span> <span class="pl-c1">1</span> <span class="pl-k">?</span> values[<span class="pl-c1">0</span>] <span class="pl-k">:</span> values);</td>
</tr>
<tr>
<td id="L8824" class="blob-num js-line-number" data-line-number="8824"></td>
<td id="LC8824" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8825" class="blob-num js-line-number" data-line-number="8825"></td>
<td id="LC8825" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">tagDescs</span>.<span class="pl-en">hasOwnProperty</span>(tag) <span class="pl-k">&&</span> <span class="pl-k">typeof</span> value <span class="pl-k">!=</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8826" class="blob-num js-line-number" data-line-number="8826"></td>
<td id="LC8826" class="blob-code blob-code-inner js-file-line"> hash[tag] <span class="pl-k">=</span> tagDescs[tag][value];</td>
</tr>
<tr>
<td id="L8827" class="blob-num js-line-number" data-line-number="8827"></td>
<td id="LC8827" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L8828" class="blob-num js-line-number" data-line-number="8828"></td>
<td id="LC8828" class="blob-code blob-code-inner js-file-line"> hash[tag] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L8829" class="blob-num js-line-number" data-line-number="8829"></td>
<td id="LC8829" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8830" class="blob-num js-line-number" data-line-number="8830"></td>
<td id="LC8830" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8831" class="blob-num js-line-number" data-line-number="8831"></td>
<td id="LC8831" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8832" class="blob-num js-line-number" data-line-number="8832"></td>
<td id="LC8832" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8833" class="blob-num js-line-number" data-line-number="8833"></td>
<td id="LC8833" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> hash;</td>
</tr>
<tr>
<td id="L8834" class="blob-num js-line-number" data-line-number="8834"></td>
<td id="LC8834" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8835" class="blob-num js-line-number" data-line-number="8835"></td>
<td id="LC8835" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8836" class="blob-num js-line-number" data-line-number="8836"></td>
<td id="LC8836" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> At the moment only setting of simple (LONG) values, that do not require offset recalculation, is supported</span></td>
</tr>
<tr>
<td id="L8837" class="blob-num js-line-number" data-line-number="8837"></td>
<td id="LC8837" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">setTag</span>(<span class="pl-smi">ifd</span>, <span class="pl-smi">tag</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L8838" class="blob-num js-line-number" data-line-number="8838"></td>
<td id="LC8838" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> offset, length, tagOffset, valueOffset <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L8839" class="blob-num js-line-number" data-line-number="8839"></td>
<td id="LC8839" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8840" class="blob-num js-line-number" data-line-number="8840"></td>
<td id="LC8840" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If tag name passed translate into hex key</span></td>
</tr>
<tr>
<td id="L8841" class="blob-num js-line-number" data-line-number="8841"></td>
<td id="LC8841" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span>(tag) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8842" class="blob-num js-line-number" data-line-number="8842"></td>
<td id="LC8842" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> tmpTags <span class="pl-k">=</span> tags[<span class="pl-smi">ifd</span>.<span class="pl-c1">toLowerCase</span>()];</td>
</tr>
<tr>
<td id="L8843" class="blob-num js-line-number" data-line-number="8843"></td>
<td id="LC8843" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> hex <span class="pl-k">in</span> tmpTags) {</td>
</tr>
<tr>
<td id="L8844" class="blob-num js-line-number" data-line-number="8844"></td>
<td id="LC8844" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (tmpTags[hex] <span class="pl-k">===</span> tag) {</td>
</tr>
<tr>
<td id="L8845" class="blob-num js-line-number" data-line-number="8845"></td>
<td id="LC8845" class="blob-code blob-code-inner js-file-line"> tag <span class="pl-k">=</span> hex;</td>
</tr>
<tr>
<td id="L8846" class="blob-num js-line-number" data-line-number="8846"></td>
<td id="LC8846" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L8847" class="blob-num js-line-number" data-line-number="8847"></td>
<td id="LC8847" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8848" class="blob-num js-line-number" data-line-number="8848"></td>
<td id="LC8848" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8849" class="blob-num js-line-number" data-line-number="8849"></td>
<td id="LC8849" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8850" class="blob-num js-line-number" data-line-number="8850"></td>
<td id="LC8850" class="blob-code blob-code-inner js-file-line"> offset <span class="pl-k">=</span> offsets[<span class="pl-smi">ifd</span>.<span class="pl-c1">toLowerCase</span>() <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>IFD<span class="pl-pds">'</span></span>];</td>
</tr>
<tr>
<td id="L8851" class="blob-num js-line-number" data-line-number="8851"></td>
<td id="LC8851" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">SHORT</span>(offset);</td>
</tr>
<tr>
<td id="L8852" class="blob-num js-line-number" data-line-number="8852"></td>
<td id="LC8852" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8853" class="blob-num js-line-number" data-line-number="8853"></td>
<td id="LC8853" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> length; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L8854" class="blob-num js-line-number" data-line-number="8854"></td>
<td id="LC8854" class="blob-code blob-code-inner js-file-line"> tagOffset <span class="pl-k">=</span> offset <span class="pl-k">+</span> <span class="pl-c1">12</span> <span class="pl-k">*</span> i <span class="pl-k">+</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L8855" class="blob-num js-line-number" data-line-number="8855"></td>
<td id="LC8855" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8856" class="blob-num js-line-number" data-line-number="8856"></td>
<td id="LC8856" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-en">SHORT</span>(tagOffset) <span class="pl-k">==</span> tag) {</td>
</tr>
<tr>
<td id="L8857" class="blob-num js-line-number" data-line-number="8857"></td>
<td id="LC8857" class="blob-code blob-code-inner js-file-line"> valueOffset <span class="pl-k">=</span> tagOffset <span class="pl-k">+</span> <span class="pl-c1">8</span>;</td>
</tr>
<tr>
<td id="L8858" class="blob-num js-line-number" data-line-number="8858"></td>
<td id="LC8858" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L8859" class="blob-num js-line-number" data-line-number="8859"></td>
<td id="LC8859" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8860" class="blob-num js-line-number" data-line-number="8860"></td>
<td id="LC8860" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8861" class="blob-num js-line-number" data-line-number="8861"></td>
<td id="LC8861" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8862" class="blob-num js-line-number" data-line-number="8862"></td>
<td id="LC8862" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>valueOffset) {</td>
</tr>
<tr>
<td id="L8863" class="blob-num js-line-number" data-line-number="8863"></td>
<td id="LC8863" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L8864" class="blob-num js-line-number" data-line-number="8864"></td>
<td id="LC8864" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8865" class="blob-num js-line-number" data-line-number="8865"></td>
<td id="LC8865" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8866" class="blob-num js-line-number" data-line-number="8866"></td>
<td id="LC8866" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8867" class="blob-num js-line-number" data-line-number="8867"></td>
<td id="LC8867" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">write</span>(valueOffset, value, <span class="pl-c1">4</span>);</td>
</tr>
<tr>
<td id="L8868" class="blob-num js-line-number" data-line-number="8868"></td>
<td id="LC8868" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {</td>
</tr>
<tr>
<td id="L8869" class="blob-num js-line-number" data-line-number="8869"></td>
<td id="LC8869" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L8870" class="blob-num js-line-number" data-line-number="8870"></td>
<td id="LC8870" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8871" class="blob-num js-line-number" data-line-number="8871"></td>
<td id="LC8871" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8872" class="blob-num js-line-number" data-line-number="8872"></td>
<td id="LC8872" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L8873" class="blob-num js-line-number" data-line-number="8873"></td>
<td id="LC8873" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8874" class="blob-num js-line-number" data-line-number="8874"></td>
<td id="LC8874" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8875" class="blob-num js-line-number" data-line-number="8875"></td>
<td id="LC8875" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8876" class="blob-num js-line-number" data-line-number="8876"></td>
<td id="LC8876" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ExifParser</span>.<span class="pl-c1">prototype</span> <span class="pl-k">=</span> <span class="pl-smi">BinaryReader</span>.<span class="pl-c1">prototype</span>;</td>
</tr>
<tr>
<td id="L8877" class="blob-num js-line-number" data-line-number="8877"></td>
<td id="LC8877" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8878" class="blob-num js-line-number" data-line-number="8878"></td>
<td id="LC8878" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> ExifParser;</td>
</tr>
<tr>
<td id="L8879" class="blob-num js-line-number" data-line-number="8879"></td>
<td id="LC8879" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L8880" class="blob-num js-line-number" data-line-number="8880"></td>
<td id="LC8880" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8881" class="blob-num js-line-number" data-line-number="8881"></td>
<td id="LC8881" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/JPEG.js</span></td>
</tr>
<tr>
<td id="L8882" class="blob-num js-line-number" data-line-number="8882"></td>
<td id="LC8882" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8883" class="blob-num js-line-number" data-line-number="8883"></td>
<td id="LC8883" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8884" class="blob-num js-line-number" data-line-number="8884"></td>
<td id="LC8884" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * JPEG.js</span></td>
</tr>
<tr>
<td id="L8885" class="blob-num js-line-number" data-line-number="8885"></td>
<td id="LC8885" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8886" class="blob-num js-line-number" data-line-number="8886"></td>
<td id="LC8886" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L8887" class="blob-num js-line-number" data-line-number="8887"></td>
<td id="LC8887" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L8888" class="blob-num js-line-number" data-line-number="8888"></td>
<td id="LC8888" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L8889" class="blob-num js-line-number" data-line-number="8889"></td>
<td id="LC8889" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L8890" class="blob-num js-line-number" data-line-number="8890"></td>
<td id="LC8890" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L8891" class="blob-num js-line-number" data-line-number="8891"></td>
<td id="LC8891" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8892" class="blob-num js-line-number" data-line-number="8892"></td>
<td id="LC8892" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8893" class="blob-num js-line-number" data-line-number="8893"></td>
<td id="LC8893" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L8894" class="blob-num js-line-number" data-line-number="8894"></td>
<td id="LC8894" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/image/JPEG</span></td>
</tr>
<tr>
<td id="L8895" class="blob-num js-line-number" data-line-number="8895"></td>
<td id="LC8895" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L8896" class="blob-num js-line-number" data-line-number="8896"></td>
<td id="LC8896" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L8897" class="blob-num js-line-number" data-line-number="8897"></td>
<td id="LC8897" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/JPEG<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L8898" class="blob-num js-line-number" data-line-number="8898"></td>
<td id="LC8898" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8899" class="blob-num js-line-number" data-line-number="8899"></td>
<td id="LC8899" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8900" class="blob-num js-line-number" data-line-number="8900"></td>
<td id="LC8900" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/JPEGHeaders<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8901" class="blob-num js-line-number" data-line-number="8901"></td>
<td id="LC8901" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/utils/BinaryReader<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L8902" class="blob-num js-line-number" data-line-number="8902"></td>
<td id="LC8902" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ExifParser<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L8903" class="blob-num js-line-number" data-line-number="8903"></td>
<td id="LC8903" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">x</span>, <span class="pl-smi">JPEGHeaders</span>, <span class="pl-smi">BinaryReader</span>, <span class="pl-smi">ExifParser</span>) {</td>
</tr>
<tr>
<td id="L8904" class="blob-num js-line-number" data-line-number="8904"></td>
<td id="LC8904" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L8905" class="blob-num js-line-number" data-line-number="8905"></td>
<td id="LC8905" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">JPEG</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8906" class="blob-num js-line-number" data-line-number="8906"></td>
<td id="LC8906" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _br, _hm, _ep, _info;</td>
</tr>
<tr>
<td id="L8907" class="blob-num js-line-number" data-line-number="8907"></td>
<td id="LC8907" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8908" class="blob-num js-line-number" data-line-number="8908"></td>
<td id="LC8908" class="blob-code blob-code-inner js-file-line"> _br <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">BinaryReader</span>(data);</td>
</tr>
<tr>
<td id="L8909" class="blob-num js-line-number" data-line-number="8909"></td>
<td id="LC8909" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8910" class="blob-num js-line-number" data-line-number="8910"></td>
<td id="LC8910" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if it is jpeg</span></td>
</tr>
<tr>
<td id="L8911" class="blob-num js-line-number" data-line-number="8911"></td>
<td id="LC8911" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_br</span>.<span class="pl-en">SHORT</span>(<span class="pl-c1">0</span>) <span class="pl-k">!==</span> <span class="pl-c1">0xFFD8</span>) {</td>
</tr>
<tr>
<td id="L8912" class="blob-num js-line-number" data-line-number="8912"></td>
<td id="LC8912" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L8913" class="blob-num js-line-number" data-line-number="8913"></td>
<td id="LC8913" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8914" class="blob-num js-line-number" data-line-number="8914"></td>
<td id="LC8914" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8915" class="blob-num js-line-number" data-line-number="8915"></td>
<td id="LC8915" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> backup headers</span></td>
</tr>
<tr>
<td id="L8916" class="blob-num js-line-number" data-line-number="8916"></td>
<td id="LC8916" class="blob-code blob-code-inner js-file-line"> _hm <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">JPEGHeaders</span>(data);</td>
</tr>
<tr>
<td id="L8917" class="blob-num js-line-number" data-line-number="8917"></td>
<td id="LC8917" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8918" class="blob-num js-line-number" data-line-number="8918"></td>
<td id="LC8918" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> extract exif info</span></td>
</tr>
<tr>
<td id="L8919" class="blob-num js-line-number" data-line-number="8919"></td>
<td id="LC8919" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L8920" class="blob-num js-line-number" data-line-number="8920"></td>
<td id="LC8920" class="blob-code blob-code-inner js-file-line"> _ep <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">ExifParser</span>(<span class="pl-smi">_hm</span>.<span class="pl-c1">get</span>(<span class="pl-s"><span class="pl-pds">'</span>app1<span class="pl-pds">'</span></span>)[<span class="pl-c1">0</span>]);</td>
</tr>
<tr>
<td id="L8921" class="blob-num js-line-number" data-line-number="8921"></td>
<td id="LC8921" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span>(ex) {}</td>
</tr>
<tr>
<td id="L8922" class="blob-num js-line-number" data-line-number="8922"></td>
<td id="LC8922" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8923" class="blob-num js-line-number" data-line-number="8923"></td>
<td id="LC8923" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> get dimensions</span></td>
</tr>
<tr>
<td id="L8924" class="blob-num js-line-number" data-line-number="8924"></td>
<td id="LC8924" class="blob-code blob-code-inner js-file-line"> _info <span class="pl-k">=</span> <span class="pl-smi">_getDimensions</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L8925" class="blob-num js-line-number" data-line-number="8925"></td>
<td id="LC8925" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8926" class="blob-num js-line-number" data-line-number="8926"></td>
<td id="LC8926" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L8927" class="blob-num js-line-number" data-line-number="8927"></td>
<td id="LC8927" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L8928" class="blob-num js-line-number" data-line-number="8928"></td>
<td id="LC8928" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8929" class="blob-num js-line-number" data-line-number="8929"></td>
<td id="LC8929" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> <span class="pl-smi">_br</span>.<span class="pl-c1">length</span>(),</td>
</tr>
<tr>
<td id="L8930" class="blob-num js-line-number" data-line-number="8930"></td>
<td id="LC8930" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8931" class="blob-num js-line-number" data-line-number="8931"></td>
<td id="LC8931" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> _info <span class="pl-k">&&</span> <span class="pl-smi">_info</span>.<span class="pl-c1">width</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L8932" class="blob-num js-line-number" data-line-number="8932"></td>
<td id="LC8932" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8933" class="blob-num js-line-number" data-line-number="8933"></td>
<td id="LC8933" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> _info <span class="pl-k">&&</span> <span class="pl-smi">_info</span>.<span class="pl-c1">height</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L8934" class="blob-num js-line-number" data-line-number="8934"></td>
<td id="LC8934" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8935" class="blob-num js-line-number" data-line-number="8935"></td>
<td id="LC8935" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setExif</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">tag</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L8936" class="blob-num js-line-number" data-line-number="8936"></td>
<td id="LC8936" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_ep) {</td>
</tr>
<tr>
<td id="L8937" class="blob-num js-line-number" data-line-number="8937"></td>
<td id="LC8937" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">false</span>; <span class="pl-c"><span class="pl-c">//</span> or throw an exception</span></td>
</tr>
<tr>
<td id="L8938" class="blob-num js-line-number" data-line-number="8938"></td>
<td id="LC8938" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8939" class="blob-num js-line-number" data-line-number="8939"></td>
<td id="LC8939" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8940" class="blob-num js-line-number" data-line-number="8940"></td>
<td id="LC8940" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(tag) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>object<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L8941" class="blob-num js-line-number" data-line-number="8941"></td>
<td id="LC8941" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(tag, <span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">tag</span>) {</td>
</tr>
<tr>
<td id="L8942" class="blob-num js-line-number" data-line-number="8942"></td>
<td id="LC8942" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_ep</span>.<span class="pl-en">setExif</span>(tag, value);</td>
</tr>
<tr>
<td id="L8943" class="blob-num js-line-number" data-line-number="8943"></td>
<td id="LC8943" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8944" class="blob-num js-line-number" data-line-number="8944"></td>
<td id="LC8944" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L8945" class="blob-num js-line-number" data-line-number="8945"></td>
<td id="LC8945" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_ep</span>.<span class="pl-en">setExif</span>(tag, value);</td>
</tr>
<tr>
<td id="L8946" class="blob-num js-line-number" data-line-number="8946"></td>
<td id="LC8946" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8947" class="blob-num js-line-number" data-line-number="8947"></td>
<td id="LC8947" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8948" class="blob-num js-line-number" data-line-number="8948"></td>
<td id="LC8948" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> update internal headers</span></td>
</tr>
<tr>
<td id="L8949" class="blob-num js-line-number" data-line-number="8949"></td>
<td id="LC8949" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_hm</span>.<span class="pl-c1">set</span>(<span class="pl-s"><span class="pl-pds">'</span>app1<span class="pl-pds">'</span></span>, <span class="pl-smi">_ep</span>.<span class="pl-en">SEGMENT</span>());</td>
</tr>
<tr>
<td id="L8950" class="blob-num js-line-number" data-line-number="8950"></td>
<td id="LC8950" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8951" class="blob-num js-line-number" data-line-number="8951"></td>
<td id="LC8951" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8952" class="blob-num js-line-number" data-line-number="8952"></td>
<td id="LC8952" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">writeHeaders</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8953" class="blob-num js-line-number" data-line-number="8953"></td>
<td id="LC8953" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">arguments</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L8954" class="blob-num js-line-number" data-line-number="8954"></td>
<td id="LC8954" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if no arguments passed, update headers internally</span></td>
</tr>
<tr>
<td id="L8955" class="blob-num js-line-number" data-line-number="8955"></td>
<td id="LC8955" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_hm</span>.<span class="pl-en">restore</span>(data);</td>
</tr>
<tr>
<td id="L8956" class="blob-num js-line-number" data-line-number="8956"></td>
<td id="LC8956" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8957" class="blob-num js-line-number" data-line-number="8957"></td>
<td id="LC8957" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_hm</span>.<span class="pl-en">restore</span>(<span class="pl-c1">arguments</span>[<span class="pl-c1">0</span>]);</td>
</tr>
<tr>
<td id="L8958" class="blob-num js-line-number" data-line-number="8958"></td>
<td id="LC8958" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8959" class="blob-num js-line-number" data-line-number="8959"></td>
<td id="LC8959" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8960" class="blob-num js-line-number" data-line-number="8960"></td>
<td id="LC8960" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">stripHeaders</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L8961" class="blob-num js-line-number" data-line-number="8961"></td>
<td id="LC8961" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_hm</span>.<span class="pl-en">strip</span>(data);</td>
</tr>
<tr>
<td id="L8962" class="blob-num js-line-number" data-line-number="8962"></td>
<td id="LC8962" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L8963" class="blob-num js-line-number" data-line-number="8963"></td>
<td id="LC8963" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8964" class="blob-num js-line-number" data-line-number="8964"></td>
<td id="LC8964" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">purge</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L8965" class="blob-num js-line-number" data-line-number="8965"></td>
<td id="LC8965" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_purge</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L8966" class="blob-num js-line-number" data-line-number="8966"></td>
<td id="LC8966" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8967" class="blob-num js-line-number" data-line-number="8967"></td>
<td id="LC8967" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L8968" class="blob-num js-line-number" data-line-number="8968"></td>
<td id="LC8968" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8969" class="blob-num js-line-number" data-line-number="8969"></td>
<td id="LC8969" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_ep) {</td>
</tr>
<tr>
<td id="L8970" class="blob-num js-line-number" data-line-number="8970"></td>
<td id="LC8970" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span> <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L8971" class="blob-num js-line-number" data-line-number="8971"></td>
<td id="LC8971" class="blob-code blob-code-inner js-file-line"> tiff<span class="pl-k">:</span> <span class="pl-smi">_ep</span>.<span class="pl-en">TIFF</span>(),</td>
</tr>
<tr>
<td id="L8972" class="blob-num js-line-number" data-line-number="8972"></td>
<td id="LC8972" class="blob-code blob-code-inner js-file-line"> exif<span class="pl-k">:</span> <span class="pl-smi">_ep</span>.<span class="pl-en">EXIF</span>(),</td>
</tr>
<tr>
<td id="L8973" class="blob-num js-line-number" data-line-number="8973"></td>
<td id="LC8973" class="blob-code blob-code-inner js-file-line"> gps<span class="pl-k">:</span> <span class="pl-smi">_ep</span>.<span class="pl-en">GPS</span>(),</td>
</tr>
<tr>
<td id="L8974" class="blob-num js-line-number" data-line-number="8974"></td>
<td id="LC8974" class="blob-code blob-code-inner js-file-line"> thumb<span class="pl-k">:</span> <span class="pl-en">_getThumb</span>()</td>
</tr>
<tr>
<td id="L8975" class="blob-num js-line-number" data-line-number="8975"></td>
<td id="LC8975" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8976" class="blob-num js-line-number" data-line-number="8976"></td>
<td id="LC8976" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8977" class="blob-num js-line-number" data-line-number="8977"></td>
<td id="LC8977" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8978" class="blob-num js-line-number" data-line-number="8978"></td>
<td id="LC8978" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8979" class="blob-num js-line-number" data-line-number="8979"></td>
<td id="LC8979" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getDimensions</span>(<span class="pl-smi">br</span>) {</td>
</tr>
<tr>
<td id="L8980" class="blob-num js-line-number" data-line-number="8980"></td>
<td id="LC8980" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> idx <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
</tr>
<tr>
<td id="L8981" class="blob-num js-line-number" data-line-number="8981"></td>
<td id="LC8981" class="blob-code blob-code-inner js-file-line"> , marker</td>
</tr>
<tr>
<td id="L8982" class="blob-num js-line-number" data-line-number="8982"></td>
<td id="LC8982" class="blob-code blob-code-inner js-file-line"> , length</td>
</tr>
<tr>
<td id="L8983" class="blob-num js-line-number" data-line-number="8983"></td>
<td id="LC8983" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L8984" class="blob-num js-line-number" data-line-number="8984"></td>
<td id="LC8984" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8985" class="blob-num js-line-number" data-line-number="8985"></td>
<td id="LC8985" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>br) {</td>
</tr>
<tr>
<td id="L8986" class="blob-num js-line-number" data-line-number="8986"></td>
<td id="LC8986" class="blob-code blob-code-inner js-file-line"> br <span class="pl-k">=</span> _br;</td>
</tr>
<tr>
<td id="L8987" class="blob-num js-line-number" data-line-number="8987"></td>
<td id="LC8987" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L8988" class="blob-num js-line-number" data-line-number="8988"></td>
<td id="LC8988" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8989" class="blob-num js-line-number" data-line-number="8989"></td>
<td id="LC8989" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> examine all through the end, since some images might have very large APP segments</span></td>
</tr>
<tr>
<td id="L8990" class="blob-num js-line-number" data-line-number="8990"></td>
<td id="LC8990" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (idx <span class="pl-k"><=</span> <span class="pl-smi">br</span>.<span class="pl-c1">length</span>()) {</td>
</tr>
<tr>
<td id="L8991" class="blob-num js-line-number" data-line-number="8991"></td>
<td id="LC8991" class="blob-code blob-code-inner js-file-line"> marker <span class="pl-k">=</span> <span class="pl-smi">br</span>.<span class="pl-en">SHORT</span>(idx <span class="pl-k">+=</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L8992" class="blob-num js-line-number" data-line-number="8992"></td>
<td id="LC8992" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L8993" class="blob-num js-line-number" data-line-number="8993"></td>
<td id="LC8993" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (marker <span class="pl-k">>=</span> <span class="pl-c1">0xFFC0</span> <span class="pl-k">&&</span> marker <span class="pl-k"><=</span> <span class="pl-c1">0xFFC3</span>) { <span class="pl-c"><span class="pl-c">//</span> SOFn</span></td>
</tr>
<tr>
<td id="L8994" class="blob-num js-line-number" data-line-number="8994"></td>
<td id="LC8994" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">+=</span> <span class="pl-c1">5</span>; <span class="pl-c"><span class="pl-c">//</span> marker (2 bytes) + length (2 bytes) + Sample precision (1 byte)</span></td>
</tr>
<tr>
<td id="L8995" class="blob-num js-line-number" data-line-number="8995"></td>
<td id="LC8995" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L8996" class="blob-num js-line-number" data-line-number="8996"></td>
<td id="LC8996" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">br</span>.<span class="pl-en">SHORT</span>(idx),</td>
</tr>
<tr>
<td id="L8997" class="blob-num js-line-number" data-line-number="8997"></td>
<td id="LC8997" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">br</span>.<span class="pl-en">SHORT</span>(idx <span class="pl-k">+=</span> <span class="pl-c1">2</span>)</td>
</tr>
<tr>
<td id="L8998" class="blob-num js-line-number" data-line-number="8998"></td>
<td id="LC8998" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L8999" class="blob-num js-line-number" data-line-number="8999"></td>
<td id="LC8999" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9000" class="blob-num js-line-number" data-line-number="9000"></td>
<td id="LC9000" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-smi">br</span>.<span class="pl-en">SHORT</span>(idx <span class="pl-k">+=</span> <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L9001" class="blob-num js-line-number" data-line-number="9001"></td>
<td id="LC9001" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">+=</span> length <span class="pl-k">-</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L9002" class="blob-num js-line-number" data-line-number="9002"></td>
<td id="LC9002" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9003" class="blob-num js-line-number" data-line-number="9003"></td>
<td id="LC9003" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9004" class="blob-num js-line-number" data-line-number="9004"></td>
<td id="LC9004" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9005" class="blob-num js-line-number" data-line-number="9005"></td>
<td id="LC9005" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9006" class="blob-num js-line-number" data-line-number="9006"></td>
<td id="LC9006" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9007" class="blob-num js-line-number" data-line-number="9007"></td>
<td id="LC9007" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getThumb</span>() {</td>
</tr>
<tr>
<td id="L9008" class="blob-num js-line-number" data-line-number="9008"></td>
<td id="LC9008" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> data <span class="pl-k">=</span> <span class="pl-smi">_ep</span>.<span class="pl-en">thumb</span>()</td>
</tr>
<tr>
<td id="L9009" class="blob-num js-line-number" data-line-number="9009"></td>
<td id="LC9009" class="blob-code blob-code-inner js-file-line"> , br</td>
</tr>
<tr>
<td id="L9010" class="blob-num js-line-number" data-line-number="9010"></td>
<td id="LC9010" class="blob-code blob-code-inner js-file-line"> , info</td>
</tr>
<tr>
<td id="L9011" class="blob-num js-line-number" data-line-number="9011"></td>
<td id="LC9011" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L9012" class="blob-num js-line-number" data-line-number="9012"></td>
<td id="LC9012" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9013" class="blob-num js-line-number" data-line-number="9013"></td>
<td id="LC9013" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data) {</td>
</tr>
<tr>
<td id="L9014" class="blob-num js-line-number" data-line-number="9014"></td>
<td id="LC9014" class="blob-code blob-code-inner js-file-line"> br <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">BinaryReader</span>(data);</td>
</tr>
<tr>
<td id="L9015" class="blob-num js-line-number" data-line-number="9015"></td>
<td id="LC9015" class="blob-code blob-code-inner js-file-line"> info <span class="pl-k">=</span> <span class="pl-en">_getDimensions</span>(br);</td>
</tr>
<tr>
<td id="L9016" class="blob-num js-line-number" data-line-number="9016"></td>
<td id="LC9016" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L9017" class="blob-num js-line-number" data-line-number="9017"></td>
<td id="LC9017" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9018" class="blob-num js-line-number" data-line-number="9018"></td>
<td id="LC9018" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (info) {</td>
</tr>
<tr>
<td id="L9019" class="blob-num js-line-number" data-line-number="9019"></td>
<td id="LC9019" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-c1">data</span> <span class="pl-k">=</span> data;</td>
</tr>
<tr>
<td id="L9020" class="blob-num js-line-number" data-line-number="9020"></td>
<td id="LC9020" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> info;</td>
</tr>
<tr>
<td id="L9021" class="blob-num js-line-number" data-line-number="9021"></td>
<td id="LC9021" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9022" class="blob-num js-line-number" data-line-number="9022"></td>
<td id="LC9022" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9023" class="blob-num js-line-number" data-line-number="9023"></td>
<td id="LC9023" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9024" class="blob-num js-line-number" data-line-number="9024"></td>
<td id="LC9024" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9025" class="blob-num js-line-number" data-line-number="9025"></td>
<td id="LC9025" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9026" class="blob-num js-line-number" data-line-number="9026"></td>
<td id="LC9026" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9027" class="blob-num js-line-number" data-line-number="9027"></td>
<td id="LC9027" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_purge</span>() {</td>
</tr>
<tr>
<td id="L9028" class="blob-num js-line-number" data-line-number="9028"></td>
<td id="LC9028" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_ep <span class="pl-k">||</span> <span class="pl-k">!</span>_hm <span class="pl-k">||</span> <span class="pl-k">!</span>_br) { </td>
</tr>
<tr>
<td id="L9029" class="blob-num js-line-number" data-line-number="9029"></td>
<td id="LC9029" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>; <span class="pl-c"><span class="pl-c">//</span> ignore any repeating purge requests</span></td>
</tr>
<tr>
<td id="L9030" class="blob-num js-line-number" data-line-number="9030"></td>
<td id="LC9030" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9031" class="blob-num js-line-number" data-line-number="9031"></td>
<td id="LC9031" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_ep</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L9032" class="blob-num js-line-number" data-line-number="9032"></td>
<td id="LC9032" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_hm</span>.<span class="pl-en">purge</span>();</td>
</tr>
<tr>
<td id="L9033" class="blob-num js-line-number" data-line-number="9033"></td>
<td id="LC9033" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L9034" class="blob-num js-line-number" data-line-number="9034"></td>
<td id="LC9034" class="blob-code blob-code-inner js-file-line"> _info <span class="pl-k">=</span> _hm <span class="pl-k">=</span> _ep <span class="pl-k">=</span> _br <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9035" class="blob-num js-line-number" data-line-number="9035"></td>
<td id="LC9035" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9036" class="blob-num js-line-number" data-line-number="9036"></td>
<td id="LC9036" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9037" class="blob-num js-line-number" data-line-number="9037"></td>
<td id="LC9037" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9038" class="blob-num js-line-number" data-line-number="9038"></td>
<td id="LC9038" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">JPEG</span>;</td>
</tr>
<tr>
<td id="L9039" class="blob-num js-line-number" data-line-number="9039"></td>
<td id="LC9039" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L9040" class="blob-num js-line-number" data-line-number="9040"></td>
<td id="LC9040" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9041" class="blob-num js-line-number" data-line-number="9041"></td>
<td id="LC9041" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/PNG.js</span></td>
</tr>
<tr>
<td id="L9042" class="blob-num js-line-number" data-line-number="9042"></td>
<td id="LC9042" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9043" class="blob-num js-line-number" data-line-number="9043"></td>
<td id="LC9043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9044" class="blob-num js-line-number" data-line-number="9044"></td>
<td id="LC9044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * PNG.js</span></td>
</tr>
<tr>
<td id="L9045" class="blob-num js-line-number" data-line-number="9045"></td>
<td id="LC9045" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9046" class="blob-num js-line-number" data-line-number="9046"></td>
<td id="LC9046" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L9047" class="blob-num js-line-number" data-line-number="9047"></td>
<td id="LC9047" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L9048" class="blob-num js-line-number" data-line-number="9048"></td>
<td id="LC9048" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9049" class="blob-num js-line-number" data-line-number="9049"></td>
<td id="LC9049" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L9050" class="blob-num js-line-number" data-line-number="9050"></td>
<td id="LC9050" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L9051" class="blob-num js-line-number" data-line-number="9051"></td>
<td id="LC9051" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9052" class="blob-num js-line-number" data-line-number="9052"></td>
<td id="LC9052" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9053" class="blob-num js-line-number" data-line-number="9053"></td>
<td id="LC9053" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9054" class="blob-num js-line-number" data-line-number="9054"></td>
<td id="LC9054" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/image/PNG</span></td>
</tr>
<tr>
<td id="L9055" class="blob-num js-line-number" data-line-number="9055"></td>
<td id="LC9055" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L9056" class="blob-num js-line-number" data-line-number="9056"></td>
<td id="LC9056" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9057" class="blob-num js-line-number" data-line-number="9057"></td>
<td id="LC9057" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/PNG<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L9058" class="blob-num js-line-number" data-line-number="9058"></td>
<td id="LC9058" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9059" class="blob-num js-line-number" data-line-number="9059"></td>
<td id="LC9059" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9060" class="blob-num js-line-number" data-line-number="9060"></td>
<td id="LC9060" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/utils/BinaryReader<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L9061" class="blob-num js-line-number" data-line-number="9061"></td>
<td id="LC9061" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">x</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">BinaryReader</span>) {</td>
</tr>
<tr>
<td id="L9062" class="blob-num js-line-number" data-line-number="9062"></td>
<td id="LC9062" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L9063" class="blob-num js-line-number" data-line-number="9063"></td>
<td id="LC9063" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">PNG</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L9064" class="blob-num js-line-number" data-line-number="9064"></td>
<td id="LC9064" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _br, _hm, _ep, _info;</td>
</tr>
<tr>
<td id="L9065" class="blob-num js-line-number" data-line-number="9065"></td>
<td id="LC9065" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9066" class="blob-num js-line-number" data-line-number="9066"></td>
<td id="LC9066" class="blob-code blob-code-inner js-file-line"> _br <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">BinaryReader</span>(data);</td>
</tr>
<tr>
<td id="L9067" class="blob-num js-line-number" data-line-number="9067"></td>
<td id="LC9067" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9068" class="blob-num js-line-number" data-line-number="9068"></td>
<td id="LC9068" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if it's png</span></td>
</tr>
<tr>
<td id="L9069" class="blob-num js-line-number" data-line-number="9069"></td>
<td id="LC9069" class="blob-code blob-code-inner js-file-line"> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9070" class="blob-num js-line-number" data-line-number="9070"></td>
<td id="LC9070" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> idx <span class="pl-k">=</span> <span class="pl-c1">0</span>, i <span class="pl-k">=</span> <span class="pl-c1">0</span></td>
</tr>
<tr>
<td id="L9071" class="blob-num js-line-number" data-line-number="9071"></td>
<td id="LC9071" class="blob-code blob-code-inner js-file-line"> , signature <span class="pl-k">=</span> [<span class="pl-c1">0x8950</span>, <span class="pl-c1">0x4E47</span>, <span class="pl-c1">0x0D0A</span>, <span class="pl-c1">0x1A0A</span>]</td>
</tr>
<tr>
<td id="L9072" class="blob-num js-line-number" data-line-number="9072"></td>
<td id="LC9072" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L9073" class="blob-num js-line-number" data-line-number="9073"></td>
<td id="LC9073" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9074" class="blob-num js-line-number" data-line-number="9074"></td>
<td id="LC9074" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">signature</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>, idx <span class="pl-k">+=</span> <span class="pl-c1">2</span>) {</td>
</tr>
<tr>
<td id="L9075" class="blob-num js-line-number" data-line-number="9075"></td>
<td id="LC9075" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (signature[i] <span class="pl-k">!=</span> <span class="pl-smi">_br</span>.<span class="pl-en">SHORT</span>(idx)) {</td>
</tr>
<tr>
<td id="L9076" class="blob-num js-line-number" data-line-number="9076"></td>
<td id="LC9076" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L9077" class="blob-num js-line-number" data-line-number="9077"></td>
<td id="LC9077" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9078" class="blob-num js-line-number" data-line-number="9078"></td>
<td id="LC9078" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9079" class="blob-num js-line-number" data-line-number="9079"></td>
<td id="LC9079" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L9080" class="blob-num js-line-number" data-line-number="9080"></td>
<td id="LC9080" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9081" class="blob-num js-line-number" data-line-number="9081"></td>
<td id="LC9081" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getDimensions</span>() {</td>
</tr>
<tr>
<td id="L9082" class="blob-num js-line-number" data-line-number="9082"></td>
<td id="LC9082" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> chunk, idx;</td>
</tr>
<tr>
<td id="L9083" class="blob-num js-line-number" data-line-number="9083"></td>
<td id="LC9083" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9084" class="blob-num js-line-number" data-line-number="9084"></td>
<td id="LC9084" class="blob-code blob-code-inner js-file-line"> chunk <span class="pl-k">=</span> <span class="pl-smi">_getChunkAt</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-c1">8</span>);</td>
</tr>
<tr>
<td id="L9085" class="blob-num js-line-number" data-line-number="9085"></td>
<td id="LC9085" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9086" class="blob-num js-line-number" data-line-number="9086"></td>
<td id="LC9086" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">chunk</span>.<span class="pl-c1">type</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>IHDR<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L9087" class="blob-num js-line-number" data-line-number="9087"></td>
<td id="LC9087" class="blob-code blob-code-inner js-file-line"> idx <span class="pl-k">=</span> <span class="pl-smi">chunk</span>.<span class="pl-c1">start</span>;</td>
</tr>
<tr>
<td id="L9088" class="blob-num js-line-number" data-line-number="9088"></td>
<td id="LC9088" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L9089" class="blob-num js-line-number" data-line-number="9089"></td>
<td id="LC9089" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">_br</span>.<span class="pl-en">LONG</span>(idx),</td>
</tr>
<tr>
<td id="L9090" class="blob-num js-line-number" data-line-number="9090"></td>
<td id="LC9090" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">_br</span>.<span class="pl-en">LONG</span>(idx <span class="pl-k">+=</span> <span class="pl-c1">4</span>)</td>
</tr>
<tr>
<td id="L9091" class="blob-num js-line-number" data-line-number="9091"></td>
<td id="LC9091" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9092" class="blob-num js-line-number" data-line-number="9092"></td>
<td id="LC9092" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9093" class="blob-num js-line-number" data-line-number="9093"></td>
<td id="LC9093" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9094" class="blob-num js-line-number" data-line-number="9094"></td>
<td id="LC9094" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9095" class="blob-num js-line-number" data-line-number="9095"></td>
<td id="LC9095" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9096" class="blob-num js-line-number" data-line-number="9096"></td>
<td id="LC9096" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_purge</span>() {</td>
</tr>
<tr>
<td id="L9097" class="blob-num js-line-number" data-line-number="9097"></td>
<td id="LC9097" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_br) {</td>
</tr>
<tr>
<td id="L9098" class="blob-num js-line-number" data-line-number="9098"></td>
<td id="LC9098" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>; <span class="pl-c"><span class="pl-c">//</span> ignore any repeating purge requests</span></td>
</tr>
<tr>
<td id="L9099" class="blob-num js-line-number" data-line-number="9099"></td>
<td id="LC9099" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9100" class="blob-num js-line-number" data-line-number="9100"></td>
<td id="LC9100" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_br</span>.<span class="pl-c1">clear</span>();</td>
</tr>
<tr>
<td id="L9101" class="blob-num js-line-number" data-line-number="9101"></td>
<td id="LC9101" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> _info <span class="pl-k">=</span> _hm <span class="pl-k">=</span> _ep <span class="pl-k">=</span> _br <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9102" class="blob-num js-line-number" data-line-number="9102"></td>
<td id="LC9102" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9103" class="blob-num js-line-number" data-line-number="9103"></td>
<td id="LC9103" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9104" class="blob-num js-line-number" data-line-number="9104"></td>
<td id="LC9104" class="blob-code blob-code-inner js-file-line"> _info <span class="pl-k">=</span> <span class="pl-smi">_getDimensions</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L9105" class="blob-num js-line-number" data-line-number="9105"></td>
<td id="LC9105" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9106" class="blob-num js-line-number" data-line-number="9106"></td>
<td id="LC9106" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L9107" class="blob-num js-line-number" data-line-number="9107"></td>
<td id="LC9107" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>image/png<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9108" class="blob-num js-line-number" data-line-number="9108"></td>
<td id="LC9108" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9109" class="blob-num js-line-number" data-line-number="9109"></td>
<td id="LC9109" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> <span class="pl-smi">_br</span>.<span class="pl-c1">length</span>(),</td>
</tr>
<tr>
<td id="L9110" class="blob-num js-line-number" data-line-number="9110"></td>
<td id="LC9110" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9111" class="blob-num js-line-number" data-line-number="9111"></td>
<td id="LC9111" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-smi">_info</span>.<span class="pl-c1">width</span>,</td>
</tr>
<tr>
<td id="L9112" class="blob-num js-line-number" data-line-number="9112"></td>
<td id="LC9112" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9113" class="blob-num js-line-number" data-line-number="9113"></td>
<td id="LC9113" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-smi">_info</span>.<span class="pl-c1">height</span>,</td>
</tr>
<tr>
<td id="L9114" class="blob-num js-line-number" data-line-number="9114"></td>
<td id="LC9114" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9115" class="blob-num js-line-number" data-line-number="9115"></td>
<td id="LC9115" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">purge</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9116" class="blob-num js-line-number" data-line-number="9116"></td>
<td id="LC9116" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_purge</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L9117" class="blob-num js-line-number" data-line-number="9117"></td>
<td id="LC9117" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9118" class="blob-num js-line-number" data-line-number="9118"></td>
<td id="LC9118" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9119" class="blob-num js-line-number" data-line-number="9119"></td>
<td id="LC9119" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9120" class="blob-num js-line-number" data-line-number="9120"></td>
<td id="LC9120" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> for PNG we can safely trigger purge automatically, as we do not keep any data for later</span></td>
</tr>
<tr>
<td id="L9121" class="blob-num js-line-number" data-line-number="9121"></td>
<td id="LC9121" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_purge</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L9122" class="blob-num js-line-number" data-line-number="9122"></td>
<td id="LC9122" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9123" class="blob-num js-line-number" data-line-number="9123"></td>
<td id="LC9123" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getChunkAt</span>(<span class="pl-smi">idx</span>) {</td>
</tr>
<tr>
<td id="L9124" class="blob-num js-line-number" data-line-number="9124"></td>
<td id="LC9124" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> length, type, start, <span class="pl-c1">CRC</span>;</td>
</tr>
<tr>
<td id="L9125" class="blob-num js-line-number" data-line-number="9125"></td>
<td id="LC9125" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9126" class="blob-num js-line-number" data-line-number="9126"></td>
<td id="LC9126" class="blob-code blob-code-inner js-file-line"> length <span class="pl-k">=</span> <span class="pl-smi">_br</span>.<span class="pl-en">LONG</span>(idx);</td>
</tr>
<tr>
<td id="L9127" class="blob-num js-line-number" data-line-number="9127"></td>
<td id="LC9127" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">=</span> <span class="pl-smi">_br</span>.<span class="pl-en">STRING</span>(idx <span class="pl-k">+=</span> <span class="pl-c1">4</span>, <span class="pl-c1">4</span>);</td>
</tr>
<tr>
<td id="L9128" class="blob-num js-line-number" data-line-number="9128"></td>
<td id="LC9128" class="blob-code blob-code-inner js-file-line"> start <span class="pl-k">=</span> idx <span class="pl-k">+=</span> <span class="pl-c1">4</span>;</td>
</tr>
<tr>
<td id="L9129" class="blob-num js-line-number" data-line-number="9129"></td>
<td id="LC9129" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">CRC</span> <span class="pl-k">=</span> <span class="pl-smi">_br</span>.<span class="pl-en">LONG</span>(idx <span class="pl-k">+</span> length);</td>
</tr>
<tr>
<td id="L9130" class="blob-num js-line-number" data-line-number="9130"></td>
<td id="LC9130" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9131" class="blob-num js-line-number" data-line-number="9131"></td>
<td id="LC9131" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L9132" class="blob-num js-line-number" data-line-number="9132"></td>
<td id="LC9132" class="blob-code blob-code-inner js-file-line"> length<span class="pl-k">:</span> length,</td>
</tr>
<tr>
<td id="L9133" class="blob-num js-line-number" data-line-number="9133"></td>
<td id="LC9133" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> type,</td>
</tr>
<tr>
<td id="L9134" class="blob-num js-line-number" data-line-number="9134"></td>
<td id="LC9134" class="blob-code blob-code-inner js-file-line"> start<span class="pl-k">:</span> start,</td>
</tr>
<tr>
<td id="L9135" class="blob-num js-line-number" data-line-number="9135"></td>
<td id="LC9135" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">CRC</span><span class="pl-k">:</span> <span class="pl-c1">CRC</span></td>
</tr>
<tr>
<td id="L9136" class="blob-num js-line-number" data-line-number="9136"></td>
<td id="LC9136" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9137" class="blob-num js-line-number" data-line-number="9137"></td>
<td id="LC9137" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9138" class="blob-num js-line-number" data-line-number="9138"></td>
<td id="LC9138" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9139" class="blob-num js-line-number" data-line-number="9139"></td>
<td id="LC9139" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9140" class="blob-num js-line-number" data-line-number="9140"></td>
<td id="LC9140" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">PNG</span>;</td>
</tr>
<tr>
<td id="L9141" class="blob-num js-line-number" data-line-number="9141"></td>
<td id="LC9141" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L9142" class="blob-num js-line-number" data-line-number="9142"></td>
<td id="LC9142" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9143" class="blob-num js-line-number" data-line-number="9143"></td>
<td id="LC9143" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/ImageInfo.js</span></td>
</tr>
<tr>
<td id="L9144" class="blob-num js-line-number" data-line-number="9144"></td>
<td id="LC9144" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9145" class="blob-num js-line-number" data-line-number="9145"></td>
<td id="LC9145" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9146" class="blob-num js-line-number" data-line-number="9146"></td>
<td id="LC9146" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * ImageInfo.js</span></td>
</tr>
<tr>
<td id="L9147" class="blob-num js-line-number" data-line-number="9147"></td>
<td id="LC9147" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9148" class="blob-num js-line-number" data-line-number="9148"></td>
<td id="LC9148" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L9149" class="blob-num js-line-number" data-line-number="9149"></td>
<td id="LC9149" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L9150" class="blob-num js-line-number" data-line-number="9150"></td>
<td id="LC9150" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9151" class="blob-num js-line-number" data-line-number="9151"></td>
<td id="LC9151" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L9152" class="blob-num js-line-number" data-line-number="9152"></td>
<td id="LC9152" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L9153" class="blob-num js-line-number" data-line-number="9153"></td>
<td id="LC9153" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9154" class="blob-num js-line-number" data-line-number="9154"></td>
<td id="LC9154" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9155" class="blob-num js-line-number" data-line-number="9155"></td>
<td id="LC9155" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9156" class="blob-num js-line-number" data-line-number="9156"></td>
<td id="LC9156" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Optional image investigation tool for HTML5 runtime. Provides the following features:</span></td>
</tr>
<tr>
<td id="L9157" class="blob-num js-line-number" data-line-number="9157"></td>
<td id="LC9157" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- ability to distinguish image type (JPEG or PNG) by signature</span></td>
</tr>
<tr>
<td id="L9158" class="blob-num js-line-number" data-line-number="9158"></td>
<td id="LC9158" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- ability to extract image width/height directly from it's internals, without preloading in memory (fast)</span></td>
</tr>
<tr>
<td id="L9159" class="blob-num js-line-number" data-line-number="9159"></td>
<td id="LC9159" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- ability to extract APP headers from JPEGs (Exif, GPS, etc)</span></td>
</tr>
<tr>
<td id="L9160" class="blob-num js-line-number" data-line-number="9160"></td>
<td id="LC9160" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- ability to replace width/height tags in extracted JPEG headers</span></td>
</tr>
<tr>
<td id="L9161" class="blob-num js-line-number" data-line-number="9161"></td>
<td id="LC9161" class="blob-code blob-code-inner js-file-line"><span class="pl-c">- ability to restore APP headers, that were for example stripped during image manipulation</span></td>
</tr>
<tr>
<td id="L9162" class="blob-num js-line-number" data-line-number="9162"></td>
<td id="LC9162" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9163" class="blob-num js-line-number" data-line-number="9163"></td>
<td id="LC9163" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/image/ImageInfo</span></td>
</tr>
<tr>
<td id="L9164" class="blob-num js-line-number" data-line-number="9164"></td>
<td id="LC9164" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L9165" class="blob-num js-line-number" data-line-number="9165"></td>
<td id="LC9165" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">data</span> Image source as binary string</span></td>
</tr>
<tr>
<td id="L9166" class="blob-num js-line-number" data-line-number="9166"></td>
<td id="LC9166" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9167" class="blob-num js-line-number" data-line-number="9167"></td>
<td id="LC9167" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ImageInfo<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L9168" class="blob-num js-line-number" data-line-number="9168"></td>
<td id="LC9168" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9169" class="blob-num js-line-number" data-line-number="9169"></td>
<td id="LC9169" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9170" class="blob-num js-line-number" data-line-number="9170"></td>
<td id="LC9170" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/JPEG<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9171" class="blob-num js-line-number" data-line-number="9171"></td>
<td id="LC9171" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/PNG<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L9172" class="blob-num js-line-number" data-line-number="9172"></td>
<td id="LC9172" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">x</span>, <span class="pl-c1">JPEG</span>, <span class="pl-c1">PNG</span>) {</td>
</tr>
<tr>
<td id="L9173" class="blob-num js-line-number" data-line-number="9173"></td>
<td id="LC9173" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9174" class="blob-num js-line-number" data-line-number="9174"></td>
<td id="LC9174" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L9175" class="blob-num js-line-number" data-line-number="9175"></td>
<td id="LC9175" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _cs <span class="pl-k">=</span> [<span class="pl-c1">JPEG</span>, <span class="pl-c1">PNG</span>], _img;</td>
</tr>
<tr>
<td id="L9176" class="blob-num js-line-number" data-line-number="9176"></td>
<td id="LC9176" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9177" class="blob-num js-line-number" data-line-number="9177"></td>
<td id="LC9177" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> figure out the format, throw: ImageError.WRONG_FORMAT if not supported</span></td>
</tr>
<tr>
<td id="L9178" class="blob-num js-line-number" data-line-number="9178"></td>
<td id="LC9178" class="blob-code blob-code-inner js-file-line"> _img <span class="pl-k">=</span> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9179" class="blob-num js-line-number" data-line-number="9179"></td>
<td id="LC9179" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">_cs</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L9180" class="blob-num js-line-number" data-line-number="9180"></td>
<td id="LC9180" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L9181" class="blob-num js-line-number" data-line-number="9181"></td>
<td id="LC9181" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">_cs</span>[i](data);</td>
</tr>
<tr>
<td id="L9182" class="blob-num js-line-number" data-line-number="9182"></td>
<td id="LC9182" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L9183" class="blob-num js-line-number" data-line-number="9183"></td>
<td id="LC9183" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> console.info(ex);</span></td>
</tr>
<tr>
<td id="L9184" class="blob-num js-line-number" data-line-number="9184"></td>
<td id="LC9184" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9185" class="blob-num js-line-number" data-line-number="9185"></td>
<td id="LC9185" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9186" class="blob-num js-line-number" data-line-number="9186"></td>
<td id="LC9186" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L9187" class="blob-num js-line-number" data-line-number="9187"></td>
<td id="LC9187" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L9188" class="blob-num js-line-number" data-line-number="9188"></td>
<td id="LC9188" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9189" class="blob-num js-line-number" data-line-number="9189"></td>
<td id="LC9189" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L9190" class="blob-num js-line-number" data-line-number="9190"></td>
<td id="LC9190" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9191" class="blob-num js-line-number" data-line-number="9191"></td>
<td id="LC9191" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Image Mime Type extracted from it's depths</span></td>
</tr>
<tr>
<td id="L9192" class="blob-num js-line-number" data-line-number="9192"></td>
<td id="LC9192" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9193" class="blob-num js-line-number" data-line-number="9193"></td>
<td id="LC9193" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> type</span></td>
</tr>
<tr>
<td id="L9194" class="blob-num js-line-number" data-line-number="9194"></td>
<td id="LC9194" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{String}</span></span></td>
</tr>
<tr>
<td id="L9195" class="blob-num js-line-number" data-line-number="9195"></td>
<td id="LC9195" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi"><span class="pl-pds">'</span><span class="pl-pds">'</span></span></span></td>
</tr>
<tr>
<td id="L9196" class="blob-num js-line-number" data-line-number="9196"></td>
<td id="LC9196" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9197" class="blob-num js-line-number" data-line-number="9197"></td>
<td id="LC9197" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9198" class="blob-num js-line-number" data-line-number="9198"></td>
<td id="LC9198" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9199" class="blob-num js-line-number" data-line-number="9199"></td>
<td id="LC9199" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9200" class="blob-num js-line-number" data-line-number="9200"></td>
<td id="LC9200" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Image size in bytes</span></td>
</tr>
<tr>
<td id="L9201" class="blob-num js-line-number" data-line-number="9201"></td>
<td id="LC9201" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9202" class="blob-num js-line-number" data-line-number="9202"></td>
<td id="LC9202" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> size</span></td>
</tr>
<tr>
<td id="L9203" class="blob-num js-line-number" data-line-number="9203"></td>
<td id="LC9203" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L9204" class="blob-num js-line-number" data-line-number="9204"></td>
<td id="LC9204" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L9205" class="blob-num js-line-number" data-line-number="9205"></td>
<td id="LC9205" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9206" class="blob-num js-line-number" data-line-number="9206"></td>
<td id="LC9206" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L9207" class="blob-num js-line-number" data-line-number="9207"></td>
<td id="LC9207" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9208" class="blob-num js-line-number" data-line-number="9208"></td>
<td id="LC9208" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9209" class="blob-num js-line-number" data-line-number="9209"></td>
<td id="LC9209" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Image width extracted from image source</span></td>
</tr>
<tr>
<td id="L9210" class="blob-num js-line-number" data-line-number="9210"></td>
<td id="LC9210" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9211" class="blob-num js-line-number" data-line-number="9211"></td>
<td id="LC9211" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> width</span></td>
</tr>
<tr>
<td id="L9212" class="blob-num js-line-number" data-line-number="9212"></td>
<td id="LC9212" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L9213" class="blob-num js-line-number" data-line-number="9213"></td>
<td id="LC9213" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L9214" class="blob-num js-line-number" data-line-number="9214"></td>
<td id="LC9214" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9215" class="blob-num js-line-number" data-line-number="9215"></td>
<td id="LC9215" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L9216" class="blob-num js-line-number" data-line-number="9216"></td>
<td id="LC9216" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9217" class="blob-num js-line-number" data-line-number="9217"></td>
<td id="LC9217" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9218" class="blob-num js-line-number" data-line-number="9218"></td>
<td id="LC9218" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Image height extracted from image source</span></td>
</tr>
<tr>
<td id="L9219" class="blob-num js-line-number" data-line-number="9219"></td>
<td id="LC9219" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9220" class="blob-num js-line-number" data-line-number="9220"></td>
<td id="LC9220" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@property</span> height</span></td>
</tr>
<tr>
<td id="L9221" class="blob-num js-line-number" data-line-number="9221"></td>
<td id="LC9221" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@type</span> <span class="pl-en">{Number}</span></span></td>
</tr>
<tr>
<td id="L9222" class="blob-num js-line-number" data-line-number="9222"></td>
<td id="LC9222" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@default</span> <span class="pl-smi">0</span></span></td>
</tr>
<tr>
<td id="L9223" class="blob-num js-line-number" data-line-number="9223"></td>
<td id="LC9223" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9224" class="blob-num js-line-number" data-line-number="9224"></td>
<td id="LC9224" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L9225" class="blob-num js-line-number" data-line-number="9225"></td>
<td id="LC9225" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9226" class="blob-num js-line-number" data-line-number="9226"></td>
<td id="LC9226" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9227" class="blob-num js-line-number" data-line-number="9227"></td>
<td id="LC9227" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Sets Exif tag. Currently applicable only for width and height tags. Obviously works only with JPEGs.</span></td>
</tr>
<tr>
<td id="L9228" class="blob-num js-line-number" data-line-number="9228"></td>
<td id="LC9228" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9229" class="blob-num js-line-number" data-line-number="9229"></td>
<td id="LC9229" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">setExif</span></span></td>
</tr>
<tr>
<td id="L9230" class="blob-num js-line-number" data-line-number="9230"></td>
<td id="LC9230" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">tag</span> Tag to set</span></td>
</tr>
<tr>
<td id="L9231" class="blob-num js-line-number" data-line-number="9231"></td>
<td id="LC9231" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{Mixed}</span> <span class="pl-smi">value</span> Value to assign to the tag</span></td>
</tr>
<tr>
<td id="L9232" class="blob-num js-line-number" data-line-number="9232"></td>
<td id="LC9232" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9233" class="blob-num js-line-number" data-line-number="9233"></td>
<td id="LC9233" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setExif</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {},</td>
</tr>
<tr>
<td id="L9234" class="blob-num js-line-number" data-line-number="9234"></td>
<td id="LC9234" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9235" class="blob-num js-line-number" data-line-number="9235"></td>
<td id="LC9235" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9236" class="blob-num js-line-number" data-line-number="9236"></td>
<td id="LC9236" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Restores headers to the source.</span></td>
</tr>
<tr>
<td id="L9237" class="blob-num js-line-number" data-line-number="9237"></td>
<td id="LC9237" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9238" class="blob-num js-line-number" data-line-number="9238"></td>
<td id="LC9238" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">writeHeaders</span></span></td>
</tr>
<tr>
<td id="L9239" class="blob-num js-line-number" data-line-number="9239"></td>
<td id="LC9239" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">data</span> Image source as binary string</span></td>
</tr>
<tr>
<td id="L9240" class="blob-num js-line-number" data-line-number="9240"></td>
<td id="LC9240" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Updated binary string</span></td>
</tr>
<tr>
<td id="L9241" class="blob-num js-line-number" data-line-number="9241"></td>
<td id="LC9241" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9242" class="blob-num js-line-number" data-line-number="9242"></td>
<td id="LC9242" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">writeHeaders</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L9243" class="blob-num js-line-number" data-line-number="9243"></td>
<td id="LC9243" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L9244" class="blob-num js-line-number" data-line-number="9244"></td>
<td id="LC9244" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9245" class="blob-num js-line-number" data-line-number="9245"></td>
<td id="LC9245" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9246" class="blob-num js-line-number" data-line-number="9246"></td>
<td id="LC9246" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9247" class="blob-num js-line-number" data-line-number="9247"></td>
<td id="LC9247" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Strip all headers from the source.</span></td>
</tr>
<tr>
<td id="L9248" class="blob-num js-line-number" data-line-number="9248"></td>
<td id="LC9248" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9249" class="blob-num js-line-number" data-line-number="9249"></td>
<td id="LC9249" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">stripHeaders</span></span></td>
</tr>
<tr>
<td id="L9250" class="blob-num js-line-number" data-line-number="9250"></td>
<td id="LC9250" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@param</span> <span class="pl-en">{String}</span> <span class="pl-smi">data</span> Image source as binary string</span></td>
</tr>
<tr>
<td id="L9251" class="blob-num js-line-number" data-line-number="9251"></td>
<td id="LC9251" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{String}</span> Updated binary string</span></td>
</tr>
<tr>
<td id="L9252" class="blob-num js-line-number" data-line-number="9252"></td>
<td id="LC9252" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9253" class="blob-num js-line-number" data-line-number="9253"></td>
<td id="LC9253" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">stripHeaders</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L9254" class="blob-num js-line-number" data-line-number="9254"></td>
<td id="LC9254" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L9255" class="blob-num js-line-number" data-line-number="9255"></td>
<td id="LC9255" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9256" class="blob-num js-line-number" data-line-number="9256"></td>
<td id="LC9256" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9257" class="blob-num js-line-number" data-line-number="9257"></td>
<td id="LC9257" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9258" class="blob-num js-line-number" data-line-number="9258"></td>
<td id="LC9258" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Dispose resources.</span></td>
</tr>
<tr>
<td id="L9259" class="blob-num js-line-number" data-line-number="9259"></td>
<td id="LC9259" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9260" class="blob-num js-line-number" data-line-number="9260"></td>
<td id="LC9260" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">purge</span></span></td>
</tr>
<tr>
<td id="L9261" class="blob-num js-line-number" data-line-number="9261"></td>
<td id="LC9261" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9262" class="blob-num js-line-number" data-line-number="9262"></td>
<td id="LC9262" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">purge</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9263" class="blob-num js-line-number" data-line-number="9263"></td>
<td id="LC9263" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9264" class="blob-num js-line-number" data-line-number="9264"></td>
<td id="LC9264" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9265" class="blob-num js-line-number" data-line-number="9265"></td>
<td id="LC9265" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9266" class="blob-num js-line-number" data-line-number="9266"></td>
<td id="LC9266" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9267" class="blob-num js-line-number" data-line-number="9267"></td>
<td id="LC9267" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, _img);</td>
</tr>
<tr>
<td id="L9268" class="blob-num js-line-number" data-line-number="9268"></td>
<td id="LC9268" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9269" class="blob-num js-line-number" data-line-number="9269"></td>
<td id="LC9269" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">purge</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9270" class="blob-num js-line-number" data-line-number="9270"></td>
<td id="LC9270" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_img</span>.<span class="pl-en">purge</span>();</td>
</tr>
<tr>
<td id="L9271" class="blob-num js-line-number" data-line-number="9271"></td>
<td id="LC9271" class="blob-code blob-code-inner js-file-line"> _img <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9272" class="blob-num js-line-number" data-line-number="9272"></td>
<td id="LC9272" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9273" class="blob-num js-line-number" data-line-number="9273"></td>
<td id="LC9273" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9274" class="blob-num js-line-number" data-line-number="9274"></td>
<td id="LC9274" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L9275" class="blob-num js-line-number" data-line-number="9275"></td>
<td id="LC9275" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9276" class="blob-num js-line-number" data-line-number="9276"></td>
<td id="LC9276" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/ResizerCanvas.js</span></td>
</tr>
<tr>
<td id="L9277" class="blob-num js-line-number" data-line-number="9277"></td>
<td id="LC9277" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9278" class="blob-num js-line-number" data-line-number="9278"></td>
<td id="LC9278" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9279" class="blob-num js-line-number" data-line-number="9279"></td>
<td id="LC9279" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * ResizerCanvas.js</span></td>
</tr>
<tr>
<td id="L9280" class="blob-num js-line-number" data-line-number="9280"></td>
<td id="LC9280" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9281" class="blob-num js-line-number" data-line-number="9281"></td>
<td id="LC9281" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L9282" class="blob-num js-line-number" data-line-number="9282"></td>
<td id="LC9282" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L9283" class="blob-num js-line-number" data-line-number="9283"></td>
<td id="LC9283" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9284" class="blob-num js-line-number" data-line-number="9284"></td>
<td id="LC9284" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L9285" class="blob-num js-line-number" data-line-number="9285"></td>
<td id="LC9285" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L9286" class="blob-num js-line-number" data-line-number="9286"></td>
<td id="LC9286" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9287" class="blob-num js-line-number" data-line-number="9287"></td>
<td id="LC9287" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9288" class="blob-num js-line-number" data-line-number="9288"></td>
<td id="LC9288" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9289" class="blob-num js-line-number" data-line-number="9289"></td>
<td id="LC9289" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Resizes image/canvas using canvas</span></td>
</tr>
<tr>
<td id="L9290" class="blob-num js-line-number" data-line-number="9290"></td>
<td id="LC9290" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9291" class="blob-num js-line-number" data-line-number="9291"></td>
<td id="LC9291" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ResizerCanvas<span class="pl-pds">"</span></span>, [], <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9292" class="blob-num js-line-number" data-line-number="9292"></td>
<td id="LC9292" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9293" class="blob-num js-line-number" data-line-number="9293"></td>
<td id="LC9293" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">scale</span>(<span class="pl-smi">image</span>, <span class="pl-smi">ratio</span>, <span class="pl-smi">resample</span>) {</td>
</tr>
<tr>
<td id="L9294" class="blob-num js-line-number" data-line-number="9294"></td>
<td id="LC9294" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> sD <span class="pl-k">=</span> <span class="pl-smi">image</span>.<span class="pl-c1">width</span> <span class="pl-k">></span> <span class="pl-smi">image</span>.<span class="pl-c1">height</span> <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>width<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>height<span class="pl-pds">'</span></span>; <span class="pl-c"><span class="pl-c">//</span> take the largest side</span></td>
</tr>
<tr>
<td id="L9295" class="blob-num js-line-number" data-line-number="9295"></td>
<td id="LC9295" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dD <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">round</span>(image[sD] <span class="pl-k">*</span> ratio);</td>
</tr>
<tr>
<td id="L9296" class="blob-num js-line-number" data-line-number="9296"></td>
<td id="LC9296" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> scaleCapped <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L9297" class="blob-num js-line-number" data-line-number="9297"></td>
<td id="LC9297" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9298" class="blob-num js-line-number" data-line-number="9298"></td>
<td id="LC9298" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (resample <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>nearest<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> (ratio <span class="pl-k"><</span> <span class="pl-c1">0.5</span> <span class="pl-k">||</span> ratio <span class="pl-k">></span> <span class="pl-c1">2</span>)) {</td>
</tr>
<tr>
<td id="L9299" class="blob-num js-line-number" data-line-number="9299"></td>
<td id="LC9299" class="blob-code blob-code-inner js-file-line"> ratio <span class="pl-k">=</span> ratio <span class="pl-k"><</span> <span class="pl-c1">0.5</span> <span class="pl-k">?</span> <span class="pl-c1">0.5</span> <span class="pl-k">:</span> <span class="pl-c1">2</span>;</td>
</tr>
<tr>
<td id="L9300" class="blob-num js-line-number" data-line-number="9300"></td>
<td id="LC9300" class="blob-code blob-code-inner js-file-line"> scaleCapped <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L9301" class="blob-num js-line-number" data-line-number="9301"></td>
<td id="LC9301" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9302" class="blob-num js-line-number" data-line-number="9302"></td>
<td id="LC9302" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9303" class="blob-num js-line-number" data-line-number="9303"></td>
<td id="LC9303" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> tCanvas <span class="pl-k">=</span> <span class="pl-en">_scale</span>(image, ratio);</td>
</tr>
<tr>
<td id="L9304" class="blob-num js-line-number" data-line-number="9304"></td>
<td id="LC9304" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9305" class="blob-num js-line-number" data-line-number="9305"></td>
<td id="LC9305" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (scaleCapped) {</td>
</tr>
<tr>
<td id="L9306" class="blob-num js-line-number" data-line-number="9306"></td>
<td id="LC9306" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">scale</span>(tCanvas, dD <span class="pl-k">/</span> tCanvas[sD], resample);</td>
</tr>
<tr>
<td id="L9307" class="blob-num js-line-number" data-line-number="9307"></td>
<td id="LC9307" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9308" class="blob-num js-line-number" data-line-number="9308"></td>
<td id="LC9308" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> tCanvas;</td>
</tr>
<tr>
<td id="L9309" class="blob-num js-line-number" data-line-number="9309"></td>
<td id="LC9309" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9310" class="blob-num js-line-number" data-line-number="9310"></td>
<td id="LC9310" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9311" class="blob-num js-line-number" data-line-number="9311"></td>
<td id="LC9311" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9312" class="blob-num js-line-number" data-line-number="9312"></td>
<td id="LC9312" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9313" class="blob-num js-line-number" data-line-number="9313"></td>
<td id="LC9313" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_scale</span>(<span class="pl-smi">image</span>, <span class="pl-smi">ratio</span>) {</td>
</tr>
<tr>
<td id="L9314" class="blob-num js-line-number" data-line-number="9314"></td>
<td id="LC9314" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> sW <span class="pl-k">=</span> <span class="pl-smi">image</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L9315" class="blob-num js-line-number" data-line-number="9315"></td>
<td id="LC9315" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> sH <span class="pl-k">=</span> <span class="pl-smi">image</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L9316" class="blob-num js-line-number" data-line-number="9316"></td>
<td id="LC9316" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dW <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">round</span>(sW <span class="pl-k">*</span> ratio);</td>
</tr>
<tr>
<td id="L9317" class="blob-num js-line-number" data-line-number="9317"></td>
<td id="LC9317" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dH <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">round</span>(sH <span class="pl-k">*</span> ratio);</td>
</tr>
<tr>
<td id="L9318" class="blob-num js-line-number" data-line-number="9318"></td>
<td id="LC9318" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9319" class="blob-num js-line-number" data-line-number="9319"></td>
<td id="LC9319" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> canvas <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9320" class="blob-num js-line-number" data-line-number="9320"></td>
<td id="LC9320" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> dW;</td>
</tr>
<tr>
<td id="L9321" class="blob-num js-line-number" data-line-number="9321"></td>
<td id="LC9321" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> dH;</td>
</tr>
<tr>
<td id="L9322" class="blob-num js-line-number" data-line-number="9322"></td>
<td id="LC9322" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">"</span>2d<span class="pl-pds">"</span></span>).<span class="pl-en">drawImage</span>(image, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, sW, sH, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, dW, dH);</td>
</tr>
<tr>
<td id="L9323" class="blob-num js-line-number" data-line-number="9323"></td>
<td id="LC9323" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9324" class="blob-num js-line-number" data-line-number="9324"></td>
<td id="LC9324" class="blob-code blob-code-inner js-file-line"> image <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> just in case</span></td>
</tr>
<tr>
<td id="L9325" class="blob-num js-line-number" data-line-number="9325"></td>
<td id="LC9325" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> canvas;</td>
</tr>
<tr>
<td id="L9326" class="blob-num js-line-number" data-line-number="9326"></td>
<td id="LC9326" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9327" class="blob-num js-line-number" data-line-number="9327"></td>
<td id="LC9327" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9328" class="blob-num js-line-number" data-line-number="9328"></td>
<td id="LC9328" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> {</td>
</tr>
<tr>
<td id="L9329" class="blob-num js-line-number" data-line-number="9329"></td>
<td id="LC9329" class="blob-code blob-code-inner js-file-line"> scale<span class="pl-k">:</span> scale</td>
</tr>
<tr>
<td id="L9330" class="blob-num js-line-number" data-line-number="9330"></td>
<td id="LC9330" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9331" class="blob-num js-line-number" data-line-number="9331"></td>
<td id="LC9331" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9332" class="blob-num js-line-number" data-line-number="9332"></td>
<td id="LC9332" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L9333" class="blob-num js-line-number" data-line-number="9333"></td>
<td id="LC9333" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9334" class="blob-num js-line-number" data-line-number="9334"></td>
<td id="LC9334" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html5/image/Image.js</span></td>
</tr>
<tr>
<td id="L9335" class="blob-num js-line-number" data-line-number="9335"></td>
<td id="LC9335" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9336" class="blob-num js-line-number" data-line-number="9336"></td>
<td id="LC9336" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9337" class="blob-num js-line-number" data-line-number="9337"></td>
<td id="LC9337" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Image.js</span></td>
</tr>
<tr>
<td id="L9338" class="blob-num js-line-number" data-line-number="9338"></td>
<td id="LC9338" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9339" class="blob-num js-line-number" data-line-number="9339"></td>
<td id="LC9339" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L9340" class="blob-num js-line-number" data-line-number="9340"></td>
<td id="LC9340" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L9341" class="blob-num js-line-number" data-line-number="9341"></td>
<td id="LC9341" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9342" class="blob-num js-line-number" data-line-number="9342"></td>
<td id="LC9342" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L9343" class="blob-num js-line-number" data-line-number="9343"></td>
<td id="LC9343" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L9344" class="blob-num js-line-number" data-line-number="9344"></td>
<td id="LC9344" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9345" class="blob-num js-line-number" data-line-number="9345"></td>
<td id="LC9345" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9346" class="blob-num js-line-number" data-line-number="9346"></td>
<td id="LC9346" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9347" class="blob-num js-line-number" data-line-number="9347"></td>
<td id="LC9347" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html5/image/Image</span></td>
</tr>
<tr>
<td id="L9348" class="blob-num js-line-number" data-line-number="9348"></td>
<td id="LC9348" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L9349" class="blob-num js-line-number" data-line-number="9349"></td>
<td id="LC9349" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9350" class="blob-num js-line-number" data-line-number="9350"></td>
<td id="LC9350" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/Image<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L9351" class="blob-num js-line-number" data-line-number="9351"></td>
<td id="LC9351" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9352" class="blob-num js-line-number" data-line-number="9352"></td>
<td id="LC9352" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9353" class="blob-num js-line-number" data-line-number="9353"></td>
<td id="LC9353" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9354" class="blob-num js-line-number" data-line-number="9354"></td>
<td id="LC9354" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9355" class="blob-num js-line-number" data-line-number="9355"></td>
<td id="LC9355" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9356" class="blob-num js-line-number" data-line-number="9356"></td>
<td id="LC9356" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9357" class="blob-num js-line-number" data-line-number="9357"></td>
<td id="LC9357" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ImageInfo<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9358" class="blob-num js-line-number" data-line-number="9358"></td>
<td id="LC9358" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ResizerCanvas<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9359" class="blob-num js-line-number" data-line-number="9359"></td>
<td id="LC9359" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9360" class="blob-num js-line-number" data-line-number="9360"></td>
<td id="LC9360" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L9361" class="blob-num js-line-number" data-line-number="9361"></td>
<td id="LC9361" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Encode</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">File</span>, <span class="pl-smi">ImageInfo</span>, <span class="pl-smi">ResizerCanvas</span>, <span class="pl-smi">Mime</span>, <span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L9362" class="blob-num js-line-number" data-line-number="9362"></td>
<td id="LC9362" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9363" class="blob-num js-line-number" data-line-number="9363"></td>
<td id="LC9363" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">HTML5Image</span>() {</td>
</tr>
<tr>
<td id="L9364" class="blob-num js-line-number" data-line-number="9364"></td>
<td id="LC9364" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> me <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L9365" class="blob-num js-line-number" data-line-number="9365"></td>
<td id="LC9365" class="blob-code blob-code-inner js-file-line"> , _img, _imgInfo, _canvas, _binStr, _blob</td>
</tr>
<tr>
<td id="L9366" class="blob-num js-line-number" data-line-number="9366"></td>
<td id="LC9366" class="blob-code blob-code-inner js-file-line"> , _modified <span class="pl-k">=</span> <span class="pl-c1">false</span> <span class="pl-c"><span class="pl-c">//</span> is set true whenever image is modified</span></td>
</tr>
<tr>
<td id="L9367" class="blob-num js-line-number" data-line-number="9367"></td>
<td id="LC9367" class="blob-code blob-code-inner js-file-line"> , _preserveHeaders <span class="pl-k">=</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L9368" class="blob-num js-line-number" data-line-number="9368"></td>
<td id="LC9368" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L9369" class="blob-num js-line-number" data-line-number="9369"></td>
<td id="LC9369" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9370" class="blob-num js-line-number" data-line-number="9370"></td>
<td id="LC9370" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L9371" class="blob-num js-line-number" data-line-number="9371"></td>
<td id="LC9371" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadFromBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L9372" class="blob-num js-line-number" data-line-number="9372"></td>
<td id="LC9372" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L9373" class="blob-num js-line-number" data-line-number="9373"></td>
<td id="LC9373" class="blob-code blob-code-inner js-file-line"> , asBinary <span class="pl-k">=</span> <span class="pl-c1">arguments</span>.<span class="pl-c1">length</span> <span class="pl-k">></span> <span class="pl-c1">1</span> <span class="pl-k">?</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>] <span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L9374" class="blob-num js-line-number" data-line-number="9374"></td>
<td id="LC9374" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L9375" class="blob-num js-line-number" data-line-number="9375"></td>
<td id="LC9375" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9376" class="blob-num js-line-number" data-line-number="9376"></td>
<td id="LC9376" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>access_binary<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L9377" class="blob-num js-line-number" data-line-number="9377"></td>
<td id="LC9377" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_SUPPORTED_ERR</span>);</td>
</tr>
<tr>
<td id="L9378" class="blob-num js-line-number" data-line-number="9378"></td>
<td id="LC9378" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9379" class="blob-num js-line-number" data-line-number="9379"></td>
<td id="LC9379" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9380" class="blob-num js-line-number" data-line-number="9380"></td>
<td id="LC9380" class="blob-code blob-code-inner js-file-line"> _blob <span class="pl-k">=</span> blob;</td>
</tr>
<tr>
<td id="L9381" class="blob-num js-line-number" data-line-number="9381"></td>
<td id="LC9381" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9382" class="blob-num js-line-number" data-line-number="9382"></td>
<td id="LC9382" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L9383" class="blob-num js-line-number" data-line-number="9383"></td>
<td id="LC9383" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>();</td>
</tr>
<tr>
<td id="L9384" class="blob-num js-line-number" data-line-number="9384"></td>
<td id="LC9384" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_preload</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, _binStr);</td>
</tr>
<tr>
<td id="L9385" class="blob-num js-line-number" data-line-number="9385"></td>
<td id="LC9385" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L9386" class="blob-num js-line-number" data-line-number="9386"></td>
<td id="LC9386" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9387" class="blob-num js-line-number" data-line-number="9387"></td>
<td id="LC9387" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_readAsDataUrl</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>(), <span class="pl-k">function</span>(<span class="pl-smi">dataUrl</span>) {</td>
</tr>
<tr>
<td id="L9388" class="blob-num js-line-number" data-line-number="9388"></td>
<td id="LC9388" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (asBinary) {</td>
</tr>
<tr>
<td id="L9389" class="blob-num js-line-number" data-line-number="9389"></td>
<td id="LC9389" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-en">_toBinary</span>(dataUrl);</td>
</tr>
<tr>
<td id="L9390" class="blob-num js-line-number" data-line-number="9390"></td>
<td id="LC9390" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9391" class="blob-num js-line-number" data-line-number="9391"></td>
<td id="LC9391" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_preload</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, dataUrl);</td>
</tr>
<tr>
<td id="L9392" class="blob-num js-line-number" data-line-number="9392"></td>
<td id="LC9392" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9393" class="blob-num js-line-number" data-line-number="9393"></td>
<td id="LC9393" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9394" class="blob-num js-line-number" data-line-number="9394"></td>
<td id="LC9394" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9395" class="blob-num js-line-number" data-line-number="9395"></td>
<td id="LC9395" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9396" class="blob-num js-line-number" data-line-number="9396"></td>
<td id="LC9396" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadFromImage</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">img</span>, <span class="pl-smi">exact</span>) {</td>
</tr>
<tr>
<td id="L9397" class="blob-num js-line-number" data-line-number="9397"></td>
<td id="LC9397" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span> <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-smi">meta</span>;</td>
</tr>
<tr>
<td id="L9398" class="blob-num js-line-number" data-line-number="9398"></td>
<td id="LC9398" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9399" class="blob-num js-line-number" data-line-number="9399"></td>
<td id="LC9399" class="blob-code blob-code-inner js-file-line"> _blob <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">null</span>, {</td>
</tr>
<tr>
<td id="L9400" class="blob-num js-line-number" data-line-number="9400"></td>
<td id="LC9400" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-smi">img</span>.<span class="pl-c1">name</span>,</td>
</tr>
<tr>
<td id="L9401" class="blob-num js-line-number" data-line-number="9401"></td>
<td id="LC9401" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> <span class="pl-smi">img</span>.<span class="pl-c1">size</span>,</td>
</tr>
<tr>
<td id="L9402" class="blob-num js-line-number" data-line-number="9402"></td>
<td id="LC9402" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-smi">img</span>.<span class="pl-c1">type</span></td>
</tr>
<tr>
<td id="L9403" class="blob-num js-line-number" data-line-number="9403"></td>
<td id="LC9403" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9404" class="blob-num js-line-number" data-line-number="9404"></td>
<td id="LC9404" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9405" class="blob-num js-line-number" data-line-number="9405"></td>
<td id="LC9405" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_preload</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, exact <span class="pl-k">?</span> (_binStr <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-en">getAsBinaryString</span>()) <span class="pl-k">:</span> <span class="pl-smi">img</span>.<span class="pl-en">getAsDataURL</span>());</td>
</tr>
<tr>
<td id="L9406" class="blob-num js-line-number" data-line-number="9406"></td>
<td id="LC9406" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9407" class="blob-num js-line-number" data-line-number="9407"></td>
<td id="LC9407" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9408" class="blob-num js-line-number" data-line-number="9408"></td>
<td id="LC9408" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getInfo</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9409" class="blob-num js-line-number" data-line-number="9409"></td>
<td id="LC9409" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>(), info;</td>
</tr>
<tr>
<td id="L9410" class="blob-num js-line-number" data-line-number="9410"></td>
<td id="LC9410" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9411" class="blob-num js-line-number" data-line-number="9411"></td>
<td id="LC9411" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_imgInfo <span class="pl-k">&&</span> _binStr <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>access_image_binary<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L9412" class="blob-num js-line-number" data-line-number="9412"></td>
<td id="LC9412" class="blob-code blob-code-inner js-file-line"> _imgInfo <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">ImageInfo</span>(_binStr);</td>
</tr>
<tr>
<td id="L9413" class="blob-num js-line-number" data-line-number="9413"></td>
<td id="LC9413" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9414" class="blob-num js-line-number" data-line-number="9414"></td>
<td id="LC9414" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9415" class="blob-num js-line-number" data-line-number="9415"></td>
<td id="LC9415" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this stuff below is definitely having fun with itself</span></td>
</tr>
<tr>
<td id="L9416" class="blob-num js-line-number" data-line-number="9416"></td>
<td id="LC9416" class="blob-code blob-code-inner js-file-line"> info <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L9417" class="blob-num js-line-number" data-line-number="9417"></td>
<td id="LC9417" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-en">_getImg</span>().<span class="pl-c1">width</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L9418" class="blob-num js-line-number" data-line-number="9418"></td>
<td id="LC9418" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-en">_getImg</span>().<span class="pl-c1">height</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L9419" class="blob-num js-line-number" data-line-number="9419"></td>
<td id="LC9419" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-smi">Mime</span>.<span class="pl-en">getFileMime</span>(<span class="pl-smi">_blob</span>.<span class="pl-c1">name</span>),</td>
</tr>
<tr>
<td id="L9420" class="blob-num js-line-number" data-line-number="9420"></td>
<td id="LC9420" class="blob-code blob-code-inner js-file-line"> size<span class="pl-k">:</span> _binStr <span class="pl-k">&&</span> <span class="pl-smi">_binStr</span>.<span class="pl-c1">length</span> <span class="pl-k">||</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">size</span> <span class="pl-k">||</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L9421" class="blob-num js-line-number" data-line-number="9421"></td>
<td id="LC9421" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">name</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9422" class="blob-num js-line-number" data-line-number="9422"></td>
<td id="LC9422" class="blob-code blob-code-inner js-file-line"> meta<span class="pl-k">:</span> <span class="pl-c1">null</span></td>
</tr>
<tr>
<td id="L9423" class="blob-num js-line-number" data-line-number="9423"></td>
<td id="LC9423" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9424" class="blob-num js-line-number" data-line-number="9424"></td>
<td id="LC9424" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9425" class="blob-num js-line-number" data-line-number="9425"></td>
<td id="LC9425" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_preserveHeaders) {</td>
</tr>
<tr>
<td id="L9426" class="blob-num js-line-number" data-line-number="9426"></td>
<td id="LC9426" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span> <span class="pl-k">=</span> _imgInfo <span class="pl-k">&&</span> <span class="pl-smi">_imgInfo</span>.<span class="pl-smi">meta</span> <span class="pl-k">||</span> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span> <span class="pl-k">||</span> {};</td>
</tr>
<tr>
<td id="L9427" class="blob-num js-line-number" data-line-number="9427"></td>
<td id="LC9427" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9428" class="blob-num js-line-number" data-line-number="9428"></td>
<td id="LC9428" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if data was taken from ImageInfo it will be a binary string, so we convert it to blob</span></td>
</tr>
<tr>
<td id="L9429" class="blob-num js-line-number" data-line-number="9429"></td>
<td id="LC9429" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">info</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span> <span class="pl-k">&&</span> <span class="pl-k">!</span>(<span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>)) {</td>
</tr>
<tr>
<td id="L9430" class="blob-num js-line-number" data-line-number="9430"></td>
<td id="LC9430" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-c1">null</span>, {</td>
</tr>
<tr>
<td id="L9431" class="blob-num js-line-number" data-line-number="9431"></td>
<td id="LC9431" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9432" class="blob-num js-line-number" data-line-number="9432"></td>
<td id="LC9432" class="blob-code blob-code-inner js-file-line"> data<span class="pl-k">:</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span></td>
</tr>
<tr>
<td id="L9433" class="blob-num js-line-number" data-line-number="9433"></td>
<td id="LC9433" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9434" class="blob-num js-line-number" data-line-number="9434"></td>
<td id="LC9434" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9435" class="blob-num js-line-number" data-line-number="9435"></td>
<td id="LC9435" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9436" class="blob-num js-line-number" data-line-number="9436"></td>
<td id="LC9436" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9437" class="blob-num js-line-number" data-line-number="9437"></td>
<td id="LC9437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> info;</td>
</tr>
<tr>
<td id="L9438" class="blob-num js-line-number" data-line-number="9438"></td>
<td id="LC9438" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9439" class="blob-num js-line-number" data-line-number="9439"></td>
<td id="LC9439" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9440" class="blob-num js-line-number" data-line-number="9440"></td>
<td id="LC9440" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9441" class="blob-num js-line-number" data-line-number="9441"></td>
<td id="LC9441" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">resize</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">rect</span>, <span class="pl-smi">ratio</span>, <span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L9442" class="blob-num js-line-number" data-line-number="9442"></td>
<td id="LC9442" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> canvas <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9443" class="blob-num js-line-number" data-line-number="9443"></td>
<td id="LC9443" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-smi">rect</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L9444" class="blob-num js-line-number" data-line-number="9444"></td>
<td id="LC9444" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-smi">rect</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L9445" class="blob-num js-line-number" data-line-number="9445"></td>
<td id="LC9445" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9446" class="blob-num js-line-number" data-line-number="9446"></td>
<td id="LC9446" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">"</span>2d<span class="pl-pds">"</span></span>).<span class="pl-en">drawImage</span>(<span class="pl-en">_getImg</span>(), <span class="pl-smi">rect</span>.<span class="pl-c1">x</span>, <span class="pl-smi">rect</span>.<span class="pl-c1">y</span>, <span class="pl-smi">rect</span>.<span class="pl-c1">width</span>, <span class="pl-smi">rect</span>.<span class="pl-c1">height</span>, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, <span class="pl-smi">canvas</span>.<span class="pl-c1">width</span>, <span class="pl-smi">canvas</span>.<span class="pl-c1">height</span>);</td>
</tr>
<tr>
<td id="L9447" class="blob-num js-line-number" data-line-number="9447"></td>
<td id="LC9447" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9448" class="blob-num js-line-number" data-line-number="9448"></td>
<td id="LC9448" class="blob-code blob-code-inner js-file-line"> _canvas <span class="pl-k">=</span> <span class="pl-smi">ResizerCanvas</span>.<span class="pl-en">scale</span>(canvas, ratio);</td>
</tr>
<tr>
<td id="L9449" class="blob-num js-line-number" data-line-number="9449"></td>
<td id="LC9449" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9450" class="blob-num js-line-number" data-line-number="9450"></td>
<td id="LC9450" class="blob-code blob-code-inner js-file-line"> _preserveHeaders <span class="pl-k">=</span> <span class="pl-smi">options</span>.<span class="pl-smi">preserveHeaders</span>;</td>
</tr>
<tr>
<td id="L9451" class="blob-num js-line-number" data-line-number="9451"></td>
<td id="LC9451" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9452" class="blob-num js-line-number" data-line-number="9452"></td>
<td id="LC9452" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> rotate if required, according to orientation tag</span></td>
</tr>
<tr>
<td id="L9453" class="blob-num js-line-number" data-line-number="9453"></td>
<td id="LC9453" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_preserveHeaders) {</td>
</tr>
<tr>
<td id="L9454" class="blob-num js-line-number" data-line-number="9454"></td>
<td id="LC9454" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> orientation <span class="pl-k">=</span> (<span class="pl-c1">this</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">tiff</span> <span class="pl-k">&&</span> <span class="pl-c1">this</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">tiff</span>.<span class="pl-smi">Orientation</span>) <span class="pl-k">||</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L9455" class="blob-num js-line-number" data-line-number="9455"></td>
<td id="LC9455" class="blob-code blob-code-inner js-file-line"> _canvas <span class="pl-k">=</span> <span class="pl-en">_rotateToOrientaion</span>(_canvas, orientation);</td>
</tr>
<tr>
<td id="L9456" class="blob-num js-line-number" data-line-number="9456"></td>
<td id="LC9456" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9457" class="blob-num js-line-number" data-line-number="9457"></td>
<td id="LC9457" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9458" class="blob-num js-line-number" data-line-number="9458"></td>
<td id="LC9458" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L9459" class="blob-num js-line-number" data-line-number="9459"></td>
<td id="LC9459" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L9460" class="blob-num js-line-number" data-line-number="9460"></td>
<td id="LC9460" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9461" class="blob-num js-line-number" data-line-number="9461"></td>
<td id="LC9461" class="blob-code blob-code-inner js-file-line"> _modified <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L9462" class="blob-num js-line-number" data-line-number="9462"></td>
<td id="LC9462" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9463" class="blob-num js-line-number" data-line-number="9463"></td>
<td id="LC9463" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>Resize<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9464" class="blob-num js-line-number" data-line-number="9464"></td>
<td id="LC9464" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9465" class="blob-num js-line-number" data-line-number="9465"></td>
<td id="LC9465" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9466" class="blob-num js-line-number" data-line-number="9466"></td>
<td id="LC9466" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsCanvas</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9467" class="blob-num js-line-number" data-line-number="9467"></td>
<td id="LC9467" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_canvas) {</td>
</tr>
<tr>
<td id="L9468" class="blob-num js-line-number" data-line-number="9468"></td>
<td id="LC9468" class="blob-code blob-code-inner js-file-line"> _canvas <span class="pl-k">=</span> <span class="pl-en">_getCanvas</span>();</td>
</tr>
<tr>
<td id="L9469" class="blob-num js-line-number" data-line-number="9469"></td>
<td id="LC9469" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9470" class="blob-num js-line-number" data-line-number="9470"></td>
<td id="LC9470" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_canvas</span>.<span class="pl-c1">id</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_canvas<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9471" class="blob-num js-line-number" data-line-number="9471"></td>
<td id="LC9471" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _canvas;</td>
</tr>
<tr>
<td id="L9472" class="blob-num js-line-number" data-line-number="9472"></td>
<td id="LC9472" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9473" class="blob-num js-line-number" data-line-number="9473"></td>
<td id="LC9473" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9474" class="blob-num js-line-number" data-line-number="9474"></td>
<td id="LC9474" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L9475" class="blob-num js-line-number" data-line-number="9475"></td>
<td id="LC9475" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (type <span class="pl-k">!==</span> <span class="pl-c1">this</span>.<span class="pl-c1">type</span>) {</td>
</tr>
<tr>
<td id="L9476" class="blob-num js-line-number" data-line-number="9476"></td>
<td id="LC9476" class="blob-code blob-code-inner js-file-line"> _modified <span class="pl-k">=</span> <span class="pl-c1">true</span>; <span class="pl-c"><span class="pl-c">//</span> reconsider the state</span></td>
</tr>
<tr>
<td id="L9477" class="blob-num js-line-number" data-line-number="9477"></td>
<td id="LC9477" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">null</span>, {</td>
</tr>
<tr>
<td id="L9478" class="blob-num js-line-number" data-line-number="9478"></td>
<td id="LC9478" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">name</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9479" class="blob-num js-line-number" data-line-number="9479"></td>
<td id="LC9479" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> type,</td>
</tr>
<tr>
<td id="L9480" class="blob-num js-line-number" data-line-number="9480"></td>
<td id="LC9480" class="blob-code blob-code-inner js-file-line"> data<span class="pl-k">:</span> <span class="pl-smi">me</span>.<span class="pl-en">getAsDataURL</span>(type, quality)</td>
</tr>
<tr>
<td id="L9481" class="blob-num js-line-number" data-line-number="9481"></td>
<td id="LC9481" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9482" class="blob-num js-line-number" data-line-number="9482"></td>
<td id="LC9482" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9483" class="blob-num js-line-number" data-line-number="9483"></td>
<td id="LC9483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">null</span>, {</td>
</tr>
<tr>
<td id="L9484" class="blob-num js-line-number" data-line-number="9484"></td>
<td id="LC9484" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-smi">_blob</span>.<span class="pl-c1">name</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9485" class="blob-num js-line-number" data-line-number="9485"></td>
<td id="LC9485" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> type,</td>
</tr>
<tr>
<td id="L9486" class="blob-num js-line-number" data-line-number="9486"></td>
<td id="LC9486" class="blob-code blob-code-inner js-file-line"> data<span class="pl-k">:</span> <span class="pl-smi">me</span>.<span class="pl-en">getAsBinaryString</span>(type, quality)</td>
</tr>
<tr>
<td id="L9487" class="blob-num js-line-number" data-line-number="9487"></td>
<td id="LC9487" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9488" class="blob-num js-line-number" data-line-number="9488"></td>
<td id="LC9488" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9489" class="blob-num js-line-number" data-line-number="9489"></td>
<td id="LC9489" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9490" class="blob-num js-line-number" data-line-number="9490"></td>
<td id="LC9490" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsDataURL</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L9491" class="blob-num js-line-number" data-line-number="9491"></td>
<td id="LC9491" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> quality <span class="pl-k">=</span> <span class="pl-c1">arguments</span>[<span class="pl-c1">1</span>] <span class="pl-k">||</span> <span class="pl-c1">90</span>;</td>
</tr>
<tr>
<td id="L9492" class="blob-num js-line-number" data-line-number="9492"></td>
<td id="LC9492" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9493" class="blob-num js-line-number" data-line-number="9493"></td>
<td id="LC9493" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if image has not been modified, return the source right away</span></td>
</tr>
<tr>
<td id="L9494" class="blob-num js-line-number" data-line-number="9494"></td>
<td id="LC9494" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_modified) {</td>
</tr>
<tr>
<td id="L9495" class="blob-num js-line-number" data-line-number="9495"></td>
<td id="LC9495" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_img</span>.<span class="pl-smi">src</span>;</td>
</tr>
<tr>
<td id="L9496" class="blob-num js-line-number" data-line-number="9496"></td>
<td id="LC9496" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9497" class="blob-num js-line-number" data-line-number="9497"></td>
<td id="LC9497" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9498" class="blob-num js-line-number" data-line-number="9498"></td>
<td id="LC9498" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make sure we have a canvas to work with</span></td>
</tr>
<tr>
<td id="L9499" class="blob-num js-line-number" data-line-number="9499"></td>
<td id="LC9499" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_getCanvas</span>();</td>
</tr>
<tr>
<td id="L9500" class="blob-num js-line-number" data-line-number="9500"></td>
<td id="LC9500" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9501" class="blob-num js-line-number" data-line-number="9501"></td>
<td id="LC9501" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span> <span class="pl-k">!==</span> type) {</td>
</tr>
<tr>
<td id="L9502" class="blob-num js-line-number" data-line-number="9502"></td>
<td id="LC9502" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">toDataURL</span>(<span class="pl-s"><span class="pl-pds">'</span>image/png<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9503" class="blob-num js-line-number" data-line-number="9503"></td>
<td id="LC9503" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9504" class="blob-num js-line-number" data-line-number="9504"></td>
<td id="LC9504" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L9505" class="blob-num js-line-number" data-line-number="9505"></td>
<td id="LC9505" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> older Geckos used to result in an exception on quality argument</span></td>
</tr>
<tr>
<td id="L9506" class="blob-num js-line-number" data-line-number="9506"></td>
<td id="LC9506" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">toDataURL</span>(<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>, quality<span class="pl-k">/</span><span class="pl-c1">100</span>);</td>
</tr>
<tr>
<td id="L9507" class="blob-num js-line-number" data-line-number="9507"></td>
<td id="LC9507" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L9508" class="blob-num js-line-number" data-line-number="9508"></td>
<td id="LC9508" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">toDataURL</span>(<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9509" class="blob-num js-line-number" data-line-number="9509"></td>
<td id="LC9509" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9510" class="blob-num js-line-number" data-line-number="9510"></td>
<td id="LC9510" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9511" class="blob-num js-line-number" data-line-number="9511"></td>
<td id="LC9511" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9512" class="blob-num js-line-number" data-line-number="9512"></td>
<td id="LC9512" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9513" class="blob-num js-line-number" data-line-number="9513"></td>
<td id="LC9513" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsBinaryString</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L9514" class="blob-num js-line-number" data-line-number="9514"></td>
<td id="LC9514" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if image has not been modified, return the source right away</span></td>
</tr>
<tr>
<td id="L9515" class="blob-num js-line-number" data-line-number="9515"></td>
<td id="LC9515" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_modified) {</td>
</tr>
<tr>
<td id="L9516" class="blob-num js-line-number" data-line-number="9516"></td>
<td id="LC9516" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if image was not loaded from binary string</span></td>
</tr>
<tr>
<td id="L9517" class="blob-num js-line-number" data-line-number="9517"></td>
<td id="LC9517" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_binStr) {</td>
</tr>
<tr>
<td id="L9518" class="blob-num js-line-number" data-line-number="9518"></td>
<td id="LC9518" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-en">_toBinary</span>(<span class="pl-smi">me</span>.<span class="pl-en">getAsDataURL</span>(type, quality));</td>
</tr>
<tr>
<td id="L9519" class="blob-num js-line-number" data-line-number="9519"></td>
<td id="LC9519" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9520" class="blob-num js-line-number" data-line-number="9520"></td>
<td id="LC9520" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _binStr;</td>
</tr>
<tr>
<td id="L9521" class="blob-num js-line-number" data-line-number="9521"></td>
<td id="LC9521" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9522" class="blob-num js-line-number" data-line-number="9522"></td>
<td id="LC9522" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9523" class="blob-num js-line-number" data-line-number="9523"></td>
<td id="LC9523" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span> <span class="pl-k">!==</span> type) {</td>
</tr>
<tr>
<td id="L9524" class="blob-num js-line-number" data-line-number="9524"></td>
<td id="LC9524" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-en">_toBinary</span>(<span class="pl-smi">me</span>.<span class="pl-en">getAsDataURL</span>(type, quality));</td>
</tr>
<tr>
<td id="L9525" class="blob-num js-line-number" data-line-number="9525"></td>
<td id="LC9525" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9526" class="blob-num js-line-number" data-line-number="9526"></td>
<td id="LC9526" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> dataUrl;</td>
</tr>
<tr>
<td id="L9527" class="blob-num js-line-number" data-line-number="9527"></td>
<td id="LC9527" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9528" class="blob-num js-line-number" data-line-number="9528"></td>
<td id="LC9528" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if jpeg</span></td>
</tr>
<tr>
<td id="L9529" class="blob-num js-line-number" data-line-number="9529"></td>
<td id="LC9529" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>quality) {</td>
</tr>
<tr>
<td id="L9530" class="blob-num js-line-number" data-line-number="9530"></td>
<td id="LC9530" class="blob-code blob-code-inner js-file-line"> quality <span class="pl-k">=</span> <span class="pl-c1">90</span>;</td>
</tr>
<tr>
<td id="L9531" class="blob-num js-line-number" data-line-number="9531"></td>
<td id="LC9531" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9532" class="blob-num js-line-number" data-line-number="9532"></td>
<td id="LC9532" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9533" class="blob-num js-line-number" data-line-number="9533"></td>
<td id="LC9533" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make sure we have a canvas to work with</span></td>
</tr>
<tr>
<td id="L9534" class="blob-num js-line-number" data-line-number="9534"></td>
<td id="LC9534" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">_getCanvas</span>();</td>
</tr>
<tr>
<td id="L9535" class="blob-num js-line-number" data-line-number="9535"></td>
<td id="LC9535" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9536" class="blob-num js-line-number" data-line-number="9536"></td>
<td id="LC9536" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L9537" class="blob-num js-line-number" data-line-number="9537"></td>
<td id="LC9537" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> older Geckos used to result in an exception on quality argument</span></td>
</tr>
<tr>
<td id="L9538" class="blob-num js-line-number" data-line-number="9538"></td>
<td id="LC9538" class="blob-code blob-code-inner js-file-line"> dataUrl <span class="pl-k">=</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">toDataURL</span>(<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>, quality<span class="pl-k">/</span><span class="pl-c1">100</span>);</td>
</tr>
<tr>
<td id="L9539" class="blob-num js-line-number" data-line-number="9539"></td>
<td id="LC9539" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L9540" class="blob-num js-line-number" data-line-number="9540"></td>
<td id="LC9540" class="blob-code blob-code-inner js-file-line"> dataUrl <span class="pl-k">=</span> <span class="pl-smi">_canvas</span>.<span class="pl-c1">toDataURL</span>(<span class="pl-s"><span class="pl-pds">'</span>image/jpeg<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9541" class="blob-num js-line-number" data-line-number="9541"></td>
<td id="LC9541" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9542" class="blob-num js-line-number" data-line-number="9542"></td>
<td id="LC9542" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9543" class="blob-num js-line-number" data-line-number="9543"></td>
<td id="LC9543" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-en">_toBinary</span>(dataUrl);</td>
</tr>
<tr>
<td id="L9544" class="blob-num js-line-number" data-line-number="9544"></td>
<td id="LC9544" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9545" class="blob-num js-line-number" data-line-number="9545"></td>
<td id="LC9545" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_imgInfo) {</td>
</tr>
<tr>
<td id="L9546" class="blob-num js-line-number" data-line-number="9546"></td>
<td id="LC9546" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-smi">_imgInfo</span>.<span class="pl-en">stripHeaders</span>(_binStr);</td>
</tr>
<tr>
<td id="L9547" class="blob-num js-line-number" data-line-number="9547"></td>
<td id="LC9547" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9548" class="blob-num js-line-number" data-line-number="9548"></td>
<td id="LC9548" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_preserveHeaders) {</td>
</tr>
<tr>
<td id="L9549" class="blob-num js-line-number" data-line-number="9549"></td>
<td id="LC9549" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> update dimensions info in exif</span></td>
</tr>
<tr>
<td id="L9550" class="blob-num js-line-number" data-line-number="9550"></td>
<td id="LC9550" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_imgInfo</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-smi">_imgInfo</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">exif</span>) {</td>
</tr>
<tr>
<td id="L9551" class="blob-num js-line-number" data-line-number="9551"></td>
<td id="LC9551" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_imgInfo</span>.<span class="pl-en">setExif</span>({</td>
</tr>
<tr>
<td id="L9552" class="blob-num js-line-number" data-line-number="9552"></td>
<td id="LC9552" class="blob-code blob-code-inner js-file-line"> PixelXDimension<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">width</span>,</td>
</tr>
<tr>
<td id="L9553" class="blob-num js-line-number" data-line-number="9553"></td>
<td id="LC9553" class="blob-code blob-code-inner js-file-line"> PixelYDimension<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">height</span></td>
</tr>
<tr>
<td id="L9554" class="blob-num js-line-number" data-line-number="9554"></td>
<td id="LC9554" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9555" class="blob-num js-line-number" data-line-number="9555"></td>
<td id="LC9555" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9556" class="blob-num js-line-number" data-line-number="9556"></td>
<td id="LC9556" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9557" class="blob-num js-line-number" data-line-number="9557"></td>
<td id="LC9557" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> re-inject the headers</span></td>
</tr>
<tr>
<td id="L9558" class="blob-num js-line-number" data-line-number="9558"></td>
<td id="LC9558" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> <span class="pl-smi">_imgInfo</span>.<span class="pl-en">writeHeaders</span>(_binStr);</td>
</tr>
<tr>
<td id="L9559" class="blob-num js-line-number" data-line-number="9559"></td>
<td id="LC9559" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9560" class="blob-num js-line-number" data-line-number="9560"></td>
<td id="LC9560" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9561" class="blob-num js-line-number" data-line-number="9561"></td>
<td id="LC9561" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> will be re-created from fresh on next getInfo call</span></td>
</tr>
<tr>
<td id="L9562" class="blob-num js-line-number" data-line-number="9562"></td>
<td id="LC9562" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_imgInfo</span>.<span class="pl-en">purge</span>();</td>
</tr>
<tr>
<td id="L9563" class="blob-num js-line-number" data-line-number="9563"></td>
<td id="LC9563" class="blob-code blob-code-inner js-file-line"> _imgInfo <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9564" class="blob-num js-line-number" data-line-number="9564"></td>
<td id="LC9564" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9565" class="blob-num js-line-number" data-line-number="9565"></td>
<td id="LC9565" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9566" class="blob-num js-line-number" data-line-number="9566"></td>
<td id="LC9566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9567" class="blob-num js-line-number" data-line-number="9567"></td>
<td id="LC9567" class="blob-code blob-code-inner js-file-line"> _modified <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L9568" class="blob-num js-line-number" data-line-number="9568"></td>
<td id="LC9568" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9569" class="blob-num js-line-number" data-line-number="9569"></td>
<td id="LC9569" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _binStr;</td>
</tr>
<tr>
<td id="L9570" class="blob-num js-line-number" data-line-number="9570"></td>
<td id="LC9570" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9571" class="blob-num js-line-number" data-line-number="9571"></td>
<td id="LC9571" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9572" class="blob-num js-line-number" data-line-number="9572"></td>
<td id="LC9572" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9573" class="blob-num js-line-number" data-line-number="9573"></td>
<td id="LC9573" class="blob-code blob-code-inner js-file-line"> me <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9574" class="blob-num js-line-number" data-line-number="9574"></td>
<td id="LC9574" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_purge</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L9575" class="blob-num js-line-number" data-line-number="9575"></td>
<td id="LC9575" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShim</span>().<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L9576" class="blob-num js-line-number" data-line-number="9576"></td>
<td id="LC9576" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9577" class="blob-num js-line-number" data-line-number="9577"></td>
<td id="LC9577" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9578" class="blob-num js-line-number" data-line-number="9578"></td>
<td id="LC9578" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9579" class="blob-num js-line-number" data-line-number="9579"></td>
<td id="LC9579" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9580" class="blob-num js-line-number" data-line-number="9580"></td>
<td id="LC9580" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getImg</span>() {</td>
</tr>
<tr>
<td id="L9581" class="blob-num js-line-number" data-line-number="9581"></td>
<td id="LC9581" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_canvas <span class="pl-k">&&</span> <span class="pl-k">!</span>_img) {</td>
</tr>
<tr>
<td id="L9582" class="blob-num js-line-number" data-line-number="9582"></td>
<td id="LC9582" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.ImageError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">INVALID_STATE_ERR</span>);</td>
</tr>
<tr>
<td id="L9583" class="blob-num js-line-number" data-line-number="9583"></td>
<td id="LC9583" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9584" class="blob-num js-line-number" data-line-number="9584"></td>
<td id="LC9584" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _canvas <span class="pl-k">||</span> _img;</td>
</tr>
<tr>
<td id="L9585" class="blob-num js-line-number" data-line-number="9585"></td>
<td id="LC9585" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9586" class="blob-num js-line-number" data-line-number="9586"></td>
<td id="LC9586" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9587" class="blob-num js-line-number" data-line-number="9587"></td>
<td id="LC9587" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9588" class="blob-num js-line-number" data-line-number="9588"></td>
<td id="LC9588" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_getCanvas</span>() {</td>
</tr>
<tr>
<td id="L9589" class="blob-num js-line-number" data-line-number="9589"></td>
<td id="LC9589" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> canvas <span class="pl-k">=</span> <span class="pl-en">_getImg</span>();</td>
</tr>
<tr>
<td id="L9590" class="blob-num js-line-number" data-line-number="9590"></td>
<td id="LC9590" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">canvas</span>.<span class="pl-c1">nodeName</span>.<span class="pl-c1">toLowerCase</span>() <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L9591" class="blob-num js-line-number" data-line-number="9591"></td>
<td id="LC9591" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> canvas;</td>
</tr>
<tr>
<td id="L9592" class="blob-num js-line-number" data-line-number="9592"></td>
<td id="LC9592" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9593" class="blob-num js-line-number" data-line-number="9593"></td>
<td id="LC9593" class="blob-code blob-code-inner js-file-line"> _canvas <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9594" class="blob-num js-line-number" data-line-number="9594"></td>
<td id="LC9594" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_canvas</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-smi">canvas</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L9595" class="blob-num js-line-number" data-line-number="9595"></td>
<td id="LC9595" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_canvas</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-smi">canvas</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L9596" class="blob-num js-line-number" data-line-number="9596"></td>
<td id="LC9596" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_canvas</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">"</span>2d<span class="pl-pds">"</span></span>).<span class="pl-en">drawImage</span>(canvas, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L9597" class="blob-num js-line-number" data-line-number="9597"></td>
<td id="LC9597" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _canvas;</td>
</tr>
<tr>
<td id="L9598" class="blob-num js-line-number" data-line-number="9598"></td>
<td id="LC9598" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9599" class="blob-num js-line-number" data-line-number="9599"></td>
<td id="LC9599" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9600" class="blob-num js-line-number" data-line-number="9600"></td>
<td id="LC9600" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9601" class="blob-num js-line-number" data-line-number="9601"></td>
<td id="LC9601" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_toBinary</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L9602" class="blob-num js-line-number" data-line-number="9602"></td>
<td id="LC9602" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(<span class="pl-smi">str</span>.<span class="pl-c1">substring</span>(<span class="pl-smi">str</span>.<span class="pl-c1">indexOf</span>(<span class="pl-s"><span class="pl-pds">'</span>base64,<span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-c1">7</span>));</td>
</tr>
<tr>
<td id="L9603" class="blob-num js-line-number" data-line-number="9603"></td>
<td id="LC9603" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9604" class="blob-num js-line-number" data-line-number="9604"></td>
<td id="LC9604" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9605" class="blob-num js-line-number" data-line-number="9605"></td>
<td id="LC9605" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9606" class="blob-num js-line-number" data-line-number="9606"></td>
<td id="LC9606" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_toDataUrl</span>(<span class="pl-smi">str</span>, <span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L9607" class="blob-num js-line-number" data-line-number="9607"></td>
<td id="LC9607" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> (type <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">btoa</span>(str);</td>
</tr>
<tr>
<td id="L9608" class="blob-num js-line-number" data-line-number="9608"></td>
<td id="LC9608" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9609" class="blob-num js-line-number" data-line-number="9609"></td>
<td id="LC9609" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9610" class="blob-num js-line-number" data-line-number="9610"></td>
<td id="LC9610" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9611" class="blob-num js-line-number" data-line-number="9611"></td>
<td id="LC9611" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_preload</span>(<span class="pl-smi">str</span>) {</td>
</tr>
<tr>
<td id="L9612" class="blob-num js-line-number" data-line-number="9612"></td>
<td id="LC9612" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L9613" class="blob-num js-line-number" data-line-number="9613"></td>
<td id="LC9613" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9614" class="blob-num js-line-number" data-line-number="9614"></td>
<td id="LC9614" class="blob-code blob-code-inner js-file-line"> _img <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Image</span>();</td>
</tr>
<tr>
<td id="L9615" class="blob-num js-line-number" data-line-number="9615"></td>
<td id="LC9615" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_img</span>.<span class="pl-en">onerror</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9616" class="blob-num js-line-number" data-line-number="9616"></td>
<td id="LC9616" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_purge</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L9617" class="blob-num js-line-number" data-line-number="9617"></td>
<td id="LC9617" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L9618" class="blob-num js-line-number" data-line-number="9618"></td>
<td id="LC9618" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9619" class="blob-num js-line-number" data-line-number="9619"></td>
<td id="LC9619" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_img</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9620" class="blob-num js-line-number" data-line-number="9620"></td>
<td id="LC9620" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9621" class="blob-num js-line-number" data-line-number="9621"></td>
<td id="LC9621" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9622" class="blob-num js-line-number" data-line-number="9622"></td>
<td id="LC9622" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9623" class="blob-num js-line-number" data-line-number="9623"></td>
<td id="LC9623" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_img</span>.<span class="pl-smi">src</span> <span class="pl-k">=</span> <span class="pl-smi">str</span>.<span class="pl-c1">substr</span>(<span class="pl-c1">0</span>, <span class="pl-c1">5</span>) <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">?</span> str <span class="pl-k">:</span> <span class="pl-en">_toDataUrl</span>(str, <span class="pl-smi">_blob</span>.<span class="pl-c1">type</span>);</td>
</tr>
<tr>
<td id="L9624" class="blob-num js-line-number" data-line-number="9624"></td>
<td id="LC9624" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9625" class="blob-num js-line-number" data-line-number="9625"></td>
<td id="LC9625" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9626" class="blob-num js-line-number" data-line-number="9626"></td>
<td id="LC9626" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9627" class="blob-num js-line-number" data-line-number="9627"></td>
<td id="LC9627" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_readAsDataUrl</span>(<span class="pl-smi">file</span>, <span class="pl-smi">callback</span>) {</td>
</tr>
<tr>
<td id="L9628" class="blob-num js-line-number" data-line-number="9628"></td>
<td id="LC9628" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, fr;</td>
</tr>
<tr>
<td id="L9629" class="blob-num js-line-number" data-line-number="9629"></td>
<td id="LC9629" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9630" class="blob-num js-line-number" data-line-number="9630"></td>
<td id="LC9630" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> use FileReader if it's available</span></td>
</tr>
<tr>
<td id="L9631" class="blob-num js-line-number" data-line-number="9631"></td>
<td id="LC9631" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">window</span>.<span class="pl-smi">FileReader</span>) {</td>
</tr>
<tr>
<td id="L9632" class="blob-num js-line-number" data-line-number="9632"></td>
<td id="LC9632" class="blob-code blob-code-inner js-file-line"> fr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">FileReader</span>();</td>
</tr>
<tr>
<td id="L9633" class="blob-num js-line-number" data-line-number="9633"></td>
<td id="LC9633" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fr</span>.<span class="pl-en">onload</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9634" class="blob-num js-line-number" data-line-number="9634"></td>
<td id="LC9634" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">callback</span>.<span class="pl-c1">call</span>(comp, <span class="pl-c1">this</span>.<span class="pl-smi">result</span>);</td>
</tr>
<tr>
<td id="L9635" class="blob-num js-line-number" data-line-number="9635"></td>
<td id="LC9635" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9636" class="blob-num js-line-number" data-line-number="9636"></td>
<td id="LC9636" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fr</span>.<span class="pl-en">onerror</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9637" class="blob-num js-line-number" data-line-number="9637"></td>
<td id="LC9637" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>, <span class="pl-smi">x</span>.<span class="pl-smi">ImageError</span>.<span class="pl-c1">WRONG_FORMAT</span>);</td>
</tr>
<tr>
<td id="L9638" class="blob-num js-line-number" data-line-number="9638"></td>
<td id="LC9638" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L9639" class="blob-num js-line-number" data-line-number="9639"></td>
<td id="LC9639" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">fr</span>.<span class="pl-en">readAsDataURL</span>(file);</td>
</tr>
<tr>
<td id="L9640" class="blob-num js-line-number" data-line-number="9640"></td>
<td id="LC9640" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9641" class="blob-num js-line-number" data-line-number="9641"></td>
<td id="LC9641" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">callback</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-smi">file</span>.<span class="pl-en">getAsDataURL</span>());</td>
</tr>
<tr>
<td id="L9642" class="blob-num js-line-number" data-line-number="9642"></td>
<td id="LC9642" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9643" class="blob-num js-line-number" data-line-number="9643"></td>
<td id="LC9643" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9644" class="blob-num js-line-number" data-line-number="9644"></td>
<td id="LC9644" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9645" class="blob-num js-line-number" data-line-number="9645"></td>
<td id="LC9645" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9646" class="blob-num js-line-number" data-line-number="9646"></td>
<td id="LC9646" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Transform canvas coordination according to specified frame size and orientation</span></td>
</tr>
<tr>
<td id="L9647" class="blob-num js-line-number" data-line-number="9647"></td>
<td id="LC9647" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Orientation value is from EXIF tag</span></td>
</tr>
<tr>
<td id="L9648" class="blob-num js-line-number" data-line-number="9648"></td>
<td id="LC9648" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * <span class="pl-k">@author</span> <span class="pl-en">Shinichi Tomita </span><<span class="pl-c1">[email protected]</span>></span></td>
</tr>
<tr>
<td id="L9649" class="blob-num js-line-number" data-line-number="9649"></td>
<td id="LC9649" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9650" class="blob-num js-line-number" data-line-number="9650"></td>
<td id="LC9650" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_rotateToOrientaion</span>(<span class="pl-smi">img</span>, <span class="pl-smi">orientation</span>) {</td>
</tr>
<tr>
<td id="L9651" class="blob-num js-line-number" data-line-number="9651"></td>
<td id="LC9651" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">RADIANS</span> <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">PI</span><span class="pl-k">/</span><span class="pl-c1">180</span>;</td>
</tr>
<tr>
<td id="L9652" class="blob-num js-line-number" data-line-number="9652"></td>
<td id="LC9652" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> canvas <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9653" class="blob-num js-line-number" data-line-number="9653"></td>
<td id="LC9653" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> ctx <span class="pl-k">=</span> <span class="pl-smi">canvas</span>.<span class="pl-c1">getContext</span>(<span class="pl-s"><span class="pl-pds">'</span>2d<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9654" class="blob-num js-line-number" data-line-number="9654"></td>
<td id="LC9654" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> width <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-c1">width</span>;</td>
</tr>
<tr>
<td id="L9655" class="blob-num js-line-number" data-line-number="9655"></td>
<td id="LC9655" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> height <span class="pl-k">=</span> <span class="pl-smi">img</span>.<span class="pl-c1">height</span>;</td>
</tr>
<tr>
<td id="L9656" class="blob-num js-line-number" data-line-number="9656"></td>
<td id="LC9656" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9657" class="blob-num js-line-number" data-line-number="9657"></td>
<td id="LC9657" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(orientation, [<span class="pl-c1">5</span>,<span class="pl-c1">6</span>,<span class="pl-c1">7</span>,<span class="pl-c1">8</span>]) <span class="pl-k">></span> <span class="pl-k">-</span><span class="pl-c1">1</span>) {</td>
</tr>
<tr>
<td id="L9658" class="blob-num js-line-number" data-line-number="9658"></td>
<td id="LC9658" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> height;</td>
</tr>
<tr>
<td id="L9659" class="blob-num js-line-number" data-line-number="9659"></td>
<td id="LC9659" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> width;</td>
</tr>
<tr>
<td id="L9660" class="blob-num js-line-number" data-line-number="9660"></td>
<td id="LC9660" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9661" class="blob-num js-line-number" data-line-number="9661"></td>
<td id="LC9661" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> width;</td>
</tr>
<tr>
<td id="L9662" class="blob-num js-line-number" data-line-number="9662"></td>
<td id="LC9662" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">canvas</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> height;</td>
</tr>
<tr>
<td id="L9663" class="blob-num js-line-number" data-line-number="9663"></td>
<td id="LC9663" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9664" class="blob-num js-line-number" data-line-number="9664"></td>
<td id="LC9664" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9665" class="blob-num js-line-number" data-line-number="9665"></td>
<td id="LC9665" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9666" class="blob-num js-line-number" data-line-number="9666"></td>
<td id="LC9666" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 1 = The 0th row is at the visual top of the image, and the 0th column is the visual left-hand side.</span></td>
</tr>
<tr>
<td id="L9667" class="blob-num js-line-number" data-line-number="9667"></td>
<td id="LC9667" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 2 = The 0th row is at the visual top of the image, and the 0th column is the visual right-hand side.</span></td>
</tr>
<tr>
<td id="L9668" class="blob-num js-line-number" data-line-number="9668"></td>
<td id="LC9668" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 3 = The 0th row is at the visual bottom of the image, and the 0th column is the visual right-hand side.</span></td>
</tr>
<tr>
<td id="L9669" class="blob-num js-line-number" data-line-number="9669"></td>
<td id="LC9669" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 4 = The 0th row is at the visual bottom of the image, and the 0th column is the visual left-hand side.</span></td>
</tr>
<tr>
<td id="L9670" class="blob-num js-line-number" data-line-number="9670"></td>
<td id="LC9670" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 5 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual top.</span></td>
</tr>
<tr>
<td id="L9671" class="blob-num js-line-number" data-line-number="9671"></td>
<td id="LC9671" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 6 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual top.</span></td>
</tr>
<tr>
<td id="L9672" class="blob-num js-line-number" data-line-number="9672"></td>
<td id="LC9672" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 7 = The 0th row is the visual right-hand side of the image, and the 0th column is the visual bottom.</span></td>
</tr>
<tr>
<td id="L9673" class="blob-num js-line-number" data-line-number="9673"></td>
<td id="LC9673" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> 8 = The 0th row is the visual left-hand side of the image, and the 0th column is the visual bottom.</span></td>
</tr>
<tr>
<td id="L9674" class="blob-num js-line-number" data-line-number="9674"></td>
<td id="LC9674" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9675" class="blob-num js-line-number" data-line-number="9675"></td>
<td id="LC9675" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (orientation) {</td>
</tr>
<tr>
<td id="L9676" class="blob-num js-line-number" data-line-number="9676"></td>
<td id="LC9676" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">2</span>:</td>
</tr>
<tr>
<td id="L9677" class="blob-num js-line-number" data-line-number="9677"></td>
<td id="LC9677" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> horizontal flip</span></td>
</tr>
<tr>
<td id="L9678" class="blob-num js-line-number" data-line-number="9678"></td>
<td id="LC9678" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">translate</span>(width, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L9679" class="blob-num js-line-number" data-line-number="9679"></td>
<td id="LC9679" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">scale</span>(<span class="pl-k">-</span><span class="pl-c1">1</span>, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L9680" class="blob-num js-line-number" data-line-number="9680"></td>
<td id="LC9680" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9681" class="blob-num js-line-number" data-line-number="9681"></td>
<td id="LC9681" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">3</span>:</td>
</tr>
<tr>
<td id="L9682" class="blob-num js-line-number" data-line-number="9682"></td>
<td id="LC9682" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 180 rotate left</span></td>
</tr>
<tr>
<td id="L9683" class="blob-num js-line-number" data-line-number="9683"></td>
<td id="LC9683" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">translate</span>(width, height);</td>
</tr>
<tr>
<td id="L9684" class="blob-num js-line-number" data-line-number="9684"></td>
<td id="LC9684" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">rotate</span>(<span class="pl-c1">180</span> <span class="pl-k">*</span> <span class="pl-c1">RADIANS</span>);</td>
</tr>
<tr>
<td id="L9685" class="blob-num js-line-number" data-line-number="9685"></td>
<td id="LC9685" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9686" class="blob-num js-line-number" data-line-number="9686"></td>
<td id="LC9686" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">4</span>:</td>
</tr>
<tr>
<td id="L9687" class="blob-num js-line-number" data-line-number="9687"></td>
<td id="LC9687" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> vertical flip</span></td>
</tr>
<tr>
<td id="L9688" class="blob-num js-line-number" data-line-number="9688"></td>
<td id="LC9688" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">translate</span>(<span class="pl-c1">0</span>, height);</td>
</tr>
<tr>
<td id="L9689" class="blob-num js-line-number" data-line-number="9689"></td>
<td id="LC9689" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">scale</span>(<span class="pl-c1">1</span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L9690" class="blob-num js-line-number" data-line-number="9690"></td>
<td id="LC9690" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9691" class="blob-num js-line-number" data-line-number="9691"></td>
<td id="LC9691" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">5</span>:</td>
</tr>
<tr>
<td id="L9692" class="blob-num js-line-number" data-line-number="9692"></td>
<td id="LC9692" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> vertical flip + 90 rotate right</span></td>
</tr>
<tr>
<td id="L9693" class="blob-num js-line-number" data-line-number="9693"></td>
<td id="LC9693" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">rotate</span>(<span class="pl-c1">90</span> <span class="pl-k">*</span> <span class="pl-c1">RADIANS</span>);</td>
</tr>
<tr>
<td id="L9694" class="blob-num js-line-number" data-line-number="9694"></td>
<td id="LC9694" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">scale</span>(<span class="pl-c1">1</span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L9695" class="blob-num js-line-number" data-line-number="9695"></td>
<td id="LC9695" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9696" class="blob-num js-line-number" data-line-number="9696"></td>
<td id="LC9696" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">6</span>:</td>
</tr>
<tr>
<td id="L9697" class="blob-num js-line-number" data-line-number="9697"></td>
<td id="LC9697" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 90 rotate right</span></td>
</tr>
<tr>
<td id="L9698" class="blob-num js-line-number" data-line-number="9698"></td>
<td id="LC9698" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">rotate</span>(<span class="pl-c1">90</span> <span class="pl-k">*</span> <span class="pl-c1">RADIANS</span>);</td>
</tr>
<tr>
<td id="L9699" class="blob-num js-line-number" data-line-number="9699"></td>
<td id="LC9699" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">translate</span>(<span class="pl-c1">0</span>, <span class="pl-k">-</span>height);</td>
</tr>
<tr>
<td id="L9700" class="blob-num js-line-number" data-line-number="9700"></td>
<td id="LC9700" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9701" class="blob-num js-line-number" data-line-number="9701"></td>
<td id="LC9701" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">7</span>:</td>
</tr>
<tr>
<td id="L9702" class="blob-num js-line-number" data-line-number="9702"></td>
<td id="LC9702" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> horizontal flip + 90 rotate right</span></td>
</tr>
<tr>
<td id="L9703" class="blob-num js-line-number" data-line-number="9703"></td>
<td id="LC9703" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">rotate</span>(<span class="pl-c1">90</span> <span class="pl-k">*</span> <span class="pl-c1">RADIANS</span>);</td>
</tr>
<tr>
<td id="L9704" class="blob-num js-line-number" data-line-number="9704"></td>
<td id="LC9704" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">translate</span>(width, <span class="pl-k">-</span>height);</td>
</tr>
<tr>
<td id="L9705" class="blob-num js-line-number" data-line-number="9705"></td>
<td id="LC9705" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">scale</span>(<span class="pl-k">-</span><span class="pl-c1">1</span>, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L9706" class="blob-num js-line-number" data-line-number="9706"></td>
<td id="LC9706" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9707" class="blob-num js-line-number" data-line-number="9707"></td>
<td id="LC9707" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-c1">8</span>:</td>
</tr>
<tr>
<td id="L9708" class="blob-num js-line-number" data-line-number="9708"></td>
<td id="LC9708" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> 90 rotate left</span></td>
</tr>
<tr>
<td id="L9709" class="blob-num js-line-number" data-line-number="9709"></td>
<td id="LC9709" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">rotate</span>(<span class="pl-k">-</span><span class="pl-c1">90</span> <span class="pl-k">*</span> <span class="pl-c1">RADIANS</span>);</td>
</tr>
<tr>
<td id="L9710" class="blob-num js-line-number" data-line-number="9710"></td>
<td id="LC9710" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">translate</span>(<span class="pl-k">-</span>width, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L9711" class="blob-num js-line-number" data-line-number="9711"></td>
<td id="LC9711" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L9712" class="blob-num js-line-number" data-line-number="9712"></td>
<td id="LC9712" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9713" class="blob-num js-line-number" data-line-number="9713"></td>
<td id="LC9713" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9714" class="blob-num js-line-number" data-line-number="9714"></td>
<td id="LC9714" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">ctx</span>.<span class="pl-en">drawImage</span>(img, <span class="pl-c1">0</span>, <span class="pl-c1">0</span>, width, height);</td>
</tr>
<tr>
<td id="L9715" class="blob-num js-line-number" data-line-number="9715"></td>
<td id="LC9715" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> canvas;</td>
</tr>
<tr>
<td id="L9716" class="blob-num js-line-number" data-line-number="9716"></td>
<td id="LC9716" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9717" class="blob-num js-line-number" data-line-number="9717"></td>
<td id="LC9717" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9718" class="blob-num js-line-number" data-line-number="9718"></td>
<td id="LC9718" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9719" class="blob-num js-line-number" data-line-number="9719"></td>
<td id="LC9719" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_purge</span>() {</td>
</tr>
<tr>
<td id="L9720" class="blob-num js-line-number" data-line-number="9720"></td>
<td id="LC9720" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_imgInfo) {</td>
</tr>
<tr>
<td id="L9721" class="blob-num js-line-number" data-line-number="9721"></td>
<td id="LC9721" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_imgInfo</span>.<span class="pl-en">purge</span>();</td>
</tr>
<tr>
<td id="L9722" class="blob-num js-line-number" data-line-number="9722"></td>
<td id="LC9722" class="blob-code blob-code-inner js-file-line"> _imgInfo <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9723" class="blob-num js-line-number" data-line-number="9723"></td>
<td id="LC9723" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9724" class="blob-num js-line-number" data-line-number="9724"></td>
<td id="LC9724" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9725" class="blob-num js-line-number" data-line-number="9725"></td>
<td id="LC9725" class="blob-code blob-code-inner js-file-line"> _binStr <span class="pl-k">=</span> _img <span class="pl-k">=</span> _canvas <span class="pl-k">=</span> _blob <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9726" class="blob-num js-line-number" data-line-number="9726"></td>
<td id="LC9726" class="blob-code blob-code-inner js-file-line"> _modified <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L9727" class="blob-num js-line-number" data-line-number="9727"></td>
<td id="LC9727" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9728" class="blob-num js-line-number" data-line-number="9728"></td>
<td id="LC9728" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9729" class="blob-num js-line-number" data-line-number="9729"></td>
<td id="LC9729" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9730" class="blob-num js-line-number" data-line-number="9730"></td>
<td id="LC9730" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Image</span> <span class="pl-k">=</span> HTML5Image);</td>
</tr>
<tr>
<td id="L9731" class="blob-num js-line-number" data-line-number="9731"></td>
<td id="LC9731" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L9732" class="blob-num js-line-number" data-line-number="9732"></td>
<td id="LC9732" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9733" class="blob-num js-line-number" data-line-number="9733"></td>
<td id="LC9733" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/Runtime.js</span></td>
</tr>
<tr>
<td id="L9734" class="blob-num js-line-number" data-line-number="9734"></td>
<td id="LC9734" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9735" class="blob-num js-line-number" data-line-number="9735"></td>
<td id="LC9735" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9736" class="blob-num js-line-number" data-line-number="9736"></td>
<td id="LC9736" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Runtime.js</span></td>
</tr>
<tr>
<td id="L9737" class="blob-num js-line-number" data-line-number="9737"></td>
<td id="LC9737" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9738" class="blob-num js-line-number" data-line-number="9738"></td>
<td id="LC9738" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L9739" class="blob-num js-line-number" data-line-number="9739"></td>
<td id="LC9739" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L9740" class="blob-num js-line-number" data-line-number="9740"></td>
<td id="LC9740" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L9741" class="blob-num js-line-number" data-line-number="9741"></td>
<td id="LC9741" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L9742" class="blob-num js-line-number" data-line-number="9742"></td>
<td id="LC9742" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L9743" class="blob-num js-line-number" data-line-number="9743"></td>
<td id="LC9743" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9744" class="blob-num js-line-number" data-line-number="9744"></td>
<td id="LC9744" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9745" class="blob-num js-line-number" data-line-number="9745"></td>
<td id="LC9745" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>global ActiveXObject:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9746" class="blob-num js-line-number" data-line-number="9746"></td>
<td id="LC9746" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9747" class="blob-num js-line-number" data-line-number="9747"></td>
<td id="LC9747" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9748" class="blob-num js-line-number" data-line-number="9748"></td>
<td id="LC9748" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Defines constructor for Flash runtime.</span></td>
</tr>
<tr>
<td id="L9749" class="blob-num js-line-number" data-line-number="9749"></td>
<td id="LC9749" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9750" class="blob-num js-line-number" data-line-number="9750"></td>
<td id="LC9750" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/Runtime</span></td>
</tr>
<tr>
<td id="L9751" class="blob-num js-line-number" data-line-number="9751"></td>
<td id="LC9751" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L9752" class="blob-num js-line-number" data-line-number="9752"></td>
<td id="LC9752" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9753" class="blob-num js-line-number" data-line-number="9753"></td>
<td id="LC9753" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L9754" class="blob-num js-line-number" data-line-number="9754"></td>
<td id="LC9754" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9755" class="blob-num js-line-number" data-line-number="9755"></td>
<td id="LC9755" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9756" class="blob-num js-line-number" data-line-number="9756"></td>
<td id="LC9756" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9757" class="blob-num js-line-number" data-line-number="9757"></td>
<td id="LC9757" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L9758" class="blob-num js-line-number" data-line-number="9758"></td>
<td id="LC9758" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L9759" class="blob-num js-line-number" data-line-number="9759"></td>
<td id="LC9759" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Env</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Runtime</span>) {</td>
</tr>
<tr>
<td id="L9760" class="blob-num js-line-number" data-line-number="9760"></td>
<td id="LC9760" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L9761" class="blob-num js-line-number" data-line-number="9761"></td>
<td id="LC9761" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>flash<span class="pl-pds">'</span></span>, extensions <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L9762" class="blob-num js-line-number" data-line-number="9762"></td>
<td id="LC9762" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9763" class="blob-num js-line-number" data-line-number="9763"></td>
<td id="LC9763" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9764" class="blob-num js-line-number" data-line-number="9764"></td>
<td id="LC9764" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Get the version of the Flash Player</span></td>
</tr>
<tr>
<td id="L9765" class="blob-num js-line-number" data-line-number="9765"></td>
<td id="LC9765" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9766" class="blob-num js-line-number" data-line-number="9766"></td>
<td id="LC9766" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@method</span> <span class="pl-en">getShimVersion</span></span></td>
</tr>
<tr>
<td id="L9767" class="blob-num js-line-number" data-line-number="9767"></td>
<td id="LC9767" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L9768" class="blob-num js-line-number" data-line-number="9768"></td>
<td id="LC9768" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-k">@return</span> <span class="pl-en">{Number}</span> Flash Player version</span></td>
</tr>
<tr>
<td id="L9769" class="blob-num js-line-number" data-line-number="9769"></td>
<td id="LC9769" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9770" class="blob-num js-line-number" data-line-number="9770"></td>
<td id="LC9770" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">getShimVersion</span>() {</td>
</tr>
<tr>
<td id="L9771" class="blob-num js-line-number" data-line-number="9771"></td>
<td id="LC9771" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> version;</td>
</tr>
<tr>
<td id="L9772" class="blob-num js-line-number" data-line-number="9772"></td>
<td id="LC9772" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9773" class="blob-num js-line-number" data-line-number="9773"></td>
<td id="LC9773" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L9774" class="blob-num js-line-number" data-line-number="9774"></td>
<td id="LC9774" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">=</span> <span class="pl-c1">navigator</span>.<span class="pl-c1">plugins</span>[<span class="pl-s"><span class="pl-pds">'</span>Shockwave Flash<span class="pl-pds">'</span></span>];</td>
</tr>
<tr>
<td id="L9775" class="blob-num js-line-number" data-line-number="9775"></td>
<td id="LC9775" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">=</span> <span class="pl-smi">version</span>.<span class="pl-c1">description</span>;</td>
</tr>
<tr>
<td id="L9776" class="blob-num js-line-number" data-line-number="9776"></td>
<td id="LC9776" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (e1) {</td>
</tr>
<tr>
<td id="L9777" class="blob-num js-line-number" data-line-number="9777"></td>
<td id="LC9777" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L9778" class="blob-num js-line-number" data-line-number="9778"></td>
<td id="LC9778" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">ActiveXObject</span>(<span class="pl-s"><span class="pl-pds">'</span>ShockwaveFlash.ShockwaveFlash<span class="pl-pds">'</span></span>).<span class="pl-en">GetVariable</span>(<span class="pl-s"><span class="pl-pds">'</span>$version<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9779" class="blob-num js-line-number" data-line-number="9779"></td>
<td id="LC9779" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (e2) {</td>
</tr>
<tr>
<td id="L9780" class="blob-num js-line-number" data-line-number="9780"></td>
<td id="LC9780" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>0.0<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9781" class="blob-num js-line-number" data-line-number="9781"></td>
<td id="LC9781" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9782" class="blob-num js-line-number" data-line-number="9782"></td>
<td id="LC9782" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9783" class="blob-num js-line-number" data-line-number="9783"></td>
<td id="LC9783" class="blob-code blob-code-inner js-file-line"> version <span class="pl-k">=</span> <span class="pl-smi">version</span>.<span class="pl-c1">match</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-c1">\d</span><span class="pl-k">+</span><span class="pl-pds">/</span>g</span>);</td>
</tr>
<tr>
<td id="L9784" class="blob-num js-line-number" data-line-number="9784"></td>
<td id="LC9784" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">parseFloat</span>(version[<span class="pl-c1">0</span>] <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>.<span class="pl-pds">'</span></span> <span class="pl-k">+</span> version[<span class="pl-c1">1</span>]);</td>
</tr>
<tr>
<td id="L9785" class="blob-num js-line-number" data-line-number="9785"></td>
<td id="LC9785" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9786" class="blob-num js-line-number" data-line-number="9786"></td>
<td id="LC9786" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9787" class="blob-num js-line-number" data-line-number="9787"></td>
<td id="LC9787" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9788" class="blob-num js-line-number" data-line-number="9788"></td>
<td id="LC9788" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9789" class="blob-num js-line-number" data-line-number="9789"></td>
<td id="LC9789" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Cross-browser SWF removal</span></td>
</tr>
<tr>
<td id="L9790" class="blob-num js-line-number" data-line-number="9790"></td>
<td id="LC9790" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> - Especially needed to safely and completely remove a SWF in Internet Explorer</span></td>
</tr>
<tr>
<td id="L9791" class="blob-num js-line-number" data-line-number="9791"></td>
<td id="LC9791" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L9792" class="blob-num js-line-number" data-line-number="9792"></td>
<td id="LC9792" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Originated from SWFObject v2.2 <http://code.google.com/p/swfobject/> </span></td>
</tr>
<tr>
<td id="L9793" class="blob-num js-line-number" data-line-number="9793"></td>
<td id="LC9793" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9794" class="blob-num js-line-number" data-line-number="9794"></td>
<td id="LC9794" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">removeSWF</span>(<span class="pl-smi">id</span>) {</td>
</tr>
<tr>
<td id="L9795" class="blob-num js-line-number" data-line-number="9795"></td>
<td id="LC9795" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> obj <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(id);</td>
</tr>
<tr>
<td id="L9796" class="blob-num js-line-number" data-line-number="9796"></td>
<td id="LC9796" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (obj <span class="pl-k">&&</span> <span class="pl-smi">obj</span>.<span class="pl-c1">nodeName</span> <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">"</span>OBJECT<span class="pl-pds">"</span></span>) {</td>
</tr>
<tr>
<td id="L9797" class="blob-num js-line-number" data-line-number="9797"></td>
<td id="LC9797" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L9798" class="blob-num js-line-number" data-line-number="9798"></td>
<td id="LC9798" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">style</span>.<span class="pl-c1">display</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>none<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L9799" class="blob-num js-line-number" data-line-number="9799"></td>
<td id="LC9799" class="blob-code blob-code-inner js-file-line"> (<span class="pl-k">function</span> <span class="pl-en">onInit</span>(){</td>
</tr>
<tr>
<td id="L9800" class="blob-num js-line-number" data-line-number="9800"></td>
<td id="LC9800" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> http://msdn.microsoft.com/en-us/library/ie/ms534360(v=vs.85).aspx</span></td>
</tr>
<tr>
<td id="L9801" class="blob-num js-line-number" data-line-number="9801"></td>
<td id="LC9801" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">obj</span>.<span class="pl-c1">readyState</span> <span class="pl-k">==</span> <span class="pl-c1">4</span>) {</td>
</tr>
<tr>
<td id="L9802" class="blob-num js-line-number" data-line-number="9802"></td>
<td id="LC9802" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeObjectInIE</span>(id);</td>
</tr>
<tr>
<td id="L9803" class="blob-num js-line-number" data-line-number="9803"></td>
<td id="LC9803" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9804" class="blob-num js-line-number" data-line-number="9804"></td>
<td id="LC9804" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9805" class="blob-num js-line-number" data-line-number="9805"></td>
<td id="LC9805" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">setTimeout</span>(onInit, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L9806" class="blob-num js-line-number" data-line-number="9806"></td>
<td id="LC9806" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9807" class="blob-num js-line-number" data-line-number="9807"></td>
<td id="LC9807" class="blob-code blob-code-inner js-file-line"> })();</td>
</tr>
<tr>
<td id="L9808" class="blob-num js-line-number" data-line-number="9808"></td>
<td id="LC9808" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9809" class="blob-num js-line-number" data-line-number="9809"></td>
<td id="LC9809" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9810" class="blob-num js-line-number" data-line-number="9810"></td>
<td id="LC9810" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(obj);</td>
</tr>
<tr>
<td id="L9811" class="blob-num js-line-number" data-line-number="9811"></td>
<td id="LC9811" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9812" class="blob-num js-line-number" data-line-number="9812"></td>
<td id="LC9812" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9813" class="blob-num js-line-number" data-line-number="9813"></td>
<td id="LC9813" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9814" class="blob-num js-line-number" data-line-number="9814"></td>
<td id="LC9814" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9815" class="blob-num js-line-number" data-line-number="9815"></td>
<td id="LC9815" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9816" class="blob-num js-line-number" data-line-number="9816"></td>
<td id="LC9816" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">removeObjectInIE</span>(<span class="pl-smi">id</span>) {</td>
</tr>
<tr>
<td id="L9817" class="blob-num js-line-number" data-line-number="9817"></td>
<td id="LC9817" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> obj <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(id);</td>
</tr>
<tr>
<td id="L9818" class="blob-num js-line-number" data-line-number="9818"></td>
<td id="LC9818" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (obj) {</td>
</tr>
<tr>
<td id="L9819" class="blob-num js-line-number" data-line-number="9819"></td>
<td id="LC9819" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">in</span> obj) {</td>
</tr>
<tr>
<td id="L9820" class="blob-num js-line-number" data-line-number="9820"></td>
<td id="LC9820" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">typeof</span> obj[i] <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">"</span>function<span class="pl-pds">"</span></span>) {</td>
</tr>
<tr>
<td id="L9821" class="blob-num js-line-number" data-line-number="9821"></td>
<td id="LC9821" class="blob-code blob-code-inner js-file-line"> obj[i] <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L9822" class="blob-num js-line-number" data-line-number="9822"></td>
<td id="LC9822" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9823" class="blob-num js-line-number" data-line-number="9823"></td>
<td id="LC9823" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9824" class="blob-num js-line-number" data-line-number="9824"></td>
<td id="LC9824" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">obj</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(obj);</td>
</tr>
<tr>
<td id="L9825" class="blob-num js-line-number" data-line-number="9825"></td>
<td id="LC9825" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9826" class="blob-num js-line-number" data-line-number="9826"></td>
<td id="LC9826" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9827" class="blob-num js-line-number" data-line-number="9827"></td>
<td id="LC9827" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9828" class="blob-num js-line-number" data-line-number="9828"></td>
<td id="LC9828" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L9829" class="blob-num js-line-number" data-line-number="9829"></td>
<td id="LC9829" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Constructor for the Flash Runtime</span></td>
</tr>
<tr>
<td id="L9830" class="blob-num js-line-number" data-line-number="9830"></td>
<td id="LC9830" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L9831" class="blob-num js-line-number" data-line-number="9831"></td>
<td id="LC9831" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FlashRuntime</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L9832" class="blob-num js-line-number" data-line-number="9832"></td>
<td id="LC9832" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>, initTimer;</td>
</tr>
<tr>
<td id="L9833" class="blob-num js-line-number" data-line-number="9833"></td>
<td id="LC9833" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9834" class="blob-num js-line-number" data-line-number="9834"></td>
<td id="LC9834" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({ swf_url<span class="pl-k">:</span> <span class="pl-smi">Env</span>.<span class="pl-smi">swf_url</span> }, options);</td>
</tr>
<tr>
<td id="L9835" class="blob-num js-line-number" data-line-number="9835"></td>
<td id="LC9835" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9836" class="blob-num js-line-number" data-line-number="9836"></td>
<td id="LC9836" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, options, type, {</td>
</tr>
<tr>
<td id="L9837" class="blob-num js-line-number" data-line-number="9837"></td>
<td id="LC9837" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">access_binary</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9838" class="blob-num js-line-number" data-line-number="9838"></td>
<td id="LC9838" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9839" class="blob-num js-line-number" data-line-number="9839"></td>
<td id="LC9839" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9840" class="blob-num js-line-number" data-line-number="9840"></td>
<td id="LC9840" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">access_image_binary</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9841" class="blob-num js-line-number" data-line-number="9841"></td>
<td id="LC9841" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9842" class="blob-num js-line-number" data-line-number="9842"></td>
<td id="LC9842" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9843" class="blob-num js-line-number" data-line-number="9843"></td>
<td id="LC9843" class="blob-code blob-code-inner js-file-line"> display_media<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">capTest</span>(<span class="pl-en">defined</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/image/Image<span class="pl-pds">'</span></span>)),</td>
</tr>
<tr>
<td id="L9844" class="blob-num js-line-number" data-line-number="9844"></td>
<td id="LC9844" class="blob-code blob-code-inner js-file-line"> do_cors<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L9845" class="blob-num js-line-number" data-line-number="9845"></td>
<td id="LC9845" class="blob-code blob-code-inner js-file-line"> drag_and_drop<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L9846" class="blob-num js-line-number" data-line-number="9846"></td>
<td id="LC9846" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">report_upload_progress</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9847" class="blob-num js-line-number" data-line-number="9847"></td>
<td id="LC9847" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9848" class="blob-num js-line-number" data-line-number="9848"></td>
<td id="LC9848" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9849" class="blob-num js-line-number" data-line-number="9849"></td>
<td id="LC9849" class="blob-code blob-code-inner js-file-line"> resize_image<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L9850" class="blob-num js-line-number" data-line-number="9850"></td>
<td id="LC9850" class="blob-code blob-code-inner js-file-line"> return_response_headers<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L9851" class="blob-num js-line-number" data-line-number="9851"></td>
<td id="LC9851" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_type</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L9852" class="blob-num js-line-number" data-line-number="9852"></td>
<td id="LC9852" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (responseType <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span>) {</td>
</tr>
<tr>
<td id="L9853" class="blob-num js-line-number" data-line-number="9853"></td>
<td id="LC9853" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L9854" class="blob-num js-line-number" data-line-number="9854"></td>
<td id="LC9854" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L9855" class="blob-num js-line-number" data-line-number="9855"></td>
<td id="LC9855" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(responseType, [<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>text<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span>]) <span class="pl-k">||</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9856" class="blob-num js-line-number" data-line-number="9856"></td>
<td id="LC9856" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9857" class="blob-num js-line-number" data-line-number="9857"></td>
<td id="LC9857" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_status_code</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L9858" class="blob-num js-line-number" data-line-number="9858"></td>
<td id="LC9858" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(code, [<span class="pl-c1">200</span>, <span class="pl-c1">404</span>]);</td>
</tr>
<tr>
<td id="L9859" class="blob-num js-line-number" data-line-number="9859"></td>
<td id="LC9859" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9860" class="blob-num js-line-number" data-line-number="9860"></td>
<td id="LC9860" class="blob-code blob-code-inner js-file-line"> select_file<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L9861" class="blob-num js-line-number" data-line-number="9861"></td>
<td id="LC9861" class="blob-code blob-code-inner js-file-line"> select_multiple<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L9862" class="blob-num js-line-number" data-line-number="9862"></td>
<td id="LC9862" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_binary_string</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9863" class="blob-num js-line-number" data-line-number="9863"></td>
<td id="LC9863" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9864" class="blob-num js-line-number" data-line-number="9864"></td>
<td id="LC9864" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9865" class="blob-num js-line-number" data-line-number="9865"></td>
<td id="LC9865" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_browser_cookies</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9866" class="blob-num js-line-number" data-line-number="9866"></td>
<td id="LC9866" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9867" class="blob-num js-line-number" data-line-number="9867"></td>
<td id="LC9867" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9868" class="blob-num js-line-number" data-line-number="9868"></td>
<td id="LC9868" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_custom_headers</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9869" class="blob-num js-line-number" data-line-number="9869"></td>
<td id="LC9869" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9870" class="blob-num js-line-number" data-line-number="9870"></td>
<td id="LC9870" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9871" class="blob-num js-line-number" data-line-number="9871"></td>
<td id="LC9871" class="blob-code blob-code-inner js-file-line"> send_multipart<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L9872" class="blob-num js-line-number" data-line-number="9872"></td>
<td id="LC9872" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">slice_blob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9873" class="blob-num js-line-number" data-line-number="9873"></td>
<td id="LC9873" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9874" class="blob-num js-line-number" data-line-number="9874"></td>
<td id="LC9874" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9875" class="blob-num js-line-number" data-line-number="9875"></td>
<td id="LC9875" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">stream_upload</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9876" class="blob-num js-line-number" data-line-number="9876"></td>
<td id="LC9876" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9877" class="blob-num js-line-number" data-line-number="9877"></td>
<td id="LC9877" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9878" class="blob-num js-line-number" data-line-number="9878"></td>
<td id="LC9878" class="blob-code blob-code-inner js-file-line"> summon_file_dialog<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L9879" class="blob-num js-line-number" data-line-number="9879"></td>
<td id="LC9879" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">upload_filesize</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">size</span>) {</td>
</tr>
<tr>
<td id="L9880" class="blob-num js-line-number" data-line-number="9880"></td>
<td id="LC9880" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">parseSizeStr</span>(size) <span class="pl-k"><=</span> <span class="pl-c1">2097152</span> <span class="pl-k">||</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9881" class="blob-num js-line-number" data-line-number="9881"></td>
<td id="LC9881" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9882" class="blob-num js-line-number" data-line-number="9882"></td>
<td id="LC9882" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_http_method</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">methods</span>) {</td>
</tr>
<tr>
<td id="L9883" class="blob-num js-line-number" data-line-number="9883"></td>
<td id="LC9883" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(methods, [<span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>POST<span class="pl-pds">'</span></span>]);</td>
</tr>
<tr>
<td id="L9884" class="blob-num js-line-number" data-line-number="9884"></td>
<td id="LC9884" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9885" class="blob-num js-line-number" data-line-number="9885"></td>
<td id="LC9885" class="blob-code blob-code-inner js-file-line"> }, { </td>
</tr>
<tr>
<td id="L9886" class="blob-num js-line-number" data-line-number="9886"></td>
<td id="LC9886" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> capabilities that require specific mode</span></td>
</tr>
<tr>
<td id="L9887" class="blob-num js-line-number" data-line-number="9887"></td>
<td id="LC9887" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">access_binary</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9888" class="blob-num js-line-number" data-line-number="9888"></td>
<td id="LC9888" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9889" class="blob-num js-line-number" data-line-number="9889"></td>
<td id="LC9889" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9890" class="blob-num js-line-number" data-line-number="9890"></td>
<td id="LC9890" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">access_image_binary</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9891" class="blob-num js-line-number" data-line-number="9891"></td>
<td id="LC9891" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9892" class="blob-num js-line-number" data-line-number="9892"></td>
<td id="LC9892" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9893" class="blob-num js-line-number" data-line-number="9893"></td>
<td id="LC9893" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">report_upload_progress</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9894" class="blob-num js-line-number" data-line-number="9894"></td>
<td id="LC9894" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9895" class="blob-num js-line-number" data-line-number="9895"></td>
<td id="LC9895" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9896" class="blob-num js-line-number" data-line-number="9896"></td>
<td id="LC9896" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_type</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L9897" class="blob-num js-line-number" data-line-number="9897"></td>
<td id="LC9897" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(responseType, [<span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>text<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span>]) <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> [<span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>];</td>
</tr>
<tr>
<td id="L9898" class="blob-num js-line-number" data-line-number="9898"></td>
<td id="LC9898" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9899" class="blob-num js-line-number" data-line-number="9899"></td>
<td id="LC9899" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_status_code</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L9900" class="blob-num js-line-number" data-line-number="9900"></td>
<td id="LC9900" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(code, [<span class="pl-c1">200</span>, <span class="pl-c1">404</span>]) <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> [<span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>];</td>
</tr>
<tr>
<td id="L9901" class="blob-num js-line-number" data-line-number="9901"></td>
<td id="LC9901" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9902" class="blob-num js-line-number" data-line-number="9902"></td>
<td id="LC9902" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_binary_string</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9903" class="blob-num js-line-number" data-line-number="9903"></td>
<td id="LC9903" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9904" class="blob-num js-line-number" data-line-number="9904"></td>
<td id="LC9904" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9905" class="blob-num js-line-number" data-line-number="9905"></td>
<td id="LC9905" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_browser_cookies</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9906" class="blob-num js-line-number" data-line-number="9906"></td>
<td id="LC9906" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9907" class="blob-num js-line-number" data-line-number="9907"></td>
<td id="LC9907" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9908" class="blob-num js-line-number" data-line-number="9908"></td>
<td id="LC9908" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_custom_headers</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9909" class="blob-num js-line-number" data-line-number="9909"></td>
<td id="LC9909" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9910" class="blob-num js-line-number" data-line-number="9910"></td>
<td id="LC9910" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9911" class="blob-num js-line-number" data-line-number="9911"></td>
<td id="LC9911" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">slice_blob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9912" class="blob-num js-line-number" data-line-number="9912"></td>
<td id="LC9912" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9913" class="blob-num js-line-number" data-line-number="9913"></td>
<td id="LC9913" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9914" class="blob-num js-line-number" data-line-number="9914"></td>
<td id="LC9914" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">stream_upload</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L9915" class="blob-num js-line-number" data-line-number="9915"></td>
<td id="LC9915" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9916" class="blob-num js-line-number" data-line-number="9916"></td>
<td id="LC9916" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9917" class="blob-num js-line-number" data-line-number="9917"></td>
<td id="LC9917" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">upload_filesize</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">size</span>) {</td>
</tr>
<tr>
<td id="L9918" class="blob-num js-line-number" data-line-number="9918"></td>
<td id="LC9918" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">parseSizeStr</span>(size) <span class="pl-k">>=</span> <span class="pl-c1">2097152</span> <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9919" class="blob-num js-line-number" data-line-number="9919"></td>
<td id="LC9919" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9920" class="blob-num js-line-number" data-line-number="9920"></td>
<td id="LC9920" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9921" class="blob-num js-line-number" data-line-number="9921"></td>
<td id="LC9921" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9922" class="blob-num js-line-number" data-line-number="9922"></td>
<td id="LC9922" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9923" class="blob-num js-line-number" data-line-number="9923"></td>
<td id="LC9923" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> minimal requirement for Flash Player version</span></td>
</tr>
<tr>
<td id="L9924" class="blob-num js-line-number" data-line-number="9924"></td>
<td id="LC9924" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-en">getShimVersion</span>() <span class="pl-k"><</span> <span class="pl-c1">11.3</span>) {</td>
</tr>
<tr>
<td id="L9925" class="blob-num js-line-number" data-line-number="9925"></td>
<td id="LC9925" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L9926" class="blob-num js-line-number" data-line-number="9926"></td>
<td id="LC9926" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t</span>Flash didn't meet minimal version requirement (11.3).<span class="pl-pds">"</span></span>); </td>
</tr>
<tr>
<td id="L9927" class="blob-num js-line-number" data-line-number="9927"></td>
<td id="LC9927" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9928" class="blob-num js-line-number" data-line-number="9928"></td>
<td id="LC9928" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9929" class="blob-num js-line-number" data-line-number="9929"></td>
<td id="LC9929" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">mode</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>; <span class="pl-c"><span class="pl-c">//</span> with falsy mode, runtime won't operable, no matter what the mode was before</span></td>
</tr>
<tr>
<td id="L9930" class="blob-num js-line-number" data-line-number="9930"></td>
<td id="LC9930" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9931" class="blob-num js-line-number" data-line-number="9931"></td>
<td id="LC9931" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9932" class="blob-num js-line-number" data-line-number="9932"></td>
<td id="LC9932" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9933" class="blob-num js-line-number" data-line-number="9933"></td>
<td id="LC9933" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L9934" class="blob-num js-line-number" data-line-number="9934"></td>
<td id="LC9934" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9935" class="blob-num js-line-number" data-line-number="9935"></td>
<td id="LC9935" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getShim</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9936" class="blob-num js-line-number" data-line-number="9936"></td>
<td id="LC9936" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L9937" class="blob-num js-line-number" data-line-number="9937"></td>
<td id="LC9937" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9938" class="blob-num js-line-number" data-line-number="9938"></td>
<td id="LC9938" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9939" class="blob-num js-line-number" data-line-number="9939"></td>
<td id="LC9939" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">shimExec</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">component</span>, <span class="pl-smi">action</span>) {</td>
</tr>
<tr>
<td id="L9940" class="blob-num js-line-number" data-line-number="9940"></td>
<td id="LC9940" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>, <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L9941" class="blob-num js-line-number" data-line-number="9941"></td>
<td id="LC9941" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">getShim</span>().<span class="pl-c1">exec</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>, component, action, args);</td>
</tr>
<tr>
<td id="L9942" class="blob-num js-line-number" data-line-number="9942"></td>
<td id="LC9942" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9943" class="blob-num js-line-number" data-line-number="9943"></td>
<td id="LC9943" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9944" class="blob-num js-line-number" data-line-number="9944"></td>
<td id="LC9944" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9945" class="blob-num js-line-number" data-line-number="9945"></td>
<td id="LC9945" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> html, el, container;</td>
</tr>
<tr>
<td id="L9946" class="blob-num js-line-number" data-line-number="9946"></td>
<td id="LC9946" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9947" class="blob-num js-line-number" data-line-number="9947"></td>
<td id="LC9947" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getShimContainer</span>();</td>
</tr>
<tr>
<td id="L9948" class="blob-num js-line-number" data-line-number="9948"></td>
<td id="LC9948" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9949" class="blob-num js-line-number" data-line-number="9949"></td>
<td id="LC9949" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if not the minimal height, shims are not initialized in older browsers (e.g FF3.6, IE6,7,8, Safari 4.0,5.0, etc)</span></td>
</tr>
<tr>
<td id="L9950" class="blob-num js-line-number" data-line-number="9950"></td>
<td id="LC9950" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">container</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L9951" class="blob-num js-line-number" data-line-number="9951"></td>
<td id="LC9951" class="blob-code blob-code-inner js-file-line"> position<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>absolute<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9952" class="blob-num js-line-number" data-line-number="9952"></td>
<td id="LC9952" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>-8px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9953" class="blob-num js-line-number" data-line-number="9953"></td>
<td id="LC9953" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>-8px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9954" class="blob-num js-line-number" data-line-number="9954"></td>
<td id="LC9954" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>9px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9955" class="blob-num js-line-number" data-line-number="9955"></td>
<td id="LC9955" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>9px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L9956" class="blob-num js-line-number" data-line-number="9956"></td>
<td id="LC9956" class="blob-code blob-code-inner js-file-line"> overflow<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>hidden<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L9957" class="blob-num js-line-number" data-line-number="9957"></td>
<td id="LC9957" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L9958" class="blob-num js-line-number" data-line-number="9958"></td>
<td id="LC9958" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9959" class="blob-num js-line-number" data-line-number="9959"></td>
<td id="LC9959" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> insert flash object</span></td>
</tr>
<tr>
<td id="L9960" class="blob-num js-line-number" data-line-number="9960"></td>
<td id="LC9960" class="blob-code blob-code-inner js-file-line"> html <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><object id="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" type="application/x-shockwave-flash" data="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">options</span>.<span class="pl-smi">swf_url</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" <span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9961" class="blob-num js-line-number" data-line-number="9961"></td>
<td id="LC9961" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9962" class="blob-num js-line-number" data-line-number="9962"></td>
<td id="LC9962" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L9963" class="blob-num js-line-number" data-line-number="9963"></td>
<td id="LC9963" class="blob-code blob-code-inner js-file-line"> html <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span>classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" <span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9964" class="blob-num js-line-number" data-line-number="9964"></td>
<td id="LC9964" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9965" class="blob-num js-line-number" data-line-number="9965"></td>
<td id="LC9965" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9966" class="blob-num js-line-number" data-line-number="9966"></td>
<td id="LC9966" class="blob-code blob-code-inner js-file-line"> html <span class="pl-k">+=</span> <span class="pl-s"><span class="pl-pds">'</span>width="100%" height="100%" style="outline:0"><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L9967" class="blob-num js-line-number" data-line-number="9967"></td>
<td id="LC9967" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="movie" value="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">options</span>.<span class="pl-smi">swf_url</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" /><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L9968" class="blob-num js-line-number" data-line-number="9968"></td>
<td id="LC9968" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="flashvars" value="uid=<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">escape</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>&target=<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">getGlobalEventTarget</span>() <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" /><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L9969" class="blob-num js-line-number" data-line-number="9969"></td>
<td id="LC9969" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="wmode" value="transparent" /><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L9970" class="blob-num js-line-number" data-line-number="9970"></td>
<td id="LC9970" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="allowscriptaccess" value="always" /><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L9971" class="blob-num js-line-number" data-line-number="9971"></td>
<td id="LC9971" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span></object><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L9972" class="blob-num js-line-number" data-line-number="9972"></td>
<td id="LC9972" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9973" class="blob-num js-line-number" data-line-number="9973"></td>
<td id="LC9973" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L9974" class="blob-num js-line-number" data-line-number="9974"></td>
<td id="LC9974" class="blob-code blob-code-inner js-file-line"> el <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>div<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L9975" class="blob-num js-line-number" data-line-number="9975"></td>
<td id="LC9975" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">container</span>.<span class="pl-c1">appendChild</span>(el);</td>
</tr>
<tr>
<td id="L9976" class="blob-num js-line-number" data-line-number="9976"></td>
<td id="LC9976" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">el</span>.<span class="pl-smi">outerHTML</span> <span class="pl-k">=</span> html;</td>
</tr>
<tr>
<td id="L9977" class="blob-num js-line-number" data-line-number="9977"></td>
<td id="LC9977" class="blob-code blob-code-inner js-file-line"> el <span class="pl-k">=</span> container <span class="pl-k">=</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> just in case</span></td>
</tr>
<tr>
<td id="L9978" class="blob-num js-line-number" data-line-number="9978"></td>
<td id="LC9978" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L9979" class="blob-num js-line-number" data-line-number="9979"></td>
<td id="LC9979" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">container</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> html;</td>
</tr>
<tr>
<td id="L9980" class="blob-num js-line-number" data-line-number="9980"></td>
<td id="LC9980" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9981" class="blob-num js-line-number" data-line-number="9981"></td>
<td id="LC9981" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9982" class="blob-num js-line-number" data-line-number="9982"></td>
<td id="LC9982" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Init is dispatched by the shim</span></td>
</tr>
<tr>
<td id="L9983" class="blob-num js-line-number" data-line-number="9983"></td>
<td id="LC9983" class="blob-code blob-code-inner js-file-line"> initTimer <span class="pl-k">=</span> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9984" class="blob-num js-line-number" data-line-number="9984"></td>
<td id="LC9984" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">I</span> <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-c1">I</span>.<span class="pl-smi">initialized</span>) { <span class="pl-c"><span class="pl-c">//</span> runtime might be already destroyed by this moment</span></td>
</tr>
<tr>
<td id="L9985" class="blob-num js-line-number" data-line-number="9985"></td>
<td id="LC9985" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">I</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>Error<span class="pl-pds">"</span></span>, <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_INIT_ERR</span>));</td>
</tr>
<tr>
<td id="L9986" class="blob-num js-line-number" data-line-number="9986"></td>
<td id="LC9986" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9987" class="blob-num js-line-number" data-line-number="9987"></td>
<td id="LC9987" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L9988" class="blob-num js-line-number" data-line-number="9988"></td>
<td id="LC9988" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t</span>Flash failed to initialize within a specified period of time (typically 5s).<span class="pl-pds">"</span></span>); </td>
</tr>
<tr>
<td id="L9989" class="blob-num js-line-number" data-line-number="9989"></td>
<td id="LC9989" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9990" class="blob-num js-line-number" data-line-number="9990"></td>
<td id="LC9990" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L9991" class="blob-num js-line-number" data-line-number="9991"></td>
<td id="LC9991" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">5000</span>);</td>
</tr>
<tr>
<td id="L9992" class="blob-num js-line-number" data-line-number="9992"></td>
<td id="LC9992" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L9993" class="blob-num js-line-number" data-line-number="9993"></td>
<td id="LC9993" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9994" class="blob-num js-line-number" data-line-number="9994"></td>
<td id="LC9994" class="blob-code blob-code-inner js-file-line"> destroy<span class="pl-k">:</span> (<span class="pl-k">function</span>(<span class="pl-smi">destroy</span>) { <span class="pl-c"><span class="pl-c">//</span> extend default destroy method</span></td>
</tr>
<tr>
<td id="L9995" class="blob-num js-line-number" data-line-number="9995"></td>
<td id="LC9995" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L9996" class="blob-num js-line-number" data-line-number="9996"></td>
<td id="LC9996" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">removeSWF</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>); <span class="pl-c"><span class="pl-c">//</span> SWF removal requires special care in IE</span></td>
</tr>
<tr>
<td id="L9997" class="blob-num js-line-number" data-line-number="9997"></td>
<td id="LC9997" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L9998" class="blob-num js-line-number" data-line-number="9998"></td>
<td id="LC9998" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">destroy</span>.<span class="pl-c1">call</span>(<span class="pl-c1">I</span>);</td>
</tr>
<tr>
<td id="L9999" class="blob-num js-line-number" data-line-number="9999"></td>
<td id="LC9999" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">clearTimeout</span>(initTimer); <span class="pl-c"><span class="pl-c">//</span> initialization check might be still onwait</span></td>
</tr>
<tr>
<td id="L10000" class="blob-num js-line-number" data-line-number="10000"></td>
<td id="LC10000" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> initTimer <span class="pl-k">=</span> destroy <span class="pl-k">=</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10001" class="blob-num js-line-number" data-line-number="10001"></td>
<td id="LC10001" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10002" class="blob-num js-line-number" data-line-number="10002"></td>
<td id="LC10002" class="blob-code blob-code-inner js-file-line"> }(<span class="pl-c1">this</span>.<span class="pl-smi">destroy</span>))</td>
</tr>
<tr>
<td id="L10003" class="blob-num js-line-number" data-line-number="10003"></td>
<td id="LC10003" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10004" class="blob-num js-line-number" data-line-number="10004"></td>
<td id="LC10004" class="blob-code blob-code-inner js-file-line"> }, extensions);</td>
</tr>
<tr>
<td id="L10005" class="blob-num js-line-number" data-line-number="10005"></td>
<td id="LC10005" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10006" class="blob-num js-line-number" data-line-number="10006"></td>
<td id="LC10006" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10007" class="blob-num js-line-number" data-line-number="10007"></td>
<td id="LC10007" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">addConstructor</span>(type, FlashRuntime);</td>
</tr>
<tr>
<td id="L10008" class="blob-num js-line-number" data-line-number="10008"></td>
<td id="LC10008" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10009" class="blob-num js-line-number" data-line-number="10009"></td>
<td id="LC10009" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> extensions;</td>
</tr>
<tr>
<td id="L10010" class="blob-num js-line-number" data-line-number="10010"></td>
<td id="LC10010" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10011" class="blob-num js-line-number" data-line-number="10011"></td>
<td id="LC10011" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10012" class="blob-num js-line-number" data-line-number="10012"></td>
<td id="LC10012" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/file/Blob.js</span></td>
</tr>
<tr>
<td id="L10013" class="blob-num js-line-number" data-line-number="10013"></td>
<td id="LC10013" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10014" class="blob-num js-line-number" data-line-number="10014"></td>
<td id="LC10014" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10015" class="blob-num js-line-number" data-line-number="10015"></td>
<td id="LC10015" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Blob.js</span></td>
</tr>
<tr>
<td id="L10016" class="blob-num js-line-number" data-line-number="10016"></td>
<td id="LC10016" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10017" class="blob-num js-line-number" data-line-number="10017"></td>
<td id="LC10017" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10018" class="blob-num js-line-number" data-line-number="10018"></td>
<td id="LC10018" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10019" class="blob-num js-line-number" data-line-number="10019"></td>
<td id="LC10019" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10020" class="blob-num js-line-number" data-line-number="10020"></td>
<td id="LC10020" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10021" class="blob-num js-line-number" data-line-number="10021"></td>
<td id="LC10021" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10022" class="blob-num js-line-number" data-line-number="10022"></td>
<td id="LC10022" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10023" class="blob-num js-line-number" data-line-number="10023"></td>
<td id="LC10023" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10024" class="blob-num js-line-number" data-line-number="10024"></td>
<td id="LC10024" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10025" class="blob-num js-line-number" data-line-number="10025"></td>
<td id="LC10025" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/file/Blob</span></td>
</tr>
<tr>
<td id="L10026" class="blob-num js-line-number" data-line-number="10026"></td>
<td id="LC10026" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10027" class="blob-num js-line-number" data-line-number="10027"></td>
<td id="LC10027" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10028" class="blob-num js-line-number" data-line-number="10028"></td>
<td id="LC10028" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/Blob<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10029" class="blob-num js-line-number" data-line-number="10029"></td>
<td id="LC10029" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10030" class="blob-num js-line-number" data-line-number="10030"></td>
<td id="LC10030" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10031" class="blob-num js-line-number" data-line-number="10031"></td>
<td id="LC10031" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L10032" class="blob-num js-line-number" data-line-number="10032"></td>
<td id="LC10032" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10033" class="blob-num js-line-number" data-line-number="10033"></td>
<td id="LC10033" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> FlashBlob <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10034" class="blob-num js-line-number" data-line-number="10034"></td>
<td id="LC10034" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">slice</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>, <span class="pl-smi">start</span>, <span class="pl-smi">end</span>, <span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L10035" class="blob-num js-line-number" data-line-number="10035"></td>
<td id="LC10035" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10036" class="blob-num js-line-number" data-line-number="10036"></td>
<td id="LC10036" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10037" class="blob-num js-line-number" data-line-number="10037"></td>
<td id="LC10037" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (start <span class="pl-k"><</span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L10038" class="blob-num js-line-number" data-line-number="10038"></td>
<td id="LC10038" class="blob-code blob-code-inner js-file-line"> start <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">max</span>(<span class="pl-smi">blob</span>.<span class="pl-c1">size</span> <span class="pl-k">+</span> start, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L10039" class="blob-num js-line-number" data-line-number="10039"></td>
<td id="LC10039" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (start <span class="pl-k">></span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L10040" class="blob-num js-line-number" data-line-number="10040"></td>
<td id="LC10040" class="blob-code blob-code-inner js-file-line"> start <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(start, <span class="pl-smi">blob</span>.<span class="pl-c1">size</span>);</td>
</tr>
<tr>
<td id="L10041" class="blob-num js-line-number" data-line-number="10041"></td>
<td id="LC10041" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10042" class="blob-num js-line-number" data-line-number="10042"></td>
<td id="LC10042" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10043" class="blob-num js-line-number" data-line-number="10043"></td>
<td id="LC10043" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (end <span class="pl-k"><</span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L10044" class="blob-num js-line-number" data-line-number="10044"></td>
<td id="LC10044" class="blob-code blob-code-inner js-file-line"> end <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">max</span>(<span class="pl-smi">blob</span>.<span class="pl-c1">size</span> <span class="pl-k">+</span> end, <span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L10045" class="blob-num js-line-number" data-line-number="10045"></td>
<td id="LC10045" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (end <span class="pl-k">></span> <span class="pl-c1">0</span>) {</td>
</tr>
<tr>
<td id="L10046" class="blob-num js-line-number" data-line-number="10046"></td>
<td id="LC10046" class="blob-code blob-code-inner js-file-line"> end <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(end, <span class="pl-smi">blob</span>.<span class="pl-c1">size</span>);</td>
</tr>
<tr>
<td id="L10047" class="blob-num js-line-number" data-line-number="10047"></td>
<td id="LC10047" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10048" class="blob-num js-line-number" data-line-number="10048"></td>
<td id="LC10048" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10049" class="blob-num js-line-number" data-line-number="10049"></td>
<td id="LC10049" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Blob<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>slice<span class="pl-pds">'</span></span>, start, end, type <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10050" class="blob-num js-line-number" data-line-number="10050"></td>
<td id="LC10050" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10051" class="blob-num js-line-number" data-line-number="10051"></td>
<td id="LC10051" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (blob) {</td>
</tr>
<tr>
<td id="L10052" class="blob-num js-line-number" data-line-number="10052"></td>
<td id="LC10052" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>, blob);</td>
</tr>
<tr>
<td id="L10053" class="blob-num js-line-number" data-line-number="10053"></td>
<td id="LC10053" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10054" class="blob-num js-line-number" data-line-number="10054"></td>
<td id="LC10054" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> blob;</td>
</tr>
<tr>
<td id="L10055" class="blob-num js-line-number" data-line-number="10055"></td>
<td id="LC10055" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10056" class="blob-num js-line-number" data-line-number="10056"></td>
<td id="LC10056" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10057" class="blob-num js-line-number" data-line-number="10057"></td>
<td id="LC10057" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10058" class="blob-num js-line-number" data-line-number="10058"></td>
<td id="LC10058" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Blob</span> <span class="pl-k">=</span> FlashBlob);</td>
</tr>
<tr>
<td id="L10059" class="blob-num js-line-number" data-line-number="10059"></td>
<td id="LC10059" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10060" class="blob-num js-line-number" data-line-number="10060"></td>
<td id="LC10060" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10061" class="blob-num js-line-number" data-line-number="10061"></td>
<td id="LC10061" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/file/FileInput.js</span></td>
</tr>
<tr>
<td id="L10062" class="blob-num js-line-number" data-line-number="10062"></td>
<td id="LC10062" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10063" class="blob-num js-line-number" data-line-number="10063"></td>
<td id="LC10063" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10064" class="blob-num js-line-number" data-line-number="10064"></td>
<td id="LC10064" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileInput.js</span></td>
</tr>
<tr>
<td id="L10065" class="blob-num js-line-number" data-line-number="10065"></td>
<td id="LC10065" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10066" class="blob-num js-line-number" data-line-number="10066"></td>
<td id="LC10066" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10067" class="blob-num js-line-number" data-line-number="10067"></td>
<td id="LC10067" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10068" class="blob-num js-line-number" data-line-number="10068"></td>
<td id="LC10068" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10069" class="blob-num js-line-number" data-line-number="10069"></td>
<td id="LC10069" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10070" class="blob-num js-line-number" data-line-number="10070"></td>
<td id="LC10070" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10071" class="blob-num js-line-number" data-line-number="10071"></td>
<td id="LC10071" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10072" class="blob-num js-line-number" data-line-number="10072"></td>
<td id="LC10072" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10073" class="blob-num js-line-number" data-line-number="10073"></td>
<td id="LC10073" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10074" class="blob-num js-line-number" data-line-number="10074"></td>
<td id="LC10074" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/file/FileInput</span></td>
</tr>
<tr>
<td id="L10075" class="blob-num js-line-number" data-line-number="10075"></td>
<td id="LC10075" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10076" class="blob-num js-line-number" data-line-number="10076"></td>
<td id="LC10076" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10077" class="blob-num js-line-number" data-line-number="10077"></td>
<td id="LC10077" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/FileInput<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10078" class="blob-num js-line-number" data-line-number="10078"></td>
<td id="LC10078" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10079" class="blob-num js-line-number" data-line-number="10079"></td>
<td id="LC10079" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10080" class="blob-num js-line-number" data-line-number="10080"></td>
<td id="LC10080" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10081" class="blob-num js-line-number" data-line-number="10081"></td>
<td id="LC10081" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10082" class="blob-num js-line-number" data-line-number="10082"></td>
<td id="LC10082" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">File</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L10083" class="blob-num js-line-number" data-line-number="10083"></td>
<td id="LC10083" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10084" class="blob-num js-line-number" data-line-number="10084"></td>
<td id="LC10084" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> FileInput <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10085" class="blob-num js-line-number" data-line-number="10085"></td>
<td id="LC10085" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L10086" class="blob-num js-line-number" data-line-number="10086"></td>
<td id="LC10086" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10087" class="blob-num js-line-number" data-line-number="10087"></td>
<td id="LC10087" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L10088" class="blob-num js-line-number" data-line-number="10088"></td>
<td id="LC10088" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10089" class="blob-num js-line-number" data-line-number="10089"></td>
<td id="LC10089" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (browseButton) {</td>
</tr>
<tr>
<td id="L10090" class="blob-num js-line-number" data-line-number="10090"></td>
<td id="LC10090" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>tabindex<span class="pl-pds">'</span></span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L10091" class="blob-num js-line-number" data-line-number="10091"></td>
<td id="LC10091" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10092" class="blob-num js-line-number" data-line-number="10092"></td>
<td id="LC10092" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10093" class="blob-num js-line-number" data-line-number="10093"></td>
<td id="LC10093" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10094" class="blob-num js-line-number" data-line-number="10094"></td>
<td id="LC10094" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>Change<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10095" class="blob-num js-line-number" data-line-number="10095"></td>
<td id="LC10095" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> files <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(comp, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getFiles<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10096" class="blob-num js-line-number" data-line-number="10096"></td>
<td id="LC10096" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L10097" class="blob-num js-line-number" data-line-number="10097"></td>
<td id="LC10097" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(files, <span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L10098" class="blob-num js-line-number" data-line-number="10098"></td>
<td id="LC10098" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span>.<span class="pl-c1">push</span>(<span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>, file));</td>
</tr>
<tr>
<td id="L10099" class="blob-num js-line-number" data-line-number="10099"></td>
<td id="LC10099" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10100" class="blob-num js-line-number" data-line-number="10100"></td>
<td id="LC10100" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L10101" class="blob-num js-line-number" data-line-number="10101"></td>
<td id="LC10101" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10102" class="blob-num js-line-number" data-line-number="10102"></td>
<td id="LC10102" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>init<span class="pl-pds">'</span></span>, {</td>
</tr>
<tr>
<td id="L10103" class="blob-num js-line-number" data-line-number="10103"></td>
<td id="LC10103" class="blob-code blob-code-inner js-file-line"> accept<span class="pl-k">:</span> <span class="pl-smi">options</span>.<span class="pl-c1">accept</span>,</td>
</tr>
<tr>
<td id="L10104" class="blob-num js-line-number" data-line-number="10104"></td>
<td id="LC10104" class="blob-code blob-code-inner js-file-line"> multiple<span class="pl-k">:</span> <span class="pl-smi">options</span>.<span class="pl-c1">multiple</span></td>
</tr>
<tr>
<td id="L10105" class="blob-num js-line-number" data-line-number="10105"></td>
<td id="LC10105" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10106" class="blob-num js-line-number" data-line-number="10106"></td>
<td id="LC10106" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10107" class="blob-num js-line-number" data-line-number="10107"></td>
<td id="LC10107" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10108" class="blob-num js-line-number" data-line-number="10108"></td>
<td id="LC10108" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10109" class="blob-num js-line-number" data-line-number="10109"></td>
<td id="LC10109" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10110" class="blob-num js-line-number" data-line-number="10110"></td>
<td id="LC10110" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10111" class="blob-num js-line-number" data-line-number="10111"></td>
<td id="LC10111" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileInput</span> <span class="pl-k">=</span> FileInput);</td>
</tr>
<tr>
<td id="L10112" class="blob-num js-line-number" data-line-number="10112"></td>
<td id="LC10112" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10113" class="blob-num js-line-number" data-line-number="10113"></td>
<td id="LC10113" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10114" class="blob-num js-line-number" data-line-number="10114"></td>
<td id="LC10114" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/file/FileReader.js</span></td>
</tr>
<tr>
<td id="L10115" class="blob-num js-line-number" data-line-number="10115"></td>
<td id="LC10115" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10116" class="blob-num js-line-number" data-line-number="10116"></td>
<td id="LC10116" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10117" class="blob-num js-line-number" data-line-number="10117"></td>
<td id="LC10117" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReader.js</span></td>
</tr>
<tr>
<td id="L10118" class="blob-num js-line-number" data-line-number="10118"></td>
<td id="LC10118" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10119" class="blob-num js-line-number" data-line-number="10119"></td>
<td id="LC10119" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10120" class="blob-num js-line-number" data-line-number="10120"></td>
<td id="LC10120" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10121" class="blob-num js-line-number" data-line-number="10121"></td>
<td id="LC10121" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10122" class="blob-num js-line-number" data-line-number="10122"></td>
<td id="LC10122" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10123" class="blob-num js-line-number" data-line-number="10123"></td>
<td id="LC10123" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10124" class="blob-num js-line-number" data-line-number="10124"></td>
<td id="LC10124" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10125" class="blob-num js-line-number" data-line-number="10125"></td>
<td id="LC10125" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10126" class="blob-num js-line-number" data-line-number="10126"></td>
<td id="LC10126" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10127" class="blob-num js-line-number" data-line-number="10127"></td>
<td id="LC10127" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/file/FileReader</span></td>
</tr>
<tr>
<td id="L10128" class="blob-num js-line-number" data-line-number="10128"></td>
<td id="LC10128" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10129" class="blob-num js-line-number" data-line-number="10129"></td>
<td id="LC10129" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10130" class="blob-num js-line-number" data-line-number="10130"></td>
<td id="LC10130" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/FileReader<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10131" class="blob-num js-line-number" data-line-number="10131"></td>
<td id="LC10131" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10132" class="blob-num js-line-number" data-line-number="10132"></td>
<td id="LC10132" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10133" class="blob-num js-line-number" data-line-number="10133"></td>
<td id="LC10133" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Encode</span>) {</td>
</tr>
<tr>
<td id="L10134" class="blob-num js-line-number" data-line-number="10134"></td>
<td id="LC10134" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10135" class="blob-num js-line-number" data-line-number="10135"></td>
<td id="LC10135" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_formatData</span>(<span class="pl-smi">data</span>, <span class="pl-smi">op</span>) {</td>
</tr>
<tr>
<td id="L10136" class="blob-num js-line-number" data-line-number="10136"></td>
<td id="LC10136" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (op) {</td>
</tr>
<tr>
<td id="L10137" class="blob-num js-line-number" data-line-number="10137"></td>
<td id="LC10137" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsText<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L10138" class="blob-num js-line-number" data-line-number="10138"></td>
<td id="LC10138" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(data, <span class="pl-s"><span class="pl-pds">'</span>utf8<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10139" class="blob-num js-line-number" data-line-number="10139"></td>
<td id="LC10139" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L10140" class="blob-num js-line-number" data-line-number="10140"></td>
<td id="LC10140" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(data);</td>
</tr>
<tr>
<td id="L10141" class="blob-num js-line-number" data-line-number="10141"></td>
<td id="LC10141" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L10142" class="blob-num js-line-number" data-line-number="10142"></td>
<td id="LC10142" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L10143" class="blob-num js-line-number" data-line-number="10143"></td>
<td id="LC10143" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10144" class="blob-num js-line-number" data-line-number="10144"></td>
<td id="LC10144" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10145" class="blob-num js-line-number" data-line-number="10145"></td>
<td id="LC10145" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10146" class="blob-num js-line-number" data-line-number="10146"></td>
<td id="LC10146" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10147" class="blob-num js-line-number" data-line-number="10147"></td>
<td id="LC10147" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">FileReader</span> <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10148" class="blob-num js-line-number" data-line-number="10148"></td>
<td id="LC10148" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">read</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">op</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L10149" class="blob-num js-line-number" data-line-number="10149"></td>
<td id="LC10149" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L10150" class="blob-num js-line-number" data-line-number="10150"></td>
<td id="LC10150" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10151" class="blob-num js-line-number" data-line-number="10151"></td>
<td id="LC10151" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10152" class="blob-num js-line-number" data-line-number="10152"></td>
<td id="LC10152" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10153" class="blob-num js-line-number" data-line-number="10153"></td>
<td id="LC10153" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> special prefix for DataURL read mode</span></td>
</tr>
<tr>
<td id="L10154" class="blob-num js-line-number" data-line-number="10154"></td>
<td id="LC10154" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (op <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L10155" class="blob-num js-line-number" data-line-number="10155"></td>
<td id="LC10155" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">result</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> (<span class="pl-smi">blob</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10156" class="blob-num js-line-number" data-line-number="10156"></td>
<td id="LC10156" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10157" class="blob-num js-line-number" data-line-number="10157"></td>
<td id="LC10157" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10158" class="blob-num js-line-number" data-line-number="10158"></td>
<td id="LC10158" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Progress<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>, <span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L10159" class="blob-num js-line-number" data-line-number="10159"></td>
<td id="LC10159" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data) {</td>
</tr>
<tr>
<td id="L10160" class="blob-num js-line-number" data-line-number="10160"></td>
<td id="LC10160" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">result</span> <span class="pl-k">+=</span> <span class="pl-en">_formatData</span>(data, op);</td>
</tr>
<tr>
<td id="L10161" class="blob-num js-line-number" data-line-number="10161"></td>
<td id="LC10161" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10162" class="blob-num js-line-number" data-line-number="10162"></td>
<td id="LC10162" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L10163" class="blob-num js-line-number" data-line-number="10163"></td>
<td id="LC10163" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10164" class="blob-num js-line-number" data-line-number="10164"></td>
<td id="LC10164" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">comp</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileReader<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>readAsBase64<span class="pl-pds">'</span></span>, <span class="pl-smi">blob</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10165" class="blob-num js-line-number" data-line-number="10165"></td>
<td id="LC10165" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10166" class="blob-num js-line-number" data-line-number="10166"></td>
<td id="LC10166" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10167" class="blob-num js-line-number" data-line-number="10167"></td>
<td id="LC10167" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10168" class="blob-num js-line-number" data-line-number="10168"></td>
<td id="LC10168" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileReader</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>);</td>
</tr>
<tr>
<td id="L10169" class="blob-num js-line-number" data-line-number="10169"></td>
<td id="LC10169" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10170" class="blob-num js-line-number" data-line-number="10170"></td>
<td id="LC10170" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10171" class="blob-num js-line-number" data-line-number="10171"></td>
<td id="LC10171" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/file/FileReaderSync.js</span></td>
</tr>
<tr>
<td id="L10172" class="blob-num js-line-number" data-line-number="10172"></td>
<td id="LC10172" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10173" class="blob-num js-line-number" data-line-number="10173"></td>
<td id="LC10173" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10174" class="blob-num js-line-number" data-line-number="10174"></td>
<td id="LC10174" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReaderSync.js</span></td>
</tr>
<tr>
<td id="L10175" class="blob-num js-line-number" data-line-number="10175"></td>
<td id="LC10175" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10176" class="blob-num js-line-number" data-line-number="10176"></td>
<td id="LC10176" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10177" class="blob-num js-line-number" data-line-number="10177"></td>
<td id="LC10177" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10178" class="blob-num js-line-number" data-line-number="10178"></td>
<td id="LC10178" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10179" class="blob-num js-line-number" data-line-number="10179"></td>
<td id="LC10179" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10180" class="blob-num js-line-number" data-line-number="10180"></td>
<td id="LC10180" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10181" class="blob-num js-line-number" data-line-number="10181"></td>
<td id="LC10181" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10182" class="blob-num js-line-number" data-line-number="10182"></td>
<td id="LC10182" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10183" class="blob-num js-line-number" data-line-number="10183"></td>
<td id="LC10183" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10184" class="blob-num js-line-number" data-line-number="10184"></td>
<td id="LC10184" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/file/FileReaderSync</span></td>
</tr>
<tr>
<td id="L10185" class="blob-num js-line-number" data-line-number="10185"></td>
<td id="LC10185" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10186" class="blob-num js-line-number" data-line-number="10186"></td>
<td id="LC10186" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10187" class="blob-num js-line-number" data-line-number="10187"></td>
<td id="LC10187" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/FileReaderSync<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10188" class="blob-num js-line-number" data-line-number="10188"></td>
<td id="LC10188" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10189" class="blob-num js-line-number" data-line-number="10189"></td>
<td id="LC10189" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10190" class="blob-num js-line-number" data-line-number="10190"></td>
<td id="LC10190" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Encode</span>) {</td>
</tr>
<tr>
<td id="L10191" class="blob-num js-line-number" data-line-number="10191"></td>
<td id="LC10191" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10192" class="blob-num js-line-number" data-line-number="10192"></td>
<td id="LC10192" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">_formatData</span>(<span class="pl-smi">data</span>, <span class="pl-smi">op</span>) {</td>
</tr>
<tr>
<td id="L10193" class="blob-num js-line-number" data-line-number="10193"></td>
<td id="LC10193" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (op) {</td>
</tr>
<tr>
<td id="L10194" class="blob-num js-line-number" data-line-number="10194"></td>
<td id="LC10194" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsText<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L10195" class="blob-num js-line-number" data-line-number="10195"></td>
<td id="LC10195" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(data, <span class="pl-s"><span class="pl-pds">'</span>utf8<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10196" class="blob-num js-line-number" data-line-number="10196"></td>
<td id="LC10196" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsBinaryString<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L10197" class="blob-num js-line-number" data-line-number="10197"></td>
<td id="LC10197" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Encode</span>.<span class="pl-c1">atob</span>(data);</td>
</tr>
<tr>
<td id="L10198" class="blob-num js-line-number" data-line-number="10198"></td>
<td id="LC10198" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L10199" class="blob-num js-line-number" data-line-number="10199"></td>
<td id="LC10199" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> data;</td>
</tr>
<tr>
<td id="L10200" class="blob-num js-line-number" data-line-number="10200"></td>
<td id="LC10200" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10201" class="blob-num js-line-number" data-line-number="10201"></td>
<td id="LC10201" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10202" class="blob-num js-line-number" data-line-number="10202"></td>
<td id="LC10202" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10203" class="blob-num js-line-number" data-line-number="10203"></td>
<td id="LC10203" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10204" class="blob-num js-line-number" data-line-number="10204"></td>
<td id="LC10204" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">FileReaderSync</span> <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10205" class="blob-num js-line-number" data-line-number="10205"></td>
<td id="LC10205" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">read</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">op</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L10206" class="blob-num js-line-number" data-line-number="10206"></td>
<td id="LC10206" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> result, self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10207" class="blob-num js-line-number" data-line-number="10207"></td>
<td id="LC10207" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10208" class="blob-num js-line-number" data-line-number="10208"></td>
<td id="LC10208" class="blob-code blob-code-inner js-file-line"> result <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileReaderSync<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>readAsBase64<span class="pl-pds">'</span></span>, <span class="pl-smi">blob</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10209" class="blob-num js-line-number" data-line-number="10209"></td>
<td id="LC10209" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>result) {</td>
</tr>
<tr>
<td id="L10210" class="blob-num js-line-number" data-line-number="10210"></td>
<td id="LC10210" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>; <span class="pl-c"><span class="pl-c">//</span> or throw ex</span></td>
</tr>
<tr>
<td id="L10211" class="blob-num js-line-number" data-line-number="10211"></td>
<td id="LC10211" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10212" class="blob-num js-line-number" data-line-number="10212"></td>
<td id="LC10212" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10213" class="blob-num js-line-number" data-line-number="10213"></td>
<td id="LC10213" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> special prefix for DataURL read mode</span></td>
</tr>
<tr>
<td id="L10214" class="blob-num js-line-number" data-line-number="10214"></td>
<td id="LC10214" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (op <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>readAsDataURL<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L10215" class="blob-num js-line-number" data-line-number="10215"></td>
<td id="LC10215" class="blob-code blob-code-inner js-file-line"> result <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> (<span class="pl-smi">blob</span>.<span class="pl-c1">type</span> <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span> <span class="pl-k">+</span> result;</td>
</tr>
<tr>
<td id="L10216" class="blob-num js-line-number" data-line-number="10216"></td>
<td id="LC10216" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10217" class="blob-num js-line-number" data-line-number="10217"></td>
<td id="LC10217" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10218" class="blob-num js-line-number" data-line-number="10218"></td>
<td id="LC10218" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-en">_formatData</span>(result, op, <span class="pl-smi">blob</span>.<span class="pl-c1">type</span>);</td>
</tr>
<tr>
<td id="L10219" class="blob-num js-line-number" data-line-number="10219"></td>
<td id="LC10219" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10220" class="blob-num js-line-number" data-line-number="10220"></td>
<td id="LC10220" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10221" class="blob-num js-line-number" data-line-number="10221"></td>
<td id="LC10221" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10222" class="blob-num js-line-number" data-line-number="10222"></td>
<td id="LC10222" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileReaderSync</span> <span class="pl-k">=</span> <span class="pl-c1">FileReaderSync</span>);</td>
</tr>
<tr>
<td id="L10223" class="blob-num js-line-number" data-line-number="10223"></td>
<td id="LC10223" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10224" class="blob-num js-line-number" data-line-number="10224"></td>
<td id="LC10224" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10225" class="blob-num js-line-number" data-line-number="10225"></td>
<td id="LC10225" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/runtime/Transporter.js</span></td>
</tr>
<tr>
<td id="L10226" class="blob-num js-line-number" data-line-number="10226"></td>
<td id="LC10226" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10227" class="blob-num js-line-number" data-line-number="10227"></td>
<td id="LC10227" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10228" class="blob-num js-line-number" data-line-number="10228"></td>
<td id="LC10228" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Transporter.js</span></td>
</tr>
<tr>
<td id="L10229" class="blob-num js-line-number" data-line-number="10229"></td>
<td id="LC10229" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10230" class="blob-num js-line-number" data-line-number="10230"></td>
<td id="LC10230" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10231" class="blob-num js-line-number" data-line-number="10231"></td>
<td id="LC10231" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10232" class="blob-num js-line-number" data-line-number="10232"></td>
<td id="LC10232" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10233" class="blob-num js-line-number" data-line-number="10233"></td>
<td id="LC10233" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10234" class="blob-num js-line-number" data-line-number="10234"></td>
<td id="LC10234" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10235" class="blob-num js-line-number" data-line-number="10235"></td>
<td id="LC10235" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10236" class="blob-num js-line-number" data-line-number="10236"></td>
<td id="LC10236" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10237" class="blob-num js-line-number" data-line-number="10237"></td>
<td id="LC10237" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10238" class="blob-num js-line-number" data-line-number="10238"></td>
<td id="LC10238" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/runtime/Transporter</span></td>
</tr>
<tr>
<td id="L10239" class="blob-num js-line-number" data-line-number="10239"></td>
<td id="LC10239" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10240" class="blob-num js-line-number" data-line-number="10240"></td>
<td id="LC10240" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10241" class="blob-num js-line-number" data-line-number="10241"></td>
<td id="LC10241" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/runtime/Transporter<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10242" class="blob-num js-line-number" data-line-number="10242"></td>
<td id="LC10242" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10243" class="blob-num js-line-number" data-line-number="10243"></td>
<td id="LC10243" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10244" class="blob-num js-line-number" data-line-number="10244"></td>
<td id="LC10244" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L10245" class="blob-num js-line-number" data-line-number="10245"></td>
<td id="LC10245" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10246" class="blob-num js-line-number" data-line-number="10246"></td>
<td id="LC10246" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> Transporter <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10247" class="blob-num js-line-number" data-line-number="10247"></td>
<td id="LC10247" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>) {</td>
</tr>
<tr>
<td id="L10248" class="blob-num js-line-number" data-line-number="10248"></td>
<td id="LC10248" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L10249" class="blob-num js-line-number" data-line-number="10249"></td>
<td id="LC10249" class="blob-code blob-code-inner js-file-line"> , blob <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Transporter<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAsBlob<span class="pl-pds">'</span></span>, type)</td>
</tr>
<tr>
<td id="L10250" class="blob-num js-line-number" data-line-number="10250"></td>
<td id="LC10250" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L10251" class="blob-num js-line-number" data-line-number="10251"></td>
<td id="LC10251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (blob) {</td>
</tr>
<tr>
<td id="L10252" class="blob-num js-line-number" data-line-number="10252"></td>
<td id="LC10252" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>, blob);</td>
</tr>
<tr>
<td id="L10253" class="blob-num js-line-number" data-line-number="10253"></td>
<td id="LC10253" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10254" class="blob-num js-line-number" data-line-number="10254"></td>
<td id="LC10254" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10255" class="blob-num js-line-number" data-line-number="10255"></td>
<td id="LC10255" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10256" class="blob-num js-line-number" data-line-number="10256"></td>
<td id="LC10256" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10257" class="blob-num js-line-number" data-line-number="10257"></td>
<td id="LC10257" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10258" class="blob-num js-line-number" data-line-number="10258"></td>
<td id="LC10258" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Transporter</span> <span class="pl-k">=</span> Transporter);</td>
</tr>
<tr>
<td id="L10259" class="blob-num js-line-number" data-line-number="10259"></td>
<td id="LC10259" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10260" class="blob-num js-line-number" data-line-number="10260"></td>
<td id="LC10260" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10261" class="blob-num js-line-number" data-line-number="10261"></td>
<td id="LC10261" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/xhr/XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L10262" class="blob-num js-line-number" data-line-number="10262"></td>
<td id="LC10262" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10263" class="blob-num js-line-number" data-line-number="10263"></td>
<td id="LC10263" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10264" class="blob-num js-line-number" data-line-number="10264"></td>
<td id="LC10264" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L10265" class="blob-num js-line-number" data-line-number="10265"></td>
<td id="LC10265" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10266" class="blob-num js-line-number" data-line-number="10266"></td>
<td id="LC10266" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10267" class="blob-num js-line-number" data-line-number="10267"></td>
<td id="LC10267" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10268" class="blob-num js-line-number" data-line-number="10268"></td>
<td id="LC10268" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10269" class="blob-num js-line-number" data-line-number="10269"></td>
<td id="LC10269" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10270" class="blob-num js-line-number" data-line-number="10270"></td>
<td id="LC10270" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10271" class="blob-num js-line-number" data-line-number="10271"></td>
<td id="LC10271" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10272" class="blob-num js-line-number" data-line-number="10272"></td>
<td id="LC10272" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10273" class="blob-num js-line-number" data-line-number="10273"></td>
<td id="LC10273" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10274" class="blob-num js-line-number" data-line-number="10274"></td>
<td id="LC10274" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/xhr/XMLHttpRequest</span></td>
</tr>
<tr>
<td id="L10275" class="blob-num js-line-number" data-line-number="10275"></td>
<td id="LC10275" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10276" class="blob-num js-line-number" data-line-number="10276"></td>
<td id="LC10276" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10277" class="blob-num js-line-number" data-line-number="10277"></td>
<td id="LC10277" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10278" class="blob-num js-line-number" data-line-number="10278"></td>
<td id="LC10278" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10279" class="blob-num js-line-number" data-line-number="10279"></td>
<td id="LC10279" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10280" class="blob-num js-line-number" data-line-number="10280"></td>
<td id="LC10280" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10281" class="blob-num js-line-number" data-line-number="10281"></td>
<td id="LC10281" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10282" class="blob-num js-line-number" data-line-number="10282"></td>
<td id="LC10282" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileReaderSync<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10283" class="blob-num js-line-number" data-line-number="10283"></td>
<td id="LC10283" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/FileReaderSync<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10284" class="blob-num js-line-number" data-line-number="10284"></td>
<td id="LC10284" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/FormData<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10285" class="blob-num js-line-number" data-line-number="10285"></td>
<td id="LC10285" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Transporter<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10286" class="blob-num js-line-number" data-line-number="10286"></td>
<td id="LC10286" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/runtime/Transporter<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10287" class="blob-num js-line-number" data-line-number="10287"></td>
<td id="LC10287" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">File</span>, <span class="pl-c1">FileReaderSync</span>, <span class="pl-smi">FileReaderSyncFlash</span>, <span class="pl-c1">FormData</span>, <span class="pl-smi">Transporter</span>, <span class="pl-smi">TransporterFlash</span>) {</td>
</tr>
<tr>
<td id="L10288" class="blob-num js-line-number" data-line-number="10288"></td>
<td id="LC10288" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10289" class="blob-num js-line-number" data-line-number="10289"></td>
<td id="LC10289" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">XMLHttpRequest</span> <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10290" class="blob-num js-line-number" data-line-number="10290"></td>
<td id="LC10290" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10291" class="blob-num js-line-number" data-line-number="10291"></td>
<td id="LC10291" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">meta</span>, <span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L10292" class="blob-num js-line-number" data-line-number="10292"></td>
<td id="LC10292" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">this</span>, self <span class="pl-k">=</span> <span class="pl-smi">target</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10293" class="blob-num js-line-number" data-line-number="10293"></td>
<td id="LC10293" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10294" class="blob-num js-line-number" data-line-number="10294"></td>
<td id="LC10294" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">send</span>() {</td>
</tr>
<tr>
<td id="L10295" class="blob-num js-line-number" data-line-number="10295"></td>
<td id="LC10295" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">meta</span>.<span class="pl-smi">transport</span> <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">mode</span>;</td>
</tr>
<tr>
<td id="L10296" class="blob-num js-line-number" data-line-number="10296"></td>
<td id="LC10296" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(target, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>send<span class="pl-pds">'</span></span>, meta, data);</td>
</tr>
<tr>
<td id="L10297" class="blob-num js-line-number" data-line-number="10297"></td>
<td id="LC10297" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10298" class="blob-num js-line-number" data-line-number="10298"></td>
<td id="LC10298" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10299" class="blob-num js-line-number" data-line-number="10299"></td>
<td id="LC10299" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10300" class="blob-num js-line-number" data-line-number="10300"></td>
<td id="LC10300" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">appendBlob</span>(<span class="pl-smi">name</span>, <span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L10301" class="blob-num js-line-number" data-line-number="10301"></td>
<td id="LC10301" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(target, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>appendBlob<span class="pl-pds">'</span></span>, name, <span class="pl-smi">blob</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10302" class="blob-num js-line-number" data-line-number="10302"></td>
<td id="LC10302" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10303" class="blob-num js-line-number" data-line-number="10303"></td>
<td id="LC10303" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span>();</td>
</tr>
<tr>
<td id="L10304" class="blob-num js-line-number" data-line-number="10304"></td>
<td id="LC10304" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10305" class="blob-num js-line-number" data-line-number="10305"></td>
<td id="LC10305" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10306" class="blob-num js-line-number" data-line-number="10306"></td>
<td id="LC10306" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10307" class="blob-num js-line-number" data-line-number="10307"></td>
<td id="LC10307" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">attachBlob</span>(<span class="pl-smi">blob</span>, <span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L10308" class="blob-num js-line-number" data-line-number="10308"></td>
<td id="LC10308" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> tr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Transporter</span>();</td>
</tr>
<tr>
<td id="L10309" class="blob-num js-line-number" data-line-number="10309"></td>
<td id="LC10309" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10310" class="blob-num js-line-number" data-line-number="10310"></td>
<td id="LC10310" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">tr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingComplete<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10311" class="blob-num js-line-number" data-line-number="10311"></td>
<td id="LC10311" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>(<span class="pl-c1">this</span>.<span class="pl-smi">result</span>);</td>
</tr>
<tr>
<td id="L10312" class="blob-num js-line-number" data-line-number="10312"></td>
<td id="LC10312" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10313" class="blob-num js-line-number" data-line-number="10313"></td>
<td id="LC10313" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10314" class="blob-num js-line-number" data-line-number="10314"></td>
<td id="LC10314" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">tr</span>.<span class="pl-en">transport</span>(<span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>(), <span class="pl-smi">blob</span>.<span class="pl-c1">type</span>, {</td>
</tr>
<tr>
<td id="L10315" class="blob-num js-line-number" data-line-number="10315"></td>
<td id="LC10315" class="blob-code blob-code-inner js-file-line"> ruid<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-smi">uid</span></td>
</tr>
<tr>
<td id="L10316" class="blob-num js-line-number" data-line-number="10316"></td>
<td id="LC10316" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10317" class="blob-num js-line-number" data-line-number="10317"></td>
<td id="LC10317" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10318" class="blob-num js-line-number" data-line-number="10318"></td>
<td id="LC10318" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10319" class="blob-num js-line-number" data-line-number="10319"></td>
<td id="LC10319" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> copy over the headers if any</span></td>
</tr>
<tr>
<td id="L10320" class="blob-num js-line-number" data-line-number="10320"></td>
<td id="LC10320" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">isEmptyObj</span>(<span class="pl-smi">meta</span>.<span class="pl-c1">headers</span>)) {</td>
</tr>
<tr>
<td id="L10321" class="blob-num js-line-number" data-line-number="10321"></td>
<td id="LC10321" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(<span class="pl-smi">meta</span>.<span class="pl-c1">headers</span>, <span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">header</span>) {</td>
</tr>
<tr>
<td id="L10322" class="blob-num js-line-number" data-line-number="10322"></td>
<td id="LC10322" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(target, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>setRequestHeader<span class="pl-pds">'</span></span>, header, <span class="pl-smi">value</span>.<span class="pl-c1">toString</span>()); <span class="pl-c"><span class="pl-c">//</span> Silverlight doesn't accept integers into the arguments of type object</span></td>
</tr>
<tr>
<td id="L10323" class="blob-num js-line-number" data-line-number="10323"></td>
<td id="LC10323" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10324" class="blob-num js-line-number" data-line-number="10324"></td>
<td id="LC10324" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10325" class="blob-num js-line-number" data-line-number="10325"></td>
<td id="LC10325" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10326" class="blob-num js-line-number" data-line-number="10326"></td>
<td id="LC10326" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> transfer over multipart params and blob itself</span></td>
</tr>
<tr>
<td id="L10327" class="blob-num js-line-number" data-line-number="10327"></td>
<td id="LC10327" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span>) {</td>
</tr>
<tr>
<td id="L10328" class="blob-num js-line-number" data-line-number="10328"></td>
<td id="LC10328" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> blobField;</td>
</tr>
<tr>
<td id="L10329" class="blob-num js-line-number" data-line-number="10329"></td>
<td id="LC10329" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">data</span>.<span class="pl-en">each</span>(<span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L10330" class="blob-num js-line-number" data-line-number="10330"></td>
<td id="LC10330" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L10331" class="blob-num js-line-number" data-line-number="10331"></td>
<td id="LC10331" class="blob-code blob-code-inner js-file-line"> blobField <span class="pl-k">=</span> name;</td>
</tr>
<tr>
<td id="L10332" class="blob-num js-line-number" data-line-number="10332"></td>
<td id="LC10332" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10333" class="blob-num js-line-number" data-line-number="10333"></td>
<td id="LC10333" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(target, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>append<span class="pl-pds">'</span></span>, name, value);</td>
</tr>
<tr>
<td id="L10334" class="blob-num js-line-number" data-line-number="10334"></td>
<td id="LC10334" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10335" class="blob-num js-line-number" data-line-number="10335"></td>
<td id="LC10335" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10336" class="blob-num js-line-number" data-line-number="10336"></td>
<td id="LC10336" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10337" class="blob-num js-line-number" data-line-number="10337"></td>
<td id="LC10337" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">data</span>.<span class="pl-en">hasBlob</span>()) {</td>
</tr>
<tr>
<td id="L10338" class="blob-num js-line-number" data-line-number="10338"></td>
<td id="LC10338" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10339" class="blob-num js-line-number" data-line-number="10339"></td>
<td id="LC10339" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span>();</td>
</tr>
<tr>
<td id="L10340" class="blob-num js-line-number" data-line-number="10340"></td>
<td id="LC10340" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10341" class="blob-num js-line-number" data-line-number="10341"></td>
<td id="LC10341" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> blob <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">getBlob</span>();</td>
</tr>
<tr>
<td id="L10342" class="blob-num js-line-number" data-line-number="10342"></td>
<td id="LC10342" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L10343" class="blob-num js-line-number" data-line-number="10343"></td>
<td id="LC10343" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">attachBlob</span>(blob, <span class="pl-k">function</span>(<span class="pl-smi">attachedBlob</span>) {</td>
</tr>
<tr>
<td id="L10344" class="blob-num js-line-number" data-line-number="10344"></td>
<td id="LC10344" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">blob</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L10345" class="blob-num js-line-number" data-line-number="10345"></td>
<td id="LC10345" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">appendBlob</span>(blobField, attachedBlob); </td>
</tr>
<tr>
<td id="L10346" class="blob-num js-line-number" data-line-number="10346"></td>
<td id="LC10346" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10347" class="blob-num js-line-number" data-line-number="10347"></td>
<td id="LC10347" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10348" class="blob-num js-line-number" data-line-number="10348"></td>
<td id="LC10348" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">appendBlob</span>(blobField, blob);</td>
</tr>
<tr>
<td id="L10349" class="blob-num js-line-number" data-line-number="10349"></td>
<td id="LC10349" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10350" class="blob-num js-line-number" data-line-number="10350"></td>
<td id="LC10350" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10351" class="blob-num js-line-number" data-line-number="10351"></td>
<td id="LC10351" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L10352" class="blob-num js-line-number" data-line-number="10352"></td>
<td id="LC10352" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">data</span>.<span class="pl-en">isDetached</span>()) {</td>
</tr>
<tr>
<td id="L10353" class="blob-num js-line-number" data-line-number="10353"></td>
<td id="LC10353" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">attachBlob</span>(data, <span class="pl-k">function</span>(<span class="pl-smi">attachedBlob</span>) {</td>
</tr>
<tr>
<td id="L10354" class="blob-num js-line-number" data-line-number="10354"></td>
<td id="LC10354" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">data</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L10355" class="blob-num js-line-number" data-line-number="10355"></td>
<td id="LC10355" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">attachedBlob</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L10356" class="blob-num js-line-number" data-line-number="10356"></td>
<td id="LC10356" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span>();</td>
</tr>
<tr>
<td id="L10357" class="blob-num js-line-number" data-line-number="10357"></td>
<td id="LC10357" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10358" class="blob-num js-line-number" data-line-number="10358"></td>
<td id="LC10358" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10359" class="blob-num js-line-number" data-line-number="10359"></td>
<td id="LC10359" class="blob-code blob-code-inner js-file-line"> data <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L10360" class="blob-num js-line-number" data-line-number="10360"></td>
<td id="LC10360" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span>();</td>
</tr>
<tr>
<td id="L10361" class="blob-num js-line-number" data-line-number="10361"></td>
<td id="LC10361" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10362" class="blob-num js-line-number" data-line-number="10362"></td>
<td id="LC10362" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10363" class="blob-num js-line-number" data-line-number="10363"></td>
<td id="LC10363" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span>();</td>
</tr>
<tr>
<td id="L10364" class="blob-num js-line-number" data-line-number="10364"></td>
<td id="LC10364" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10365" class="blob-num js-line-number" data-line-number="10365"></td>
<td id="LC10365" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10366" class="blob-num js-line-number" data-line-number="10366"></td>
<td id="LC10366" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10367" class="blob-num js-line-number" data-line-number="10367"></td>
<td id="LC10367" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getResponse</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L10368" class="blob-num js-line-number" data-line-number="10368"></td>
<td id="LC10368" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> frs, blob, self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10369" class="blob-num js-line-number" data-line-number="10369"></td>
<td id="LC10369" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10370" class="blob-num js-line-number" data-line-number="10370"></td>
<td id="LC10370" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getResponseAsBlob<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10371" class="blob-num js-line-number" data-line-number="10371"></td>
<td id="LC10371" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10372" class="blob-num js-line-number" data-line-number="10372"></td>
<td id="LC10372" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (blob) {</td>
</tr>
<tr>
<td id="L10373" class="blob-num js-line-number" data-line-number="10373"></td>
<td id="LC10373" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>, blob);</td>
</tr>
<tr>
<td id="L10374" class="blob-num js-line-number" data-line-number="10374"></td>
<td id="LC10374" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10375" class="blob-num js-line-number" data-line-number="10375"></td>
<td id="LC10375" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>blob<span class="pl-pds">'</span></span> <span class="pl-k">===</span> responseType) {</td>
</tr>
<tr>
<td id="L10376" class="blob-num js-line-number" data-line-number="10376"></td>
<td id="LC10376" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> blob;</td>
</tr>
<tr>
<td id="L10377" class="blob-num js-line-number" data-line-number="10377"></td>
<td id="LC10377" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10378" class="blob-num js-line-number" data-line-number="10378"></td>
<td id="LC10378" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10379" class="blob-num js-line-number" data-line-number="10379"></td>
<td id="LC10379" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> { </td>
</tr>
<tr>
<td id="L10380" class="blob-num js-line-number" data-line-number="10380"></td>
<td id="LC10380" class="blob-code blob-code-inner js-file-line"> frs <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">FileReaderSync</span>();</td>
</tr>
<tr>
<td id="L10381" class="blob-num js-line-number" data-line-number="10381"></td>
<td id="LC10381" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10382" class="blob-num js-line-number" data-line-number="10382"></td>
<td id="LC10382" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(responseType, [<span class="pl-s"><span class="pl-pds">"</span><span class="pl-pds">"</span></span>, <span class="pl-s"><span class="pl-pds">"</span>text<span class="pl-pds">"</span></span>])) {</td>
</tr>
<tr>
<td id="L10383" class="blob-num js-line-number" data-line-number="10383"></td>
<td id="LC10383" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">frs</span>.<span class="pl-en">readAsText</span>(blob);</td>
</tr>
<tr>
<td id="L10384" class="blob-num js-line-number" data-line-number="10384"></td>
<td id="LC10384" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span> <span class="pl-k">===</span> responseType <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span>) {</td>
</tr>
<tr>
<td id="L10385" class="blob-num js-line-number" data-line-number="10385"></td>
<td id="LC10385" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">JSON</span>.<span class="pl-c1">parse</span>(<span class="pl-smi">frs</span>.<span class="pl-en">readAsText</span>(blob));</td>
</tr>
<tr>
<td id="L10386" class="blob-num js-line-number" data-line-number="10386"></td>
<td id="LC10386" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10387" class="blob-num js-line-number" data-line-number="10387"></td>
<td id="LC10387" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">finally</span> {</td>
</tr>
<tr>
<td id="L10388" class="blob-num js-line-number" data-line-number="10388"></td>
<td id="LC10388" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">blob</span>.<span class="pl-en">destroy</span>();</td>
</tr>
<tr>
<td id="L10389" class="blob-num js-line-number" data-line-number="10389"></td>
<td id="LC10389" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10390" class="blob-num js-line-number" data-line-number="10390"></td>
<td id="LC10390" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10391" class="blob-num js-line-number" data-line-number="10391"></td>
<td id="LC10391" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10392" class="blob-num js-line-number" data-line-number="10392"></td>
<td id="LC10392" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10393" class="blob-num js-line-number" data-line-number="10393"></td>
<td id="LC10393" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10394" class="blob-num js-line-number" data-line-number="10394"></td>
<td id="LC10394" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">upload_complete_flag</span>) {</td>
</tr>
<tr>
<td id="L10395" class="blob-num js-line-number" data-line-number="10395"></td>
<td id="LC10395" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10396" class="blob-num js-line-number" data-line-number="10396"></td>
<td id="LC10396" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10397" class="blob-num js-line-number" data-line-number="10397"></td>
<td id="LC10397" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>XMLHttpRequest<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10398" class="blob-num js-line-number" data-line-number="10398"></td>
<td id="LC10398" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10399" class="blob-num js-line-number" data-line-number="10399"></td>
<td id="LC10399" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>readystatechange<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10400" class="blob-num js-line-number" data-line-number="10400"></td>
<td id="LC10400" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this.dispatchEvent('progress');</span></td>
</tr>
<tr>
<td id="L10401" class="blob-num js-line-number" data-line-number="10401"></td>
<td id="LC10401" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10402" class="blob-num js-line-number" data-line-number="10402"></td>
<td id="LC10402" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10403" class="blob-num js-line-number" data-line-number="10403"></td>
<td id="LC10403" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>if (!upload_complete_flag) {</span></td>
</tr>
<tr>
<td id="L10404" class="blob-num js-line-number" data-line-number="10404"></td>
<td id="LC10404" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> this.dispatchEvent('uploadprogress');</span></td>
</tr>
<tr>
<td id="L10405" class="blob-num js-line-number" data-line-number="10405"></td>
<td id="LC10405" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span>}</span></td>
</tr>
<tr>
<td id="L10406" class="blob-num js-line-number" data-line-number="10406"></td>
<td id="LC10406" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10407" class="blob-num js-line-number" data-line-number="10407"></td>
<td id="LC10407" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10408" class="blob-num js-line-number" data-line-number="10408"></td>
<td id="LC10408" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10409" class="blob-num js-line-number" data-line-number="10409"></td>
<td id="LC10409" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">=</span> <span class="pl-c1">XMLHttpRequest</span>);</td>
</tr>
<tr>
<td id="L10410" class="blob-num js-line-number" data-line-number="10410"></td>
<td id="LC10410" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10411" class="blob-num js-line-number" data-line-number="10411"></td>
<td id="LC10411" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10412" class="blob-num js-line-number" data-line-number="10412"></td>
<td id="LC10412" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/flash/image/Image.js</span></td>
</tr>
<tr>
<td id="L10413" class="blob-num js-line-number" data-line-number="10413"></td>
<td id="LC10413" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10414" class="blob-num js-line-number" data-line-number="10414"></td>
<td id="LC10414" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10415" class="blob-num js-line-number" data-line-number="10415"></td>
<td id="LC10415" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Image.js</span></td>
</tr>
<tr>
<td id="L10416" class="blob-num js-line-number" data-line-number="10416"></td>
<td id="LC10416" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10417" class="blob-num js-line-number" data-line-number="10417"></td>
<td id="LC10417" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10418" class="blob-num js-line-number" data-line-number="10418"></td>
<td id="LC10418" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10419" class="blob-num js-line-number" data-line-number="10419"></td>
<td id="LC10419" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10420" class="blob-num js-line-number" data-line-number="10420"></td>
<td id="LC10420" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10421" class="blob-num js-line-number" data-line-number="10421"></td>
<td id="LC10421" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10422" class="blob-num js-line-number" data-line-number="10422"></td>
<td id="LC10422" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10423" class="blob-num js-line-number" data-line-number="10423"></td>
<td id="LC10423" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10424" class="blob-num js-line-number" data-line-number="10424"></td>
<td id="LC10424" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10425" class="blob-num js-line-number" data-line-number="10425"></td>
<td id="LC10425" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/flash/image/Image</span></td>
</tr>
<tr>
<td id="L10426" class="blob-num js-line-number" data-line-number="10426"></td>
<td id="LC10426" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10427" class="blob-num js-line-number" data-line-number="10427"></td>
<td id="LC10427" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10428" class="blob-num js-line-number" data-line-number="10428"></td>
<td id="LC10428" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/image/Image<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10429" class="blob-num js-line-number" data-line-number="10429"></td>
<td id="LC10429" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10430" class="blob-num js-line-number" data-line-number="10430"></td>
<td id="LC10430" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10431" class="blob-num js-line-number" data-line-number="10431"></td>
<td id="LC10431" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Transporter<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10432" class="blob-num js-line-number" data-line-number="10432"></td>
<td id="LC10432" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10433" class="blob-num js-line-number" data-line-number="10433"></td>
<td id="LC10433" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileReaderSync<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10434" class="blob-num js-line-number" data-line-number="10434"></td>
<td id="LC10434" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Transporter</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">FileReaderSync</span>) {</td>
</tr>
<tr>
<td id="L10435" class="blob-num js-line-number" data-line-number="10435"></td>
<td id="LC10435" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10436" class="blob-num js-line-number" data-line-number="10436"></td>
<td id="LC10436" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> Image <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10437" class="blob-num js-line-number" data-line-number="10437"></td>
<td id="LC10437" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadFromBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">blob</span>) {</td>
</tr>
<tr>
<td id="L10438" class="blob-num js-line-number" data-line-number="10438"></td>
<td id="LC10438" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, self <span class="pl-k">=</span> <span class="pl-smi">comp</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10439" class="blob-num js-line-number" data-line-number="10439"></td>
<td id="LC10439" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10440" class="blob-num js-line-number" data-line-number="10440"></td>
<td id="LC10440" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">exec</span>(<span class="pl-smi">srcBlob</span>) {</td>
</tr>
<tr>
<td id="L10441" class="blob-num js-line-number" data-line-number="10441"></td>
<td id="LC10441" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(comp, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>loadFromBlob<span class="pl-pds">'</span></span>, <span class="pl-smi">srcBlob</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10442" class="blob-num js-line-number" data-line-number="10442"></td>
<td id="LC10442" class="blob-code blob-code-inner js-file-line"> comp <span class="pl-k">=</span> self <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10443" class="blob-num js-line-number" data-line-number="10443"></td>
<td id="LC10443" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10444" class="blob-num js-line-number" data-line-number="10444"></td>
<td id="LC10444" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10445" class="blob-num js-line-number" data-line-number="10445"></td>
<td id="LC10445" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">blob</span>.<span class="pl-en">isDetached</span>()) { <span class="pl-c"><span class="pl-c">//</span> binary string</span></td>
</tr>
<tr>
<td id="L10446" class="blob-num js-line-number" data-line-number="10446"></td>
<td id="LC10446" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> tr <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Transporter</span>();</td>
</tr>
<tr>
<td id="L10447" class="blob-num js-line-number" data-line-number="10447"></td>
<td id="LC10447" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">tr</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>TransportingComplete<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10448" class="blob-num js-line-number" data-line-number="10448"></td>
<td id="LC10448" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span>(<span class="pl-smi">tr</span>.<span class="pl-smi">result</span>.<span class="pl-en">getSource</span>());</td>
</tr>
<tr>
<td id="L10449" class="blob-num js-line-number" data-line-number="10449"></td>
<td id="LC10449" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10450" class="blob-num js-line-number" data-line-number="10450"></td>
<td id="LC10450" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">tr</span>.<span class="pl-en">transport</span>(<span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>(), <span class="pl-smi">blob</span>.<span class="pl-c1">type</span>, { ruid<span class="pl-k">:</span> <span class="pl-smi">self</span>.<span class="pl-smi">uid</span> });</td>
</tr>
<tr>
<td id="L10451" class="blob-num js-line-number" data-line-number="10451"></td>
<td id="LC10451" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10452" class="blob-num js-line-number" data-line-number="10452"></td>
<td id="LC10452" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">exec</span>(<span class="pl-smi">blob</span>.<span class="pl-en">getSource</span>());</td>
</tr>
<tr>
<td id="L10453" class="blob-num js-line-number" data-line-number="10453"></td>
<td id="LC10453" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10454" class="blob-num js-line-number" data-line-number="10454"></td>
<td id="LC10454" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10455" class="blob-num js-line-number" data-line-number="10455"></td>
<td id="LC10455" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10456" class="blob-num js-line-number" data-line-number="10456"></td>
<td id="LC10456" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">loadFromImage</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">img</span>) {</td>
</tr>
<tr>
<td id="L10457" class="blob-num js-line-number" data-line-number="10457"></td>
<td id="LC10457" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10458" class="blob-num js-line-number" data-line-number="10458"></td>
<td id="LC10458" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>loadFromImage<span class="pl-pds">'</span></span>, <span class="pl-smi">img</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10459" class="blob-num js-line-number" data-line-number="10459"></td>
<td id="LC10459" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10460" class="blob-num js-line-number" data-line-number="10460"></td>
<td id="LC10460" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10461" class="blob-num js-line-number" data-line-number="10461"></td>
<td id="LC10461" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getInfo</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10462" class="blob-num js-line-number" data-line-number="10462"></td>
<td id="LC10462" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L10463" class="blob-num js-line-number" data-line-number="10463"></td>
<td id="LC10463" class="blob-code blob-code-inner js-file-line"> , info <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getInfo<span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L10464" class="blob-num js-line-number" data-line-number="10464"></td>
<td id="LC10464" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L10465" class="blob-num js-line-number" data-line-number="10465"></td>
<td id="LC10465" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10466" class="blob-num js-line-number" data-line-number="10466"></td>
<td id="LC10466" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">info</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span> <span class="pl-k">&&</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">&&</span> <span class="pl-k">!</span>(<span class="pl-smi">self</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>)) {</td>
</tr>
<tr>
<td id="L10467" class="blob-num js-line-number" data-line-number="10467"></td>
<td id="LC10467" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>, <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span>);</td>
</tr>
<tr>
<td id="L10468" class="blob-num js-line-number" data-line-number="10468"></td>
<td id="LC10468" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10469" class="blob-num js-line-number" data-line-number="10469"></td>
<td id="LC10469" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> info;</td>
</tr>
<tr>
<td id="L10470" class="blob-num js-line-number" data-line-number="10470"></td>
<td id="LC10470" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10471" class="blob-num js-line-number" data-line-number="10471"></td>
<td id="LC10471" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10472" class="blob-num js-line-number" data-line-number="10472"></td>
<td id="LC10472" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsBlob</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">type</span>, <span class="pl-smi">quality</span>) {</td>
</tr>
<tr>
<td id="L10473" class="blob-num js-line-number" data-line-number="10473"></td>
<td id="LC10473" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L10474" class="blob-num js-line-number" data-line-number="10474"></td>
<td id="LC10474" class="blob-code blob-code-inner js-file-line"> , blob <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getAsBlob<span class="pl-pds">'</span></span>, type, quality)</td>
</tr>
<tr>
<td id="L10475" class="blob-num js-line-number" data-line-number="10475"></td>
<td id="LC10475" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L10476" class="blob-num js-line-number" data-line-number="10476"></td>
<td id="LC10476" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (blob) {</td>
</tr>
<tr>
<td id="L10477" class="blob-num js-line-number" data-line-number="10477"></td>
<td id="LC10477" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>, blob);</td>
</tr>
<tr>
<td id="L10478" class="blob-num js-line-number" data-line-number="10478"></td>
<td id="LC10478" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10479" class="blob-num js-line-number" data-line-number="10479"></td>
<td id="LC10479" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10480" class="blob-num js-line-number" data-line-number="10480"></td>
<td id="LC10480" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10481" class="blob-num js-line-number" data-line-number="10481"></td>
<td id="LC10481" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10482" class="blob-num js-line-number" data-line-number="10482"></td>
<td id="LC10482" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getAsDataURL</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10483" class="blob-num js-line-number" data-line-number="10483"></td>
<td id="LC10483" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L10484" class="blob-num js-line-number" data-line-number="10484"></td>
<td id="LC10484" class="blob-code blob-code-inner js-file-line"> , blob <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">Image</span>.<span class="pl-smi">getAsBlob</span>.<span class="pl-c1">apply</span>(<span class="pl-c1">this</span>, <span class="pl-c1">arguments</span>)</td>
</tr>
<tr>
<td id="L10485" class="blob-num js-line-number" data-line-number="10485"></td>
<td id="LC10485" class="blob-code blob-code-inner js-file-line"> , frs</td>
</tr>
<tr>
<td id="L10486" class="blob-num js-line-number" data-line-number="10486"></td>
<td id="LC10486" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L10487" class="blob-num js-line-number" data-line-number="10487"></td>
<td id="LC10487" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>blob) {</td>
</tr>
<tr>
<td id="L10488" class="blob-num js-line-number" data-line-number="10488"></td>
<td id="LC10488" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10489" class="blob-num js-line-number" data-line-number="10489"></td>
<td id="LC10489" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10490" class="blob-num js-line-number" data-line-number="10490"></td>
<td id="LC10490" class="blob-code blob-code-inner js-file-line"> frs <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">FileReaderSync</span>();</td>
</tr>
<tr>
<td id="L10491" class="blob-num js-line-number" data-line-number="10491"></td>
<td id="LC10491" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">frs</span>.<span class="pl-en">readAsDataURL</span>(blob);</td>
</tr>
<tr>
<td id="L10492" class="blob-num js-line-number" data-line-number="10492"></td>
<td id="LC10492" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10493" class="blob-num js-line-number" data-line-number="10493"></td>
<td id="LC10493" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10494" class="blob-num js-line-number" data-line-number="10494"></td>
<td id="LC10494" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10495" class="blob-num js-line-number" data-line-number="10495"></td>
<td id="LC10495" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Image</span> <span class="pl-k">=</span> Image);</td>
</tr>
<tr>
<td id="L10496" class="blob-num js-line-number" data-line-number="10496"></td>
<td id="LC10496" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10497" class="blob-num js-line-number" data-line-number="10497"></td>
<td id="LC10497" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10498" class="blob-num js-line-number" data-line-number="10498"></td>
<td id="LC10498" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/Runtime.js</span></td>
</tr>
<tr>
<td id="L10499" class="blob-num js-line-number" data-line-number="10499"></td>
<td id="LC10499" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10500" class="blob-num js-line-number" data-line-number="10500"></td>
<td id="LC10500" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10501" class="blob-num js-line-number" data-line-number="10501"></td>
<td id="LC10501" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * RunTime.js</span></td>
</tr>
<tr>
<td id="L10502" class="blob-num js-line-number" data-line-number="10502"></td>
<td id="LC10502" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10503" class="blob-num js-line-number" data-line-number="10503"></td>
<td id="LC10503" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10504" class="blob-num js-line-number" data-line-number="10504"></td>
<td id="LC10504" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10505" class="blob-num js-line-number" data-line-number="10505"></td>
<td id="LC10505" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10506" class="blob-num js-line-number" data-line-number="10506"></td>
<td id="LC10506" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10507" class="blob-num js-line-number" data-line-number="10507"></td>
<td id="LC10507" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10508" class="blob-num js-line-number" data-line-number="10508"></td>
<td id="LC10508" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10509" class="blob-num js-line-number" data-line-number="10509"></td>
<td id="LC10509" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10510" class="blob-num js-line-number" data-line-number="10510"></td>
<td id="LC10510" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>global ActiveXObject:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10511" class="blob-num js-line-number" data-line-number="10511"></td>
<td id="LC10511" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10512" class="blob-num js-line-number" data-line-number="10512"></td>
<td id="LC10512" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10513" class="blob-num js-line-number" data-line-number="10513"></td>
<td id="LC10513" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Defines constructor for Silverlight runtime.</span></td>
</tr>
<tr>
<td id="L10514" class="blob-num js-line-number" data-line-number="10514"></td>
<td id="LC10514" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L10515" class="blob-num js-line-number" data-line-number="10515"></td>
<td id="LC10515" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/Runtime</span></td>
</tr>
<tr>
<td id="L10516" class="blob-num js-line-number" data-line-number="10516"></td>
<td id="LC10516" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10517" class="blob-num js-line-number" data-line-number="10517"></td>
<td id="LC10517" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10518" class="blob-num js-line-number" data-line-number="10518"></td>
<td id="LC10518" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10519" class="blob-num js-line-number" data-line-number="10519"></td>
<td id="LC10519" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10520" class="blob-num js-line-number" data-line-number="10520"></td>
<td id="LC10520" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10521" class="blob-num js-line-number" data-line-number="10521"></td>
<td id="LC10521" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10522" class="blob-num js-line-number" data-line-number="10522"></td>
<td id="LC10522" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10523" class="blob-num js-line-number" data-line-number="10523"></td>
<td id="LC10523" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10524" class="blob-num js-line-number" data-line-number="10524"></td>
<td id="LC10524" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">Env</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Runtime</span>) {</td>
</tr>
<tr>
<td id="L10525" class="blob-num js-line-number" data-line-number="10525"></td>
<td id="LC10525" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10526" class="blob-num js-line-number" data-line-number="10526"></td>
<td id="LC10526" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>silverlight<span class="pl-pds">"</span></span>, extensions <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L10527" class="blob-num js-line-number" data-line-number="10527"></td>
<td id="LC10527" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10528" class="blob-num js-line-number" data-line-number="10528"></td>
<td id="LC10528" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">isInstalled</span>(<span class="pl-smi">version</span>) {</td>
</tr>
<tr>
<td id="L10529" class="blob-num js-line-number" data-line-number="10529"></td>
<td id="LC10529" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> isVersionSupported <span class="pl-k">=</span> <span class="pl-c1">false</span>, control <span class="pl-k">=</span> <span class="pl-c1">null</span>, actualVer,</td>
</tr>
<tr>
<td id="L10530" class="blob-num js-line-number" data-line-number="10530"></td>
<td id="LC10530" class="blob-code blob-code-inner js-file-line"> actualVerArray, reqVerArray, requiredVersionPart, actualVersionPart, index <span class="pl-k">=</span> <span class="pl-c1">0</span>;</td>
</tr>
<tr>
<td id="L10531" class="blob-num js-line-number" data-line-number="10531"></td>
<td id="LC10531" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10532" class="blob-num js-line-number" data-line-number="10532"></td>
<td id="LC10532" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L10533" class="blob-num js-line-number" data-line-number="10533"></td>
<td id="LC10533" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L10534" class="blob-num js-line-number" data-line-number="10534"></td>
<td id="LC10534" class="blob-code blob-code-inner js-file-line"> control <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">ActiveXObject</span>(<span class="pl-s"><span class="pl-pds">'</span>AgControl.AgControl<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10535" class="blob-num js-line-number" data-line-number="10535"></td>
<td id="LC10535" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10536" class="blob-num js-line-number" data-line-number="10536"></td>
<td id="LC10536" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">control</span>.<span class="pl-en">IsVersionSupported</span>(version)) {</td>
</tr>
<tr>
<td id="L10537" class="blob-num js-line-number" data-line-number="10537"></td>
<td id="LC10537" class="blob-code blob-code-inner js-file-line"> isVersionSupported <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L10538" class="blob-num js-line-number" data-line-number="10538"></td>
<td id="LC10538" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10539" class="blob-num js-line-number" data-line-number="10539"></td>
<td id="LC10539" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10540" class="blob-num js-line-number" data-line-number="10540"></td>
<td id="LC10540" class="blob-code blob-code-inner js-file-line"> control <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10541" class="blob-num js-line-number" data-line-number="10541"></td>
<td id="LC10541" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (e) {</td>
</tr>
<tr>
<td id="L10542" class="blob-num js-line-number" data-line-number="10542"></td>
<td id="LC10542" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> plugin <span class="pl-k">=</span> <span class="pl-c1">navigator</span>.<span class="pl-c1">plugins</span>[<span class="pl-s"><span class="pl-pds">"</span>Silverlight Plug-In<span class="pl-pds">"</span></span>];</td>
</tr>
<tr>
<td id="L10543" class="blob-num js-line-number" data-line-number="10543"></td>
<td id="LC10543" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10544" class="blob-num js-line-number" data-line-number="10544"></td>
<td id="LC10544" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (plugin) {</td>
</tr>
<tr>
<td id="L10545" class="blob-num js-line-number" data-line-number="10545"></td>
<td id="LC10545" class="blob-code blob-code-inner js-file-line"> actualVer <span class="pl-k">=</span> <span class="pl-smi">plugin</span>.<span class="pl-c1">description</span>;</td>
</tr>
<tr>
<td id="L10546" class="blob-num js-line-number" data-line-number="10546"></td>
<td id="LC10546" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10547" class="blob-num js-line-number" data-line-number="10547"></td>
<td id="LC10547" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (actualVer <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">"</span>1.0.30226.2<span class="pl-pds">"</span></span>) {</td>
</tr>
<tr>
<td id="L10548" class="blob-num js-line-number" data-line-number="10548"></td>
<td id="LC10548" class="blob-code blob-code-inner js-file-line"> actualVer <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>2.0.30226.2<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L10549" class="blob-num js-line-number" data-line-number="10549"></td>
<td id="LC10549" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10550" class="blob-num js-line-number" data-line-number="10550"></td>
<td id="LC10550" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10551" class="blob-num js-line-number" data-line-number="10551"></td>
<td id="LC10551" class="blob-code blob-code-inner js-file-line"> actualVerArray <span class="pl-k">=</span> <span class="pl-smi">actualVer</span>.<span class="pl-c1">split</span>(<span class="pl-s"><span class="pl-pds">"</span>.<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L10552" class="blob-num js-line-number" data-line-number="10552"></td>
<td id="LC10552" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10553" class="blob-num js-line-number" data-line-number="10553"></td>
<td id="LC10553" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (<span class="pl-smi">actualVerArray</span>.<span class="pl-c1">length</span> <span class="pl-k">></span> <span class="pl-c1">3</span>) {</td>
</tr>
<tr>
<td id="L10554" class="blob-num js-line-number" data-line-number="10554"></td>
<td id="LC10554" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">actualVerArray</span>.<span class="pl-c1">pop</span>();</td>
</tr>
<tr>
<td id="L10555" class="blob-num js-line-number" data-line-number="10555"></td>
<td id="LC10555" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10556" class="blob-num js-line-number" data-line-number="10556"></td>
<td id="LC10556" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10557" class="blob-num js-line-number" data-line-number="10557"></td>
<td id="LC10557" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> ( <span class="pl-smi">actualVerArray</span>.<span class="pl-c1">length</span> <span class="pl-k"><</span> <span class="pl-c1">4</span>) {</td>
</tr>
<tr>
<td id="L10558" class="blob-num js-line-number" data-line-number="10558"></td>
<td id="LC10558" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">actualVerArray</span>.<span class="pl-c1">push</span>(<span class="pl-c1">0</span>);</td>
</tr>
<tr>
<td id="L10559" class="blob-num js-line-number" data-line-number="10559"></td>
<td id="LC10559" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10560" class="blob-num js-line-number" data-line-number="10560"></td>
<td id="LC10560" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10561" class="blob-num js-line-number" data-line-number="10561"></td>
<td id="LC10561" class="blob-code blob-code-inner js-file-line"> reqVerArray <span class="pl-k">=</span> <span class="pl-smi">version</span>.<span class="pl-c1">split</span>(<span class="pl-s"><span class="pl-pds">"</span>.<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L10562" class="blob-num js-line-number" data-line-number="10562"></td>
<td id="LC10562" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10563" class="blob-num js-line-number" data-line-number="10563"></td>
<td id="LC10563" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (<span class="pl-smi">reqVerArray</span>.<span class="pl-c1">length</span> <span class="pl-k">></span> <span class="pl-c1">4</span>) {</td>
</tr>
<tr>
<td id="L10564" class="blob-num js-line-number" data-line-number="10564"></td>
<td id="LC10564" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">reqVerArray</span>.<span class="pl-c1">pop</span>();</td>
</tr>
<tr>
<td id="L10565" class="blob-num js-line-number" data-line-number="10565"></td>
<td id="LC10565" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10566" class="blob-num js-line-number" data-line-number="10566"></td>
<td id="LC10566" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10567" class="blob-num js-line-number" data-line-number="10567"></td>
<td id="LC10567" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">do</span> {</td>
</tr>
<tr>
<td id="L10568" class="blob-num js-line-number" data-line-number="10568"></td>
<td id="LC10568" class="blob-code blob-code-inner js-file-line"> requiredVersionPart <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(reqVerArray[index], <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L10569" class="blob-num js-line-number" data-line-number="10569"></td>
<td id="LC10569" class="blob-code blob-code-inner js-file-line"> actualVersionPart <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(actualVerArray[index], <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L10570" class="blob-num js-line-number" data-line-number="10570"></td>
<td id="LC10570" class="blob-code blob-code-inner js-file-line"> index<span class="pl-k">++</span>;</td>
</tr>
<tr>
<td id="L10571" class="blob-num js-line-number" data-line-number="10571"></td>
<td id="LC10571" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">while</span> (index <span class="pl-k"><</span> <span class="pl-smi">reqVerArray</span>.<span class="pl-c1">length</span> <span class="pl-k">&&</span> requiredVersionPart <span class="pl-k">===</span> actualVersionPart);</td>
</tr>
<tr>
<td id="L10572" class="blob-num js-line-number" data-line-number="10572"></td>
<td id="LC10572" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10573" class="blob-num js-line-number" data-line-number="10573"></td>
<td id="LC10573" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (requiredVersionPart <span class="pl-k"><=</span> actualVersionPart <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-c1">isNaN</span>(requiredVersionPart)) {</td>
</tr>
<tr>
<td id="L10574" class="blob-num js-line-number" data-line-number="10574"></td>
<td id="LC10574" class="blob-code blob-code-inner js-file-line"> isVersionSupported <span class="pl-k">=</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L10575" class="blob-num js-line-number" data-line-number="10575"></td>
<td id="LC10575" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10576" class="blob-num js-line-number" data-line-number="10576"></td>
<td id="LC10576" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10577" class="blob-num js-line-number" data-line-number="10577"></td>
<td id="LC10577" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10578" class="blob-num js-line-number" data-line-number="10578"></td>
<td id="LC10578" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (e2) {</td>
</tr>
<tr>
<td id="L10579" class="blob-num js-line-number" data-line-number="10579"></td>
<td id="LC10579" class="blob-code blob-code-inner js-file-line"> isVersionSupported <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L10580" class="blob-num js-line-number" data-line-number="10580"></td>
<td id="LC10580" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10581" class="blob-num js-line-number" data-line-number="10581"></td>
<td id="LC10581" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10582" class="blob-num js-line-number" data-line-number="10582"></td>
<td id="LC10582" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> isVersionSupported;</td>
</tr>
<tr>
<td id="L10583" class="blob-num js-line-number" data-line-number="10583"></td>
<td id="LC10583" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10584" class="blob-num js-line-number" data-line-number="10584"></td>
<td id="LC10584" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10585" class="blob-num js-line-number" data-line-number="10585"></td>
<td id="LC10585" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10586" class="blob-num js-line-number" data-line-number="10586"></td>
<td id="LC10586" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> Constructor for the Silverlight Runtime</span></td>
</tr>
<tr>
<td id="L10587" class="blob-num js-line-number" data-line-number="10587"></td>
<td id="LC10587" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10588" class="blob-num js-line-number" data-line-number="10588"></td>
<td id="LC10588" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">SilverlightRuntime</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L10589" class="blob-num js-line-number" data-line-number="10589"></td>
<td id="LC10589" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>, initTimer;</td>
</tr>
<tr>
<td id="L10590" class="blob-num js-line-number" data-line-number="10590"></td>
<td id="LC10590" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10591" class="blob-num js-line-number" data-line-number="10591"></td>
<td id="LC10591" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({ xap_url<span class="pl-k">:</span> <span class="pl-smi">Env</span>.<span class="pl-smi">xap_url</span> }, options);</td>
</tr>
<tr>
<td id="L10592" class="blob-num js-line-number" data-line-number="10592"></td>
<td id="LC10592" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10593" class="blob-num js-line-number" data-line-number="10593"></td>
<td id="LC10593" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, options, type, {</td>
</tr>
<tr>
<td id="L10594" class="blob-num js-line-number" data-line-number="10594"></td>
<td id="LC10594" class="blob-code blob-code-inner js-file-line"> access_binary<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10595" class="blob-num js-line-number" data-line-number="10595"></td>
<td id="LC10595" class="blob-code blob-code-inner js-file-line"> access_image_binary<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10596" class="blob-num js-line-number" data-line-number="10596"></td>
<td id="LC10596" class="blob-code blob-code-inner js-file-line"> display_media<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">capTest</span>(<span class="pl-en">defined</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/image/Image<span class="pl-pds">'</span></span>)),</td>
</tr>
<tr>
<td id="L10597" class="blob-num js-line-number" data-line-number="10597"></td>
<td id="LC10597" class="blob-code blob-code-inner js-file-line"> do_cors<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10598" class="blob-num js-line-number" data-line-number="10598"></td>
<td id="LC10598" class="blob-code blob-code-inner js-file-line"> drag_and_drop<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L10599" class="blob-num js-line-number" data-line-number="10599"></td>
<td id="LC10599" class="blob-code blob-code-inner js-file-line"> report_upload_progress<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10600" class="blob-num js-line-number" data-line-number="10600"></td>
<td id="LC10600" class="blob-code blob-code-inner js-file-line"> resize_image<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10601" class="blob-num js-line-number" data-line-number="10601"></td>
<td id="LC10601" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_headers</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10602" class="blob-num js-line-number" data-line-number="10602"></td>
<td id="LC10602" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10603" class="blob-num js-line-number" data-line-number="10603"></td>
<td id="LC10603" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10604" class="blob-num js-line-number" data-line-number="10604"></td>
<td id="LC10604" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_type</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L10605" class="blob-num js-line-number" data-line-number="10605"></td>
<td id="LC10605" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (responseType <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L10606" class="blob-num js-line-number" data-line-number="10606"></td>
<td id="LC10606" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L10607" class="blob-num js-line-number" data-line-number="10607"></td>
<td id="LC10607" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L10608" class="blob-num js-line-number" data-line-number="10608"></td>
<td id="LC10608" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span>;</td>
</tr>
<tr>
<td id="L10609" class="blob-num js-line-number" data-line-number="10609"></td>
<td id="LC10609" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10610" class="blob-num js-line-number" data-line-number="10610"></td>
<td id="LC10610" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10611" class="blob-num js-line-number" data-line-number="10611"></td>
<td id="LC10611" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_status_code</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L10612" class="blob-num js-line-number" data-line-number="10612"></td>
<td id="LC10612" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(code, [<span class="pl-c1">200</span>, <span class="pl-c1">404</span>]);</td>
</tr>
<tr>
<td id="L10613" class="blob-num js-line-number" data-line-number="10613"></td>
<td id="LC10613" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10614" class="blob-num js-line-number" data-line-number="10614"></td>
<td id="LC10614" class="blob-code blob-code-inner js-file-line"> select_file<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10615" class="blob-num js-line-number" data-line-number="10615"></td>
<td id="LC10615" class="blob-code blob-code-inner js-file-line"> select_multiple<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10616" class="blob-num js-line-number" data-line-number="10616"></td>
<td id="LC10616" class="blob-code blob-code-inner js-file-line"> send_binary_string<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10617" class="blob-num js-line-number" data-line-number="10617"></td>
<td id="LC10617" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_browser_cookies</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10618" class="blob-num js-line-number" data-line-number="10618"></td>
<td id="LC10618" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10619" class="blob-num js-line-number" data-line-number="10619"></td>
<td id="LC10619" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10620" class="blob-num js-line-number" data-line-number="10620"></td>
<td id="LC10620" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_custom_headers</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10621" class="blob-num js-line-number" data-line-number="10621"></td>
<td id="LC10621" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10622" class="blob-num js-line-number" data-line-number="10622"></td>
<td id="LC10622" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10623" class="blob-num js-line-number" data-line-number="10623"></td>
<td id="LC10623" class="blob-code blob-code-inner js-file-line"> send_multipart<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10624" class="blob-num js-line-number" data-line-number="10624"></td>
<td id="LC10624" class="blob-code blob-code-inner js-file-line"> slice_blob<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10625" class="blob-num js-line-number" data-line-number="10625"></td>
<td id="LC10625" class="blob-code blob-code-inner js-file-line"> stream_upload<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L10626" class="blob-num js-line-number" data-line-number="10626"></td>
<td id="LC10626" class="blob-code blob-code-inner js-file-line"> summon_file_dialog<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L10627" class="blob-num js-line-number" data-line-number="10627"></td>
<td id="LC10627" class="blob-code blob-code-inner js-file-line"> upload_filesize<span class="pl-k">:</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span>,</td>
</tr>
<tr>
<td id="L10628" class="blob-num js-line-number" data-line-number="10628"></td>
<td id="LC10628" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_http_method</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">methods</span>) {</td>
</tr>
<tr>
<td id="L10629" class="blob-num js-line-number" data-line-number="10629"></td>
<td id="LC10629" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-smi">mode</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(methods, [<span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>POST<span class="pl-pds">'</span></span>]);</td>
</tr>
<tr>
<td id="L10630" class="blob-num js-line-number" data-line-number="10630"></td>
<td id="LC10630" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10631" class="blob-num js-line-number" data-line-number="10631"></td>
<td id="LC10631" class="blob-code blob-code-inner js-file-line"> }, { </td>
</tr>
<tr>
<td id="L10632" class="blob-num js-line-number" data-line-number="10632"></td>
<td id="LC10632" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> capabilities that require specific mode</span></td>
</tr>
<tr>
<td id="L10633" class="blob-num js-line-number" data-line-number="10633"></td>
<td id="LC10633" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_headers</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10634" class="blob-num js-line-number" data-line-number="10634"></td>
<td id="LC10634" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10635" class="blob-num js-line-number" data-line-number="10635"></td>
<td id="LC10635" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10636" class="blob-num js-line-number" data-line-number="10636"></td>
<td id="LC10636" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_status_code</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L10637" class="blob-num js-line-number" data-line-number="10637"></td>
<td id="LC10637" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(code, [<span class="pl-c1">200</span>, <span class="pl-c1">404</span>]) <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">:</span> [<span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>];</td>
</tr>
<tr>
<td id="L10638" class="blob-num js-line-number" data-line-number="10638"></td>
<td id="LC10638" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10639" class="blob-num js-line-number" data-line-number="10639"></td>
<td id="LC10639" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_browser_cookies</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10640" class="blob-num js-line-number" data-line-number="10640"></td>
<td id="LC10640" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10641" class="blob-num js-line-number" data-line-number="10641"></td>
<td id="LC10641" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10642" class="blob-num js-line-number" data-line-number="10642"></td>
<td id="LC10642" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send_custom_headers</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10643" class="blob-num js-line-number" data-line-number="10643"></td>
<td id="LC10643" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> value <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10644" class="blob-num js-line-number" data-line-number="10644"></td>
<td id="LC10644" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10645" class="blob-num js-line-number" data-line-number="10645"></td>
<td id="LC10645" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_http_method</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">methods</span>) {</td>
</tr>
<tr>
<td id="L10646" class="blob-num js-line-number" data-line-number="10646"></td>
<td id="LC10646" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(methods, [<span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>POST<span class="pl-pds">'</span></span>]) <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span> <span class="pl-k">:</span> [<span class="pl-s"><span class="pl-pds">'</span>client<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>browser<span class="pl-pds">'</span></span>];</td>
</tr>
<tr>
<td id="L10647" class="blob-num js-line-number" data-line-number="10647"></td>
<td id="LC10647" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10648" class="blob-num js-line-number" data-line-number="10648"></td>
<td id="LC10648" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10649" class="blob-num js-line-number" data-line-number="10649"></td>
<td id="LC10649" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10650" class="blob-num js-line-number" data-line-number="10650"></td>
<td id="LC10650" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10651" class="blob-num js-line-number" data-line-number="10651"></td>
<td id="LC10651" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> minimal requirement</span></td>
</tr>
<tr>
<td id="L10652" class="blob-num js-line-number" data-line-number="10652"></td>
<td id="LC10652" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-en">isInstalled</span>(<span class="pl-s"><span class="pl-pds">'</span>2.0.31005.0<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Opera<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L10653" class="blob-num js-line-number" data-line-number="10653"></td>
<td id="LC10653" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L10654" class="blob-num js-line-number" data-line-number="10654"></td>
<td id="LC10654" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\t</span>Silverlight is not installed or minimal version (2.0.31005.0) requirement not met (not likely).<span class="pl-pds">"</span></span>); </td>
</tr>
<tr>
<td id="L10655" class="blob-num js-line-number" data-line-number="10655"></td>
<td id="LC10655" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10656" class="blob-num js-line-number" data-line-number="10656"></td>
<td id="LC10656" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10657" class="blob-num js-line-number" data-line-number="10657"></td>
<td id="LC10657" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-smi">mode</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L10658" class="blob-num js-line-number" data-line-number="10658"></td>
<td id="LC10658" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10659" class="blob-num js-line-number" data-line-number="10659"></td>
<td id="LC10659" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10660" class="blob-num js-line-number" data-line-number="10660"></td>
<td id="LC10660" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10661" class="blob-num js-line-number" data-line-number="10661"></td>
<td id="LC10661" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L10662" class="blob-num js-line-number" data-line-number="10662"></td>
<td id="LC10662" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getShim</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10663" class="blob-num js-line-number" data-line-number="10663"></td>
<td id="LC10663" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>).<span class="pl-c1">content</span>.<span class="pl-smi">Moxie</span>;</td>
</tr>
<tr>
<td id="L10664" class="blob-num js-line-number" data-line-number="10664"></td>
<td id="LC10664" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10665" class="blob-num js-line-number" data-line-number="10665"></td>
<td id="LC10665" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10666" class="blob-num js-line-number" data-line-number="10666"></td>
<td id="LC10666" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">shimExec</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">component</span>, <span class="pl-smi">action</span>) {</td>
</tr>
<tr>
<td id="L10667" class="blob-num js-line-number" data-line-number="10667"></td>
<td id="LC10667" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> args <span class="pl-k">=</span> [].<span class="pl-smi">slice</span>.<span class="pl-c1">call</span>(<span class="pl-c1">arguments</span>, <span class="pl-c1">2</span>);</td>
</tr>
<tr>
<td id="L10668" class="blob-num js-line-number" data-line-number="10668"></td>
<td id="LC10668" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">getShim</span>().<span class="pl-c1">exec</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>, component, action, args);</td>
</tr>
<tr>
<td id="L10669" class="blob-num js-line-number" data-line-number="10669"></td>
<td id="LC10669" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10670" class="blob-num js-line-number" data-line-number="10670"></td>
<td id="LC10670" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10671" class="blob-num js-line-number" data-line-number="10671"></td>
<td id="LC10671" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span> <span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10672" class="blob-num js-line-number" data-line-number="10672"></td>
<td id="LC10672" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> container;</td>
</tr>
<tr>
<td id="L10673" class="blob-num js-line-number" data-line-number="10673"></td>
<td id="LC10673" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10674" class="blob-num js-line-number" data-line-number="10674"></td>
<td id="LC10674" class="blob-code blob-code-inner js-file-line"> container <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getShimContainer</span>();</td>
</tr>
<tr>
<td id="L10675" class="blob-num js-line-number" data-line-number="10675"></td>
<td id="LC10675" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10676" class="blob-num js-line-number" data-line-number="10676"></td>
<td id="LC10676" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">container</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><object id="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;"><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L10677" class="blob-num js-line-number" data-line-number="10677"></td>
<td id="LC10677" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="source" value="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">options</span>.<span class="pl-smi">xap_url</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>"/><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L10678" class="blob-num js-line-number" data-line-number="10678"></td>
<td id="LC10678" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="background" value="Transparent"/><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L10679" class="blob-num js-line-number" data-line-number="10679"></td>
<td id="LC10679" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="windowless" value="true"/><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L10680" class="blob-num js-line-number" data-line-number="10680"></td>
<td id="LC10680" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="enablehtmlaccess" value="true"/><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L10681" class="blob-num js-line-number" data-line-number="10681"></td>
<td id="LC10681" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span><param name="initParams" value="uid=<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-c1">this</span>.<span class="pl-smi">uid</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>,target=<span class="pl-pds">'</span></span> <span class="pl-k">+</span> <span class="pl-smi">Runtime</span>.<span class="pl-en">getGlobalEventTarget</span>() <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>"/><span class="pl-pds">'</span></span> <span class="pl-k">+</span></td>
</tr>
<tr>
<td id="L10682" class="blob-num js-line-number" data-line-number="10682"></td>
<td id="LC10682" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">'</span></object><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10683" class="blob-num js-line-number" data-line-number="10683"></td>
<td id="LC10683" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10684" class="blob-num js-line-number" data-line-number="10684"></td>
<td id="LC10684" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Init is dispatched by the shim</span></td>
</tr>
<tr>
<td id="L10685" class="blob-num js-line-number" data-line-number="10685"></td>
<td id="LC10685" class="blob-code blob-code-inner js-file-line"> initTimer <span class="pl-k">=</span> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10686" class="blob-num js-line-number" data-line-number="10686"></td>
<td id="LC10686" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">I</span> <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-c1">I</span>.<span class="pl-smi">initialized</span>) { <span class="pl-c"><span class="pl-c">//</span> runtime might be already destroyed by this moment</span></td>
</tr>
<tr>
<td id="L10687" class="blob-num js-line-number" data-line-number="10687"></td>
<td id="LC10687" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">I</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>Error<span class="pl-pds">"</span></span>, <span class="pl-k">new</span> <span class="pl-en">x.RuntimeError</span>(<span class="pl-smi">x</span>.<span class="pl-smi">RuntimeError</span>.<span class="pl-c1">NOT_INIT_ERR</span>));</td>
</tr>
<tr>
<td id="L10688" class="blob-num js-line-number" data-line-number="10688"></td>
<td id="LC10688" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10689" class="blob-num js-line-number" data-line-number="10689"></td>
<td id="LC10689" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">MXI_DEBUG</span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-smi">debug</span>.<span class="pl-smi">runtime</span>) {</td>
</tr>
<tr>
<td id="L10690" class="blob-num js-line-number" data-line-number="10690"></td>
<td id="LC10690" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-en">log</span>(<span class="pl-s"><span class="pl-pds">"</span><span class="pl-cce">\S</span>ilverlight failed to initialize within a specified period of time (5-10s).<span class="pl-pds">"</span></span>); </td>
</tr>
<tr>
<td id="L10691" class="blob-num js-line-number" data-line-number="10691"></td>
<td id="LC10691" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10692" class="blob-num js-line-number" data-line-number="10692"></td>
<td id="LC10692" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10693" class="blob-num js-line-number" data-line-number="10693"></td>
<td id="LC10693" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">Env</span>.<span class="pl-c1">OS</span> <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span>Windows<span class="pl-pds">'</span></span><span class="pl-k">?</span> <span class="pl-c1">10000</span> <span class="pl-k">:</span> <span class="pl-c1">5000</span>); <span class="pl-c"><span class="pl-c">//</span> give it more time to initialize in non Windows OS (like Mac)</span></td>
</tr>
<tr>
<td id="L10694" class="blob-num js-line-number" data-line-number="10694"></td>
<td id="LC10694" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10695" class="blob-num js-line-number" data-line-number="10695"></td>
<td id="LC10695" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10696" class="blob-num js-line-number" data-line-number="10696"></td>
<td id="LC10696" class="blob-code blob-code-inner js-file-line"> destroy<span class="pl-k">:</span> (<span class="pl-k">function</span>(<span class="pl-smi">destroy</span>) { <span class="pl-c"><span class="pl-c">//</span> extend default destroy method</span></td>
</tr>
<tr>
<td id="L10697" class="blob-num js-line-number" data-line-number="10697"></td>
<td id="LC10697" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10698" class="blob-num js-line-number" data-line-number="10698"></td>
<td id="LC10698" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">destroy</span>.<span class="pl-c1">call</span>(<span class="pl-c1">I</span>);</td>
</tr>
<tr>
<td id="L10699" class="blob-num js-line-number" data-line-number="10699"></td>
<td id="LC10699" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">clearTimeout</span>(initTimer); <span class="pl-c"><span class="pl-c">//</span> initialization check might be still onwait</span></td>
</tr>
<tr>
<td id="L10700" class="blob-num js-line-number" data-line-number="10700"></td>
<td id="LC10700" class="blob-code blob-code-inner js-file-line"> options <span class="pl-k">=</span> initTimer <span class="pl-k">=</span> destroy <span class="pl-k">=</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10701" class="blob-num js-line-number" data-line-number="10701"></td>
<td id="LC10701" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10702" class="blob-num js-line-number" data-line-number="10702"></td>
<td id="LC10702" class="blob-code blob-code-inner js-file-line"> }(<span class="pl-c1">this</span>.<span class="pl-smi">destroy</span>))</td>
</tr>
<tr>
<td id="L10703" class="blob-num js-line-number" data-line-number="10703"></td>
<td id="LC10703" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10704" class="blob-num js-line-number" data-line-number="10704"></td>
<td id="LC10704" class="blob-code blob-code-inner js-file-line"> }, extensions);</td>
</tr>
<tr>
<td id="L10705" class="blob-num js-line-number" data-line-number="10705"></td>
<td id="LC10705" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10706" class="blob-num js-line-number" data-line-number="10706"></td>
<td id="LC10706" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10707" class="blob-num js-line-number" data-line-number="10707"></td>
<td id="LC10707" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">addConstructor</span>(type, SilverlightRuntime); </td>
</tr>
<tr>
<td id="L10708" class="blob-num js-line-number" data-line-number="10708"></td>
<td id="LC10708" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10709" class="blob-num js-line-number" data-line-number="10709"></td>
<td id="LC10709" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> extensions;</td>
</tr>
<tr>
<td id="L10710" class="blob-num js-line-number" data-line-number="10710"></td>
<td id="LC10710" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10711" class="blob-num js-line-number" data-line-number="10711"></td>
<td id="LC10711" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10712" class="blob-num js-line-number" data-line-number="10712"></td>
<td id="LC10712" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/file/Blob.js</span></td>
</tr>
<tr>
<td id="L10713" class="blob-num js-line-number" data-line-number="10713"></td>
<td id="LC10713" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10714" class="blob-num js-line-number" data-line-number="10714"></td>
<td id="LC10714" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10715" class="blob-num js-line-number" data-line-number="10715"></td>
<td id="LC10715" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Blob.js</span></td>
</tr>
<tr>
<td id="L10716" class="blob-num js-line-number" data-line-number="10716"></td>
<td id="LC10716" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10717" class="blob-num js-line-number" data-line-number="10717"></td>
<td id="LC10717" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10718" class="blob-num js-line-number" data-line-number="10718"></td>
<td id="LC10718" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10719" class="blob-num js-line-number" data-line-number="10719"></td>
<td id="LC10719" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10720" class="blob-num js-line-number" data-line-number="10720"></td>
<td id="LC10720" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10721" class="blob-num js-line-number" data-line-number="10721"></td>
<td id="LC10721" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10722" class="blob-num js-line-number" data-line-number="10722"></td>
<td id="LC10722" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10723" class="blob-num js-line-number" data-line-number="10723"></td>
<td id="LC10723" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10724" class="blob-num js-line-number" data-line-number="10724"></td>
<td id="LC10724" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10725" class="blob-num js-line-number" data-line-number="10725"></td>
<td id="LC10725" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/file/Blob</span></td>
</tr>
<tr>
<td id="L10726" class="blob-num js-line-number" data-line-number="10726"></td>
<td id="LC10726" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10727" class="blob-num js-line-number" data-line-number="10727"></td>
<td id="LC10727" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10728" class="blob-num js-line-number" data-line-number="10728"></td>
<td id="LC10728" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/file/Blob<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10729" class="blob-num js-line-number" data-line-number="10729"></td>
<td id="LC10729" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10730" class="blob-num js-line-number" data-line-number="10730"></td>
<td id="LC10730" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10731" class="blob-num js-line-number" data-line-number="10731"></td>
<td id="LC10731" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/Blob<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10732" class="blob-num js-line-number" data-line-number="10732"></td>
<td id="LC10732" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L10733" class="blob-num js-line-number" data-line-number="10733"></td>
<td id="LC10733" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Blob</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, <span class="pl-c1">Blob</span>));</td>
</tr>
<tr>
<td id="L10734" class="blob-num js-line-number" data-line-number="10734"></td>
<td id="LC10734" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10735" class="blob-num js-line-number" data-line-number="10735"></td>
<td id="LC10735" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10736" class="blob-num js-line-number" data-line-number="10736"></td>
<td id="LC10736" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/file/FileInput.js</span></td>
</tr>
<tr>
<td id="L10737" class="blob-num js-line-number" data-line-number="10737"></td>
<td id="LC10737" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10738" class="blob-num js-line-number" data-line-number="10738"></td>
<td id="LC10738" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10739" class="blob-num js-line-number" data-line-number="10739"></td>
<td id="LC10739" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileInput.js</span></td>
</tr>
<tr>
<td id="L10740" class="blob-num js-line-number" data-line-number="10740"></td>
<td id="LC10740" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10741" class="blob-num js-line-number" data-line-number="10741"></td>
<td id="LC10741" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10742" class="blob-num js-line-number" data-line-number="10742"></td>
<td id="LC10742" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10743" class="blob-num js-line-number" data-line-number="10743"></td>
<td id="LC10743" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10744" class="blob-num js-line-number" data-line-number="10744"></td>
<td id="LC10744" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10745" class="blob-num js-line-number" data-line-number="10745"></td>
<td id="LC10745" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10746" class="blob-num js-line-number" data-line-number="10746"></td>
<td id="LC10746" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10747" class="blob-num js-line-number" data-line-number="10747"></td>
<td id="LC10747" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10748" class="blob-num js-line-number" data-line-number="10748"></td>
<td id="LC10748" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10749" class="blob-num js-line-number" data-line-number="10749"></td>
<td id="LC10749" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/file/FileInput</span></td>
</tr>
<tr>
<td id="L10750" class="blob-num js-line-number" data-line-number="10750"></td>
<td id="LC10750" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10751" class="blob-num js-line-number" data-line-number="10751"></td>
<td id="LC10751" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10752" class="blob-num js-line-number" data-line-number="10752"></td>
<td id="LC10752" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/file/FileInput<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10753" class="blob-num js-line-number" data-line-number="10753"></td>
<td id="LC10753" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10754" class="blob-num js-line-number" data-line-number="10754"></td>
<td id="LC10754" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10755" class="blob-num js-line-number" data-line-number="10755"></td>
<td id="LC10755" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10756" class="blob-num js-line-number" data-line-number="10756"></td>
<td id="LC10756" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10757" class="blob-num js-line-number" data-line-number="10757"></td>
<td id="LC10757" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">File</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Basic</span>) {</td>
</tr>
<tr>
<td id="L10758" class="blob-num js-line-number" data-line-number="10758"></td>
<td id="LC10758" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10759" class="blob-num js-line-number" data-line-number="10759"></td>
<td id="LC10759" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">toFilters</span>(<span class="pl-smi">accept</span>) {</td>
</tr>
<tr>
<td id="L10760" class="blob-num js-line-number" data-line-number="10760"></td>
<td id="LC10760" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> filter <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10761" class="blob-num js-line-number" data-line-number="10761"></td>
<td id="LC10761" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (<span class="pl-k">var</span> i <span class="pl-k">=</span> <span class="pl-c1">0</span>; i <span class="pl-k"><</span> <span class="pl-smi">accept</span>.<span class="pl-c1">length</span>; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L10762" class="blob-num js-line-number" data-line-number="10762"></td>
<td id="LC10762" class="blob-code blob-code-inner js-file-line"> filter <span class="pl-k">+=</span> (filter <span class="pl-k">!==</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span> <span class="pl-k">?</span> <span class="pl-s"><span class="pl-pds">'</span>|<span class="pl-pds">'</span></span> <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>) <span class="pl-k">+</span> accept[i].<span class="pl-c1">title</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">"</span> | *.<span class="pl-pds">"</span></span> <span class="pl-k">+</span> accept[i].<span class="pl-smi">extensions</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>,<span class="pl-pds">/</span>g</span>, <span class="pl-s"><span class="pl-pds">'</span>;*.<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10763" class="blob-num js-line-number" data-line-number="10763"></td>
<td id="LC10763" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10764" class="blob-num js-line-number" data-line-number="10764"></td>
<td id="LC10764" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> filter;</td>
</tr>
<tr>
<td id="L10765" class="blob-num js-line-number" data-line-number="10765"></td>
<td id="LC10765" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10766" class="blob-num js-line-number" data-line-number="10766"></td>
<td id="LC10766" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10767" class="blob-num js-line-number" data-line-number="10767"></td>
<td id="LC10767" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10768" class="blob-num js-line-number" data-line-number="10768"></td>
<td id="LC10768" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> FileInput <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10769" class="blob-num js-line-number" data-line-number="10769"></td>
<td id="LC10769" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L10770" class="blob-num js-line-number" data-line-number="10770"></td>
<td id="LC10770" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L10771" class="blob-num js-line-number" data-line-number="10771"></td>
<td id="LC10771" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L10772" class="blob-num js-line-number" data-line-number="10772"></td>
<td id="LC10772" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10773" class="blob-num js-line-number" data-line-number="10773"></td>
<td id="LC10773" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (browseButton) {</td>
</tr>
<tr>
<td id="L10774" class="blob-num js-line-number" data-line-number="10774"></td>
<td id="LC10774" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>tabindex<span class="pl-pds">'</span></span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L10775" class="blob-num js-line-number" data-line-number="10775"></td>
<td id="LC10775" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L10776" class="blob-num js-line-number" data-line-number="10776"></td>
<td id="LC10776" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10777" class="blob-num js-line-number" data-line-number="10777"></td>
<td id="LC10777" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10778" class="blob-num js-line-number" data-line-number="10778"></td>
<td id="LC10778" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">"</span>Change<span class="pl-pds">"</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10779" class="blob-num js-line-number" data-line-number="10779"></td>
<td id="LC10779" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> files <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(comp, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getFiles<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10780" class="blob-num js-line-number" data-line-number="10780"></td>
<td id="LC10780" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L10781" class="blob-num js-line-number" data-line-number="10781"></td>
<td id="LC10781" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(files, <span class="pl-k">function</span>(<span class="pl-smi">file</span>) {</td>
</tr>
<tr>
<td id="L10782" class="blob-num js-line-number" data-line-number="10782"></td>
<td id="LC10782" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span>.<span class="pl-c1">push</span>(<span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>, file));</td>
</tr>
<tr>
<td id="L10783" class="blob-num js-line-number" data-line-number="10783"></td>
<td id="LC10783" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L10784" class="blob-num js-line-number" data-line-number="10784"></td>
<td id="LC10784" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">999</span>);</td>
</tr>
<tr>
<td id="L10785" class="blob-num js-line-number" data-line-number="10785"></td>
<td id="LC10785" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10786" class="blob-num js-line-number" data-line-number="10786"></td>
<td id="LC10786" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">I</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>init<span class="pl-pds">'</span></span>, <span class="pl-en">toFilters</span>(<span class="pl-smi">options</span>.<span class="pl-c1">accept</span>), <span class="pl-smi">options</span>.<span class="pl-c1">multiple</span>);</td>
</tr>
<tr>
<td id="L10787" class="blob-num js-line-number" data-line-number="10787"></td>
<td id="LC10787" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10788" class="blob-num js-line-number" data-line-number="10788"></td>
<td id="LC10788" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L10789" class="blob-num js-line-number" data-line-number="10789"></td>
<td id="LC10789" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10790" class="blob-num js-line-number" data-line-number="10790"></td>
<td id="LC10790" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setOption</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L10791" class="blob-num js-line-number" data-line-number="10791"></td>
<td id="LC10791" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (name <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L10792" class="blob-num js-line-number" data-line-number="10792"></td>
<td id="LC10792" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> <span class="pl-en">toFilters</span>(value);</td>
</tr>
<tr>
<td id="L10793" class="blob-num js-line-number" data-line-number="10793"></td>
<td id="LC10793" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10794" class="blob-num js-line-number" data-line-number="10794"></td>
<td id="LC10794" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileInput<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>setOption<span class="pl-pds">'</span></span>, name, value);</td>
</tr>
<tr>
<td id="L10795" class="blob-num js-line-number" data-line-number="10795"></td>
<td id="LC10795" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10796" class="blob-num js-line-number" data-line-number="10796"></td>
<td id="LC10796" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10797" class="blob-num js-line-number" data-line-number="10797"></td>
<td id="LC10797" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10798" class="blob-num js-line-number" data-line-number="10798"></td>
<td id="LC10798" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileInput</span> <span class="pl-k">=</span> FileInput);</td>
</tr>
<tr>
<td id="L10799" class="blob-num js-line-number" data-line-number="10799"></td>
<td id="LC10799" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10800" class="blob-num js-line-number" data-line-number="10800"></td>
<td id="LC10800" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10801" class="blob-num js-line-number" data-line-number="10801"></td>
<td id="LC10801" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/file/FileDrop.js</span></td>
</tr>
<tr>
<td id="L10802" class="blob-num js-line-number" data-line-number="10802"></td>
<td id="LC10802" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10803" class="blob-num js-line-number" data-line-number="10803"></td>
<td id="LC10803" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10804" class="blob-num js-line-number" data-line-number="10804"></td>
<td id="LC10804" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileDrop.js</span></td>
</tr>
<tr>
<td id="L10805" class="blob-num js-line-number" data-line-number="10805"></td>
<td id="LC10805" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10806" class="blob-num js-line-number" data-line-number="10806"></td>
<td id="LC10806" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10807" class="blob-num js-line-number" data-line-number="10807"></td>
<td id="LC10807" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10808" class="blob-num js-line-number" data-line-number="10808"></td>
<td id="LC10808" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10809" class="blob-num js-line-number" data-line-number="10809"></td>
<td id="LC10809" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10810" class="blob-num js-line-number" data-line-number="10810"></td>
<td id="LC10810" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10811" class="blob-num js-line-number" data-line-number="10811"></td>
<td id="LC10811" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10812" class="blob-num js-line-number" data-line-number="10812"></td>
<td id="LC10812" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10813" class="blob-num js-line-number" data-line-number="10813"></td>
<td id="LC10813" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10814" class="blob-num js-line-number" data-line-number="10814"></td>
<td id="LC10814" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/file/FileDrop</span></td>
</tr>
<tr>
<td id="L10815" class="blob-num js-line-number" data-line-number="10815"></td>
<td id="LC10815" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10816" class="blob-num js-line-number" data-line-number="10816"></td>
<td id="LC10816" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10817" class="blob-num js-line-number" data-line-number="10817"></td>
<td id="LC10817" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/file/FileDrop<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10818" class="blob-num js-line-number" data-line-number="10818"></td>
<td id="LC10818" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10819" class="blob-num js-line-number" data-line-number="10819"></td>
<td id="LC10819" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>, </td>
</tr>
<tr>
<td id="L10820" class="blob-num js-line-number" data-line-number="10820"></td>
<td id="LC10820" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Events<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10821" class="blob-num js-line-number" data-line-number="10821"></td>
<td id="LC10821" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Events</span>) {</td>
</tr>
<tr>
<td id="L10822" class="blob-num js-line-number" data-line-number="10822"></td>
<td id="LC10822" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10823" class="blob-num js-line-number" data-line-number="10823"></td>
<td id="LC10823" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> not exactly useful, since works only in safari (...crickets...)</span></td>
</tr>
<tr>
<td id="L10824" class="blob-num js-line-number" data-line-number="10824"></td>
<td id="LC10824" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> FileDrop <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L10825" class="blob-num js-line-number" data-line-number="10825"></td>
<td id="LC10825" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10826" class="blob-num js-line-number" data-line-number="10826"></td>
<td id="LC10826" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, self <span class="pl-k">=</span> <span class="pl-smi">comp</span>.<span class="pl-en">getRuntime</span>(), dropZone;</td>
</tr>
<tr>
<td id="L10827" class="blob-num js-line-number" data-line-number="10827"></td>
<td id="LC10827" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10828" class="blob-num js-line-number" data-line-number="10828"></td>
<td id="LC10828" class="blob-code blob-code-inner js-file-line"> dropZone <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-en">getShimContainer</span>();</td>
</tr>
<tr>
<td id="L10829" class="blob-num js-line-number" data-line-number="10829"></td>
<td id="LC10829" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10830" class="blob-num js-line-number" data-line-number="10830"></td>
<td id="LC10830" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>dragover<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L10831" class="blob-num js-line-number" data-line-number="10831"></td>
<td id="LC10831" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L10832" class="blob-num js-line-number" data-line-number="10832"></td>
<td id="LC10832" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">stopPropagation</span>();</td>
</tr>
<tr>
<td id="L10833" class="blob-num js-line-number" data-line-number="10833"></td>
<td id="LC10833" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-smi">dataTransfer</span>.<span class="pl-smi">dropEffect</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>copy<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L10834" class="blob-num js-line-number" data-line-number="10834"></td>
<td id="LC10834" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10835" class="blob-num js-line-number" data-line-number="10835"></td>
<td id="LC10835" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10836" class="blob-num js-line-number" data-line-number="10836"></td>
<td id="LC10836" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>dragenter<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L10837" class="blob-num js-line-number" data-line-number="10837"></td>
<td id="LC10837" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L10838" class="blob-num js-line-number" data-line-number="10838"></td>
<td id="LC10838" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> flag <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>).<span class="pl-en">dragEnter</span>(e);</td>
</tr>
<tr>
<td id="L10839" class="blob-num js-line-number" data-line-number="10839"></td>
<td id="LC10839" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If handled, then stop propagation of event in DOM</span></td>
</tr>
<tr>
<td id="L10840" class="blob-num js-line-number" data-line-number="10840"></td>
<td id="LC10840" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (flag) {</td>
</tr>
<tr>
<td id="L10841" class="blob-num js-line-number" data-line-number="10841"></td>
<td id="LC10841" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">stopPropagation</span>();</td>
</tr>
<tr>
<td id="L10842" class="blob-num js-line-number" data-line-number="10842"></td>
<td id="LC10842" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10843" class="blob-num js-line-number" data-line-number="10843"></td>
<td id="LC10843" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10844" class="blob-num js-line-number" data-line-number="10844"></td>
<td id="LC10844" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10845" class="blob-num js-line-number" data-line-number="10845"></td>
<td id="LC10845" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(dropZone, <span class="pl-s"><span class="pl-pds">'</span>drop<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L10846" class="blob-num js-line-number" data-line-number="10846"></td>
<td id="LC10846" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L10847" class="blob-num js-line-number" data-line-number="10847"></td>
<td id="LC10847" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> flag <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>).<span class="pl-en">dragDrop</span>(e);</td>
</tr>
<tr>
<td id="L10848" class="blob-num js-line-number" data-line-number="10848"></td>
<td id="LC10848" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> If handled, then stop propagation of event in DOM</span></td>
</tr>
<tr>
<td id="L10849" class="blob-num js-line-number" data-line-number="10849"></td>
<td id="LC10849" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (flag) {</td>
</tr>
<tr>
<td id="L10850" class="blob-num js-line-number" data-line-number="10850"></td>
<td id="LC10850" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">stopPropagation</span>();</td>
</tr>
<tr>
<td id="L10851" class="blob-num js-line-number" data-line-number="10851"></td>
<td id="LC10851" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10852" class="blob-num js-line-number" data-line-number="10852"></td>
<td id="LC10852" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L10853" class="blob-num js-line-number" data-line-number="10853"></td>
<td id="LC10853" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10854" class="blob-num js-line-number" data-line-number="10854"></td>
<td id="LC10854" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>FileDrop<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>init<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L10855" class="blob-num js-line-number" data-line-number="10855"></td>
<td id="LC10855" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L10856" class="blob-num js-line-number" data-line-number="10856"></td>
<td id="LC10856" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L10857" class="blob-num js-line-number" data-line-number="10857"></td>
<td id="LC10857" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10858" class="blob-num js-line-number" data-line-number="10858"></td>
<td id="LC10858" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileDrop</span> <span class="pl-k">=</span> FileDrop);</td>
</tr>
<tr>
<td id="L10859" class="blob-num js-line-number" data-line-number="10859"></td>
<td id="LC10859" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10860" class="blob-num js-line-number" data-line-number="10860"></td>
<td id="LC10860" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10861" class="blob-num js-line-number" data-line-number="10861"></td>
<td id="LC10861" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/file/FileReader.js</span></td>
</tr>
<tr>
<td id="L10862" class="blob-num js-line-number" data-line-number="10862"></td>
<td id="LC10862" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10863" class="blob-num js-line-number" data-line-number="10863"></td>
<td id="LC10863" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10864" class="blob-num js-line-number" data-line-number="10864"></td>
<td id="LC10864" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReader.js</span></td>
</tr>
<tr>
<td id="L10865" class="blob-num js-line-number" data-line-number="10865"></td>
<td id="LC10865" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10866" class="blob-num js-line-number" data-line-number="10866"></td>
<td id="LC10866" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10867" class="blob-num js-line-number" data-line-number="10867"></td>
<td id="LC10867" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10868" class="blob-num js-line-number" data-line-number="10868"></td>
<td id="LC10868" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10869" class="blob-num js-line-number" data-line-number="10869"></td>
<td id="LC10869" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10870" class="blob-num js-line-number" data-line-number="10870"></td>
<td id="LC10870" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10871" class="blob-num js-line-number" data-line-number="10871"></td>
<td id="LC10871" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10872" class="blob-num js-line-number" data-line-number="10872"></td>
<td id="LC10872" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10873" class="blob-num js-line-number" data-line-number="10873"></td>
<td id="LC10873" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10874" class="blob-num js-line-number" data-line-number="10874"></td>
<td id="LC10874" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/file/FileReader</span></td>
</tr>
<tr>
<td id="L10875" class="blob-num js-line-number" data-line-number="10875"></td>
<td id="LC10875" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10876" class="blob-num js-line-number" data-line-number="10876"></td>
<td id="LC10876" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10877" class="blob-num js-line-number" data-line-number="10877"></td>
<td id="LC10877" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/file/FileReader<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10878" class="blob-num js-line-number" data-line-number="10878"></td>
<td id="LC10878" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10879" class="blob-num js-line-number" data-line-number="10879"></td>
<td id="LC10879" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10880" class="blob-num js-line-number" data-line-number="10880"></td>
<td id="LC10880" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/FileReader<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10881" class="blob-num js-line-number" data-line-number="10881"></td>
<td id="LC10881" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">FileReader</span>) {</td>
</tr>
<tr>
<td id="L10882" class="blob-num js-line-number" data-line-number="10882"></td>
<td id="LC10882" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileReader</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, <span class="pl-c1">FileReader</span>));</td>
</tr>
<tr>
<td id="L10883" class="blob-num js-line-number" data-line-number="10883"></td>
<td id="LC10883" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10884" class="blob-num js-line-number" data-line-number="10884"></td>
<td id="LC10884" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10885" class="blob-num js-line-number" data-line-number="10885"></td>
<td id="LC10885" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/file/FileReaderSync.js</span></td>
</tr>
<tr>
<td id="L10886" class="blob-num js-line-number" data-line-number="10886"></td>
<td id="LC10886" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10887" class="blob-num js-line-number" data-line-number="10887"></td>
<td id="LC10887" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10888" class="blob-num js-line-number" data-line-number="10888"></td>
<td id="LC10888" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReaderSync.js</span></td>
</tr>
<tr>
<td id="L10889" class="blob-num js-line-number" data-line-number="10889"></td>
<td id="LC10889" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10890" class="blob-num js-line-number" data-line-number="10890"></td>
<td id="LC10890" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10891" class="blob-num js-line-number" data-line-number="10891"></td>
<td id="LC10891" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10892" class="blob-num js-line-number" data-line-number="10892"></td>
<td id="LC10892" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10893" class="blob-num js-line-number" data-line-number="10893"></td>
<td id="LC10893" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10894" class="blob-num js-line-number" data-line-number="10894"></td>
<td id="LC10894" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10895" class="blob-num js-line-number" data-line-number="10895"></td>
<td id="LC10895" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10896" class="blob-num js-line-number" data-line-number="10896"></td>
<td id="LC10896" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10897" class="blob-num js-line-number" data-line-number="10897"></td>
<td id="LC10897" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10898" class="blob-num js-line-number" data-line-number="10898"></td>
<td id="LC10898" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/file/FileReaderSync</span></td>
</tr>
<tr>
<td id="L10899" class="blob-num js-line-number" data-line-number="10899"></td>
<td id="LC10899" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10900" class="blob-num js-line-number" data-line-number="10900"></td>
<td id="LC10900" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10901" class="blob-num js-line-number" data-line-number="10901"></td>
<td id="LC10901" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/file/FileReaderSync<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10902" class="blob-num js-line-number" data-line-number="10902"></td>
<td id="LC10902" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10903" class="blob-num js-line-number" data-line-number="10903"></td>
<td id="LC10903" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10904" class="blob-num js-line-number" data-line-number="10904"></td>
<td id="LC10904" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/file/FileReaderSync<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10905" class="blob-num js-line-number" data-line-number="10905"></td>
<td id="LC10905" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">FileReaderSync</span>) {</td>
</tr>
<tr>
<td id="L10906" class="blob-num js-line-number" data-line-number="10906"></td>
<td id="LC10906" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileReaderSync</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, <span class="pl-c1">FileReaderSync</span>));</td>
</tr>
<tr>
<td id="L10907" class="blob-num js-line-number" data-line-number="10907"></td>
<td id="LC10907" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10908" class="blob-num js-line-number" data-line-number="10908"></td>
<td id="LC10908" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10909" class="blob-num js-line-number" data-line-number="10909"></td>
<td id="LC10909" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/runtime/Transporter.js</span></td>
</tr>
<tr>
<td id="L10910" class="blob-num js-line-number" data-line-number="10910"></td>
<td id="LC10910" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10911" class="blob-num js-line-number" data-line-number="10911"></td>
<td id="LC10911" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10912" class="blob-num js-line-number" data-line-number="10912"></td>
<td id="LC10912" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Transporter.js</span></td>
</tr>
<tr>
<td id="L10913" class="blob-num js-line-number" data-line-number="10913"></td>
<td id="LC10913" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10914" class="blob-num js-line-number" data-line-number="10914"></td>
<td id="LC10914" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10915" class="blob-num js-line-number" data-line-number="10915"></td>
<td id="LC10915" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10916" class="blob-num js-line-number" data-line-number="10916"></td>
<td id="LC10916" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10917" class="blob-num js-line-number" data-line-number="10917"></td>
<td id="LC10917" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10918" class="blob-num js-line-number" data-line-number="10918"></td>
<td id="LC10918" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10919" class="blob-num js-line-number" data-line-number="10919"></td>
<td id="LC10919" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10920" class="blob-num js-line-number" data-line-number="10920"></td>
<td id="LC10920" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10921" class="blob-num js-line-number" data-line-number="10921"></td>
<td id="LC10921" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10922" class="blob-num js-line-number" data-line-number="10922"></td>
<td id="LC10922" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/runtime/Transporter</span></td>
</tr>
<tr>
<td id="L10923" class="blob-num js-line-number" data-line-number="10923"></td>
<td id="LC10923" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10924" class="blob-num js-line-number" data-line-number="10924"></td>
<td id="LC10924" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10925" class="blob-num js-line-number" data-line-number="10925"></td>
<td id="LC10925" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/runtime/Transporter<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10926" class="blob-num js-line-number" data-line-number="10926"></td>
<td id="LC10926" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10927" class="blob-num js-line-number" data-line-number="10927"></td>
<td id="LC10927" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10928" class="blob-num js-line-number" data-line-number="10928"></td>
<td id="LC10928" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/runtime/Transporter<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10929" class="blob-num js-line-number" data-line-number="10929"></td>
<td id="LC10929" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Transporter</span>) {</td>
</tr>
<tr>
<td id="L10930" class="blob-num js-line-number" data-line-number="10930"></td>
<td id="LC10930" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Transporter</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, Transporter));</td>
</tr>
<tr>
<td id="L10931" class="blob-num js-line-number" data-line-number="10931"></td>
<td id="LC10931" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10932" class="blob-num js-line-number" data-line-number="10932"></td>
<td id="LC10932" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10933" class="blob-num js-line-number" data-line-number="10933"></td>
<td id="LC10933" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/xhr/XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L10934" class="blob-num js-line-number" data-line-number="10934"></td>
<td id="LC10934" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10935" class="blob-num js-line-number" data-line-number="10935"></td>
<td id="LC10935" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10936" class="blob-num js-line-number" data-line-number="10936"></td>
<td id="LC10936" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L10937" class="blob-num js-line-number" data-line-number="10937"></td>
<td id="LC10937" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10938" class="blob-num js-line-number" data-line-number="10938"></td>
<td id="LC10938" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10939" class="blob-num js-line-number" data-line-number="10939"></td>
<td id="LC10939" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10940" class="blob-num js-line-number" data-line-number="10940"></td>
<td id="LC10940" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10941" class="blob-num js-line-number" data-line-number="10941"></td>
<td id="LC10941" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10942" class="blob-num js-line-number" data-line-number="10942"></td>
<td id="LC10942" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10943" class="blob-num js-line-number" data-line-number="10943"></td>
<td id="LC10943" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10944" class="blob-num js-line-number" data-line-number="10944"></td>
<td id="LC10944" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10945" class="blob-num js-line-number" data-line-number="10945"></td>
<td id="LC10945" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10946" class="blob-num js-line-number" data-line-number="10946"></td>
<td id="LC10946" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/xhr/XMLHttpRequest</span></td>
</tr>
<tr>
<td id="L10947" class="blob-num js-line-number" data-line-number="10947"></td>
<td id="LC10947" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10948" class="blob-num js-line-number" data-line-number="10948"></td>
<td id="LC10948" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10949" class="blob-num js-line-number" data-line-number="10949"></td>
<td id="LC10949" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10950" class="blob-num js-line-number" data-line-number="10950"></td>
<td id="LC10950" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10951" class="blob-num js-line-number" data-line-number="10951"></td>
<td id="LC10951" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10952" class="blob-num js-line-number" data-line-number="10952"></td>
<td id="LC10952" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10953" class="blob-num js-line-number" data-line-number="10953"></td>
<td id="LC10953" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/file/FileReaderSync<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10954" class="blob-num js-line-number" data-line-number="10954"></td>
<td id="LC10954" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/runtime/Transporter<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10955" class="blob-num js-line-number" data-line-number="10955"></td>
<td id="LC10955" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">XMLHttpRequest</span>, <span class="pl-smi">FileReaderSyncSilverlight</span>, <span class="pl-smi">TransporterSilverlight</span>) {</td>
</tr>
<tr>
<td id="L10956" class="blob-num js-line-number" data-line-number="10956"></td>
<td id="LC10956" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, <span class="pl-c1">XMLHttpRequest</span>));</td>
</tr>
<tr>
<td id="L10957" class="blob-num js-line-number" data-line-number="10957"></td>
<td id="LC10957" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L10958" class="blob-num js-line-number" data-line-number="10958"></td>
<td id="LC10958" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10959" class="blob-num js-line-number" data-line-number="10959"></td>
<td id="LC10959" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/silverlight/image/Image.js</span></td>
</tr>
<tr>
<td id="L10960" class="blob-num js-line-number" data-line-number="10960"></td>
<td id="LC10960" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10961" class="blob-num js-line-number" data-line-number="10961"></td>
<td id="LC10961" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10962" class="blob-num js-line-number" data-line-number="10962"></td>
<td id="LC10962" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Image.js</span></td>
</tr>
<tr>
<td id="L10963" class="blob-num js-line-number" data-line-number="10963"></td>
<td id="LC10963" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10964" class="blob-num js-line-number" data-line-number="10964"></td>
<td id="LC10964" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L10965" class="blob-num js-line-number" data-line-number="10965"></td>
<td id="LC10965" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L10966" class="blob-num js-line-number" data-line-number="10966"></td>
<td id="LC10966" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L10967" class="blob-num js-line-number" data-line-number="10967"></td>
<td id="LC10967" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L10968" class="blob-num js-line-number" data-line-number="10968"></td>
<td id="LC10968" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L10969" class="blob-num js-line-number" data-line-number="10969"></td>
<td id="LC10969" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10970" class="blob-num js-line-number" data-line-number="10970"></td>
<td id="LC10970" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L10971" class="blob-num js-line-number" data-line-number="10971"></td>
<td id="LC10971" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L10972" class="blob-num js-line-number" data-line-number="10972"></td>
<td id="LC10972" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/silverlight/image/Image</span></td>
</tr>
<tr>
<td id="L10973" class="blob-num js-line-number" data-line-number="10973"></td>
<td id="LC10973" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L10974" class="blob-num js-line-number" data-line-number="10974"></td>
<td id="LC10974" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L10975" class="blob-num js-line-number" data-line-number="10975"></td>
<td id="LC10975" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/image/Image<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L10976" class="blob-num js-line-number" data-line-number="10976"></td>
<td id="LC10976" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/silverlight/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10977" class="blob-num js-line-number" data-line-number="10977"></td>
<td id="LC10977" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10978" class="blob-num js-line-number" data-line-number="10978"></td>
<td id="LC10978" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L10979" class="blob-num js-line-number" data-line-number="10979"></td>
<td id="LC10979" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/flash/image/Image<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L10980" class="blob-num js-line-number" data-line-number="10980"></td>
<td id="LC10980" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-c1">Blob</span>, <span class="pl-smi">Image</span>) {</td>
</tr>
<tr>
<td id="L10981" class="blob-num js-line-number" data-line-number="10981"></td>
<td id="LC10981" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Image</span> <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>({}, Image, {</td>
</tr>
<tr>
<td id="L10982" class="blob-num js-line-number" data-line-number="10982"></td>
<td id="LC10982" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10983" class="blob-num js-line-number" data-line-number="10983"></td>
<td id="LC10983" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getInfo</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L10984" class="blob-num js-line-number" data-line-number="10984"></td>
<td id="LC10984" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> self <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L10985" class="blob-num js-line-number" data-line-number="10985"></td>
<td id="LC10985" class="blob-code blob-code-inner js-file-line"> , grps <span class="pl-k">=</span> [<span class="pl-s"><span class="pl-pds">'</span>tiff<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>exif<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>gps<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>thumb<span class="pl-pds">'</span></span>]</td>
</tr>
<tr>
<td id="L10986" class="blob-num js-line-number" data-line-number="10986"></td>
<td id="LC10986" class="blob-code blob-code-inner js-file-line"> , info <span class="pl-k">=</span> { meta<span class="pl-k">:</span> {} }</td>
</tr>
<tr>
<td id="L10987" class="blob-num js-line-number" data-line-number="10987"></td>
<td id="LC10987" class="blob-code blob-code-inner js-file-line"> , rawInfo <span class="pl-k">=</span> <span class="pl-smi">self</span>.<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>getInfo<span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L10988" class="blob-num js-line-number" data-line-number="10988"></td>
<td id="LC10988" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L10989" class="blob-num js-line-number" data-line-number="10989"></td>
<td id="LC10989" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L10990" class="blob-num js-line-number" data-line-number="10990"></td>
<td id="LC10990" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">rawInfo</span>.<span class="pl-smi">meta</span>) {</td>
</tr>
<tr>
<td id="L10991" class="blob-num js-line-number" data-line-number="10991"></td>
<td id="LC10991" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">each</span>(grps, <span class="pl-k">function</span>(<span class="pl-smi">grp</span>) {</td>
</tr>
<tr>
<td id="L10992" class="blob-num js-line-number" data-line-number="10992"></td>
<td id="LC10992" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> meta <span class="pl-k">=</span> <span class="pl-smi">rawInfo</span>.<span class="pl-smi">meta</span>[grp]</td>
</tr>
<tr>
<td id="L10993" class="blob-num js-line-number" data-line-number="10993"></td>
<td id="LC10993" class="blob-code blob-code-inner js-file-line"> , tag</td>
</tr>
<tr>
<td id="L10994" class="blob-num js-line-number" data-line-number="10994"></td>
<td id="LC10994" class="blob-code blob-code-inner js-file-line"> , i</td>
</tr>
<tr>
<td id="L10995" class="blob-num js-line-number" data-line-number="10995"></td>
<td id="LC10995" class="blob-code blob-code-inner js-file-line"> , length</td>
</tr>
<tr>
<td id="L10996" class="blob-num js-line-number" data-line-number="10996"></td>
<td id="LC10996" class="blob-code blob-code-inner js-file-line"> , value</td>
</tr>
<tr>
<td id="L10997" class="blob-num js-line-number" data-line-number="10997"></td>
<td id="LC10997" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L10998" class="blob-num js-line-number" data-line-number="10998"></td>
<td id="LC10998" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (meta <span class="pl-k">&&</span> <span class="pl-smi">meta</span>.<span class="pl-smi">keys</span>) {</td>
</tr>
<tr>
<td id="L10999" class="blob-num js-line-number" data-line-number="10999"></td>
<td id="LC10999" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>[grp] <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L11000" class="blob-num js-line-number" data-line-number="11000"></td>
<td id="LC11000" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">for</span> (i <span class="pl-k">=</span> <span class="pl-c1">0</span>, length <span class="pl-k">=</span> <span class="pl-smi">meta</span>.<span class="pl-smi">keys</span>.<span class="pl-c1">length</span>; i <span class="pl-k"><</span> length; i<span class="pl-k">++</span>) {</td>
</tr>
<tr>
<td id="L11001" class="blob-num js-line-number" data-line-number="11001"></td>
<td id="LC11001" class="blob-code blob-code-inner js-file-line"> tag <span class="pl-k">=</span> <span class="pl-smi">meta</span>.<span class="pl-smi">keys</span>[i];</td>
</tr>
<tr>
<td id="L11002" class="blob-num js-line-number" data-line-number="11002"></td>
<td id="LC11002" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> meta[tag];</td>
</tr>
<tr>
<td id="L11003" class="blob-num js-line-number" data-line-number="11003"></td>
<td id="LC11003" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value) {</td>
</tr>
<tr>
<td id="L11004" class="blob-num js-line-number" data-line-number="11004"></td>
<td id="LC11004" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> convert numbers</span></td>
</tr>
<tr>
<td id="L11005" class="blob-num js-line-number" data-line-number="11005"></td>
<td id="LC11005" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>(<span class="pl-c1">\d</span><span class="pl-k">|</span><span class="pl-c1">[<span class="pl-c1">1-9</span>]</span><span class="pl-c1">\d</span><span class="pl-k">+</span>)<span class="pl-k">$</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(value)) { <span class="pl-c"><span class="pl-c">//</span> integer (make sure doesn't start with zero)</span></td>
</tr>
<tr>
<td id="L11006" class="blob-num js-line-number" data-line-number="11006"></td>
<td id="LC11006" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(value, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L11007" class="blob-num js-line-number" data-line-number="11007"></td>
<td id="LC11007" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-c1">\d</span><span class="pl-k">*</span><span class="pl-cce">\.</span><span class="pl-c1">\d</span><span class="pl-k">+</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(value)) { <span class="pl-c"><span class="pl-c">//</span> double</span></td>
</tr>
<tr>
<td id="L11008" class="blob-num js-line-number" data-line-number="11008"></td>
<td id="LC11008" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">=</span> <span class="pl-c1">parseFloat</span>(value);</td>
</tr>
<tr>
<td id="L11009" class="blob-num js-line-number" data-line-number="11009"></td>
<td id="LC11009" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11010" class="blob-num js-line-number" data-line-number="11010"></td>
<td id="LC11010" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>[grp][tag] <span class="pl-k">=</span> value;</td>
</tr>
<tr>
<td id="L11011" class="blob-num js-line-number" data-line-number="11011"></td>
<td id="LC11011" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11012" class="blob-num js-line-number" data-line-number="11012"></td>
<td id="LC11012" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11013" class="blob-num js-line-number" data-line-number="11013"></td>
<td id="LC11013" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11014" class="blob-num js-line-number" data-line-number="11014"></td>
<td id="LC11014" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11015" class="blob-num js-line-number" data-line-number="11015"></td>
<td id="LC11015" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11016" class="blob-num js-line-number" data-line-number="11016"></td>
<td id="LC11016" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> save thumb data as blob</span></td>
</tr>
<tr>
<td id="L11017" class="blob-num js-line-number" data-line-number="11017"></td>
<td id="LC11017" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">info</span>.<span class="pl-smi">meta</span> <span class="pl-k">&&</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span> <span class="pl-k">&&</span> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">&&</span> <span class="pl-k">!</span>(<span class="pl-smi">self</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>)) {</td>
</tr>
<tr>
<td id="L11018" class="blob-num js-line-number" data-line-number="11018"></td>
<td id="LC11018" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span> <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Blob</span>(<span class="pl-smi">self</span>.<span class="pl-smi">uid</span>, <span class="pl-smi">info</span>.<span class="pl-smi">meta</span>.<span class="pl-smi">thumb</span>.<span class="pl-c1">data</span>);</td>
</tr>
<tr>
<td id="L11019" class="blob-num js-line-number" data-line-number="11019"></td>
<td id="LC11019" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11020" class="blob-num js-line-number" data-line-number="11020"></td>
<td id="LC11020" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11021" class="blob-num js-line-number" data-line-number="11021"></td>
<td id="LC11021" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11022" class="blob-num js-line-number" data-line-number="11022"></td>
<td id="LC11022" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-c1">width</span> <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(<span class="pl-smi">rawInfo</span>.<span class="pl-c1">width</span>, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L11023" class="blob-num js-line-number" data-line-number="11023"></td>
<td id="LC11023" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-c1">height</span> <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(<span class="pl-smi">rawInfo</span>.<span class="pl-c1">height</span>, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L11024" class="blob-num js-line-number" data-line-number="11024"></td>
<td id="LC11024" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-c1">size</span> <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(<span class="pl-smi">rawInfo</span>.<span class="pl-c1">size</span>, <span class="pl-c1">10</span>);</td>
</tr>
<tr>
<td id="L11025" class="blob-num js-line-number" data-line-number="11025"></td>
<td id="LC11025" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-c1">type</span> <span class="pl-k">=</span> <span class="pl-smi">rawInfo</span>.<span class="pl-c1">type</span>;</td>
</tr>
<tr>
<td id="L11026" class="blob-num js-line-number" data-line-number="11026"></td>
<td id="LC11026" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">info</span>.<span class="pl-c1">name</span> <span class="pl-k">=</span> <span class="pl-smi">rawInfo</span>.<span class="pl-c1">name</span>;</td>
</tr>
<tr>
<td id="L11027" class="blob-num js-line-number" data-line-number="11027"></td>
<td id="LC11027" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11028" class="blob-num js-line-number" data-line-number="11028"></td>
<td id="LC11028" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> info;</td>
</tr>
<tr>
<td id="L11029" class="blob-num js-line-number" data-line-number="11029"></td>
<td id="LC11029" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11030" class="blob-num js-line-number" data-line-number="11030"></td>
<td id="LC11030" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11031" class="blob-num js-line-number" data-line-number="11031"></td>
<td id="LC11031" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">resize</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">rect</span>, <span class="pl-smi">ratio</span>, <span class="pl-smi">opts</span>) {</td>
</tr>
<tr>
<td id="L11032" class="blob-num js-line-number" data-line-number="11032"></td>
<td id="LC11032" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-smi">shimExec</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-s"><span class="pl-pds">'</span>Image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>resize<span class="pl-pds">'</span></span>, <span class="pl-smi">rect</span>.<span class="pl-c1">x</span>, <span class="pl-smi">rect</span>.<span class="pl-c1">y</span>, <span class="pl-smi">rect</span>.<span class="pl-c1">width</span>, <span class="pl-smi">rect</span>.<span class="pl-c1">height</span>, ratio, <span class="pl-smi">opts</span>.<span class="pl-smi">preserveHeaders</span>, <span class="pl-smi">opts</span>.<span class="pl-smi">resample</span>);</td>
</tr>
<tr>
<td id="L11033" class="blob-num js-line-number" data-line-number="11033"></td>
<td id="LC11033" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11034" class="blob-num js-line-number" data-line-number="11034"></td>
<td id="LC11034" class="blob-code blob-code-inner js-file-line"> }));</td>
</tr>
<tr>
<td id="L11035" class="blob-num js-line-number" data-line-number="11035"></td>
<td id="LC11035" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L11036" class="blob-num js-line-number" data-line-number="11036"></td>
<td id="LC11036" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11037" class="blob-num js-line-number" data-line-number="11037"></td>
<td id="LC11037" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html4/Runtime.js</span></td>
</tr>
<tr>
<td id="L11038" class="blob-num js-line-number" data-line-number="11038"></td>
<td id="LC11038" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11039" class="blob-num js-line-number" data-line-number="11039"></td>
<td id="LC11039" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11040" class="blob-num js-line-number" data-line-number="11040"></td>
<td id="LC11040" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Runtime.js</span></td>
</tr>
<tr>
<td id="L11041" class="blob-num js-line-number" data-line-number="11041"></td>
<td id="LC11041" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11042" class="blob-num js-line-number" data-line-number="11042"></td>
<td id="LC11042" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L11043" class="blob-num js-line-number" data-line-number="11043"></td>
<td id="LC11043" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L11044" class="blob-num js-line-number" data-line-number="11044"></td>
<td id="LC11044" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11045" class="blob-num js-line-number" data-line-number="11045"></td>
<td id="LC11045" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L11046" class="blob-num js-line-number" data-line-number="11046"></td>
<td id="LC11046" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L11047" class="blob-num js-line-number" data-line-number="11047"></td>
<td id="LC11047" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11048" class="blob-num js-line-number" data-line-number="11048"></td>
<td id="LC11048" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11049" class="blob-num js-line-number" data-line-number="11049"></td>
<td id="LC11049" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/*</span>global File:true <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11050" class="blob-num js-line-number" data-line-number="11050"></td>
<td id="LC11050" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11051" class="blob-num js-line-number" data-line-number="11051"></td>
<td id="LC11051" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11052" class="blob-num js-line-number" data-line-number="11052"></td>
<td id="LC11052" class="blob-code blob-code-inner js-file-line"><span class="pl-c">Defines constructor for HTML4 runtime.</span></td>
</tr>
<tr>
<td id="L11053" class="blob-num js-line-number" data-line-number="11053"></td>
<td id="LC11053" class="blob-code blob-code-inner js-file-line"><span class="pl-c"></span></td>
</tr>
<tr>
<td id="L11054" class="blob-num js-line-number" data-line-number="11054"></td>
<td id="LC11054" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html4/Runtime</span></td>
</tr>
<tr>
<td id="L11055" class="blob-num js-line-number" data-line-number="11055"></td>
<td id="LC11055" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L11056" class="blob-num js-line-number" data-line-number="11056"></td>
<td id="LC11056" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11057" class="blob-num js-line-number" data-line-number="11057"></td>
<td id="LC11057" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/Runtime<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L11058" class="blob-num js-line-number" data-line-number="11058"></td>
<td id="LC11058" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11059" class="blob-num js-line-number" data-line-number="11059"></td>
<td id="LC11059" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11060" class="blob-num js-line-number" data-line-number="11060"></td>
<td id="LC11060" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11061" class="blob-num js-line-number" data-line-number="11061"></td>
<td id="LC11061" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L11062" class="blob-num js-line-number" data-line-number="11062"></td>
<td id="LC11062" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">Basic</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Runtime</span>, <span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L11063" class="blob-num js-line-number" data-line-number="11063"></td>
<td id="LC11063" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11064" class="blob-num js-line-number" data-line-number="11064"></td>
<td id="LC11064" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> type <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>html4<span class="pl-pds">'</span></span>, extensions <span class="pl-k">=</span> {};</td>
</tr>
<tr>
<td id="L11065" class="blob-num js-line-number" data-line-number="11065"></td>
<td id="LC11065" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11066" class="blob-num js-line-number" data-line-number="11066"></td>
<td id="LC11066" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">Html4Runtime</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L11067" class="blob-num js-line-number" data-line-number="11067"></td>
<td id="LC11067" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span></td>
</tr>
<tr>
<td id="L11068" class="blob-num js-line-number" data-line-number="11068"></td>
<td id="LC11068" class="blob-code blob-code-inner js-file-line"> , Test <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTest</span></td>
</tr>
<tr>
<td id="L11069" class="blob-num js-line-number" data-line-number="11069"></td>
<td id="LC11069" class="blob-code blob-code-inner js-file-line"> , True <span class="pl-k">=</span> <span class="pl-smi">Runtime</span>.<span class="pl-smi">capTrue</span></td>
</tr>
<tr>
<td id="L11070" class="blob-num js-line-number" data-line-number="11070"></td>
<td id="LC11070" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L11071" class="blob-num js-line-number" data-line-number="11071"></td>
<td id="LC11071" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11072" class="blob-num js-line-number" data-line-number="11072"></td>
<td id="LC11072" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, options, type, {</td>
</tr>
<tr>
<td id="L11073" class="blob-num js-line-number" data-line-number="11073"></td>
<td id="LC11073" class="blob-code blob-code-inner js-file-line"> access_binary<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-c1">window</span>.<span class="pl-smi">FileReader</span> <span class="pl-k">||</span> <span class="pl-c1">window</span>.<span class="pl-smi">File</span> <span class="pl-k">&&</span> <span class="pl-c1">File</span>.<span class="pl-smi">getAsDataURL</span>),</td>
</tr>
<tr>
<td id="L11074" class="blob-num js-line-number" data-line-number="11074"></td>
<td id="LC11074" class="blob-code blob-code-inner js-file-line"> access_image_binary<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11075" class="blob-num js-line-number" data-line-number="11075"></td>
<td id="LC11075" class="blob-code blob-code-inner js-file-line"> display_media<span class="pl-k">:</span> <span class="pl-en">Test</span>(</td>
</tr>
<tr>
<td id="L11076" class="blob-num js-line-number" data-line-number="11076"></td>
<td id="LC11076" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>create_canvas<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>use_data_uri_over32kb<span class="pl-pds">'</span></span>)) <span class="pl-k">&&</span> </td>
</tr>
<tr>
<td id="L11077" class="blob-num js-line-number" data-line-number="11077"></td>
<td id="LC11077" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">defined</span>(<span class="pl-s"><span class="pl-pds">'</span>moxie/image/Image<span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L11078" class="blob-num js-line-number" data-line-number="11078"></td>
<td id="LC11078" class="blob-code blob-code-inner js-file-line"> ),</td>
</tr>
<tr>
<td id="L11079" class="blob-num js-line-number" data-line-number="11079"></td>
<td id="LC11079" class="blob-code blob-code-inner js-file-line"> do_cors<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11080" class="blob-num js-line-number" data-line-number="11080"></td>
<td id="LC11080" class="blob-code blob-code-inner js-file-line"> drag_and_drop<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11081" class="blob-num js-line-number" data-line-number="11081"></td>
<td id="LC11081" class="blob-code blob-code-inner js-file-line"> filter_by_extension<span class="pl-k">:</span> <span class="pl-en">Test</span>(<span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> if you know how to feature-detect this, please suggest</span></td>
</tr>
<tr>
<td id="L11082" class="blob-num js-line-number" data-line-number="11082"></td>
<td id="LC11082" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span>(</td>
</tr>
<tr>
<td id="L11083" class="blob-num js-line-number" data-line-number="11083"></td>
<td id="LC11083" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Chrome<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">28</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span> </td>
</tr>
<tr>
<td id="L11084" class="blob-num js-line-number" data-line-number="11084"></td>
<td id="LC11084" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">10</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span> </td>
</tr>
<tr>
<td id="L11085" class="blob-num js-line-number" data-line-number="11085"></td>
<td id="LC11085" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Safari<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">11</span>, <span class="pl-s"><span class="pl-pds">'</span><=<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L11086" class="blob-num js-line-number" data-line-number="11086"></td>
<td id="LC11086" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Firefox<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">37</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L11087" class="blob-num js-line-number" data-line-number="11087"></td>
<td id="LC11087" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">os</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>iOS<span class="pl-pds">'</span></span> <span class="pl-k">||</span> <span class="pl-c"><span class="pl-c">//</span> as of iOS11, no extensions are supported in accept attribute</span></td>
</tr>
<tr>
<td id="L11088" class="blob-num js-line-number" data-line-number="11088"></td>
<td id="LC11088" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Env</span>.<span class="pl-smi">os</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Android<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L11089" class="blob-num js-line-number" data-line-number="11089"></td>
<td id="LC11089" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L11090" class="blob-num js-line-number" data-line-number="11090"></td>
<td id="LC11090" class="blob-code blob-code-inner js-file-line"> }()),</td>
</tr>
<tr>
<td id="L11091" class="blob-num js-line-number" data-line-number="11091"></td>
<td id="LC11091" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">resize_image</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11092" class="blob-num js-line-number" data-line-number="11092"></td>
<td id="LC11092" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">extensions</span>.<span class="pl-smi">Image</span> <span class="pl-k">&&</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>access_binary<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>create_canvas<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11093" class="blob-num js-line-number" data-line-number="11093"></td>
<td id="LC11093" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11094" class="blob-num js-line-number" data-line-number="11094"></td>
<td id="LC11094" class="blob-code blob-code-inner js-file-line"> report_upload_progress<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11095" class="blob-num js-line-number" data-line-number="11095"></td>
<td id="LC11095" class="blob-code blob-code-inner js-file-line"> return_response_headers<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11096" class="blob-num js-line-number" data-line-number="11096"></td>
<td id="LC11096" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_response_type</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L11097" class="blob-num js-line-number" data-line-number="11097"></td>
<td id="LC11097" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (responseType <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span>) {</td>
</tr>
<tr>
<td id="L11098" class="blob-num js-line-number" data-line-number="11098"></td>
<td id="LC11098" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</td>
</tr>
<tr>
<td id="L11099" class="blob-num js-line-number" data-line-number="11099"></td>
<td id="LC11099" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L11100" class="blob-num js-line-number" data-line-number="11100"></td>
<td id="LC11100" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!!</span><span class="pl-k">~</span><span class="pl-smi">Basic</span>.<span class="pl-en">inArray</span>(responseType, [<span class="pl-s"><span class="pl-pds">'</span>text<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>]);</td>
</tr>
<tr>
<td id="L11101" class="blob-num js-line-number" data-line-number="11101"></td>
<td id="LC11101" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11102" class="blob-num js-line-number" data-line-number="11102"></td>
<td id="LC11102" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">return_status_code</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">code</span>) {</td>
</tr>
<tr>
<td id="L11103" class="blob-num js-line-number" data-line-number="11103"></td>
<td id="LC11103" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(code, [<span class="pl-c1">200</span>, <span class="pl-c1">404</span>]);</td>
</tr>
<tr>
<td id="L11104" class="blob-num js-line-number" data-line-number="11104"></td>
<td id="LC11104" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11105" class="blob-num js-line-number" data-line-number="11105"></td>
<td id="LC11105" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">select_file</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11106" class="blob-num js-line-number" data-line-number="11106"></td>
<td id="LC11106" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-smi">Env</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>use_fileinput<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11107" class="blob-num js-line-number" data-line-number="11107"></td>
<td id="LC11107" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11108" class="blob-num js-line-number" data-line-number="11108"></td>
<td id="LC11108" class="blob-code blob-code-inner js-file-line"> select_multiple<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11109" class="blob-num js-line-number" data-line-number="11109"></td>
<td id="LC11109" class="blob-code blob-code-inner js-file-line"> send_binary_string<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11110" class="blob-num js-line-number" data-line-number="11110"></td>
<td id="LC11110" class="blob-code blob-code-inner js-file-line"> send_custom_headers<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11111" class="blob-num js-line-number" data-line-number="11111"></td>
<td id="LC11111" class="blob-code blob-code-inner js-file-line"> send_multipart<span class="pl-k">:</span> <span class="pl-c1">true</span>,</td>
</tr>
<tr>
<td id="L11112" class="blob-num js-line-number" data-line-number="11112"></td>
<td id="LC11112" class="blob-code blob-code-inner js-file-line"> slice_blob<span class="pl-k">:</span> <span class="pl-c1">false</span>,</td>
</tr>
<tr>
<td id="L11113" class="blob-num js-line-number" data-line-number="11113"></td>
<td id="LC11113" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">stream_upload</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11114" class="blob-num js-line-number" data-line-number="11114"></td>
<td id="LC11114" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_file<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11115" class="blob-num js-line-number" data-line-number="11115"></td>
<td id="LC11115" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11116" class="blob-num js-line-number" data-line-number="11116"></td>
<td id="LC11116" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">summon_file_dialog</span><span class="pl-k">:</span> <span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> yeah... some dirty sniffing here...</span></td>
</tr>
<tr>
<td id="L11117" class="blob-num js-line-number" data-line-number="11117"></td>
<td id="LC11117" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>select_file<span class="pl-pds">'</span></span>) <span class="pl-k">&&</span> <span class="pl-k">!</span>(</td>
</tr>
<tr>
<td id="L11118" class="blob-num js-line-number" data-line-number="11118"></td>
<td id="LC11118" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Firefox<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">4</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L11119" class="blob-num js-line-number" data-line-number="11119"></td>
<td id="LC11119" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>Opera<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">12</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) <span class="pl-k">||</span></td>
</tr>
<tr>
<td id="L11120" class="blob-num js-line-number" data-line-number="11120"></td>
<td id="LC11120" class="blob-code blob-code-inner js-file-line"> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">10</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>))</td>
</tr>
<tr>
<td id="L11121" class="blob-num js-line-number" data-line-number="11121"></td>
<td id="LC11121" class="blob-code blob-code-inner js-file-line"> );</td>
</tr>
<tr>
<td id="L11122" class="blob-num js-line-number" data-line-number="11122"></td>
<td id="LC11122" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11123" class="blob-num js-line-number" data-line-number="11123"></td>
<td id="LC11123" class="blob-code blob-code-inner js-file-line"> upload_filesize<span class="pl-k">:</span> True,</td>
</tr>
<tr>
<td id="L11124" class="blob-num js-line-number" data-line-number="11124"></td>
<td id="LC11124" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">use_http_method</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">methods</span>) {</td>
</tr>
<tr>
<td id="L11125" class="blob-num js-line-number" data-line-number="11125"></td>
<td id="LC11125" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">!</span><span class="pl-smi">Basic</span>.<span class="pl-en">arrayDiff</span>(methods, [<span class="pl-s"><span class="pl-pds">'</span>GET<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>POST<span class="pl-pds">'</span></span>]);</td>
</tr>
<tr>
<td id="L11126" class="blob-num js-line-number" data-line-number="11126"></td>
<td id="LC11126" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11127" class="blob-num js-line-number" data-line-number="11127"></td>
<td id="LC11127" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11128" class="blob-num js-line-number" data-line-number="11128"></td>
<td id="LC11128" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11129" class="blob-num js-line-number" data-line-number="11129"></td>
<td id="LC11129" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11130" class="blob-num js-line-number" data-line-number="11130"></td>
<td id="LC11130" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L11131" class="blob-num js-line-number" data-line-number="11131"></td>
<td id="LC11131" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span> <span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11132" class="blob-num js-line-number" data-line-number="11132"></td>
<td id="LC11132" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">"</span>Init<span class="pl-pds">"</span></span>);</td>
</tr>
<tr>
<td id="L11133" class="blob-num js-line-number" data-line-number="11133"></td>
<td id="LC11133" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11134" class="blob-num js-line-number" data-line-number="11134"></td>
<td id="LC11134" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11135" class="blob-num js-line-number" data-line-number="11135"></td>
<td id="LC11135" class="blob-code blob-code-inner js-file-line"> destroy<span class="pl-k">:</span> (<span class="pl-k">function</span>(<span class="pl-smi">destroy</span>) { <span class="pl-c"><span class="pl-c">//</span> extend default destroy method</span></td>
</tr>
<tr>
<td id="L11136" class="blob-num js-line-number" data-line-number="11136"></td>
<td id="LC11136" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11137" class="blob-num js-line-number" data-line-number="11137"></td>
<td id="LC11137" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">destroy</span>.<span class="pl-c1">call</span>(<span class="pl-c1">I</span>);</td>
</tr>
<tr>
<td id="L11138" class="blob-num js-line-number" data-line-number="11138"></td>
<td id="LC11138" class="blob-code blob-code-inner js-file-line"> destroy <span class="pl-k">=</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11139" class="blob-num js-line-number" data-line-number="11139"></td>
<td id="LC11139" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L11140" class="blob-num js-line-number" data-line-number="11140"></td>
<td id="LC11140" class="blob-code blob-code-inner js-file-line"> }(<span class="pl-c1">this</span>.<span class="pl-smi">destroy</span>))</td>
</tr>
<tr>
<td id="L11141" class="blob-num js-line-number" data-line-number="11141"></td>
<td id="LC11141" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11142" class="blob-num js-line-number" data-line-number="11142"></td>
<td id="LC11142" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11143" class="blob-num js-line-number" data-line-number="11143"></td>
<td id="LC11143" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>.<span class="pl-en">getShim</span>(), extensions);</td>
</tr>
<tr>
<td id="L11144" class="blob-num js-line-number" data-line-number="11144"></td>
<td id="LC11144" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11145" class="blob-num js-line-number" data-line-number="11145"></td>
<td id="LC11145" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11146" class="blob-num js-line-number" data-line-number="11146"></td>
<td id="LC11146" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Runtime</span>.<span class="pl-en">addConstructor</span>(type, Html4Runtime);</td>
</tr>
<tr>
<td id="L11147" class="blob-num js-line-number" data-line-number="11147"></td>
<td id="LC11147" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11148" class="blob-num js-line-number" data-line-number="11148"></td>
<td id="LC11148" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> extensions;</td>
</tr>
<tr>
<td id="L11149" class="blob-num js-line-number" data-line-number="11149"></td>
<td id="LC11149" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L11150" class="blob-num js-line-number" data-line-number="11150"></td>
<td id="LC11150" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11151" class="blob-num js-line-number" data-line-number="11151"></td>
<td id="LC11151" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html4/file/FileInput.js</span></td>
</tr>
<tr>
<td id="L11152" class="blob-num js-line-number" data-line-number="11152"></td>
<td id="LC11152" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11153" class="blob-num js-line-number" data-line-number="11153"></td>
<td id="LC11153" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11154" class="blob-num js-line-number" data-line-number="11154"></td>
<td id="LC11154" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileInput.js</span></td>
</tr>
<tr>
<td id="L11155" class="blob-num js-line-number" data-line-number="11155"></td>
<td id="LC11155" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11156" class="blob-num js-line-number" data-line-number="11156"></td>
<td id="LC11156" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L11157" class="blob-num js-line-number" data-line-number="11157"></td>
<td id="LC11157" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L11158" class="blob-num js-line-number" data-line-number="11158"></td>
<td id="LC11158" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11159" class="blob-num js-line-number" data-line-number="11159"></td>
<td id="LC11159" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L11160" class="blob-num js-line-number" data-line-number="11160"></td>
<td id="LC11160" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L11161" class="blob-num js-line-number" data-line-number="11161"></td>
<td id="LC11161" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11162" class="blob-num js-line-number" data-line-number="11162"></td>
<td id="LC11162" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11163" class="blob-num js-line-number" data-line-number="11163"></td>
<td id="LC11163" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11164" class="blob-num js-line-number" data-line-number="11164"></td>
<td id="LC11164" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html4/file/FileInput</span></td>
</tr>
<tr>
<td id="L11165" class="blob-num js-line-number" data-line-number="11165"></td>
<td id="LC11165" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L11166" class="blob-num js-line-number" data-line-number="11166"></td>
<td id="LC11166" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11167" class="blob-num js-line-number" data-line-number="11167"></td>
<td id="LC11167" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/file/FileInput<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L11168" class="blob-num js-line-number" data-line-number="11168"></td>
<td id="LC11168" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11169" class="blob-num js-line-number" data-line-number="11169"></td>
<td id="LC11169" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11170" class="blob-num js-line-number" data-line-number="11170"></td>
<td id="LC11170" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11171" class="blob-num js-line-number" data-line-number="11171"></td>
<td id="LC11171" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11172" class="blob-num js-line-number" data-line-number="11172"></td>
<td id="LC11172" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Events<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11173" class="blob-num js-line-number" data-line-number="11173"></td>
<td id="LC11173" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11174" class="blob-num js-line-number" data-line-number="11174"></td>
<td id="LC11174" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L11175" class="blob-num js-line-number" data-line-number="11175"></td>
<td id="LC11175" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">File</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Events</span>, <span class="pl-smi">Mime</span>, <span class="pl-smi">Env</span>) {</td>
</tr>
<tr>
<td id="L11176" class="blob-num js-line-number" data-line-number="11176"></td>
<td id="LC11176" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11177" class="blob-num js-line-number" data-line-number="11177"></td>
<td id="LC11177" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">FileInput</span>() {</td>
</tr>
<tr>
<td id="L11178" class="blob-num js-line-number" data-line-number="11178"></td>
<td id="LC11178" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _uid, _mimes <span class="pl-k">=</span> [], _options, _browseBtnZIndex; <span class="pl-c"><span class="pl-c">//</span> save original z-index;</span></td>
</tr>
<tr>
<td id="L11179" class="blob-num js-line-number" data-line-number="11179"></td>
<td id="LC11179" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11180" class="blob-num js-line-number" data-line-number="11180"></td>
<td id="LC11180" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">addInput</span>() {</td>
</tr>
<tr>
<td id="L11181" class="blob-num js-line-number" data-line-number="11181"></td>
<td id="LC11181" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-smi">comp</span>.<span class="pl-en">getRuntime</span>(), shimContainer, browseButton, currForm, form, input, uid;</td>
</tr>
<tr>
<td id="L11182" class="blob-num js-line-number" data-line-number="11182"></td>
<td id="LC11182" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11183" class="blob-num js-line-number" data-line-number="11183"></td>
<td id="LC11183" class="blob-code blob-code-inner js-file-line"> uid <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11184" class="blob-num js-line-number" data-line-number="11184"></td>
<td id="LC11184" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11185" class="blob-num js-line-number" data-line-number="11185"></td>
<td id="LC11185" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>(); <span class="pl-c"><span class="pl-c">//</span> we get new ref every time to avoid memory leaks in IE</span></td>
</tr>
<tr>
<td id="L11186" class="blob-num js-line-number" data-line-number="11186"></td>
<td id="LC11186" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11187" class="blob-num js-line-number" data-line-number="11187"></td>
<td id="LC11187" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_uid) { <span class="pl-c"><span class="pl-c">//</span> move previous form out of the view</span></td>
</tr>
<tr>
<td id="L11188" class="blob-num js-line-number" data-line-number="11188"></td>
<td id="LC11188" class="blob-code blob-code-inner js-file-line"> currForm <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(_uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11189" class="blob-num js-line-number" data-line-number="11189"></td>
<td id="LC11189" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (currForm) {</td>
</tr>
<tr>
<td id="L11190" class="blob-num js-line-number" data-line-number="11190"></td>
<td id="LC11190" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">currForm</span>.<span class="pl-c1">style</span>, { top<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span> });</td>
</tr>
<tr>
<td id="L11191" class="blob-num js-line-number" data-line-number="11191"></td>
<td id="LC11191" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> it shouldn't be possible to tab into the hidden element</span></td>
</tr>
<tr>
<td id="L11192" class="blob-num js-line-number" data-line-number="11192"></td>
<td id="LC11192" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">currForm</span>.<span class="pl-c1">firstChild</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>tabindex<span class="pl-pds">'</span></span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L11193" class="blob-num js-line-number" data-line-number="11193"></td>
<td id="LC11193" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11194" class="blob-num js-line-number" data-line-number="11194"></td>
<td id="LC11194" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11195" class="blob-num js-line-number" data-line-number="11195"></td>
<td id="LC11195" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11196" class="blob-num js-line-number" data-line-number="11196"></td>
<td id="LC11196" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> build form in DOM, since innerHTML version not able to submit file for some reason</span></td>
</tr>
<tr>
<td id="L11197" class="blob-num js-line-number" data-line-number="11197"></td>
<td id="LC11197" class="blob-code blob-code-inner js-file-line"> form <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11198" class="blob-num js-line-number" data-line-number="11198"></td>
<td id="LC11198" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>id<span class="pl-pds">'</span></span>, uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11199" class="blob-num js-line-number" data-line-number="11199"></td>
<td id="LC11199" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>method<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>post<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11200" class="blob-num js-line-number" data-line-number="11200"></td>
<td id="LC11200" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>enctype<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>multipart/form-data<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11201" class="blob-num js-line-number" data-line-number="11201"></td>
<td id="LC11201" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>encoding<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>multipart/form-data<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11202" class="blob-num js-line-number" data-line-number="11202"></td>
<td id="LC11202" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11203" class="blob-num js-line-number" data-line-number="11203"></td>
<td id="LC11203" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">form</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L11204" class="blob-num js-line-number" data-line-number="11204"></td>
<td id="LC11204" class="blob-code blob-code-inner js-file-line"> overflow<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>hidden<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11205" class="blob-num js-line-number" data-line-number="11205"></td>
<td id="LC11205" class="blob-code blob-code-inner js-file-line"> position<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>absolute<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11206" class="blob-num js-line-number" data-line-number="11206"></td>
<td id="LC11206" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L11207" class="blob-num js-line-number" data-line-number="11207"></td>
<td id="LC11207" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L11208" class="blob-num js-line-number" data-line-number="11208"></td>
<td id="LC11208" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11209" class="blob-num js-line-number" data-line-number="11209"></td>
<td id="LC11209" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L11210" class="blob-num js-line-number" data-line-number="11210"></td>
<td id="LC11210" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11211" class="blob-num js-line-number" data-line-number="11211"></td>
<td id="LC11211" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11212" class="blob-num js-line-number" data-line-number="11212"></td>
<td id="LC11212" class="blob-code blob-code-inner js-file-line"> input <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>input<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11213" class="blob-num js-line-number" data-line-number="11213"></td>
<td id="LC11213" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>id<span class="pl-pds">'</span></span>, uid);</td>
</tr>
<tr>
<td id="L11214" class="blob-num js-line-number" data-line-number="11214"></td>
<td id="LC11214" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>type<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11215" class="blob-num js-line-number" data-line-number="11215"></td>
<td id="LC11215" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>, <span class="pl-smi">_mimes</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>,<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L11216" class="blob-num js-line-number" data-line-number="11216"></td>
<td id="LC11216" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11217" class="blob-num js-line-number" data-line-number="11217"></td>
<td id="LC11217" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L11218" class="blob-num js-line-number" data-line-number="11218"></td>
<td id="LC11218" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>tabindex<span class="pl-pds">'</span></span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L11219" class="blob-num js-line-number" data-line-number="11219"></td>
<td id="LC11219" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11220" class="blob-num js-line-number" data-line-number="11220"></td>
<td id="LC11220" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11221" class="blob-num js-line-number" data-line-number="11221"></td>
<td id="LC11221" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">input</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L11222" class="blob-num js-line-number" data-line-number="11222"></td>
<td id="LC11222" class="blob-code blob-code-inner js-file-line"> fontSize<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>999px<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11223" class="blob-num js-line-number" data-line-number="11223"></td>
<td id="LC11223" class="blob-code blob-code-inner js-file-line"> opacity<span class="pl-k">:</span> <span class="pl-c1">0</span></td>
</tr>
<tr>
<td id="L11224" class="blob-num js-line-number" data-line-number="11224"></td>
<td id="LC11224" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11225" class="blob-num js-line-number" data-line-number="11225"></td>
<td id="LC11225" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11226" class="blob-num js-line-number" data-line-number="11226"></td>
<td id="LC11226" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">appendChild</span>(input);</td>
</tr>
<tr>
<td id="L11227" class="blob-num js-line-number" data-line-number="11227"></td>
<td id="LC11227" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-c1">appendChild</span>(form);</td>
</tr>
<tr>
<td id="L11228" class="blob-num js-line-number" data-line-number="11228"></td>
<td id="LC11228" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11229" class="blob-num js-line-number" data-line-number="11229"></td>
<td id="LC11229" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> prepare file input to be placed underneath the browse_button element</span></td>
</tr>
<tr>
<td id="L11230" class="blob-num js-line-number" data-line-number="11230"></td>
<td id="LC11230" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">input</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L11231" class="blob-num js-line-number" data-line-number="11231"></td>
<td id="LC11231" class="blob-code blob-code-inner js-file-line"> position<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>absolute<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11232" class="blob-num js-line-number" data-line-number="11232"></td>
<td id="LC11232" class="blob-code blob-code-inner js-file-line"> top<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L11233" class="blob-num js-line-number" data-line-number="11233"></td>
<td id="LC11233" class="blob-code blob-code-inner js-file-line"> left<span class="pl-k">:</span> <span class="pl-c1">0</span>,</td>
</tr>
<tr>
<td id="L11234" class="blob-num js-line-number" data-line-number="11234"></td>
<td id="LC11234" class="blob-code blob-code-inner js-file-line"> width<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11235" class="blob-num js-line-number" data-line-number="11235"></td>
<td id="LC11235" class="blob-code blob-code-inner js-file-line"> height<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>100%<span class="pl-pds">'</span></span></td>
</tr>
<tr>
<td id="L11236" class="blob-num js-line-number" data-line-number="11236"></td>
<td id="LC11236" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11237" class="blob-num js-line-number" data-line-number="11237"></td>
<td id="LC11237" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11238" class="blob-num js-line-number" data-line-number="11238"></td>
<td id="LC11238" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Env</span>.<span class="pl-smi">browser</span> <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>IE<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-smi">Env</span>.<span class="pl-en">verComp</span>(<span class="pl-smi">Env</span>.<span class="pl-c1">version</span>, <span class="pl-c1">10</span>, <span class="pl-s"><span class="pl-pds">'</span><<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L11239" class="blob-num js-line-number" data-line-number="11239"></td>
<td id="LC11239" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-smi">input</span>.<span class="pl-c1">style</span>, {</td>
</tr>
<tr>
<td id="L11240" class="blob-num js-line-number" data-line-number="11240"></td>
<td id="LC11240" class="blob-code blob-code-inner js-file-line"> filter <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">"</span>progid:DXImageTransform.Microsoft.Alpha(opacity=0)<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L11241" class="blob-num js-line-number" data-line-number="11241"></td>
<td id="LC11241" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11242" class="blob-num js-line-number" data-line-number="11242"></td>
<td id="LC11242" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11243" class="blob-num js-line-number" data-line-number="11243"></td>
<td id="LC11243" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11244" class="blob-num js-line-number" data-line-number="11244"></td>
<td id="LC11244" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-en">onchange</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> there should be only one handler for this</span></td>
</tr>
<tr>
<td id="L11245" class="blob-num js-line-number" data-line-number="11245"></td>
<td id="LC11245" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> file;</td>
</tr>
<tr>
<td id="L11246" class="blob-num js-line-number" data-line-number="11246"></td>
<td id="LC11246" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11247" class="blob-num js-line-number" data-line-number="11247"></td>
<td id="LC11247" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">this</span>.<span class="pl-c1">value</span>) {</td>
</tr>
<tr>
<td id="L11248" class="blob-num js-line-number" data-line-number="11248"></td>
<td id="LC11248" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L11249" class="blob-num js-line-number" data-line-number="11249"></td>
<td id="LC11249" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11250" class="blob-num js-line-number" data-line-number="11250"></td>
<td id="LC11250" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11251" class="blob-num js-line-number" data-line-number="11251"></td>
<td id="LC11251" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">this</span>.<span class="pl-smi">files</span>) { <span class="pl-c"><span class="pl-c">//</span> check if browser is fresh enough</span></td>
</tr>
<tr>
<td id="L11252" class="blob-num js-line-number" data-line-number="11252"></td>
<td id="LC11252" class="blob-code blob-code-inner js-file-line"> file <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-smi">files</span>[<span class="pl-c1">0</span>];</td>
</tr>
<tr>
<td id="L11253" class="blob-num js-line-number" data-line-number="11253"></td>
<td id="LC11253" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11254" class="blob-num js-line-number" data-line-number="11254"></td>
<td id="LC11254" class="blob-code blob-code-inner js-file-line"> file <span class="pl-k">=</span> {</td>
</tr>
<tr>
<td id="L11255" class="blob-num js-line-number" data-line-number="11255"></td>
<td id="LC11255" class="blob-code blob-code-inner js-file-line"> name<span class="pl-k">:</span> <span class="pl-c1">this</span>.<span class="pl-c1">value</span></td>
</tr>
<tr>
<td id="L11256" class="blob-num js-line-number" data-line-number="11256"></td>
<td id="LC11256" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L11257" class="blob-num js-line-number" data-line-number="11257"></td>
<td id="LC11257" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11258" class="blob-num js-line-number" data-line-number="11258"></td>
<td id="LC11258" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11259" class="blob-num js-line-number" data-line-number="11259"></td>
<td id="LC11259" class="blob-code blob-code-inner js-file-line"> file <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">File</span>(<span class="pl-c1">I</span>.<span class="pl-smi">uid</span>, file);</td>
</tr>
<tr>
<td id="L11260" class="blob-num js-line-number" data-line-number="11260"></td>
<td id="LC11260" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11261" class="blob-num js-line-number" data-line-number="11261"></td>
<td id="LC11261" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> clear event handler</span></td>
</tr>
<tr>
<td id="L11262" class="blob-num js-line-number" data-line-number="11262"></td>
<td id="LC11262" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">onchange</span> <span class="pl-k">=</span> <span class="pl-k">function</span>() {}; </td>
</tr>
<tr>
<td id="L11263" class="blob-num js-line-number" data-line-number="11263"></td>
<td id="LC11263" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">addInput</span>.<span class="pl-c1">call</span>(comp); </td>
</tr>
<tr>
<td id="L11264" class="blob-num js-line-number" data-line-number="11264"></td>
<td id="LC11264" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11265" class="blob-num js-line-number" data-line-number="11265"></td>
<td id="LC11265" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-smi">files</span> <span class="pl-k">=</span> [file];</td>
</tr>
<tr>
<td id="L11266" class="blob-num js-line-number" data-line-number="11266"></td>
<td id="LC11266" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11267" class="blob-num js-line-number" data-line-number="11267"></td>
<td id="LC11267" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> substitute all ids with file uids (consider file.uid read-only - we cannot do it the other way around)</span></td>
</tr>
<tr>
<td id="L11268" class="blob-num js-line-number" data-line-number="11268"></td>
<td id="LC11268" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>id<span class="pl-pds">'</span></span>, <span class="pl-smi">file</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11269" class="blob-num js-line-number" data-line-number="11269"></td>
<td id="LC11269" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>id<span class="pl-pds">'</span></span>, <span class="pl-smi">file</span>.<span class="pl-smi">uid</span> <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11270" class="blob-num js-line-number" data-line-number="11270"></td>
<td id="LC11270" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11271" class="blob-num js-line-number" data-line-number="11271"></td>
<td id="LC11271" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>change<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11272" class="blob-num js-line-number" data-line-number="11272"></td>
<td id="LC11272" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11273" class="blob-num js-line-number" data-line-number="11273"></td>
<td id="LC11273" class="blob-code blob-code-inner js-file-line"> input <span class="pl-k">=</span> form <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11274" class="blob-num js-line-number" data-line-number="11274"></td>
<td id="LC11274" class="blob-code blob-code-inner js-file-line"> };</td>
</tr>
<tr>
<td id="L11275" class="blob-num js-line-number" data-line-number="11275"></td>
<td id="LC11275" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11276" class="blob-num js-line-number" data-line-number="11276"></td>
<td id="LC11276" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11277" class="blob-num js-line-number" data-line-number="11277"></td>
<td id="LC11277" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> route click event to the input</span></td>
</tr>
<tr>
<td id="L11278" class="blob-num js-line-number" data-line-number="11278"></td>
<td id="LC11278" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L11279" class="blob-num js-line-number" data-line-number="11279"></td>
<td id="LC11279" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L11280" class="blob-num js-line-number" data-line-number="11280"></td>
<td id="LC11280" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeEvent</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>click<span class="pl-pds">'</span></span>, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11281" class="blob-num js-line-number" data-line-number="11281"></td>
<td id="LC11281" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>click<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">e</span>) {</td>
</tr>
<tr>
<td id="L11282" class="blob-num js-line-number" data-line-number="11282"></td>
<td id="LC11282" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (input <span class="pl-k">&&</span> <span class="pl-k">!</span><span class="pl-smi">input</span>.<span class="pl-c1">disabled</span>) { <span class="pl-c"><span class="pl-c">//</span> for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file]</span></td>
</tr>
<tr>
<td id="L11283" class="blob-num js-line-number" data-line-number="11283"></td>
<td id="LC11283" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">click</span>();</td>
</tr>
<tr>
<td id="L11284" class="blob-num js-line-number" data-line-number="11284"></td>
<td id="LC11284" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11285" class="blob-num js-line-number" data-line-number="11285"></td>
<td id="LC11285" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">e</span>.<span class="pl-c1">preventDefault</span>();</td>
</tr>
<tr>
<td id="L11286" class="blob-num js-line-number" data-line-number="11286"></td>
<td id="LC11286" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11287" class="blob-num js-line-number" data-line-number="11287"></td>
<td id="LC11287" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11288" class="blob-num js-line-number" data-line-number="11288"></td>
<td id="LC11288" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11289" class="blob-num js-line-number" data-line-number="11289"></td>
<td id="LC11289" class="blob-code blob-code-inner js-file-line"> _uid <span class="pl-k">=</span> uid;</td>
</tr>
<tr>
<td id="L11290" class="blob-num js-line-number" data-line-number="11290"></td>
<td id="LC11290" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11291" class="blob-num js-line-number" data-line-number="11291"></td>
<td id="LC11291" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> currForm <span class="pl-k">=</span> browseButton <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11292" class="blob-num js-line-number" data-line-number="11292"></td>
<td id="LC11292" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11293" class="blob-num js-line-number" data-line-number="11293"></td>
<td id="LC11293" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11294" class="blob-num js-line-number" data-line-number="11294"></td>
<td id="LC11294" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L11295" class="blob-num js-line-number" data-line-number="11295"></td>
<td id="LC11295" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">init</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>) {</td>
</tr>
<tr>
<td id="L11296" class="blob-num js-line-number" data-line-number="11296"></td>
<td id="LC11296" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> comp <span class="pl-k">=</span> <span class="pl-c1">this</span>, <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-smi">comp</span>.<span class="pl-en">getRuntime</span>(), shimContainer;</td>
</tr>
<tr>
<td id="L11297" class="blob-num js-line-number" data-line-number="11297"></td>
<td id="LC11297" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11298" class="blob-num js-line-number" data-line-number="11298"></td>
<td id="LC11298" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> figure out accept string</span></td>
</tr>
<tr>
<td id="L11299" class="blob-num js-line-number" data-line-number="11299"></td>
<td id="LC11299" class="blob-code blob-code-inner js-file-line"> _options <span class="pl-k">=</span> options;</td>
</tr>
<tr>
<td id="L11300" class="blob-num js-line-number" data-line-number="11300"></td>
<td id="LC11300" class="blob-code blob-code-inner js-file-line"> _mimes <span class="pl-k">=</span> <span class="pl-smi">Mime</span>.<span class="pl-en">extList2mimes</span>(<span class="pl-smi">options</span>.<span class="pl-c1">accept</span>, <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>filter_by_extension<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L11301" class="blob-num js-line-number" data-line-number="11301"></td>
<td id="LC11301" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11302" class="blob-num js-line-number" data-line-number="11302"></td>
<td id="LC11302" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>();</td>
</tr>
<tr>
<td id="L11303" class="blob-num js-line-number" data-line-number="11303"></td>
<td id="LC11303" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11304" class="blob-num js-line-number" data-line-number="11304"></td>
<td id="LC11304" class="blob-code blob-code-inner js-file-line"> (<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11305" class="blob-num js-line-number" data-line-number="11305"></td>
<td id="LC11305" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> browseButton, zIndex, top;</td>
</tr>
<tr>
<td id="L11306" class="blob-num js-line-number" data-line-number="11306"></td>
<td id="LC11306" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11307" class="blob-num js-line-number" data-line-number="11307"></td>
<td id="LC11307" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">browse_button</span>);</td>
</tr>
<tr>
<td id="L11308" class="blob-num js-line-number" data-line-number="11308"></td>
<td id="LC11308" class="blob-code blob-code-inner js-file-line"> _browseBtnZIndex <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>z-index<span class="pl-pds">'</span></span>) <span class="pl-k">||</span> <span class="pl-s"><span class="pl-pds">'</span>auto<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L11309" class="blob-num js-line-number" data-line-number="11309"></td>
<td id="LC11309" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11310" class="blob-num js-line-number" data-line-number="11310"></td>
<td id="LC11310" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> Route click event to the input[type=file] element for browsers that support such behavior</span></td>
</tr>
<tr>
<td id="L11311" class="blob-num js-line-number" data-line-number="11311"></td>
<td id="LC11311" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L11312" class="blob-num js-line-number" data-line-number="11312"></td>
<td id="LC11312" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Dom</span>.<span class="pl-en">getStyle</span>(browseButton, <span class="pl-s"><span class="pl-pds">'</span>position<span class="pl-pds">'</span></span>) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>static<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L11313" class="blob-num js-line-number" data-line-number="11313"></td>
<td id="LC11313" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">style</span>.<span class="pl-smi">position</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>relative<span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L11314" class="blob-num js-line-number" data-line-number="11314"></td>
<td id="LC11314" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L11315" class="blob-num js-line-number" data-line-number="11315"></td>
<td id="LC11315" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11316" class="blob-num js-line-number" data-line-number="11316"></td>
<td id="LC11316" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">bind</span>(<span class="pl-s"><span class="pl-pds">'</span>Refresh<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11317" class="blob-num js-line-number" data-line-number="11317"></td>
<td id="LC11317" class="blob-code blob-code-inner js-file-line"> zIndex <span class="pl-k">=</span> <span class="pl-c1">parseInt</span>(_browseBtnZIndex, <span class="pl-c1">10</span>) <span class="pl-k">||</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L11318" class="blob-num js-line-number" data-line-number="11318"></td>
<td id="LC11318" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11319" class="blob-num js-line-number" data-line-number="11319"></td>
<td id="LC11319" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">browse_button</span>).<span class="pl-c1">style</span>.<span class="pl-c1">zIndex</span> <span class="pl-k">=</span> zIndex;</td>
</tr>
<tr>
<td id="L11320" class="blob-num js-line-number" data-line-number="11320"></td>
<td id="LC11320" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShimContainer</span>().<span class="pl-c1">style</span>.<span class="pl-c1">zIndex</span> <span class="pl-k">=</span> zIndex <span class="pl-k">-</span> <span class="pl-c1">1</span>;</td>
</tr>
<tr>
<td id="L11321" class="blob-num js-line-number" data-line-number="11321"></td>
<td id="LC11321" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11322" class="blob-num js-line-number" data-line-number="11322"></td>
<td id="LC11322" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11323" class="blob-num js-line-number" data-line-number="11323"></td>
<td id="LC11323" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> it shouldn't be possible to tab into the hidden element</span></td>
</tr>
<tr>
<td id="L11324" class="blob-num js-line-number" data-line-number="11324"></td>
<td id="LC11324" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>tabindex<span class="pl-pds">'</span></span>, <span class="pl-k">-</span><span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L11325" class="blob-num js-line-number" data-line-number="11325"></td>
<td id="LC11325" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11326" class="blob-num js-line-number" data-line-number="11326"></td>
<td id="LC11326" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11327" class="blob-num js-line-number" data-line-number="11327"></td>
<td id="LC11327" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> Since we have to place input[type=file] on top of the browse_button for some browsers,</span></td>
</tr>
<tr>
<td id="L11328" class="blob-num js-line-number" data-line-number="11328"></td>
<td id="LC11328" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> browse_button loses interactivity, so we restore it here <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11329" class="blob-num js-line-number" data-line-number="11329"></td>
<td id="LC11329" class="blob-code blob-code-inner js-file-line"> top <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>summon_file_dialog<span class="pl-pds">'</span></span>) <span class="pl-k">?</span> browseButton <span class="pl-k">:</span> shimContainer;</td>
</tr>
<tr>
<td id="L11330" class="blob-num js-line-number" data-line-number="11330"></td>
<td id="LC11330" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11331" class="blob-num js-line-number" data-line-number="11331"></td>
<td id="LC11331" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(top, <span class="pl-s"><span class="pl-pds">'</span>mouseover<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11332" class="blob-num js-line-number" data-line-number="11332"></td>
<td id="LC11332" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mouseenter<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11333" class="blob-num js-line-number" data-line-number="11333"></td>
<td id="LC11333" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11334" class="blob-num js-line-number" data-line-number="11334"></td>
<td id="LC11334" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11335" class="blob-num js-line-number" data-line-number="11335"></td>
<td id="LC11335" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(top, <span class="pl-s"><span class="pl-pds">'</span>mouseout<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11336" class="blob-num js-line-number" data-line-number="11336"></td>
<td id="LC11336" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mouseleave<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11337" class="blob-num js-line-number" data-line-number="11337"></td>
<td id="LC11337" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11338" class="blob-num js-line-number" data-line-number="11338"></td>
<td id="LC11338" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11339" class="blob-num js-line-number" data-line-number="11339"></td>
<td id="LC11339" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(top, <span class="pl-s"><span class="pl-pds">'</span>mousedown<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11340" class="blob-num js-line-number" data-line-number="11340"></td>
<td id="LC11340" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mousedown<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11341" class="blob-num js-line-number" data-line-number="11341"></td>
<td id="LC11341" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11342" class="blob-num js-line-number" data-line-number="11342"></td>
<td id="LC11342" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11343" class="blob-num js-line-number" data-line-number="11343"></td>
<td id="LC11343" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(<span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">options</span>.<span class="pl-smi">container</span>), <span class="pl-s"><span class="pl-pds">'</span>mouseup<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11344" class="blob-num js-line-number" data-line-number="11344"></td>
<td id="LC11344" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>mouseup<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11345" class="blob-num js-line-number" data-line-number="11345"></td>
<td id="LC11345" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">comp</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11346" class="blob-num js-line-number" data-line-number="11346"></td>
<td id="LC11346" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11347" class="blob-num js-line-number" data-line-number="11347"></td>
<td id="LC11347" class="blob-code blob-code-inner js-file-line"> browseButton <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11348" class="blob-num js-line-number" data-line-number="11348"></td>
<td id="LC11348" class="blob-code blob-code-inner js-file-line"> }());</td>
</tr>
<tr>
<td id="L11349" class="blob-num js-line-number" data-line-number="11349"></td>
<td id="LC11349" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11350" class="blob-num js-line-number" data-line-number="11350"></td>
<td id="LC11350" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">addInput</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L11351" class="blob-num js-line-number" data-line-number="11351"></td>
<td id="LC11351" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11352" class="blob-num js-line-number" data-line-number="11352"></td>
<td id="LC11352" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11353" class="blob-num js-line-number" data-line-number="11353"></td>
<td id="LC11353" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11354" class="blob-num js-line-number" data-line-number="11354"></td>
<td id="LC11354" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> trigger ready event asynchronously</span></td>
</tr>
<tr>
<td id="L11355" class="blob-num js-line-number" data-line-number="11355"></td>
<td id="LC11355" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">comp</span>.<span class="pl-en">trigger</span>({</td>
</tr>
<tr>
<td id="L11356" class="blob-num js-line-number" data-line-number="11356"></td>
<td id="LC11356" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>ready<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11357" class="blob-num js-line-number" data-line-number="11357"></td>
<td id="LC11357" class="blob-code blob-code-inner js-file-line"> async<span class="pl-k">:</span> <span class="pl-c1">true</span></td>
</tr>
<tr>
<td id="L11358" class="blob-num js-line-number" data-line-number="11358"></td>
<td id="LC11358" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11359" class="blob-num js-line-number" data-line-number="11359"></td>
<td id="LC11359" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11360" class="blob-num js-line-number" data-line-number="11360"></td>
<td id="LC11360" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11361" class="blob-num js-line-number" data-line-number="11361"></td>
<td id="LC11361" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">setOption</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">name</span>, <span class="pl-smi">value</span>) {</td>
</tr>
<tr>
<td id="L11362" class="blob-num js-line-number" data-line-number="11362"></td>
<td id="LC11362" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>();</td>
</tr>
<tr>
<td id="L11363" class="blob-num js-line-number" data-line-number="11363"></td>
<td id="LC11363" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> input;</td>
</tr>
<tr>
<td id="L11364" class="blob-num js-line-number" data-line-number="11364"></td>
<td id="LC11364" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11365" class="blob-num js-line-number" data-line-number="11365"></td>
<td id="LC11365" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (name <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>) {</td>
</tr>
<tr>
<td id="L11366" class="blob-num js-line-number" data-line-number="11366"></td>
<td id="LC11366" class="blob-code blob-code-inner js-file-line"> _mimes <span class="pl-k">=</span> <span class="pl-smi">value</span>.<span class="pl-smi">mimes</span> <span class="pl-k">||</span> <span class="pl-smi">Mime</span>.<span class="pl-en">extList2mimes</span>(value, <span class="pl-c1">I</span>.<span class="pl-en">can</span>(<span class="pl-s"><span class="pl-pds">'</span>filter_by_extension<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L11367" class="blob-num js-line-number" data-line-number="11367"></td>
<td id="LC11367" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11368" class="blob-num js-line-number" data-line-number="11368"></td>
<td id="LC11368" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11369" class="blob-num js-line-number" data-line-number="11369"></td>
<td id="LC11369" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> update current input</span></td>
</tr>
<tr>
<td id="L11370" class="blob-num js-line-number" data-line-number="11370"></td>
<td id="LC11370" class="blob-code blob-code-inner js-file-line"> input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(_uid)</td>
</tr>
<tr>
<td id="L11371" class="blob-num js-line-number" data-line-number="11371"></td>
<td id="LC11371" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (input) {</td>
</tr>
<tr>
<td id="L11372" class="blob-num js-line-number" data-line-number="11372"></td>
<td id="LC11372" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>accept<span class="pl-pds">'</span></span>, <span class="pl-smi">_mimes</span>.<span class="pl-c1">join</span>(<span class="pl-s"><span class="pl-pds">'</span>,<span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L11373" class="blob-num js-line-number" data-line-number="11373"></td>
<td id="LC11373" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11374" class="blob-num js-line-number" data-line-number="11374"></td>
<td id="LC11374" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11375" class="blob-num js-line-number" data-line-number="11375"></td>
<td id="LC11375" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11376" class="blob-num js-line-number" data-line-number="11376"></td>
<td id="LC11376" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11377" class="blob-num js-line-number" data-line-number="11377"></td>
<td id="LC11377" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">disable</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">state</span>) {</td>
</tr>
<tr>
<td id="L11378" class="blob-num js-line-number" data-line-number="11378"></td>
<td id="LC11378" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> input;</td>
</tr>
<tr>
<td id="L11379" class="blob-num js-line-number" data-line-number="11379"></td>
<td id="LC11379" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11380" class="blob-num js-line-number" data-line-number="11380"></td>
<td id="LC11380" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> ((input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(_uid))) {</td>
</tr>
<tr>
<td id="L11381" class="blob-num js-line-number" data-line-number="11381"></td>
<td id="LC11381" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">disabled</span> <span class="pl-k">=</span> <span class="pl-k">!!</span>state;</td>
</tr>
<tr>
<td id="L11382" class="blob-num js-line-number" data-line-number="11382"></td>
<td id="LC11382" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11383" class="blob-num js-line-number" data-line-number="11383"></td>
<td id="LC11383" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11384" class="blob-num js-line-number" data-line-number="11384"></td>
<td id="LC11384" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11385" class="blob-num js-line-number" data-line-number="11385"></td>
<td id="LC11385" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11386" class="blob-num js-line-number" data-line-number="11386"></td>
<td id="LC11386" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>()</td>
</tr>
<tr>
<td id="L11387" class="blob-num js-line-number" data-line-number="11387"></td>
<td id="LC11387" class="blob-code blob-code-inner js-file-line"> , shim <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShim</span>()</td>
</tr>
<tr>
<td id="L11388" class="blob-num js-line-number" data-line-number="11388"></td>
<td id="LC11388" class="blob-code blob-code-inner js-file-line"> , shimContainer <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>()</td>
</tr>
<tr>
<td id="L11389" class="blob-num js-line-number" data-line-number="11389"></td>
<td id="LC11389" class="blob-code blob-code-inner js-file-line"> , container <span class="pl-k">=</span> _options <span class="pl-k">&&</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">container</span>)</td>
</tr>
<tr>
<td id="L11390" class="blob-num js-line-number" data-line-number="11390"></td>
<td id="LC11390" class="blob-code blob-code-inner js-file-line"> , browseButton <span class="pl-k">=</span> _options <span class="pl-k">&&</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(<span class="pl-smi">_options</span>.<span class="pl-smi">browse_button</span>)</td>
</tr>
<tr>
<td id="L11391" class="blob-num js-line-number" data-line-number="11391"></td>
<td id="LC11391" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L11392" class="blob-num js-line-number" data-line-number="11392"></td>
<td id="LC11392" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11393" class="blob-num js-line-number" data-line-number="11393"></td>
<td id="LC11393" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (container) {</td>
</tr>
<tr>
<td id="L11394" class="blob-num js-line-number" data-line-number="11394"></td>
<td id="LC11394" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(container, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11395" class="blob-num js-line-number" data-line-number="11395"></td>
<td id="LC11395" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11396" class="blob-num js-line-number" data-line-number="11396"></td>
<td id="LC11396" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11397" class="blob-num js-line-number" data-line-number="11397"></td>
<td id="LC11397" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (browseButton) {</td>
</tr>
<tr>
<td id="L11398" class="blob-num js-line-number" data-line-number="11398"></td>
<td id="LC11398" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(browseButton, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11399" class="blob-num js-line-number" data-line-number="11399"></td>
<td id="LC11399" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">browseButton</span>.<span class="pl-c1">style</span>.<span class="pl-c1">zIndex</span> <span class="pl-k">=</span> _browseBtnZIndex; <span class="pl-c"><span class="pl-c">//</span> reset to original value</span></td>
</tr>
<tr>
<td id="L11400" class="blob-num js-line-number" data-line-number="11400"></td>
<td id="LC11400" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11401" class="blob-num js-line-number" data-line-number="11401"></td>
<td id="LC11401" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11402" class="blob-num js-line-number" data-line-number="11402"></td>
<td id="LC11402" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (shimContainer) {</td>
</tr>
<tr>
<td id="L11403" class="blob-num js-line-number" data-line-number="11403"></td>
<td id="LC11403" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeAllEvents</span>(shimContainer, <span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11404" class="blob-num js-line-number" data-line-number="11404"></td>
<td id="LC11404" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L11405" class="blob-num js-line-number" data-line-number="11405"></td>
<td id="LC11405" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11406" class="blob-num js-line-number" data-line-number="11406"></td>
<td id="LC11406" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11407" class="blob-num js-line-number" data-line-number="11407"></td>
<td id="LC11407" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shim</span>.<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11408" class="blob-num js-line-number" data-line-number="11408"></td>
<td id="LC11408" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11409" class="blob-num js-line-number" data-line-number="11409"></td>
<td id="LC11409" class="blob-code blob-code-inner js-file-line"> _uid <span class="pl-k">=</span> _mimes <span class="pl-k">=</span> _options <span class="pl-k">=</span> shimContainer <span class="pl-k">=</span> container <span class="pl-k">=</span> browseButton <span class="pl-k">=</span> shim <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11410" class="blob-num js-line-number" data-line-number="11410"></td>
<td id="LC11410" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11411" class="blob-num js-line-number" data-line-number="11411"></td>
<td id="LC11411" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11412" class="blob-num js-line-number" data-line-number="11412"></td>
<td id="LC11412" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11413" class="blob-num js-line-number" data-line-number="11413"></td>
<td id="LC11413" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11414" class="blob-num js-line-number" data-line-number="11414"></td>
<td id="LC11414" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileInput</span> <span class="pl-k">=</span> FileInput);</td>
</tr>
<tr>
<td id="L11415" class="blob-num js-line-number" data-line-number="11415"></td>
<td id="LC11415" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L11416" class="blob-num js-line-number" data-line-number="11416"></td>
<td id="LC11416" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11417" class="blob-num js-line-number" data-line-number="11417"></td>
<td id="LC11417" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html4/file/FileReader.js</span></td>
</tr>
<tr>
<td id="L11418" class="blob-num js-line-number" data-line-number="11418"></td>
<td id="LC11418" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11419" class="blob-num js-line-number" data-line-number="11419"></td>
<td id="LC11419" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11420" class="blob-num js-line-number" data-line-number="11420"></td>
<td id="LC11420" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * FileReader.js</span></td>
</tr>
<tr>
<td id="L11421" class="blob-num js-line-number" data-line-number="11421"></td>
<td id="LC11421" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11422" class="blob-num js-line-number" data-line-number="11422"></td>
<td id="LC11422" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L11423" class="blob-num js-line-number" data-line-number="11423"></td>
<td id="LC11423" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L11424" class="blob-num js-line-number" data-line-number="11424"></td>
<td id="LC11424" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11425" class="blob-num js-line-number" data-line-number="11425"></td>
<td id="LC11425" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L11426" class="blob-num js-line-number" data-line-number="11426"></td>
<td id="LC11426" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L11427" class="blob-num js-line-number" data-line-number="11427"></td>
<td id="LC11427" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11428" class="blob-num js-line-number" data-line-number="11428"></td>
<td id="LC11428" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11429" class="blob-num js-line-number" data-line-number="11429"></td>
<td id="LC11429" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11430" class="blob-num js-line-number" data-line-number="11430"></td>
<td id="LC11430" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html4/file/FileReader</span></td>
</tr>
<tr>
<td id="L11431" class="blob-num js-line-number" data-line-number="11431"></td>
<td id="LC11431" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L11432" class="blob-num js-line-number" data-line-number="11432"></td>
<td id="LC11432" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11433" class="blob-num js-line-number" data-line-number="11433"></td>
<td id="LC11433" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/file/FileReader<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L11434" class="blob-num js-line-number" data-line-number="11434"></td>
<td id="LC11434" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11435" class="blob-num js-line-number" data-line-number="11435"></td>
<td id="LC11435" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/file/FileReader<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L11436" class="blob-num js-line-number" data-line-number="11436"></td>
<td id="LC11436" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-c1">FileReader</span>) {</td>
</tr>
<tr>
<td id="L11437" class="blob-num js-line-number" data-line-number="11437"></td>
<td id="LC11437" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">FileReader</span> <span class="pl-k">=</span> <span class="pl-c1">FileReader</span>);</td>
</tr>
<tr>
<td id="L11438" class="blob-num js-line-number" data-line-number="11438"></td>
<td id="LC11438" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L11439" class="blob-num js-line-number" data-line-number="11439"></td>
<td id="LC11439" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11440" class="blob-num js-line-number" data-line-number="11440"></td>
<td id="LC11440" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html4/xhr/XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L11441" class="blob-num js-line-number" data-line-number="11441"></td>
<td id="LC11441" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11442" class="blob-num js-line-number" data-line-number="11442"></td>
<td id="LC11442" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11443" class="blob-num js-line-number" data-line-number="11443"></td>
<td id="LC11443" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * XMLHttpRequest.js</span></td>
</tr>
<tr>
<td id="L11444" class="blob-num js-line-number" data-line-number="11444"></td>
<td id="LC11444" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11445" class="blob-num js-line-number" data-line-number="11445"></td>
<td id="LC11445" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L11446" class="blob-num js-line-number" data-line-number="11446"></td>
<td id="LC11446" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L11447" class="blob-num js-line-number" data-line-number="11447"></td>
<td id="LC11447" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11448" class="blob-num js-line-number" data-line-number="11448"></td>
<td id="LC11448" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L11449" class="blob-num js-line-number" data-line-number="11449"></td>
<td id="LC11449" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L11450" class="blob-num js-line-number" data-line-number="11450"></td>
<td id="LC11450" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11451" class="blob-num js-line-number" data-line-number="11451"></td>
<td id="LC11451" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11452" class="blob-num js-line-number" data-line-number="11452"></td>
<td id="LC11452" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11453" class="blob-num js-line-number" data-line-number="11453"></td>
<td id="LC11453" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html4/xhr/XMLHttpRequest</span></td>
</tr>
<tr>
<td id="L11454" class="blob-num js-line-number" data-line-number="11454"></td>
<td id="LC11454" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L11455" class="blob-num js-line-number" data-line-number="11455"></td>
<td id="LC11455" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11456" class="blob-num js-line-number" data-line-number="11456"></td>
<td id="LC11456" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L11457" class="blob-num js-line-number" data-line-number="11457"></td>
<td id="LC11457" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11458" class="blob-num js-line-number" data-line-number="11458"></td>
<td id="LC11458" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11459" class="blob-num js-line-number" data-line-number="11459"></td>
<td id="LC11459" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11460" class="blob-num js-line-number" data-line-number="11460"></td>
<td id="LC11460" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Url<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11461" class="blob-num js-line-number" data-line-number="11461"></td>
<td id="LC11461" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11462" class="blob-num js-line-number" data-line-number="11462"></td>
<td id="LC11462" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Events<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11463" class="blob-num js-line-number" data-line-number="11463"></td>
<td id="LC11463" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11464" class="blob-num js-line-number" data-line-number="11464"></td>
<td id="LC11464" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/FormData<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L11465" class="blob-num js-line-number" data-line-number="11465"></td>
<td id="LC11465" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Basic</span>, <span class="pl-smi">Dom</span>, <span class="pl-smi">Url</span>, <span class="pl-smi">x</span>, <span class="pl-smi">Events</span>, <span class="pl-c1">Blob</span>, <span class="pl-c1">FormData</span>) {</td>
</tr>
<tr>
<td id="L11466" class="blob-num js-line-number" data-line-number="11466"></td>
<td id="LC11466" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11467" class="blob-num js-line-number" data-line-number="11467"></td>
<td id="LC11467" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">XMLHttpRequest</span>() {</td>
</tr>
<tr>
<td id="L11468" class="blob-num js-line-number" data-line-number="11468"></td>
<td id="LC11468" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> _status, _response, _iframe;</td>
</tr>
<tr>
<td id="L11469" class="blob-num js-line-number" data-line-number="11469"></td>
<td id="LC11469" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11470" class="blob-num js-line-number" data-line-number="11470"></td>
<td id="LC11470" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">cleanup</span>(<span class="pl-smi">cb</span>) {</td>
</tr>
<tr>
<td id="L11471" class="blob-num js-line-number" data-line-number="11471"></td>
<td id="LC11471" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">this</span>, uid, form, inputs, i, hasFile <span class="pl-k">=</span> <span class="pl-c1">false</span>;</td>
</tr>
<tr>
<td id="L11472" class="blob-num js-line-number" data-line-number="11472"></td>
<td id="LC11472" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11473" class="blob-num js-line-number" data-line-number="11473"></td>
<td id="LC11473" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>_iframe) {</td>
</tr>
<tr>
<td id="L11474" class="blob-num js-line-number" data-line-number="11474"></td>
<td id="LC11474" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L11475" class="blob-num js-line-number" data-line-number="11475"></td>
<td id="LC11475" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11476" class="blob-num js-line-number" data-line-number="11476"></td>
<td id="LC11476" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11477" class="blob-num js-line-number" data-line-number="11477"></td>
<td id="LC11477" class="blob-code blob-code-inner js-file-line"> uid <span class="pl-k">=</span> <span class="pl-smi">_iframe</span>.<span class="pl-c1">id</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span>_iframe<span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11478" class="blob-num js-line-number" data-line-number="11478"></td>
<td id="LC11478" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11479" class="blob-num js-line-number" data-line-number="11479"></td>
<td id="LC11479" class="blob-code blob-code-inner js-file-line"> form <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11480" class="blob-num js-line-number" data-line-number="11480"></td>
<td id="LC11480" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (form) {</td>
</tr>
<tr>
<td id="L11481" class="blob-num js-line-number" data-line-number="11481"></td>
<td id="LC11481" class="blob-code blob-code-inner js-file-line"> inputs <span class="pl-k">=</span> <span class="pl-smi">form</span>.<span class="pl-c1">getElementsByTagName</span>(<span class="pl-s"><span class="pl-pds">'</span>input<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11482" class="blob-num js-line-number" data-line-number="11482"></td>
<td id="LC11482" class="blob-code blob-code-inner js-file-line"> i <span class="pl-k">=</span> <span class="pl-smi">inputs</span>.<span class="pl-c1">length</span>;</td>
</tr>
<tr>
<td id="L11483" class="blob-num js-line-number" data-line-number="11483"></td>
<td id="LC11483" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11484" class="blob-num js-line-number" data-line-number="11484"></td>
<td id="LC11484" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">while</span> (i<span class="pl-k">--</span>) {</td>
</tr>
<tr>
<td id="L11485" class="blob-num js-line-number" data-line-number="11485"></td>
<td id="LC11485" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">switch</span> (inputs[i].<span class="pl-c1">getAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>type<span class="pl-pds">'</span></span>)) {</td>
</tr>
<tr>
<td id="L11486" class="blob-num js-line-number" data-line-number="11486"></td>
<td id="LC11486" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>hidden<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L11487" class="blob-num js-line-number" data-line-number="11487"></td>
<td id="LC11487" class="blob-code blob-code-inner js-file-line"> inputs[i].<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(inputs[i]);</td>
</tr>
<tr>
<td id="L11488" class="blob-num js-line-number" data-line-number="11488"></td>
<td id="LC11488" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L11489" class="blob-num js-line-number" data-line-number="11489"></td>
<td id="LC11489" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">case</span> <span class="pl-s"><span class="pl-pds">'</span>file<span class="pl-pds">'</span></span>:</td>
</tr>
<tr>
<td id="L11490" class="blob-num js-line-number" data-line-number="11490"></td>
<td id="LC11490" class="blob-code blob-code-inner js-file-line"> hasFile <span class="pl-k">=</span> <span class="pl-c1">true</span>; <span class="pl-c"><span class="pl-c">//</span> flag the case for later</span></td>
</tr>
<tr>
<td id="L11491" class="blob-num js-line-number" data-line-number="11491"></td>
<td id="LC11491" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">break</span>;</td>
</tr>
<tr>
<td id="L11492" class="blob-num js-line-number" data-line-number="11492"></td>
<td id="LC11492" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11493" class="blob-num js-line-number" data-line-number="11493"></td>
<td id="LC11493" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11494" class="blob-num js-line-number" data-line-number="11494"></td>
<td id="LC11494" class="blob-code blob-code-inner js-file-line"> inputs <span class="pl-k">=</span> [];</td>
</tr>
<tr>
<td id="L11495" class="blob-num js-line-number" data-line-number="11495"></td>
<td id="LC11495" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11496" class="blob-num js-line-number" data-line-number="11496"></td>
<td id="LC11496" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>hasFile) { <span class="pl-c"><span class="pl-c">//</span> we need to keep the form for sake of possible retries</span></td>
</tr>
<tr>
<td id="L11497" class="blob-num js-line-number" data-line-number="11497"></td>
<td id="LC11497" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(form);</td>
</tr>
<tr>
<td id="L11498" class="blob-num js-line-number" data-line-number="11498"></td>
<td id="LC11498" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11499" class="blob-num js-line-number" data-line-number="11499"></td>
<td id="LC11499" class="blob-code blob-code-inner js-file-line"> form <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11500" class="blob-num js-line-number" data-line-number="11500"></td>
<td id="LC11500" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11501" class="blob-num js-line-number" data-line-number="11501"></td>
<td id="LC11501" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11502" class="blob-num js-line-number" data-line-number="11502"></td>
<td id="LC11502" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> without timeout, request is marked as canceled (in console)</span></td>
</tr>
<tr>
<td id="L11503" class="blob-num js-line-number" data-line-number="11503"></td>
<td id="LC11503" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">setTimeout</span>(<span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11504" class="blob-num js-line-number" data-line-number="11504"></td>
<td id="LC11504" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">removeEvent</span>(_iframe, <span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>, <span class="pl-smi">target</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11505" class="blob-num js-line-number" data-line-number="11505"></td>
<td id="LC11505" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_iframe</span>.<span class="pl-c1">parentNode</span>) { <span class="pl-c"><span class="pl-c">//</span> #382</span></td>
</tr>
<tr>
<td id="L11506" class="blob-num js-line-number" data-line-number="11506"></td>
<td id="LC11506" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_iframe</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(_iframe);</td>
</tr>
<tr>
<td id="L11507" class="blob-num js-line-number" data-line-number="11507"></td>
<td id="LC11507" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11508" class="blob-num js-line-number" data-line-number="11508"></td>
<td id="LC11508" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11509" class="blob-num js-line-number" data-line-number="11509"></td>
<td id="LC11509" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> check if shim container has any other children, if - not, remove it as well</span></td>
</tr>
<tr>
<td id="L11510" class="blob-num js-line-number" data-line-number="11510"></td>
<td id="LC11510" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> shimContainer <span class="pl-k">=</span> <span class="pl-smi">target</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShimContainer</span>();</td>
</tr>
<tr>
<td id="L11511" class="blob-num js-line-number" data-line-number="11511"></td>
<td id="LC11511" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-smi">shimContainer</span>.<span class="pl-smi">children</span>.<span class="pl-c1">length</span>) {</td>
</tr>
<tr>
<td id="L11512" class="blob-num js-line-number" data-line-number="11512"></td>
<td id="LC11512" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">shimContainer</span>.<span class="pl-c1">parentNode</span>.<span class="pl-c1">removeChild</span>(shimContainer);</td>
</tr>
<tr>
<td id="L11513" class="blob-num js-line-number" data-line-number="11513"></td>
<td id="LC11513" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11514" class="blob-num js-line-number" data-line-number="11514"></td>
<td id="LC11514" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11515" class="blob-num js-line-number" data-line-number="11515"></td>
<td id="LC11515" class="blob-code blob-code-inner js-file-line"> shimContainer <span class="pl-k">=</span> _iframe <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11516" class="blob-num js-line-number" data-line-number="11516"></td>
<td id="LC11516" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">cb</span>();</td>
</tr>
<tr>
<td id="L11517" class="blob-num js-line-number" data-line-number="11517"></td>
<td id="LC11517" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-c1">1</span>);</td>
</tr>
<tr>
<td id="L11518" class="blob-num js-line-number" data-line-number="11518"></td>
<td id="LC11518" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11519" class="blob-num js-line-number" data-line-number="11519"></td>
<td id="LC11519" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11520" class="blob-num js-line-number" data-line-number="11520"></td>
<td id="LC11520" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(<span class="pl-c1">this</span>, {</td>
</tr>
<tr>
<td id="L11521" class="blob-num js-line-number" data-line-number="11521"></td>
<td id="LC11521" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">send</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">meta</span>, <span class="pl-smi">data</span>) {</td>
</tr>
<tr>
<td id="L11522" class="blob-num js-line-number" data-line-number="11522"></td>
<td id="LC11522" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">this</span>, <span class="pl-c1">I</span> <span class="pl-k">=</span> <span class="pl-smi">target</span>.<span class="pl-en">getRuntime</span>(), uid, form, input, blob;</td>
</tr>
<tr>
<td id="L11523" class="blob-num js-line-number" data-line-number="11523"></td>
<td id="LC11523" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11524" class="blob-num js-line-number" data-line-number="11524"></td>
<td id="LC11524" class="blob-code blob-code-inner js-file-line"> _status <span class="pl-k">=</span> _response <span class="pl-k">=</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11525" class="blob-num js-line-number" data-line-number="11525"></td>
<td id="LC11525" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11526" class="blob-num js-line-number" data-line-number="11526"></td>
<td id="LC11526" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">function</span> <span class="pl-en">createIframe</span>() {</td>
</tr>
<tr>
<td id="L11527" class="blob-num js-line-number" data-line-number="11527"></td>
<td id="LC11527" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> container <span class="pl-k">=</span> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>() <span class="pl-k">||</span> <span class="pl-c1">document</span>.<span class="pl-c1">body</span></td>
</tr>
<tr>
<td id="L11528" class="blob-num js-line-number" data-line-number="11528"></td>
<td id="LC11528" class="blob-code blob-code-inner js-file-line"> , temp <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>div<span class="pl-pds">'</span></span>)</td>
</tr>
<tr>
<td id="L11529" class="blob-num js-line-number" data-line-number="11529"></td>
<td id="LC11529" class="blob-code blob-code-inner js-file-line"> ;</td>
</tr>
<tr>
<td id="L11530" class="blob-num js-line-number" data-line-number="11530"></td>
<td id="LC11530" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11531" class="blob-num js-line-number" data-line-number="11531"></td>
<td id="LC11531" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> IE 6 won't be able to set the name using setAttribute or iframe.name</span></td>
</tr>
<tr>
<td id="L11532" class="blob-num js-line-number" data-line-number="11532"></td>
<td id="LC11532" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">temp</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><iframe id="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_iframe" name="<span class="pl-pds">'</span></span> <span class="pl-k">+</span> uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe><span class="pl-pds">'</span></span>;</td>
</tr>
<tr>
<td id="L11533" class="blob-num js-line-number" data-line-number="11533"></td>
<td id="LC11533" class="blob-code blob-code-inner js-file-line"> _iframe <span class="pl-k">=</span> <span class="pl-smi">temp</span>.<span class="pl-c1">firstChild</span>;</td>
</tr>
<tr>
<td id="L11534" class="blob-num js-line-number" data-line-number="11534"></td>
<td id="LC11534" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">container</span>.<span class="pl-c1">appendChild</span>(_iframe);</td>
</tr>
<tr>
<td id="L11535" class="blob-num js-line-number" data-line-number="11535"></td>
<td id="LC11535" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11536" class="blob-num js-line-number" data-line-number="11536"></td>
<td id="LC11536" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">/*</span> _iframe.onreadystatechange = function() {</span></td>
</tr>
<tr>
<td id="L11537" class="blob-num js-line-number" data-line-number="11537"></td>
<td id="LC11537" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> console.info(_iframe.readyState);</span></td>
</tr>
<tr>
<td id="L11538" class="blob-num js-line-number" data-line-number="11538"></td>
<td id="LC11538" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> };<span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11539" class="blob-num js-line-number" data-line-number="11539"></td>
<td id="LC11539" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11540" class="blob-num js-line-number" data-line-number="11540"></td>
<td id="LC11540" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Events</span>.<span class="pl-en">addEvent</span>(_iframe, <span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() { <span class="pl-c"><span class="pl-c">//</span> _iframe.onload doesn't work in IE lte 8</span></td>
</tr>
<tr>
<td id="L11541" class="blob-num js-line-number" data-line-number="11541"></td>
<td id="LC11541" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> el;</td>
</tr>
<tr>
<td id="L11542" class="blob-num js-line-number" data-line-number="11542"></td>
<td id="LC11542" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11543" class="blob-num js-line-number" data-line-number="11543"></td>
<td id="LC11543" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L11544" class="blob-num js-line-number" data-line-number="11544"></td>
<td id="LC11544" class="blob-code blob-code-inner js-file-line"> el <span class="pl-k">=</span> <span class="pl-smi">_iframe</span>.<span class="pl-smi">contentWindow</span>.<span class="pl-smi">document</span> <span class="pl-k">||</span> <span class="pl-smi">_iframe</span>.<span class="pl-smi">contentDocument</span> <span class="pl-k">||</span> <span class="pl-c1">window</span>.<span class="pl-c1">frames</span>[<span class="pl-smi">_iframe</span>.<span class="pl-c1">id</span>].<span class="pl-smi">document</span>;</td>
</tr>
<tr>
<td id="L11545" class="blob-num js-line-number" data-line-number="11545"></td>
<td id="LC11545" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11546" class="blob-num js-line-number" data-line-number="11546"></td>
<td id="LC11546" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> try to detect some standard error pages</span></td>
</tr>
<tr>
<td id="L11547" class="blob-num js-line-number" data-line-number="11547"></td>
<td id="LC11547" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>4(0<span class="pl-c1">[<span class="pl-c1">0-9</span>]</span><span class="pl-k">|</span>1<span class="pl-c1">[<span class="pl-c1">0-7</span>]</span><span class="pl-k">|</span>2<span class="pl-c1">[2346]</span>)<span class="pl-c1">\s</span><span class="pl-pds">/</span></span>.<span class="pl-c1">test</span>(<span class="pl-smi">el</span>.<span class="pl-c1">title</span>)) { <span class="pl-c"><span class="pl-c">//</span> test if title starts with 4xx HTTP error</span></td>
</tr>
<tr>
<td id="L11548" class="blob-num js-line-number" data-line-number="11548"></td>
<td id="LC11548" class="blob-code blob-code-inner js-file-line"> _status <span class="pl-k">=</span> <span class="pl-smi">el</span>.<span class="pl-c1">title</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span>(<span class="pl-c1">\d</span><span class="pl-k">+</span>)<span class="pl-c1">.</span><span class="pl-k">*</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span>$1<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11549" class="blob-num js-line-number" data-line-number="11549"></td>
<td id="LC11549" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11550" class="blob-num js-line-number" data-line-number="11550"></td>
<td id="LC11550" class="blob-code blob-code-inner js-file-line"> _status <span class="pl-k">=</span> <span class="pl-c1">200</span>;</td>
</tr>
<tr>
<td id="L11551" class="blob-num js-line-number" data-line-number="11551"></td>
<td id="LC11551" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> get result</span></td>
</tr>
<tr>
<td id="L11552" class="blob-num js-line-number" data-line-number="11552"></td>
<td id="LC11552" class="blob-code blob-code-inner js-file-line"> _response <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">trim</span>(<span class="pl-smi">el</span>.<span class="pl-c1">body</span>.<span class="pl-smi">innerHTML</span>);</td>
</tr>
<tr>
<td id="L11553" class="blob-num js-line-number" data-line-number="11553"></td>
<td id="LC11553" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11554" class="blob-num js-line-number" data-line-number="11554"></td>
<td id="LC11554" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> we need to fire these at least once</span></td>
</tr>
<tr>
<td id="L11555" class="blob-num js-line-number" data-line-number="11555"></td>
<td id="LC11555" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>({</td>
</tr>
<tr>
<td id="L11556" class="blob-num js-line-number" data-line-number="11556"></td>
<td id="LC11556" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>progress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11557" class="blob-num js-line-number" data-line-number="11557"></td>
<td id="LC11557" class="blob-code blob-code-inner js-file-line"> loaded<span class="pl-k">:</span> <span class="pl-smi">_response</span>.<span class="pl-c1">length</span>,</td>
</tr>
<tr>
<td id="L11558" class="blob-num js-line-number" data-line-number="11558"></td>
<td id="LC11558" class="blob-code blob-code-inner js-file-line"> total<span class="pl-k">:</span> <span class="pl-smi">_response</span>.<span class="pl-c1">length</span></td>
</tr>
<tr>
<td id="L11559" class="blob-num js-line-number" data-line-number="11559"></td>
<td id="LC11559" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11560" class="blob-num js-line-number" data-line-number="11560"></td>
<td id="LC11560" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11561" class="blob-num js-line-number" data-line-number="11561"></td>
<td id="LC11561" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (blob) { <span class="pl-c"><span class="pl-c">//</span> if we were uploading a file</span></td>
</tr>
<tr>
<td id="L11562" class="blob-num js-line-number" data-line-number="11562"></td>
<td id="LC11562" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>({</td>
</tr>
<tr>
<td id="L11563" class="blob-num js-line-number" data-line-number="11563"></td>
<td id="LC11563" class="blob-code blob-code-inner js-file-line"> type<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>uploadprogress<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11564" class="blob-num js-line-number" data-line-number="11564"></td>
<td id="LC11564" class="blob-code blob-code-inner js-file-line"> loaded<span class="pl-k">:</span> <span class="pl-smi">blob</span>.<span class="pl-c1">size</span> <span class="pl-k">||</span> <span class="pl-c1">1025</span>,</td>
</tr>
<tr>
<td id="L11565" class="blob-num js-line-number" data-line-number="11565"></td>
<td id="LC11565" class="blob-code blob-code-inner js-file-line"> total<span class="pl-k">:</span> <span class="pl-smi">blob</span>.<span class="pl-c1">size</span> <span class="pl-k">||</span> <span class="pl-c1">1025</span></td>
</tr>
<tr>
<td id="L11566" class="blob-num js-line-number" data-line-number="11566"></td>
<td id="LC11566" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11567" class="blob-num js-line-number" data-line-number="11567"></td>
<td id="LC11567" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11568" class="blob-num js-line-number" data-line-number="11568"></td>
<td id="LC11568" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11569" class="blob-num js-line-number" data-line-number="11569"></td>
<td id="LC11569" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L11570" class="blob-num js-line-number" data-line-number="11570"></td>
<td id="LC11570" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Url</span>.<span class="pl-en">hasSameOrigin</span>(<span class="pl-smi">meta</span>.<span class="pl-smi">url</span>)) {</td>
</tr>
<tr>
<td id="L11571" class="blob-num js-line-number" data-line-number="11571"></td>
<td id="LC11571" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> if response is sent with error code, iframe in IE gets redirected to res://ieframe.dll/http_x.htm</span></td>
</tr>
<tr>
<td id="L11572" class="blob-num js-line-number" data-line-number="11572"></td>
<td id="LC11572" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> which obviously results to cross domain error (wtf?)</span></td>
</tr>
<tr>
<td id="L11573" class="blob-num js-line-number" data-line-number="11573"></td>
<td id="LC11573" class="blob-code blob-code-inner js-file-line"> _status <span class="pl-k">=</span> <span class="pl-c1">404</span>;</td>
</tr>
<tr>
<td id="L11574" class="blob-num js-line-number" data-line-number="11574"></td>
<td id="LC11574" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11575" class="blob-num js-line-number" data-line-number="11575"></td>
<td id="LC11575" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">cleanup</span>.<span class="pl-c1">call</span>(target, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11576" class="blob-num js-line-number" data-line-number="11576"></td>
<td id="LC11576" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>error<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11577" class="blob-num js-line-number" data-line-number="11577"></td>
<td id="LC11577" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11578" class="blob-num js-line-number" data-line-number="11578"></td>
<td id="LC11578" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span>;</td>
</tr>
<tr>
<td id="L11579" class="blob-num js-line-number" data-line-number="11579"></td>
<td id="LC11579" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11580" class="blob-num js-line-number" data-line-number="11580"></td>
<td id="LC11580" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L11581" class="blob-num js-line-number" data-line-number="11581"></td>
<td id="LC11581" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="L11582" class="blob-num js-line-number" data-line-number="11582"></td>
<td id="LC11582" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">cleanup</span>.<span class="pl-c1">call</span>(target, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11583" class="blob-num js-line-number" data-line-number="11583"></td>
<td id="LC11583" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>load<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11584" class="blob-num js-line-number" data-line-number="11584"></td>
<td id="LC11584" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11585" class="blob-num js-line-number" data-line-number="11585"></td>
<td id="LC11585" class="blob-code blob-code-inner js-file-line"> }, <span class="pl-smi">target</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11586" class="blob-num js-line-number" data-line-number="11586"></td>
<td id="LC11586" class="blob-code blob-code-inner js-file-line"> } <span class="pl-c"><span class="pl-c">//</span> end createIframe</span></td>
</tr>
<tr>
<td id="L11587" class="blob-num js-line-number" data-line-number="11587"></td>
<td id="LC11587" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11588" class="blob-num js-line-number" data-line-number="11588"></td>
<td id="LC11588" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> prepare data to be sent and convert if required</span></td>
</tr>
<tr>
<td id="L11589" class="blob-num js-line-number" data-line-number="11589"></td>
<td id="LC11589" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span> <span class="pl-k">&&</span> <span class="pl-smi">data</span>.<span class="pl-en">hasBlob</span>()) {</td>
</tr>
<tr>
<td id="L11590" class="blob-num js-line-number" data-line-number="11590"></td>
<td id="LC11590" class="blob-code blob-code-inner js-file-line"> blob <span class="pl-k">=</span> <span class="pl-smi">data</span>.<span class="pl-en">getBlob</span>();</td>
</tr>
<tr>
<td id="L11591" class="blob-num js-line-number" data-line-number="11591"></td>
<td id="LC11591" class="blob-code blob-code-inner js-file-line"> uid <span class="pl-k">=</span> <span class="pl-smi">blob</span>.<span class="pl-smi">uid</span>;</td>
</tr>
<tr>
<td id="L11592" class="blob-num js-line-number" data-line-number="11592"></td>
<td id="LC11592" class="blob-code blob-code-inner js-file-line"> input <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(uid);</td>
</tr>
<tr>
<td id="L11593" class="blob-num js-line-number" data-line-number="11593"></td>
<td id="LC11593" class="blob-code blob-code-inner js-file-line"> form <span class="pl-k">=</span> <span class="pl-smi">Dom</span>.<span class="pl-c1">get</span>(uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11594" class="blob-num js-line-number" data-line-number="11594"></td>
<td id="LC11594" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-k">!</span>form) {</td>
</tr>
<tr>
<td id="L11595" class="blob-num js-line-number" data-line-number="11595"></td>
<td id="LC11595" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">x.DOMException</span>(<span class="pl-smi">x</span>.<span class="pl-smi">DOMException</span>.<span class="pl-c1">NOT_FOUND_ERR</span>);</td>
</tr>
<tr>
<td id="L11596" class="blob-num js-line-number" data-line-number="11596"></td>
<td id="LC11596" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11597" class="blob-num js-line-number" data-line-number="11597"></td>
<td id="LC11597" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11598" class="blob-num js-line-number" data-line-number="11598"></td>
<td id="LC11598" class="blob-code blob-code-inner js-file-line"> uid <span class="pl-k">=</span> <span class="pl-smi">Basic</span>.<span class="pl-en">guid</span>(<span class="pl-s"><span class="pl-pds">'</span>uid_<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11599" class="blob-num js-line-number" data-line-number="11599"></td>
<td id="LC11599" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11600" class="blob-num js-line-number" data-line-number="11600"></td>
<td id="LC11600" class="blob-code blob-code-inner js-file-line"> form <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11601" class="blob-num js-line-number" data-line-number="11601"></td>
<td id="LC11601" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>id<span class="pl-pds">'</span></span>, uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_form<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11602" class="blob-num js-line-number" data-line-number="11602"></td>
<td id="LC11602" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>method<span class="pl-pds">'</span></span>, <span class="pl-smi">meta</span>.<span class="pl-c1">method</span>);</td>
</tr>
<tr>
<td id="L11603" class="blob-num js-line-number" data-line-number="11603"></td>
<td id="LC11603" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>enctype<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>multipart/form-data<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11604" class="blob-num js-line-number" data-line-number="11604"></td>
<td id="LC11604" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>encoding<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>multipart/form-data<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11605" class="blob-num js-line-number" data-line-number="11605"></td>
<td id="LC11605" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11606" class="blob-num js-line-number" data-line-number="11606"></td>
<td id="LC11606" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">I</span>.<span class="pl-en">getShimContainer</span>().<span class="pl-c1">appendChild</span>(form);</td>
</tr>
<tr>
<td id="L11607" class="blob-num js-line-number" data-line-number="11607"></td>
<td id="LC11607" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11608" class="blob-num js-line-number" data-line-number="11608"></td>
<td id="LC11608" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11609" class="blob-num js-line-number" data-line-number="11609"></td>
<td id="LC11609" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> set upload target</span></td>
</tr>
<tr>
<td id="L11610" class="blob-num js-line-number" data-line-number="11610"></td>
<td id="LC11610" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>target<span class="pl-pds">'</span></span>, uid <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>_iframe<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11611" class="blob-num js-line-number" data-line-number="11611"></td>
<td id="LC11611" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11612" class="blob-num js-line-number" data-line-number="11612"></td>
<td id="LC11612" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (data <span class="pl-k">instanceof</span> <span class="pl-c1">FormData</span>) {</td>
</tr>
<tr>
<td id="L11613" class="blob-num js-line-number" data-line-number="11613"></td>
<td id="LC11613" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">data</span>.<span class="pl-en">each</span>(<span class="pl-k">function</span>(<span class="pl-smi">value</span>, <span class="pl-smi">name</span>) {</td>
</tr>
<tr>
<td id="L11614" class="blob-num js-line-number" data-line-number="11614"></td>
<td id="LC11614" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (value <span class="pl-k">instanceof</span> <span class="pl-c1">Blob</span>) {</td>
</tr>
<tr>
<td id="L11615" class="blob-num js-line-number" data-line-number="11615"></td>
<td id="LC11615" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (input) {</td>
</tr>
<tr>
<td id="L11616" class="blob-num js-line-number" data-line-number="11616"></td>
<td id="LC11616" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">input</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">'</span>name<span class="pl-pds">'</span></span>, name);</td>
</tr>
<tr>
<td id="L11617" class="blob-num js-line-number" data-line-number="11617"></td>
<td id="LC11617" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11618" class="blob-num js-line-number" data-line-number="11618"></td>
<td id="LC11618" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11619" class="blob-num js-line-number" data-line-number="11619"></td>
<td id="LC11619" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> hidden <span class="pl-k">=</span> <span class="pl-c1">document</span>.<span class="pl-c1">createElement</span>(<span class="pl-s"><span class="pl-pds">'</span>input<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11620" class="blob-num js-line-number" data-line-number="11620"></td>
<td id="LC11620" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11621" class="blob-num js-line-number" data-line-number="11621"></td>
<td id="LC11621" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">Basic</span>.<span class="pl-en">extend</span>(hidden, {</td>
</tr>
<tr>
<td id="L11622" class="blob-num js-line-number" data-line-number="11622"></td>
<td id="LC11622" class="blob-code blob-code-inner js-file-line"> type <span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>hidden<span class="pl-pds">'</span></span>,</td>
</tr>
<tr>
<td id="L11623" class="blob-num js-line-number" data-line-number="11623"></td>
<td id="LC11623" class="blob-code blob-code-inner js-file-line"> name <span class="pl-k">:</span> name,</td>
</tr>
<tr>
<td id="L11624" class="blob-num js-line-number" data-line-number="11624"></td>
<td id="LC11624" class="blob-code blob-code-inner js-file-line"> value <span class="pl-k">:</span> value</td>
</tr>
<tr>
<td id="L11625" class="blob-num js-line-number" data-line-number="11625"></td>
<td id="LC11625" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11626" class="blob-num js-line-number" data-line-number="11626"></td>
<td id="LC11626" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11627" class="blob-num js-line-number" data-line-number="11627"></td>
<td id="LC11627" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> make sure that input[type="file"], if it's there, comes last</span></td>
</tr>
<tr>
<td id="L11628" class="blob-num js-line-number" data-line-number="11628"></td>
<td id="LC11628" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (input) {</td>
</tr>
<tr>
<td id="L11629" class="blob-num js-line-number" data-line-number="11629"></td>
<td id="LC11629" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">insertBefore</span>(hidden, input);</td>
</tr>
<tr>
<td id="L11630" class="blob-num js-line-number" data-line-number="11630"></td>
<td id="LC11630" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11631" class="blob-num js-line-number" data-line-number="11631"></td>
<td id="LC11631" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">appendChild</span>(hidden);</td>
</tr>
<tr>
<td id="L11632" class="blob-num js-line-number" data-line-number="11632"></td>
<td id="LC11632" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11633" class="blob-num js-line-number" data-line-number="11633"></td>
<td id="LC11633" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11634" class="blob-num js-line-number" data-line-number="11634"></td>
<td id="LC11634" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11635" class="blob-num js-line-number" data-line-number="11635"></td>
<td id="LC11635" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11636" class="blob-num js-line-number" data-line-number="11636"></td>
<td id="LC11636" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11637" class="blob-num js-line-number" data-line-number="11637"></td>
<td id="LC11637" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> set destination url</span></td>
</tr>
<tr>
<td id="L11638" class="blob-num js-line-number" data-line-number="11638"></td>
<td id="LC11638" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">setAttribute</span>(<span class="pl-s"><span class="pl-pds">"</span>action<span class="pl-pds">"</span></span>, <span class="pl-smi">meta</span>.<span class="pl-smi">url</span>);</td>
</tr>
<tr>
<td id="L11639" class="blob-num js-line-number" data-line-number="11639"></td>
<td id="LC11639" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11640" class="blob-num js-line-number" data-line-number="11640"></td>
<td id="LC11640" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">createIframe</span>();</td>
</tr>
<tr>
<td id="L11641" class="blob-num js-line-number" data-line-number="11641"></td>
<td id="LC11641" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">form</span>.<span class="pl-c1">submit</span>();</td>
</tr>
<tr>
<td id="L11642" class="blob-num js-line-number" data-line-number="11642"></td>
<td id="LC11642" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-en">trigger</span>(<span class="pl-s"><span class="pl-pds">'</span>loadstart<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11643" class="blob-num js-line-number" data-line-number="11643"></td>
<td id="LC11643" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11644" class="blob-num js-line-number" data-line-number="11644"></td>
<td id="LC11644" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11645" class="blob-num js-line-number" data-line-number="11645"></td>
<td id="LC11645" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getStatus</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11646" class="blob-num js-line-number" data-line-number="11646"></td>
<td id="LC11646" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _status;</td>
</tr>
<tr>
<td id="L11647" class="blob-num js-line-number" data-line-number="11647"></td>
<td id="LC11647" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11648" class="blob-num js-line-number" data-line-number="11648"></td>
<td id="LC11648" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11649" class="blob-num js-line-number" data-line-number="11649"></td>
<td id="LC11649" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">getResponse</span><span class="pl-k">:</span> <span class="pl-k">function</span>(<span class="pl-smi">responseType</span>) {</td>
</tr>
<tr>
<td id="L11650" class="blob-num js-line-number" data-line-number="11650"></td>
<td id="LC11650" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>json<span class="pl-pds">'</span></span> <span class="pl-k">===</span> responseType) {</td>
</tr>
<tr>
<td id="L11651" class="blob-num js-line-number" data-line-number="11651"></td>
<td id="LC11651" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> strip off <pre>..</pre> tags that might be enclosing the response</span></td>
</tr>
<tr>
<td id="L11652" class="blob-num js-line-number" data-line-number="11652"></td>
<td id="LC11652" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">Basic</span>.<span class="pl-en">typeOf</span>(_response) <span class="pl-k">===</span> <span class="pl-s"><span class="pl-pds">'</span>string<span class="pl-pds">'</span></span> <span class="pl-k">&&</span> <span class="pl-k">!!</span><span class="pl-c1">window</span>.<span class="pl-c1">JSON</span>) {</td>
</tr>
<tr>
<td id="L11653" class="blob-num js-line-number" data-line-number="11653"></td>
<td id="LC11653" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">try</span> {</td>
</tr>
<tr>
<td id="L11654" class="blob-num js-line-number" data-line-number="11654"></td>
<td id="LC11654" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">JSON</span>.<span class="pl-c1">parse</span>(<span class="pl-smi">_response</span>.<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><span class="pl-k">^</span><span class="pl-c1">\s</span><span class="pl-k">*</span><pre<span class="pl-c1">[<span class="pl-k">^</span>>]</span><span class="pl-k">*</span>><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>).<span class="pl-c1">replace</span>(<span class="pl-sr"><span class="pl-pds">/</span><<span class="pl-cce">\/</span>pre><span class="pl-c1">\s</span><span class="pl-k">*</span><span class="pl-k">$</span><span class="pl-pds">/</span></span>, <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>));</td>
</tr>
<tr>
<td id="L11655" class="blob-num js-line-number" data-line-number="11655"></td>
<td id="LC11655" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">catch</span> (ex) {</td>
</tr>
<tr>
<td id="L11656" class="blob-num js-line-number" data-line-number="11656"></td>
<td id="LC11656" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> <span class="pl-c1">null</span>;</td>
</tr>
<tr>
<td id="L11657" class="blob-num js-line-number" data-line-number="11657"></td>
<td id="LC11657" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11658" class="blob-num js-line-number" data-line-number="11658"></td>
<td id="LC11658" class="blob-code blob-code-inner js-file-line"> } </td>
</tr>
<tr>
<td id="L11659" class="blob-num js-line-number" data-line-number="11659"></td>
<td id="LC11659" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-s"><span class="pl-pds">'</span>document<span class="pl-pds">'</span></span> <span class="pl-k">===</span> responseType) {</td>
</tr>
<tr>
<td id="L11660" class="blob-num js-line-number" data-line-number="11660"></td>
<td id="LC11660" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11661" class="blob-num js-line-number" data-line-number="11661"></td>
<td id="LC11661" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11662" class="blob-num js-line-number" data-line-number="11662"></td>
<td id="LC11662" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> _response;</td>
</tr>
<tr>
<td id="L11663" class="blob-num js-line-number" data-line-number="11663"></td>
<td id="LC11663" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11664" class="blob-num js-line-number" data-line-number="11664"></td>
<td id="LC11664" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11665" class="blob-num js-line-number" data-line-number="11665"></td>
<td id="LC11665" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">abort</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11666" class="blob-num js-line-number" data-line-number="11666"></td>
<td id="LC11666" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">var</span> target <span class="pl-k">=</span> <span class="pl-c1">this</span>;</td>
</tr>
<tr>
<td id="L11667" class="blob-num js-line-number" data-line-number="11667"></td>
<td id="LC11667" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11668" class="blob-num js-line-number" data-line-number="11668"></td>
<td id="LC11668" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (_iframe <span class="pl-k">&&</span> <span class="pl-smi">_iframe</span>.<span class="pl-smi">contentWindow</span>) {</td>
</tr>
<tr>
<td id="L11669" class="blob-num js-line-number" data-line-number="11669"></td>
<td id="LC11669" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">if</span> (<span class="pl-smi">_iframe</span>.<span class="pl-smi">contentWindow</span>.<span class="pl-smi">stop</span>) { <span class="pl-c"><span class="pl-c">//</span> FireFox/Safari/Chrome</span></td>
</tr>
<tr>
<td id="L11670" class="blob-num js-line-number" data-line-number="11670"></td>
<td id="LC11670" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_iframe</span>.<span class="pl-smi">contentWindow</span>.<span class="pl-c1">stop</span>();</td>
</tr>
<tr>
<td id="L11671" class="blob-num js-line-number" data-line-number="11671"></td>
<td id="LC11671" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> <span class="pl-k">if</span> (<span class="pl-smi">_iframe</span>.<span class="pl-smi">contentWindow</span>.<span class="pl-smi">document</span>.<span class="pl-smi">execCommand</span>) { <span class="pl-c"><span class="pl-c">//</span> IE</span></td>
</tr>
<tr>
<td id="L11672" class="blob-num js-line-number" data-line-number="11672"></td>
<td id="LC11672" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_iframe</span>.<span class="pl-smi">contentWindow</span>.<span class="pl-smi">document</span>.<span class="pl-c1">execCommand</span>(<span class="pl-s"><span class="pl-pds">'</span>Stop<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11673" class="blob-num js-line-number" data-line-number="11673"></td>
<td id="LC11673" class="blob-code blob-code-inner js-file-line"> } <span class="pl-k">else</span> {</td>
</tr>
<tr>
<td id="L11674" class="blob-num js-line-number" data-line-number="11674"></td>
<td id="LC11674" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">_iframe</span>.<span class="pl-smi">src</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">"</span>about:blank<span class="pl-pds">"</span></span>;</td>
</tr>
<tr>
<td id="L11675" class="blob-num js-line-number" data-line-number="11675"></td>
<td id="LC11675" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11676" class="blob-num js-line-number" data-line-number="11676"></td>
<td id="LC11676" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11677" class="blob-num js-line-number" data-line-number="11677"></td>
<td id="LC11677" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11678" class="blob-num js-line-number" data-line-number="11678"></td>
<td id="LC11678" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">cleanup</span>.<span class="pl-c1">call</span>(<span class="pl-c1">this</span>, <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11679" class="blob-num js-line-number" data-line-number="11679"></td>
<td id="LC11679" class="blob-code blob-code-inner js-file-line"> <span class="pl-c"><span class="pl-c">//</span> target.dispatchEvent('readystatechange');</span></td>
</tr>
<tr>
<td id="L11680" class="blob-num js-line-number" data-line-number="11680"></td>
<td id="LC11680" class="blob-code blob-code-inner js-file-line"> <span class="pl-smi">target</span>.<span class="pl-c1">dispatchEvent</span>(<span class="pl-s"><span class="pl-pds">'</span>abort<span class="pl-pds">'</span></span>);</td>
</tr>
<tr>
<td id="L11681" class="blob-num js-line-number" data-line-number="11681"></td>
<td id="LC11681" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11682" class="blob-num js-line-number" data-line-number="11682"></td>
<td id="LC11682" class="blob-code blob-code-inner js-file-line"> },</td>
</tr>
<tr>
<td id="L11683" class="blob-num js-line-number" data-line-number="11683"></td>
<td id="LC11683" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11684" class="blob-num js-line-number" data-line-number="11684"></td>
<td id="LC11684" class="blob-code blob-code-inner js-file-line"> <span class="pl-en">destroy</span><span class="pl-k">:</span> <span class="pl-k">function</span>() {</td>
</tr>
<tr>
<td id="L11685" class="blob-num js-line-number" data-line-number="11685"></td>
<td id="LC11685" class="blob-code blob-code-inner js-file-line"> <span class="pl-c1">this</span>.<span class="pl-en">getRuntime</span>().<span class="pl-en">getShim</span>().<span class="pl-en">removeInstance</span>(<span class="pl-c1">this</span>.<span class="pl-smi">uid</span>);</td>
</tr>
<tr>
<td id="L11686" class="blob-num js-line-number" data-line-number="11686"></td>
<td id="LC11686" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11687" class="blob-num js-line-number" data-line-number="11687"></td>
<td id="LC11687" class="blob-code blob-code-inner js-file-line"> });</td>
</tr>
<tr>
<td id="L11688" class="blob-num js-line-number" data-line-number="11688"></td>
<td id="LC11688" class="blob-code blob-code-inner js-file-line"> }</td>
</tr>
<tr>
<td id="L11689" class="blob-num js-line-number" data-line-number="11689"></td>
<td id="LC11689" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11690" class="blob-num js-line-number" data-line-number="11690"></td>
<td id="LC11690" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">XMLHttpRequest</span> <span class="pl-k">=</span> <span class="pl-c1">XMLHttpRequest</span>);</td>
</tr>
<tr>
<td id="L11691" class="blob-num js-line-number" data-line-number="11691"></td>
<td id="LC11691" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L11692" class="blob-num js-line-number" data-line-number="11692"></td>
<td id="LC11692" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11693" class="blob-num js-line-number" data-line-number="11693"></td>
<td id="LC11693" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">//</span> Included from: src/javascript/runtime/html4/image/Image.js</span></td>
</tr>
<tr>
<td id="L11694" class="blob-num js-line-number" data-line-number="11694"></td>
<td id="LC11694" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11695" class="blob-num js-line-number" data-line-number="11695"></td>
<td id="LC11695" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11696" class="blob-num js-line-number" data-line-number="11696"></td>
<td id="LC11696" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Image.js</span></td>
</tr>
<tr>
<td id="L11697" class="blob-num js-line-number" data-line-number="11697"></td>
<td id="LC11697" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11698" class="blob-num js-line-number" data-line-number="11698"></td>
<td id="LC11698" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Copyright 2013, Moxiecode Systems AB</span></td>
</tr>
<tr>
<td id="L11699" class="blob-num js-line-number" data-line-number="11699"></td>
<td id="LC11699" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Released under GPL License.</span></td>
</tr>
<tr>
<td id="L11700" class="blob-num js-line-number" data-line-number="11700"></td>
<td id="LC11700" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> *</span></td>
</tr>
<tr>
<td id="L11701" class="blob-num js-line-number" data-line-number="11701"></td>
<td id="LC11701" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * License: http://www.plupload.com/license</span></td>
</tr>
<tr>
<td id="L11702" class="blob-num js-line-number" data-line-number="11702"></td>
<td id="LC11702" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Contributing: http://www.plupload.com/contributing</span></td>
</tr>
<tr>
<td id="L11703" class="blob-num js-line-number" data-line-number="11703"></td>
<td id="LC11703" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> <span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11704" class="blob-num js-line-number" data-line-number="11704"></td>
<td id="LC11704" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11705" class="blob-num js-line-number" data-line-number="11705"></td>
<td id="LC11705" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">/**</span></span></td>
</tr>
<tr>
<td id="L11706" class="blob-num js-line-number" data-line-number="11706"></td>
<td id="LC11706" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@class</span> moxie/runtime/html4/image/Image</span></td>
</tr>
<tr>
<td id="L11707" class="blob-num js-line-number" data-line-number="11707"></td>
<td id="LC11707" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-k">@private</span></span></td>
</tr>
<tr>
<td id="L11708" class="blob-num js-line-number" data-line-number="11708"></td>
<td id="LC11708" class="blob-code blob-code-inner js-file-line"><span class="pl-c"><span class="pl-c">*/</span></span></td>
</tr>
<tr>
<td id="L11709" class="blob-num js-line-number" data-line-number="11709"></td>
<td id="LC11709" class="blob-code blob-code-inner js-file-line"><span class="pl-en">define</span>(<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/image/Image<span class="pl-pds">"</span></span>, [</td>
</tr>
<tr>
<td id="L11710" class="blob-num js-line-number" data-line-number="11710"></td>
<td id="LC11710" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html4/Runtime<span class="pl-pds">"</span></span>,</td>
</tr>
<tr>
<td id="L11711" class="blob-num js-line-number" data-line-number="11711"></td>
<td id="LC11711" class="blob-code blob-code-inner js-file-line"> <span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/Image<span class="pl-pds">"</span></span></td>
</tr>
<tr>
<td id="L11712" class="blob-num js-line-number" data-line-number="11712"></td>
<td id="LC11712" class="blob-code blob-code-inner js-file-line">], <span class="pl-k">function</span>(<span class="pl-smi">extensions</span>, <span class="pl-smi">Image</span>) {</td>
</tr>
<tr>
<td id="L11713" class="blob-num js-line-number" data-line-number="11713"></td>
<td id="LC11713" class="blob-code blob-code-inner js-file-line"> <span class="pl-k">return</span> (<span class="pl-smi">extensions</span>.<span class="pl-smi">Image</span> <span class="pl-k">=</span> Image);</td>
</tr>
<tr>
<td id="L11714" class="blob-num js-line-number" data-line-number="11714"></td>
<td id="LC11714" class="blob-code blob-code-inner js-file-line">});</td>
</tr>
<tr>
<td id="L11715" class="blob-num js-line-number" data-line-number="11715"></td>
<td id="LC11715" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L11716" class="blob-num js-line-number" data-line-number="11716"></td>
<td id="LC11716" class="blob-code blob-code-inner js-file-line"><span class="pl-en">expose</span>([<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Basic<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Encode<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Env<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/Exceptions<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Dom<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/EventTarget<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/Runtime<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/RuntimeClient<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/file/Blob<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/I18n<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Mime<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileInput<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/file/File<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileDrop<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/file/FileReader<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Url<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/RuntimeTarget<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/FormData<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/xhr/XMLHttpRequest<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/image/Image<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/core/utils/Events<span class="pl-pds">"</span></span>,<span class="pl-s"><span class="pl-pds">"</span>moxie/runtime/html5/image/ResizerCanvas<span class="pl-pds">"</span></span>]);</td>
</tr>
<tr>
<td id="L11717" class="blob-num js-line-number" data-line-number="11717"></td>
<td id="LC11717" class="blob-code blob-code-inner js-file-line">})(<span class="pl-c1">this</span>);</td>
</tr>
<tr>
<td id="L11718" class="blob-num js-line-number" data-line-number="11718"></td>
<td id="LC11718" class="blob-code blob-code-inner js-file-line">}));</td>
</tr>
</table>
<div class="BlobToolbar position-absolute js-file-line-actions dropdown js-menu-container js-select-menu d-none" aria-hidden="true">
<button class="btn-octicon ml-0 px-2 p-0 bg-white border border-gray-dark rounded-1 dropdown-toggle js-menu-target" type="button" aria-expanded="false" aria-haspopup="true" aria-label="Inline file action toolbar" aria-controls="inline-file-actions">
<svg class="octicon octicon-kebab-horizontal" viewBox="0 0 13 16" version="1.1" width="13" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM13 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>
</button>
<div class="dropdown-menu-content js-menu-content" id="inline-file-actions">
<ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2">
<li><clipboard-copy class="dropdown-item" id="js-copy-lines" style="cursor:pointer;" data-original-text="Copy lines">Copy lines</clipboard-copy></li>
<li><clipboard-copy class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;" data-original-text="Copy permalink">Copy permalink</clipboard-copy></li>
<li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" href="/moxiecode/moxie/blame/09eaf578f38480dc4b8e2017c473c496883b6168/bin/js/moxie.js">View git blame</a></li>
<li><a class="dropdown-item" id="js-new-issue" href="/moxiecode/moxie/issues/new">Open new issue</a></li>
</ul>
</div>
</div>
</div>
</div>
<button type="button" data-facebox="#jump-to-line" data-facebox-class="linejump" data-hotkey="l" class="d-none">Jump to Line</button>
<div id="jump-to-line" style="display:none">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form" action="" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
<input class="form-control linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus>
<button type="submit" class="btn">Go</button>
</form> </div>
</div>
<div class="modal-backdrop js-touch-events"></div>
</div>
</div>
</div>
</div>
<div class="footer container-lg px-3" role="contentinfo">
<div class="position-relative d-flex flex-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
<ul class="list-style-none d-flex flex-wrap ">
<li class="mr-3">© 2018 <span title="0.52404s from unicorn-5454c8c5d5-tj8fc">GitHub</span>, Inc.</li>
<li class="mr-3"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
<li class="mr-3"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
<li class="mr-3"><a href="https://help.github.com/articles/github-security/" data-ga-click="Footer, go to security, text:security">Security</a></li>
<li class="mr-3"><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
<li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
</ul>
<a aria-label="Homepage" title="GitHub" class="footer-octicon" href="https://github.com">
<svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
</a>
<ul class="list-style-none d-flex flex-wrap ">
<li class="mr-3"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
<li class="mr-3"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
<li class="mr-3"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
<li class="mr-3"><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li>
<li class="mr-3"><a href="https://blog.github.com" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
</ul>
</div>
<div class="d-flex flex-justify-center pb-6">
<span class="f6 text-gray-light"></span>
</div>
</div>
<div id="ajax-error-message" class="ajax-error-message flash flash-error">
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
</button>
You can’t perform that action at this time.
</div>
<script crossorigin="anonymous" integrity="sha512-AJroIDzeBTsez82UXWwVAmoSz2nKhws/uQvJ8aKfadJZcvL83MIXMjRYm7MVZaKSNXvifa/OGpn54kiDBKpyLw==" type="application/javascript" src="https://assets-cdn.github.com/assets/compat-37e9ce8318a51dd51033283da82c8546.js"></script>
<script crossorigin="anonymous" integrity="sha512-/+pkpBQ4DDFOUT8uX6Dbla+41M4Vom3TMEl4repg2iD+ObxYlMFlg753ZkQTsney36h43DjiRu7WcKrvajXLpA==" type="application/javascript" src="https://assets-cdn.github.com/assets/frameworks-6dccd67c7251fe9a33ed7221404a7921.js"></script>
<script crossorigin="anonymous" async="async" integrity="sha512-XB8KkkjBk6MHTSoAQ65jbLeDNe43Pg4S4sPmAtcQoA9muwav7n7RLhdXCF/sG2CeuGuS00X/77744OE7KWQI+w==" type="application/javascript" src="https://assets-cdn.github.com/assets/github-cfaba2c13c176b701d8051d256600f88.js"></script>
<div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
<svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
<span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
<span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
</div>
<div class="facebox" id="facebox" style="display:none;">
<div class="facebox-popup">
<div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
</div>
<button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
<svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
</button>
</div>
</div>
<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
</div>
</div>
<div id="hovercard-aria-description" class="sr-only">
Press h to open a hovercard with more details.
</div>
</body>
</html>